Browse Source

qcacld-3.0: Send VHT TXBF caps after vdev start

After creating the vdev, send the VHT beamforming capabalities.

Change-Id: I9c989a51dab4e239b31d0e8e25f5cf471e6aa0a6
CRs-fixed: 2902912
Lincoln Tran 4 years ago
parent
commit
ab9679a5eb
3 changed files with 31 additions and 0 deletions
  1. 9 0
      core/wma/inc/wma_internal.h
  2. 21 0
      core/wma/src/wma_data.c
  3. 1 0
      core/wma/src/wma_dev_if.c

+ 9 - 0
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);
 
 /**

+ 21 - 0
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

+ 1 - 0
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 &&