Explorar el Código

qcacmn: EHT capability changes for D1.0

Add storage for EHT mac and phy capabilities as
per 11be D1.0 and update the EHT mac and phy capability
sizes.

Change-Id: I67224b35b701235374772e9975375e695f3ed959
CRs-Fixed: 3000166
Venkateswara Swamy Bandaru hace 3 años
padre
commit
ed74f5b410

+ 4 - 4
target_if/init_deinit/inc/service_ready_param.h

@@ -265,12 +265,12 @@ struct wlan_psoc_host_mac_phy_caps_ext2 {
 	uint32_t phy_id;
 	uint64_t wireless_modes_ext;
 #ifdef WLAN_FEATURE_11BE
-	uint32_t eht_cap_info_2G[PSOC_HOST_MAX_MAC_SIZE];
+	uint32_t eht_cap_info_2G[PSOC_HOST_MAX_EHT_MAC_SIZE];
 	uint32_t eht_supp_mcs_2G;
-	uint32_t eht_cap_info_5G[PSOC_HOST_MAX_MAC_SIZE];
+	uint32_t eht_cap_info_5G[PSOC_HOST_MAX_EHT_MAC_SIZE];
 	uint32_t eht_supp_mcs_5G;
-	uint32_t eht_cap_phy_info_2G[PSOC_HOST_MAX_PHY_SIZE];
-	uint32_t eht_cap_phy_info_5G[PSOC_HOST_MAX_PHY_SIZE];
+	uint32_t eht_cap_phy_info_2G[PSOC_HOST_MAX_EHT_PHY_SIZE];
+	uint32_t eht_cap_phy_info_5G[PSOC_HOST_MAX_EHT_PHY_SIZE];
 	uint32_t eht_cap_info_internal;
 #endif
 };

+ 3 - 4
umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h

@@ -1418,10 +1418,9 @@ struct wlan_ie_hecaps {
 } qdf_packed;
 
 #ifdef WLAN_FEATURE_11BE
-#define WLAN_EHT_PHYCAP_160_SUPPORT BIT(2)
-#define WLAN_EHT_PHYCAP_320_SUPPORT BIT(3)
-#define WLAN_EHT_MACCAP_LEN 6
-#define WLAN_EHT_PHYCAP_LEN 11
+#define WLAN_EHT_MACCAP_LEN 2
+#define WLAN_EHT_PHYCAP_LEN 8
+
 #define WLAN_EHT_MAX_MCS_MAPS 3
 /**
  * struct wlan_ie_ehtcaps - EHT capabilities

+ 4 - 0
umac/cmn_services/inc/wlan_cmn.h

@@ -686,5 +686,9 @@ struct wlan_ssid {
 #define PSOC_MAX_PHY_REG_CAP (3)
 #define PSOC_MAX_CHAINMASK_TABLES (5)
 
+#ifdef WLAN_FEATURE_11BE
+#define PSOC_HOST_MAX_EHT_MAC_SIZE 1
+#define PSOC_HOST_MAX_EHT_PHY_SIZE 2
+#endif
 
 #endif /* _WLAN_OBJMGR_CMN_H_*/

+ 101 - 0
umac/mlme/include/wlan_vdev_mlme.h

@@ -161,6 +161,104 @@ struct vdev_mlme_he_ops_info {
 };
 
 #ifdef WLAN_FEATURE_11BE
