* [PATCH BlueZ] bap: handle state transitions with old_state == new_state
@ 2023-11-10 19:57 Pauli Virtanen
2023-11-10 20:44 ` Luiz Augusto von Dentz
2023-11-10 21:36 ` [BlueZ] " bluez.test.bot
0 siblings, 2 replies; 3+ messages in thread
From: Pauli Virtanen @ 2023-11-10 19:57 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Pauli Virtanen
ASCS allows transitions from Codec/QoS Configured back to the same
state.
E.g. NRF5340_AUDIO devkit starts in the config(1) state, which is
allowed (only Config QoS, Release, Enable, Receiver Stop Ready
transition are client-only). In this case, as client, we do Config Codec
ourselves and end up with config(1)->config(1) transition. We currently
ignore that event, so QoS won't be setup and transports won't be
created.
Handle the config(1)->config(1) transition by continuing to Config QoS
if it occurs.
Log:
src/gatt-client.c:btd_gatt_client_connected() Device connected.
src/shared/gatt-client.c:exchange_mtu_cb() MTU exchange complete, with MTU: 65
src/shared/bap.c:bap_ep_set_status() ASE status: ep 0x604000039a90 id 0x01 handle 0x000f state config len 42
src/shared/bap.c:ep_status_config() codec 0x06 framing 0x00 phy 0x02 rtn 2 latency 10 pd 4000 - 40000 ppd 4000 - 40000
src/shared/bap.c:ep_status_config() Codec Config #0: type 0x01 len 2
src/shared/bap.c:ep_status_config() Codec Config #1: type 0x02 len 2
src/shared/bap.c:ep_status_config() Codec Config #2: type 0x03 len 5
src/shared/bap.c:ep_status_config() Codec Config #3: type 0x04 len 3
src/shared/bap.c:ep_status_config() Codec Config #4: type 0x05 len 2
src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: idle -> config
src/shared/bap.c:bap_stream_update_io_links() stream 0x60c0000334c0
profiles/audio/bap.c:bap_state() stream 0x60c0000334c0: idle(0) -> config(1)
profiles/audio/bap.c:bap_ready() bap 0x60e000001d20
profiles/audio/bap.c:pac_found() lpac 0x608000017520 rpac 0x6080000183a0
profiles/audio/bap.c:ep_register() ep 0x60d000006910 lpac 0x608000017520 rpac 0x6080000183a0 path /org/bluez/hci0/dev_C9_C9_76_21_08_4F/pac_sink0
profiles/audio/media.c:media_endpoint_async_call() Calling SelectProperties: name = :1.604 path = /MediaEndpointLE/BAPSource/lc3
...
src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: config -> config
src/shared/bap.c:bap_stream_update_io_links() stream 0x60c0000334c0
profiles/audio/bap.c:bap_state() stream 0x60c0000334c0: config(1) -> config(1)
---
profiles/audio/bap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/profiles/audio/bap.c b/profiles/audio/bap.c
index b74498c4c..30a585ede 100644
--- a/profiles/audio/bap.c
+++ b/profiles/audio/bap.c
@@ -1887,7 +1887,7 @@ static void bap_state(struct bt_bap_stream *stream, uint8_t old_state,
bt_bap_stream_statestr(old_state), old_state,
bt_bap_stream_statestr(new_state), new_state);
- if (new_state == old_state)
+ if (old_state == new_state && new_state != BT_BAP_STREAM_STATE_CONFIG)
return;
ep = bap_find_ep_by_stream(data, stream);
--
2.41.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH BlueZ] bap: handle state transitions with old_state == new_state
2023-11-10 19:57 [PATCH BlueZ] bap: handle state transitions with old_state == new_state Pauli Virtanen
@ 2023-11-10 20:44 ` Luiz Augusto von Dentz
2023-11-10 21:36 ` [BlueZ] " bluez.test.bot
1 sibling, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2023-11-10 20:44 UTC (permalink / raw)
To: Pauli Virtanen; +Cc: linux-bluetooth
Hi Pauli,
On Fri, Nov 10, 2023 at 2:58 PM Pauli Virtanen <pav@iki.fi> wrote:
>
> ASCS allows transitions from Codec/QoS Configured back to the same
> state.
>
> E.g. NRF5340_AUDIO devkit starts in the config(1) state, which is
> allowed (only Config QoS, Release, Enable, Receiver Stop Ready
> transition are client-only). In this case, as client, we do Config Codec
> ourselves and end up with config(1)->config(1) transition. We currently
> ignore that event, so QoS won't be setup and transports won't be
> created.
Nice catch, that said I do wonder if we shouldn't be checking if the
configuration is the same and not attempt to reconfigure if it
matches.
> Handle the config(1)->config(1) transition by continuing to Config QoS
> if it occurs.
>
> Log:
>
> src/gatt-client.c:btd_gatt_client_connected() Device connected.
> src/shared/gatt-client.c:exchange_mtu_cb() MTU exchange complete, with MTU: 65
> src/shared/bap.c:bap_ep_set_status() ASE status: ep 0x604000039a90 id 0x01 handle 0x000f state config len 42
> src/shared/bap.c:ep_status_config() codec 0x06 framing 0x00 phy 0x02 rtn 2 latency 10 pd 4000 - 40000 ppd 4000 - 40000
> src/shared/bap.c:ep_status_config() Codec Config #0: type 0x01 len 2
> src/shared/bap.c:ep_status_config() Codec Config #1: type 0x02 len 2
> src/shared/bap.c:ep_status_config() Codec Config #2: type 0x03 len 5
> src/shared/bap.c:ep_status_config() Codec Config #3: type 0x04 len 3
> src/shared/bap.c:ep_status_config() Codec Config #4: type 0x05 len 2
> src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: idle -> config
> src/shared/bap.c:bap_stream_update_io_links() stream 0x60c0000334c0
> profiles/audio/bap.c:bap_state() stream 0x60c0000334c0: idle(0) -> config(1)
> profiles/audio/bap.c:bap_ready() bap 0x60e000001d20
> profiles/audio/bap.c:pac_found() lpac 0x608000017520 rpac 0x6080000183a0
> profiles/audio/bap.c:ep_register() ep 0x60d000006910 lpac 0x608000017520 rpac 0x6080000183a0 path /org/bluez/hci0/dev_C9_C9_76_21_08_4F/pac_sink0
> profiles/audio/media.c:media_endpoint_async_call() Calling SelectProperties: name = :1.604 path = /MediaEndpointLE/BAPSource/lc3
> ...
> src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: config -> config
> src/shared/bap.c:bap_stream_update_io_links() stream 0x60c0000334c0
> profiles/audio/bap.c:bap_state() stream 0x60c0000334c0: config(1) -> config(1)
> ---
> profiles/audio/bap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/profiles/audio/bap.c b/profiles/audio/bap.c
> index b74498c4c..30a585ede 100644
> --- a/profiles/audio/bap.c
> +++ b/profiles/audio/bap.c
> @@ -1887,7 +1887,7 @@ static void bap_state(struct bt_bap_stream *stream, uint8_t old_state,
> bt_bap_stream_statestr(old_state), old_state,
> bt_bap_stream_statestr(new_state), new_state);
>
> - if (new_state == old_state)
Add a comment regarding reconfiguring allowing the state machine to
transition to the same state.
> + if (old_state == new_state && new_state != BT_BAP_STREAM_STATE_CONFIG)
> return;
>
> ep = bap_find_ep_by_stream(data, stream);
> --
> 2.41.0
>
>
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [BlueZ] bap: handle state transitions with old_state == new_state
2023-11-10 19:57 [PATCH BlueZ] bap: handle state transitions with old_state == new_state Pauli Virtanen
2023-11-10 20:44 ` Luiz Augusto von Dentz
@ 2023-11-10 21:36 ` bluez.test.bot
1 sibling, 0 replies; 3+ messages in thread
From: bluez.test.bot @ 2023-11-10 21:36 UTC (permalink / raw)
To: linux-bluetooth, pav
[-- Attachment #1: Type: text/plain, Size: 2405 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=800308
---Test result---
Test Summary:
CheckPatch PASS 0.38 seconds
GitLint FAIL 0.52 seconds
BuildEll PASS 35.07 seconds
BluezMake PASS 1196.96 seconds
MakeCheck PASS 13.47 seconds
MakeDistcheck PASS 218.17 seconds
CheckValgrind PASS 333.14 seconds
CheckSmatch PASS 453.58 seconds
bluezmakeextell PASS 145.57 seconds
IncrementalBuild PASS 1064.96 seconds
ScanBuild PASS 1400.66 seconds
Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[BlueZ] bap: handle state transitions with old_state == new_state
WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search
20: B1 Line exceeds max length (108>80): "src/shared/bap.c:bap_ep_set_status() ASE status: ep 0x604000039a90 id 0x01 handle 0x000f state config len 42"
21: B1 Line exceeds max length (118>80): "src/shared/bap.c:ep_status_config() codec 0x06 framing 0x00 phy 0x02 rtn 2 latency 10 pd 4000 - 40000 ppd 4000 - 40000"
27: B1 Line exceeds max length (90>80): "src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: idle -> config"
32: B1 Line exceeds max length (145>80): "profiles/audio/bap.c:ep_register() ep 0x60d000006910 lpac 0x608000017520 rpac 0x6080000183a0 path /org/bluez/hci0/dev_C9_C9_76_21_08_4F/pac_sink0"
33: B1 Line exceeds max length (128>80): "profiles/audio/media.c:media_endpoint_async_call() Calling SelectProperties: name = :1.604 path = /MediaEndpointLE/BAPSource/lc3"
35: B1 Line exceeds max length (92>80): "src/shared/bap.c:bap_stream_state_changed() stream 0x60c0000334c0 dir 0x01: config -> config"
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-10 21:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-10 19:57 [PATCH BlueZ] bap: handle state transitions with old_state == new_state Pauli Virtanen
2023-11-10 20:44 ` Luiz Augusto von Dentz
2023-11-10 21:36 ` [BlueZ] " bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox