Bluetooth: controller: legacy: Fix DLE duplicate requests
Fix implementation to handle back-to-back and duplicate LENGTH_REQ PDU reception. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
9bd4a786cd
commit
79942b47cc
1 changed files with 15 additions and 3 deletions
|
@ -2692,9 +2692,21 @@ static inline u8_t isr_rx_conn_pkt_ctrl_dle(struct pdu_data *pdu_data_rx,
|
||||||
*rx_enqueue = 1U;
|
*rx_enqueue = 1U;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Drop response with no Local initiated request. */
|
/* Drop response with no Local initiated request and duplicate
|
||||||
LL_ASSERT(pdu_data_rx->llctrl.opcode ==
|
* requests.
|
||||||
PDU_DATA_LLCTRL_TYPE_LENGTH_RSP);
|
*/
|
||||||
|
if (pdu_data_rx->llctrl.opcode !=
|
||||||
|
PDU_DATA_LLCTRL_TYPE_LENGTH_RSP) {
|
||||||
|
mem_release(node_tx, &_radio.pkt_tx_ctrl_free);
|
||||||
|
|
||||||
|
/* Defer new request if previous in resize state */
|
||||||
|
if (_radio.conn_curr->llcp_length.state ==
|
||||||
|
LLCP_LENGTH_STATE_RESIZE) {
|
||||||
|
return 1U;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
send_length_resp:
|
send_length_resp:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue