Browse Source

qcacmn: York Scan radio monitor mode bringup

Initial changes for York scan radio bringup in monitor mode.

Change-Id: I99c9a6eea4c9bf2255b92975e3862500d31c2f1d
CRs-Fixed: 3421410
Santosh Anbu 2 years ago
parent
commit
ea42206e31
3 changed files with 43 additions and 9 deletions
  1. 13 3
      dp/wifi3.0/dp_main.c
  2. 22 6
      dp/wifi3.0/dp_rx.c
  3. 8 0
      dp/wifi3.0/li/dp_li.c

+ 13 - 3
dp/wifi3.0/dp_main.c

@@ -2610,8 +2610,15 @@ static int dp_process_rxdma_dst_ring(struct dp_soc *soc,
 				     int mac_for_pdev,
 				     int total_budget)
 {
-	return dp_rxdma_err_process(int_ctx, soc, mac_for_pdev,
-				    total_budget);
+	uint32_t target_type;
+
+	target_type = hal_get_target_type(soc->hal_soc);
+	if (target_type == TARGET_TYPE_QCN9160)
+		return dp_monitor_process(soc, int_ctx,
+					  mac_for_pdev, total_budget);
+	else
+		return dp_rxdma_err_process(int_ctx, soc, mac_for_pdev,
+					    total_budget);
 }
 
 /**
@@ -17263,11 +17270,14 @@ static void dp_soc_cfg_attach(struct dp_soc *soc)
 	case TARGET_TYPE_QCA6018:
 	case TARGET_TYPE_QCA9574:
 	case TARGET_TYPE_QCN6122:
-	case TARGET_TYPE_QCN9160:
 	case TARGET_TYPE_QCA5018:
 		wlan_cfg_set_tso_desc_attach_defer(soc->wlan_cfg_ctx, 1);
 		wlan_cfg_set_rxdma1_enable(soc->wlan_cfg_ctx);
 		break;
+	case TARGET_TYPE_QCN9160:
+		wlan_cfg_set_tso_desc_attach_defer(soc->wlan_cfg_ctx, 1);
+		soc->wlan_cfg_ctx->rxdma1_enable = 0;
+		break;
 	case TARGET_TYPE_QCN9000:
 		wlan_cfg_set_tso_desc_attach_defer(soc->wlan_cfg_ctx, 1);
 		wlan_cfg_set_rxdma1_enable(soc->wlan_cfg_ctx);

+ 22 - 6
dp/wifi3.0/dp_rx.c

@@ -3057,6 +3057,7 @@ QDF_STATUS dp_rx_pdev_desc_pool_init(struct dp_pdev *pdev)
 	uint32_t rx_sw_desc_num;
 	struct dp_srng *dp_rxdma_srng;
 	struct rx_desc_pool *rx_desc_pool;
+	uint32_t target_type = hal_get_target_type(soc->hal_soc);
 
 	rx_desc_pool = &soc->rx_desc_buf[mac_for_pdev];
 	if (wlan_cfg_get_dp_pdev_nss_enabled(pdev->wlan_cfg_ctx)) {
@@ -3086,7 +3087,10 @@ QDF_STATUS dp_rx_pdev_desc_pool_init(struct dp_pdev *pdev)
 	rx_desc_pool->buf_size = RX_DATA_BUFFER_SIZE;
 	rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
 	/* Disable monitor dest processing via frag */
-	dp_rx_enable_mon_dest_frag(rx_desc_pool, false);
+	if (target_type == TARGET_TYPE_QCN9160)
+		dp_rx_enable_mon_dest_frag(rx_desc_pool, true);
+	else
+		dp_rx_enable_mon_dest_frag(rx_desc_pool, false);
 
 	dp_rx_desc_pool_init(soc, mac_for_pdev,
 			     rx_sw_desc_num, rx_desc_pool);
@@ -3112,6 +3116,7 @@ dp_rx_pdev_buffers_alloc(struct dp_pdev *pdev)
 	struct dp_srng *dp_rxdma_srng;
 	struct rx_desc_pool *rx_desc_pool;
 	uint32_t rxdma_entries;
+	uint32_t target_type = hal_get_target_type(soc->hal_soc);
 
 	dp_rxdma_srng = &soc->rx_refill_buf_ring[mac_for_pdev];
 	rxdma_entries = dp_rxdma_srng->num_entries;
@@ -3123,10 +3128,16 @@ dp_rx_pdev_buffers_alloc(struct dp_pdev *pdev)
 	 */
 	dp_rx_buffer_pool_init(soc, mac_for_pdev);
 
-	return dp_pdev_rx_buffers_attach_simple(soc, mac_for_pdev,
-						dp_rxdma_srng,
-						rx_desc_pool,
-						rxdma_entries - 1);
+	if (target_type == TARGET_TYPE_QCN9160)
+		return dp_pdev_rx_buffers_attach(soc, mac_for_pdev,
+						 dp_rxdma_srng,
+						 rx_desc_pool,
+						 rxdma_entries - 1);
+	else
+		return dp_pdev_rx_buffers_attach_simple(soc, mac_for_pdev,
+							dp_rxdma_srng,
+							rx_desc_pool,
+							rxdma_entries - 1);
 }
 
 void
@@ -3135,10 +3146,15 @@ dp_rx_pdev_buffers_free(struct dp_pdev *pdev)
 	int mac_for_pdev = pdev->lmac_id;
 	struct dp_soc *soc = pdev->soc;
 	struct rx_desc_pool *rx_desc_pool;
+	uint32_t target_type = hal_get_target_type(soc->hal_soc);
 
 	rx_desc_pool = &soc->rx_desc_buf[mac_for_pdev];
 
-	dp_rx_desc_nbuf_free(soc, rx_desc_pool, false);
+	if (target_type == TARGET_TYPE_QCN9160)
+		dp_rx_desc_frag_free(soc, rx_desc_pool);
+	else
+		dp_rx_desc_nbuf_free(soc, rx_desc_pool, false);
+
 	dp_rx_buffer_pool_deinit(soc, mac_for_pdev);
 }
 

+ 8 - 0
dp/wifi3.0/li/dp_li.c

@@ -219,6 +219,10 @@ dp_rxdma_ring_sel_cfg_li(struct dp_soc *soc)
 	struct htt_rx_ring_tlv_filter htt_tlv_filter = {0};
 	struct dp_srng *rx_mac_srng;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	uint32_t target_type = hal_get_target_type(soc->hal_soc);
+
+	if (target_type == TARGET_TYPE_QCN9160)
+		return status;
 
 	htt_tlv_filter.mpdu_start = 1;
 	htt_tlv_filter.msdu_start = 1;
@@ -300,6 +304,10 @@ dp_rxdma_ring_sel_cfg_li(struct dp_soc *soc)
 	struct htt_rx_ring_tlv_filter htt_tlv_filter = {0};
 	struct dp_srng *rx_mac_srng;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	uint32_t target_type = hal_get_target_type(soc->hal_soc);
+
+	if (target_type == TARGET_TYPE_QCN9160)
+		return status;
 
 	htt_tlv_filter.mpdu_start = 1;
 	htt_tlv_filter.msdu_start = 1;