浏览代码

qcacmn: Use appropriate srng id in htt_srng_setup and ring_selction_cg

Use appropriate srng id in htt_srng_setup and ring_selction_cg
for WKK monitor

Change-Id: Ibe04f51f787e6fa3fe0b9d8a8c6a54a33f673139
Amir Patel 3 年之前
父节点
当前提交
2219ac036c
共有 2 个文件被更改,包括 43 次插入4 次删除
  1. 8 4
      dp/wifi3.0/dp_htt.c
  2. 35 0
      dp/wifi3.0/dp_htt.h

+ 8 - 4
dp/wifi3.0/dp_htt.c

@@ -550,7 +550,8 @@ int htt_srng_setup(struct htt_soc *soc, int mac_id,
 			(uint64_t)tp_addr);
 			(uint64_t)tp_addr);
 		break;
 		break;
 	case RXDMA_MONITOR_BUF:
 	case RXDMA_MONITOR_BUF:
-		htt_ring_id = HTT_RXDMA_MONITOR_BUF_RING;
+		htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc,
+							 RXDMA_MONITOR_BUF);
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_STATUS:
 	case RXDMA_MONITOR_STATUS:
@@ -558,7 +559,8 @@ int htt_srng_setup(struct htt_soc *soc, int mac_id,
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_DST:
 	case RXDMA_MONITOR_DST:
-		htt_ring_id = HTT_RXDMA_MONITOR_DEST_RING;
+		htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc,
+							 RXDMA_MONITOR_DST);
 		htt_ring_type = HTT_HW_TO_SW_RING;
 		htt_ring_type = HTT_HW_TO_SW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_DESC:
 	case RXDMA_MONITOR_DESC:
@@ -905,7 +907,8 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id,
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_BUF:
 	case RXDMA_MONITOR_BUF:
-		htt_ring_id = HTT_RXDMA_MONITOR_BUF_RING;
+		htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc,
+							 RXDMA_MONITOR_BUF);
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_STATUS:
 	case RXDMA_MONITOR_STATUS:
@@ -913,7 +916,8 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id,
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		htt_ring_type = HTT_SW_TO_HW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_DST:
 	case RXDMA_MONITOR_DST:
-		htt_ring_id = HTT_RXDMA_MONITOR_DEST_RING;
+		htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc,
+							 RXDMA_MONITOR_DST);
 		htt_ring_type = HTT_HW_TO_SW_RING;
 		htt_ring_type = HTT_HW_TO_SW_RING;
 		break;
 		break;
 	case RXDMA_MONITOR_DESC:
 	case RXDMA_MONITOR_DESC:

+ 35 - 0
dp/wifi3.0/dp_htt.h

@@ -935,4 +935,39 @@ int htt_h2t_full_mon_cfg(struct htt_soc *htt_soc,
 QDF_STATUS dp_h2t_hw_vdev_stats_config_send(struct dp_soc *dpsoc,
 QDF_STATUS dp_h2t_hw_vdev_stats_config_send(struct dp_soc *dpsoc,
 					    uint8_t pdev_id, bool enable,
 					    uint8_t pdev_id, bool enable,
 					    bool reset, uint64_t reset_bitmask);
 					    bool reset, uint64_t reset_bitmask);
+
+static inline enum htt_srng_ring_id
+dp_htt_get_mon_htt_ring_id(struct dp_soc *soc,
+			   enum hal_ring_type hal_ring_type)
+{
+	enum htt_srng_ring_id htt_srng_id = 0;
+
+	if (wlan_cfg_get_txmon_hw_support(soc->wlan_cfg_ctx)) {
+		switch (hal_ring_type) {
+		case RXDMA_MONITOR_BUF:
+			htt_srng_id = HTT_RX_MON_HOST2MON_BUF_RING;
+			break;
+		case RXDMA_MONITOR_DST:
+			htt_srng_id = HTT_RX_MON_MON2HOST_DEST_RING;
+			break;
+		default:
+			dp_err("Invalid ring type %d ", hal_ring_type);
+			break;
+		}
+	} else {
+		switch (hal_ring_type) {
+		case RXDMA_MONITOR_BUF:
+			htt_srng_id = HTT_RXDMA_MONITOR_BUF_RING;
+			break;
+		case RXDMA_MONITOR_DST:
+			htt_srng_id = HTT_RXDMA_MONITOR_DEST_RING;
+			break;
+		default:
+			dp_err("Invalid ring type %d ", hal_ring_type);
+			break;
+		}
+	}
+
+	return htt_srng_id;
+}
 #endif /* _DP_HTT_H_ */
 #endif /* _DP_HTT_H_ */