[bluez/bluez] 4ca745: bap: do not try QoS before links are updated & io ...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  Branch: refs/heads/969627
  Home:   https://github.com/bluez/bluez
  Commit: 4ca7454a5df1d01c7b097fc77c56c1f95f316677
      https://github.com/bluez/bluez/commit/4ca7454a5df1d01c7b097fc77c56c1f95f316677
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: do not try QoS before links are updated & io created

In setup config, QoS must be done after corresponding bap_state
callback, because stream links are updated only at that point.  If the
ASE was in CONFIG state before reconfiguration, this gets done in wrong
order.

Track explicitly that bap_state() is done after bt_bap_stream_config(),
before proceeding to QoS.


  Commit: 679156e0b2a08ba2d05e8026998adfa330ad77bf
      https://github.com/bluez/bluez/commit/679156e0b2a08ba2d05e8026998adfa330ad77bf
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M src/shared/bap.c

  Log Message:
  -----------
  shared/bap: detach ucast io on RELEASING and unlink streams

When RELEASING, ucast stream QoS becomes invalid and client stream
transport can no longer be acquired.  Client shall close the CIS when
ASE is RELEASING (BAP v1.0.2 §5.6.6).

As client, detach IO when RELEASING. Clear the stream links, as the QoS
is no longer valid. Even if caching config the ASE may be reused for
different purpose, and stream will anyway be reconfigured & re-linked as
needed.

Also clear the stream transport, as it's not in acquirable state, and
its configuration may change after this. This makes BAP Client to have
existing transports only for streams that are >= QOS.  (BAP Server is
not changed here.)


  Commit: e8d4cf42a411b6bd84d3f5fd096f57155de7f42f
      https://github.com/bluez/bluez/commit/e8d4cf42a411b6bd84d3f5fd096f57155de7f42f
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M src/shared/bap.c
    M src/shared/bap.h

  Log Message:
  -----------
  shared/bap: add client ASE reuse and upper level stream locking

Change ucast client stream design so that:

* upper level locks streams to indicate which ones it is using
* unused streams are reused when upper level wants a new stream
* only locked streams are used for bidi CIS linking
* streams (still) correspond 1-to-1 to non-idle ASEs

This fixes some issues:

* bap_ucast_stream_new() could pick a stream upper level is already
  using if lpac & rpac match (can occur with multi-stream AC 6(ii) etc)
* Avoids assuming ASE enters idle state at end of stream life cycle.
  This is False for some devices like Sony headsets, which always cache
  codec config so RELEASING -> CONFIG always, never RELEASING -> IDLE,
  so ASE never go IDLE again.
* Allows reconfiguring an ASE with different codec in this case.
* Allows upper level to only QoS some of the streams.

Reconfiguring ASE in QOS/CONFIG state with different codec here results
to need_reconfig=true state, where ASE and stream configs do not match,
and upper level needs to do bt_bap_stream_config() to sync them.


  Commit: 40ff600532d153a2f01b7dab2ca30379b5f5fcae
      https://github.com/bluez/bluez/commit/40ff600532d153a2f01b7dab2ca30379b5f5fcae
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: lock streams when used

Indicate to lower layer when we are using the streams.

When setup is freed, make sure the corresponding stream is released
after unlocking.


  Commit: 371659f5ef9edfb509bc177e5391edd02c63c4c1
      https://github.com/bluez/bluez/commit/371659f5ef9edfb509bc177e5391edd02c63c4c1
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: add ready callback for setup configuration

Operations like SetConfiguration need to wait until setup configuration
finishes. Abstract this to a setup_config() callback emitted on QoS
completion or failure, instead of hardcoding DBus reply.


  Commit: 3e3ee481f96f765c0f9828366579e3f4440bfc7b
      https://github.com/bluez/bluez/commit/3e3ee481f96f765c0f9828366579e3f4440bfc7b
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c
    M profiles/audio/transport.c
    M profiles/audio/transport.h

  Log Message:
  -----------
  bap: support removing streams with ClearConfiguration()

Implement removing streams via ClearConfiguration().


  Commit: f566fa2261d4938c4adb7bd383355c680e7964e0
      https://github.com/bluez/bluez/commit/f566fa2261d4938c4adb7bd383355c680e7964e0
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: add callback at the end of ucast client select/config

Restructure pac_select() and add a callback that is called when all
setups reach QoS.


  Commit: 9d67a1638c40db3a8775ed075e7d2653bd19f9c0
      https://github.com/bluez/bluez/commit/9d67a1638c40db3a8775ed075e7d2653bd19f9c0
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: implement Reconfigure()

Add Reconfigure() on a BAP unicast endpoint, which triggers its
reconfiguration or marks it for reconfiguration.

First, all associated streams are closed. After that, endpoints marked
for reconfiguration are reconfigured using the same flow as in the
initial configuration.


  Commit: e06f50230431cb256a845059fcd297dea95153ce
      https://github.com/bluez/bluez/commit/e06f50230431cb256a845059fcd297dea95153ce
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/transport.c

  Log Message:
  -----------
  bap: don't show error when releasing stream

When stream is released, just set transport to not playing and don't
show error about missing io.


  Commit: 88da2514b7d1628c66b025f5cbe783a65e9bfa3d
      https://github.com/bluez/bluez/commit/88da2514b7d1628c66b025f5cbe783a65e9bfa3d
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2025-06-08 (Sun, 08 Jun 2025)

  Changed paths:
    M profiles/audio/bap.c

  Log Message:
  -----------
  bap: delay QoS & IO creation if CIG is busy or setups configuring

Unicast Client IO creation / activation should be done synchronously for
whole adapter, as active CIG has to be removed before it can be
reconfigured (Core v6.0 Sec 4.5.14.3).  Some adapters support only one
active CIG.

Move related logic to bap_update_cig*() which does QoS and IO creation
as needed by current state.

If CIG is active or setups are being configured or closed, delay
transitions to QoS and IO recreation until that completes.  Also delay
activating CIG (= enabling CIS) until setups have finished readying or
closing.

Operations are delayed within the same CIG, with the exception that
streams with unassigned CIG delay every CIG. This is because such
streams are likely meant to go to some existing CIG, so we must wait
them to be configurable before asking kernel to assign IDs.

Fixes race conditions:

* setup starts readying while CIG is active
* CIG is activated while a setup is readying
* new stream creates IO before old stream IO is recreated

These result to kernel assigning new streams to a different CIG
(problematic on controllers that can do only one) or CIS ID conflicts.


Compare: https://github.com/bluez/bluez/compare/4ca7454a5df1%5E...88da2514b7d1

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux