Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: bsim: Bluetooth: Enable some high reliability CAP tests #80788

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

cvinayak
Copy link
Contributor

@cvinayak cvinayak commented Nov 3, 2024

Enable some high reliability CAP tests by increasing ISO Tx buffer counts in the Controller to sufficiently generate number of complete when multiple SDUs are transmitted in single ISO interval with use of pre-transmissions.

@cvinayak
Copy link
Contributor Author

cvinayak commented Nov 4, 2024

Failure log snippet in CI run that is different from local run:

d_01: @00:00:00.382414  Found broadcaster with ID 0x46653D and addr 19:CA:18:BB:FD:6D (random) and sid 0x00
d_01: @00:00:00.383271  Broadcast source found, stopping scan
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  Scan stopped, attempting to PA sync to the broadcaster with id 0x46653D
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  Broadcast source found, waiting for PA sync
d_00: @00:00:00.931075  Stream 0x84aa9a0 sent 100 SDUs
d_01: @00:00:01.584294  [00:00:01.584,289] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:01.584294  [00:00:01.584,289] <dbg> bt_bap_scan_delegator: pa_synced: Synced
d_01: @00:00:01.584294  [00:00:01.584,289] <dbg> bt_bap_scan_delegator: pa_synced: BASS receive state not found
d_01: @00:00:01.584294  PA sync 0x84dbfa0 synced for broadcast sink with broadcast ID 0x46653D

Local run PA Sync quicker:

d_01: @00:00:00.382414  Found broadcaster with ID 0x46653D and addr 19:CA:18:BB:FD:6D (random) and sid 0x00
d_01: @00:00:00.383271  Broadcast source found, stopping scan
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  Scan stopped, attempting to PA sync to the broadcaster with id 0x46653D
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  [00:00:00.383,270] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:00.383271  Broadcast source found, waiting for PA sync
d_00: @00:00:00.931075  Stream 0x84dd760 sent 100 SDUs
d_01: @00:00:01.434263  [00:00:01.434,234] <wrn> net_buf: net_buf_alloc_len: Timeout discarded. No blocking in syswq
d_01: @00:00:01.434263  [00:00:01.434,234] <dbg> bt_bap_scan_delegator: pa_synced: Synced
d_01: @00:00:01.434263  [00:00:01.434,234] <dbg> bt_bap_scan_delegator: pa_synced: BASS receive state not found
d_01: @00:00:01.434263  PA sync 0x850ed40 synced for broadcast sink with broadcast ID 0x46653D

@cvinayak cvinayak force-pushed the github_tests_bsim_audio_ctlr_conf_2 branch 2 times, most recently from 81c48ba to a706cf5 Compare November 4, 2024 11:04
@cvinayak cvinayak force-pushed the github_tests_bsim_audio_ctlr_conf_2 branch 3 times, most recently from c133cd2 to 4950663 Compare November 5, 2024 14:19
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since these test scripts are already taking a long time to finish given the many test cases in each of them, we should consider either running them in parallel in this script somehow, or split the files.

We could either split them like
AC_14_8 -> Run all 8_x_x tests
AC_14_16 -> Run all 16_x_x tests
AC_14_24 -> Run all 24_x_x tests
etc.

or split them by high and light reliability.

@cvinayak cvinayak force-pushed the github_tests_bsim_audio_ctlr_conf_2 branch from 4950663 to 211084d Compare November 11, 2024 09:25
@zephyrbot zephyrbot added area: Samples Samples area: Bluetooth HCI Bluetooth HCI Driver labels Nov 11, 2024
@cvinayak cvinayak force-pushed the github_tests_bsim_audio_ctlr_conf_2 branch from 211084d to 5522ef0 Compare November 14, 2024 07:26
@cvinayak cvinayak marked this pull request as draft November 14, 2024 15:06
cvinayak and others added 11 commits November 15, 2024 13:48
Fix to reschedule before overlap and be collision resolved
in the next periodic interval for tickers using slot window
yield.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Introduce ticker reschedule with drift so that role like
AUX_ADV_IND can start after overlapping states and roles
using time reservations.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Add implementation for Extended Advertising Auxiliary PDUs
to use ticks slot window feature.

This will allow the periodic scheduling of AUX_ADV_IND PDUs
to drift upto 10 ms advertising delay minus the ticks_slot
time reservation of the AUX_ADV_IND PDU when overlapping
with other states/roles that cannot be moved around, to
avoid skipping them.

Having an active Extended Advertising simultaneously with
an ISO Synchronized Receiver or Connected ISO connection
will now have less ISO SDU loss when using 10 ms ISO
intervals.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Fix ISO Sync Receiver implementation to correctly reflect
the payload number and timestamp.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Fix ISO Sync Receiver time reservation calculation to use
peer broadcasted bis_spacing and sub_interval, instead of
incorrectly calculating using local implementation used
tMSS value.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Fix ISO Sync Receiver implementation to correctly prevent
subevent from pre-empted in the unreserve time space.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Several tests were using K_FOREVER when allocating the
buffer for TX in the system workqueue, which is illegal behavior.

The solution chosen was to create a TX thread to handle TX,
similar to the solution used in the audio shell and some
sample applications.

This way we can continue to use K_FOREVER when allocting buffers
and it will always be done in a round-robin fashion while
TXing as much as possible, by always enqueuing all the buffers
with mock data.

Since this works for all streams (both broadcast and unicast),
it was obvious to use the same implementation for all tests,
and thus cleaning up the tests a bit and more them more similar.

Signed-off-by: Emil Gydesen <[email protected]>
Remove a duplicated advertising set in the CAP acceptor babblesim
test. The advertising set is configured in test_start_adv.

Signed-off-by: Emil Gydesen <[email protected]>
The BSIM test for the CAP acceptor used legacy instead
of extended advertising.

This also adds the required advertising data and validation
on the CAP initiator and CAP commander.

Signed-off-by: Emil Gydesen <[email protected]>
Align audio test Controller Kconfig value same as used with
nRF53bsim.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
Enable some high reliability CAP tests by increasing ISO Tx
buffer counts in the Controller to sufficiently generate
number of complete when multiple SDUs are transmitted in
single ISO interval with use of pre-transmissions.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
@cvinayak cvinayak force-pushed the github_tests_bsim_audio_ctlr_conf_2 branch from 5522ef0 to 58ddb33 Compare November 15, 2024 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Bluetooth Audio area: Bluetooth Controller area: Bluetooth HCI Bluetooth HCI Driver area: Bluetooth area: Samples Samples area: Tests Issues related to a particular existing or missing test platform: nRF BSIM Nordic Semiconductors, nRF BabbleSim
Projects
Status: In Review
Development

Successfully merging this pull request may close these issues.

4 participants