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:
parent
ddeb0e9f6e
commit
1f97652998
16 changed files with 41 additions and 61 deletions
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -259,6 +259,10 @@ void ull_rx_sched(void)
|
|||
{
|
||||
}
|
||||
|
||||
void ull_rx_put_sched(memq_link_t *link, void *rx)
|
||||
{
|
||||
}
|
||||
|
||||
/* Forward declaration */
|
||||
struct node_rx_event_done;
|
||||
void ull_drift_ticks_get(struct node_rx_event_done *done, uint32_t *ticks_drift_plus,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue