Bluetooth: controller: refactor ull_rx_put/sched

Instead of calling both ull_rx_put and ull_rx_sched, combine into one
function

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
This commit is contained in:
Erik Brockhoff 2022-11-15 09:55:33 +01:00 committed by Carles Cufí
commit 1f97652998
16 changed files with 41 additions and 61 deletions

View file

@ -586,6 +586,7 @@ void ull_rx_put(memq_link_t *link, void *rx);
void ull_rx_put_done(memq_link_t *link, void *done);
void ull_rx_sched(void);
void ull_rx_sched_done(void);
void ull_rx_put_sched(memq_link_t *link, void *rx);
void ull_iso_rx_put(memq_link_t *link, void *rx);
void ull_iso_rx_sched(void);
void *ull_iso_tx_ack_dequeue(void);

View file

@ -723,8 +723,7 @@ int lll_adv_scan_req_report(struct lll_adv *lll, struct pdu_adv *pdu_adv_rx,
node_rx->hdr.rx_ftr.rl_idx = rl_idx;
#endif
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
return 0;
}
@ -1368,8 +1367,7 @@ static void isr_done(void *param)
/* TODO: add other info by defining a payload struct */
node_rx->type = NODE_RX_TYPE_ADV_INDICATION;
ull_rx_put(node_rx->link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->link, node_rx);
}
#endif /* CONFIG_BT_CTLR_ADV_INDICATION */
@ -1629,8 +1627,7 @@ static inline int isr_rx_pdu(struct lll_adv *lll,
ftr->extra = ull_pdu_rx_alloc();
}
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
return 0;
#endif /* CONFIG_BT_PERIPHERAL */

View file

@ -817,8 +817,7 @@ static void isr_tx_connect_rsp(void *param)
}
}
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
if (is_done) {
/* Stop further LLL radio events */

View file

@ -714,8 +714,7 @@ static void isr_done_term(void *param)
rx->type = NODE_RX_TYPE_BIG_CHM_COMPLETE;
rx->rx_ftr.param = lll;
ull_rx_put(rx->link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->link, rx);
}
/* Use new channel map */

View file

@ -310,8 +310,7 @@ static void isr_done(void *param)
rx->type = NODE_RX_TYPE_SYNC_CHM_COMPLETE;
rx->rx_ftr.param = lll;
ull_rx_put(rx->link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->link, rx);
}
lll_isr_done(lll);

View file

@ -146,8 +146,7 @@ void lll_prof_reserve_send(struct node_rx_pdu *rx)
if (err) {
rx->hdr.type = NODE_RX_TYPE_PROFILE;
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
}
}
}
@ -236,8 +235,7 @@ static int send(struct node_rx_pdu *rx)
p->ull_high = cputime_ull_high;
p->ull_low = cputime_ull_low;
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
return 0;
}

View file

@ -1047,8 +1047,7 @@ static void isr_done_cleanup(void *param)
/* TODO: add other info by defining a payload struct */
node_rx->type = NODE_RX_TYPE_SCAN_INDICATION;
ull_rx_put(node_rx->link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->link, node_rx);
}
#endif /* CONFIG_BT_CTLR_SCAN_INDICATION */
@ -1092,8 +1091,7 @@ static void isr_done_cleanup(void *param)
node_rx->hdr.rx_ftr.param = lll;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
}
#endif /* CONFIG_BT_CTLR_ADV_EXT */
@ -1259,8 +1257,7 @@ static inline int isr_rx_pdu(struct lll_scan *lll, struct pdu_adv *pdu_adv_rx,
ftr->extra = ull_pdu_rx_alloc();
}
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
return 0;
#endif /* CONFIG_BT_CENTRAL */
@ -1589,8 +1586,7 @@ static int isr_rx_scan_report(struct lll_scan *lll, uint8_t devmatch_ok,
}
#endif /* CONFIG_BT_CTLR_EXT_SCAN_FP */
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
return err;
}

View file

