Преглед изворни кода

qcacmn: Add tx desc alloc failure count for PPEDS

Add tx desc alloc failure count for direct switch

Change-Id: I593e5846ab4948edf1e1b955890f167f772e166b
CRs-Fixed: 3526743
Pavankumar Nandeshwar пре 2 година
родитељ
комит
c27dfcd8ac
4 измењених фајлова са 33 додато и 0 уклоњено
  1. 11 0
      dp/wifi3.0/be/dp_be.c
  2. 6 0
      dp/wifi3.0/be/dp_be.h
  3. 14 0
      dp/wifi3.0/dp_main.c
  4. 2 0
      dp/wifi3.0/dp_types.h

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

@@ -97,6 +97,16 @@ static void dp_ppeds_inuse_desc(struct 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);
+
+	DP_PRINT_STATS("PPE-DS Tx desc alloc failed %u",
+		       be_soc->ppeds_stats.tx.desc_alloc_failed);
+}
+
+static void dp_ppeds_clear_stats(struct dp_soc *soc)
+{
+	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
+
+	be_soc->ppeds_stats.tx.desc_alloc_failed = 0;
 }
 #endif
 
@@ -2908,6 +2918,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 	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;
+	arch_ops->dp_ppeds_clear_stats = dp_ppeds_clear_stats;
 	arch_ops->dp_tx_ppeds_cfg_astidx_cache_mapping =
 				dp_tx_ppeds_cfg_astidx_cache_mapping;
 #ifdef DP_UMAC_HW_RESET_SUPPORT

+ 6 - 0
dp/wifi3.0/be/dp_be.h

@@ -310,6 +310,7 @@ struct dp_ppeds_napi {
  * @num_ppe_vp_entries: Number of PPE VP entries
  * @num_ppe_vp_search_idx_entries: PPEDS VP search idx entries
  * @irq_name: PPEDS VP irq names
+ * @ppeds_stats: PPEDS stats
  * @mlo_enabled: Flag to indicate MLO is enabled or not
  * @mlo_chip_id: MLO chip_id
  * @ml_ctxt: pointer to global ml_context
@@ -351,6 +352,11 @@ struct dp_soc_be {
 	uint8_t num_ppe_vp_search_idx_entries;
 	uint8_t num_ppe_vp_profiles;
 	char irq_name[DP_PPE_INTR_MAX][DP_PPE_INTR_STRNG_LEN];
+	struct {
+		struct {
+			uint64_t desc_alloc_failed;
+		} tx;
+	} ppeds_stats;
 #endif
 #ifdef WLAN_FEATURE_11BE_MLO
 #ifdef WLAN_MLO_MULTI_CHIP

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

@@ -6225,6 +6225,18 @@ static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc)
 }
 #endif
 
+#ifdef WLAN_SUPPORT_PPEDS
+static void dp_clear_tx_ppeds_stats(struct dp_soc *soc)
+{
+	if (soc->arch_ops.dp_ppeds_clear_stats)
+		soc->arch_ops.dp_ppeds_clear_stats(soc);
+}
+#else
+static void dp_clear_tx_ppeds_stats(struct dp_soc *soc)
+{
+}
+#endif
+
 /**
  * dp_txrx_host_stats_clr() - Reinitialize the txrx stats
  * @vdev: DP_VDEV handle
@@ -6257,6 +6269,8 @@ dp_txrx_host_stats_clr(struct dp_vdev *vdev, struct dp_soc *soc)
 	DP_STATS_CLR(vdev->pdev);
 	DP_STATS_CLR(vdev->pdev->soc);
 
+	dp_clear_tx_ppeds_stats(soc);
+
 	hif_clear_napi_stats(vdev->pdev->soc->hif_handle);
 
 	TAILQ_FOREACH(var_vdev, &vdev->pdev->vdev_list, vdev_list_elem) {

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

@@ -2217,6 +2217,7 @@ enum dp_context_type {
  * @ipa_get_wdi_ver: Get WDI version
  * @dp_txrx_ppeds_rings_status:
  * @dp_tx_ppeds_inuse_desc:
+ * @dp_ppeds_clear_stats: Clear ppeds related stats
  * @dp_tx_ppeds_cfg_astidx_cache_mapping:
  * @txrx_soc_ppeds_start:
  * @txrx_soc_ppeds_stop:
@@ -2442,6 +2443,7 @@ struct dp_arch_ops {
 #ifdef WLAN_SUPPORT_PPEDS
 	void (*dp_txrx_ppeds_rings_status)(struct dp_soc *soc);
 	void (*dp_tx_ppeds_inuse_desc)(struct dp_soc *soc);
+	void (*dp_ppeds_clear_stats)(struct dp_soc *soc);
 	void (*dp_tx_ppeds_cfg_astidx_cache_mapping)(struct dp_soc *soc,
 						     struct dp_vdev *vdev,
 						     bool peer_map);