zephyr icon indicating copy to clipboard operation
zephyr copied to clipboard

Bluetooth: df: Assert in lower link layer when requesting CTE from peer periodically with 7.5ms connection interval

Open ppryga-nordic opened this issue 2 years ago • 0 comments

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:

  1. Connected peer device that supports CTE RSP.
  2. Connection interval is 7.5ms
  3. Local device requests periodically CTE. Request interval is 1 connection event, hence CTE_REQ control procedure starts every connection event.
  4. 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:

  1. Use sample direction_finding_central and change it to use conn interval 7.5ms and CTE_REQ every connection event.
  2. Use sample direction_finding_peripheral as a peer device.
  3. 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

ppryga-nordic avatar Aug 09 '22 20:08 ppryga-nordic