qcacmn: Update airtime computation to per AC level

Update airtime computation to per AC level.

Change-Id: Ia8cb890d2f1dc167ec3a2610ff5a70238d55262d
CRs-Fixed: 3281256
Este commit está contenido en:
Himanshu Batra
2022-09-01 16:15:35 +05:30
cometido por Madan Koyyalamudi
padre 6f012336ae
commit 6a5ab907c1
Se han modificado 4 ficheros con 31 adiciones y 21 borrados

Ver fichero

@@ -2060,7 +2060,7 @@ void dp_peer_update_telemetry_stats(struct dp_peer *peer)
struct dp_pdev *pdev;
struct dp_vdev *vdev;
struct dp_mon_peer *mon_peer = NULL;
uint8_t idx;
uint8_t idx, ac;
vdev = peer->vdev;
if (!vdev)
@@ -2076,14 +2076,16 @@ void dp_peer_update_telemetry_stats(struct dp_peer *peer)
mon_peer->stats.tx.retries);
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_total,
mon_peer->stats.tx.tx_mpdus_tried);
idx = mon_peer->stats.airtime_consumption.avg_consumption.idx;
mon_peer->stats.airtime_consumption.avg_consumption.avg_consumption_per_sec[idx] =
mon_peer->stats.airtime_consumption.consumption;
mon_peer->stats.airtime_consumption.consumption = 0;
mon_peer->stats.airtime_consumption.avg_consumption.idx++;
if (mon_peer->stats.airtime_consumption.avg_consumption.idx ==
MAX_CONSUMPTION_TIME)
mon_peer->stats.airtime_consumption.avg_consumption.idx = 0;
for (ac = 0; ac < WME_AC_MAX; ac++) {
idx = mon_peer->stats.airtime_consumption[ac].avg_consumption.idx;
mon_peer->stats.airtime_consumption[ac].avg_consumption.avg_consumption_per_sec[idx] =
mon_peer->stats.airtime_consumption[ac].consumption;
mon_peer->stats.airtime_consumption[ac].consumption = 0;
mon_peer->stats.airtime_consumption[ac].avg_consumption.idx++;
if (mon_peer->stats.airtime_consumption[ac].avg_consumption.idx ==
MAX_CONSUMPTION_TIME)
mon_peer->stats.airtime_consumption[ac].avg_consumption.idx = 0;
}
}
}
#else
@@ -4070,12 +4072,14 @@ void dp_ppdu_desc_user_airtime_consumption_update(
struct cdp_tx_completion_ppdu_user *user)
{
struct dp_mon_peer *mon_peer = NULL;
uint8_t ac = 0;
mon_peer = peer->monitor_peer;
if (qdf_unlikely(!mon_peer))
return;
DP_STATS_INC(mon_peer, airtime_consumption.consumption,
ac = TID_TO_WME_AC(user->tid);
DP_STATS_INC(mon_peer, airtime_consumption[ac].consumption,
user->phy_tx_time_us);
}
#else

Ver fichero

@@ -903,7 +903,7 @@ struct dp_mon_peer_stats {
dp_mon_peer_tx_stats tx;
dp_mon_peer_rx_stats rx;
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
struct dp_mon_peer_airtime_consumption airtime_consumption;
struct dp_mon_peer_airtime_consumption airtime_consumption[WME_AC_MAX];
#endif
#endif
};
@@ -4239,20 +4239,24 @@ void dp_monitor_peer_telemetry_stats(struct dp_peer *peer,
struct cdp_peer_telemetry_stats *stats)
{
struct dp_mon_peer_stats *mon_peer_stats = NULL;
uint8_t idx = 0;
uint8_t idx = 0, ac;
uint32_t consumption = 0;
if (qdf_unlikely(!peer->monitor_peer))
return;
mon_peer_stats = &peer->monitor_peer->stats;
for (idx = 0; idx < MAX_CONSUMPTION_TIME; idx++)
consumption +=
mon_peer_stats->airtime_consumption.avg_consumption.avg_consumption_per_sec[idx];
/* consumption is in micro seconds, convert it to seconds and
* then calculate %age per 5 sec
*/
stats->airtime_consumption = ((consumption * 100) / (MAX_CONSUMPTION_TIME * 1000000));
for (ac = 0; ac < WME_AC_MAX; ac++) {
consumption = 0;
for (idx = 0; idx < MAX_CONSUMPTION_TIME; idx++)
consumption +=
mon_peer_stats->airtime_consumption[ac].avg_consumption.avg_consumption_per_sec[idx];
/* consumption is in micro seconds, convert it to seconds and
* then calculate %age per 5 sec
*/
stats->airtime_consumption[ac] =
((consumption * 100) / (MAX_CONSUMPTION_TIME * 1000000));
}
stats->tx_mpdu_retried = mon_peer_stats->tx.retries;
stats->tx_mpdu_total = mon_peer_stats->tx.tx_mpdus_tried;
stats->rx_mpdu_retried = mon_peer_stats->rx.mpdu_retry_cnt;

Ver fichero

@@ -818,6 +818,7 @@ dp_ppdu_desc_user_rx_time_update(struct dp_pdev *pdev,
{
uint32_t nss_ru_width_sum = 0;
struct dp_mon_peer *mon_peer = NULL;
uint8_t ac = 0;
if (!pdev || !ppdu_desc || !user || !peer)
return;
@@ -839,7 +840,8 @@ dp_ppdu_desc_user_rx_time_update(struct dp_pdev *pdev,
if (qdf_unlikely(!mon_peer))
return;
DP_STATS_INC(mon_peer, airtime_consumption.consumption,
ac = TID_TO_WME_AC(user->tid);
DP_STATS_INC(mon_peer, airtime_consumption[ac].consumption,
user->rx_time_us);
}
#else