qcacmn: Update airtime computation to per AC level
Update airtime computation to per AC level. Change-Id: Ia8cb890d2f1dc167ec3a2610ff5a70238d55262d CRs-Fixed: 3281256
This commit is contained in:

committed by
Madan Koyyalamudi

parent
6f012336ae
commit
6a5ab907c1
@@ -2679,7 +2679,7 @@ struct cdp_peer_telemetry_stats {
|
|||||||
uint32_t tx_mpdu_total;
|
uint32_t tx_mpdu_total;
|
||||||
uint32_t rx_mpdu_retried;
|
uint32_t rx_mpdu_retried;
|
||||||
uint32_t rx_mpdu_total;
|
uint32_t rx_mpdu_total;
|
||||||
uint8_t airtime_consumption;
|
uint8_t airtime_consumption[WME_AC_MAX];
|
||||||
uint8_t snr;
|
uint8_t snr;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@@ -2060,7 +2060,7 @@ void dp_peer_update_telemetry_stats(struct dp_peer *peer)
|
|||||||
struct dp_pdev *pdev;
|
struct dp_pdev *pdev;
|
||||||
struct dp_vdev *vdev;
|
struct dp_vdev *vdev;
|
||||||
struct dp_mon_peer *mon_peer = NULL;
|
struct dp_mon_peer *mon_peer = NULL;
|
||||||
uint8_t idx;
|
uint8_t idx, ac;
|
||||||
|
|
||||||
vdev = peer->vdev;
|
vdev = peer->vdev;
|
||||||
if (!vdev)
|
if (!vdev)
|
||||||
@@ -2076,14 +2076,16 @@ void dp_peer_update_telemetry_stats(struct dp_peer *peer)
|
|||||||
mon_peer->stats.tx.retries);
|
mon_peer->stats.tx.retries);
|
||||||
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_total,
|
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_total,
|
||||||
mon_peer->stats.tx.tx_mpdus_tried);
|
mon_peer->stats.tx.tx_mpdus_tried);
|
||||||
idx = mon_peer->stats.airtime_consumption.avg_consumption.idx;
|
for (ac = 0; ac < WME_AC_MAX; ac++) {
|
||||||
mon_peer->stats.airtime_consumption.avg_consumption.avg_consumption_per_sec[idx] =
|
idx = mon_peer->stats.airtime_consumption[ac].avg_consumption.idx;
|
||||||
mon_peer->stats.airtime_consumption.consumption;
|
mon_peer->stats.airtime_consumption[ac].avg_consumption.avg_consumption_per_sec[idx] =
|
||||||
mon_peer->stats.airtime_consumption.consumption = 0;
|
mon_peer->stats.airtime_consumption[ac].consumption;
|
||||||
mon_peer->stats.airtime_consumption.avg_consumption.idx++;
|
mon_peer->stats.airtime_consumption[ac].consumption = 0;
|
||||||
if (mon_peer->stats.airtime_consumption.avg_consumption.idx ==
|
mon_peer->stats.airtime_consumption[ac].avg_consumption.idx++;
|
||||||
MAX_CONSUMPTION_TIME)
|
if (mon_peer->stats.airtime_consumption[ac].avg_consumption.idx ==
|
||||||
mon_peer->stats.airtime_consumption.avg_consumption.idx = 0;
|
MAX_CONSUMPTION_TIME)
|
||||||
|
mon_peer->stats.airtime_consumption[ac].avg_consumption.idx = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -4070,12 +4072,14 @@ void dp_ppdu_desc_user_airtime_consumption_update(
|
|||||||
struct cdp_tx_completion_ppdu_user *user)
|
struct cdp_tx_completion_ppdu_user *user)
|
||||||
{
|
{
|
||||||
struct dp_mon_peer *mon_peer = NULL;
|
struct dp_mon_peer *mon_peer = NULL;
|
||||||
|
uint8_t ac = 0;
|
||||||
|
|
||||||
mon_peer = peer->monitor_peer;
|
mon_peer = peer->monitor_peer;
|
||||||
if (qdf_unlikely(!mon_peer))
|
if (qdf_unlikely(!mon_peer))
|
||||||
return;
|
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);
|
user->phy_tx_time_us);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@@ -903,7 +903,7 @@ struct dp_mon_peer_stats {
|
|||||||
dp_mon_peer_tx_stats tx;
|
dp_mon_peer_tx_stats tx;
|
||||||
dp_mon_peer_rx_stats rx;
|
dp_mon_peer_rx_stats rx;
|
||||||
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
#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
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@@ -4239,20 +4239,24 @@ void dp_monitor_peer_telemetry_stats(struct dp_peer *peer,
|
|||||||
struct cdp_peer_telemetry_stats *stats)
|
struct cdp_peer_telemetry_stats *stats)
|
||||||
{
|
{
|
||||||
struct dp_mon_peer_stats *mon_peer_stats = NULL;
|
struct dp_mon_peer_stats *mon_peer_stats = NULL;
|
||||||
uint8_t idx = 0;
|
uint8_t idx = 0, ac;
|
||||||
uint32_t consumption = 0;
|
uint32_t consumption = 0;
|
||||||
|
|
||||||
if (qdf_unlikely(!peer->monitor_peer))
|
if (qdf_unlikely(!peer->monitor_peer))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mon_peer_stats = &peer->monitor_peer->stats;
|
mon_peer_stats = &peer->monitor_peer->stats;
|
||||||
for (idx = 0; idx < MAX_CONSUMPTION_TIME; idx++)
|
for (ac = 0; ac < WME_AC_MAX; ac++) {
|
||||||
consumption +=
|
consumption = 0;
|
||||||
mon_peer_stats->airtime_consumption.avg_consumption.avg_consumption_per_sec[idx];
|
for (idx = 0; idx < MAX_CONSUMPTION_TIME; idx++)
|
||||||
/* consumption is in micro seconds, convert it to seconds and
|
consumption +=
|
||||||
* then calculate %age per 5 sec
|
mon_peer_stats->airtime_consumption[ac].avg_consumption.avg_consumption_per_sec[idx];
|
||||||
*/
|
/* consumption is in micro seconds, convert it to seconds and
|
||||||
stats->airtime_consumption = ((consumption * 100) / (MAX_CONSUMPTION_TIME * 1000000));
|
* 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_retried = mon_peer_stats->tx.retries;
|
||||||
stats->tx_mpdu_total = mon_peer_stats->tx.tx_mpdus_tried;
|
stats->tx_mpdu_total = mon_peer_stats->tx.tx_mpdus_tried;
|
||||||
stats->rx_mpdu_retried = mon_peer_stats->rx.mpdu_retry_cnt;
|
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;
|
uint32_t nss_ru_width_sum = 0;
|
||||||
struct dp_mon_peer *mon_peer = NULL;
|
struct dp_mon_peer *mon_peer = NULL;
|
||||||
|
uint8_t ac = 0;
|
||||||
|
|
||||||
if (!pdev || !ppdu_desc || !user || !peer)
|
if (!pdev || !ppdu_desc || !user || !peer)
|
||||||
return;
|
return;
|
||||||
@@ -839,7 +840,8 @@ dp_ppdu_desc_user_rx_time_update(struct dp_pdev *pdev,
|
|||||||
if (qdf_unlikely(!mon_peer))
|
if (qdf_unlikely(!mon_peer))
|
||||||
return;
|
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);
|
user->rx_time_us);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user