diff --git a/target_if/init_deinit/inc/service_ready_param.h b/target_if/init_deinit/inc/service_ready_param.h index 54ab709a31..de861d69be 100644 --- a/target_if/init_deinit/inc/service_ready_param.h +++ b/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 }; diff --git a/umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h b/umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h index 832034a98a..351eeaae2f 100644 --- a/umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h +++ b/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 diff --git a/umac/cmn_services/inc/wlan_cmn.h b/umac/cmn_services/inc/wlan_cmn.h index fc6b1533e6..6a9584967b 100644 --- a/umac/cmn_services/inc/wlan_cmn.h +++ b/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_*/ diff --git a/umac/mlme/include/wlan_vdev_mlme.h b/umac/mlme/include/wlan_vdev_mlme.h index cc83e5c0ef..2ad4f3c41b 100644 --- a/umac/mlme/include/wlan_vdev_mlme.h +++ b/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; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 06845e60ce..d920cecf2c 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/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]); }