@ -678,8 +678,7 @@ static void isr_done(void *param)
node_rx->hdr.rx_ftr.param = lll;
node_rx->hdr.rx_ftr.aux_failed = 1U;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
} else if (!trx_cnt) {
struct event_done_extra *e;
@ -861,8 +860,7 @@ isr_rx_do_close:
*/
node_rx->hdr.rx_ftr.param = lll;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
}
/* Check if LLL scheduled auxiliary PDU reception by scan
@ -1210,8 +1208,7 @@ static int isr_rx_pdu(struct lll_scan *lll, struct lll_scan_aux *lll_aux,
ftr->aux_lll_sched = 0U;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
return 0;
@ -1288,9 +1285,7 @@ static int isr_rx_pdu(struct lll_scan *lll, struct lll_scan_aux *lll_aux,
node_rx->hdr.type = NODE_RX_TYPE_EXT_AUX_REPORT;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
/* Next aux scan is scheduled from LLL, we already handled radio
* disable so prevent caller from doing it again.
@ -1550,8 +1545,7 @@ static void isr_rx_connect_rsp(void *param)
#endif /* CONFIG_BT_CTLR_PRIVACY */
isr_rx_do_close:
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
if (lll->lll_aux) {
struct node_rx_pdu *node_rx;
@ -1564,8 +1558,7 @@ isr_rx_do_close:
node_rx->hdr.rx_ftr.param = lll->lll_aux;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
radio_isr_set(lll_scan_isr_resume, lll);
} else {

View file

@ -981,8 +981,7 @@ static void isr_rx_adv_sync_estab(void *param)
ftr->param = lll;
ftr->sync_status = SYNC_STAT_TERM;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
}
}
@ -1231,8 +1230,7 @@ static void isr_done(void *param)
node_rx->hdr.rx_ftr.param = lll;
node_rx->hdr.rx_ftr.aux_failed = 1U;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
}
isr_rx_done_cleanup(param, ((trx_cnt) ? 1U : 0U), false);

View file

@ -728,8 +728,7 @@ static void isr_done(void *param)
/* TODO: add other info by defining a payload struct */
node_rx->type = NODE_RX_TYPE_ADV_INDICATION;
ull_rx_put(node_rx->link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->link, node_rx);
}
#else /* !CONFIG_BT_CTLR_ADV_INDICATION */
ARG_UNUSED(node_rx);
@ -940,8 +939,7 @@ static inline int isr_rx_pdu(struct lll_adv *lll,
ftr->extra = ull_pdu_rx_alloc();
}
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
return 0;
#endif /* CONFIG_BT_PERIPHERAL */
@ -1004,8 +1002,7 @@ static inline int isr_rx_sr_report(struct pdu_adv *pdu_adv_rx,
node_rx->hdr.rx_ftr.rssi = (rssi_ready) ? (radio_rssi_get() & 0x7f) :
0x7f;
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
return 0;
}

View file

@ -133,8 +133,7 @@ void lll_prof_send(void)
p->min = cputime_min;
p->max = cputime_max;
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
}
}
}

View file

@ -615,8 +615,7 @@ static void isr_cleanup(void *param)
/* TODO: add other info by defining a payload struct */
node_rx->type = NODE_RX_TYPE_SCAN_INDICATION;
ull_rx_put(node_rx->link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->link, node_rx);
}
#else /* !CONFIG_BT_CTLR_SCAN_INDICATION */
ARG_UNUSED(node_rx);
@ -855,8 +854,7 @@ static inline uint32_t isr_rx_pdu(struct lll_scan *lll, uint8_t devmatch_ok,
ftr->extra = ull_pdu_rx_alloc();
}
ull_rx_put(rx->hdr.link, rx);
ull_rx_sched();
ull_rx_put_sched(rx->hdr.link, rx);
return 0;
#endif /* CONFIG_BT_CENTRAL */
@ -1138,8 +1136,7 @@ static uint32_t isr_rx_scan_report(struct lll_scan *lll, uint8_t rssi_ready,
}
#endif /* CONFIG_BT_CTLR_EXT_SCAN_FP */
ull_rx_put(node_rx->hdr.link, node_rx);
ull_rx_sched();
ull_rx_put_sched(node_rx->hdr.link, node_rx);
return 0;
}

View file

@ -1987,6 +1987,12 @@ void ull_rx_sched(void)
mayfly_enqueue(TICKER_USER_ID_LLL, TICKER_USER_ID_ULL_HIGH, 1, &mfy);
}
void ull_rx_put_sched(memq_link_t *link, void *rx)
{
ull_rx_put(link, rx);
ull_rx_sched();
}
#if !defined(CONFIG_BT_CTLR_LOW_LAT_ULL)
void ull_rx_put_done(memq_link_t *link, void *done)
{
@ -2168,8 +2174,7 @@ void *ull_event_done(void *param)
ull_rx_put_done(link, evdone);
ull_rx_sched_done();
#else
ull_rx_put(link, evdone);
ull_rx_sched();
ull_rx_put_sched(link, evdone);
#endif /* CONFIG_BT_CTLR_LOW_LAT_ULL */
return evdone;

View file

@ -1272,6 +1272,5 @@ static void tx_lll_flush(void *param)
rx->hdr.link = NULL;
/* Enqueue the terminate towards ULL context */
ull_rx_put(link, rx);
ull_rx_sched();
ull_rx_put_sched(link, rx);
}

View file

@ -2790,8 +2790,7 @@ static void tx_lll_flush(void *param)
rx->hdr.link = NULL;
/* Enqueue the terminate towards ULL context */
ull_rx_put(link, rx);
ull_rx_sched();
ull_rx_put_sched(link, rx);
}
#if defined(CONFIG_BT_CTLR_LLID_DATA_START_EMPTY)