From 59ec56d44fd1e6600645c0c47b113a55743b88b5 Mon Sep 17 00:00:00 2001 From: Mukul Dhiman Date: Wed, 26 Jul 2023 14:39:25 +0530 Subject: [PATCH] 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 --- dp/wifi3.0/be/dp_be.c | 1 + dp/wifi3.0/be/mlo/dp_mlo.c | 39 ++++++++++++++++++++++++++++++++++++++ dp/wifi3.0/be/mlo/dp_mlo.h | 8 ++++++++ dp/wifi3.0/dp_main.c | 2 ++ dp/wifi3.0/dp_types.h | 2 ++ 5 files changed, 52 insertions(+) diff --git a/dp/wifi3.0/be/dp_be.c b/dp/wifi3.0/be/dp_be.c index 7a1e026be3..a2913fa686 100644 --- a/dp/wifi3.0/be/dp_be.c +++ b/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 = diff --git a/dp/wifi3.0/be/mlo/dp_mlo.c b/dp/wifi3.0/be/mlo/dp_mlo.c index 355de2ce00..549793f499 100644 --- a/dp/wifi3.0/be/mlo/dp_mlo.c +++ b/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 diff --git a/dp/wifi3.0/be/mlo/dp_mlo.h b/dp/wifi3.0/be/mlo/dp_mlo.h index d2d1b9e276..dc81922364 100644 --- a/dp/wifi3.0/be/mlo/dp_mlo.h +++ b/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 */ diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 0b4598814c..30450a9330 100644 --- a/dp/wifi3.0/dp_main.c +++ b/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); diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index ebe82a8622..c90785ad2c 100644 --- a/dp/wifi3.0/dp_types.h +++ b/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); }; /**