Bluetooth: controller: split: conn handle invalidation on release

Move invalidation of connection handle to connection context
release done on release of terminate rx node.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2019-12-05 14:24:43 +05:30 committed by Alberto Escolar
parent d3e3f8d2b4
commit 7417e6e09e
2 changed files with 17 additions and 10 deletions

View file

@ -818,16 +818,29 @@ void ll_rx_mem_release(void **node_rx)
case NODE_RX_TYPE_TERMINATE:
{
struct ll_conn *conn;
struct lll_conn *lll;
memq_link_t *link;
/* Get the connection context */
conn = ll_conn_get(rx_free->handle);
lll = &conn->lll;
LL_ASSERT(!conn->lll.link_tx_free);
link = memq_deinit(&conn->lll.memq_tx.head,
&conn->lll.memq_tx.tail);
/* Invalidate the connection context */
lll->handle = 0xFFFF;
/* Demux and flush Tx PDUs that remain enqueued in
* thread context
*/
ull_conn_tx_demux(UINT8_MAX);
/* De-initialize tx memq and release the used link */
LL_ASSERT(!lll->link_tx_free);
link = memq_deinit(&lll->memq_tx.head,
&lll->memq_tx.tail);
LL_ASSERT(link);
conn->lll.link_tx_free = link;
lll->link_tx_free = link;
/* Release the connection context to free pool */
ll_conn_release(conn);
}
break;

View file

@ -1713,9 +1713,6 @@ static void conn_cleanup(struct ll_conn *conn, u8_t reason)
ticker_op_stop_cb, (void *)lll);
LL_ASSERT((ticker_status == TICKER_STATUS_SUCCESS) ||
(ticker_status == TICKER_STATUS_BUSY));
/* Demux and flush Tx PDUs that remain enqueued in thread context */
ull_conn_tx_demux(UINT8_MAX);
}
static void tx_ull_flush(struct ll_conn *conn)
@ -1743,9 +1740,6 @@ 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) {