zephyr/subsys/bluetooth/controller
Piotr Pryga 3715241bde Bluetooth: Controller: fix per sync hang if wrong cte and list filter
In case of use of filtering based on: periodic advertising list and
CTE type, the synchronization can hang. That is possible if a periodic
advertiser uses wrong CTE type. In such situation the sync is not
released in ull_sync_done call. What more the sync->timeout_reload
is not cleared and Host is not able to cancel the synchronization.
The periodic advertising is in a semi-sync-established state.
There are no reports send to Host. Host can't use the sync set to
synchronize with other device. It is only able to terminate the
sync (call to ll_sync_terminate).

To fix the issue following changes should be applied:
- isr_rx_adv_sync_estab should call isr_rx_done_cleanup
with sync_term parameter in case the sync_ok isn't SYNC_STAT_ALLOWED.
In any case the CTE type is wrong, no matter is the periodic
advertising list filtering is enabled or not.
- ull_sync_established_report should set sync->is_term to true
in case the CTE type is not allowed. That change is required for devices
that do not support Direction Finding Extension. For those devices CTE
type based filtering is done in ULL by ull_sync_established_report
function. The sync->is_term should be set unconditionally, hence is
moved up in the function.

With these two changes done, ull_sync_done function will execute
sync_ticker_release in case the CTE has wrong type. ULL, depending on
notifications prepared by ull_sync_established_report, will follow up
on sync termination if required.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-05-16 10:08:06 +02:00
..
crypto Bluetooth: controller: Use NRF RNG entropy device 2020-06-16 19:09:55 +02:00
hal Bluetooth: Controller: df: make radio_df_vendor_hal.h compile in always 2022-03-21 10:15:39 +01:00
hci subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
include Bluetooth: controller: ISO TX data path including ISOAL 2022-05-06 11:32:30 +02:00
ll_sw Bluetooth: Controller: fix per sync hang if wrong cte and list filter 2022-05-16 10:08:06 +02:00
ticker Bluetooth: Controller: Yield stopped ticker time reservations 2022-03-23 12:53:38 +01:00
util subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
CMakeLists.txt Bluetooth: Controller: Schedule BIG event after Periodic Adv event 2022-03-01 11:51:46 +01:00
Kconfig Bluetooth: Controller: Add Kconfig to limit advertising interval max 2022-05-06 11:31:44 +02:00
Kconfig.df Bluetooth: Controller: DF configs should not depend on BT_LL_SW_SPLIT 2022-05-05 14:39:04 -05:00
Kconfig.dtm bluetooth: controller: Add support for all DTM commands 2022-03-18 12:00:03 +01:00
Kconfig.ll_sw_split Bluetooth: Controller: Force MD feature not supported in LOW LAT ULL 2022-04-04 10:24:19 +02:00