qcacmn: Add skb fast recycler check in rx replenish

In ethernet TX fast recycle bit is set to buffer after
invalidate.

In Rx replenish API do not invalidate buffer if fast
recycle bit is set as it is already done

Change-Id: Ic74a96033a659baac381c921aff75296d155f169
CRs-Fixed: 3321142
This commit is contained in:
Chaithanya Garrepalli
2022-10-26 11:49:23 +05:30
committed by Madan Koyyalamudi
parent 5fb7638690
commit a34dd02dd0
3 changed files with 21 additions and 0 deletions

View File

@@ -2415,6 +2415,7 @@ void dp_rx_buffers_lt_replenish_simple(struct dp_soc *soc, uint32_t mac_id,
rx_desc_pool); rx_desc_pool);
} }
#ifndef QCA_DP_NBUF_FAST_RECYCLE_CHECK
static inline static inline
qdf_dma_addr_t dp_rx_nbuf_sync_no_dsb(struct dp_soc *dp_soc, qdf_dma_addr_t dp_rx_nbuf_sync_no_dsb(struct dp_soc *dp_soc,
qdf_nbuf_t nbuf, qdf_nbuf_t nbuf,
@@ -2425,6 +2426,23 @@ qdf_dma_addr_t dp_rx_nbuf_sync_no_dsb(struct dp_soc *dp_soc,
return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data); return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data);
} }
#else
static inline
qdf_dma_addr_t dp_rx_nbuf_sync_no_dsb(struct dp_soc *dp_soc,
qdf_nbuf_t nbuf,
uint32_t buf_size)
{
if (unlikely(!nbuf->fast_recycled)) {
qdf_nbuf_dma_inv_range_no_dsb((void *)nbuf->data,
(void *)(nbuf->data + buf_size));
} else {
DP_STATS_INC(dp_soc, rx.fast_recycled, 1);
}
nbuf->fast_recycled = 0;
return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data);
}
#endif
static inline static inline
qdf_dma_addr_t dp_rx_nbuf_sync(struct dp_soc *dp_soc, qdf_dma_addr_t dp_rx_nbuf_sync(struct dp_soc *dp_soc,

View File

@@ -7862,6 +7862,8 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
DP_PRINT_STATS("No of AST Entries = %d", soc->num_ast_entries); DP_PRINT_STATS("No of AST Entries = %d", soc->num_ast_entries);
DP_PRINT_STATS("SOC Rx Stats:\n"); DP_PRINT_STATS("SOC Rx Stats:\n");
DP_PRINT_STATS("Fast recycled packets: %llu",
soc->stats.rx.fast_recycled);
DP_PRINT_STATS("Fragmented packets: %u", DP_PRINT_STATS("Fragmented packets: %u",
soc->stats.rx.rx_frags); soc->stats.rx.rx_frags);
DP_PRINT_STATS("Reo reinjected packets: %u", DP_PRINT_STATS("Reo reinjected packets: %u",

View File

@@ -1147,6 +1147,7 @@ struct dp_soc_stats {
uint32_t rxdma2rel_route_drop; uint32_t rxdma2rel_route_drop;
/* Number of frames routed from reo*/ /* Number of frames routed from reo*/
uint32_t reo2rel_route_drop; uint32_t reo2rel_route_drop;
uint64_t fast_recycled;
struct { struct {
/* Invalid RBM error count */ /* Invalid RBM error count */