Browse Source

qcacmn: Apply CFR filter on top of default config

Changes to fetch the default monitor ring config and then
apply CFR filter settings on top of it instead of overwriting
the default one.

CRs-Fixed: 3241818
Change-Id: I7b9d1c9560fd665e0f6418176e6dd3642450442f
Shwetha G K 3 years ago
parent
commit
2c87e51684
1 changed files with 32 additions and 37 deletions
  1. 32 37
      dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

+ 32 - 37
dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

@@ -2989,10 +2989,11 @@ static void dp_cfr_filter_2_0(struct cdp_soc_t *soc_hdl,
 {
 	struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
 	struct dp_pdev *pdev = NULL;
-	struct htt_rx_ring_tlv_filter htt_tlv_filter = {0};
-	int max_mac_rings;
-	uint8_t mac_id = 0;
+	struct htt_rx_ring_tlv_filter *htt_tlv_filter;
 	struct dp_mon_pdev *mon_pdev;
+	struct dp_mon_filter_be filter = {0};
+	enum dp_mon_filter_srng_type srng_type =
+		DP_MON_FILTER_SRNG_TYPE_RXMON_DEST;
 
 	pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
 	if (!pdev) {
@@ -3009,49 +3010,43 @@ static void dp_cfr_filter_2_0(struct cdp_soc_t *soc_hdl,
 
 	soc = pdev->soc;
 	pdev->cfr_rcc_mode = false;
-	max_mac_rings = wlan_cfg_get_num_mac_rings(pdev->wlan_cfg_ctx);
-	dp_update_num_mac_rings_for_dbs(soc, &max_mac_rings);
 
-	dp_mon_debug("Max_mac_rings %d", max_mac_rings);
+	/* Get default tlv settings */
+	htt_tlv_filter = &filter.rx_tlv_filter.tlv_filter;
+	dp_rx_mon_filter_h2t_setup(soc, pdev, srng_type, &filter.rx_tlv_filter);
+
+	if (filter.rx_tlv_filter.valid)
+		htt_tlv_filter->enable = 1;
+	else
+		htt_tlv_filter->enable = 0;
+
 	dp_mon_info("enable : %d, mode: 0x%x", enable, filter_val->mode);
 
 	if (enable) {
 		pdev->cfr_rcc_mode = true;
-		htt_tlv_filter.ppdu_start = 1;
-		htt_tlv_filter.ppdu_end = 1;
-		htt_tlv_filter.ppdu_end_user_stats = 1;
-		htt_tlv_filter.ppdu_end_user_stats_ext = 1;
-		htt_tlv_filter.ppdu_end_status_done = 1;
-		htt_tlv_filter.mpdu_start = 1;
-		htt_tlv_filter.offset_valid = false;
-
-		htt_tlv_filter.enable_fp =
+		htt_tlv_filter->ppdu_start = 1;
+		htt_tlv_filter->ppdu_end = 1;
+		htt_tlv_filter->ppdu_end_user_stats = 1;
+		htt_tlv_filter->ppdu_end_user_stats_ext = 1;
+		htt_tlv_filter->ppdu_end_status_done = 1;
+		htt_tlv_filter->mpdu_start = 1;
+		htt_tlv_filter->offset_valid = false;
+
+		htt_tlv_filter->enable_fp =
 			(filter_val->mode & MON_FILTER_PASS) ? 1 : 0;
-		htt_tlv_filter.enable_md = 0;
-		htt_tlv_filter.enable_mo =
+		htt_tlv_filter->enable_md = 0;
+		htt_tlv_filter->enable_mo =
 			(filter_val->mode & MON_FILTER_OTHER) ? 1 : 0;
-		htt_tlv_filter.fp_mgmt_filter = filter_val->fp_mgmt;
-		htt_tlv_filter.fp_ctrl_filter = filter_val->fp_ctrl;
-		htt_tlv_filter.fp_data_filter = filter_val->fp_data;
-		htt_tlv_filter.mo_mgmt_filter = filter_val->mo_mgmt;
-		htt_tlv_filter.mo_ctrl_filter = filter_val->mo_ctrl;
-		htt_tlv_filter.mo_data_filter = filter_val->mo_data;
+		htt_tlv_filter->fp_mgmt_filter = filter_val->fp_mgmt;
+		htt_tlv_filter->fp_ctrl_filter = filter_val->fp_ctrl;
+		htt_tlv_filter->fp_data_filter = filter_val->fp_data;
+		htt_tlv_filter->mo_mgmt_filter = filter_val->mo_mgmt;
+		htt_tlv_filter->mo_ctrl_filter = filter_val->mo_ctrl;
+		htt_tlv_filter->mo_data_filter = filter_val->mo_data;
 	}
 
-	for (mac_id = 0;
-	     mac_id  < soc->wlan_cfg_ctx->num_rxdma_dst_rings_per_pdev;
-	     mac_id++) {
-		int mac_for_pdev =
-			dp_get_mac_id_for_pdev(mac_id, pdev->pdev_id);
-
-		if (soc->wlan_cfg_ctx->rxdma1_enable) {
-			htt_h2t_rx_ring_cfg(soc->htt_handle, mac_for_pdev,
-					    soc->rxdma_mon_dst_ring[mac_id]
-					    .hal_srng, RXDMA_MONITOR_DST,
-					    RX_DATA_BUFFER_SIZE,
-					    &htt_tlv_filter);
-		}
-	}
+	dp_mon_ht2_rx_ring_cfg(soc, pdev, srng_type,
+			       &filter.rx_tlv_filter.tlv_filter);
 }
 
 void dp_cfr_filter_register_2_0(struct cdp_ops *ops)