From c3630a234bf94c273d5eca90938639c4418ea47a Mon Sep 17 00:00:00 2001 From: Pavankumar Nandeshwar Date: Tue, 13 Sep 2022 03:39:32 -0700 Subject: [PATCH] qcacmn: Add ring stats for direct switch rings Add ring statistics for reo2ppe and ppe2tcl rings Change-Id: Ib9c15ba2f95d5cb97d238afad8f6f93dc5100e82 CRs-Fixed: 3279422 --- dp/wifi3.0/be/dp_be.c | 17 +++++++++++++++++ dp/wifi3.0/dp_internal.h | 11 +++++++++++ dp/wifi3.0/dp_main.c | 4 ++++ dp/wifi3.0/dp_stats.c | 7 ++++++- dp/wifi3.0/dp_types.h | 1 + dp/wifi3.0/li/dp_li.c | 1 + 6 files changed, 40 insertions(+), 1 deletion(-) diff --git a/dp/wifi3.0/be/dp_be.c b/dp/wifi3.0/be/dp_be.c index 9e741c1199..a000c984c6 100644 --- a/dp/wifi3.0/be/dp_be.c +++ b/dp/wifi3.0/be/dp_be.c @@ -61,6 +61,16 @@ static struct wlan_cfg_tcl_wbm_ring_num_map g_tcl_wbm_map_array[MAX_TCL_DATA_RIN }; #endif +#ifdef WLAN_SUPPORT_PPEDS +static void dp_ppeds_rings_status(struct dp_soc *soc) +{ + struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc); + + dp_print_ring_stat_from_hal(soc, &be_soc->reo2ppe_ring, REO2PPE); + dp_print_ring_stat_from_hal(soc, &be_soc->ppe2tcl_ring, PPE2TCL); +} +#endif + static void dp_soc_cfg_attach_be(struct dp_soc *soc) { struct wlan_cfg_dp_soc_ctxt *soc_cfg_ctx = soc->wlan_cfg_ctx; @@ -2022,6 +2032,13 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops) dp_reconfig_tx_vdev_mcast_ctrl_be; arch_ops->dp_cc_reg_cfg_init = dp_cc_reg_cfg_init; #endif + +#ifdef WLAN_SUPPORT_PPEDS + arch_ops->dp_txrx_ppeds_rings_status = dp_ppeds_rings_status; +#else + arch_ops->dp_txrx_ppeds_rings_status = NULL; +#endif + dp_init_near_full_arch_ops_be(arch_ops); arch_ops->get_rx_hash_key = dp_get_rx_hash_key_be; arch_ops->print_mlo_ast_stats = dp_print_mlo_ast_stats_be; diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index 175b146203..93d167dccd 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -2377,6 +2377,17 @@ void dp_update_delay_stats(struct cdp_tid_tx_stats *tstats, */ void dp_print_ring_stats(struct dp_pdev *pdev); +/** + * dp_print_ring_stat_from_hal(): Print tail and head pointer through hal + * @soc: soc handle + * @srng: srng handle + * @ring_type: ring type + * + * Return:void + */ +void +dp_print_ring_stat_from_hal(struct dp_soc *soc, struct dp_srng *srng, + enum hal_ring_type ring_type); /** * dp_print_pdev_cfg_params() - Print the pdev cfg parameters * @pdev_handle: DP pdev handle diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 09d2dd224d..4b1c201510 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -9583,6 +9583,10 @@ char *dp_srng_get_str_from_hal_ring_type(enum hal_ring_type ring_type) return "Rxdma_monitor_destination"; case WBM_IDLE_LINK: return "WBM_hw_idle_link"; + case PPE2TCL: + return "PPE2TCL"; + case REO2PPE: + return "REO2PPE"; default: dp_err("Invalid ring type"); break; diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 2a0fc49b60..fa3b8dab67 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -5819,7 +5819,7 @@ dp_print_pdev_cfg_params(struct dp_pdev *pdev) * * Return: void */ -static void +void dp_print_ring_stat_from_hal(struct dp_soc *soc, struct dp_srng *srng, enum hal_ring_type ring_type) { @@ -6031,6 +6031,11 @@ dp_print_ring_stats(struct dp_pdev *pdev) [lmac_id], RXDMA_DST); } + +#ifdef WLAN_SUPPORT_PPEDS + if (pdev->soc->arch_ops.dp_txrx_ppeds_rings_status) + pdev->soc->arch_ops.dp_txrx_ppeds_rings_status(pdev->soc); +#endif hif_rtpm_put(HIF_RTPM_PUT_ASYNC, HIF_RTPM_ID_DP_RING_STATS); } diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index cd0c9c9b64..35b16abbe4 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1986,6 +1986,7 @@ struct dp_arch_ops { #ifdef IPA_OFFLOAD int8_t (*ipa_get_bank_id)(struct dp_soc *soc); #endif + void (*dp_txrx_ppeds_rings_status)(struct dp_soc *soc); }; /** diff --git a/dp/wifi3.0/li/dp_li.c b/dp/wifi3.0/li/dp_li.c index 06cf8d8acb..248665fa23 100644 --- a/dp/wifi3.0/li/dp_li.c +++ b/dp/wifi3.0/li/dp_li.c @@ -621,6 +621,7 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops) arch_ops->dp_find_peer_by_destmac = dp_find_peer_by_destmac_li; arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_li; arch_ops->reo_remap_config = dp_reo_remap_config_li; + arch_ops->dp_txrx_ppeds_rings_status = NULL; } #ifdef QCA_DP_TX_HW_SW_NBUF_DESC_PREFETCH