qcacmn: Handle FP BARs without errors in wbm release ring
Only BAR frames with REO/RXDMA push reason as error are handled in host. FP BAR frames without errors, are routed to host via REO/RXDMA with push reason as route. Instead of leaking the buffer, handle the routed BAR frames gracefully. Free the buffer and log stats to detect such cases. Change-Id: I6e09e8b948d9b2d9d3de3b6558e54f0c70901c62 CRs-Fixed: 2814303
This commit is contained in:

committed by
snandini

parent
66ec120912
commit
b82e526a72
@@ -2256,6 +2256,10 @@ done:
|
|||||||
wbm_err_info.reo_err_code);
|
wbm_err_info.reo_err_code);
|
||||||
qdf_nbuf_free(nbuf);
|
qdf_nbuf_free(nbuf);
|
||||||
}
|
}
|
||||||
|
} else if (wbm_err_info.reo_psh_rsn
|
||||||
|
== HAL_RX_WBM_REO_PSH_RSN_ROUTE) {
|
||||||
|
DP_STATS_INC(soc, rx.reo2rel_route_drop, 1);
|
||||||
|
qdf_nbuf_free(nbuf);
|
||||||
}
|
}
|
||||||
} else if (wbm_err_info.wbm_err_src ==
|
} else if (wbm_err_info.wbm_err_src ==
|
||||||
HAL_RX_WBM_ERR_SRC_RXDMA) {
|
HAL_RX_WBM_ERR_SRC_RXDMA) {
|
||||||
@@ -2320,6 +2324,10 @@ done:
|
|||||||
dp_err_rl("RXDMA error %d",
|
dp_err_rl("RXDMA error %d",
|
||||||
wbm_err_info.rxdma_err_code);
|
wbm_err_info.rxdma_err_code);
|
||||||
}
|
}
|
||||||
|
} else if (wbm_err_info.rxdma_psh_rsn
|
||||||
|
== HAL_RX_WBM_RXDMA_PSH_RSN_ROUTE) {
|
||||||
|
DP_STATS_INC(soc, rx.rxdma2rel_route_drop, 1);
|
||||||
|
qdf_nbuf_free(nbuf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Should not come here */
|
/* Should not come here */
|
||||||
|
@@ -6640,6 +6640,10 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
|
|||||||
soc->stats.rx.err.reo_cmd_send_fail);
|
soc->stats.rx.err.reo_cmd_send_fail);
|
||||||
|
|
||||||
DP_PRINT_STATS("Rx BAR frames:%d", soc->stats.rx.bar_frame);
|
DP_PRINT_STATS("Rx BAR frames:%d", soc->stats.rx.bar_frame);
|
||||||
|
DP_PRINT_STATS("Rxdma2rel route drop:%d",
|
||||||
|
soc->stats.rx.rxdma2rel_route_drop);
|
||||||
|
DP_PRINT_STATS("Reo2rel route drop:%d",
|
||||||
|
soc->stats.rx.reo2rel_route_drop);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEATURE_TSO_STATS
|
#ifdef FEATURE_TSO_STATS
|
||||||
|
@@ -892,6 +892,10 @@ struct dp_soc_stats {
|
|||||||
uint32_t msdu_scatter_wait_break;
|
uint32_t msdu_scatter_wait_break;
|
||||||
/* Number of bar frames received */
|
/* Number of bar frames received */
|
||||||
uint32_t bar_frame;
|
uint32_t bar_frame;
|
||||||
|
/* Number of frames routed from rxdma */
|
||||||
|
uint32_t rxdma2rel_route_drop;
|
||||||
|
/* Number of frames routed from reo*/
|
||||||
|
uint32_t reo2rel_route_drop;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
/* Invalid RBM error count */
|
/* Invalid RBM error count */
|
||||||
|
Reference in New Issue
Block a user