Bläddra i källkod

qcacmn: Enable low watermark interrupt for WKK RxMON

Enable low watermark interrupt for WKK RxMON

CRs-Fixed: 3347545
Change-Id: Ia78878aab1ded951a2ecd4a276696ac150910c43
Amir Patel 2 år sedan
förälder
incheckning
05a6d5283d
2 ändrade filer med 18 tillägg och 17 borttagningar
  1. 6 4
      dp/wifi3.0/monitor/2.0/dp_mon_2.0.c
  2. 12 13
      dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

+ 6 - 4
dp/wifi3.0/monitor/2.0/dp_mon_2.0.c

@@ -472,7 +472,7 @@ QDF_STATUS dp_vdev_set_monitor_mode_buf_rings_rx_2_0(struct dp_pdev *pdev)
 	rx_mon_max_entries = wlan_cfg_get_dp_soc_rx_mon_buf_ring_size(soc_cfg_ctx);
 
 	hal_set_low_threshold(soc->rxdma_mon_buf_ring[0].hal_srng,
-			      rx_mon_max_entries >> 2);
+			      MON_BUF_MIN_ENTRIES << 2);
 	status = htt_srng_setup(soc->htt_handle, 0,
 				soc->rxdma_mon_buf_ring[0].hal_srng,
 				RXDMA_MONITOR_BUF);
@@ -782,7 +782,8 @@ QDF_STATUS dp_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc)
 	struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
 	QDF_STATUS status;
 
-	hal_set_low_threshold(soc->rxdma_mon_buf_ring[0].hal_srng, 0);
+	hal_set_low_threshold(soc->rxdma_mon_buf_ring[0].hal_srng,
+			      MON_BUF_MIN_ENTRIES << 2);
 	status = htt_srng_setup(soc->htt_handle, 0,
 				soc->rxdma_mon_buf_ring[0].hal_srng,
 				RXDMA_MONITOR_BUF);
@@ -884,7 +885,7 @@ QDF_STATUS dp_rx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 	struct dp_intr_stats *intr_stats = &int_ctx->intr_stats;
 	struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
 	uint32_t num_entries_avail;
-	int sync_hw_ptr = 1;
+	int sync_hw_ptr = 1, hp = 0, tp = 0;
 	void *hal_srng;
 
 	rx_mon_buf_ring = &soc->rxdma_mon_buf_ring[0];
@@ -896,6 +897,7 @@ QDF_STATUS dp_rx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 	num_entries_avail = hal_srng_src_num_avail(soc->hal_soc,
 						   hal_srng,
 						   sync_hw_ptr);
+	hal_get_sw_hptp(soc->hal_soc, (hal_ring_handle_t)hal_srng, &tp, &hp);
 	hal_srng_access_end(soc->hal_soc, hal_srng);
 
 	if (num_entries_avail)
@@ -1299,7 +1301,7 @@ static void dp_mon_register_intr_ops_2_0(struct dp_soc *soc)
 	struct dp_mon_soc *mon_soc = soc->monitor_soc;
 
 	mon_soc->mon_ops->rx_mon_refill_buf_ring =
-			NULL,
+			dp_rx_mon_refill_buf_ring_2_0,
 	mon_soc->mon_ops->tx_mon_refill_buf_ring =
 			NULL,
 	mon_soc->mon_rx_process = dp_rx_mon_process_2_0;

+ 12 - 13
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

@@ -1018,10 +1018,10 @@ dp_rx_mon_flush_status_buf_queue(struct dp_pdev *pdev)
 	if (work_done) {
 		mon_pdev->rx_mon_stats.mon_rx_bufs_replenished_dest +=
 			work_done;
-		dp_mon_buffers_replenish(soc, &soc->rxdma_mon_buf_ring[0],
-					 rx_mon_desc_pool,
-					 work_done,
-					 &desc_list, &tail, NULL);
+		if (desc_list)
+			dp_mon_add_desc_list_to_free_list(soc,
+							  &desc_list, &tail,
+							  rx_mon_desc_pool);
 	}
 }
 
@@ -1051,10 +1051,9 @@ dp_rx_mon_handle_flush_n_trucated_ppdu(struct dp_soc *soc,
 	DP_STATS_INC(mon_soc, frag_free, 1);
 	dp_mon_add_to_free_desc_list(&desc_list, &tail, mon_desc);
 	work_done = 1;
-	dp_mon_buffers_replenish(soc, &soc->rxdma_mon_buf_ring[0],
-				 rx_mon_desc_pool,
-				 work_done,
-				 &desc_list, &tail, NULL);
+	if (desc_list)
+		dp_mon_add_desc_list_to_free_list(soc, &desc_list, &tail,
+						  rx_mon_desc_pool);
 }
 
 uint8_t dp_rx_mon_process_tlv_status(struct dp_pdev *pdev,
@@ -1514,11 +1513,11 @@ dp_rx_mon_process_status_tlv(struct dp_pdev *pdev)
 	dp_mon_rx_stats_update_rssi_dbm_params(mon_pdev, ppdu_info);
 	if (work_done) {
 		mon_pdev->rx_mon_stats.mon_rx_bufs_replenished_dest +=
-				work_done;
-		dp_mon_buffers_replenish(soc, &soc->rxdma_mon_buf_ring[0],
-					 rx_mon_desc_pool,
-					 work_done,
-					 &desc_list, &tail, NULL);
+			work_done;
+		if (desc_list)
+			dp_mon_add_desc_list_to_free_list(soc,
+							  &desc_list, &tail,
+							  rx_mon_desc_pool);
 	}
 
 	ppdu_info->rx_status.tsft = ppdu_info->rx_status.tsft +