Browse Source

qcacld-3.0: Fix invalid peer local id in sap start bss

qcacld-2.0 to qcacld-3.0 propagation
Currently when cac ends, it will trigger eSAP_START_BSS_EVENT
with peer local id 0. If there is no peer with 0 local id, sap
starts fails.

Actually valid peer local id should be saved in sap context,
so it can be used in sap_signal_hdd_event.

Change-Id: I3779cb181390650844475b1a2f18768cb5784cf2
CRs-Fixed: 1096534
bings 8 years ago
parent
commit
297247160e
3 changed files with 3 additions and 4 deletions
  1. 1 0
      core/sap/src/sap_api_link_cntl.c
  2. 1 4
      core/sap/src/sap_fsm.c
  3. 1 0
      core/sap/src/sap_internal.h

+ 1 - 0
core/sap/src/sap_api_link_cntl.c

@@ -1197,6 +1197,7 @@ wlansap_roam_callback(void *ctx, tCsrRoamInfo *csr_roam_info, uint32_t roamId,
 		 */
 		sap_event.event = eSAP_MAC_START_BSS_SUCCESS;
 		sap_event.params = csr_roam_info;
+		sap_ctx->sap_sta_id = csr_roam_info->staId;
 		sap_event.u1 = roam_status;
 		sap_event.u2 = roam_result;
 		qdf_status = sap_fsm(sap_ctx, &sap_event);

+ 1 - 4
core/sap/src/sap_fsm.c

@@ -2874,10 +2874,7 @@ QDF_STATUS sap_signal_hdd_event(ptSapContext sap_ctx,
 		bss_complete = &sap_ap_event.sapevt.sapStartBssCompleteEvent;
 
 		bss_complete->status = (eSapStatus) context;
-		if (csr_roaminfo != NULL)
-			bss_complete->staId = csr_roaminfo->staId;
-		else
-			bss_complete->staId = 0;
+		bss_complete->staId = sap_ctx->sap_sta_id;
 
 		QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
 			  FL("(eSAP_START_BSS_EVENT): staId = %d"),

+ 1 - 0
core/sap/src/sap_internal.h

@@ -279,6 +279,7 @@ typedef struct sSapContext {
 	enum sap_acs_dfs_mode dfs_mode;
 	wlan_scan_requester req_id;
 	uint8_t sap_acs_pre_start_bss;
+	uint8_t sap_sta_id;
 } *ptSapContext;
 
 /*----------------------------------------------------------------------------