Skip to content

Commit

Permalink
Bluetooth: controller: split: conn handle invalidation on release
Browse files Browse the repository at this point in the history
Move invalidation of connection handle to connection context
release done on release of terminate rx node.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
  • Loading branch information
cvinayak authored and aescolar committed Dec 12, 2019
1 parent d3e3f8d commit 7417e6e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
21 changes: 17 additions & 4 deletions subsys/bluetooth/controller/ll_sw/ull.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 0 additions & 6 deletions subsys/bluetooth/controller/ll_sw/ull_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 7417e6e

Please sign in to comment.