From bcc7d05422956246eb12039a35291cd4df22bedd Mon Sep 17 00:00:00 2001 From: Nandha Kishore Easwaran Date: Thu, 11 Mar 2021 11:26:15 +0530 Subject: [PATCH] qcacmn: Record PN and OOR error per peer Record PN error and OOR error per peer and display the error count in fc_peer_stats. Change-Id: I694efbcaa280659f7a62f1343e26a196067cc524 --- dp/inc/cdp_txrx_stats_struct.h | 4 ++++ dp/wifi3.0/dp_rx_err.c | 11 +++++++++++ dp/wifi3.0/dp_stats.c | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index 95a1c80fa1..2ea27ddbf7 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -1048,6 +1048,8 @@ struct cdp_tx_stats { * @mic_err: Rx MIC errors CCMP * @decrypt_err: Rx Decryption Errors CRC * @fcserr: rx MIC check failed (CCMP) + * @pn_err: pn check failed + * @oor_err: Rx OOR errors * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count * @reception_type[MAX_RECEPTION_TYPES]: Reception type os packets * @mcs_count[MAX_MCS]: mcs count @@ -1118,6 +1120,8 @@ struct cdp_rx_stats { uint32_t mic_err; uint32_t decrypt_err; uint32_t fcserr; + uint32_t pn_err; + uint32_t oor_err; } err; uint32_t wme_ac_type[WME_AC_MAX]; diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index 8d0c9d7045..ee999a8ae6 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -2239,6 +2239,9 @@ done: peer_id, tid); break; case HAL_REO_ERR_REGULAR_FRAME_OOR: + if (peer) + DP_STATS_INC(peer, + rx.err.oor_err, 1); if (hal_rx_msdu_end_first_msdu_get(soc->hal_soc, rx_tlv_hdr)) { peer_id = @@ -2265,6 +2268,14 @@ done: qdf_nbuf_free(nbuf); break; + case HAL_REO_ERR_PN_CHECK_FAILED: + case HAL_REO_ERR_PN_ERROR_HANDLING_FLAG_SET: + if (peer) + DP_STATS_INC(peer, + rx.err.pn_err, 1); + qdf_nbuf_free(nbuf); + break; + default: dp_info_rl("Got pkt with REO ERROR: %d", wbm_err_info.reo_err_code); diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 1c76599dc3..9d0a472454 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -5779,8 +5779,12 @@ void dp_print_peer_stats(struct dp_peer *peer) peer->stats.rx.raw.bytes); DP_PRINT_STATS("Errors: MIC Errors = %d", peer->stats.rx.err.mic_err); - DP_PRINT_STATS("Erros: Decryption Errors = %d", + DP_PRINT_STATS("Errors: Decryption Errors = %d", peer->stats.rx.err.decrypt_err); + DP_PRINT_STATS("Errors: PN Errors = %d", + peer->stats.rx.err.pn_err); + DP_PRINT_STATS("Errors: OOR Errors = %d", + peer->stats.rx.err.oor_err); DP_PRINT_STATS("Msdu's Received As Part of Ampdu = %d", peer->stats.rx.non_ampdu_cnt); DP_PRINT_STATS("Msdu's Recived As Ampdu = %d",