Bluetooth: llcp: Fix PHY UPD ntf send before instant on air
PHY update control procedure has to send a notification towards Host when the PHY is actually changed, when the instant happens. Control procedures are handled in a prepare phase of a connection event, hence notifications are send towards host to early. The fix for that is to postpone send of a notification. New state has been introduced to remote requested PHY update control procedure: RP_PU_STATE_WAIT_INSTANT_ON_AIR. Also new event has been introduced: RP_PU_EVT_NTF, that is used to inform the PHY update state machine that notification may be send. There are two places where the notification events may be generated ull_conn_rx, just before first received PDU is send towards Host or ull_conn_done, in case there were no PDU received. Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
This commit is contained in:
parent
4f632b0ca2
commit
a1963fccaf
7 changed files with 170 additions and 16 deletions
|
@ -1066,6 +1066,10 @@ int ull_conn_rx(memq_link_t *link, struct node_rx_pdu **rx)
|
|||
}
|
||||
#endif /* CONFIG_BT_CTLR_RX_ENQUEUE_HOLD */
|
||||
|
||||
#if !defined(CONFIG_BT_LL_SW_LLCP_LEGACY)
|
||||
ull_cp_tx_ntf(conn);
|
||||
#endif /* CONFIG_BT_LL_SW_LLCP_LEGACY */
|
||||
|
||||
pdu_rx = (void *)(*rx)->pdu;
|
||||
|
||||
switch (pdu_rx->ll_id) {
|
||||
|
@ -1456,6 +1460,10 @@ void ull_conn_done(struct node_rx_event_done *done)
|
|||
}
|
||||
#endif /* CONFIG_BT_CTLR_RX_ENQUEUE_HOLD */
|
||||
|
||||
#if !defined(CONFIG_BT_LL_SW_LLCP_LEGACY)
|
||||
ull_cp_tx_ntf(conn);
|
||||
#endif /* CONFIG_BT_LL_SW_LLCP_LEGACY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_LE_ENC)
|
||||
/* Check authenticated payload expiry or MIC failure */
|
||||
switch (done->extra.mic_state) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue