From 1049507d236bf14491689729e53a2e188bef142c Mon Sep 17 00:00:00 2001 From: Harsh Kumar Bijlani Date: Fri, 27 May 2022 14:58:40 +0530 Subject: [PATCH] qcacmn: Get per pkt stats from MLD peer for primary link peer Add support to get per pkt stats from MLD peer for primary link peer only when user requests for link peer stats. Change-Id: I6df0daa4a175cc5869012538294ed41ae2443e48 CRs-Fixed: 3203506 --- dp/wifi3.0/dp_main.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 06314f99b3..22ad20614a 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -9223,6 +9223,27 @@ void dp_get_peer_calibr_stats(struct dp_peer *peer, * * Return: none */ +#ifdef QCA_ENHANCED_STATS_SUPPORT +static inline +void dp_get_peer_basic_stats(struct dp_peer *peer, + struct cdp_peer_stats *peer_stats) +{ + struct dp_txrx_peer *txrx_peer; + + if (dp_peer_is_primary_link_peer(peer)) + txrx_peer = dp_get_txrx_peer(peer); + else + txrx_peer = peer->txrx_peer; + if (!txrx_peer) + return; + + peer_stats->tx.comp_pkt.num += txrx_peer->comp_pkt.num; + peer_stats->tx.comp_pkt.bytes += txrx_peer->comp_pkt.bytes; + peer_stats->tx.tx_failed += txrx_peer->tx_failed; + peer_stats->rx.to_stack.num += txrx_peer->to_stack.num; + peer_stats->rx.to_stack.bytes += txrx_peer->to_stack.bytes; +} +#else static inline void dp_get_peer_basic_stats(struct dp_peer *peer, struct cdp_peer_stats *peer_stats) @@ -9239,6 +9260,7 @@ void dp_get_peer_basic_stats(struct dp_peer *peer, peer_stats->rx.to_stack.num += txrx_peer->to_stack.num; peer_stats->rx.to_stack.bytes += txrx_peer->to_stack.bytes; } +#endif /** * dp_get_peer_per_pkt_stats()- Get peer per pkt stats @@ -9247,6 +9269,25 @@ void dp_get_peer_basic_stats(struct dp_peer *peer, * * Return: none */ +#ifdef QCA_ENHANCED_STATS_SUPPORT +static inline +void dp_get_peer_per_pkt_stats(struct dp_peer *peer, + struct cdp_peer_stats *peer_stats) +{ + struct dp_txrx_peer *txrx_peer; + struct dp_peer_per_pkt_stats *per_pkt_stats; + + if (dp_peer_is_primary_link_peer(peer)) + txrx_peer = dp_get_txrx_peer(peer); + else + txrx_peer = peer->txrx_peer; + if (!txrx_peer) + return; + + per_pkt_stats = &txrx_peer->stats.per_pkt_stats; + DP_UPDATE_PER_PKT_STATS(peer_stats, per_pkt_stats); +} +#else static inline void dp_get_peer_per_pkt_stats(struct dp_peer *peer, struct cdp_peer_stats *peer_stats) @@ -9261,6 +9302,7 @@ void dp_get_peer_per_pkt_stats(struct dp_peer *peer, per_pkt_stats = &txrx_peer->stats.per_pkt_stats; DP_UPDATE_PER_PKT_STATS(peer_stats, per_pkt_stats); } +#endif /** * dp_get_peer_extd_stats()- Get peer extd stats