diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h index 8791476318..9ed2b64e3e 100644 --- a/core/wma/inc/wma_internal.h +++ b/core/wma/inc/wma_internal.h @@ -963,6 +963,15 @@ enum tx_rate_info wma_get_ht_rate_flags(enum phy_ch_width ch_width); */ enum tx_rate_info wma_get_he_rate_flags(enum phy_ch_width ch_width); +/** + * wma_set_vht_txbf_cfg() - set VHT Tx beamforming capability to FW + * @mac: Global MAC context + * @vdev_id: VDEV id + * + * Return: None + */ +void wma_set_vht_txbf_cfg(struct mac_context *mac, uint8_t vdev_id); + int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params); /** diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index 0fb29a8908..a2eda669a0 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -886,6 +886,27 @@ void wma_set_bss_rate_flags(tp_wma_handle wma, uint8_t vdev_id, wma_cp_stats_set_rate_flag(wma, vdev_id); } +void wma_set_vht_txbf_cfg(struct mac_context *mac, uint8_t vdev_id) +{ + wmi_vdev_txbf_en txbf_en = {0}; + QDF_STATUS status; + tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA); + + if (!wma) + return; + + txbf_en.sutxbfee = mac->mlme_cfg->vht_caps.vht_cap_info.su_bformee; + txbf_en.mutxbfee = + mac->mlme_cfg->vht_caps.vht_cap_info.enable_mu_bformee; + txbf_en.sutxbfer = mac->mlme_cfg->vht_caps.vht_cap_info.su_bformer; + + status = wma_vdev_set_param(wma->wmi_handle, vdev_id, + WMI_VDEV_PARAM_TXBF, + *((A_UINT8 *)&txbf_en)); + if (QDF_IS_STATUS_ERROR(status)) + wma_err("failed to set VHT TXBF(status = %d)", status); +} + /** * wmi_unified_send_txbf() - set txbf parameter to fw * @wma: wma handle diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index c3798e809e..3f2ab7a495 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2690,6 +2690,7 @@ QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev) wma_set_vdev_mgmt_rate(wma_handle, vdev_id); if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX)) wma_set_he_txbf_cfg(mac, vdev_id); + wma_set_vht_txbf_cfg(mac, vdev_id); /* Initialize roaming offload state */ if (vdev_mlme->mgmt.generic.type == WMI_VDEV_TYPE_STA &&