From 33bf405da4fc0ea6ad8084053f3c54630132685e Mon Sep 17 00:00:00 2001 From: Tiger Yu Date: Tue, 31 Mar 2020 10:23:10 +0800 Subject: [PATCH] qcacmn: Use dp_info_rl instead of QDF_TRACE to avoid aggressive logging There might be aggressive error logging in the dmesg if wbm_desc_rel_ring is hang. So use the dp_info_rl instead of QDF_TRACE to reduce aggressive logging to avaoid spin lock huge delay when processing the reo_exception_ring. Change-Id: I4622f28cd6d8771cf27643a867892b62860d1ddc CRs-Fixed: 2648149 --- dp/wifi3.0/dp_rx_err.c | 18 ++++++++++++------ dp/wifi3.0/dp_stats.c | 5 +++++ dp/wifi3.0/dp_types.h | 2 ++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index cd4633a537..5a9f78cccf 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -201,12 +201,18 @@ dp_rx_link_desc_return_by_addr(struct dp_soc *soc, status = QDF_STATUS_SUCCESS; } else { struct hal_srng *srng = (struct hal_srng *)wbm_rel_srng; - QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, - FL("WBM Release Ring (Id %d) Full"), srng->ring_id); - QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, - "HP 0x%x Reap HP 0x%x TP 0x%x Cached TP 0x%x", - *srng->u.src_ring.hp_addr, srng->u.src_ring.reap_hp, - *srng->u.src_ring.tp_addr, srng->u.src_ring.cached_tp); + + DP_STATS_INC(soc, rx.err.hal_ring_access_full_fail, 1); + + dp_info_rl("WBM Release Ring (Id %d) Full(Fail CNT %u)", + srng->ring_id, + soc->stats.rx.err.hal_ring_access_full_fail); + dp_info_rl("HP 0x%x Reap HP 0x%x TP 0x%x Cached TP 0x%x", + *srng->u.src_ring.hp_addr, + srng->u.src_ring.reap_hp, + *srng->u.src_ring.tp_addr, + srng->u.src_ring.cached_tp); + qdf_assert(0); } done: hal_srng_access_end(hal_soc, wbm_rel_srng); diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 21c93849d8..f70c0d8997 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -5592,6 +5592,9 @@ void dp_txrx_path_stats(struct dp_soc *soc) DP_PRINT_STATS("hal ring access fail: %u msdus", pdev->soc->stats.rx.err.hal_ring_access_fail); + DP_PRINT_STATS("hal ring access full fail: %u msdus", + pdev->soc->stats.rx.err.hal_ring_access_full_fail); + for (error_code = 0; error_code < HAL_REO_ERR_MAX; error_code++) { if (!pdev->soc->stats.rx.err.reo_error[error_code]) @@ -6068,6 +6071,8 @@ dp_print_soc_rx_stats(struct dp_soc *soc) soc->stats.rx.err.rx_invalid_peer.num); DP_PRINT_STATS("HAL Ring Access Fail = %d", soc->stats.rx.err.hal_ring_access_fail); + DP_PRINT_STATS("HAL Ring Access Full Fail = %d", + soc->stats.rx.err.hal_ring_access_full_fail); DP_PRINT_STATS("MSDU Done failures = %d", soc->stats.rx.err.msdu_done_fail); DP_PRINT_STATS("RX frags: %d", soc->stats.rx.rx_frags); diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 7859862628..249c1a485b 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -775,6 +775,8 @@ struct dp_soc_stats { struct cdp_pkt_info rx_invalid_pkt_len; /* HAL ring access Fail error count */ uint32_t hal_ring_access_fail; + /* HAL ring access full Fail error count */ + uint32_t hal_ring_access_full_fail; /* RX DMA error count */ uint32_t rxdma_error[HAL_RXDMA_ERR_MAX]; /* RX REO DEST Desc Invalid Magic count */