瀏覽代碼

qcacmn: Fix for sending valid monitor filter setting to FW

Due to usage of lithium specific structure, the filter settings
were not getting reflected in the htt msg that is being sent to
FW. Usage of BE specific monitor pdev structure is helping out
in configuring the monitor filter settings for various modes.

Change-Id: Ie4a59ec16717d752c6c49624142966722bfacc08
CRs-Fixed: 3118596
Adwait Nayak 3 年之前
父節點
當前提交
ada7af683e

+ 1 - 3
dp/wifi3.0/monitor/2.0/dp_mon_2.0.h

@@ -206,12 +206,10 @@ QDF_STATUS dp_mon_buffers_replenish(struct dp_soc *dp_soc,
 
 /**
  * dp_mon_filter_show_filter_be() - Show the set filters
- * @pdev: DP pdev handle
  * @mode: The filter modes
  * @tlv_filter: tlv filter
  */
-void dp_mon_filter_show_filter_be(struct dp_mon_pdev_be *mon_pdev,
-				  enum dp_mon_filter_mode mode,
+void dp_mon_filter_show_filter_be(enum dp_mon_filter_mode mode,
 				  struct dp_mon_filter_be *filter);
 
 /**

+ 358 - 163
dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

@@ -1047,6 +1047,7 @@ void dp_mon_filter_setup_tx_mon_mode_2_0(struct dp_pdev *pdev)
 		return;
 	}
 
+	mon_pdev->current_filter_mode = mode;
 	filter.tx_valid = true;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
@@ -1081,6 +1082,7 @@ void dp_mon_filter_reset_tx_mon_mode_2_0(struct dp_pdev *pdev)
 	mon_soc_be->tx_mon_ring_fill_level = DP_MON_RING_FILL_LEVEL_DEFAULT;
 	mon_soc_be->rx_mon_ring_fill_level = DP_MON_RING_FILL_LEVEL_DEFAULT;
 
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1119,6 +1121,7 @@ void dp_mon_filter_setup_rx_mon_mode_2_0(struct dp_pdev *pdev)
 	dp_mon_filter_set_status_cmn(mon_pdev, rx_tlv_filter);
 	dp_mon_filter_show_filter(mon_pdev, mode, rx_tlv_filter);
 
+	mon_pdev->current_filter_mode = mode;
 	/* Store the above filter */
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
@@ -1159,21 +1162,15 @@ void dp_mon_filter_reset_rx_mon_mode_2_0(struct dp_pdev *pdev)
 	qdf_mem_zero(&(filter), sizeof(struct dp_mon_filter));
 	/* Store the above filter */
 	srng_type = DP_MON_FILTER_SRNG_TYPE_RXMON_DEST;
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
-void dp_mon_filter_show_filter_be(struct dp_mon_pdev_be *mon_pdev,
-				  enum dp_mon_filter_mode mode,
-				  struct dp_mon_filter_be *filter)
+static void dp_rx_mon_filter_show_filter(struct dp_mon_filter_be *filter)
 {
 	struct htt_rx_ring_tlv_filter *rx_tlv_filter =
 		&filter->rx_tlv_filter.tlv_filter;
-	struct htt_tx_ring_tlv_filter *tx_tlv_filter =
-		&filter->tx_tlv_filter;
 
-	DP_MON_FILTER_PRINT("RX MON RING TLV FILTER CONFIG:");
-	DP_MON_FILTER_PRINT("[Mode%d]: Valid: %d",
-			    mode, filter->rx_tlv_filter.valid);
 	DP_MON_FILTER_PRINT("mpdu_start: %d", rx_tlv_filter->mpdu_start);
 	DP_MON_FILTER_PRINT("msdu_start: %d", rx_tlv_filter->msdu_start);
 	DP_MON_FILTER_PRINT("packet: %d", rx_tlv_filter->packet);
@@ -1213,34 +1210,208 @@ void dp_mon_filter_show_filter_be(struct dp_mon_pdev_be *mon_pdev,
 			    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("\nTX MON RING TLV FILTER CONFIG:");
-	DP_MON_FILTER_PRINT("[Mode%d]: Valid: %d", mode, filter->tx_valid);
+}
+
+static void dp_tx_mon_filter_show_filter(struct dp_mon_filter_be *filter)
+{
+	struct htt_tx_ring_tlv_filter *tlv_filter = &filter->tx_tlv_filter;
+
+	DP_MON_FILTER_PRINT("mgmt_filter: %d", tlv_filter->mgmt_filter);
+	DP_MON_FILTER_PRINT("data_filter: %d", tlv_filter->data_filter);
+	DP_MON_FILTER_PRINT("ctrl_filter: %d", tlv_filter->ctrl_filter);
+	DP_MON_FILTER_PRINT("mgmt_dma_length: %d", tlv_filter->mgmt_dma_length);
+	DP_MON_FILTER_PRINT("ctrl_dma_length: %d", tlv_filter->ctrl_dma_length);
+	DP_MON_FILTER_PRINT("data_dma_length: %d", tlv_filter->data_dma_length);
+	DP_MON_FILTER_PRINT("mgmt_mpdu_end: %d", tlv_filter->mgmt_mpdu_end);
+	DP_MON_FILTER_PRINT("mgmt_msdu_end: %d", tlv_filter->mgmt_msdu_end);
+	DP_MON_FILTER_PRINT("mgmt_mpdu_start: %d", tlv_filter->mgmt_mpdu_start);
+	DP_MON_FILTER_PRINT("mgmt_msdu_start: %d", tlv_filter->mgmt_msdu_start);
+	DP_MON_FILTER_PRINT("ctrl_mpdu_end: %d", tlv_filter->ctrl_mpdu_end);
+	DP_MON_FILTER_PRINT("ctrl_msdu_end: %d", tlv_filter->ctrl_msdu_end);
+	DP_MON_FILTER_PRINT("ctrl_mpdu_start: %d", tlv_filter->ctrl_mpdu_start);
+	DP_MON_FILTER_PRINT("ctrl_msdu_start: %d", tlv_filter->ctrl_msdu_start);
+	DP_MON_FILTER_PRINT("data_mpdu_end: %d", tlv_filter->data_mpdu_end);
+	DP_MON_FILTER_PRINT("data_msdu_end: %d", tlv_filter->data_msdu_end);
+	DP_MON_FILTER_PRINT("data_mpdu_start: %d", tlv_filter->data_mpdu_start);
+	DP_MON_FILTER_PRINT("data_msdu_start: %d", tlv_filter->data_msdu_start);
+	DP_MON_FILTER_PRINT("mgmt_mpdu_log: %d", tlv_filter->mgmt_mpdu_log);
+	DP_MON_FILTER_PRINT("ctrl_mpdu_log: %d", tlv_filter->ctrl_mpdu_log);
+	DP_MON_FILTER_PRINT("data_mpdu_log: %d", tlv_filter->data_mpdu_log);
+	DP_MON_FILTER_PRINT("tx_fes_setup: %d", tlv_filter->dtlvs.tx_fes_setup);
+	DP_MON_FILTER_PRINT("tx_peer_entry: %d",
+			    tlv_filter->dtlvs.tx_peer_entry);
+	DP_MON_FILTER_PRINT("tx_queue_extension: %d",
+			    tlv_filter->dtlvs.tx_queue_extension);
+	DP_MON_FILTER_PRINT("tx_last_mpdu_fetched: %d",
+			    tlv_filter->dtlvs.tx_last_mpdu_fetched);
+	DP_MON_FILTER_PRINT("tx_data_sync: %d", tlv_filter->dtlvs.tx_data_sync);
+	DP_MON_FILTER_PRINT("pcu_ppdu_setup_init: %d",
+			    tlv_filter->dtlvs.pcu_ppdu_setup_init);
+	DP_MON_FILTER_PRINT("fw2s_mon: %d", tlv_filter->dtlvs.fw2s_mon);
+	DP_MON_FILTER_PRINT("tx_loopback_setup: %d",
+			    tlv_filter->dtlvs.tx_loopback_setup);
+	DP_MON_FILTER_PRINT("ndp_preamble_done: %d",
+			    tlv_filter->dtlvs.ndp_preamble_done);
+	DP_MON_FILTER_PRINT("tx_raw_frame_setup: %d",
+			    tlv_filter->dtlvs.tx_raw_frame_setup);
+	DP_MON_FILTER_PRINT("txpcu_user_setup: %d",
+			    tlv_filter->dtlvs.txpcu_user_setup);
+	DP_MON_FILTER_PRINT("rxpcu_setup: %d", tlv_filter->dtlvs.rxpcu_setup);
+	DP_MON_FILTER_PRINT("rxpcu_setup_complete: %d",
+			    tlv_filter->dtlvs.rxpcu_setup_complete);
+	DP_MON_FILTER_PRINT("coex_tx_req: %d", tlv_filter->dtlvs.coex_tx_req);
+	DP_MON_FILTER_PRINT("rxpcu_user_setup: %d",
+			    tlv_filter->dtlvs.rxpcu_user_setup);
+	DP_MON_FILTER_PRINT("rxpcu_user_setup_ext: %d",
+			    tlv_filter->dtlvs.rxpcu_user_setup_ext);
+	DP_MON_FILTER_PRINT("wur_data: %d", tlv_filter->dtlvs.wur_data);
+	DP_MON_FILTER_PRINT("tqm_mpdu_global_start: %d",
+			    tlv_filter->dtlvs.tqm_mpdu_global_start);
+	DP_MON_FILTER_PRINT("tx_fes_setup_complete: %d",
+			    tlv_filter->dtlvs.tx_fes_setup_complete);
+	DP_MON_FILTER_PRINT("scheduler_end: %d",
+			    tlv_filter->dtlvs.scheduler_end);
+	DP_MON_FILTER_PRINT("sch_wait_instr_tx_path: %d",
+			    tlv_filter->dtlvs.sch_wait_instr_tx_path);
+	DP_MON_FILTER_PRINT("rx_response_required_info: %d",
+			    tlv_filter->utlvs.rx_response_required_info);
+	DP_MON_FILTER_PRINT("response_start_status: %d",
+			    tlv_filter->utlvs.response_start_status);
+	DP_MON_FILTER_PRINT("response_end_status: %d",
+			    tlv_filter->utlvs.response_end_status);
 	DP_MON_FILTER_PRINT("tx_fes_status_start: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_start);
-	DP_MON_FILTER_PRINT("tx_fes_status_start_prot: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_start_prot);
-	DP_MON_FILTER_PRINT("tx_fes_status_prot: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_prot);
+			    tlv_filter->utlvs.tx_fes_status_start);
+	DP_MON_FILTER_PRINT("tx_fes_status_end: %d",
+			    tlv_filter->utlvs.tx_fes_status_end);
 	DP_MON_FILTER_PRINT("tx_fes_status_start_ppdu: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_start_ppdu);
+			    tlv_filter->utlvs.tx_fes_status_start_ppdu);
 	DP_MON_FILTER_PRINT("tx_fes_status_user_ppdu: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_user_ppdu);
+			    tlv_filter->utlvs.tx_fes_status_user_ppdu);
 	DP_MON_FILTER_PRINT("tx_fes_status_ack_or_ba: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_ack_or_ba);
+			    tlv_filter->utlvs.tx_fes_status_ack_or_ba);
 	DP_MON_FILTER_PRINT("tx_fes_status_1k_ba: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_1k_ba);
+			    tlv_filter->utlvs.tx_fes_status_1k_ba);
+	DP_MON_FILTER_PRINT("tx_fes_status_start_prot: %d",
+			    tlv_filter->utlvs.tx_fes_status_start_prot);
+	DP_MON_FILTER_PRINT("tx_fes_status_prot: %d",
+			    tlv_filter->utlvs.tx_fes_status_prot);
 	DP_MON_FILTER_PRINT("tx_fes_status_user_response: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_user_response);
-	DP_MON_FILTER_PRINT("tx_fes_status_end: %d",
-			    tx_tlv_filter->utlvs.tx_fes_status_end);
-	DP_MON_FILTER_PRINT("response_start_status: %d",
-			    tx_tlv_filter->utlvs.response_start_status);
-	DP_MON_FILTER_PRINT("response_end_status: %d",
-			    tx_tlv_filter->utlvs.response_end_status);
+			    tlv_filter->utlvs.tx_fes_status_user_response);
+	DP_MON_FILTER_PRINT("rx_frame_bitmap_ack: %d",
+			    tlv_filter->utlvs.rx_frame_bitmap_ack);
+	DP_MON_FILTER_PRINT("rx_frame_1k_bitmap_ack: %d",
+			    tlv_filter->utlvs.rx_frame_1k_bitmap_ack);
+	DP_MON_FILTER_PRINT("coex_tx_status: %d",
+			    tlv_filter->utlvs.coex_tx_status);
 	DP_MON_FILTER_PRINT("recevied_response_info: %d",
-			    tx_tlv_filter->utlvs.recevied_response_info);
+			    tlv_filter->utlvs.recevied_response_info);
 	DP_MON_FILTER_PRINT("recevied_response_info_p2: %d",
-			    tx_tlv_filter->utlvs.recevied_response_info_p2);
+			    tlv_filter->utlvs.recevied_response_info_p2);
+	DP_MON_FILTER_PRINT("ofdma_trigger_details: %d",
+			    tlv_filter->utlvs.ofdma_trigger_details);
+	DP_MON_FILTER_PRINT("recevied_trigger_info: %d",
+			    tlv_filter->utlvs.recevied_trigger_info);
+	DP_MON_FILTER_PRINT("pdg_tx_request: %d",
+			    tlv_filter->utlvs.pdg_tx_request);
+	DP_MON_FILTER_PRINT("pdg_response: %d",
+			    tlv_filter->utlvs.pdg_response);
+	DP_MON_FILTER_PRINT("pdg_trig_response: %d",
+			    tlv_filter->utlvs.pdg_trig_response);
+	DP_MON_FILTER_PRINT("trigger_response_tx_done: %d",
+			    tlv_filter->utlvs.trigger_response_tx_done);
+	DP_MON_FILTER_PRINT("prot_tx_end: %d", tlv_filter->utlvs.prot_tx_end);
+	DP_MON_FILTER_PRINT("ppdu_tx_end: %d", tlv_filter->utlvs.ppdu_tx_end);
+	DP_MON_FILTER_PRINT("r2r_status_end: %d",
+			    tlv_filter->utlvs.r2r_status_end);
+	DP_MON_FILTER_PRINT("flush_req: %d", tlv_filter->utlvs.flush_req);
+	DP_MON_FILTER_PRINT("mactx_phy_desc: %d",
+			    tlv_filter->utlvs.mactx_phy_desc);
+	DP_MON_FILTER_PRINT("mactx_user_desc_cmn: %d",
+			    tlv_filter->utlvs.mactx_user_desc_cmn);
+	DP_MON_FILTER_PRINT("mactx_user_desc_per_usr: %d",
+			    tlv_filter->utlvs.mactx_user_desc_per_usr);
+	DP_MON_FILTER_PRINT("tqm_acked_1k_mpdu: %d",
+			    tlv_filter->utlvs.tqm_acked_1k_mpdu);
+	DP_MON_FILTER_PRINT("tqm_acked_mpdu: %d",
+			    tlv_filter->utlvs.tqm_acked_mpdu);
+	DP_MON_FILTER_PRINT("tqm_update_tx_mpdu_count: %d",
+			    tlv_filter->utlvs.tqm_update_tx_mpdu_count);
+	DP_MON_FILTER_PRINT("phytx_ppdu_header_info_request: %d",
+			    tlv_filter->utlvs.phytx_ppdu_header_info_request);
+	DP_MON_FILTER_PRINT("u_sig_eht_su_mu: %d",
+			    tlv_filter->utlvs.u_sig_eht_su_mu);
+	DP_MON_FILTER_PRINT("u_sig_eht_su: %d", tlv_filter->utlvs.u_sig_eht_su);
+	DP_MON_FILTER_PRINT("u_sig_eht_tb: %d", tlv_filter->utlvs.u_sig_eht_tb);
+	DP_MON_FILTER_PRINT("eht_sig_usr_su: %d",
+			    tlv_filter->utlvs.eht_sig_usr_su);
+	DP_MON_FILTER_PRINT("eht_sig_usr_mu_mimo: %d",
+			    tlv_filter->utlvs.eht_sig_usr_mu_mimo);
+	DP_MON_FILTER_PRINT("eht_sig_usr_ofdma: %d",
+			    tlv_filter->utlvs.eht_sig_usr_ofdma);
+	DP_MON_FILTER_PRINT("he_sig_a_su: %d",
+			    tlv_filter->utlvs.he_sig_a_su);
+	DP_MON_FILTER_PRINT("he_sig_a_mu_dl: %d",
+			    tlv_filter->utlvs.he_sig_a_mu_dl);
+	DP_MON_FILTER_PRINT("he_sig_a_mu_ul: %d",
+			    tlv_filter->utlvs.he_sig_a_mu_ul);
+	DP_MON_FILTER_PRINT("he_sig_b1_mu: %d",
+			    tlv_filter->utlvs.he_sig_b1_mu);
+	DP_MON_FILTER_PRINT("he_sig_b2_mu: %d",
+			    tlv_filter->utlvs.he_sig_b2_mu);
+	DP_MON_FILTER_PRINT("he_sig_b2_ofdma: %d",
+			    tlv_filter->utlvs.he_sig_b2_ofdma);
+	DP_MON_FILTER_PRINT("vht_sig_b_mu160: %d",
+			    tlv_filter->utlvs.vht_sig_b_mu160);
+	DP_MON_FILTER_PRINT("vht_sig_b_mu80: %d",
+			    tlv_filter->utlvs.vht_sig_b_mu80);
+	DP_MON_FILTER_PRINT("vht_sig_b_mu40: %d",
+			    tlv_filter->utlvs.vht_sig_b_mu40);
+	DP_MON_FILTER_PRINT("vht_sig_b_mu20: %d",
+			    tlv_filter->utlvs.vht_sig_b_mu20);
+	DP_MON_FILTER_PRINT("vht_sig_b_su160: %d",
+			    tlv_filter->utlvs.vht_sig_b_su160);
+	DP_MON_FILTER_PRINT("vht_sig_b_su80: %d",
+			    tlv_filter->utlvs.vht_sig_b_su80);
+	DP_MON_FILTER_PRINT("vht_sig_b_su40: %d",
+			    tlv_filter->utlvs.vht_sig_b_su40);
+	DP_MON_FILTER_PRINT("vht_sig_b_su20: %d",
+			    tlv_filter->utlvs.vht_sig_b_su20);
+	DP_MON_FILTER_PRINT("vht_sig_a: %d", tlv_filter->utlvs.vht_sig_a);
+	DP_MON_FILTER_PRINT("ht_sig: %d", tlv_filter->utlvs.ht_sig);
+	DP_MON_FILTER_PRINT("l_sig_b: %d", tlv_filter->utlvs.l_sig_b);
+	DP_MON_FILTER_PRINT("l_sig_a: %d", tlv_filter->utlvs.l_sig_a);
+	DP_MON_FILTER_PRINT("tx_service: %d", tlv_filter->utlvs.tx_service);
+	DP_MON_FILTER_PRINT("wmask tx_fes_setup: %d",
+			    tlv_filter->wmask.tx_fes_setup);
+	DP_MON_FILTER_PRINT("wmask tx_peer_entry: %d",
+			    tlv_filter->wmask.tx_peer_entry);
+	DP_MON_FILTER_PRINT("wmask tx_queue_ext: %d",
+			    tlv_filter->wmask.tx_queue_ext);
+	DP_MON_FILTER_PRINT("wmask tx_msdu_start: %d",
+			    tlv_filter->wmask.tx_msdu_start);
+	DP_MON_FILTER_PRINT("wmask tx_mpdu_start: %d",
+			    tlv_filter->wmask.tx_mpdu_start);
+	DP_MON_FILTER_PRINT("wmask pcu_ppdu_setup_init: %d",
+			    tlv_filter->wmask.pcu_ppdu_setup_init);
+	DP_MON_FILTER_PRINT("wmask rxpcu_user_setup: %d",
+			    tlv_filter->wmask.rxpcu_user_setup);
+}
+
+void dp_mon_filter_show_filter_be(enum dp_mon_filter_mode mode,
+				  struct dp_mon_filter_be *filter)
+{
+	DP_MON_FILTER_PRINT("RX MON RING TLV FILTER CONFIG:");
+	DP_MON_FILTER_PRINT("[Mode %d]: Valid: %d",
+			    mode, filter->rx_tlv_filter.valid);
+
+	if (filter->rx_tlv_filter.valid)
+		dp_rx_mon_filter_show_filter(filter);
+
+	DP_MON_FILTER_PRINT("TX MON RING TLV FILTER CONFIG:");
+	DP_MON_FILTER_PRINT("[Mode %d]: Valid: %d", mode, filter->tx_valid);
+
+	if (filter->tx_valid)
+		dp_tx_mon_filter_show_filter(filter);
 }
 
 #ifdef WDI_EVENT_ENABLE
@@ -1271,9 +1442,9 @@ void dp_mon_filter_setup_rx_pkt_log_full_2_0(struct dp_pdev *pdev)
 	rx_tlv_filter->msdu_start = 1;
 	rx_tlv_filter->msdu_end = 1;
 	rx_tlv_filter->mpdu_end = 1;
-	rx_tlv_filter->attention = 1;
 
-	dp_mon_filter_show_filter_be(mon_pdev_be, mode, &filter);
+	mon_pdev->current_filter_mode = mode;
+	dp_mon_filter_show_filter_be(mode, &filter);
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1292,6 +1463,7 @@ void dp_mon_filter_reset_rx_pkt_log_full_2_0(struct dp_pdev *pdev)
 		return;
 	}
 
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1315,7 +1487,8 @@ void dp_mon_filter_setup_rx_pkt_log_lite_2_0(struct dp_pdev *pdev)
 	dp_mon_filter_set_status_cmn(&mon_pdev_be->mon_pdev,
 				     &filter.rx_tlv_filter);
 
-	dp_mon_filter_show_filter_be(mon_pdev_be, mode, &filter);
+	mon_pdev->current_filter_mode = mode;
+	dp_mon_filter_show_filter_be(mode, &filter);
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1334,6 +1507,7 @@ void dp_mon_filter_reset_rx_pkt_log_lite_2_0(struct dp_pdev *pdev)
 		return;
 	}
 
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1353,12 +1527,13 @@ dp_mon_filter_set_reset_rx_pkt_log_cbf_dest_2_0(struct dp_pdev_be *pdev_be,
 		     DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF :
 		     DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF);
 
+	mon_pdev->current_filter_mode = mode;
 	/*set the filter */
 	if (filter->rx_tlv_filter.valid) {
 		dp_mon_filter_set_cbf_cmn(&pdev_be->pdev,
 					  &filter->rx_tlv_filter);
 
-		dp_mon_filter_show_filter_be(mon_pdev_be, mode, filter);
+		dp_mon_filter_show_filter_be(mode, filter);
 		mon_pdev_be->filter_be[mode][srng_type] = *filter;
 	} else /* reset the filter */
 		mon_pdev_be->filter_be[mode][srng_type] = *filter;
@@ -1397,8 +1572,9 @@ void dp_mon_filter_setup_rx_pkt_log_cbf_2_0(struct dp_pdev *pdev)
 	/* Enabled the filter */
 	filter.rx_tlv_filter.valid = true;
 
+	mon_pdev->current_filter_mode = mode;
 	dp_mon_filter_set_status_cbf(pdev, &filter.rx_tlv_filter);
-	dp_mon_filter_show_filter_be(mon_pdev_be, mode, &filter);
+	dp_mon_filter_show_filter_be(mode, &filter);
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 
 	/* Clear the filter as the same filter will be used to set the
@@ -1440,6 +1616,7 @@ void dp_mon_filter_reset_rx_pktlog_cbf_2_0(struct dp_pdev *pdev)
 	dp_mon_filter_set_reset_rx_pkt_log_cbf_dest_2_0(pdev_be, &filter);
 
 	srng_type = DP_MON_FILTER_SRNG_TYPE_RXMON_DEST;
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1477,7 +1654,8 @@ void dp_mon_filter_setup_pktlog_hybrid_2_0(struct dp_pdev *pdev)
 	tlv_filter->utlvs.recevied_response_info_p2 = 1;
 	tlv_filter->utlvs.response_end_status = 1;
 
-	dp_mon_filter_show_filter_be(mon_pdev_be, mode, &filter);
+	mon_pdev->current_filter_mode = mode;
+	dp_mon_filter_show_filter_be(mode, &filter);
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 
@@ -1496,127 +1674,155 @@ void dp_mon_filter_reset_pktlog_hybrid_2_0(struct dp_pdev *pdev)
 		return;
 	}
 
+	mon_pdev->current_filter_mode = mode;
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 }
 #endif /* WDI_EVENT_ENABLE */
 
-static void dp_tx_mon_filter_show_filter(struct dp_mon_pdev *mon_pdev,
-					 struct dp_mon_filter_be *filter)
+/**
+ * dp_rx_mon_filter_h2t_setup() - Setup the filter for the Target setup
+ * @soc: DP soc handle
+ * @pdev: DP pdev handle
+ * @srng_type: The srng type for which filter wll be set
+ * @tlv_filter: tlv filter
+ */
+static void
+dp_rx_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
+			   enum dp_mon_filter_srng_type srng_type,
+			   struct dp_mon_filter *filter)
 {
-	struct htt_tx_ring_tlv_filter *tlv_filter = &filter->tx_tlv_filter;
+	int32_t current_mode = 0;
+	struct htt_rx_ring_tlv_filter *tlv_filter = &filter->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);
+	struct dp_mon_filter_be *mon_filter;
+	uint32_t src_filter = 0, dst_filter = 0;
 
