Bluetooth: Controller: Add Kconfig for minimal time reservation
Add Kconfig to use minimal time reservation for auxiliary and sync PDU reception. A peer device could be scheduling multiple advertising sets in a short duration with small PDUs hence using the minimal time reservation would avoid skipping closely scheduled reception of multiple auxiliary PDUs. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
6de7e461cd
commit
1a1f347ad3
4 changed files with 23 additions and 2 deletions
|
@ -284,6 +284,17 @@ config BT_CTRL_ADV_ADI_IN_SCAN_RSP
|
||||||
help
|
help
|
||||||
Enable ADI field in AUX_SCAN_RSP PDU
|
Enable ADI field in AUX_SCAN_RSP PDU
|
||||||
|
|
||||||
|
config BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN
|
||||||
|
bool "Use minimal Scan Auxiliary and Periodic Sync PDU time reservation"
|
||||||
|
depends on (BT_OBSERVER && BT_CTLR_ADV_EXT) || BT_CTLR_SYNC_PERIODIC
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Use minimal time reservation for Auxiliary and Periodic Sync PDU
|
||||||
|
reception. A peer device could scheduling multiple advertising sets
|
||||||
|
in a short duration with small PDUs hence using the minimal time
|
||||||
|
reservation would avoid skipping closely scheduled reception of
|
||||||
|
multiple Auxiliary or Periodic Sync PDUs.
|
||||||
|
|
||||||
config BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX
|
config BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX
|
||||||
bool "Skip Periodic Sync event on overlap with Extended Scan Event"
|
bool "Skip Periodic Sync event on overlap with Extended Scan Event"
|
||||||
depends on BT_CTLR_SYNC_PERIODIC
|
depends on BT_CTLR_SYNC_PERIODIC
|
||||||
|
|
|
@ -41,6 +41,14 @@
|
||||||
|
|
||||||
/* Advertisement channel maximum payload size */
|
/* Advertisement channel maximum payload size */
|
||||||
#if defined(CONFIG_BT_CTLR_ADV_EXT)
|
#if defined(CONFIG_BT_CTLR_ADV_EXT)
|
||||||
|
|
||||||
|
/* Extended Scan and Periodic Sync Rx PDU time reservation */
|
||||||
|
#if defined(CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN)
|
||||||
|
#define PDU_AC_EXT_PAYLOAD_RX_SIZE 0U
|
||||||
|
#else /* !CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN */
|
||||||
|
#define PDU_AC_EXT_PAYLOAD_RX_SIZE PDU_AC_EXT_PAYLOAD_SIZE_MAX
|
||||||
|
#endif /* !CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN */
|
||||||
|
|
||||||
#define PDU_AC_EXT_HEADER_SIZE_MIN offsetof(struct pdu_adv_com_ext_adv, \
|
#define PDU_AC_EXT_HEADER_SIZE_MIN offsetof(struct pdu_adv_com_ext_adv, \
|
||||||
ext_hdr_adv_data)
|
ext_hdr_adv_data)
|
||||||
#define PDU_AC_EXT_HEADER_SIZE_MAX 63
|
#define PDU_AC_EXT_HEADER_SIZE_MAX 63
|
||||||
|
|
|
@ -654,7 +654,8 @@ void ull_scan_aux_setup(memq_link_t *link, struct node_rx_hdr *rx)
|
||||||
aux->ull.ticks_slot =
|
aux->ull.ticks_slot =
|
||||||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
||||||
ready_delay_us +
|
ready_delay_us +
|
||||||
PDU_AC_MAX_US(0U, lll_aux->phy) +
|
PDU_AC_MAX_US(PDU_AC_EXT_PAYLOAD_RX_SIZE,
|
||||||
|
lll_aux->phy) +
|
||||||
EVENT_OVERHEAD_END_US);
|
EVENT_OVERHEAD_END_US);
|
||||||
|
|
||||||
ticks_slot_offset = MAX(aux->ull.ticks_active_to_start,
|
ticks_slot_offset = MAX(aux->ull.ticks_active_to_start,
|
||||||
|
|
|
@ -761,7 +761,8 @@ void ull_sync_setup(struct ll_scan_set *scan, struct ll_scan_aux_set *aux,
|
||||||
sync->ull.ticks_slot =
|
sync->ull.ticks_slot =
|
||||||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
||||||
ready_delay_us +
|
ready_delay_us +
|
||||||
PDU_AC_MAX_US(0U, lll->phy) +
|
PDU_AC_MAX_US(PDU_AC_EXT_PAYLOAD_RX_SIZE,
|
||||||
|
lll->phy) +
|
||||||
EVENT_OVERHEAD_END_US);
|
EVENT_OVERHEAD_END_US);
|
||||||
|
|
||||||
ticks_slot_offset = MAX(sync->ull.ticks_active_to_start,
|
ticks_slot_offset = MAX(sync->ull.ticks_active_to_start,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue