Browse Source

qcacld-3.0: Use preauth channel to fetch the band during roaming

qcacld-2.0 to qcacld-3.0 propagation

During roaming the connected AP's operating channel is used instead of
preauth channel to fetch the band, based on which the data rate is set.
Due to this incorect data rate is set.

To address this, use the preauth channel during roaming to fetch the band
and set the data rate accordingly.

CRs-Fixed: 1017943
Change-Id: Ia3bf13c1a93a156eba8461bcdcf3490b9f49c2a2
Deepthi Gowri 8 years ago
parent
commit
1de51e3876

+ 9 - 5
core/mac/src/pe/lim/lim_send_frames_host_roam.c

@@ -407,12 +407,16 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal mac_ctx,
 	lim_log(mac_ctx, LOG1, FL("Re-assoc Req Frame is: "));
 	       sir_dump_buf(mac_ctx, SIR_LIM_MODULE_ID, LOG1,
 			    (uint8_t *) frame, (bytes + ft_ies_length));
-	if ((SIR_BAND_5_GHZ ==
-	     lim_get_rf_band(pe_session->currentOperChannel)) ||
-	    (pe_session->pePersona == QDF_P2P_CLIENT_MODE) ||
-	    (pe_session->pePersona == QDF_P2P_GO_MODE)) {
+
+	if ((NULL != pe_session->ftPEContext.pFTPreAuthReq) &&
+	    (SIR_BAND_5_GHZ == lim_get_rf_band(
+	     pe_session->ftPEContext.pFTPreAuthReq->preAuthchannelNum)))
+		tx_flag |= HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME;
+	else if ((SIR_BAND_5_GHZ ==
+		  lim_get_rf_band(pe_session->currentOperChannel))
+		 || (pe_session->pePersona == QDF_P2P_CLIENT_MODE)
+		 || (pe_session->pePersona == QDF_P2P_GO_MODE))
 		tx_flag |= HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME;
-	}
 
 	if (NULL != pe_session->assocReq) {
 		qdf_mem_free(pe_session->assocReq);

+ 8 - 8
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -2265,15 +2265,15 @@ alloc_packet:
 	}
 	sir_dump_buf(mac_ctx, SIR_LIM_MODULE_ID, LOG2, frame, frame_len);
 
-	if ((SIR_BAND_5_GHZ == lim_get_rf_band(session->currentOperChannel))
-	    || (session->pePersona == QDF_P2P_CLIENT_MODE)
-	    || (session->pePersona == QDF_P2P_GO_MODE)
-	    || ((NULL != session->ftPEContext.pFTPreAuthReq) &&
-		(SIR_BAND_5_GHZ ==
-		 lim_get_rf_band(session->ftPEContext.pFTPreAuthReq->
-				 preAuthchannelNum))))
+	if ((NULL != session->ftPEContext.pFTPreAuthReq) &&
+	    (SIR_BAND_5_GHZ == lim_get_rf_band(
+	     session->ftPEContext.pFTPreAuthReq->preAuthchannelNum)))
+		tx_flag |= HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME;
+	else if ((SIR_BAND_5_GHZ ==
+		  lim_get_rf_band(session->currentOperChannel))
+		  || (session->pePersona == QDF_P2P_CLIENT_MODE)
+		  || (session->pePersona == QDF_P2P_GO_MODE))
 		tx_flag |= HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME;
-
 
 	if (session->pePersona == QDF_P2P_CLIENT_MODE ||
 		session->pePersona == QDF_STA_MODE)