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 8e0ce7c36348..2db8c0ebe179 100644 --- a/umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h +++ b/umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h @@ -376,6 +376,7 @@ enum element_ie { * @WLAN_EXTN_ELEMID_HECAP: HE capabilities IE * @WLAN_EXTN_ELEMID_HEOP: HE Operation IE * @WLAN_EXTN_ELEMID_MUEDCA: MU-EDCA IE + * @WLAN_EXTN_ELEMID_HE_6G_CAP: HE 6GHz Band Capabilities IE * @WLAN_EXTN_ELEMID_SRP: spatial reuse parameter IE */ enum extn_element_ie { @@ -384,6 +385,7 @@ enum extn_element_ie { WLAN_EXTN_ELEMID_HEOP = 36, WLAN_EXTN_ELEMID_MUEDCA = 38, WLAN_EXTN_ELEMID_SRP = 39, + WLAN_EXTN_ELEMID_HE_6G_CAP = 59, WLAN_EXTN_ELEMID_ESP = 11, }; diff --git a/umac/scan/dispatcher/inc/wlan_scan_public_structs.h b/umac/scan/dispatcher/inc/wlan_scan_public_structs.h index 41ca37625ba0..45095c5b1520 100644 --- a/umac/scan/dispatcher/inc/wlan_scan_public_structs.h +++ b/umac/scan/dispatcher/inc/wlan_scan_public_structs.h @@ -148,6 +148,8 @@ struct element_info { * @cswrp: pointer to channel switch announcement wrapper ie * @widebw: pointer to wide band channel switch sub ie * @txpwrenvlp: pointer to tx power envelop sub ie + * @hecap: pointer to hecap ie + * @hecap_6g: pointer to he 6ghz cap ie * @srp: pointer to spatial reuse parameter sub extended ie * @fils_indication: pointer to FILS indication ie * @esp: pointer to ESP indication ie @@ -194,6 +196,7 @@ struct ie_list { uint8_t *secchanoff; uint8_t *mdie; uint8_t *hecap; + uint8_t *hecap_6g; uint8_t *heop; uint8_t *srp; uint8_t *fils_indication; diff --git a/umac/scan/dispatcher/inc/wlan_scan_utils_api.h b/umac/scan/dispatcher/inc/wlan_scan_utils_api.h index 579ec76bf0d0..f2ab5d307441 100644 --- a/umac/scan/dispatcher/inc/wlan_scan_utils_api.h +++ b/umac/scan/dispatcher/inc/wlan_scan_utils_api.h @@ -1400,6 +1400,19 @@ util_scan_entry_hecap(struct scan_cache_entry *scan_entry) return scan_entry->ie_list.hecap; } +/** + * util_scan_entry_he_6g_cap() - function to read he 6GHz caps vendor ie + * @scan_entry: scan entry + * + * API, function to read he 6GHz caps vendor ie + * + * Return: he caps vendorie or NULL if ie is not present + */ +static inline uint8_t* +util_scan_entry_he_6g_cap(struct scan_cache_entry *scan_entry) +{ + return scan_entry->ie_list.hecap_6g; +} /** * util_scan_entry_heop() - function to read heop vendor ie diff --git a/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/umac/scan/dispatcher/src/wlan_scan_utils_api.c index d949717ec45d..fbeec7590e1c 100644 --- a/umac/scan/dispatcher/src/wlan_scan_utils_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_utils_api.c @@ -390,6 +390,9 @@ util_scan_parse_extn_ie(struct scan_cache_entry *scan_params, case WLAN_EXTN_ELEMID_MUEDCA: scan_params->ie_list.muedca = (uint8_t *)ie; break; + case WLAN_EXTN_ELEMID_HE_6G_CAP: + scan_params->ie_list.hecap_6g = (uint8_t *)ie; + break; default: break; } diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 51889d1e5b7d..da4cda4d0ab3 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -991,6 +991,7 @@ typedef struct { * @tx_max_rate: max tx rates * @tx_mcs_set: tx mcs * @vht_capable: VHT capabalities + * @min_data_rate: Peer minimum rate * @tx_max_mcs_nss: max tx MCS and NSS * @peer_bw_rxnss_override: Peer BW RX NSS overridden or not. * @is_pmf_enabled: PMF enabled @@ -1047,6 +1048,7 @@ struct peer_assoc_params { uint32_t tx_max_rate; uint32_t tx_mcs_set; uint8_t vht_capable; + uint8_t min_data_rate; uint32_t peer_bw_rxnss_override; uint32_t tx_max_mcs_nss; uint32_t is_pmf_enabled:1, diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 247840e07aae..27c7d3fa8b8b 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -2523,6 +2523,7 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle, } /* HE Rates */ + cmd->min_data_rate = param->min_data_rate; cmd->peer_he_mcs = param->peer_he_mcs_count; buf_ptr += sizeof(wmi_vht_rate_set); WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,