qcacmn: do not process duplicate descriptor frame in RX
once in a while the HW is sending a descriptor which is already processed by host. This can be a potential HW issue, as a WAR we are not processing such duplicate descriptors instead increment a counter and continue with next descriptor. Change-Id: I6c9bc6a9fb4705b42284171a32855411aa5dd73f CRs-Fixed: 2338543
This commit is contained in:

committed by
nshrivas

parent
e88c0e8ffa
commit
eff377a1d3
@@ -1253,6 +1253,19 @@ dp_rx_wbm_err_process(struct dp_soc *soc, void *hal_ring, uint32_t quota)
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* this is a unlikely scenario where the host is reaping
|
||||
* a descriptor which it already reaped just a while ago
|
||||
* but is yet to replenish it back to HW.
|
||||
* In this case host will dump the last 128 descriptors
|
||||
* including the software descriptor rx_desc and assert.
|
||||
*/
|
||||
if (qdf_unlikely(!rx_desc->in_use)) {
|
||||
DP_STATS_INC(soc, rx.err.hal_wbm_rel_dup, 1);
|
||||
dp_rx_dump_info_and_assert(soc, hal_ring,
|
||||
ring_desc, rx_desc);
|
||||
}
|
||||
|
||||
nbuf = rx_desc->nbuf;
|
||||
qdf_nbuf_unmap_single(soc->osdev, nbuf, QDF_DMA_BIDIRECTIONAL);
|
||||
|
||||
|
Reference in New Issue
Block a user