소스 검색

qcacld-3.0: Fix SAP start failure issue

qcacld-2.0 to qcacld-3.0 propagation

At the time of driver load, sap session is opened as part of
hdd_init_ap_mode but in case of sap restart, sme_open_session
is called from sapFsm.
At the time of opening session, sme_open_session register
wlansap_roam_callback callback for connection status.
If this callback is not registered, HDD will not get connection
status and HDD will start cleanup after SAP connection timeout which
will result in SAP failure.
Need to register wlansap_roam_callback as part of sme_open_session
when session is not created as part of hdd_init_ap_mode.

Change-Id: Ifd2cec5fec432f1dcd2b39c59df1f1c5b13c55d5
CRs-Fixed: 1051097
Agrawal Ashish 8 년 전
부모
커밋
4c104387cc
1개의 변경된 파일2개의 추가작업 그리고 10개의 파일을 삭제
  1. 2 10
      core/sap/src/sap_fsm.c

+ 2 - 10
core/sap/src/sap_fsm.c

@@ -3378,8 +3378,8 @@ static QDF_STATUS sap_fsm_state_disconnected(ptSapContext sap_ctx,
 						"failed to get vdev type");
 						"failed to get vdev type");
 				return QDF_STATUS_E_FAILURE;
 				return QDF_STATUS_E_FAILURE;
 			}
 			}
-			/* Open SME Session for scan */
-			qdf_status = sme_open_session(hal, NULL,
+			qdf_status = sme_open_session(hal,
+					&wlansap_roam_callback,
 					sap_ctx, sap_ctx->self_mac_addr,
 					sap_ctx, sap_ctx->self_mac_addr,
 					&sap_ctx->sessionId, type, subtype);
 					&sap_ctx->sessionId, type, subtype);
 			if (QDF_STATUS_SUCCESS != qdf_status) {
 			if (QDF_STATUS_SUCCESS != qdf_status) {
@@ -3404,14 +3404,6 @@ static QDF_STATUS sap_fsm_state_disconnected(ptSapContext sap_ctx,
 		 */
 		 */
 		qdf_status = sap_goto_channel_sel(sap_ctx, sap_event, false,
 		qdf_status = sap_goto_channel_sel(sap_ctx, sap_event, false,
 						true);
 						true);
-
-		/*
-		 * Transition from eSAP_DISCONNECTED to eSAP_CH_SELECT
-		 * (both without substates)
-		 */
-		QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
-			  FL("from state %s => %s"),
-			  "eSAP_DISCONNECTED", "eSAP_CH_SELECT");
 	} else if (msg == eSAP_DFS_CHANNEL_CAC_START) {
 	} else if (msg == eSAP_DFS_CHANNEL_CAC_START) {
 		/*
 		/*
 		 * No need of state check here, caller is expected to perform
 		 * No need of state check here, caller is expected to perform