浏览代码

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 年之前
父节点
当前提交
2c87e51684
共有 1 个文件被更改,包括 32 次插入37 次删除
  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)