diff --git a/dp/wifi3.0/be/dp_be.c b/dp/wifi3.0/be/dp_be.c index 544c1ff134..0caaa59ab3 100644 --- a/dp/wifi3.0/be/dp_be.c +++ b/dp/wifi3.0/be/dp_be.c @@ -84,6 +84,15 @@ static void dp_ppeds_rings_status(struct dp_soc *soc) dp_print_ring_stat_from_hal(soc, &be_soc->ppe_wbm_release_ring, WBM2SW_RELEASE); } + +static void dp_ppeds_inuse_desc(struct dp_soc *soc) +{ + struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc); + + DP_PRINT_STATS("PPE-DS Tx Descriptors in Use = %u num_free %u", + be_soc->ppeds_tx_desc.num_allocated, + be_soc->ppeds_tx_desc.num_free); +} #endif static void dp_soc_cfg_attach_be(struct dp_soc *soc) @@ -2493,6 +2502,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops) arch_ops->txrx_soc_ppeds_stop = dp_ppeds_stop_soc_be; arch_ops->dp_register_ppeds_interrupts = dp_register_ppeds_interrupts; arch_ops->dp_free_ppeds_interrupts = dp_free_ppeds_interrupts; + arch_ops->dp_tx_ppeds_inuse_desc = dp_ppeds_inuse_desc; #endif dp_init_near_full_arch_ops_be(arch_ops); arch_ops->get_reo_qdesc_addr = dp_rx_get_reo_qdesc_addr_be; diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index b0eb88d806..ecce40fb36 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -2552,6 +2552,14 @@ void dp_print_soc_tx_stats(struct dp_soc *soc); */ void dp_print_soc_interrupt_stats(struct dp_soc *soc); +/** + * dp_print_tx_ppeds_stats() - Print Tx in use stats for the soc in DS + * @soc: dp_soc handle + * + * Return: None + */ + +void dp_print_tx_ppeds_stats(struct dp_soc *soc); #ifdef WLAN_DP_SRNG_USAGE_WM_TRACKING /** * dp_dump_srng_high_wm_stats() - Print the ring usage high watermark stats diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index aeba7f15cf..c03bbf2633 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -7687,6 +7687,18 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev) pdev->stats.rx_buffer_pool.num_pool_bufs_replenish); } +#ifdef WLAN_SUPPORT_PPEDS +void dp_print_tx_ppeds_stats(struct dp_soc *soc) +{ + if (soc->arch_ops.dp_tx_ppeds_inuse_desc) + soc->arch_ops.dp_tx_ppeds_inuse_desc(soc); +} +#else +void dp_print_tx_ppeds_stats(struct dp_soc *soc) +{ +} +#endif + void dp_print_soc_tx_stats(struct dp_soc *soc) { @@ -7730,6 +7742,7 @@ dp_print_soc_tx_stats(struct dp_soc *soc) soc->stats.tx.tx_comp_loop_pkt_limit_hit); DP_PRINT_STATS("Tx comp HP out of sync2 = %d", soc->stats.tx.hp_oos2); + dp_print_tx_ppeds_stats(soc); } static diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index ef4a99099e..47e91ab7b0 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -2034,6 +2034,7 @@ struct dp_arch_ops { #endif #ifdef WLAN_SUPPORT_PPEDS void (*dp_txrx_ppeds_rings_status)(struct dp_soc *soc); + void (*dp_tx_ppeds_inuse_desc)(struct dp_soc *soc); #endif QDF_STATUS (*txrx_soc_ppeds_start)(struct dp_soc *soc); void (*txrx_soc_ppeds_stop)(struct dp_soc *soc);