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:
parent
b909647d0a
commit
79092c3cf4
8 changed files with 107 additions and 26 deletions
|
@ -342,7 +342,7 @@ static void lp_enc_st_unencrypted(struct ll_conn *conn, struct proc_ctx *ctx, ui
|
|||
switch (evt) {
|
||||
case LP_ENC_EVT_RUN:
|
||||
/* Pause Tx data */
|
||||
llcp_tx_pause_data(conn);
|
||||
llcp_tx_pause_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
llcp_tx_flush(conn);
|
||||
lp_enc_send_enc_req(conn, ctx, evt, param);
|
||||
break;
|
||||
|
@ -407,7 +407,7 @@ static void lp_enc_st_wait_rx_start_enc_req(struct ll_conn *conn, struct proc_ct
|
|||
break;
|
||||
case LP_ENC_EVT_REJECT:
|
||||
/* Resume Tx data */
|
||||
llcp_tx_resume_data(conn);
|
||||
llcp_tx_resume_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
/* Resume Rx data */
|
||||
ull_conn_resume_rx_data(conn);
|
||||
ctx->data.enc.error = (pdu->llctrl.opcode == PDU_DATA_LLCTRL_TYPE_REJECT_IND) ?
|
||||
|
@ -443,7 +443,7 @@ static void lp_enc_st_wait_rx_start_enc_rsp(struct ll_conn *conn, struct proc_ct
|
|||
switch (evt) {
|
||||
case LP_ENC_EVT_START_ENC_RSP:
|
||||
/* Resume Tx data */
|
||||
llcp_tx_resume_data(conn);
|
||||
llcp_tx_resume_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
/* Resume Rx data */
|
||||
ull_conn_resume_rx_data(conn);
|
||||
ctx->data.enc.error = BT_HCI_ERR_SUCCESS;
|
||||
|
@ -477,7 +477,7 @@ static void lp_enc_state_encrypted(struct ll_conn *conn, struct proc_ctx *ctx, u
|
|||
switch (evt) {
|
||||
case LP_ENC_EVT_RUN:
|
||||
/* Pause Tx data */
|
||||
llcp_tx_pause_data(conn);
|
||||
llcp_tx_pause_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
llcp_tx_flush(conn);
|
||||
lp_enc_send_pause_enc_req(conn, ctx, evt, param);
|
||||
break;
|
||||
|
@ -822,7 +822,7 @@ static void rp_enc_send_reject_ind(struct ll_conn *conn, struct proc_ctx *ctx, u
|
|||
ctx->state = RP_ENC_STATE_UNENCRYPTED;
|
||||
|
||||
/* Resume Tx data */
|
||||
llcp_tx_resume_data(conn);
|
||||
llcp_tx_resume_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
/* Resume Rx data */
|
||||
ull_conn_resume_rx_data(conn);
|
||||
/* Resume possibly paused local procedure */
|
||||
|
@ -841,7 +841,7 @@ static void rp_enc_send_start_enc_rsp(struct ll_conn *conn, struct proc_ctx *ctx
|
|||
ctx->state = RP_ENC_STATE_UNENCRYPTED;
|
||||
|
||||
/* Resume Tx data */
|
||||
llcp_tx_resume_data(conn);
|
||||
llcp_tx_resume_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
/* Resume Rx data */
|
||||
ull_conn_resume_rx_data(conn);
|
||||
|
||||
|
@ -907,7 +907,7 @@ static void rp_enc_state_wait_rx_enc_req(struct ll_conn *conn, struct proc_ctx *
|
|||
switch (evt) {
|
||||
case RP_ENC_EVT_ENC_REQ:
|
||||
/* Pause Tx data */
|
||||
llcp_tx_pause_data(conn);
|
||||
llcp_tx_pause_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
llcp_tx_flush(conn);
|
||||
/* Pause Rx data */
|
||||
ull_conn_pause_rx_data(conn);
|
||||
|
@ -1050,7 +1050,7 @@ static void rp_enc_state_wait_rx_pause_enc_req(struct ll_conn *conn, struct proc
|
|||
switch (evt) {
|
||||
case RP_ENC_EVT_PAUSE_ENC_REQ:
|
||||
/* Pause Tx data */
|
||||
llcp_tx_pause_data(conn);
|
||||
llcp_tx_pause_data(conn, LLCP_TX_QUEUE_PAUSE_DATA_ENCRYPTION);
|
||||
llcp_tx_flush(conn);
|
||||
/*
|
||||
* Pause Rx data; will be resumed when the encapsulated
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue