Skip to content

Commit 2758c33

Browse files
cvinayakjhedberg
authored andcommitted
Bluetooth: controller: split: Fix slave latency cancel race
Fix missing transmit buffer demutiplexing before checking if slave latency needs to be maintained or cancelled. This bug was detected when new transmit buffer was enqueued overlapping with on-air radio transmission of empty PDU preceding the handling of radio event done. Symptoms of this bug being data transmission latency of upto slave latency plus one times connection interval. Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
1 parent 2fa7a7e commit 2758c33

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

subsys/bluetooth/controller/ll_sw/ull_conn.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,10 @@ void ull_conn_done(struct node_rx_event_done *done)
10451045
ull_slave_done(done, &ticks_drift_plus,
10461046
&ticks_drift_minus);
10471047

1048+
if (!conn->tx_head) {
1049+
ull_conn_tx_demux(UINT8_MAX);
1050+
}
1051+
10481052
if (conn->tx_head || memq_peek(lll->memq_tx.head,
10491053
lll->memq_tx.tail,
10501054
NULL)) {

0 commit comments

Comments
 (0)