qca-wifi: Display new metrics in peerstats tool
Display new metrics in peerstats tool Tx Stats 1. num_ppdus 2. num_bytes 3. phy_rate_actual_su 4. phy_rate_actual_mu 5. ofdma_usage 6. mu_mimo_usage 7. bw_usage_avg 8. bw_usage_max 9. pkt_error_rate Rx Stats 1. num_ppdus 2. num_bytes 3. phy_rate_actual_su 4. phy_rate_actual_mu 5. ofdma_usage 6. mu_mimo_usage 7. bw_usage_avg 8. bw_usage_max 9. pkt_error_rate This tool runs as daemon and listens to netlink events sent by driver CRs-Fixed: 2740231 Change-Id: I3f967ac2beae61ed60f0262352b72fe2d9ec1e4d
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
8ad7491fdd
commit
d88a0fb009
@@ -340,6 +340,100 @@ static void dp_peer_tx_rate_stats_print(uint8_t *peer_mac,
|
||||
return;
|
||||
}
|
||||
|
||||
static void dp_peer_tx_link_stats_print(uint8_t *peer_mac,
|
||||
uint64_t peer_cookie,
|
||||
void *buffer,
|
||||
uint32_t buffer_len)
|
||||
{
|
||||
struct wlan_tx_link_stats *tx_stats;
|
||||
uint8_t is_lithium;
|
||||
|
||||
is_lithium = (peer_cookie & WLANSTATS_COOKIE_PLATFORM_OFFSET)
|
||||
>> WLANSTATS_PEER_COOKIE_LSB;
|
||||
|
||||
if (!is_lithium) {
|
||||
PRINT("Not supported in non-lithium platforms\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (buffer_len < sizeof(struct wlan_tx_link_stats)) {
|
||||
PRINT("invalid buffer len, return");
|
||||
return;
|
||||
}
|
||||
|
||||
tx_stats = (struct wlan_tx_link_stats *)buffer;
|
||||
|
||||
PRINT("\n\n");
|
||||
PRINT("========= PEER TX LINK QUALITY METRICS =========\n");
|
||||
PRINT("PEER %02hhx:%02hhx:%02hhx:%02hhx%02hhx:%02hhx",
|
||||
peer_mac[0],
|
||||
peer_mac[1],
|
||||
peer_mac[2],
|
||||
peer_mac[3],
|
||||
peer_mac[4],
|
||||
peer_mac[5]);
|
||||
PRINT("num_ppdus: %u", tx_stats->num_ppdus);
|
||||
PRINT("bytes: %"PRIu64, tx_stats->bytes);
|
||||
PRINT("phy_rate_actual_su: %u kbps", tx_stats->phy_rate_actual_su);
|
||||
PRINT("phy_rate_actual_mu: %u kbps", tx_stats->phy_rate_actual_mu);
|
||||
PRINT("ofdma_usage: %u", tx_stats->ofdma_usage);
|
||||
PRINT("mu_mimo_usage: %u", tx_stats->mu_mimo_usage);
|
||||
PRINT("bw_usage_avg: %u MHz", tx_stats->bw.usage_avg);
|
||||
PRINT("bw_usage_packets: 20MHz: %u 40MHz: %u 80MHz: %u 160MHz: %u",
|
||||
tx_stats->bw.usage_counter[0], tx_stats->bw.usage_counter[1],
|
||||
tx_stats->bw.usage_counter[2], tx_stats->bw.usage_counter[3]);
|
||||
PRINT("bw_usage_max:: %u%%", tx_stats->bw.usage_max);
|
||||
PRINT("ack_rssi: %lu", tx_stats->ack_rssi);
|
||||
PRINT("pkt_error_rate: %u%%", tx_stats->pkt_error_rate);
|
||||
}
|
||||
|
||||
static void dp_peer_rx_link_stats_print(uint8_t *peer_mac,
|
||||
uint64_t peer_cookie,
|
||||
void *buffer,
|
||||
uint32_t buffer_len)
|
||||
{
|
||||
struct wlan_rx_link_stats *rx_stats;
|
||||
uint8_t is_lithium;
|
||||
|
||||
is_lithium = (peer_cookie & WLANSTATS_COOKIE_PLATFORM_OFFSET)
|
||||
>> WLANSTATS_PEER_COOKIE_LSB;
|
||||
|
||||
if (!is_lithium) {
|
||||
PRINT("Not supported in non-lithium platforms\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (buffer_len < sizeof(struct wlan_rx_link_stats)) {
|
||||
PRINT("invalid buffer len, return");
|
||||
return;
|
||||
}
|
||||
|
||||
rx_stats = (struct wlan_rx_link_stats *)buffer;
|
||||
|
||||
PRINT("\n\n");
|
||||
PRINT("========= PEER RX LINK QUALITY METRICS =========\n");
|
||||
PRINT("PEER %02hhx:%02hhx:%02hhx:%02hhx%02hhx:%02hhx",
|
||||
peer_mac[0],
|
||||
peer_mac[1],
|
||||
peer_mac[2],
|
||||
peer_mac[3],
|
||||
peer_mac[4],
|
||||
peer_mac[5]);
|
||||
PRINT("num_ppdus: %u", rx_stats->num_ppdus);
|
||||
PRINT("bytes: %"PRIu64, rx_stats->bytes);
|
||||
PRINT("phy_rate_actual_su: %u kbps", rx_stats->phy_rate_actual_su);
|
||||
PRINT("phy_rate_actual_mu: %u kbps", rx_stats->phy_rate_actual_mu);
|
||||
PRINT("ofdma_usage: %u", rx_stats->ofdma_usage);
|
||||
PRINT("mu_mimo_usage: %u", rx_stats->mu_mimo_usage);
|
||||
PRINT("bw_usage_avg: %u MHz", rx_stats->bw.usage_avg);
|
||||
PRINT("bw_usage_packets: 20MHz: %u 40MHz: %u 80MHz: %u 160MHz: %u",
|
||||
rx_stats->bw.usage_counter[0], rx_stats->bw.usage_counter[1],
|
||||
rx_stats->bw.usage_counter[2], rx_stats->bw.usage_counter[3]);
|
||||
PRINT("bw_usage_max: %u%%", rx_stats->bw.usage_max);
|
||||
PRINT("su_rssi: %lu", rx_stats->su_rssi);
|
||||
PRINT("pkt_error_rate: %u%%", rx_stats->pkt_error_rate);
|
||||
}
|
||||
|
||||
static void dp_peer_stats_handler(uint32_t cache_type,
|
||||
uint8_t *peer_mac,
|
||||
uint64_t peer_cookie,
|
||||
@@ -355,6 +449,14 @@ static void dp_peer_stats_handler(uint32_t cache_type,
|
||||
dp_peer_tx_rate_stats_print(peer_mac, peer_cookie,
|
||||
buffer, buffer_len);
|
||||
break;
|
||||
case DP_PEER_TX_LINK_STATS:
|
||||
dp_peer_tx_link_stats_print(peer_mac, peer_cookie,
|
||||
buffer, buffer_len);
|
||||
break;
|
||||
case DP_PEER_RX_LINK_STATS:
|
||||
dp_peer_rx_link_stats_print(peer_mac, peer_cookie,
|
||||
buffer, buffer_len);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user