Browse Source

qcacld-3.0: Skip FISA aggregation if RDI is zero

Skip the FISA aggregation and drop the frame if the reo destination
indication is zero in the packet TLVs.

Change-Id: I9bd02652bf321202f6b59e6da98fc6959ab93413
CRs-Fixed: 3426355
Venkateswara Naralasetty 2 years ago
parent
commit
2bcf36b06f
1 changed files with 14 additions and 1 deletions
  1. 14 1
      components/dp/core/src/wlan_dp_fisa_rx.c

+ 14 - 1
components/dp/core/src/wlan_dp_fisa_rx.c

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -1971,6 +1971,7 @@ QDF_STATUS dp_fisa_rx(struct dp_soc *soc, struct dp_vdev *vdev,
 	struct dp_fisa_rx_sw_ft *fisa_flow;
 	int fisa_ret;
 	uint8_t rx_ctx_id = QDF_NBUF_CB_RX_CTX_ID(nbuf_list);
+	uint32_t tlv_reo_dest_ind;
 
 	head_nbuf = nbuf_list;
 
@@ -1999,6 +2000,18 @@ QDF_STATUS dp_fisa_rx(struct dp_soc *soc, struct dp_vdev *vdev,
 		qdf_nbuf_push_head(head_nbuf, soc->rx_pkt_tlv_size +
 				   QDF_NBUF_CB_RX_PACKET_L3_HDR_PAD(head_nbuf));
 
+		hal_rx_msdu_get_reo_destination_indication(soc->hal_soc,
+							   (uint8_t *)qdf_nbuf_data(head_nbuf),
+							   &tlv_reo_dest_ind);
+
+		/* Skip FISA aggregation and drop the frame if RDI is REO2TCL. */
+		if (qdf_unlikely(tlv_reo_dest_ind == REO_REMAP_TCL)) {
+			qdf_nbuf_free(head_nbuf);
+			head_nbuf = next_nbuf;
+			DP_STATS_INC(dp_fisa_rx_hdl, incorrect_rdi, 1);
+			continue;
+		}
+
 		/* Add new flow if the there is no ongoing flow */
 		fisa_flow = dp_rx_get_fisa_flow(dp_fisa_rx_hdl, vdev,
 						head_nbuf);