Skip to content

Commit e0f51b2

Browse files
cvinayakaescolar
authored andcommitted
Bluetooth: controller: split: Fix assert on DLE procedure stall
Fix local initiated Data Length Update procedure from being stalled when a remote initiates a procedure with instant. Fixes #23069. Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>
1 parent 09b89ef commit e0f51b2

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

subsys/bluetooth/controller/ll_sw/ull_conn.c

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,8 +830,27 @@ int ull_conn_llcp(struct ll_conn *conn, u32_t ticks_at_expire, u16_t lazy)
830830
}
831831
}
832832

833-
/* check if procedure is requested */
833+
/* Check if procedures with instant or encryption setup is requested or
834+
* active.
835+
*/
834836
if (((conn->llcp_req - conn->llcp_ack) & 0x03) == 0x02) {
837+
/* Process parallel procedures that are active */
838+
if (0) {
839+
#if defined(CONFIG_BT_CTLR_DATA_LENGTH)
840+
/* Check if DLE in progress */
841+
} else if (conn->llcp_length.ack != conn->llcp_length.req) {
842+
if ((conn->llcp_length.state ==
843+
LLCP_LENGTH_STATE_RESIZE) ||
844+
(conn->llcp_length.state ==
845+
LLCP_LENGTH_STATE_RESIZE_RSP)) {
846+
/* handle DLU state machine */
847+
event_len_prep(conn);
848+
}
849+
#endif /* CONFIG_BT_CTLR_DATA_LENGTH */
850+
}
851+
852+
/* Process procedures with instants or encryption setup */
853+
/* FIXME: Make LE Ping cacheable */
835854
switch (conn->llcp_type) {
836855
case LLCP_CONN_UPD:
837856
{

0 commit comments

Comments
 (0)