qcacmn: Handle vdev_id as parameter for txrx stats handler
The datapath vdev handle is not to be used outside
datapath layer. So the cdp api for getting txrx stats
will pass vdev_id instead of the vdev handle.
Pass vdev id instead of vdev handle for the cdp api
used to get txrx stats. Use the vdev_id to retrieve
the corresponding vdev handle in the txrx stats handler.
CRs-Fixed: 2560364
Change-Id: I57b6c6b232d122583e85929fa972d68bc54e84e0
diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h
index 94c43b5..32aa1d6 100644
--- a/dp/inc/cdp_txrx_cmn.h
+++ b/dp/inc/cdp_txrx_cmn.h
@@ -1688,14 +1688,14 @@
/**
* cdp_txrx_stats_request(): function to map to host and firmware statistics
* @soc: soc handle
- * @vdev: virtual device
+ * @vdev_id: virtual device ID
* @req: stats request container
*
* return: status
*/
static inline
-int cdp_txrx_stats_request(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
- struct cdp_txrx_stats_req *req)
+int cdp_txrx_stats_request(ol_txrx_soc_handle soc, uint8_t vdev_id,
+ struct cdp_txrx_stats_req *req)
{
if (!soc || !soc->ops || !soc->ops->cmn_drv_ops || !req) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -1705,7 +1705,8 @@
}
if (soc->ops->cmn_drv_ops->txrx_stats_request)
- return soc->ops->cmn_drv_ops->txrx_stats_request(vdev, req);
+ return soc->ops->cmn_drv_ops->txrx_stats_request(soc, vdev_id,
+ req);
return 0;
}
diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h
index c6a291a..5442676 100644
--- a/dp/inc/cdp_txrx_ops.h
+++ b/dp/inc/cdp_txrx_ops.h
@@ -386,8 +386,9 @@
void (*hmmc_tid_override_en)(struct cdp_pdev *pdev, bool val);
void (*set_hmmc_tid_val)(struct cdp_pdev *pdev, uint8_t tid);
- QDF_STATUS (*txrx_stats_request)(struct cdp_vdev *vdev,
- struct cdp_txrx_stats_req *req);
+ QDF_STATUS(*txrx_stats_request)(struct cdp_soc_t *soc_handle,
+ uint8_t vdev_id,
+ struct cdp_txrx_stats_req *req);
QDF_STATUS (*display_stats)(void *psoc, uint16_t value,
enum qdf_stats_verbosity_level level);
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index e6acbf5..0bc1f5b 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -8280,20 +8280,26 @@
/**
* dp_txrx_stats_request - function to map to firmware and host stats
- * @vdev: virtual handle
+ * @soc: soc handle
+ * @vdev_id: virtual device ID
* @req: stats request
*
* Return: QDF_STATUS
*/
static
-QDF_STATUS dp_txrx_stats_request(struct cdp_vdev *vdev,
+QDF_STATUS dp_txrx_stats_request(struct cdp_soc_t *soc_handle,
+ uint8_t vdev_id,
struct cdp_txrx_stats_req *req)
{
+ struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_handle);
+ struct cdp_vdev *vdev;
int host_stats;
int fw_stats;
enum cdp_stats stats;
int num_stats;
+ vdev = dp_vdev_to_cdp_vdev(dp_get_vdev_from_soc_vdev_id_wifi3(soc,
+ vdev_id));
if (!vdev || !req) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"Invalid vdev/req instance");