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
This commit is contained in:
Ankit Kumar 2019-07-30 14:03:12 +05:30 • committed by nshrivas
commit 1c69ca1112
4 changed files with 36 additions and 3 deletions

View file

@ -1398,6 +1398,7 @@ struct cdp_tx_completion_ppdu {
* @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 @@ struct cdp_dev_stats {
uint32_t rx_packets;
uint32_t rx_bytes;
uint32_t rx_errors;
uint32_t rx_dropped;
};
/**

View file

@ -1282,6 +1282,8 @@ struct cdp_pdev_stats {
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;

View file

@ -6845,9 +6845,16 @@ static void dp_pdev_getstats(void *pdev_handle,
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;
}
/**

View file

@ -1223,6 +1223,10 @@ dp_rx_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
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 @@ dp_rx_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
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 @@ done:
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 @@ done:
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 @@ dp_rx_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
} 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,