Bluetooth: controller: Fix missing CIS disconnect on MIC failure
Disconnect CIS immediately if event done extra status indicates MIC
failure. Return reason BT_HCI_ERR_TERM_DUE_TO_MIC_FAIL.
Fixes EBQ test /LL/CIS/PER/BV-27-C.
@@ -314,7 +314,10 @@ void ull_conn_iso_done(struct node_rx_event_done *done)
if (cis->lll.handle != LLL_HANDLE_INVALID) {
/* CIS was setup and is now expected to be going */
- if (!(done->extra.trx_performed_mask &
+ if (done->extra.mic_state == LLL_CONN_MIC_FAIL) {
+ /* MIC failure - stop CIS and defer cleanup to after teardown. */
+ ull_conn_iso_cis_stop(cis, NULL, BT_HCI_ERR_TERM_DUE_TO_MIC_FAIL);
+ } else if (!(done->extra.trx_performed_mask &
(1U << LL_CIS_IDX_FROM_HANDLE(cis->lll.handle)))) {
/* We did NOT have successful transaction on established CIS,
* or CIS was not yet established, so handle timeout
