Bluetooth: Controller: Fix repeated skip in ticker resolve collision

Enforce next_is_older only when current has equal force as
with the next ticker.

Added Kconfig to disable priority feature in ticker that is
currently not used by Zephyr Bluetooth Low Energy
Controller.

The priority feature if enabled then a custom ULL is needed
by vendors to avoid repeated skipping of overlapping events
as next_has_priority check uses lazy value that would be
always lazy_next > lazy_current as currently skipped event
becomes the next event with lazy value incremented by 1.

Regression in commit 3a9173afe1 ("bluetooth: controller:
Revised ticker for improved conflict resolution") due to
Zephyr Controller does not implement any vendor specific
priority logic.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2022-09-14 17:01:01 +05:30 committed by Carles Cufí
commit 87b39c5975
2 changed files with 60 additions and 10 deletions

View file

@ -808,6 +808,21 @@ config BT_TICKER_EXT_SLOT_WINDOW_YIELD
This options forces tickers with slot window extensions to yield to
normal tickers and be placed at the end of their slot window.
config BT_TICKER_PRIORITY_SET
bool "Tickers with priority based collision resolution"
depends on BT_TICKER_EXT
help
This option provide tickers with persistent priority value that will
be used in resolving collisions.
The priority feature if enabled then a custom ULL is needed by vendors
to avoid repeated skipping of overlapping events as next_has_priority
check uses lazy value that would be always lazy_next > lazy_current as
currently skipped event becomes the next event with lazy value
incremented by 1. This repeated skip happens when all the time
between the event intervals are occupied continuously by overlapping
tickers.
config BT_TICKER_SLOT_AGNOSTIC
bool "Slot agnostic ticker mode"
help