Browse Source

qcacld-3.0: Populate roam_request qos params from sme_session

While preparing roam_scan_offload_request in csr, populate QoS parameters
from current sme_session.

Change-Id: I8ec26b61babf15b622d2a96b304f068c15f78795
CRs-Fixed: 1092258
Naveen Rawat 8 năm trước cách đây
mục cha
commit
cd11831498

+ 0 - 7
core/mac/inc/ani_global.h

@@ -607,13 +607,6 @@ typedef struct sAniSirLim {
 	/* UAPSD flag used on AP */
 	uint8_t gUapsdEnable;
 
-	/* Used on STA, this is a static UAPSD mask setting
-	 * derived  from SME_JOIN_REQ and SME_REASSOC_REQ. If a
-	 * particular AC bit is set, it means the AC is both
-	 * trigger enabled and delivery enabled.
-	 */
-	uint8_t gUapsdPerAcBitmask;
-
 	/* Used on STA for AC downgrade. This is a dynamic mask
 	 * setting which keep tracks of ACs being admitted.
 	 * If bit is set to 0: That partiular AC is not admitted

+ 1 - 1
core/mac/src/include/parser_api.h

@@ -680,7 +680,7 @@ populate_dot11f_qos_caps_ap(tpAniSirGlobal pMac,
 			tpPESession psessionEntry);
 
 void
-populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
+populate_dot11f_qos_caps_station(tpAniSirGlobal pMac, tpPESession session,
 				tDot11fIEQOSCapsStation *pDot11f);
 
 tSirRetStatus

+ 0 - 1
core/mac/src/pe/lim/lim_api.c

@@ -234,7 +234,6 @@ static void __lim_init_vars(tpAniSirGlobal pMac)
 
 	/* WMM Related Flag */
 	pMac->lim.gUapsdEnable = 0;
-	pMac->lim.gUapsdPerAcBitmask = 0;
 
 	/* QoS-AC Downgrade: Initially, no AC is admitted */
 	pMac->lim.gAcAdmitMask[SIR_MAC_DIRECTION_UPLINK] = 0;

+ 4 - 2
core/mac/src/pe/lim/lim_send_frames_host_roam.c

@@ -161,7 +161,8 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal mac_ctx,
 	}
 
 	if (qos_enabled)
-		populate_dot11f_qos_caps_station(mac_ctx, &frm.QOSCapsStation);
+		populate_dot11f_qos_caps_station(mac_ctx, pe_session,
+						&frm.QOSCapsStation);
 
 	populate_dot11f_ext_supp_rates(mac_ctx,
 		POPULATE_DOT11F_RATES_OPERATIONAL, &frm.ExtSuppRates,
@@ -624,7 +625,8 @@ void lim_send_reassoc_req_mgmt_frame(tpAniSirGlobal pMac,
 	}
 
 	if (fQosEnabled)
-		populate_dot11f_qos_caps_station(pMac, &frm.QOSCapsStation);
+		populate_dot11f_qos_caps_station(pMac, psessionEntry,
+						&frm.QOSCapsStation);
 
 	populate_dot11f_ext_supp_rates(pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
 				       &frm.ExtSuppRates, psessionEntry);

+ 2 - 1
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -1732,7 +1732,8 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
 		}
 	}
 	if (qos_enabled)
