qcacmn: Initialization of stats in txrx_peer and monitor_peer

* Initialize stats in dp_txrx_peer and dp_monitor_peer as per
  the stats re-organization.
* Update peer calibrated stats on every timer expiry of 1 second.
* Define APIs to reset monitor_peer stats and to fetch rdkstats_ctx
  from monitor peer.
* Place check to make sure that monitor peer related APIs are
  are called only for legacy peer or MLO Link peer.
* Update peer based pktlog flag, tx and rx capture feature flags
  in monitor_peer.

Change-Id: Idadbe19e85d4a9fdf77fb6dabe0c8a4952b024b8
CRs-Fixed: 3092123
This commit is contained in:
Harsh Kumar Bijlani
2021-12-21 01:38:57 +05:30
committed by Madan Koyyalamudi
父節點 148f220408
當前提交 eee813ad02
共有 10 個文件被更改,包括 393 次插入103 次删除

查看文件

@@ -186,6 +186,28 @@ QDF_STATUS dp_mon_peer_attach(struct dp_peer *peer)
*/
QDF_STATUS dp_mon_peer_detach(struct dp_peer *peer);
/*
* dp_mon_peer_get_rdkstats_ctx() - Get rdk stats context from monitor peer
* @peer: Datapath peer handle
*
* Return: rdkstats_ctx
*/
struct cdp_peer_rate_stats_ctx *dp_mon_peer_get_rdkstats_ctx(struct dp_peer *peer);
#ifdef QCA_ENHANCED_STATS_SUPPORT
/*
* dp_mon_peer_reset_stats() - Reset monitor peer stats
* @peer: Datapath peer handle
*
* Return: none
*/
void dp_mon_peer_reset_stats(struct dp_peer *peer);
#else
static inline void dp_mon_peer_reset_stats(struct dp_peer *peer)
{
}
#endif
/*
* dp_mon_cdp_ops_register() - Register monitor cdp ops
* @soc: Datapath soc handle
@@ -435,6 +457,8 @@ struct dp_mon_ops {
QDF_STATUS (*mon_vdev_detach)(struct dp_vdev *vdev);
QDF_STATUS (*mon_peer_attach)(struct dp_peer *peer);
QDF_STATUS (*mon_peer_detach)(struct dp_peer *peer);
struct cdp_peer_rate_stats_ctx *(*mon_peer_get_rdkstats_ctx)(struct dp_peer *peer);
void (*mon_peer_reset_stats)(struct dp_peer *peer);
QDF_STATUS (*mon_config_debug_sniffer)(struct dp_pdev *pdev, int val);
void (*mon_flush_rings)(struct dp_soc *soc);
#if !defined(DISABLE_MON_CONFIG)
@@ -1616,6 +1640,56 @@ static inline QDF_STATUS dp_monitor_peer_detach(struct dp_soc *soc,
return monitor_ops->mon_peer_detach(peer);
}
/*
* dp_monitor_peer_get_rdkstats_ctx() - Get RDK stats context from monitor peer
* @soc: Datapath soc handle
* @peer: Datapath peer handle
*
* Return: RDK stats context
*/
static inline struct cdp_peer_rate_stats_ctx*
dp_monitor_peer_get_rdkstats_ctx(struct dp_soc *soc, struct dp_peer *peer)
{
struct dp_mon_ops *monitor_ops;
struct dp_mon_soc *mon_soc = soc->monitor_soc;
if (!mon_soc)
return NULL;
monitor_ops = mon_soc->mon_ops;
if (!monitor_ops || !monitor_ops->mon_peer_get_rdkstats_ctx) {
dp_mon_debug("callback not registered");
return NULL;
}
return monitor_ops->mon_peer_get_rdkstats_ctx(peer);
}
/*
* dp_monitor_peer_reset_stats() - Reset monitor peer stats
* @soc: Datapath soc handle
* @peer: Datapath peer handle
*
* Return: none
*/
static inline void dp_monitor_peer_reset_stats(struct dp_soc *soc,
struct dp_peer *peer)
{
struct dp_mon_ops *monitor_ops;
struct dp_mon_soc *mon_soc = soc->monitor_soc;
if (!mon_soc)
return;
monitor_ops = mon_soc->mon_ops;
if (!monitor_ops || !monitor_ops->mon_peer_reset_stats) {
dp_mon_debug("callback not registered");
return;
}
monitor_ops->mon_peer_reset_stats(peer);
}
/*
* dp_monitor_pdev_init() - Monitor pdev init
* @pdev: point to pdev