zephyr
zephyr copied to clipboard
Bluetooth: df: Assert in lower link layer when requesting CTE from peer periodically with 7.5ms connection interval
Describe the bug
There is an LL_ASSERT
that fires: https://github.com/zephyrproject-rtos/zephyr/blob/a150c7ee77687d543b903ea9008754da7415f4b5/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_df.c#L246-L247
Conditions:
- Connected peer device that supports CTE RSP.
- Connection interval is 7.5ms
- Local device requests periodically CTE. Request interval is 1 connection event, hence CTE_REQ control procedure starts every connection event.
- The LL_ASSERT fires because there is not enough
node_rx_iq_report
in a pool to handle so frequent IQ report generation.
To Reproduce Steps to reproduce the behavior:
- Use sample
direction_finding_central
and change it to use conn interval 7.5ms and CTE_REQ every connection event. - Use sample
direction_finding_peripheral
as a peer device. - Observe central output how it fails with assert.
Expected behavior No LL_ASSERT fires.
Impact Low. Happens only when DF is enabled in very specific configuration. Small increase to connection interval should help handle the issue.
Additional context
The proper way to handle the issue is to send an IQ report with Pocket_Status=0xFF
and Sample_Count=0x0