-	DP_MON_FILTER_PRINT("mgmt_filter: %d", tlv_filter->mgmt_filter);
-	DP_MON_FILTER_PRINT("data_filter: %d", tlv_filter->data_filter);
-	DP_MON_FILTER_PRINT("ctrl_filter: %d", tlv_filter->ctrl_filter);
-	DP_MON_FILTER_PRINT("mgmt_dma_length: %d", tlv_filter->mgmt_dma_length);
-	DP_MON_FILTER_PRINT("ctrl_dma_length: %d", tlv_filter->ctrl_dma_length);
-	DP_MON_FILTER_PRINT("data_dma_length: %d", tlv_filter->data_dma_length);
-	DP_MON_FILTER_PRINT("mgmt_mpdu_end: %d", tlv_filter->mgmt_mpdu_end);
-	DP_MON_FILTER_PRINT("mgmt_msdu_end: %d", tlv_filter->mgmt_msdu_end);
-	DP_MON_FILTER_PRINT("mgmt_mpdu_start: %d", tlv_filter->mgmt_mpdu_start);
-	DP_MON_FILTER_PRINT("mgmt_msdu_start: %d", tlv_filter->mgmt_msdu_start);
-	DP_MON_FILTER_PRINT("ctrl_mpdu_end: %d", tlv_filter->ctrl_mpdu_end);
-	DP_MON_FILTER_PRINT("ctrl_msdu_end: %d", tlv_filter->ctrl_msdu_end);
-	DP_MON_FILTER_PRINT("ctrl_mpdu_start: %d", tlv_filter->ctrl_mpdu_start);
-	DP_MON_FILTER_PRINT("ctrl_msdu_start: %d", tlv_filter->ctrl_msdu_start);
-	DP_MON_FILTER_PRINT("data_mpdu_end: %d", tlv_filter->data_mpdu_end);
-	DP_MON_FILTER_PRINT("data_msdu_end: %d", tlv_filter->data_msdu_end);
-	DP_MON_FILTER_PRINT("data_mpdu_start: %d", tlv_filter->data_mpdu_start);
-	DP_MON_FILTER_PRINT("data_msdu_start: %d", tlv_filter->data_msdu_start);
-	DP_MON_FILTER_PRINT("mgmt_mpdu_log: %d", tlv_filter->mgmt_mpdu_log);
-	DP_MON_FILTER_PRINT("ctrl_mpdu_log: %d", tlv_filter->ctrl_mpdu_log);
-	DP_MON_FILTER_PRINT("data_mpdu_log: %d", tlv_filter->data_mpdu_log);
-	DP_MON_FILTER_PRINT("tx_fes_setup: %d", tlv_filter->dtlvs.tx_fes_setup);
-	DP_MON_FILTER_PRINT("tx_peer_entry: %d", tlv_filter->dtlvs.tx_peer_entry);
-	DP_MON_FILTER_PRINT("tx_queue_extension: %d", tlv_filter->dtlvs.tx_queue_extension);
-	DP_MON_FILTER_PRINT("tx_last_mpdu_fetched: %d", tlv_filter->dtlvs.tx_last_mpdu_fetched);
-	DP_MON_FILTER_PRINT("tx_data_sync: %d", tlv_filter->dtlvs.tx_data_sync);
-	DP_MON_FILTER_PRINT("pcu_ppdu_setup_init: %d", tlv_filter->dtlvs.pcu_ppdu_setup_init);
-	DP_MON_FILTER_PRINT("fw2s_mon: %d", tlv_filter->dtlvs.fw2s_mon);
-	DP_MON_FILTER_PRINT("tx_loopback_setup: %d", tlv_filter->dtlvs.tx_loopback_setup);
-	DP_MON_FILTER_PRINT("ndp_preamble_done: %d", tlv_filter->dtlvs.ndp_preamble_done);
-	DP_MON_FILTER_PRINT("tx_raw_frame_setup: %d", tlv_filter->dtlvs.tx_raw_frame_setup);
-	DP_MON_FILTER_PRINT("txpcu_user_setup: %d", tlv_filter->dtlvs.txpcu_user_setup);
-	DP_MON_FILTER_PRINT("rxpcu_setup: %d", tlv_filter->dtlvs.rxpcu_setup);
-	DP_MON_FILTER_PRINT("rxpcu_setup_complete: %d", tlv_filter->dtlvs.rxpcu_setup_complete);
-	DP_MON_FILTER_PRINT("coex_tx_req: %d", tlv_filter->dtlvs.coex_tx_req);
-	DP_MON_FILTER_PRINT("rxpcu_user_setup: %d", tlv_filter->dtlvs.rxpcu_user_setup);
-	DP_MON_FILTER_PRINT("rxpcu_user_setup_ext: %d", tlv_filter->dtlvs.rxpcu_user_setup_ext);
-	DP_MON_FILTER_PRINT("wur_data: %d", tlv_filter->dtlvs.wur_data);
-	DP_MON_FILTER_PRINT("tqm_mpdu_global_start: %d", tlv_filter->dtlvs.tqm_mpdu_global_start);
-	DP_MON_FILTER_PRINT("tx_fes_setup_complete: %d", tlv_filter->dtlvs.tx_fes_setup_complete);
-	DP_MON_FILTER_PRINT("scheduler_end: %d", tlv_filter->dtlvs.scheduler_end);
-	DP_MON_FILTER_PRINT("sch_wait_instr_tx_path: %d", tlv_filter->dtlvs.sch_wait_instr_tx_path);
-	DP_MON_FILTER_PRINT("rx_response_required_info: %d", tlv_filter->utlvs.rx_response_required_info);
-	DP_MON_FILTER_PRINT("response_start_status: %d", tlv_filter->utlvs.response_start_status);
-	DP_MON_FILTER_PRINT("response_end_status: %d", tlv_filter->utlvs.response_end_status);
-	DP_MON_FILTER_PRINT("tx_fes_status_start: %d", tlv_filter->utlvs.tx_fes_status_start);
-	DP_MON_FILTER_PRINT("tx_fes_status_end: %d", tlv_filter->utlvs.tx_fes_status_end);
-	DP_MON_FILTER_PRINT("tx_fes_status_start_ppdu: %d", tlv_filter->utlvs.tx_fes_status_start_ppdu);
-	DP_MON_FILTER_PRINT("tx_fes_status_user_ppdu: %d", tlv_filter->utlvs.tx_fes_status_user_ppdu);
-	DP_MON_FILTER_PRINT("tx_fes_status_ack_or_ba: %d", tlv_filter->utlvs.tx_fes_status_ack_or_ba);
-	DP_MON_FILTER_PRINT("tx_fes_status_1k_ba: %d", tlv_filter->utlvs.tx_fes_status_1k_ba);
-	DP_MON_FILTER_PRINT("tx_fes_status_start_prot: %d", tlv_filter->utlvs.tx_fes_status_start_prot);
-	DP_MON_FILTER_PRINT("tx_fes_status_prot: %d", tlv_filter->utlvs.tx_fes_status_prot);
-	DP_MON_FILTER_PRINT("tx_fes_status_user_response: %d", tlv_filter->utlvs.tx_fes_status_user_response);
-	DP_MON_FILTER_PRINT("rx_frame_bitmap_ack: %d", tlv_filter->utlvs.rx_frame_bitmap_ack);
-	DP_MON_FILTER_PRINT("rx_frame_1k_bitmap_ack: %d", tlv_filter->utlvs.rx_frame_1k_bitmap_ack);
-	DP_MON_FILTER_PRINT("coex_tx_status: %d", tlv_filter->utlvs.coex_tx_status);
-	DP_MON_FILTER_PRINT("recevied_response_info: %d", tlv_filter->utlvs.recevied_response_info);
-	DP_MON_FILTER_PRINT("recevied_response_info_p2: %d", tlv_filter->utlvs.recevied_response_info_p2);
-	DP_MON_FILTER_PRINT("ofdma_trigger_details: %d", tlv_filter->utlvs.ofdma_trigger_details);
-	DP_MON_FILTER_PRINT("recevied_trigger_info: %d", tlv_filter->utlvs.recevied_trigger_info);
-	DP_MON_FILTER_PRINT("pdg_tx_request: %d", tlv_filter->utlvs.pdg_tx_request);
-	DP_MON_FILTER_PRINT("pdg_response: %d", tlv_filter->utlvs.pdg_response);
-	DP_MON_FILTER_PRINT("pdg_trig_response: %d", tlv_filter->utlvs.pdg_trig_response);
-	DP_MON_FILTER_PRINT("trigger_response_tx_done: %d", tlv_filter->utlvs.trigger_response_tx_done);
-	DP_MON_FILTER_PRINT("prot_tx_end: %d", tlv_filter->utlvs.prot_tx_end);
-	DP_MON_FILTER_PRINT("ppdu_tx_end: %d", tlv_filter->utlvs.ppdu_tx_end);
-	DP_MON_FILTER_PRINT("r2r_status_end: %d", tlv_filter->utlvs.r2r_status_end);
-	DP_MON_FILTER_PRINT("flush_req: %d", tlv_filter->utlvs.flush_req);
-	DP_MON_FILTER_PRINT("mactx_phy_desc: %d", tlv_filter->utlvs.mactx_phy_desc);
-	DP_MON_FILTER_PRINT("mactx_user_desc_cmn: %d", tlv_filter->utlvs.mactx_user_desc_cmn);
-	DP_MON_FILTER_PRINT("mactx_user_desc_per_usr: %d", tlv_filter->utlvs.mactx_user_desc_per_usr);
-	DP_MON_FILTER_PRINT("tqm_acked_1k_mpdu: %d", tlv_filter->utlvs.tqm_acked_1k_mpdu);
-	DP_MON_FILTER_PRINT("tqm_acked_mpdu: %d", tlv_filter->utlvs.tqm_acked_mpdu);
-	DP_MON_FILTER_PRINT("tqm_update_tx_mpdu_count: %d", tlv_filter->utlvs.tqm_update_tx_mpdu_count);
-	DP_MON_FILTER_PRINT("phytx_ppdu_header_info_request: %d", tlv_filter->utlvs.phytx_ppdu_header_info_request);
-	DP_MON_FILTER_PRINT("u_sig_eht_su_mu: %d", tlv_filter->utlvs.u_sig_eht_su_mu);
-	DP_MON_FILTER_PRINT("u_sig_eht_su: %d", tlv_filter->utlvs.u_sig_eht_su);
-	DP_MON_FILTER_PRINT("u_sig_eht_tb: %d", tlv_filter->utlvs.u_sig_eht_tb);
-	DP_MON_FILTER_PRINT("eht_sig_usr_su: %d", tlv_filter->utlvs.eht_sig_usr_su);
-	DP_MON_FILTER_PRINT("eht_sig_usr_mu_mimo: %d", tlv_filter->utlvs.eht_sig_usr_mu_mimo);
-	DP_MON_FILTER_PRINT("eht_sig_usr_ofdma: %d", tlv_filter->utlvs.eht_sig_usr_ofdma);
-	DP_MON_FILTER_PRINT("he_sig_a_su: %d", tlv_filter->utlvs.he_sig_a_su);
-	DP_MON_FILTER_PRINT("he_sig_a_mu_dl: %d", tlv_filter->utlvs.he_sig_a_mu_dl);
-	DP_MON_FILTER_PRINT("he_sig_a_mu_ul: %d", tlv_filter->utlvs.he_sig_a_mu_ul);
-	DP_MON_FILTER_PRINT("he_sig_b1_mu: %d", tlv_filter->utlvs.he_sig_b1_mu);
-	DP_MON_FILTER_PRINT("he_sig_b2_mu: %d", tlv_filter->utlvs.he_sig_b2_mu);
-	DP_MON_FILTER_PRINT("he_sig_b2_ofdma: %d", tlv_filter->utlvs.he_sig_b2_ofdma);
-	DP_MON_FILTER_PRINT("vht_sig_b_mu160: %d", tlv_filter->utlvs.vht_sig_b_mu160);
-	DP_MON_FILTER_PRINT("vht_sig_b_mu80: %d", tlv_filter->utlvs.vht_sig_b_mu80);
-	DP_MON_FILTER_PRINT("vht_sig_b_mu40: %d", tlv_filter->utlvs.vht_sig_b_mu40);
-	DP_MON_FILTER_PRINT("vht_sig_b_mu20: %d", tlv_filter->utlvs.vht_sig_b_mu20);
-	DP_MON_FILTER_PRINT("vht_sig_b_su160: %d", tlv_filter->utlvs.vht_sig_b_su160);
-	DP_MON_FILTER_PRINT("vht_sig_b_su80: %d", tlv_filter->utlvs.vht_sig_b_su80);
-	DP_MON_FILTER_PRINT("vht_sig_b_su40: %d", tlv_filter->utlvs.vht_sig_b_su40);
-	DP_MON_FILTER_PRINT("vht_sig_b_su20: %d", tlv_filter->utlvs.vht_sig_b_su20);
-	DP_MON_FILTER_PRINT("vht_sig_a: %d", tlv_filter->utlvs.vht_sig_a);
-	DP_MON_FILTER_PRINT("ht_sig: %d", tlv_filter->utlvs.ht_sig);
-	DP_MON_FILTER_PRINT("l_sig_b: %d", tlv_filter->utlvs.l_sig_b);
-	DP_MON_FILTER_PRINT("l_sig_a: %d", tlv_filter->utlvs.l_sig_a);
-	DP_MON_FILTER_PRINT("tx_service: %d", tlv_filter->utlvs.tx_service);
-	DP_MON_FILTER_PRINT("wmask tx_fes_setup: %d", tlv_filter->wmask.tx_fes_setup);
-	DP_MON_FILTER_PRINT("wmask tx_peer_entry: %d", tlv_filter->wmask.tx_peer_entry);
-	DP_MON_FILTER_PRINT("wmask tx_queue_ext: %d", tlv_filter->wmask.tx_queue_ext);
-	DP_MON_FILTER_PRINT("wmask tx_msdu_start: %d", tlv_filter->wmask.tx_msdu_start);
-	DP_MON_FILTER_PRINT("wmask tx_mpdu_start: %d", tlv_filter->wmask.tx_mpdu_start);
-	DP_MON_FILTER_PRINT("wmask pcu_ppdu_setup_init: %d", tlv_filter->wmask.pcu_ppdu_setup_init);
-	DP_MON_FILTER_PRINT("wmask rxpcu_user_setup: %d", tlv_filter->wmask.rxpcu_user_setup);
+	/*
+	 * Loop through all the modes.
+	 */
+	for (current_mode = 0; current_mode < DP_MON_FILTER_MAX_MODE;
+	     current_mode++) {
+		mon_filter =
+			&mon_pdev_be->filter_be[current_mode][srng_type];
+
+		/*
+		 * Check if the correct mode is enabled or not.
+		 */
+		if (!mon_filter->rx_tlv_filter.valid)
+			continue;
+
+		filter->valid = true;
+
+		/*
+		 * Set the super bit fields
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_TLV);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_TLV);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_TLV, dst_filter);
+
+		/*
+		 * Set the filter management filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_FP_MGMT);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_FP_MGMT);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_FP_MGMT, dst_filter);
+
+		/*
+		 * Set the monitor other management filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MO_MGMT);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_MO_MGMT);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_MO_MGMT, dst_filter);
+
+		/*
+		 * Set the filter pass control filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_FP_CTRL);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_FP_CTRL);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_FP_CTRL, dst_filter);
+
+		/*
+		 * Set the monitor other control filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MO_CTRL);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_MO_CTRL);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_MO_CTRL, dst_filter);
+
+		/*
+		 * Set the filter pass data filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_FP_DATA);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter,
+					       FILTER_FP_DATA);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_FP_DATA, dst_filter);
+
+		/*
+		 * Set the monitor other data filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MO_DATA);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_MO_DATA);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_MO_DATA, dst_filter);
+
+		/*
+		 * Set the monitor direct data filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MD_DATA);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter,
+					       FILTER_MD_DATA);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter,
+				  FILTER_MD_DATA, dst_filter);
+
+		/*
+		 * Set the monitor direct management filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MD_MGMT);
+		dst_filter = DP_MON_FILTER_GET(tlv_filter, FILTER_MD_MGMT);
+		dst_filter |= src_filter;
+		DP_MON_FILTER_SET(tlv_filter, FILTER_MD_MGMT, dst_filter);
+
+		/*
+		 * Set the monitor direct management filter.
+		 */
+		src_filter =
+			DP_MON_FILTER_GET(&mon_filter->rx_tlv_filter.tlv_filter,
+					  FILTER_MD_CTRL);
+		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);
+		dp_mon_filter_show_filter_be(current_mode, mon_filter);
+	}
 }
 
 /**
- * dp_mon_filter_h2t_setup() - Setup the filter for the Target setup
+ * dp_tx_mon_filter_h2t_setup() - Setup the filter for the Target setup
  * @soc: DP soc handle
  * @pdev: DP pdev handle
  * @srng_type: The srng type for which filter wll be set
@@ -1626,10 +1832,8 @@ static
 void dp_tx_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
 				struct dp_mon_filter_be *filter)
 {
-	struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
-
 	/* currently all available filter configuration enabled  */
