|
@@ -930,6 +930,17 @@ dp_rx_construct_fraglist(struct dp_peer *peer, int tid, qdf_nbuf_t head,
|
|
|
prev_pn128[0] = cur_pn128[0];
|
|
|
prev_pn128[1] = cur_pn128[1];
|
|
|
|
|
|
+ /*
|
|
|
+ * Broadcast and multicast frames should never be fragmented.
|
|
|
+ * Iterating through all msdus and dropping fragments if even
|
|
|
+ * one of them has mcast/bcast destination address.
|
|
|
+ */
|
|
|
+ if (hal_rx_msdu_is_wlan_mcast(msdu)) {
|
|
|
+ QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
|
|
+ "Dropping multicast/broadcast fragments");
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
dp_rx_frag_pull_hdr(msdu, hdrsize);
|
|
|
len += qdf_nbuf_len(msdu);
|
|
|
msdu = qdf_nbuf_next(msdu);
|