diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index c3195e8cb036..d66382118d61 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -191,6 +191,7 @@ QDF_STATUS dp_rx_buffers_replenish(struct dp_soc *dp_soc, uint32_t mac_id, rxdma_ring_entry = hal_srng_src_get_next(dp_soc->hal_soc, rxdma_srng); + qdf_assert_always(rxdma_ring_entry); next = (*desc_list)->next; @@ -385,6 +386,18 @@ dp_rx_intrabss_fwd(struct dp_soc *soc, return false; nbuf = qdf_nbuf_unshare(nbuf); + if (!nbuf) { + DP_STATS_INC_PKT(sa_peer, + rx.intra_bss.fail, + 1, + len); + /* return true even though the pkt is + * not forwarded. Basically skb_unshare + * failed and we want to continue with + * next nbuf. + */ + return true; + } } if (!dp_tx_send(sa_peer->vdev, nbuf)) { diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index 7fdae3b0720d..3feb290b1e18 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -348,18 +348,18 @@ dp_rx_pn_error_handle(struct dp_soc *soc, void *ring_desc, /* * TODO: Check for peer specific policies & set peer_pn_policy */ + QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, + "discard rx due to PN error for peer %pK " + "(%02x:%02x:%02x:%02x:%02x:%02x)\n", + peer, + peer->mac_addr.raw[0], peer->mac_addr.raw[1], + peer->mac_addr.raw[2], peer->mac_addr.raw[3], + peer->mac_addr.raw[4], peer->mac_addr.raw[5]); + } QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, "Packet received with PN error"); - QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, - "discard rx due to PN error for peer %pK " - "(%02x:%02x:%02x:%02x:%02x:%02x)\n", - peer, - peer->mac_addr.raw[0], peer->mac_addr.raw[1], - peer->mac_addr.raw[2], peer->mac_addr.raw[3], - peer->mac_addr.raw[4], peer->mac_addr.raw[5]); - /* No peer PN policy -- definitely drop */ if (!peer_pn_policy) rx_bufs_used = dp_rx_msdus_drop(soc, ring_desc,