-	dp_tx_mon_filter_show_filter(mon_pdev, filter);
+	dp_tx_mon_filter_show_filter(filter);
 }
 
 static QDF_STATUS
@@ -1721,32 +1925,23 @@ QDF_STATUS dp_rx_mon_filter_update_2_0(struct dp_pdev *pdev)
 {
 	struct dp_soc *soc = pdev->soc;
 	struct dp_mon_filter_be filter = {0};
-	struct dp_mon_filter_be *filter_ptr;
 	struct htt_rx_ring_tlv_filter *rx_tlv_filter;
-	enum dp_mon_filter_mode mode = DP_MON_FILTER_MONITOR_MODE;
+	enum dp_mon_filter_mode mode;
 	enum dp_mon_filter_srng_type srng_type =
 		DP_MON_FILTER_SRNG_TYPE_RXMON_DEST;
 	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);
 
 	if (!pdev) {
 		dp_mon_filter_err("pdev Context is null");
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	filter_ptr = &mon_pdev_be->filter_be[mode][srng_type];
-	if (!filter_ptr) {
-		dp_mon_filter_err("Filter not allocated");
-		return QDF_STATUS_E_FAILURE;
-	}
-
+	mode = mon_pdev->current_filter_mode;
 	rx_tlv_filter = &filter.rx_tlv_filter.tlv_filter;
-	dp_mon_filter_h2t_setup(soc, pdev, srng_type, &filter.rx_tlv_filter);
+	dp_rx_mon_filter_h2t_setup(soc, pdev, srng_type, &filter.rx_tlv_filter);
 	dp_mon_ht2_rx_ring_cfg(soc, pdev, srng_type,
 			       &filter.rx_tlv_filter.tlv_filter);
-	dp_mon_filter_show_filter(mon_pdev,
-				  DP_MON_FILTER_MONITOR_MODE,
-				  &filter.rx_tlv_filter);
+	dp_mon_filter_show_filter_be(mode,
+				     &filter);
 	return QDF_STATUS_SUCCESS;
 }

