Forráskód Böngészése

qcacld-3.0: Update HE bw after extracting EHT opertion IE

For 11BE mode, channel width information may be set in EHT
operation IE, and 11BE sta should populate its channel width
information in HE capabilities IE after extracting EHT operation IE.

Otherwise 11BE sta can't sends correct bandwidth information
to 11BE AP.

Change-Id: I08b4b61ad21017fde52d504f6d3e5c9b1e948950
CRs-Fixed: 3246725
Bing Sun 2 éve
szülő
commit
6d47c060d1

+ 12 - 10
core/mac/src/pe/lim/lim_assoc_utils.c

@@ -3623,13 +3623,13 @@ QDF_STATUS lim_sta_send_add_bss(struct mac_context *mac, tpSirAssocRsp pAssocRsp
 		 * width has been taken into account for calculating
 		 * pe_session->ch_width
 		 */
-		if (chan_width_support &&
-		    ((pAssocRsp->HTCaps.present &&
-		      pAssocRsp->HTCaps.supportedChannelWidthSet) ||
-		     (pBeaconStruct->HTCaps.present &&
-		      pBeaconStruct->HTCaps.supportedChannelWidthSet) ||
-		     lim_is_eht_connection_op_info_present(pe_session,
-							   pAssocRsp))) {
+		if ((chan_width_support &&
+		     ((pAssocRsp->HTCaps.present &&
+		       pAssocRsp->HTCaps.supportedChannelWidthSet) ||
+		      (pBeaconStruct->HTCaps.present &&
+		       pBeaconStruct->HTCaps.supportedChannelWidthSet))) ||
+		    lim_is_eht_connection_op_info_present(pe_session,
+							  pAssocRsp)) {
 			pAddBssParams->ch_width =
 					pe_session->ch_width;
 			pAddBssParams->staContext.ch_width =
@@ -3877,9 +3877,11 @@ QDF_STATUS lim_sta_send_add_bss(struct mac_context *mac, tpSirAssocRsp pAssocRsp
 			lim_update_he_stbc_capable(&pAddBssParams->staContext);
 			lim_update_he_mcs_12_13(&pAddBssParams->staContext,
 						sta);
-			lim_update_he_6gop_assoc_resp(pAddBssParams,
-						      &pAssocRsp->he_op,
-						      pe_session);
+			if (!lim_is_eht_connection_op_info_present(pe_session,
+								   pAssocRsp))
+				lim_update_he_6gop_assoc_resp(pAddBssParams,
+							      &pAssocRsp->he_op,
+							      pe_session);
 			lim_update_he_6ghz_band_caps(mac,
 						&pAssocRsp->he_6ghz_band_cap,
 						&pAddBssParams->staContext);

+ 1 - 1
core/mac/src/pe/lim/lim_prop_exts_utils.c

@@ -799,8 +799,8 @@ void lim_extract_ap_capability(struct mac_context *mac_ctx, uint8_t *p_ie,
 	lim_check_is_he_mcs_valid(session, beacon_struct);
 	lim_check_peer_ldpc_and_update(session, beacon_struct);
 	lim_extract_he_op(session, beacon_struct);
-	lim_update_he_bw_cap_mcs(session, beacon_struct);
 	lim_extract_eht_op(session, beacon_struct);
+	lim_update_he_bw_cap_mcs(session, beacon_struct);
 	lim_update_eht_bw_cap_mcs(session, beacon_struct);
 	/* Extract the UAPSD flag from WMM Parameter element */
 	if (beacon_struct->wmeEdcaPresent)

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

@@ -1025,6 +1025,11 @@ populate_dot11f_ht_caps(struct mac_context *mac,
 				&ch_params);
 			if (ch_params.ch_width != CH_WIDTH_40MHZ)
 				pDot11f->supportedChannelWidthSet = 0;
+		} else if (LIM_IS_STA_ROLE(pe_session)) {
+			if (pe_session->ch_width == CH_WIDTH_20MHZ)
+				pDot11f->supportedChannelWidthSet = 0;
+			else
+				pDot11f->supportedChannelWidthSet = 1;
 		} else {
 			pDot11f->supportedChannelWidthSet =
 				pe_session->htSupportedChannelWidthSet;