From d3e3f8d2b48768de2d3e539e33ff2b7077f0496a Mon Sep 17 00:00:00 2001 From: Wolfgang Puffitsch Date: Mon, 28 Oct 2019 12:59:11 +0100 Subject: [PATCH] Bluetooth: controller: split: Move invalidation of connection handle Move invalidation of connection handle when flushing TX buffers into LLL context. Otherwise, LLL may or may not see invalidated handle depending on mayfly scheduling. Signed-off-by: Wolfgang Puffitsch --- subsys/bluetooth/controller/ll_sw/ull_conn.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subsys/bluetooth/controller/ll_sw/ull_conn.c b/subsys/bluetooth/controller/ll_sw/ull_conn.c index 6ac4d1759fb77f..d3b8454cdf6915 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_conn.c +++ b/subsys/bluetooth/controller/ll_sw/ull_conn.c @@ -1714,9 +1714,6 @@ static void conn_cleanup(struct ll_conn *conn, u8_t reason) LL_ASSERT((ticker_status == TICKER_STATUS_SUCCESS) || (ticker_status == TICKER_STATUS_BUSY)); - /* Invalidate the connection context */ - lll->handle = 0xFFFF; - /* Demux and flush Tx PDUs that remain enqueued in thread context */ ull_conn_tx_demux(UINT8_MAX); } @@ -1746,6 +1743,9 @@ static void tx_lll_flush(void *param) lll_conn_flush(lll); + /* Invalidate the connection context */ + lll->handle = 0xFFFF; + link = memq_dequeue(lll->memq_tx.tail, &lll->memq_tx.head, (void **)&tx); while (link) {