Explorar el Código

qcacmn: Update dma length and mpdu logging during filter setup

Update dma length and mpdu logging for different packet
types while setting up monitor filter

Change-Id: I408860f15686c7999655c1e84dce5a3f7ffbbed7
CRs-Fixed: 3145400
Jeevan Kukkalli hace 3 años
padre
commit
2676f31aad
Se han modificado 1 ficheros con 57 adiciones y 0 borrados
  1. 57 0
      dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

+ 57 - 0
dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

@@ -1315,6 +1315,12 @@ static void dp_rx_mon_filter_show_filter(struct dp_mon_filter_be *filter)
 			    rx_tlv_filter->md_mgmt_filter);
 	DP_MON_FILTER_PRINT("md_ctrl_filter: 0x%x",
 			    rx_tlv_filter->md_ctrl_filter);
+	DP_MON_FILTER_PRINT("mgmt_dma_length: %d",
+			    rx_tlv_filter->mgmt_dma_length);
+	DP_MON_FILTER_PRINT("ctrl_dma_length: %d",
+			    rx_tlv_filter->ctrl_dma_length);
+	DP_MON_FILTER_PRINT("data_dma_length: %d",
+			    rx_tlv_filter->data_dma_length);
 }
 
 static void dp_tx_mon_filter_show_filter(struct dp_mon_filter_be *filter)
@@ -1800,6 +1806,7 @@ dp_rx_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
 {
 	int32_t current_mode = 0;
 	struct htt_rx_ring_tlv_filter *tlv_filter = &filter->tlv_filter;
+	struct htt_rx_ring_tlv_filter *src_tlv_filter;
 	struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
 	struct dp_mon_pdev_be *mon_pdev_be =
 		dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
@@ -1813,6 +1820,7 @@ dp_rx_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
 	     current_mode++) {
 		mon_filter =
 			&mon_pdev_be->filter_be[current_mode][srng_type];
+		src_tlv_filter = &mon_filter->rx_tlv_filter.tlv_filter;
 
 		/*
 		 * Check if the correct mode is enabled or not.
@@ -1924,6 +1932,55 @@ dp_rx_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
 		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_MD_CTRL);
 		dst_filter |= src_filter;
 		DP_MON_FILTER_SET(tlv_filter, FILTER_MD_CTRL, dst_filter);
+
+		/*
+		 * set the dma length for type mgmt
+		 */
+		if (src_tlv_filter->mgmt_dma_length &&
+		    !tlv_filter->mgmt_dma_length)
+			tlv_filter->mgmt_dma_length =
+				src_tlv_filter->mgmt_dma_length;
+
+		/*
+		 * set the dma length for type ctrl
+		 */
+		if (src_tlv_filter->ctrl_dma_length &&
+		    !tlv_filter->ctrl_dma_length)
+			tlv_filter->ctrl_dma_length =
+				src_tlv_filter->ctrl_dma_length;
+
+		/*
+		 * set the dma length for type data
+		 */
+		if (src_tlv_filter->data_dma_length &&
+		    !tlv_filter->data_dma_length)
+			tlv_filter->data_dma_length =
+				src_tlv_filter->data_dma_length;
+
+		/*
+		 * set mpdu logging for type mgmt
+		 */
+		if (src_tlv_filter->mgmt_mpdu_log &&
+		    !tlv_filter->mgmt_mpdu_log)
+			tlv_filter->mgmt_mpdu_log =
+				src_tlv_filter->mgmt_mpdu_log;
+
+		/*
+		 * set mpdu logging for type ctrl
+		 */
+		if (src_tlv_filter->ctrl_mpdu_log &&
+		    !tlv_filter->ctrl_mpdu_log)
+			tlv_filter->ctrl_mpdu_log =
+				src_tlv_filter->ctrl_mpdu_log;
+
+		/*
+		 * set mpdu logging for type data
+		 */
+		if (src_tlv_filter->data_mpdu_log &&
+		    !tlv_filter->data_mpdu_log)
+			tlv_filter->data_mpdu_log =
+				src_tlv_filter->data_mpdu_log;
+
 		dp_mon_filter_show_filter_be(current_mode, mon_filter);
 	}
 }