Skip to content

Commit cec657b

Browse files
cvinayaknashif
authored andcommitted
Bluetooth: controller: Fix Re-encryption procedure
Fix MIC failure on re-encryption procedure when responding at the same time to peer initiated feature request. Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
1 parent 1f238a1 commit cec657b

File tree

1 file changed

+11
-3
lines changed
  • subsys/bluetooth/controller/ll_sw

1 file changed

+11
-3
lines changed

subsys/bluetooth/controller/ll_sw/ctrl.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,6 +1911,9 @@ static inline u32_t isr_rx_conn_pkt_ack(struct pdu_data *pdu_data_tx,
19111911
*/
19121912
_radio.conn_curr->procedure_expire =
19131913
_radio.conn_curr->procedure_reload;
1914+
1915+
/* Reset enc req queued state */
1916+
_radio.conn_curr->llcp_enc.ack = _radio.conn_curr->llcp_enc.req;
19141917
break;
19151918

19161919
case PDU_DATA_LLCTRL_TYPE_PAUSE_ENC_RSP:
@@ -9782,7 +9785,10 @@ static bool is_enc_req_pause_tx(struct connection *conn)
97829785

97839786
pdu_data_tx = (void *)conn->pkt_tx_head->pdu_data;
97849787
if ((pdu_data_tx->ll_id == PDU_DATA_LLID_CTRL) &&
9785-
(pdu_data_tx->llctrl.opcode == PDU_DATA_LLCTRL_TYPE_ENC_REQ)) {
9788+
((pdu_data_tx->llctrl.opcode ==
9789+
PDU_DATA_LLCTRL_TYPE_ENC_REQ) ||
9790+
(pdu_data_tx->llctrl.opcode ==
9791+
PDU_DATA_LLCTRL_TYPE_PAUSE_ENC_REQ))) {
97869792
if (((conn->llcp_req != conn->llcp_ack) &&
97879793
(conn->llcp_type != LLCP_ENCRYPTION)) ||
97889794
((conn->llcp_req == conn->llcp_ack) &&
@@ -9959,8 +9965,10 @@ static void prepare_pdu_data_tx(struct connection *conn,
99599965

99609966
pdu_data_tx = (void *)conn->pkt_tx_head->pdu_data;
99619967
if ((pdu_data_tx->ll_id != PDU_DATA_LLID_CTRL) ||
9962-
(pdu_data_tx->llctrl.opcode !=
9963-
PDU_DATA_LLCTRL_TYPE_ENC_REQ)) {
9968+
((pdu_data_tx->llctrl.opcode !=
9969+
PDU_DATA_LLCTRL_TYPE_ENC_REQ) &&
9970+
(pdu_data_tx->llctrl.opcode !=
9971+
PDU_DATA_LLCTRL_TYPE_PAUSE_ENC_REQ))) {
99649972
conn->pkt_tx_ctrl = conn->pkt_tx_ctrl_last =
99659973
conn->pkt_tx_head;
99669974
}

0 commit comments

Comments
 (0)