diff --git a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c index c801e6836a..8f8d6347ce 100644 --- a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c +++ b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c @@ -252,6 +252,11 @@ target_if_vdev_mlme_id_2_wmi(uint32_t cfg_id) case WLAN_MLME_CFG_HE_OPS: wmi_id = wmi_vdev_param_set_heop; break; +#ifdef WLAN_FEATURE_11BE + case WLAN_MLME_CFG_EHT_OPS: + wmi_id = wmi_vdev_param_set_ehtop; +#endif + break; case WLAN_MLME_CFG_RTS_THRESHOLD: wmi_id = wmi_vdev_param_rts_threshold; break; diff --git a/umac/mlme/include/wlan_vdev_mlme.h b/umac/mlme/include/wlan_vdev_mlme.h index ae86a81b4c..cc83e5c0ef 100644 --- a/umac/mlme/include/wlan_vdev_mlme.h +++ b/umac/mlme/include/wlan_vdev_mlme.h @@ -160,6 +160,16 @@ struct vdev_mlme_he_ops_info { uint32_t he_ops; }; +#ifdef WLAN_FEATURE_11BE +/** + * struct vdev_mlme_eht_ops_info - vdev mlme EHTOPS information + * @eht_ops: eht ops + */ +struct vdev_mlme_eht_ops_info { + uint32_t eht_ops; +}; +#endif + /** * struct vdev_mlme_he_ops_info - vdev protocol structure holding information * that is used in frames @@ -178,6 +188,9 @@ struct vdev_mlme_proto { struct vdev_mlme_vht_info vht_info; struct vdev_mlme_ht_info ht_info; struct vdev_mlme_he_ops_info he_ops_info; +#ifdef WLAN_FEATURE_11BE + struct vdev_mlme_eht_ops_info eht_ops_info; +#endif struct vdev_mlme_proto_bss_color bss_color; }; diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c b/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c index 7ed68e2d05..26a7956c50 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c +++ b/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c @@ -115,6 +115,21 @@ static inline bool vdev_mgr_is_49G_5G_6G_chan_freq(uint16_t chan_freq) } #endif +#ifdef WLAN_FEATURE_11BE +static void +vdev_mgr_start_param_update_11be(struct vdev_mlme_obj *mlme_obj, + struct vdev_start_params *param) +{ + param->eht_ops = mlme_obj->proto.eht_ops_info.eht_ops; +} +#else +static void +vdev_mgr_start_param_update_11be(struct vdev_mlme_obj *mlme_obj, + struct vdev_start_params *param) +{ +} +#endif + static QDF_STATUS vdev_mgr_start_param_update( struct vdev_mlme_obj *mlme_obj, struct vdev_start_params *param) @@ -188,6 +203,8 @@ static QDF_STATUS vdev_mgr_start_param_update( param->regdomain = dfs_reg; param->he_ops = mlme_obj->proto.he_ops_info.he_ops; + vdev_mgr_start_param_update_11be(mlme_obj, param); + param->channel.chan_id = des_chan->ch_ieee; param->channel.pwr = mlme_obj->mgmt.generic.tx_power; param->channel.mhz = des_chan->ch_freq; diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h index dd51a5250b..adda4fa01a 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h +++ b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h @@ -454,6 +454,7 @@ struct vdev_scan_nac_rssi_params { * @cac_duration_ms: cac duration in milliseconds * @regdomain: Regulatory domain * @he_ops: HE ops + * @eht_ops: EHT ops * @channel_param: Channel params required by target. * @bcn_tx_rate_code: Beacon tx rate code. * @ldpc_rx_enabled: Enable/Disable LDPC RX for this vdev @@ -475,6 +476,9 @@ struct vdev_start_params { uint32_t cac_duration_ms; uint32_t regdomain; uint32_t he_ops; +#ifdef WLAN_FEATURE_11BE + uint32_t eht_ops; +#endif struct mlme_channel_param channel; enum mlme_bcn_tx_rate_code bcn_tx_rate_code; bool ldpc_rx_enabled; diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h index 8c48a7613f..a37c471c75 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h +++ b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -108,6 +108,9 @@ enum wlan_mlme_cfg_id { WLAN_MLME_CFG_RX_STREAMS, WLAN_MLME_CFG_ENABLE_DISABLE_RTT_RESPONDER_ROLE, WLAN_MLME_CFG_ENABLE_DISABLE_RTT_INITIATOR_ROLE, +#ifdef WLAN_FEATURE_11BE + WLAN_MLME_CFG_EHT_OPS, +#endif WLAN_MLME_CFG_MAX }; diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c index 1fc74d5b52..216df02736 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -215,6 +215,12 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, mlme_proto->he_ops_info.he_ops = mlme_cfg.value; is_wmi_cmd = true; break; +#ifdef WLAN_FEATURE_11BE + case WLAN_MLME_CFG_EHT_OPS: + mlme_proto->eht_ops_info.eht_ops = mlme_cfg.value; + is_wmi_cmd = true; + break; +#endif case WLAN_MLME_CFG_RTS_THRESHOLD: mlme_mgmt->generic.rts_threshold = mlme_cfg.value; is_wmi_cmd = true; @@ -488,6 +494,11 @@ void wlan_util_vdev_mlme_get_param(struct vdev_mlme_obj *vdev_mlme, case WLAN_MLME_CFG_HE_OPS: *value = mlme_proto->he_ops_info.he_ops; break; +#ifdef WLAN_FEATURE_11BE + case WLAN_MLME_CFG_EHT_OPS: + *value = mlme_proto->eht_ops_info.eht_ops; + break; +#endif case WLAN_MLME_CFG_RTS_THRESHOLD: *value = mlme_mgmt->generic.rts_threshold; break;