diff --git a/core/sap/src/sap_api_link_cntl.c b/core/sap/src/sap_api_link_cntl.c index 2447879bcab7..7b249cb746d5 100644 --- a/core/sap/src/sap_api_link_cntl.c +++ b/core/sap/src/sap_api_link_cntl.c @@ -1239,13 +1239,18 @@ wlansap_roam_callback(void *ctx, tCsrRoamInfo *csr_roam_info, uint32_t roamId, csr_roam_info, &qdf_ret_status); break; case eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE: - /* - * This is much more serious issue, we have to vacate the + /* This is much more serious issue, we have to vacate the * channel due to the presence of radar but our channel change * failed, stop the BSS operation completely and inform hostapd */ - sap_ctx->sapsMachine = eSAP_DISCONNECTED; - /* Inform cfg80211 and hostapd that BSS is not alive anymore */ + sap_event.event = eWNI_SME_CHANNEL_CHANGE_RSP; + sap_event.params = 0; + sap_event.u1 = eCSR_ROAM_INFRA_IND; + sap_event.u2 = eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE; + + qdf_status = sap_fsm(sap_ctx, &sap_event); + if (!QDF_IS_STATUS_SUCCESS(qdf_status)) + qdf_ret_status = QDF_STATUS_E_FAILURE; break; case eCSR_ROAM_EXT_CHG_CHNL_UPDATE_IND: qdf_status = sap_signal_hdd_event(sap_ctx, csr_roam_info, diff --git a/core/sap/src/sap_fsm.c b/core/sap/src/sap_fsm.c index 54a3dcedab60..ed2e70663118 100644 --- a/core/sap/src/sap_fsm.c +++ b/core/sap/src/sap_fsm.c @@ -3970,6 +3970,12 @@ static QDF_STATUS sap_fsm_state_disconnecting(ptSapContext sap_ctx, QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO, FL("Sending DFS eWNI_SME_CHANNEL_CHANGE_REQ")); + } else if (msg == eWNI_SME_CHANNEL_CHANGE_RSP) { + QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO, + FL("in state %s, event msg %d result %d"), + "eSAP_DISCONNECTING ", msg, sap_event->u2); + if (sap_event->u2 == eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE) + qdf_status = sap_goto_disconnecting(sap_ctx); } else { QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR, FL("in state %s, invalid event msg %d"),