|
@@ -666,7 +666,7 @@ dp_rx_null_q_handle_invalid_peer_id_exception(struct dp_soc *soc,
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * dp_rx_null_q_check_pkt_len_exception() - Check for pktlen validity
|
|
|
+ * dp_rx_check_pkt_len() - Check for pktlen validity
|
|
|
* @soc: DP SOC context
|
|
|
* @pkt_len: computed length of the pkt from caller in bytes
|
|
|
*
|
|
@@ -674,7 +674,7 @@ dp_rx_null_q_handle_invalid_peer_id_exception(struct dp_soc *soc,
|
|
|
*
|
|
|
*/
|
|
|
static inline
|
|
|
-bool dp_rx_null_q_check_pkt_len_exception(struct dp_soc *soc, uint32_t pkt_len)
|
|
|
+bool dp_rx_check_pkt_len(struct dp_soc *soc, uint32_t pkt_len)
|
|
|
{
|
|
|
if (qdf_unlikely(pkt_len > RX_DATA_BUFFER_SIZE)) {
|
|
|
DP_STATS_INC_PKT(soc, rx.err.rx_invalid_pkt_len,
|
|
@@ -696,7 +696,7 @@ dp_rx_null_q_handle_invalid_peer_id_exception(struct dp_soc *soc,
|
|
|
}
|
|
|
|
|
|
static inline
|
|
|
-bool dp_rx_null_q_check_pkt_len_exception(struct dp_soc *soc, uint32_t pkt_len)
|
|
|
+bool dp_rx_check_pkt_len(struct dp_soc *soc, uint32_t pkt_len)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
@@ -757,7 +757,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, qdf_nbuf_t nbuf,
|
|
|
pkt_len = msdu_len + l2_hdr_offset + RX_PKT_TLVS_LEN;
|
|
|
|
|
|
if (qdf_likely(!qdf_nbuf_is_frag(nbuf))) {
|
|
|
- if (dp_rx_null_q_check_pkt_len_exception(soc, pkt_len))
|
|
|
+ if (dp_rx_check_pkt_len(soc, pkt_len))
|
|
|
goto drop_nbuf;
|
|
|
|
|
|
/* Set length in nbuf */
|
|
@@ -955,6 +955,11 @@ dp_rx_process_rxdma_err(struct dp_soc *soc, qdf_nbuf_t nbuf,
|
|
|
msdu_len = hal_rx_msdu_start_msdu_len_get(rx_tlv_hdr);
|
|
|
pkt_len = msdu_len + l2_hdr_offset + RX_PKT_TLVS_LEN;
|
|
|
|
|
|
+ if (dp_rx_check_pkt_len(soc, pkt_len)) {
|
|
|
+ /* Drop & free packet */
|
|
|
+ qdf_nbuf_free(nbuf);
|
|
|
+ return;
|
|
|
+ }
|
|
|
/* Set length in nbuf */
|
|
|
qdf_nbuf_set_pktlen(nbuf, pkt_len);
|
|
|
|
|
@@ -1067,7 +1072,7 @@ process_rx:
|
|
|
/* Update the flow tag in SKB based on FSE metadata */
|
|
|
dp_rx_update_flow_tag(soc, vdev, nbuf, rx_tlv_hdr, true);
|
|
|
DP_STATS_INC(peer, rx.to_stack.num, 1);
|
|
|
- vdev->osif_rx(vdev->osif_vdev, nbuf);
|
|
|
+ dp_rx_deliver_to_stack(soc, vdev, peer, nbuf, NULL);
|
|
|
}
|
|
|
|
|
|
return;
|