-		populate_dot11f_qos_caps_station(mac_ctx, &frm->QOSCapsStation);
+		populate_dot11f_qos_caps_station(mac_ctx, pe_session,
+						&frm->QOSCapsStation);
 
 	populate_dot11f_ext_supp_rates(mac_ctx,
 		POPULATE_DOT11F_RATES_OPERATIONAL, &frm->ExtSuppRates,

+ 5 - 5
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -1516,7 +1516,7 @@ populate_dot11f_qos_caps_ap(tpAniSirGlobal pMac,
 } /* End PopulatedDot11fQOSCaps. */
 
 void
-populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
+populate_dot11f_qos_caps_station(tpAniSirGlobal pMac, tpPESession pe_session,
 				 tDot11fIEQOSCapsStation *pDot11f)
 {
 	uint32_t val = 0;
@@ -1531,13 +1531,13 @@ populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
 
 	if (pMac->lim.gUapsdEnable) {
 		pDot11f->acbe_uapsd =
-			LIM_UAPSD_GET(ACBE, pMac->lim.gUapsdPerAcBitmask);
+			LIM_UAPSD_GET(ACBE, pe_session->gUapsdPerAcBitmask);
 		pDot11f->acbk_uapsd =
-			LIM_UAPSD_GET(ACBK, pMac->lim.gUapsdPerAcBitmask);
+			LIM_UAPSD_GET(ACBK, pe_session->gUapsdPerAcBitmask);
 		pDot11f->acvi_uapsd =
-			LIM_UAPSD_GET(ACVI, pMac->lim.gUapsdPerAcBitmask);
+			LIM_UAPSD_GET(ACVI, pe_session->gUapsdPerAcBitmask);
 		pDot11f->acvo_uapsd =
-			LIM_UAPSD_GET(ACVO, pMac->lim.gUapsdPerAcBitmask);
+			LIM_UAPSD_GET(ACVO, pe_session->gUapsdPerAcBitmask);
 	}
 	pDot11f->present = 1;
 } /* End PopulatedDot11fQOSCaps. */

+ 1 - 0
core/sme/inc/csr_internal.h

@@ -1002,6 +1002,7 @@ typedef struct tagCsrRoamSession {
 	bool disable_hi_rssi;
 	bool dhcp_done;
 	uint8_t disconnect_reason;
+	uint8_t uapsd_mask;
 } tCsrRoamSession;
 
 typedef struct tagCsrRoamStruct {

+ 5 - 8
core/sme/src/csr/csr_api_roam.c

@@ -13928,6 +13928,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
 			  FL("CSR PERSONA=%d CSR CbMode %d"),
 			  pProfile->csrPersona, pSession->bssParams.cbMode);
 		csr_join_req->uapsdPerAcBitmask = pProfile->uapsd_mask;
+		pSession->uapsd_mask = pProfile->uapsd_mask;
 		status =
 			csr_get_rate_set(pMac, pProfile,
 					 (eCsrPhyMode) pProfile->phyMode,
@@ -16919,14 +16920,10 @@ csr_update_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
 			     SIR_BTK_KEY_LEN);
 	}
 #endif
-	req_buf->AcUapsd.acbe_uapsd =
-		SIR_UAPSD_GET(ACBE, mac_ctx->lim.gUapsdPerAcBitmask);
-	req_buf->AcUapsd.acbk_uapsd =
-		SIR_UAPSD_GET(ACBK, mac_ctx->lim.gUapsdPerAcBitmask);
-	req_buf->AcUapsd.acvi_uapsd =
-		SIR_UAPSD_GET(ACVI, mac_ctx->lim.gUapsdPerAcBitmask);
-	req_buf->AcUapsd.acvo_uapsd =
-		SIR_UAPSD_GET(ACVO, mac_ctx->lim.gUapsdPerAcBitmask);
+	req_buf->AcUapsd.acbe_uapsd = SIR_UAPSD_GET(ACBE, session->uapsd_mask);
+	req_buf->AcUapsd.acbk_uapsd = SIR_UAPSD_GET(ACBK, session->uapsd_mask);
+	req_buf->AcUapsd.acvi_uapsd = SIR_UAPSD_GET(ACVI, session->uapsd_mask);
+	req_buf->AcUapsd.acvo_uapsd = SIR_UAPSD_GET(ACVO, session->uapsd_mask);
 }
 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
 

+ 1 - 1
core/wma/src/wma_scan_roam.c

@@ -806,7 +806,7 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
 						roam_req->assoc_ie.length);
 	}
 
-	WMA_LOGE(FL("my_dbg: qos_caps: %d, qos_enabled: %d"),
+	WMA_LOGD(FL("qos_caps: %d, qos_enabled: %d"),
 		params->roam_offload_params.qos_caps,
 		params->roam_offload_params.qos_enabled);