+ 3 - 3
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

@@ -95,9 +95,9 @@ dp_rx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
 			mon_desc->unmapped = 1;
 		}
 
-		dp_rx_process_pktlog(soc, pdev, ppdu_info,
-				     mon_desc->buf_addr,
-				     hal_mon_rx_desc.end_offset);
+		dp_rx_process_pktlog_be(soc, pdev, ppdu_info,
+					mon_desc->buf_addr,
+					hal_mon_rx_desc.end_offset);
 
 		dp_rx_mon_process_status_tlv(soc, pdev,
 					     &hal_mon_rx_desc,

+ 4 - 4
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h

@@ -125,7 +125,7 @@ dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
 				 struct cdp_rx_indication_ppdu *ppdu);
 
 /*
- * dp_rx_process_pktlog() - process pktlog
+ * dp_rx_process_pktlog_be() - process pktlog
  * @soc: dp soc handle
  * @pdev: dp pdev handle
  * @ppdu_info: HAL PPDU info
@@ -134,9 +134,9 @@ dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
  *
  * Return: void
  */
-void dp_rx_process_pktlog(struct dp_soc *soc, struct dp_pdev *pdev,
-			  struct hal_rx_ppdu_info *ppdu_info,
-			  void *status_frag, uint32_t end_offset);
+void dp_rx_process_pktlog_be(struct dp_soc *soc, struct dp_pdev *pdev,
+			     struct hal_rx_ppdu_info *ppdu_info,
+			     void *status_frag, uint32_t end_offset);
 
 #if !defined(DISABLE_MON_CONFIG)
 /*

+ 3 - 3
dp/wifi3.0/monitor/2.0/dp_rx_mon_status_2.0.c

@@ -35,9 +35,9 @@ void dp_rx_mon_process_status_tlv(struct dp_soc *soc,
 }
 
 void
-dp_rx_process_pktlog(struct dp_soc *soc, struct dp_pdev *pdev,
-		     struct hal_rx_ppdu_info *ppdu_info,
-		     void *status_frag, uint32_t end_offset)
+dp_rx_process_pktlog_be(struct dp_soc *soc, struct dp_pdev *pdev,
+			struct hal_rx_ppdu_info *ppdu_info,
+			void *status_frag, uint32_t end_offset)
 {
 	struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
 	qdf_nbuf_t nbuf = NULL;

+ 2 - 0
dp/wifi3.0/monitor/dp_mon.h

@@ -23,6 +23,7 @@
 #include "dp_types.h"
 #include "dp_htt.h"
 
+#include <dp_mon_filter.h>
 #ifdef WLAN_TX_PKT_CAPTURE_ENH
 #include "dp_tx_capture.h"
 #endif
@@ -852,6 +853,7 @@ struct  dp_mon_pdev {
 	bool reset_scan_spcl_vap_stats_enable;
 #endif
 	bool is_tlv_hdr_64_bit;
+	enum dp_mon_filter_mode current_filter_mode;
 };
 
 struct  dp_mon_vdev {