|
@@ -52,11 +52,49 @@ QDF_STATUS son_ol_send_null(struct wlan_objmgr_pdev *pdev,
|
|
|
return wmi_unified_stats_request_send(wmi_handle, macaddr, ¶m);
|
|
|
}
|
|
|
|
|
|
+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, ¶m);
|
|
|
+}
|
|
|
+
|
|
|
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;
|
|
|
}
|
|
|
|