qcacmn: Update pdev telemetry stats to per AC level
Update pdev telemetry stats to per AC level Change-Id: I0f3680875d28b6c4a7e671941373e42ee886cb16 CRs-Fixed: 3316937
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c877314ca8
commit
f72f76ba4c
@@ -2814,8 +2814,8 @@ struct cdp_soc_stats {
|
|||||||
* @link_airtime: pdev airtime usage per ac per sec
|
* @link_airtime: pdev airtime usage per ac per sec
|
||||||
*/
|
*/
|
||||||
struct cdp_pdev_telemetry_stats {
|
struct cdp_pdev_telemetry_stats {
|
||||||
uint32_t tx_mpdu_failed;
|
uint32_t tx_mpdu_failed[WME_AC_MAX];
|
||||||
uint32_t tx_mpdu_total;
|
uint32_t tx_mpdu_total[WME_AC_MAX];
|
||||||
uint32_t link_airtime[WME_AC_MAX];
|
uint32_t link_airtime[WME_AC_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -9170,12 +9170,12 @@ dp_get_pdev_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
|||||||
/* consumption is in micro seconds, convert it to seconds and
|
/* consumption is in micro seconds, convert it to seconds and
|
||||||
* then calculate %age per sec
|
* then calculate %age per sec
|
||||||
*/
|
*/
|
||||||
for (ac = 0; ac < WME_AC_MAX; ac++)
|
for (ac = 0; ac < WME_AC_MAX; ac++) {
|
||||||
stats->link_airtime[ac] =
|
stats->link_airtime[ac] =
|
||||||
((pdev->stats.telemetry_stats.link_airtime[ac] * 100) / 1000000);
|
((pdev->stats.telemetry_stats.link_airtime[ac] * 100) / 1000000);
|
||||||
stats->tx_mpdu_failed = pdev->stats.telemetry_stats.tx_mpdu_failed;
|
stats->tx_mpdu_failed[ac] = pdev->stats.telemetry_stats.tx_mpdu_failed[ac];
|
||||||
stats->tx_mpdu_total = pdev->stats.telemetry_stats.tx_mpdu_total;
|
stats->tx_mpdu_total[ac] = pdev->stats.telemetry_stats.tx_mpdu_total[ac];
|
||||||
|
}
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2084,10 +2084,6 @@ void dp_peer_update_telemetry_stats(struct dp_peer *peer)
|
|||||||
|
|
||||||
mon_peer = peer->monitor_peer;
|
mon_peer = peer->monitor_peer;
|
||||||
if (qdf_likely(mon_peer)) {
|
if (qdf_likely(mon_peer)) {
|
||||||
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_failed,
|
|
||||||
mon_peer->stats.tx.retries);
|
|
||||||
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_total,
|
|
||||||
mon_peer->stats.tx.tx_mpdus_tried);
|
|
||||||
for (ac = 0; ac < WME_AC_MAX; ac++) {
|
for (ac = 0; ac < WME_AC_MAX; ac++) {
|
||||||
mon_peer->stats.airtime_consumption[ac].avg_consumption_per_sec =
|
mon_peer->stats.airtime_consumption[ac].avg_consumption_per_sec =
|
||||||
mon_peer->stats.airtime_consumption[ac].consumption;
|
mon_peer->stats.airtime_consumption[ac].consumption;
|
||||||
@@ -2732,6 +2728,44 @@ static uint32_t dp_mon_get_ru_width_from_ru_size(uint16_t ru_size)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
||||||
|
/*
|
||||||
|
* dp_pdev_telemetry_stats_update() - Update pdev telemetry stats
|
||||||
|
* @pdev: Datapath pdev handle
|
||||||
|
* @ppdu: PPDU Descriptor
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
dp_pdev_telemetry_stats_update(
|
||||||
|
struct dp_pdev *pdev,
|
||||||
|
struct cdp_tx_completion_ppdu_user *ppdu)
|
||||||
|
{
|
||||||
|
uint16_t mpdu_tried;
|
||||||
|
uint16_t mpdu_failed;
|
||||||
|
uint16_t num_mpdu;
|
||||||
|
uint8_t ac = 0;
|
||||||
|
|
||||||
|
num_mpdu = ppdu->mpdu_success;
|
||||||
|
mpdu_tried = ppdu->mpdu_tried_ucast + ppdu->mpdu_tried_mcast;
|
||||||
|
mpdu_failed = mpdu_tried - num_mpdu;
|
||||||
|
|
||||||
|
ac = TID_TO_WME_AC(ppdu->tid);
|
||||||
|
|
||||||
|
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_failed[ac],
|
||||||
|
mpdu_failed);
|
||||||
|
|
||||||
|
DP_STATS_INC(pdev, telemetry_stats.tx_mpdu_total[ac],
|
||||||
|
mpdu_tried);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void
|
||||||
|
dp_pdev_telemetry_stats_update(
|
||||||
|
struct dp_pdev *pdev,
|
||||||
|
struct cdp_tx_completion_ppdu_user *ppdu)
|
||||||
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dp_tx_stats_update() - Update per-peer statistics
|
* dp_tx_stats_update() - Update per-peer statistics
|
||||||
* @pdev: Datapath pdev handle
|
* @pdev: Datapath pdev handle
|
||||||
@@ -2790,6 +2824,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
|
|||||||
* mpdu failed equal mpdu tried.
|
* mpdu failed equal mpdu tried.
|
||||||
*/
|
*/
|
||||||
DP_STATS_INC(mon_peer, tx.retries, mpdu_failed);
|
DP_STATS_INC(mon_peer, tx.retries, mpdu_failed);
|
||||||
|
dp_pdev_telemetry_stats_update(pdev, ppdu);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2896,6 +2931,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
|
|||||||
mon_ops->mon_tx_stats_update(mon_peer, ppdu);
|
mon_ops->mon_tx_stats_update(mon_peer, ppdu);
|
||||||
|
|
||||||
dp_tx_rate_stats_update(peer, ppdu);
|
dp_tx_rate_stats_update(peer, ppdu);
|
||||||
|
dp_pdev_telemetry_stats_update(pdev, ppdu);
|
||||||
|
|
||||||
dp_peer_stats_notify(pdev, peer);
|
dp_peer_stats_notify(pdev, peer);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user