Browse Source

qcacmn: Add peer ext stats enable/disable tx ops

Add function to send peer extended stats enable/disable
command to target.

Change-Id: I82e1a96090f0984f6b6864dbeed9120f3b2ba70a
Jeevan Kukkalli 4 years ago
parent
commit
e1eacc4734
1 changed files with 38 additions and 0 deletions
  1. 38 0
      target_if/son/src/target_if_son.c

+ 38 - 0
target_if/son/src/target_if_son.c

@@ -52,11 +52,49 @@ QDF_STATUS son_ol_send_null(struct wlan_objmgr_pdev *pdev,
 	return wmi_unified_stats_request_send(wmi_handle, macaddr, &param);
 }
 
+QDF_STATUS son_ol_peer_ext_stats_enable(struct wlan_objmgr_pdev *pdev,
+					uint8_t *peer_addr,
+					struct wlan_objmgr_vdev *vdev,
+					uint32_t stats_count, uint32_t enable)
+{
+	struct peer_set_params param = {0};
+	struct wlan_objmgr_psoc *psoc = NULL;
+	struct target_psoc_info *tgt_hdl;
+	target_resource_config *tgt_cfg;
+	wmi_unified_t wmi_handle;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	if (!psoc)
+		return QDF_STATUS_E_INVAL;
+
+	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
+	if (!tgt_hdl)
+		return QDF_STATUS_E_INVAL;
+
+	tgt_cfg = target_psoc_get_wlan_res_cfg(tgt_hdl);
+	if (!tgt_cfg)
+		return QDF_STATUS_E_INVAL;
+
+	if (enable && stats_count >= tgt_cfg->max_peer_ext_stats)
+		return QDF_STATUS_E_NOMEM;
+
+	wmi_handle = get_wmi_unified_hdl_from_pdev(pdev);
+	if (!wmi_handle)
+		return QDF_STATUS_E_INVAL;
+
+	param.param_id = WMI_HOST_PEER_EXT_STATS_ENABLE;
+	param.vdev_id = wlan_vdev_get_id(vdev);
+	param.param_value = enable;
+
+	return wmi_set_peer_param_send(wmi_handle, peer_addr, &param);
+}
+
 void target_if_son_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
 {
 	/* wlan son related function handler */
 	tx_ops->son_tx_ops.son_send_null = son_ol_send_null;
 	tx_ops->son_tx_ops.get_peer_rate = son_ol_get_peer_rate;
+	tx_ops->son_tx_ops.peer_ext_stats_enable = son_ol_peer_ext_stats_enable;
 	return;
 }