ソースを参照

qcacld-3.0: Update EHT IEs handling as per new definitions

EHT capabilities and EHT operation IE definitions are updated as per
new draft version D1.5. Update corresponding IE handling as per new
definitions.

Change-Id: I16b8c578e28c8d9fd24383879291e6e976da2efa
CRs-Fixed: 3197353
Deeksha Gupta 2 年 前
コミット
56108bc0f0

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

@@ -813,7 +813,7 @@ lim_update_sta_vdev_punc(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
 
 	des_chan = wlan_vdev_mlme_get_des_chan(vdev);
 	des_chan->puncture_bitmap =
-		*(uint16_t *)assoc_resp->eht_op.disable_sub_chan_bitmap;
+		*(uint16_t *)assoc_resp->eht_op.disabled_sub_chan_bitmap;
 	pe_debug("sta vdev %d puncture %d", vdev_id, des_chan->puncture_bitmap);
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
 }

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

@@ -8631,6 +8631,8 @@ void lim_set_eht_caps(struct mac_context *mac, struct pe_session *session,
 			dot11_cap.scs_traffic_desc;
 		eht_cap->max_mpdu_len =
 			dot11_cap.max_mpdu_len;
+		eht_cap->max_a_mpdu_len_exponent_ext =
+			dot11_cap.max_a_mpdu_len_exponent_ext;
 		eht_cap->support_320mhz_6ghz = dot11_cap.support_320mhz_6ghz;
 		eht_cap->ru_242tone_wt_20mhz = dot11_cap.ru_242tone_wt_20mhz;
 		eht_cap->ndp_4x_eht_ltf_3dot2_us_gi =
@@ -10128,9 +10130,9 @@ static void lim_update_ap_puncture(struct pe_session *session,
 				   struct ch_params *ch_params)
 {
 	if (ch_params->reg_punc_bitmap) {
-		*(uint16_t *)session->eht_op.disable_sub_chan_bitmap =
+		*(uint16_t *)session->eht_op.disabled_sub_chan_bitmap =
 					ch_params->reg_punc_bitmap;
-		session->eht_op.disable_sub_chan_bitmap_present = true;
+		session->eht_op.disabled_sub_chan_bitmap_present = true;
 		pe_debug("vdev %d, puncture %d", session->vdev_id,
 			 ch_params->reg_punc_bitmap);
 	}

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

@@ -7222,6 +7222,15 @@ enum EHT_PER_BW_TXRX_MCS_NSS_MAP_IDX {
 				      EHTCAP_MAC_MAX_MPDU_LEN_IDX, \
 				      EHTCAP_MAC_MAX_MPDU_LEN_BITS, value)
 
+#define EHTCAP_MAC_MAX_A_MPDU_LEN_EXPONENT_EXT_GET_FROM_IE(__eht_cap_mac) \
+			ehtcap_ie_get(__eht_cap_mac[EHTCAP_MACBYTE_IDX0], \
+				      EHTCAP_MAC_MAX_A_MPDU_LEN_IDX, \
+				      EHTCAP_MAC_MAX_A_MPDU_LEN_BITS)
+#define EHTCAP_MAC_MAX_A_MPDU_LEN_EXPONENT_EXT_SET_TO_IE(__eht_cap_mac, value) \
+			ehtcap_ie_set(&__eht_cap_mac[EHTCAP_MACBYTE_IDX0], \
+				      EHTCAP_MAC_MAX_A_MPDU_LEN_IDX, \
+				      EHTCAP_MAC_MAX_A_MPDU_LEN_BITS, value)
+
 /* byte 0 */
 #define EHTCAP_PHY_320MHZIN6GHZ_GET_FROM_IE(__eht_cap_phy) \
 			ehtcap_ie_get(__eht_cap_phy[EHTCAP_PHYBYTE_IDX0], \
@@ -7664,6 +7673,10 @@ QDF_STATUS lim_ieee80211_unpack_ehtcap(const uint8_t *eht_cap_ie,
 	dot11f_eht_cap->max_mpdu_len =
 		  EHTCAP_MAC_MAX_MPDU_LEN_GET_FROM_IE(ehtcap->eht_mac_cap);
 
+	dot11f_eht_cap->max_a_mpdu_len_exponent_ext =
+		  EHTCAP_MAC_MAX_A_MPDU_LEN_EXPONENT_EXT_GET_FROM_IE(
+				ehtcap->eht_mac_cap);
+
 	dot11f_eht_cap->support_320mhz_6ghz =
 			EHTCAP_PHY_320MHZIN6GHZ_GET_FROM_IE(
 				ehtcap->eht_phy_cap.phy_cap_bytes);
@@ -8073,6 +8086,10 @@ void lim_ieee80211_pack_ehtcap(uint8_t *ie, tDot11fIEeht_cap dot11f_eht_cap,
 	val = dot11f_eht_cap.max_mpdu_len;
 	EHTCAP_MAC_MAX_MPDU_LEN_SET_TO_IE(ehtcap->eht_mac_cap, val);
 
+	val = dot11f_eht_cap.max_a_mpdu_len_exponent_ext;
+	EHTCAP_MAC_MAX_A_MPDU_LEN_EXPONENT_EXT_SET_TO_IE(ehtcap->eht_mac_cap,
+							 val);
+
 	chwidth_320 = dot11f_eht_cap.support_320mhz_6ghz;
 	EHTCAP_PHY_320MHZIN6GHZ_SET_TO_IE(ehtcap->eht_phy_cap.phy_cap_bytes,
 					  chwidth_320);

+ 2 - 0
core/wma/src/wma_eht.c

@@ -488,6 +488,8 @@ void wma_print_eht_cap(tDot11fIEeht_cap *eht_cap)
 		       eht_cap->scs_traffic_desc);
 	wma_nofl_debug("\tMaximum MPDU Length: 0x%01x",
 		       eht_cap->max_mpdu_len);
+	wma_nofl_debug("\tMaximum A-MPDU Length Exponent Extension: 0x%01x",
+		       eht_cap->max_a_mpdu_len_exponent_ext);
 
 	/* EHT PHY Capabilities */
 	wma_nofl_debug("\t320 MHz In 6 GHz: 0x%01x",