qcacmn: Fetch per pkt stats from MLD peer for Link Peer

When user makes a request for stats using Link peer mac address,
then fetch per pkt stats from MLD peer for Link peer.

Change-Id: I64e0b10eaca82c87e7066d3ca1dbefad63a186a8
CRs-Fixed: 3208757
This commit is contained in:
Harsh Kumar Bijlani
2022-05-31 15:24:03 +05:30
committed by Madan Koyyalamudi
parent 816abb22a8
commit de0d00288a
2 changed files with 29 additions and 21 deletions

View File

@@ -9204,22 +9204,30 @@ static inline
void dp_get_peer_calibr_stats(struct dp_peer *peer,
struct cdp_peer_stats *peer_stats)
{
peer_stats->tx.last_per = peer->stats.tx.last_per;
struct dp_peer *tgt_peer;
tgt_peer = dp_get_tgt_peer_from_peer(peer);
if (!tgt_peer)
return;
peer_stats->tx.last_per = tgt_peer->stats.tx.last_per;
peer_stats->tx.tx_bytes_success_last =
peer->stats.tx.tx_bytes_success_last;
tgt_peer->stats.tx.tx_bytes_success_last;
peer_stats->tx.tx_data_success_last =
peer->stats.tx.tx_data_success_last;
peer_stats->tx.tx_byte_rate = peer->stats.tx.tx_byte_rate;
peer_stats->tx.tx_data_rate = peer->stats.tx.tx_data_rate;
peer_stats->tx.tx_data_ucast_last = peer->stats.tx.tx_data_ucast_last;
peer_stats->tx.tx_data_ucast_rate = peer->stats.tx.tx_data_ucast_rate;
peer_stats->tx.inactive_time = peer->stats.tx.inactive_time;
tgt_peer->stats.tx.tx_data_success_last;
peer_stats->tx.tx_byte_rate = tgt_peer->stats.tx.tx_byte_rate;
peer_stats->tx.tx_data_rate = tgt_peer->stats.tx.tx_data_rate;
peer_stats->tx.tx_data_ucast_last =
tgt_peer->stats.tx.tx_data_ucast_last;
peer_stats->tx.tx_data_ucast_rate =
tgt_peer->stats.tx.tx_data_ucast_rate;
peer_stats->tx.inactive_time = tgt_peer->stats.tx.inactive_time;
peer_stats->rx.rx_bytes_success_last =
peer->stats.rx.rx_bytes_success_last;
tgt_peer->stats.rx.rx_bytes_success_last;
peer_stats->rx.rx_data_success_last =
peer->stats.rx.rx_data_success_last;
peer_stats->rx.rx_byte_rate = peer->stats.rx.rx_byte_rate;
peer_stats->rx.rx_data_rate = peer->stats.rx.rx_data_rate;
tgt_peer->stats.rx.rx_data_success_last;
peer_stats->rx.rx_byte_rate = tgt_peer->stats.rx.rx_byte_rate;
peer_stats->rx.rx_data_rate = tgt_peer->stats.rx.rx_data_rate;
}
/**
@@ -9236,10 +9244,7 @@ void dp_get_peer_basic_stats(struct dp_peer *peer,
{
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;
@@ -9283,10 +9288,7 @@ void dp_get_peer_per_pkt_stats(struct dp_peer *peer,
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;

View File

@@ -7678,6 +7678,7 @@ QDF_STATUS dp_txrx_get_peer_per_pkt_stats_param(struct dp_peer *peer,
cdp_peer_stats_param_t *buf)
{
QDF_STATUS ret = QDF_STATUS_SUCCESS;
struct dp_peer *tgt_peer;
struct dp_txrx_peer *txrx_peer;
struct dp_peer_per_pkt_stats *peer_stats;
@@ -7694,7 +7695,12 @@ QDF_STATUS dp_txrx_get_peer_per_pkt_stats_param(struct dp_peer *peer,
buf->tx_mcast = peer_stats->tx.mcast;
break;
case cdp_peer_tx_inactive_time:
buf->tx_inactive_time = peer->stats.tx.inactive_time;
tgt_peer = dp_get_tgt_peer_from_peer(peer);
if (tgt_peer)
buf->tx_inactive_time =
tgt_peer->stats.tx.inactive_time;
else
ret = QDF_STATUS_E_FAILURE;
break;
case cdp_peer_rx_ucast:
buf->rx_ucast = peer_stats->rx.unicast;