|
@@ -317,12 +317,6 @@ dp_get_vdev_from_peer(struct dp_soc *soc,
|
|
|
}
|
|
|
return vdev;
|
|
|
}
|
|
|
-/*
|
|
|
- * In case of LFR, this is an empty inline function
|
|
|
- */
|
|
|
-static inline void dp_rx_peer_validity_check(struct dp_peer *peer)
|
|
|
-{
|
|
|
-}
|
|
|
#else
|
|
|
static inline struct dp_vdev *
|
|
|
dp_get_vdev_from_peer(struct dp_soc *soc,
|
|
@@ -340,14 +334,6 @@ dp_get_vdev_from_peer(struct dp_soc *soc,
|
|
|
return peer->vdev;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-/*
|
|
|
- * Assert if PEER is NULL
|
|
|
- */
|
|
|
-static inline void dp_rx_peer_validity_check(struct dp_peer *peer)
|
|
|
-{
|
|
|
- qdf_assert_always(peer);
|
|
|
-}
|
|
|
#endif
|
|
|
|
|
|
/**
|
|
@@ -723,6 +709,10 @@ uint8_t dp_rx_process_invalid_peer(struct dp_soc *soc, qdf_nbuf_t mpdu)
|
|
|
dp_rx_mon_deliver(soc, i,
|
|
|
pdev->invalid_peer_head_msdu,
|
|
|
pdev->invalid_peer_tail_msdu);
|
|
|
+
|
|
|
+ pdev->invalid_peer_head_msdu = NULL;
|
|
|
+ pdev->invalid_peer_tail_msdu = NULL;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
@@ -1332,8 +1322,20 @@ done:
|
|
|
deliver_list_tail = NULL;
|
|
|
}
|
|
|
|
|
|
- if (qdf_likely(peer != NULL))
|
|
|
+ if (qdf_likely(peer != NULL)) {
|
|
|
vdev = peer->vdev;
|
|
|
+ } else {
|
|
|
+ qdf_nbuf_free(nbuf);
|
|
|
+ nbuf = next;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (qdf_unlikely(vdev == NULL)) {
|
|
|
+ qdf_nbuf_free(nbuf);
|
|
|
+ nbuf = next;
|
|
|
+ DP_STATS_INC(soc, rx.err.invalid_vdev, 1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Check if DMA completed -- msdu_done is the last bit
|
|
@@ -1387,14 +1389,6 @@ done:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * This is a redundant sanity check, Ideally peer
|
|
|
- * should never be NULL here. if for any reason it
|
|
|
- * is NULL we will assert.
|
|
|
- * Do nothing for LFR case.
|
|
|
- */
|
|
|
- dp_rx_peer_validity_check(peer);
|
|
|
-
|
|
|
if (!dp_wds_rx_policy_check(rx_tlv_hdr, vdev, peer,
|
|
|
hal_rx_msdu_end_da_is_mcbc_get(rx_tlv_hdr))) {
|
|
|
QDF_TRACE(QDF_MODULE_ID_DP,
|