diff --git a/components/mlme/core/inc/wlan_mlme_main.h b/components/mlme/core/inc/wlan_mlme_main.h index 16425739fa..6891465cbe 100644 --- a/components/mlme/core/inc/wlan_mlme_main.h +++ b/components/mlme/core/inc/wlan_mlme_main.h @@ -344,6 +344,7 @@ struct wait_for_key_timer { * @rso_cfg: per vdev RSO config to be sent to FW * @connect_info: mlme connect information * @wait_key_timer: wait key timer + * @eht_config: Eht capability configuration */ struct mlme_legacy_priv { bool chan_switch_in_progress; @@ -381,6 +382,9 @@ struct mlme_legacy_priv { #endif struct mlme_connect_info connect_info; struct wait_for_key_timer wait_key_timer; +#ifdef WLAN_FEATURE_11BE + tDot11fIEeht_cap eht_config; +#endif }; /** diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h index 0f9a084df0..5d6a58dbdc 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h @@ -3129,4 +3129,14 @@ bool wlan_mlme_is_local_tpe_pref(struct wlan_objmgr_psoc *psoc); */ bool wlan_mlme_is_data_stall_recovery_fw_supported(struct wlan_objmgr_psoc *psoc); + +/** + * mlme_cfg_get_eht_caps() - Get the EHT capability info + * @psoc: pointer to psoc object + * @eht_cap: Caps that needs to be filled. + * + * Return: QDF Status + */ +QDF_STATUS mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc, + tDot11fIEeht_cap *eht_cap); #endif /* _WLAN_MLME_API_H_ */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index d160b5dcca..30cbcbc23d 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -1066,7 +1066,7 @@ struct wlan_mlme_he_caps { */ struct wlan_mlme_eht_caps { tDot11fIEeht_cap dot11_eht_cap; - + tDot11fIEeht_cap eht_cap_orig; /* Add members to store INI configuration corresponding to 11be */ }; #endif diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index e8b2fb2eba..18b083f1ca 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -4143,4 +4143,17 @@ ucfg_mlme_is_sta_mon_conc_supported(struct wlan_objmgr_psoc *psoc) return wlan_mlme_is_sta_mon_conc_supported(psoc); } +/** + * ucfg_mlme_cfg_get_eht_caps() - Get the EHT capability info + * @psoc: pointer to psoc object + * @eht_cap: Caps that needs to be filled. + * + * Return: QDF Status + */ +static inline +QDF_STATUS ucfg_mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc, + tDot11fIEeht_cap *eht_cap) +{ + return mlme_cfg_get_eht_caps(psoc, eht_cap); +} #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c index 31c5aa3626..1fa7e06822 100644 --- a/components/mlme/dispatcher/src/wlan_mlme_api.c +++ b/components/mlme/dispatcher/src/wlan_mlme_api.c @@ -901,6 +901,15 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc, QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc, struct wma_tgt_cfg *wma_cfg) { + struct wlan_mlme_psoc_ext_obj *mlme_obj = mlme_get_psoc_ext_obj(psoc); + tDot11fIEeht_cap *eht_cap = &wma_cfg->eht_cap; + + if (!mlme_obj) + return QDF_STATUS_E_FAILURE; + + mlme_obj->cfg.eht_caps.dot11_eht_cap.present = 1; + qdf_mem_copy(&mlme_obj->cfg.eht_caps.dot11_eht_cap, eht_cap, + sizeof(tDot11fIEeht_cap)); return QDF_STATUS_SUCCESS; } #endif @@ -4731,3 +4740,19 @@ bool wlan_mlme_is_local_tpe_pref(struct wlan_objmgr_psoc *psoc) return mlme_obj->cfg.power.use_local_tpe; } + +#ifdef WLAN_FEATURE_11BE +QDF_STATUS mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc, + tDot11fIEeht_cap *eht_cap) +{ + struct wlan_mlme_psoc_ext_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_ext_obj(psoc); + if (!mlme_obj) + return QDF_STATUS_E_FAILURE; + + *eht_cap = mlme_obj->cfg.eht_caps.dot11_eht_cap; + + return QDF_STATUS_SUCCESS; +} +#endif