qcacmn: Added rx errors and dropped stats
Rx dma error and reo error are accumulated at pdev level.
Rx error consists of:
- desc_alloc_failure [No free desc available]
- csum error [IP/TCP_UDP]
- mic_err
- rx_dma_error
- reo_error
Rx dropped consists of:
- msdu_not_done
- mec
- mesh_filter
- wifi_parse
- non_rx_drop
- non_radiotap_update_err
Change-Id: I4166a32ce94630e8a3ccad7a2551eedf9493e292
CRs-Fixed: 2499563
diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h
index aea884c..90c17af 100644
--- a/dp/inc/cdp_txrx_cmn_struct.h
+++ b/dp/inc/cdp_txrx_cmn_struct.h
@@ -1398,6 +1398,7 @@
* @rx_packets: Rx total packets transmitted
* @rx_bytes : Rx total bytes transmitted
* @rx_errors : Rx erros
+ * @rx_dropped: Rx dropped stats
*/
struct cdp_dev_stats {
uint32_t tx_packets;
@@ -1407,6 +1408,7 @@
uint32_t rx_packets;
uint32_t rx_bytes;
uint32_t rx_errors;
+ uint32_t rx_dropped;
};
/**
diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h
index b534948..e6eaca6 100644
--- a/dp/inc/cdp_txrx_stats_struct.h
+++ b/dp/inc/cdp_txrx_stats_struct.h
@@ -1282,6 +1282,8 @@
uint32_t desc_alloc_fail;
uint32_t ip_csum_err;
uint32_t tcp_udp_csum_err;
+ uint32_t rxdma_error;
+ uint32_t reo_error;
} err;
uint32_t buf_freelist;
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index 867fffa..76777c9 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -6845,9 +6845,16 @@
stats->rx_errors = pdev->stats.err.desc_alloc_fail +
pdev->stats.err.ip_csum_err +
pdev->stats.err.tcp_udp_csum_err +
- pdev->stats.rx.err. mic_err +
- pdev->stats.rx.err. decrypt_err +
- pdev->stats.rx.err. fcserr;
+ pdev->stats.rx.err.mic_err +
+ pdev->stats.rx.err.decrypt_err +
+ pdev->stats.err.rxdma_error +
+ pdev->stats.err.reo_error;
+ stats->rx_dropped = pdev->stats.dropped.msdu_not_done +
+ pdev->stats.dropped.mec +
+ pdev->stats.dropped.mesh_filter +
+ pdev->stats.dropped.wifi_parse +
+ pdev->stats.dropped.mon_rx_drop +
+ pdev->stats.dropped.mon_radiotap_update_err;
}
/**
diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c
index 2de3c63..c38d732 100644
--- a/dp/wifi3.0/dp_rx_err.c
+++ b/dp/wifi3.0/dp_rx_err.c
@@ -1223,6 +1223,10 @@
rx.err.
reo_error[HAL_REO_ERR_PN_CHECK_FAILED],
1);
+ /* increment @pdev level */
+ dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
+ if (dp_pdev)
+ DP_STATS_INC(dp_pdev, err.reo_error, 1);
count = dp_rx_pn_error_handle(soc,
ring_desc,
&mpdu_desc_info, &mac_id,
@@ -1238,6 +1242,10 @@
rx.err.
reo_error[HAL_REO_ERR_REGULAR_FRAME_2K_JUMP],
1);
+ /* increment @pdev level */
+ dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
+ if (dp_pdev)
+ DP_STATS_INC(dp_pdev, err.reo_error, 1);
count = dp_rx_2k_jump_handle(soc,
ring_desc, &mpdu_desc_info,
@@ -1442,6 +1450,12 @@
DP_STATS_INC(soc,
rx.err.reo_error
[wbm_err_info.reo_err_code], 1);
+ /* increment @pdev level */
+ pool_id = wbm_err_info.pool_id;
+ dp_pdev = dp_get_pdev_for_mac_id(soc, pool_id);
+ if (dp_pdev)
+ DP_STATS_INC(dp_pdev, err.reo_error,
+ 1);
switch (wbm_err_info.reo_err_code) {
/*
@@ -1489,6 +1503,12 @@
DP_STATS_INC(soc,
rx.err.rxdma_error
[wbm_err_info.rxdma_err_code], 1);
+ /* increment @pdev level */
+ pool_id = wbm_err_info.pool_id;
+ dp_pdev = dp_get_pdev_for_mac_id(soc, pool_id);
+ if (dp_pdev)
+ DP_STATS_INC(dp_pdev,
+ err.rxdma_error, 1);
switch (wbm_err_info.rxdma_err_code) {
case HAL_RXDMA_ERR_UNENCRYPTED:
@@ -1708,6 +1728,8 @@
} while (buf_info.paddr);
DP_STATS_INC(soc, rx.err.rxdma_error[rxdma_error_code], 1);
+ if (pdev)
+ DP_STATS_INC(pdev, err.rxdma_error, 1);
if (rxdma_error_code == HAL_RXDMA_ERR_DECRYPT) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,