From c2cb427e7f62da8fd9b0cc064c3f8fe0c924c910 Mon Sep 17 00:00:00 2001 From: "Pamidipati, Vijay" Date: Tue, 23 May 2017 10:09:26 +0530 Subject: [PATCH] qcacmn: Print Rx Decrypt error statistics Add support to print Rx Decrypt errors as part of DP statistics Change-Id: I03f485003dd1e0d95db21cb25b2973fa26838982 CRs-Fixed: 2004658 --- dp/wifi3.0/dp_main.c | 4 ++++ dp/wifi3.0/hal_rx.h | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 5caf47e2b075..480d4b405ea0 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -2863,6 +2863,9 @@ dp_print_soc_rx_stats(struct dp_soc *soc) DP_TRACE_STATS(FATAL, "SOC Rx Stats:\n"); DP_TRACE_STATS(FATAL, "Errors:\n"); + DP_TRACE_STATS(FATAL, "Rx Decrypt Errors = %d", + (soc->stats.rx.err.rxdma_error[HAL_RXDMA_ERR_DECRYPT] + + soc->stats.rx.err.rxdma_error[HAL_RXDMA_ERR_TKIP_MIC])); DP_TRACE_STATS(FATAL, "Invalid RBM = %d", soc->stats.rx.err.invalid_rbm); DP_TRACE_STATS(FATAL, "Invalid Vdev = %d", @@ -2873,6 +2876,7 @@ dp_print_soc_rx_stats(struct dp_soc *soc) soc->stats.rx.err.rx_invalid_peer.num); DP_TRACE_STATS(FATAL, "HAL Ring Access Fail = %d", soc->stats.rx.err.hal_ring_access_fail); + for (i = 0; i < MAX_RXDMA_ERRORS; i++) { index += qdf_snprint(&rxdma_error[index], DP_RXDMA_ERR_LENGTH - index, diff --git a/dp/wifi3.0/hal_rx.h b/dp/wifi3.0/hal_rx.h index c463143b7d9e..501baf84c9cf 100644 --- a/dp/wifi3.0/hal_rx.h +++ b/dp/wifi3.0/hal_rx.h @@ -1684,6 +1684,47 @@ enum hal_reo_error_code { HAL_REO_ERR_QUEUE_DESC_BLOCKED_SET }; +/** + * enum hal_rxdma_error_code: Code describing the type of RxDMA error detected + * + * @HAL_RXDMA_ERR_OVERFLOW: MPDU frame is not complete due to a FIFO overflow + * @ HAL_RXDMA_ERR_OVERFLOW : MPDU frame is not complete due to a FIFO + * overflow + * @ HAL_RXDMA_ERR_MPDU_LENGTH : MPDU frame is not complete due to receiving + * incomplete + * MPDU from the PHY + * @ HAL_RXDMA_ERR_FCS : FCS check on the MPDU frame failed + * @ HAL_RXDMA_ERR_DECRYPT : Decryption error + * @ HAL_RXDMA_ERR_TKIP_MIC : TKIP MIC error + * @ HAL_RXDMA_ERR_UNECRYPTED : Received a frame that was expected to be + * encrypted but wasn’t + * @ HAL_RXDMA_ERR_MSDU_LEN : MSDU related length error + * @ HAL_RXDMA_ERR_MSDU_LIMIT : Number of MSDUs in the MPDUs exceeded + * the max allowed + * @ HAL_RXDMA_ERR_WIFI_PARSE : wifi parsing error + * @ HAL_RXDMA_ERR_AMSDU_PARSE : Amsdu parsing error + * @ HAL_RXDMA_ERR_SA_TIMEOUT : Source Address search timeout + * @ HAL_RXDMA_ERR_DA_TIMEOUT : Destination Address search timeout + * @ HAL_RXDMA_ERR_FLOW_TIMEOUT : Flow Search Timeout + * @ HAL_RXDMA_ERR_FLUSH_REQUEST : RxDMA FIFO Flush request + */ +enum hal_rxdma_error_code { + HAL_RXDMA_ERR_OVERFLOW = 0, + HAL_RXDMA_ERR_MPDU_LENGTH, + HAL_RXDMA_ERR_FCS, + HAL_RXDMA_ERR_DECRYPT, + HAL_RXDMA_ERR_TKIP_MIC, + HAL_RXDMA_ERR_UNECRYPTED, + HAL_RXDMA_ERR_MSDU_LEN, + HAL_RXDMA_ERR_MSDU_LIMIT, + HAL_RXDMA_ERR_WIFI_PARSE, + HAL_RXDMA_ERR_AMSDU_PARSE, + HAL_RXDMA_ERR_SA_TIMEOUT, + HAL_RXDMA_ERR_DA_TIMEOUT, + HAL_RXDMA_ERR_FLOW_TIMEOUT, + HAL_RXDMA_ERR_FLUSH_REQUEST +}; + #define HAL_RX_REO_ERROR_GET(reo_desc) (((*(((uint32_t *) reo_desc)+ \ (REO_DESTINATION_RING_7_REO_ERROR_CODE_OFFSET >> 2))) & \ REO_DESTINATION_RING_7_REO_ERROR_CODE_MASK) >> \