Bluetooth: controller: Rework TX data pause

Change LLCP TX data pause into using mask to allow for pausing from
multiple different sources - but only once per source
(the underlying TX queue still just has an integer counter).

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
This commit is contained in:
Thomas Ebert Hansen 2022-03-24 11:21:21 +01:00 committed by Carles Cufí
commit 79092c3cf4
8 changed files with 107 additions and 26 deletions

View file

@ -29,6 +29,12 @@ enum llcp_proc {
/* A helper enum entry, to use in pause procedure context */
PROC_NONE = 0x0,
};
enum llcp_tx_q_pause_data_mask {
LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION = 0x01,
LLCP_TX_QUEUE_PAUSE_DATA_PHY_UPDATE = 0x02,
LLCP_TX_QUEUE_PAUSE_DATA_DATA_LENGTH = 0x04,
};
#if ((CONFIG_BT_CTLR_LLCP_COMMON_TX_CTRL_BUF_NUM <\
(CONFIG_BT_CTLR_LLCP_TX_PER_CONN_TX_CTRL_BUF_NUM_MAX *\
CONFIG_BT_CTLR_LLCP_CONN)) &&\
@ -344,8 +350,8 @@ void llcp_proc_ctx_release(struct proc_ctx *ctx);
* ULL -> LLL Interface
*/
void llcp_tx_enqueue(struct ll_conn *conn, struct node_tx *tx);
void llcp_tx_pause_data(struct ll_conn *conn);
void llcp_tx_resume_data(struct ll_conn *conn);
void llcp_tx_pause_data(struct ll_conn *conn, enum llcp_tx_q_pause_data_mask pause_mask);
void llcp_tx_resume_data(struct ll_conn *conn, enum llcp_tx_q_pause_data_mask resume_mask);
void llcp_tx_flush(struct ll_conn *conn);
/*