Bluetooth: Controller: Fix extended scanning data length assertion
Fix assertion due to LLL scheduling of auxiliary PDU reception was not considered in the ULL when checking for accumulated data length exceeding the supported maximum scan data length. This caused the auxiliary context to be release while LLL was still active with scheduled PDU reception. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
8262766a0a
commit
4158d9523e
|
@ -538,10 +538,23 @@ void ull_scan_aux_setup(memq_link_t *link, struct node_rx_hdr *rx)
|
|||
} else {
|
||||
aux->data_len += data_len;
|
||||
|
||||
/* Flush auxiliary PDU receptions and stop any more ULL
|
||||
* scheduling if accumulated data length exceeds configured
|
||||
* maximum supported.
|
||||
*/
|
||||
if (aux->data_len >= CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX) {
|
||||
/* If LLL has already scheduled, then let it proceed.
|
||||
*
|
||||
* TODO: LLL to check accumulated data length and
|
||||
* stop further reception.
|
||||
* Currently LLL will schedule as long as there
|
||||
* are free node rx available.
|
||||
*/
|
||||
if (!ftr->aux_lll_sched) {
|
||||
goto ull_scan_aux_rx_flush;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* In sync context we can dispatch rx immediately, in scan context we
|
||||
* enqueue rx in aux context and will flush them after scan is complete.
|
||||
|
|
Loading…
Reference in a new issue