diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index d7b0d3f8e1e5..9a1c71b1c029 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -352,6 +352,16 @@ done: continue; } + if (qdf_unlikely(peer->bss_peer)) { + QDF_TRACE(QDF_MODULE_ID_DP, + QDF_TRACE_LEVEL_INFO, + FL("received pkt with same src MAC")); + + /* Drop & free packet */ + qdf_nbuf_free(nbuf); + /* Statistics */ + continue; + } /* * HW structures call this L3 header padding -- * even though this is actually the offset from diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index f88832195769..d413eb733859 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -335,6 +335,17 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, void *ring_desc, qdf_nbuf_data(nbuf), 128, false); #endif /* NAPIER_EMULATION */ + if (qdf_unlikely(peer->bss_peer)) { + QDF_TRACE(QDF_MODULE_ID_DP, + QDF_TRACE_LEVEL_INFO, + FL("received pkt with same src MAC")); + + /* Drop & free packet */ + qdf_nbuf_free(nbuf); + /* Statistics */ + goto fail; + } + pdev0 = soc->pdev_list[0];/* Hard code 0th elem */ if (pdev0) { @@ -354,6 +365,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, void *ring_desc, FL("INVALID pdev %p"), pdev0); } +fail: dp_rx_add_to_free_desc_list(head, tail, rx_desc); return rx_bufs_used;