summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorService qcabuildsw <qcabuildsw@localhost>2016-10-28 10:23:38 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-10-28 10:23:38 -0700
commitc277ab326c4d624fe9bce8a2f0596fd683f250d4 (patch)
tree9ebba3151dbbc859d34d0cace5115d1d903ed8e0
parent1189937facb171c5c3be6f9a3fb85685a85b1dc7 (diff)
parent87a1ecce028364a0fae700423483656dadccae4c (diff)
Merge "qcacld-3.0: Handle dfs channel switch failure" into wlan-cld3.driver.lnx.1.1-dev
-rw-r--r--core/sap/src/sap_api_link_cntl.c13
-rw-r--r--core/sap/src/sap_fsm.c6
2 files changed, 15 insertions, 4 deletions
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"),