+
+/**
+ * struct vdev_mlme_eht_caps_info - vdev mlme EHT capability information
+ * @eht_maccap_nseppriaccess_support : NSEP Priority Access Supported
+ * @eht_maccap_ehtomctrl_support     : EHT OM Control Support
+ * @eht_maccap_trigtxop_support      : Triggered TXOP Sharing Support
+ * @eht_phycap_reserved              : Reserved
+ * @eht_phycap_320mhzin6ghz          : Support For 320 MHz In 6 GHz
+ * @eht_phycap_242tonerubwlt20mhz    : Support for 242-tone RU In BW Wider Than
+ *                                     20 MHz
+ * @eht_phycap_ndp4xehtltfand320nsgi : NDP With 4. EHT-LTF And 3.2 .s GI
+ * @eht_phycap_partialbwulmu         : Partial Bandwidth UL MU-MIMO
+ * @eht_phycap_subfmr                : SU Beamformer
+ * @eht_phycap_subfme                : SU Beamformee
+ * @eht_phycap_bfmesslt80mhz         : Beamformee SS (<= 80 MHz)
+ * @eht_phycap_bfmess160mhz          : Beamformee SS (= 160 MHz)
+ * @eht_phycap_bfmess320mhz          : Beamformee SS (= 320 MHz)
+ * @eht_phycap_numsoundlt80mhz       : Number Of Sounding Dimensions (<=80 MHz)
+ * @eht_phycap_numsound160mhz        : Number Of Sounding Dimensions (=160 MHz)
+ * @eht_phycap_numsound320mhz        : Number Of Sounding Dimensions (=320 MHz)
+ * @eht_phycap_ng16sufb              : Ng = 16 SU Feedback
+ * @eht_phycap_ng16mufb              : Ng = 16 MU Feedback
+ * @eht_phycap_codbk42sufb           : Codebook Size {4,2} SU Feedback
+ * @eht_phycap_codbk75mufb           : Codebook Size {4,2} MU Feedback
+ * @eht_phycap_trigsubffb            : Triggered SU Beamforming Feedback
+ * @eht_phycap_trigmubfpartbwfb      : Triggered MU Beamforming Partial B
+ *                                     Feedback
+ * @eht_phycap_trigcqifb             : Triggered CQI Feedback
+ * @eht_phycap_partbwdlmumimo        : Partial Bandwidth DL MU-MIMO
+ * @eht_phycap_psrsr                 : PSR-Based SR Support
+ * @eht_phycap_pwrbstfactor          : Power Boost Factor Support
+ * @eht_phycap_4xehtltfand800nsgi    : EHT MU PPDU With 4xEHT-LTF And 0.8 .s GI
+ * @eht_phycap_maxnc                 : Max Nc
+ * @eht_phycap_nontrigcqifb          : Non-Triggered CQI Feedback
+ * @eht_phycap_tx1024and4096qamls242toneru : Tx 1024-QAM And 4096-QAM <
+ *                                           242-tone RU Support
+ * @eht_phycap_rx1024and4096qamls242toneru : Rx 1024-QAM And 4096-QAM <
+ *                                           242-tone RU Support
+ * @eht_phycap_ppethrespresent       : PPE Thresholds Present
+ * @eht_phycap_cmnnompktpad          : Common Nominal Packet Padding
+ * @eht_phycap_maxnumehtltf          : Maximum Number Of Supported EHT-LTFs
+ * @eht_phycap_supmcs15              : Support of MCS 15
+ * @eht_phycap_ehtdupin6ghz          : Support Of EHT DUP In 6 GHz
+ * @eht_phycap_20mhzopstarxndpwiderbw : Support For 20 MHz Operating STA
+ *                                      Receiving NDP With Wider Bandwidth
+ * @eht_phycap_nonofdmaulmumimolt80mhz : Non-OFDMA UL MU-MIMO (BW <= 80 MHz)
+ * @eht_phycap_nonofdmaulmumimo160mhz : Non-OFDMA UL MU-MIMO (BW = 160 MHz)
+ * @eht_phycap_nonofdmaulmumimo320mhz : Non-OFDMA UL MU-MIMO (BW = 320 MHz)
+ * @eht_phycap_mubfmrlt80mhz         : MU Beamformer (BW <= 80 MHz)
+ * @eht_phycap_mubfmr160mhz          : MU Beamformer (BW = 160 MHz)
+ * @eht_phycap_mubfmr320mhz          : MU Beamformer (BW = 320 MHz)
+ */
+struct vdev_mlme_eht_caps_info {
+	uint32_t eht_maccap_nseppriaccess_support :1,
+		 eht_maccap_ehtomctrl_support     :1,
+		 eht_maccap_trigtxop_support      :1;
+	uint32_t eht_phycap_reserved                    :1,
+		 eht_phycap_320mhzin6ghz                :1,
+		 eht_phycap_242tonerubwlt20mhz          :1,
+		 eht_phycap_ndp4xehtltfand320nsgi       :1,
+		 eht_phycap_partialbwulmu               :1,
+		 eht_phycap_subfmr                      :1,
+		 eht_phycap_subfme                      :1,
+		 eht_phycap_bfmesslt80mhz               :3,
+		 eht_phycap_bfmess160mhz                :3,
+		 eht_phycap_bfmess320mhz                :3,
+		 eht_phycap_numsoundlt80mhz             :3,
+		 eht_phycap_numsound160mhz              :3,
+		 eht_phycap_numsound320mhz              :3,
+		 eht_phycap_ng16sufb                    :1,
+		 eht_phycap_ng16mufb                    :1,
+		 eht_phycap_codbk42sufb                 :1,
+		 eht_phycap_codbk75mufb                 :1,
+		 eht_phycap_trigsubffb                  :1,
+		 eht_phycap_trigmubfpartbwfb            :1,
+		 eht_phycap_trigcqifb                   :1;
+	uint32_t eht_phycap_partbwdlmumimo              :1,
+		 eht_phycap_psrsr                       :1,
+		 eht_phycap_pwrbstfactor                :1,
+		 eht_phycap_4xehtltfand800nsgi          :1,
+		 eht_phycap_maxnc                       :4,
+		 eht_phycap_nontrigcqifb                :1,
+		 eht_phycap_tx1024and4096qamls242toneru :1,
+		 eht_phycap_rx1024and4096qamls242toneru :1,
+		 eht_phycap_ppethrespresent             :1,
+		 eht_phycap_cmnnompktpad                :2,
+		 eht_phycap_maxnumehtltf                :5,
+		 eht_phycap_supmcs15                    :4,
+		 eht_phycap_ehtdupin6ghz                :1,
+		 eht_phycap_20mhzopstarxndpwiderbw      :1,
+		 eht_phycap_nonofdmaulmumimolt80mhz     :1,
+		 eht_phycap_nonofdmaulmumimo160mhz      :1,
+		 eht_phycap_nonofdmaulmumimo320mhz      :1,
+		 eht_phycap_mubfmrlt80mhz               :1,
+		 eht_phycap_mubfmr160mhz                :1,
+		 eht_phycap_mubfmr320mhz                :1;
+};
+
 /**
  * struct vdev_mlme_eht_ops_info - vdev mlme EHTOPS information
  * @eht_ops: eht ops
@@ -179,6 +277,8 @@ struct vdev_mlme_eht_ops_info {
  * @vht_info: vht information
  * @ht_info: ht capabilities information
  * @he_ops_info: he ops information
+ * @eht_cap_info: EHT capability information
+ * @eht_ops_info: EHT operation information
  * @bss_color: 11ax HE BSS Color information
  */
 struct vdev_mlme_proto {
@@ -189,6 +289,7 @@ struct vdev_mlme_proto {
 	struct vdev_mlme_ht_info ht_info;
 	struct vdev_mlme_he_ops_info he_ops_info;
 #ifdef WLAN_FEATURE_11BE
+	struct vdev_mlme_eht_caps_info eht_cap_info;
 	struct vdev_mlme_eht_ops_info eht_ops_info;
 #endif
 	struct vdev_mlme_proto_bss_color bss_color;

+ 3 - 5
wmi/src/wmi_unified_tlv.c

@@ -11677,23 +11677,21 @@ static void extract_mac_phy_cap_ehtcaps(
 		     &mac_phy_caps->eht_cap_phy_info_5G,
 		     sizeof(param->eht_cap_phy_info_5G));
 
-	wmi_debug("EHT mac caps: mac cap_info_2G %x %x, mac cap_info_5G %x %x, supp_mcs_2G %x, supp_mcs_5G %x, info_internal %x",
+	wmi_debug("EHT mac caps: mac cap_info_2G %x, mac cap_info_5G %x, supp_mcs_2G %x, supp_mcs_5G %x, info_internal %x",
 		  mac_phy_caps->eht_cap_mac_info_2G[0],
-		  mac_phy_caps->eht_cap_mac_info_2G[1],
 		  mac_phy_caps->eht_cap_mac_info_5G[0],
-		  mac_phy_caps->eht_cap_mac_info_5G[1],
 		  mac_phy_caps->eht_supp_mcs_2G, mac_phy_caps->eht_supp_mcs_5G,
 		  mac_phy_caps->eht_cap_info_internal);
 
 	wmi_nofl_debug("EHT phy caps: ");
 
 	wmi_nofl_debug("2G: ");
-	for (i = 0; i < PSOC_HOST_MAX_PHY_SIZE; i++) {
+	for (i = 0; i < PSOC_HOST_MAX_EHT_PHY_SIZE; i++) {
 		wmi_nofl_debug("index %d value %d",
 			       i, param->eht_cap_phy_info_2G[i]);
 	}
 	wmi_nofl_debug("5G: ");
-	for (i = 0; i < PSOC_HOST_MAX_PHY_SIZE; i++) {
+	for (i = 0; i < PSOC_HOST_MAX_EHT_PHY_SIZE; i++) {
 		wmi_nofl_debug("index %d value %d",
 			       i, param->eht_cap_phy_info_5G[i]);
 	}