Browse Source

qcacmn: add partner vdev debug prints in TXRX_AST_STATS

add partner vdev debug prints in TXRX_AST_STATS

Change-Id: Icf3cc557572519e43e3135e2b22ff457982a8d32
CRs-Fixed: 3571207
Mukul Dhiman 1 year ago
parent
commit
59ec56d44f
5 changed files with 52 additions and 0 deletions
  1. 1 0
      dp/wifi3.0/be/dp_be.c
  2. 39 0
      dp/wifi3.0/be/mlo/dp_mlo.c
  3. 8 0
      dp/wifi3.0/be/mlo/dp_mlo.h
  4. 2 0
      dp/wifi3.0/dp_main.c
  5. 2 0
      dp/wifi3.0/dp_types.h

+ 1 - 0
dp/wifi3.0/be/dp_be.c

@@ -2900,6 +2900,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 	dp_initialize_arch_ops_be_mlo(arch_ops);
 #ifdef WLAN_MLO_MULTI_CHIP
 	arch_ops->dp_get_soc_by_chip_id = dp_get_soc_by_chip_id_be;
+	arch_ops->dp_mlo_print_ptnr_info = dp_mlo_debug_print_ptnr_info;
 #endif
 	arch_ops->dp_soc_get_num_soc = dp_soc_get_num_soc_be;
 	arch_ops->dp_peer_rx_reorder_queue_setup =

+ 39 - 0
dp/wifi3.0/be/mlo/dp_mlo.c

@@ -1237,6 +1237,24 @@ dp_soc_get_by_idle_bm_id(struct dp_soc *soc, uint8_t idle_bm_id)
 }
 
 #ifdef WLAN_MLO_MULTI_CHIP
+static void dp_print_mlo_partner_list(struct dp_vdev_be *be_vdev,
+				      struct dp_vdev *partner_vdev,
+				      void *arg)
+{
+	struct dp_vdev_be *partner_vdev_be = NULL;
+	struct dp_soc_be *partner_soc_be = NULL;
+
+	partner_vdev_be = dp_get_be_vdev_from_dp_vdev(partner_vdev);
+	partner_soc_be = dp_get_be_soc_from_dp_soc(partner_vdev->pdev->soc);
+
+	DP_PRINT_STATS("is_bridge_vap = %s, mcast_primary = %s,  vdev_id = %d, pdev_id = %d, chip_id = %d",
+		       partner_vdev->is_bridge_vdev ? "true" : "false",
+		       partner_vdev_be->mcast_primary ? "true" : "false",
+		       partner_vdev->vdev_id,
+		       partner_vdev->pdev->pdev_id,
+		       partner_soc_be->mlo_chip_id);
+}
+
 void dp_mlo_iter_ptnr_vdev(struct dp_soc_be *be_soc,
 			   struct dp_vdev_be *be_vdev,
 			   dp_ptnr_vdev_iter_func func,
@@ -1301,6 +1319,27 @@ void dp_mlo_iter_ptnr_vdev(struct dp_soc_be *be_soc,
 }
 
 qdf_export_symbol(dp_mlo_iter_ptnr_vdev);
+
+void dp_mlo_debug_print_ptnr_info(struct dp_vdev *vdev)
+{
+	struct dp_vdev_be *be_vdev = NULL;
+	struct dp_soc_be *be_soc = NULL;
+
+	be_soc = dp_get_be_soc_from_dp_soc(vdev->pdev->soc);
+	be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
+
+	DP_PRINT_STATS("self vdev is_bridge_vap = %s, mcast_primary = %s, vdev = %d, pdev_id = %d, chip_id = %d",
+		       vdev->is_bridge_vdev ? "true" : "false",
+		       be_vdev->mcast_primary ? "true" : "false",
+		       vdev->vdev_id,
+		       vdev->pdev->pdev_id,
+		       dp_mlo_get_chip_id(vdev->pdev->soc));
+
+	dp_mlo_iter_ptnr_vdev(be_soc, be_vdev,
+			      dp_print_mlo_partner_list,
+			      NULL, DP_MOD_ID_GENERIC_STATS,
+			      DP_ALL_VDEV_ITER);
+}
 #endif
 
 #ifdef WLAN_MCAST_MLO

+ 8 - 0
dp/wifi3.0/be/mlo/dp_mlo.h

@@ -217,4 +217,12 @@ int32_t dp_mlo_get_delta_tqm_wrt_mlo_offset(struct dp_soc *soc);
 QDF_STATUS
 dp_get_interface_stats_be(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 			  void *buf, bool is_aggregate);
+
+/*
+ * dp_mlo_debug_print_ptnr_info() - print partner info
+ * @vdev: DP VDEV
+ *
+ * Return: none
+ */
+void dp_mlo_debug_print_ptnr_info(struct dp_vdev *vdev);
 #endif /* __DP_MLO_H */

+ 2 - 0
dp/wifi3.0/dp_main.c

@@ -6942,6 +6942,8 @@ dp_print_host_stats(struct dp_vdev *vdev,
 		dp_print_ast_stats(pdev->soc);
 		dp_print_mec_stats(pdev->soc);
 		dp_print_peer_table(vdev);
+		if (soc->arch_ops.dp_mlo_print_ptnr_info)
+			soc->arch_ops.dp_mlo_print_ptnr_info(vdev);
 		break;
 	case TXRX_SRNG_PTR_STATS:
 		dp_print_ring_stats(pdev);

+ 2 - 0
dp/wifi3.0/dp_types.h

@@ -2248,6 +2248,7 @@ enum dp_context_type {
  * @dp_update_ring_hptp: Update rings hptp during suspend/resume
  * @dp_get_fst_cmem_base: Get CMEM base address for FISA
  * @dp_flush_tx_ring: Flush TCL ring HP
+ * @dp_mlo_print_ptnr_info: print partner vdev info
  */
 struct dp_arch_ops {
 	/* INIT/DEINIT Arch Ops */
@@ -2508,6 +2509,7 @@ struct dp_arch_ops {
 	void (*dp_update_ring_hptp)(struct dp_soc *soc, bool force_flush_tx);
 	uint64_t (*dp_get_fst_cmem_base)(struct dp_soc *soc, uint64_t size);
 	int (*dp_flush_tx_ring)(struct dp_pdev *pdev, int ring_id);
+	void (*dp_mlo_print_ptnr_info)(struct dp_vdev *vdev);
 };
 
 /**