Bluetooth: controller: Optimize LOW_LAT_ULL scheduling
Optimize LOW_LAT_ULL scheduling by avoiding redundant rx_demux mayfly enqueue. Only schedule after checking for node rx or tx ack presence in the memq. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
db3f7e7a7b
commit
08d3e49ee0
1 changed files with 18 additions and 0 deletions
|
@ -1893,6 +1893,24 @@ static void rx_demux_yield(void)
|
|||
{
|
||||
static memq_link_t link;
|
||||
static struct mayfly mfy = {0, 0, &link, NULL, rx_demux};
|
||||
struct node_rx_hdr *rx;
|
||||
memq_link_t *link_peek;
|
||||
|
||||
link_peek = memq_peek(memq_ull_rx.head, memq_ull_rx.tail, (void **)&rx);
|
||||
if (!link_peek) {
|
||||
#if defined(CONFIG_BT_CONN)
|
||||
struct node_tx *node_tx;
|
||||
uint8_t ack_last;
|
||||
uint16_t handle;
|
||||
|
||||
link_peek = ull_conn_ack_peek(&ack_last, &handle, &node_tx);
|
||||
if (!link_peek) {
|
||||
return;
|
||||
}
|
||||
#else /* !CONFIG_BT_CONN */
|
||||
return;
|
||||
#endif /* !CONFIG_BT_CONN */
|
||||
}
|
||||
|
||||
/* Kick the ULL (using the mayfly, tailchain it) */
|
||||
mayfly_enqueue(TICKER_USER_ID_ULL_HIGH, TICKER_USER_ID_ULL_HIGH, 1,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue