Просмотр исходного кода

qcacmn: Reduce mimo users to 8

Reduce array size to 8 for ul/dl mimo users
for deterministic stats

CRs-Fixed: 3408802
Change-Id: I055aa195e514eb1fe74161ef61119f7c8ddad478
aloksing 2 лет назад
Родитель
Сommit
47c7b5dfc8
3 измененных файлов с 33 добавлено и 15 удалено
  1. 4 3
      dp/inc/cdp_txrx_stats_struct.h
  2. 2 2
      dp/wifi3.0/dp_stats.c
  3. 27 10
      dp/wifi3.0/monitor/dp_mon.c

+ 4 - 3
dp/inc/cdp_txrx_stats_struct.h

@@ -44,6 +44,7 @@
 #endif
 
 #define CDP_MU_MAX_USERS 37
+#define CDP_MU_MAX_MIMO_USERS 8
 /* 1 additional MCS is for invalid values */
 #ifdef WLAN_FEATURE_11BE
 #define MAX_MCS (16 + 1)
@@ -3040,7 +3041,7 @@ struct cdp_peer_deter_stats {
 };
 
 /**
- * struct cdp_pdev_chan_util_stats - pdev channel utilization stats
+ * struct cdp_pdev_chan_util_stats- Structure to hold channel utilization stats
  * @ap_chan_util: Channel utilization
  * @ap_tx_util: TX utilization
  * @ap_rx_util: RX utilization
@@ -3077,8 +3078,8 @@ struct cdp_pdev_ul_trigger_status {
 struct cdp_pdev_deter_stats {
 	uint64_t dl_ofdma_usr[CDP_MU_MAX_USERS];
 	uint64_t ul_ofdma_usr[CDP_MU_MAX_USERS];
-	uint64_t dl_mimo_usr[CDP_MU_MAX_USERS];
-	uint64_t ul_mimo_usr[CDP_MU_MAX_USERS];
+	uint64_t dl_mimo_usr[CDP_MU_MAX_MIMO_USERS];
+	uint64_t ul_mimo_usr[CDP_MU_MAX_MIMO_USERS];
 	uint64_t dl_mode_cnt[TX_MODE_DL_MAX];
 	uint64_t ul_mode_cnt[TX_MODE_UL_MAX];
 	uint64_t rx_su_cnt;

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

@@ -9406,9 +9406,9 @@ dp_get_pdev_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
 	qdf_mem_copy(stats->ul_ofdma_usr, pdev->stats.deter_stats.ul_ofdma_usr,
 		     sizeof(stats->ul_ofdma_usr[0]) * CDP_MU_MAX_USERS);
 	qdf_mem_copy(stats->dl_mimo_usr, pdev->stats.deter_stats.dl_mimo_usr,
-		     sizeof(stats->dl_mimo_usr[0]) * CDP_MU_MAX_USERS);
+		     sizeof(stats->dl_mimo_usr[0]) * CDP_MU_MAX_MIMO_USERS);
 	qdf_mem_copy(stats->ul_mimo_usr, pdev->stats.deter_stats.ul_mimo_usr,
-		     sizeof(stats->ul_mimo_usr[0]) * CDP_MU_MAX_USERS);
+		     sizeof(stats->ul_mimo_usr[0]) * CDP_MU_MAX_MIMO_USERS);
 
 	qdf_mem_copy(stats->ul_mode_cnt, pdev->stats.deter_stats.ul_mode_cnt,
 		     sizeof(stats->ul_mode_cnt[0]) * TX_MODE_UL_MAX);

+ 27 - 10
dp/wifi3.0/monitor/dp_mon.c

@@ -2910,18 +2910,14 @@ static inline void
 dp_pdev_update_deter_stats(struct dp_pdev *pdev,
 			   struct cdp_tx_completion_ppdu *ppdu)
 {
+	uint32_t user_idx;
+
 	if (!pdev || !ppdu)
 		return;
 
 	if (ppdu->txmode_type == TX_MODE_TYPE_UNKNOWN)
 		return;
 
-	if (ppdu->num_ul_users >= HAL_MAX_UL_MU_USERS ||
-	    ppdu->num_users >= HAL_MAX_UL_MU_USERS) {
-		dp_mon_err("num ul user %d or num users %d exceeds max limit",
-			   ppdu->num_ul_users, ppdu->num_users);
-		return;
-	}
 	if (ppdu->backoff_ac_valid) {
 		if (ppdu->backoff_ac >= WME_AC_MAX) {
 			dp_mon_err("backoff_ac %d exceed max limit",
@@ -2937,15 +2933,25 @@ dp_pdev_update_deter_stats(struct dp_pdev *pdev,
 		DP_STATS_INC(pdev,
 			     deter_stats.dl_mode_cnt[ppdu->txmode],
 			     1);
+		if (!ppdu->num_users) {
+			dp_mon_err("dl users is %d", ppdu->num_users);
+			return;
+		}
+		user_idx = ppdu->num_users - 1;
 		switch (ppdu->txmode) {
 		case TX_MODE_DL_OFDMA_DATA:
 			DP_STATS_INC(pdev,
-				     deter_stats.dl_ofdma_usr[ppdu->num_users],
+				     deter_stats.dl_ofdma_usr[user_idx],
 				     1);
 			break;
 		case TX_MODE_DL_MUMIMO_DATA:
+			if (user_idx >= CDP_MU_MAX_MIMO_USERS) {
+				dp_mon_err("dl mimo users %d exceed max limit",
+					   ppdu->num_users);
+				return;
+			}
 			DP_STATS_INC(pdev,
-				     deter_stats.dl_mimo_usr[ppdu->num_users],
+				     deter_stats.dl_mimo_usr[user_idx],
 				     1);
 			break;
 		}
@@ -2953,15 +2959,26 @@ dp_pdev_update_deter_stats(struct dp_pdev *pdev,
 		DP_STATS_INC(pdev,
 			     deter_stats.ul_mode_cnt[ppdu->txmode],
 			     1);
+
+		if (!ppdu->num_ul_users) {
+			dp_mon_err("dl users is %d", ppdu->num_ul_users);
+			return;
+		}
+		user_idx = ppdu->num_ul_users - 1;
 		switch (ppdu->txmode) {
 		case TX_MODE_UL_OFDMA_BASIC_TRIGGER_DATA:
 			DP_STATS_INC(pdev,
-				     deter_stats.ul_ofdma_usr[ppdu->num_ul_users],
+				     deter_stats.ul_ofdma_usr[user_idx],
 				     1);
 			break;
 		case TX_MODE_UL_MUMIMO_BASIC_TRIGGER_DATA:
+			if (user_idx >= CDP_MU_MAX_MIMO_USERS) {
+				dp_mon_err("ul mimo users %d exceed max limit",
+					   ppdu->num_ul_users);
+				return;
+			}
 			DP_STATS_INC(pdev,
-				     deter_stats.ul_mimo_usr[ppdu->num_ul_users],
+				     deter_stats.ul_mimo_usr[user_idx],
 				     1);
 			break;
 		}