qcacmn: Move statistics to dp_stats file
Move dump_stats API to dp_stats.c file. Change-Id: I7cc3f438c58bb8e2521b7042472dd8436f513e58 CRs-Fixed: 2451204
Este commit está contenido en:

cometido por
nshrivas

padre
8075637d77
commit
bedc0cd113
@@ -127,13 +127,9 @@ bool is_dp_verbose_debug_enabled;
|
||||
#define DP_WDS_AST_AGING_TIMER_CNT \
|
||||
((DP_WDS_AST_AGING_TIMER_DEFAULT_MS / DP_AST_AGING_TIMER_DEFAULT_MS) - 1)
|
||||
#define DP_MCS_LENGTH (6*MAX_MCS)
|
||||
#define DP_NSS_LENGTH (6*SS_COUNT)
|
||||
#define DP_MU_GROUP_SHOW 16
|
||||
#define DP_MU_GROUP_LENGTH (6 * DP_MU_GROUP_SHOW)
|
||||
|
||||
#define DP_RXDMA_ERR_LENGTH (6*HAL_RXDMA_ERR_MAX)
|
||||
#define DP_REO_ERR_LENGTH (6*HAL_REO_ERR_MAX)
|
||||
#define DP_MAX_MCS_STRING_LEN 30
|
||||
#define DP_CURR_FW_STATS_AVAIL 19
|
||||
#define DP_HTT_DBG_EXT_STATS_MAX 256
|
||||
#define DP_MAX_SLEEP_TIME 100
|
||||
@@ -199,98 +195,6 @@ static uint8_t default_dscp_tid_map[DSCP_TID_MAP_MAX] = {
|
||||
static uint8_t default_pcp_tid_map[PCP_TID_MAP_MAX] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
};
|
||||
/*
|
||||
* struct dp_rate_debug
|
||||
*
|
||||
* @mcs_type: print string for a given mcs
|
||||
* @valid: valid mcs rate?
|
||||
*/
|
||||
struct dp_rate_debug {
|
||||
char mcs_type[DP_MAX_MCS_STRING_LEN];
|
||||
uint8_t valid;
|
||||
};
|
||||
|
||||
#define MCS_VALID 1
|
||||
#define MCS_INVALID 0
|
||||
|
||||
static const struct dp_rate_debug dp_rate_string[DOT11_MAX][MAX_MCS] = {
|
||||
|
||||
{
|
||||
{"OFDM 48 Mbps", MCS_VALID},
|
||||
{"OFDM 24 Mbps", MCS_VALID},
|
||||
{"OFDM 12 Mbps", MCS_VALID},
|
||||
{"OFDM 6 Mbps ", MCS_VALID},
|
||||
{"OFDM 54 Mbps", MCS_VALID},
|
||||
{"OFDM 36 Mbps", MCS_VALID},
|
||||
{"OFDM 18 Mbps", MCS_VALID},
|
||||
{"OFDM 9 Mbps ", MCS_VALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_VALID},
|
||||
},
|
||||
{
|
||||
{"CCK 11 Mbps Long ", MCS_VALID},
|
||||
{"CCK 5.5 Mbps Long ", MCS_VALID},
|
||||
{"CCK 2 Mbps Long ", MCS_VALID},
|
||||
{"CCK 1 Mbps Long ", MCS_VALID},
|
||||
{"CCK 11 Mbps Short ", MCS_VALID},
|
||||
{"CCK 5.5 Mbps Short", MCS_VALID},
|
||||
{"CCK 2 Mbps Short ", MCS_VALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_VALID},
|
||||
},
|
||||
{
|
||||
{"HT MCS 0 (BPSK 1/2) ", MCS_VALID},
|
||||
{"HT MCS 1 (QPSK 1/2) ", MCS_VALID},
|
||||
{"HT MCS 2 (QPSK 3/4) ", MCS_VALID},
|
||||
{"HT MCS 3 (16-QAM 1/2)", MCS_VALID},
|
||||
{"HT MCS 4 (16-QAM 3/4)", MCS_VALID},
|
||||
{"HT MCS 5 (64-QAM 2/3)", MCS_VALID},
|
||||
{"HT MCS 6 (64-QAM 3/4)", MCS_VALID},
|
||||
{"HT MCS 7 (64-QAM 5/6)", MCS_VALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_INVALID},
|
||||
{"INVALID ", MCS_VALID},
|
||||
},
|
||||
{
|
||||
{"VHT MCS 0 (BPSK 1/2) ", MCS_VALID},
|
||||
{"VHT MCS 1 (QPSK 1/2) ", MCS_VALID},
|
||||
{"VHT MCS 2 (QPSK 3/4) ", MCS_VALID},
|
||||
{"VHT MCS 3 (16-QAM 1/2) ", MCS_VALID},
|
||||
{"VHT MCS 4 (16-QAM 3/4) ", MCS_VALID},
|
||||
{"VHT MCS 5 (64-QAM 2/3) ", MCS_VALID},
|
||||
{"VHT MCS 6 (64-QAM 3/4) ", MCS_VALID},
|
||||
{"VHT MCS 7 (64-QAM 5/6) ", MCS_VALID},
|
||||
{"VHT MCS 8 (256-QAM 3/4) ", MCS_VALID},
|
||||
{"VHT MCS 9 (256-QAM 5/6) ", MCS_VALID},
|
||||
{"VHT MCS 10 (1024-QAM 3/4)", MCS_VALID},
|
||||
{"VHT MCS 11 (1024-QAM 5/6)", MCS_VALID},
|
||||
{"INVALID ", MCS_VALID},
|
||||
},
|
||||
{
|
||||
{"HE MCS 0 (BPSK 1/2) ", MCS_VALID},
|
||||
{"HE MCS 1 (QPSK 1/2) ", MCS_VALID},
|
||||
{"HE MCS 2 (QPSK 3/4) ", MCS_VALID},
|
||||
{"HE MCS 3 (16-QAM 1/2) ", MCS_VALID},
|
||||
{"HE MCS 4 (16-QAM 3/4) ", MCS_VALID},
|
||||
{"HE MCS 5 (64-QAM 2/3) ", MCS_VALID},
|
||||
{"HE MCS 6 (64-QAM 3/4) ", MCS_VALID},
|
||||
{"HE MCS 7 (64-QAM 5/6) ", MCS_VALID},
|
||||
{"HE MCS 8 (256-QAM 3/4) ", MCS_VALID},
|
||||
{"HE MCS 9 (256-QAM 5/6) ", MCS_VALID},
|
||||
{"HE MCS 10 (1024-QAM 3/4)", MCS_VALID},
|
||||
{"HE MCS 11 (1024-QAM 5/6)", MCS_VALID},
|
||||
{"INVALID ", MCS_VALID},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Cpu to tx ring map
|
||||
@@ -6553,13 +6457,7 @@ void dp_aggregate_vdev_stats(struct dp_vdev *vdev,
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_aggregate_pdev_stats(): Consolidate stats at PDEV level
|
||||
* @pdev: DP PDEV handle
|
||||
*
|
||||
* return: void
|
||||
*/
|
||||
static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
|
||||
void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
struct dp_vdev *vdev = NULL;
|
||||
struct dp_soc *soc;
|
||||
@@ -7177,374 +7075,6 @@ dp_txrx_host_stats_clr(struct dp_vdev *vdev)
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_print_common_rates_info(): Print common rate for tx or rx
|
||||
* @pkt_type_array: rate type array contains rate info
|
||||
*
|
||||
* Return:void
|
||||
*/
|
||||
static inline void
|
||||
dp_print_common_rates_info(struct cdp_pkt_type *pkt_type_array)
|
||||
{
|
||||
uint8_t mcs, pkt_type;
|
||||
|
||||
for (pkt_type = 0; pkt_type < DOT11_MAX; pkt_type++) {
|
||||
for (mcs = 0; mcs < MAX_MCS; mcs++) {
|
||||
if (!dp_rate_string[pkt_type][mcs].valid)
|
||||
continue;
|
||||
|
||||
DP_PRINT_STATS(" %s = %d",
|
||||
dp_rate_string[pkt_type][mcs].mcs_type,
|
||||
pkt_type_array[pkt_type].mcs_count[mcs]);
|
||||
}
|
||||
|
||||
DP_PRINT_STATS("\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_print_rx_rates(): Print Rx rate stats
|
||||
* @vdev: DP_VDEV handle
|
||||
*
|
||||
* Return:void
|
||||
*/
|
||||
static inline void
|
||||
dp_print_rx_rates(struct dp_vdev *vdev)
|
||||
{
|
||||
struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
|
||||
uint8_t i;
|
||||
uint8_t index = 0;
|
||||
char nss[DP_NSS_LENGTH];
|
||||
|
||||
DP_PRINT_STATS("Rx Rate Info:\n");
|
||||
dp_print_common_rates_info(pdev->stats.rx.pkt_type);
|
||||
|
||||
|
||||
index = 0;
|
||||
for (i = 0; i < SS_COUNT; i++) {
|
||||
index += qdf_snprint(&nss[index], DP_NSS_LENGTH - index,
|
||||
" %d", pdev->stats.rx.nss[i]);
|
||||
}
|
||||
DP_PRINT_STATS("NSS(1-8) = %s",
|
||||
nss);
|
||||
|
||||
DP_PRINT_STATS("SGI ="
|
||||
" 0.8us %d,"
|
||||
" 0.4us %d,"
|
||||
" 1.6us %d,"
|
||||
" 3.2us %d,",
|
||||
pdev->stats.rx.sgi_count[0],
|
||||
pdev->stats.rx.sgi_count[1],
|
||||
pdev->stats.rx.sgi_count[2],
|
||||
pdev->stats.rx.sgi_count[3]);
|
||||
DP_PRINT_STATS("BW Counts = 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
|
||||
pdev->stats.rx.bw[0], pdev->stats.rx.bw[1],
|
||||
pdev->stats.rx.bw[2], pdev->stats.rx.bw[3]);
|
||||
DP_PRINT_STATS("Reception Type ="
|
||||
" SU: %d,"
|
||||
" MU_MIMO:%d,"
|
||||
" MU_OFDMA:%d,"
|
||||
" MU_OFDMA_MIMO:%d\n",
|
||||
pdev->stats.rx.reception_type[0],
|
||||
pdev->stats.rx.reception_type[1],
|
||||
pdev->stats.rx.reception_type[2],
|
||||
pdev->stats.rx.reception_type[3]);
|
||||
DP_PRINT_STATS("Aggregation:\n");
|
||||
DP_PRINT_STATS("Number of Msdu's Part of Ampdus = %d",
|
||||
pdev->stats.rx.ampdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's With No Mpdu Level Aggregation : %d",
|
||||
pdev->stats.rx.non_ampdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's Part of Amsdu: %d",
|
||||
pdev->stats.rx.amsdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's With No Msdu Level Aggregation: %d",
|
||||
pdev->stats.rx.non_amsdu_cnt);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_print_tx_rates(): Print tx rates
|
||||
* @vdev: DP_VDEV handle
|
||||
*
|
||||
* Return:void
|
||||
*/
|
||||
static inline void
|
||||
dp_print_tx_rates(struct dp_vdev *vdev)
|
||||
{
|
||||
struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
|
||||
|
||||
DP_PRINT_STATS("Tx Rate Info:\n");
|
||||
dp_print_common_rates_info(pdev->stats.tx.pkt_type);
|
||||
|
||||
DP_PRINT_STATS("SGI ="
|
||||
" 0.8us %d"
|
||||
" 0.4us %d"
|
||||
" 1.6us %d"
|
||||
" 3.2us %d",
|
||||
pdev->stats.tx.sgi_count[0],
|
||||
pdev->stats.tx.sgi_count[1],
|
||||
pdev->stats.tx.sgi_count[2],
|
||||
pdev->stats.tx.sgi_count[3]);
|
||||
|
||||
DP_PRINT_STATS("BW Counts = 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
|
||||
pdev->stats.tx.bw[0], pdev->stats.tx.bw[1],
|
||||
pdev->stats.tx.bw[2], pdev->stats.tx.bw[3]);
|
||||
|
||||
DP_PRINT_STATS("OFDMA = %d", pdev->stats.tx.ofdma);
|
||||
DP_PRINT_STATS("STBC = %d", pdev->stats.tx.stbc);
|
||||
DP_PRINT_STATS("LDPC = %d", pdev->stats.tx.ldpc);
|
||||
DP_PRINT_STATS("Retries = %d", pdev->stats.tx.retries);
|
||||
DP_PRINT_STATS("Last ack rssi = %d\n", pdev->stats.tx.last_ack_rssi);
|
||||
|
||||
DP_PRINT_STATS("Aggregation:\n");
|
||||
DP_PRINT_STATS("Number of Msdu's Part of Ampdus = %d",
|
||||
pdev->stats.tx.ampdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's With No Mpdu Level Aggregation : %d",
|
||||
pdev->stats.tx.non_ampdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's Part of Amsdu = %d",
|
||||
pdev->stats.tx.amsdu_cnt);
|
||||
DP_PRINT_STATS("Number of Msdu's With No Msdu Level Aggregation = %d",
|
||||
pdev->stats.tx.non_amsdu_cnt);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_print_peer_stats():print peer stats
|
||||
* @peer: DP_PEER handle
|
||||
*
|
||||
* return void
|
||||
*/
|
||||
static inline void dp_print_peer_stats(struct dp_peer *peer)
|
||||
{
|
||||
uint8_t i;
|
||||
uint32_t index;
|
||||
uint32_t j;
|
||||
char nss[DP_NSS_LENGTH];
|
||||
char mu_group_id[DP_MU_GROUP_LENGTH];
|
||||
|
||||
DP_PRINT_STATS("Node Tx Stats:\n");
|
||||
DP_PRINT_STATS("Total Packet Completions = %d",
|
||||
peer->stats.tx.comp_pkt.num);
|
||||
DP_PRINT_STATS("Total Bytes Completions = %llu",
|
||||
peer->stats.tx.comp_pkt.bytes);
|
||||
DP_PRINT_STATS("Success Packets = %d",
|
||||
peer->stats.tx.tx_success.num);
|
||||
DP_PRINT_STATS("Success Bytes = %llu",
|
||||
peer->stats.tx.tx_success.bytes);
|
||||
DP_PRINT_STATS("Unicast Success Packets = %d",
|
||||
peer->stats.tx.ucast.num);
|
||||
DP_PRINT_STATS("Unicast Success Bytes = %llu",
|
||||
peer->stats.tx.ucast.bytes);
|
||||
DP_PRINT_STATS("Multicast Success Packets = %d",
|
||||
peer->stats.tx.mcast.num);
|
||||
DP_PRINT_STATS("Multicast Success Bytes = %llu",
|
||||
peer->stats.tx.mcast.bytes);
|
||||
DP_PRINT_STATS("Broadcast Success Packets = %d",
|
||||
peer->stats.tx.bcast.num);
|
||||
DP_PRINT_STATS("Broadcast Success Bytes = %llu",
|
||||
peer->stats.tx.bcast.bytes);
|
||||
DP_PRINT_STATS("Packets Failed = %d",
|
||||
peer->stats.tx.tx_failed);
|
||||
DP_PRINT_STATS("Packets In OFDMA = %d",
|
||||
peer->stats.tx.ofdma);
|
||||
DP_PRINT_STATS("Packets In STBC = %d",
|
||||
peer->stats.tx.stbc);
|
||||
DP_PRINT_STATS("Packets In LDPC = %d",
|
||||
peer->stats.tx.ldpc);
|
||||
DP_PRINT_STATS("Packet Retries = %d",
|
||||
peer->stats.tx.retries);
|
||||
DP_PRINT_STATS("MSDU's Part of AMSDU = %d",
|
||||
peer->stats.tx.amsdu_cnt);
|
||||
DP_PRINT_STATS("Msdu's As Part of Ampdu = %d",
|
||||
peer->stats.tx.non_ampdu_cnt);
|
||||
DP_PRINT_STATS("Msdu's As Ampdu = %d",
|
||||
peer->stats.tx.ampdu_cnt);
|
||||
DP_PRINT_STATS("Last Packet RSSI = %d",
|
||||
peer->stats.tx.last_ack_rssi);
|
||||
DP_PRINT_STATS("Dropped At FW: Removed Pkts = %u",
|
||||
peer->stats.tx.dropped.fw_rem.num);
|
||||
DP_PRINT_STATS("Dropped At FW: Removed bytes = %llu",
|
||||
peer->stats.tx.dropped.fw_rem.bytes);
|
||||
DP_PRINT_STATS("Dropped At FW: Removed transmitted = %d",
|
||||
peer->stats.tx.dropped.fw_rem_tx);
|
||||
DP_PRINT_STATS("Dropped At FW: Removed Untransmitted = %d",
|
||||
peer->stats.tx.dropped.fw_rem_notx);
|
||||
DP_PRINT_STATS("Dropped : Age Out = %d",
|
||||
peer->stats.tx.dropped.age_out);
|
||||
DP_PRINT_STATS("NAWDS : ");
|
||||
DP_PRINT_STATS(" Nawds multicast Drop Tx Packet = %d",
|
||||
peer->stats.tx.nawds_mcast_drop);
|
||||
DP_PRINT_STATS(" Nawds multicast Tx Packet Count = %d",
|
||||
peer->stats.tx.nawds_mcast.num);
|
||||
DP_PRINT_STATS(" Nawds multicast Tx Packet Bytes = %llu",
|
||||
peer->stats.tx.nawds_mcast.bytes);
|
||||
|
||||
DP_PRINT_STATS("Rate Info:");
|
||||
dp_print_common_rates_info(peer->stats.tx.pkt_type);
|
||||
|
||||
|
||||
DP_PRINT_STATS("SGI = "
|
||||
" 0.8us %d"
|
||||
" 0.4us %d"
|
||||
" 1.6us %d"
|
||||
" 3.2us %d",
|
||||
peer->stats.tx.sgi_count[0],
|
||||
peer->stats.tx.sgi_count[1],
|
||||
peer->stats.tx.sgi_count[2],
|
||||
peer->stats.tx.sgi_count[3]);
|
||||
DP_PRINT_STATS("Excess Retries per AC ");
|
||||
DP_PRINT_STATS(" Best effort = %d",
|
||||
peer->stats.tx.excess_retries_per_ac[0]);
|
||||
DP_PRINT_STATS(" Background= %d",
|
||||
peer->stats.tx.excess_retries_per_ac[1]);
|
||||
DP_PRINT_STATS(" Video = %d",
|
||||
peer->stats.tx.excess_retries_per_ac[2]);
|
||||
DP_PRINT_STATS(" Voice = %d",
|
||||
peer->stats.tx.excess_retries_per_ac[3]);
|
||||
DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d\n",
|
||||
peer->stats.tx.bw[0], peer->stats.tx.bw[1],
|
||||
peer->stats.tx.bw[2], peer->stats.tx.bw[3]);
|
||||
|
||||
index = 0;
|
||||
for (i = 0; i < SS_COUNT; i++) {
|
||||
index += qdf_snprint(&nss[index], DP_NSS_LENGTH - index,
|
||||
" %d", peer->stats.tx.nss[i]);
|
||||
}
|
||||
DP_PRINT_STATS("NSS(1-8) = %s", nss);
|
||||
|
||||
DP_PRINT_STATS("Transmit Type :");
|
||||
DP_PRINT_STATS("SU %d, MU_MIMO %d, MU_OFDMA %d, MU_MIMO_OFDMA %d",
|
||||
peer->stats.tx.transmit_type[0],
|
||||
peer->stats.tx.transmit_type[1],
|
||||
peer->stats.tx.transmit_type[2],
|
||||
peer->stats.tx.transmit_type[3]);
|
||||
|
||||
for (i = 0; i < MAX_MU_GROUP_ID;) {
|
||||
index = 0;
|
||||
for (j = 0; j < DP_MU_GROUP_SHOW && i < MAX_MU_GROUP_ID;
|
||||
j++) {
|
||||
index += qdf_snprint(&mu_group_id[index],
|
||||
DP_MU_GROUP_LENGTH - index,
|
||||
" %d",
|
||||
peer->stats.tx.mu_group_id[i]);
|
||||
i++;
|
||||
}
|
||||
|
||||
DP_PRINT_STATS("User position list for GID %02d->%d: [%s]",
|
||||
i - DP_MU_GROUP_SHOW, i - 1, mu_group_id);
|
||||
}
|
||||
|
||||
DP_PRINT_STATS("Last Packet RU index [%d], Size [%d]",
|
||||
peer->stats.tx.ru_start, peer->stats.tx.ru_tones);
|
||||
DP_PRINT_STATS("RU Locations RU[26 52 106 242 484 996]:");
|
||||
DP_PRINT_STATS("RU_26: %d", peer->stats.tx.ru_loc[0]);
|
||||
DP_PRINT_STATS("RU 52: %d", peer->stats.tx.ru_loc[1]);
|
||||
DP_PRINT_STATS("RU 106: %d", peer->stats.tx.ru_loc[2]);
|
||||
DP_PRINT_STATS("RU 242: %d", peer->stats.tx.ru_loc[3]);
|
||||
DP_PRINT_STATS("RU 484: %d", peer->stats.tx.ru_loc[4]);
|
||||
DP_PRINT_STATS("RU 996: %d", peer->stats.tx.ru_loc[5]);
|
||||
|
||||
DP_PRINT_STATS("Aggregation:");
|
||||
DP_PRINT_STATS(" Number of Msdu's Part of Amsdu = %d",
|
||||
peer->stats.tx.amsdu_cnt);
|
||||
DP_PRINT_STATS(" Number of Msdu's With No Msdu Level Aggregation = %d\n",
|
||||
peer->stats.tx.non_amsdu_cnt);
|
||||
|
||||
DP_PRINT_STATS("Bytes and Packets transmitted in last one sec:");
|
||||
DP_PRINT_STATS(" Bytes transmitted in last sec: %d",
|
||||
peer->stats.tx.tx_byte_rate);
|
||||
DP_PRINT_STATS(" Data transmitted in last sec: %d",
|
||||
peer->stats.tx.tx_data_rate);
|
||||
|
||||
DP_PRINT_STATS("Node Rx Stats:");
|
||||
DP_PRINT_STATS("Packets Sent To Stack = %d",
|
||||
peer->stats.rx.to_stack.num);
|
||||
DP_PRINT_STATS("Bytes Sent To Stack = %llu",
|
||||
peer->stats.rx.to_stack.bytes);
|
||||
for (i = 0; i < CDP_MAX_RX_RINGS; i++) {
|
||||
DP_PRINT_STATS("Ring Id = %d", i);
|
||||
DP_PRINT_STATS(" Packets Received = %d",
|
||||
peer->stats.rx.rcvd_reo[i].num);
|
||||
DP_PRINT_STATS(" Bytes Received = %llu",
|
||||
peer->stats.rx.rcvd_reo[i].bytes);
|
||||
}
|
||||
DP_PRINT_STATS("Multicast Packets Received = %d",
|
||||
peer->stats.rx.multicast.num);
|
||||
DP_PRINT_STATS("Multicast Bytes Received = %llu",
|
||||
peer->stats.rx.multicast.bytes);
|
||||
DP_PRINT_STATS("Broadcast Packets Received = %d",
|
||||
peer->stats.rx.bcast.num);
|
||||
DP_PRINT_STATS("Broadcast Bytes Received = %llu",
|
||||
peer->stats.rx.bcast.bytes);
|
||||
DP_PRINT_STATS("Intra BSS Packets Received = %d",
|
||||
peer->stats.rx.intra_bss.pkts.num);
|
||||
DP_PRINT_STATS("Intra BSS Bytes Received = %llu",
|
||||
peer->stats.rx.intra_bss.pkts.bytes);
|
||||
DP_PRINT_STATS("Raw Packets Received = %d",
|
||||
peer->stats.rx.raw.num);
|
||||
DP_PRINT_STATS("Raw Bytes Received = %llu",
|
||||
peer->stats.rx.raw.bytes);
|
||||
DP_PRINT_STATS("Errors: MIC Errors = %d",
|
||||
peer->stats.rx.err.mic_err);
|
||||
DP_PRINT_STATS("Erros: Decryption Errors = %d",
|
||||
peer->stats.rx.err.decrypt_err);
|
||||
DP_PRINT_STATS("Msdu's Received As Part of Ampdu = %d",
|
||||
peer->stats.rx.non_ampdu_cnt);
|
||||
DP_PRINT_STATS("Msdu's Recived As Ampdu = %d",
|
||||
peer->stats.rx.ampdu_cnt);
|
||||
DP_PRINT_STATS("Msdu's Received Not Part of Amsdu's = %d",
|
||||
peer->stats.rx.non_amsdu_cnt);
|
||||
DP_PRINT_STATS("MSDUs Received As Part of Amsdu = %d",
|
||||
peer->stats.rx.amsdu_cnt);
|
||||
DP_PRINT_STATS("NAWDS : ");
|
||||
DP_PRINT_STATS(" Nawds multicast Drop Rx Packet = %d",
|
||||
peer->stats.rx.nawds_mcast_drop);
|
||||
DP_PRINT_STATS("SGI ="
|
||||
" 0.8us %d"
|
||||
" 0.4us %d"
|
||||
" 1.6us %d"
|
||||
" 3.2us %d",
|
||||
peer->stats.rx.sgi_count[0],
|
||||
peer->stats.rx.sgi_count[1],
|
||||
peer->stats.rx.sgi_count[2],
|
||||
peer->stats.rx.sgi_count[3]);
|
||||
DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d",
|
||||
peer->stats.rx.bw[0], peer->stats.rx.bw[1],
|
||||
peer->stats.rx.bw[2], peer->stats.rx.bw[3]);
|
||||
DP_PRINT_STATS("Reception Type ="
|
||||
" SU %d,"
|
||||
" MU_MIMO %d,"
|
||||
" MU_OFDMA %d,"
|
||||
" MU_OFDMA_MIMO %d",
|
||||
peer->stats.rx.reception_type[0],
|
||||
peer->stats.rx.reception_type[1],
|
||||
peer->stats.rx.reception_type[2],
|
||||
peer->stats.rx.reception_type[3]);
|
||||
|
||||
dp_print_common_rates_info(peer->stats.rx.pkt_type);
|
||||
|
||||
index = 0;
|
||||
for (i = 0; i < SS_COUNT; i++) {
|
||||
index += qdf_snprint(&nss[index], DP_NSS_LENGTH - index,
|
||||
" %d", peer->stats.rx.nss[i]);
|
||||
}
|
||||
DP_PRINT_STATS("NSS(1-8) = %s",
|
||||
nss);
|
||||
|
||||
DP_PRINT_STATS("Aggregation:");
|
||||
DP_PRINT_STATS(" Msdu's Part of Ampdu = %d",
|
||||
peer->stats.rx.ampdu_cnt);
|
||||
DP_PRINT_STATS(" Msdu's With No Mpdu Level Aggregation = %d",
|
||||
peer->stats.rx.non_ampdu_cnt);
|
||||
DP_PRINT_STATS(" Msdu's Part of Amsdu = %d",
|
||||
peer->stats.rx.amsdu_cnt);
|
||||
DP_PRINT_STATS(" Msdu's With No Msdu Level Aggregation = %d",
|
||||
peer->stats.rx.non_amsdu_cnt);
|
||||
|
||||
DP_PRINT_STATS("Bytes and Packets received in last one sec:");
|
||||
DP_PRINT_STATS(" Bytes received in last sec: %d",
|
||||
peer->stats.rx.rx_byte_rate);
|
||||
DP_PRINT_STATS(" Data received in last sec: %d",
|
||||
peer->stats.rx.rx_data_rate);
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_get_host_peer_stats()- function to print peer stats
|
||||
* @pdev_handle: DP_PDEV handle
|
||||
@@ -8598,216 +8128,6 @@ QDF_STATUS dp_txrx_stats_request(struct cdp_vdev *vdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_print_per_ring_stats(): Packet count per ring
|
||||
* @soc - soc handle
|
||||
*/
|
||||
static void dp_print_per_ring_stats(struct dp_soc *soc)
|
||||
{
|
||||
uint8_t ring;
|
||||
uint16_t core;
|
||||
uint64_t total_packets;
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Reo packets per ring:");
|
||||
for (ring = 0; ring < MAX_REO_DEST_RINGS; ring++) {
|
||||
total_packets = 0;
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"Packets on ring %u:", ring);
|
||||
for (core = 0; core < NR_CPUS; core++) {
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"Packets arriving on core %u: %llu",
|
||||
core,
|
||||
soc->stats.rx.ring_packets[core][ring]);
|
||||
total_packets += soc->stats.rx.ring_packets[core][ring];
|
||||
}
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"Total packets on ring %u: %llu",
|
||||
ring, total_packets);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_txrx_path_stats() - Function to display dump stats
|
||||
* @soc - soc handle
|
||||
*
|
||||
* return: none
|
||||
*/
|
||||
static void dp_txrx_path_stats(struct dp_soc *soc)
|
||||
{
|
||||
uint8_t error_code;
|
||||
uint8_t loop_pdev;
|
||||
struct dp_pdev *pdev;
|
||||
uint8_t i;
|
||||
|
||||
if (!soc) {
|
||||
DP_TRACE(ERROR, "%s: Invalid access",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
|
||||
for (loop_pdev = 0; loop_pdev < soc->pdev_count; loop_pdev++) {
|
||||
|
||||
pdev = soc->pdev_list[loop_pdev];
|
||||
dp_aggregate_pdev_stats(pdev);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Tx path Statistics:");
|
||||
DP_TRACE_STATS(INFO_HIGH, "from stack: %u msdus (%llu bytes)",
|
||||
pdev->stats.tx_i.rcvd.num,
|
||||
pdev->stats.tx_i.rcvd.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"processed from host: %u msdus (%llu bytes)",
|
||||
pdev->stats.tx_i.processed.num,
|
||||
pdev->stats.tx_i.processed.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"successfully transmitted: %u msdus (%llu bytes)",
|
||||
pdev->stats.tx.tx_success.num,
|
||||
pdev->stats.tx.tx_success.bytes);
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Dropped in host:");
|
||||
DP_TRACE_STATS(INFO_HIGH, "Total packets dropped: %u,",
|
||||
pdev->stats.tx_i.dropped.dropped_pkt.num);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Descriptor not available: %u",
|
||||
pdev->stats.tx_i.dropped.desc_na.num);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Ring full: %u",
|
||||
pdev->stats.tx_i.dropped.ring_full);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Enqueue fail: %u",
|
||||
pdev->stats.tx_i.dropped.enqueue_fail);
|
||||
DP_TRACE_STATS(INFO_HIGH, "DMA Error: %u",
|
||||
pdev->stats.tx_i.dropped.dma_error);
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Dropped in hardware:");
|
||||
DP_TRACE_STATS(INFO_HIGH, "total packets dropped: %u",
|
||||
pdev->stats.tx.tx_failed);
|
||||
DP_TRACE_STATS(INFO_HIGH, "mpdu age out: %u",
|
||||
pdev->stats.tx.dropped.age_out);
|
||||
DP_TRACE_STATS(INFO_HIGH, "firmware removed packets: %u",
|
||||
pdev->stats.tx.dropped.fw_rem.num);
|
||||
DP_TRACE_STATS(INFO_HIGH, "firmware removed bytes: %llu",
|
||||
pdev->stats.tx.dropped.fw_rem.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH, "firmware removed tx: %u",
|
||||
pdev->stats.tx.dropped.fw_rem_tx);
|
||||
DP_TRACE_STATS(INFO_HIGH, "firmware removed notx %u",
|
||||
pdev->stats.tx.dropped.fw_rem_notx);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Invalid peer on tx path: %u",
|
||||
pdev->soc->stats.tx.tx_invalid_peer.num);
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Tx packets sent per interrupt:");
|
||||
DP_TRACE_STATS(INFO_HIGH, "Single Packet: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_1);
|
||||
DP_TRACE_STATS(INFO_HIGH, "2-20 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_2_20);
|
||||
DP_TRACE_STATS(INFO_HIGH, "21-40 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_21_40);
|
||||
DP_TRACE_STATS(INFO_HIGH, "41-60 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_41_60);
|
||||
DP_TRACE_STATS(INFO_HIGH, "61-80 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_61_80);
|
||||
DP_TRACE_STATS(INFO_HIGH, "81-100 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_81_100);
|
||||
DP_TRACE_STATS(INFO_HIGH, "101-200 Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_101_200);
|
||||
DP_TRACE_STATS(INFO_HIGH, " 201+ Packets: %u",
|
||||
pdev->stats.tx_comp_histogram.pkts_201_plus);
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Rx path statistics");
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"delivered %u msdus ( %llu bytes),",
|
||||
pdev->stats.rx.to_stack.num,
|
||||
pdev->stats.rx.to_stack.bytes);
|
||||
for (i = 0; i < CDP_MAX_RX_RINGS; i++)
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"received on reo[%d] %u msdus( %llu bytes),",
|
||||
i, pdev->stats.rx.rcvd_reo[i].num,
|
||||
pdev->stats.rx.rcvd_reo[i].bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"intra-bss packets %u msdus ( %llu bytes),",
|
||||
pdev->stats.rx.intra_bss.pkts.num,
|
||||
pdev->stats.rx.intra_bss.pkts.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"intra-bss fails %u msdus ( %llu bytes),",
|
||||
pdev->stats.rx.intra_bss.fail.num,
|
||||
pdev->stats.rx.intra_bss.fail.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"raw packets %u msdus ( %llu bytes),",
|
||||
pdev->stats.rx.raw.num,
|
||||
pdev->stats.rx.raw.bytes);
|
||||
DP_TRACE_STATS(INFO_HIGH, "mic errors %u",
|
||||
pdev->stats.rx.err.mic_err);
|
||||
DP_TRACE_STATS(INFO_HIGH, "Invalid peer on rx path: %u",
|
||||
pdev->soc->stats.rx.err.rx_invalid_peer.num);
|
||||
DP_TRACE_STATS(INFO_HIGH, "sw_peer_id invalid %u",
|
||||
pdev->soc->stats.rx.err.rx_invalid_peer_id.num);
|
||||
DP_TRACE_STATS(INFO_HIGH, "packet_len invalid %u",
|
||||
pdev->soc->stats.rx.err.rx_invalid_pkt_len.num);
|
||||
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Reo Statistics");
|
||||
DP_TRACE_STATS(INFO_HIGH, "rbm error: %u msdus",
|
||||
pdev->soc->stats.rx.err.invalid_rbm);
|
||||
DP_TRACE_STATS(INFO_HIGH, "hal ring access fail: %u msdus",
|
||||
pdev->soc->stats.rx.err.hal_ring_access_fail);
|
||||
|
||||
for (error_code = 0; error_code < HAL_REO_ERR_MAX;
|
||||
error_code++) {
|
||||
if (!pdev->soc->stats.rx.err.reo_error[error_code])
|
||||
continue;
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"Reo error number (%u): %u msdus",
|
||||
error_code,
|
||||
pdev->soc->stats.rx.err
|
||||
.reo_error[error_code]);
|
||||
}
|
||||
|
||||
for (error_code = 0; error_code < HAL_RXDMA_ERR_MAX;
|
||||
error_code++) {
|
||||
if (!pdev->soc->stats.rx.err.rxdma_error[error_code])
|
||||
continue;
|
||||
DP_TRACE_STATS(INFO_HIGH,
|
||||
"Rxdma error number (%u): %u msdus",
|
||||
error_code,
|
||||
pdev->soc->stats.rx.err
|
||||
.rxdma_error[error_code]);
|
||||
}
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "Rx packets reaped per interrupt:");
|
||||
DP_TRACE_STATS(INFO_HIGH, "Single Packet: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_1);
|
||||
DP_TRACE_STATS(INFO_HIGH, "2-20 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_2_20);
|
||||
DP_TRACE_STATS(INFO_HIGH, "21-40 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_21_40);
|
||||
DP_TRACE_STATS(INFO_HIGH, "41-60 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_41_60);
|
||||
DP_TRACE_STATS(INFO_HIGH, "61-80 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_61_80);
|
||||
DP_TRACE_STATS(INFO_HIGH, "81-100 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_81_100);
|
||||
DP_TRACE_STATS(INFO_HIGH, "101-200 Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_101_200);
|
||||
DP_TRACE_STATS(INFO_HIGH, " 201+ Packets: %u",
|
||||
pdev->stats.rx_ind_histogram.pkts_201_plus);
|
||||
|
||||
DP_TRACE_STATS(INFO_HIGH, "%s: tso_enable: %u lro_enable: %u rx_hash: %u napi_enable: %u",
|
||||
__func__,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->tso_enabled,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->lro_enabled,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->rx_hash,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->napi_enabled);
|
||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||
DP_TRACE_STATS(INFO_HIGH, "%s: Tx flow stop queue: %u tx flow start queue offset: %u",
|
||||
__func__,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->tx_flow_stop_queue_threshold,
|
||||
pdev->soc->wlan_cfg_ctx
|
||||
->tx_flow_start_queue_offset);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_txrx_dump_stats() - Dump statistics
|
||||
* @value - Statistics option
|
||||
|
Referencia en una nueva incidencia
Block a user