mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Fixing display of Vow Stats
Adding more fields to vow stats display function. Change-Id: Ic5227e994e55c0ebc99351051d5b409ba0c3f627
This commit is contained in:
parent
1d9aae09c6
commit
3e9d647162
4 changed files with 101 additions and 104 deletions
|
|
@ -822,7 +822,6 @@ struct cdp_soc_t {
|
|||
* @CDP_CONFIG_CAPTURE_LATENCY: Capture time latency
|
||||
* @CDP_INGRESS_STATS: Accumulate ingress statistics
|
||||
* @CDP_OSIF_DROP: Accumulate drops in OSIF layer
|
||||
* @CDP_CONFIG_DELAY_STATS: Enable per tid delay stats
|
||||
*/
|
||||
enum cdp_pdev_param_type {
|
||||
CDP_CONFIG_DEBUG_SNIFFER,
|
||||
|
|
@ -835,7 +834,6 @@ enum cdp_pdev_param_type {
|
|||
CDP_CONFIG_CAPTURE_LATENCY,
|
||||
CDP_INGRESS_STATS,
|
||||
CDP_OSIF_DROP,
|
||||
CDP_CONFIG_DELAY_STATS,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -189,6 +189,7 @@ enum cdp_delay_stats_mode {
|
|||
* Index to be used for all delay stats
|
||||
*/
|
||||
enum cdp_delay_bucket_index {
|
||||
CDP_DELAY_BUCKET_0,
|
||||
CDP_DELAY_BUCKET_1,
|
||||
CDP_DELAY_BUCKET_2,
|
||||
CDP_DELAY_BUCKET_3,
|
||||
|
|
|
|||
|
|
@ -8174,12 +8174,6 @@ static QDF_STATUS dp_set_pdev_param(struct cdp_pdev *pdev_handle,
|
|||
case CDP_OSIF_DROP:
|
||||
dp_pdev_tid_stats_osif_drop(pdev_handle, val);
|
||||
break;
|
||||
case CDP_CONFIG_DELAY_STATS:
|
||||
if (val == 1)
|
||||
pdev->delay_stats_flag = true;
|
||||
else
|
||||
pdev->delay_stats_flag = false;
|
||||
break;
|
||||
default:
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
|
@ -10295,10 +10289,10 @@ int dp_set_pktlog_wifi3(struct dp_pdev *pdev, uint32_t event,
|
|||
*/
|
||||
static uint8_t dp_bucket_index(uint32_t delay, uint16_t *array)
|
||||
{
|
||||
uint8_t i = CDP_DELAY_BUCKET_1;
|
||||
uint8_t i = CDP_DELAY_BUCKET_0;
|
||||
|
||||
for (; i < CDP_DELAY_BUCKET_MAX; i++) {
|
||||
if (delay < array[i] && delay > array[i + 1])
|
||||
if (delay >= array[i] && delay <= array[i + 1])
|
||||
return i;
|
||||
}
|
||||
|
||||
|
|
@ -10329,21 +10323,21 @@ dp_fill_delay_buckets(struct dp_pdev *pdev, uint32_t delay,
|
|||
* Fw to hw delay ranges in milliseconds
|
||||
*/
|
||||
uint16_t cdp_fw_to_hw_delay[CDP_DELAY_BUCKET_MAX] = {
|
||||
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 250, 500};
|
||||
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 250, 500};
|
||||
|
||||
/*
|
||||
* cdp_sw_enq_delay_range
|
||||
* Software enqueue delay ranges in milliseconds
|
||||
*/
|
||||
uint16_t cdp_sw_enq_delay[CDP_DELAY_BUCKET_MAX] = {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
|
||||
|
||||
/*
|
||||
* cdp_intfrm_delay_range
|
||||
* Interframe delay ranges in milliseconds
|
||||
*/
|
||||
uint16_t cdp_intfrm_delay[CDP_DELAY_BUCKET_MAX] = {
|
||||
5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60};
|
||||
0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60};
|
||||
|
||||
/*
|
||||
* Update delay stats in proper bucket
|
||||
|
|
@ -10382,7 +10376,7 @@ dp_fill_delay_buckets(struct dp_pdev *pdev, uint32_t delay,
|
|||
|
||||
delay_index = dp_bucket_index(delay, cdp_intfrm_delay);
|
||||
rstats->to_stack_delay.delay_bucket[delay_index]++;
|
||||
return &rstats->intfrm_delay;
|
||||
return &rstats->to_stack_delay;
|
||||
default:
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s Incorrect delay mode: %d", __func__, mode);
|
||||
|
|
|
|||
|
|
@ -56,16 +56,16 @@ const char *fw_to_hw_delay_bucket[CDP_DELAY_BUCKET_MAX + 1] = {
|
|||
"41 to 50 ms", "51 to 60 ms",
|
||||
"61 to 70 ms", "71 to 80 ms",
|
||||
"81 to 90 ms", "91 to 100 ms",
|
||||
"101 to 250 ms", "251 to 500 ms"
|
||||
"101 to 250 ms", "251 to 500 ms", "500+ ms"
|
||||
};
|
||||
|
||||
const char *sw_enq_delay_bucket[CDP_DELAY_BUCKET_MAX + 1] = {
|
||||
"0 to 1 ms", "11 to 20 ms",
|
||||
"21 to 30 ms", "6 to 7 ms",
|
||||
"8 to 9 ms", "10 to 11 ms",
|
||||
"12 to 13 ms", "14 to 15 ms",
|
||||
"16 to 17 ms", "18 to 19 ms",
|
||||
"20 to 21 ms", "22 to 23 ms"
|
||||
"0 to 1 ms", "1 to 2 ms",
|
||||
"2 to 3 ms", "3 to 4 ms",
|
||||
"4 to 5 ms", "5 to 6 ms",
|
||||
"6 to 7 ms", "7 to 8 ms",
|
||||
"8 to 9 ms", "9 to 10 ms",
|
||||
"10 to 11 ms", "11 to 12 ms", "12+ ms"
|
||||
};
|
||||
|
||||
const char *intfrm_delay_bucket[CDP_DELAY_BUCKET_MAX + 1] = {
|
||||
|
|
@ -74,7 +74,7 @@ const char *intfrm_delay_bucket[CDP_DELAY_BUCKET_MAX + 1] = {
|
|||
"21 to 25 ms", "26 to 30 ms",
|
||||
"31 to 35 ms", "36 to 40 ms",
|
||||
"41 to 45 ms", "46 to 50 ms",
|
||||
"55 to 60 ms", "61 to 65 ms"
|
||||
"51 to 55 ms", "56 to 60 ms", "60+ ms"
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -3574,6 +3574,7 @@ static inline const char *dp_vow_str_intfrm_delay(uint8_t index)
|
|||
static inline void
|
||||
dp_pdev_print_tid_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
struct cdp_tid_stats *tid_stats;
|
||||
struct cdp_tid_tx_stats *txstats;
|
||||
struct cdp_tid_rx_stats *rxstats;
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
|
|
@ -3584,77 +3585,57 @@ dp_pdev_print_tid_stats(struct dp_pdev *pdev)
|
|||
tid = 0;
|
||||
rxstats = NULL;
|
||||
txstats = NULL;
|
||||
tid_stats = &pdev->stats.tid_stats;
|
||||
|
||||
DP_PRINT_STATS("Packets received in hardstart: %llu ",
|
||||
tid_stats->ingress_stack);
|
||||
DP_PRINT_STATS("Packets dropped in osif layer: %llu ",
|
||||
tid_stats->osif_drop);
|
||||
DP_PRINT_STATS("Per TID Video Stats:\n");
|
||||
|
||||
for (tid = 0; tid < CDP_MAX_DATA_TIDS; tid++) {
|
||||
txstats = &pdev->stats.tid_stats.tid_tx_stats[tid];
|
||||
rxstats = &pdev->stats.tid_stats.tid_rx_stats[tid];
|
||||
DP_PRINT_STATS("TID %d:\n", tid);
|
||||
DP_PRINT_STATS("Tx Success Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
txstats->success_cnt);
|
||||
DP_PRINT_STATS("Tx Complete Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
txstats = &tid_stats->tid_tx_stats[tid];
|
||||
rxstats = &tid_stats->tid_rx_stats[tid];
|
||||
DP_PRINT_STATS("----TID: %d----", tid);
|
||||
DP_PRINT_STATS("Tx Success Count: %llu", txstats->success_cnt);
|
||||
DP_PRINT_STATS("Tx Complete Count: %llu",
|
||||
txstats->complete_cnt);
|
||||
DP_PRINT_STATS("Tx Firmware Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Tx Firmware Drop Count: %llu",
|
||||
txstats->comp_fail_cnt);
|
||||
DP_PRINT_STATS("Tx Firmware Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
txstats->comp_fail_cnt);
|
||||
DP_PRINT_STATS("Tx Hardware Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Tx Hardware Drop Count: %llu",
|
||||
txstats->swdrop_cnt[TX_HW_ENQUEUE]);
|
||||
DP_PRINT_STATS("Tx Software Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Tx Software Drop Count: %llu",
|
||||
txstats->swdrop_cnt[TX_SW_ENQUEUE]);
|
||||
DP_PRINT_STATS("Tx Descriptor Error Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Tx Descriptor Error Count: %llu",
|
||||
txstats->swdrop_cnt[TX_DESC_ERR]);
|
||||
DP_PRINT_STATS("Tx HAL Ring Error Count:");
|
||||
DP_PRINT_STATS("Packet = %llu",
|
||||
DP_PRINT_STATS("Tx HAL Ring Error Count: %llu",
|
||||
txstats->swdrop_cnt[TX_HAL_RING_ACCESS_ERR]);
|
||||
DP_PRINT_STATS("Tx Dma Map Error Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Tx Dma Map Error Count: %llu",
|
||||
txstats->swdrop_cnt[TX_DMA_MAP_ERR]);
|
||||
DP_PRINT_STATS("Rx Delievered Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Delievered Count: %llu",
|
||||
rxstats->delivered_to_stack);
|
||||
DP_PRINT_STATS("Rx Software Enqueue Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Software Enqueue Drop Count: %llu",
|
||||
rxstats->fail_cnt[ENQUEUE_DROP]);
|
||||
DP_PRINT_STATS("Rx Intrabss Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Intrabss Drop Count: %llu",
|
||||
rxstats->fail_cnt[INTRABSS_DROP]);
|
||||
DP_PRINT_STATS("Rx Msdu Done Failure Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Msdu Done Failure Count: %llu",
|
||||
rxstats->fail_cnt[MSDU_DONE_FAILURE]);
|
||||
DP_PRINT_STATS("Rx Invalid Peer Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Invalid Peer Count: %llu",
|
||||
rxstats->fail_cnt[INVALID_PEER_VDEV]);
|
||||
DP_PRINT_STATS("Rx Policy Check Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Policy Check Drop Count: %llu",
|
||||
rxstats->fail_cnt[POLICY_CHECK_DROP]);
|
||||
DP_PRINT_STATS("Rx Mec Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Mec Drop Count: %llu",
|
||||
rxstats->fail_cnt[MEC_DROP]);
|
||||
DP_PRINT_STATS("Rx Nawds Mcast Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Nawds Mcast Drop Count: %llu",
|
||||
rxstats->fail_cnt[NAWDS_MCAST_DROP]);
|
||||
DP_PRINT_STATS("Rx Mesh Filter Drop Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Mesh Filter Drop Count: %llu",
|
||||
rxstats->fail_cnt[MESH_FILTER_DROP]);
|
||||
DP_PRINT_STATS("Rx Intra Bss Deliever Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Intra Bss Deliver Count: %llu",
|
||||
rxstats->intrabss_cnt);
|
||||
DP_PRINT_STATS("Rx MSDU Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
rxstats->msdu_cnt);
|
||||
DP_PRINT_STATS("Rx Multicast MSDU Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx MSDU Count: %llu", rxstats->msdu_cnt);
|
||||
DP_PRINT_STATS("Rx Multicast MSDU Count: %llu",
|
||||
rxstats->mcast_msdu_cnt);
|
||||
DP_PRINT_STATS("Rx Broadcast MSDU Count:");
|
||||
DP_PRINT_STATS("Packets = %llu",
|
||||
DP_PRINT_STATS("Rx Broadcast MSDU Count: %llu\n",
|
||||
rxstats->bcast_msdu_cnt);
|
||||
}
|
||||
}
|
||||
|
|
@ -3672,6 +3653,7 @@ dp_pdev_print_delay_stats(struct dp_pdev *pdev)
|
|||
struct cdp_tid_tx_stats *txstats = NULL;
|
||||
struct cdp_tid_rx_stats *rxstats;
|
||||
uint8_t tid, index;
|
||||
uint64_t count = 0;
|
||||
|
||||
if (!soc)
|
||||
return;
|
||||
|
|
@ -3682,58 +3664,76 @@ dp_pdev_print_delay_stats(struct dp_pdev *pdev)
|
|||
|
||||
DP_PRINT_STATS("Per TID Delay Non-Zero Stats:\n");
|
||||
for (tid = 0; tid < CDP_MAX_DATA_TIDS; tid++) {
|
||||
DP_PRINT_STATS("TID %d:\n", tid);
|
||||
DP_PRINT_STATS("----TID: %d----", tid);
|
||||
txstats = &pdev->stats.tid_stats.tid_tx_stats[tid];
|
||||
rxstats = &pdev->stats.tid_stats.tid_rx_stats[tid];
|
||||
|
||||
DP_PRINT_STATS("Software Enqueue Delay:\n");
|
||||
DP_PRINT_STATS("Software Enqueue Delay:");
|
||||
for (index = 0; index < CDP_DELAY_BUCKET_MAX; index++) {
|
||||
|
||||
if (txstats->swq_delay.delay_bucket[index]) {
|
||||
DP_PRINT_STATS("%s: Packets = %d",
|
||||
count = txstats->swq_delay.delay_bucket[index];
|
||||
if (count) {
|
||||
DP_PRINT_STATS("%s: Packets = %llu",
|
||||
dp_vow_str_sw_enq_delay(index),
|
||||
txstats->swq_delay.delay_bucket[index]);
|
||||
count);
|
||||
}
|
||||
}
|
||||
DP_PRINT_STATS("Min = %d", txstats->swq_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %d", txstats->swq_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %d", txstats->swq_delay.avg_delay);
|
||||
|
||||
DP_PRINT_STATS("Hardware Transmission Delay:\n");
|
||||
DP_PRINT_STATS("Min = %u", txstats->swq_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %u", txstats->swq_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %u\n", txstats->swq_delay.avg_delay);
|
||||
|
||||
DP_PRINT_STATS("Hardware Transmission Delay:");
|
||||
for (index = 0; index < CDP_DELAY_BUCKET_MAX; index++) {
|
||||
if (txstats->hwtx_delay.delay_bucket[index]) {
|
||||
DP_PRINT_STATS("%s: Packets = %d",
|
||||
count = txstats->hwtx_delay.delay_bucket[index];
|
||||
if (count) {
|
||||
DP_PRINT_STATS("%s: Packets = %llu",
|
||||
dp_vow_str_fw_to_hw_delay(index),
|
||||
txstats->hwtx_delay.delay_bucket[index]);
|
||||
count);
|
||||
}
|
||||
}
|
||||
DP_PRINT_STATS("Min = %d", txstats->hwtx_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %d", txstats->hwtx_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %d", txstats->hwtx_delay.avg_delay);
|
||||
DP_PRINT_STATS("Min = %u", txstats->hwtx_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %u", txstats->hwtx_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %u\n", txstats->hwtx_delay.avg_delay);
|
||||
|
||||
DP_PRINT_STATS("Tx Interframe Delay:\n");
|
||||
DP_PRINT_STATS("Tx Interframe Delay:");
|
||||
for (index = 0; index < CDP_DELAY_BUCKET_MAX; index++) {
|
||||
if (txstats->intfrm_delay.delay_bucket[index]) {
|
||||
DP_PRINT_STATS("%s: Packets = %d",
|
||||
count = txstats->intfrm_delay.delay_bucket[index];
|
||||
if (count) {
|
||||
DP_PRINT_STATS("%s: Packets = %llu",
|
||||
dp_vow_str_intfrm_delay(index),
|
||||
txstats->intfrm_delay.delay_bucket[index]);
|
||||
count);
|
||||
}
|
||||
}
|
||||
DP_PRINT_STATS("Min = %d", txstats->intfrm_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %d", txstats->intfrm_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %d", txstats->intfrm_delay.avg_delay);
|
||||
DP_PRINT_STATS("Min = %u", txstats->intfrm_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %u", txstats->intfrm_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %u\n", txstats->intfrm_delay.avg_delay);
|
||||
|
||||
DP_PRINT_STATS("Rx Interframe Delay:\n");
|
||||
DP_PRINT_STATS("Rx Interframe Delay:");
|
||||
for (index = 0; index < CDP_DELAY_BUCKET_MAX; index++) {
|
||||
if (rxstats->intfrm_delay.delay_bucket[index]) {
|
||||
DP_PRINT_STATS("%s: Packets = %d",
|
||||
count = rxstats->intfrm_delay.delay_bucket[index];
|
||||
if (count) {
|
||||
DP_PRINT_STATS("%s: Packets = %llu",
|
||||
dp_vow_str_intfrm_delay(index),
|
||||
rxstats->intfrm_delay.delay_bucket[index]);
|
||||
count);
|
||||
}
|
||||
}
|
||||
DP_PRINT_STATS("Min = %d", rxstats->intfrm_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %d", rxstats->intfrm_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %d", rxstats->intfrm_delay.avg_delay);
|
||||
DP_PRINT_STATS("Min = %u", rxstats->intfrm_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %u", rxstats->intfrm_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %u\n", rxstats->intfrm_delay.avg_delay);
|
||||
|
||||
DP_PRINT_STATS("Rx Reap to Stack Delay:");
|
||||
for (index = 0; index < CDP_DELAY_BUCKET_MAX; index++) {
|
||||
count = rxstats->to_stack_delay.delay_bucket[index];
|
||||
if (count) {
|
||||
DP_PRINT_STATS("%s: Packets = %llu",
|
||||
dp_vow_str_intfrm_delay(index),
|
||||
count);
|
||||
}
|
||||
}
|
||||
|
||||
DP_PRINT_STATS("Min = %u", rxstats->to_stack_delay.min_delay);
|
||||
DP_PRINT_STATS("Max = %u", rxstats->to_stack_delay.max_delay);
|
||||
DP_PRINT_STATS("Avg = %u\n", rxstats->to_stack_delay.avg_delay);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3761,12 +3761,16 @@ uint32_t dp_pdev_tid_stats_display(void *pdev_handle,
|
|||
|
||||
switch (param) {
|
||||
case OL_ATH_PARAM_VIDEO_DELAY_STATS_FC:
|
||||
qdf_print("------ Delay Stats ------\n");
|
||||
dp_pdev_print_delay_stats(pdev);
|
||||
if (value)
|
||||
pdev->delay_stats_flag = true;
|
||||
else
|
||||
pdev->delay_stats_flag = false;
|
||||
break;
|
||||
case OL_ATH_PARAM_VIDEO_STATS_FC:
|
||||
qdf_print("------- TID Stats ------\n");
|
||||
dp_pdev_print_tid_stats(pdev);
|
||||
qdf_print("------ Delay Stats ------\n");
|
||||
dp_pdev_print_delay_stats(pdev);
|
||||
break;
|
||||
default:
|
||||
qdf_print("%s: not handled param %d ", __func__, param);
|
||||
|
|
|
|||
Loading…
Reference in a new issue