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:

cometido por
Madan Koyyalamudi

padre
6f012336ae
commit
6a5ab907c1
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
Referencia en una nueva incidencia
Block a user