qcacmn: Add missing TxRx Datapath stats

1.Add QDF_TRACE_STATS for datapath stats to remove
  module prints.
2.Fix Stats indentation for better readability.
3.Add missing stats
  a. Update Packets on Rx side on per-ring basis.
  b. Add stats for features (TSO/SG/RAW/Mesh)
  c. Add packet type count on Rx.

Change-Id: Ief1719b67330f729ff60703ec2be26bc5e4201e9
CRs-Fixed: 2034876
This commit is contained in:
Ishank Jain
2017-04-12 10:42:22 +05:30
committed by snandini
parent 56bfd8fdb3
commit 57c42a193c
7 changed files with 538 additions and 431 deletions

View File

@@ -2420,7 +2420,11 @@ void dp_aggregate_vdev_stats(struct dp_vdev *vdev)
DP_STATS_AGGR(vdev, peer, tx.pkt_type[2].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, tx.pkt_type[3].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, tx.pkt_type[4].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.pkt_type[0].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.pkt_type[1].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.pkt_type[2].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.pkt_type[3].mcs_count[i]);
DP_STATS_AGGR(vdev, peer, rx.pkt_type[4].mcs_count[i]);
}
for (i = 0; i < SUPPORTED_BW; i++) {
@@ -2454,14 +2458,13 @@ void dp_aggregate_vdev_stats(struct dp_vdev *vdev)
DP_STATS_AGGR(vdev, peer, tx.retries);
DP_STATS_AGGR(vdev, peer, tx.non_amsdu_cnt);
DP_STATS_AGGR(vdev, peer, tx.amsdu_cnt);
DP_STATS_AGGR(vdev, peer, tx.dropped.dma_map_error);
DP_STATS_AGGR(vdev, peer, tx.dropped.ring_full);
DP_STATS_AGGR(vdev, peer, tx.dropped.fw_discard);
DP_STATS_AGGR(vdev, peer, tx.dropped.fw_discard_retired);
DP_STATS_AGGR(vdev, peer, tx.dropped.mpdu_age_out);
DP_STATS_AGGR(vdev, peer, tx.dropped.fw_discard_reason1);
DP_STATS_AGGR(vdev, peer, tx.dropped.fw_discard_reason2);
DP_STATS_AGGR(vdev, peer, tx.dropped.fw_discard_reason3);
DP_STATS_AGGR(vdev, peer, rx.err.mic_err);
DP_STATS_AGGR(vdev, peer, rx.err.decrypt_err);
DP_STATS_AGGR(vdev, peer, rx.non_ampdu_cnt);
@@ -2469,12 +2472,20 @@ void dp_aggregate_vdev_stats(struct dp_vdev *vdev)
DP_STATS_AGGR(vdev, peer, rx.non_amsdu_cnt);
DP_STATS_AGGR(vdev, peer, rx.amsdu_cnt);
DP_STATS_AGGR_PKT(vdev, peer, rx.to_stack);
DP_STATS_AGGR_PKT(vdev, peer, rx.rcvd_reo);
for (i = 0; i < CDP_MAX_RX_RINGS; i++)
DP_STATS_AGGR_PKT(vdev, peer, rx.rcvd_reo[i]);
peer->stats.rx.unicast.num = peer->stats.rx.to_stack.num -
peer->stats.rx.multicast.num;
peer->stats.rx.unicast.bytes = peer->stats.rx.to_stack.bytes -
peer->stats.rx.multicast.bytes;
DP_STATS_AGGR_PKT(vdev, peer, rx.unicast);
DP_STATS_AGGR_PKT(vdev, peer, rx.multicast);
DP_STATS_AGGR_PKT(vdev, peer, rx.wds);
DP_STATS_AGGR_PKT(vdev, peer, rx.raw);
DP_STATS_AGGR_PKT(vdev, peer, rx.intra_bss);
DP_STATS_AGGR_PKT(vdev, peer, rx.intra_bss.pkts);
DP_STATS_AGGR_PKT(vdev, peer, rx.intra_bss.fail);
vdev->stats.tx.last_ack_rssi =
peer->stats.tx.last_ack_rssi;
@@ -2507,7 +2518,11 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
DP_STATS_AGGR(pdev, vdev, tx.pkt_type[2].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, tx.pkt_type[3].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, tx.pkt_type[4].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.pkt_type[0].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.pkt_type[1].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.pkt_type[2].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.pkt_type[3].mcs_count[i]);
DP_STATS_AGGR(pdev, vdev, rx.pkt_type[4].mcs_count[i]);
}
for (i = 0; i < SUPPORTED_BW; i++) {
@@ -2542,8 +2557,6 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
DP_STATS_AGGR(pdev, vdev, tx.retries);
DP_STATS_AGGR(pdev, vdev, tx.non_amsdu_cnt);
DP_STATS_AGGR(pdev, vdev, tx.amsdu_cnt);
DP_STATS_AGGR(pdev, vdev, tx.dropped.dma_map_error);
DP_STATS_AGGR(pdev, vdev, tx.dropped.ring_full);
DP_STATS_AGGR(pdev, vdev, tx.dropped.fw_discard);
DP_STATS_AGGR(pdev, vdev,
tx.dropped.fw_discard_retired);
@@ -2554,6 +2567,7 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
tx.dropped.fw_discard_reason2);
DP_STATS_AGGR(pdev, vdev,
tx.dropped.fw_discard_reason3);
DP_STATS_AGGR(pdev, vdev, rx.err.mic_err);
DP_STATS_AGGR(pdev, vdev, rx.err.decrypt_err);
DP_STATS_AGGR(pdev, vdev, rx.non_ampdu_cnt);
@@ -2561,19 +2575,23 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
DP_STATS_AGGR(pdev, vdev, rx.non_amsdu_cnt);
DP_STATS_AGGR(pdev, vdev, rx.amsdu_cnt);
DP_STATS_AGGR_PKT(pdev, vdev, rx.to_stack);
DP_STATS_AGGR_PKT(pdev, vdev, rx.rcvd_reo);
DP_STATS_AGGR_PKT(pdev, vdev, rx.rcvd_reo[0]);
DP_STATS_AGGR_PKT(pdev, vdev, rx.rcvd_reo[1]);
DP_STATS_AGGR_PKT(pdev, vdev, rx.rcvd_reo[2]);
DP_STATS_AGGR_PKT(pdev, vdev, rx.rcvd_reo[3]);
DP_STATS_AGGR_PKT(pdev, vdev, rx.unicast);
DP_STATS_AGGR_PKT(pdev, vdev, rx.multicast);
DP_STATS_AGGR_PKT(pdev, vdev, rx.wds);
DP_STATS_AGGR_PKT(pdev, vdev, rx.intra_bss);
DP_STATS_AGGR_PKT(pdev, vdev, rx.intra_bss.pkts);
DP_STATS_AGGR_PKT(pdev, vdev, rx.intra_bss.fail);
DP_STATS_AGGR_PKT(pdev, vdev, rx.raw);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.rcvd);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.freed);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.processed);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.reinject_pkts);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.inspect_pkts);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.raw_pkt);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.raw.raw_pkt);
DP_STATS_AGGR(pdev, vdev, tx_i.raw.dma_map_error);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.tso.tso_pkt);
DP_STATS_AGGR(pdev, vdev, tx_i.tso.dropped_host);
DP_STATS_AGGR(pdev, vdev, tx_i.tso.dropped_target);
@@ -2588,7 +2606,18 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
DP_STATS_AGGR(pdev, vdev,
tx_i.mcast_en.dropped_send_fail);
DP_STATS_AGGR(pdev, vdev, tx_i.mcast_en.ucast);
DP_STATS_AGGR_PKT(pdev, vdev, tx_i.dropped.dropped_pkt);
DP_STATS_AGGR(pdev, vdev, tx_i.dropped.dma_error);
DP_STATS_AGGR(pdev, vdev, tx_i.dropped.ring_full);
DP_STATS_AGGR(pdev, vdev, tx_i.dropped.enqueue_fail);
DP_STATS_AGGR(pdev, vdev, tx_i.dropped.desc_na);
DP_STATS_AGGR(pdev, vdev, tx_i.dropped.res_full);
pdev->stats.tx_i.dropped.dropped_pkt.num =
pdev->stats.tx_i.dropped.dma_error +
pdev->stats.tx_i.dropped.ring_full +
pdev->stats.tx_i.dropped.enqueue_fail +
pdev->stats.tx_i.dropped.desc_na +
pdev->stats.tx_i.dropped.res_full;
pdev->stats.tx.last_ack_rssi =
vdev->stats.tx.last_ack_rssi;
@@ -2606,76 +2635,97 @@ static inline void dp_aggregate_pdev_stats(struct dp_pdev *pdev)
static inline void
dp_print_pdev_tx_stats(struct dp_pdev *pdev)
{
DP_TRACE(NONE, "WLAN Tx Stats:\n");
DP_TRACE(NONE, "Received From Stack:\n");
DP_TRACE(NONE, "Total Packets Received = %d",
DP_TRACE_STATS(NONE, "WLAN Tx Stats:\n");
DP_TRACE_STATS(NONE, "Received From Stack:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.rcvd.num);
DP_TRACE(NONE, "Bytes Sent = %d",
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.tx_i.rcvd.bytes);
DP_TRACE(NONE, "Processed:\n");
DP_TRACE(NONE, "Msdu Processed = %d",
DP_TRACE_STATS(NONE, "Processed:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.processed.num);
DP_TRACE(NONE, "Bytes Processed = %d",
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.tx_i.processed.bytes);
DP_TRACE(NONE, "Completions:\n");
DP_TRACE(NONE, "Msdu Sent = %d",
DP_TRACE_STATS(NONE, "Completions:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx.comp_pkt.num);
DP_TRACE(NONE, "Bytes Sent = %d",
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.tx.comp_pkt.bytes);
DP_TRACE(NONE, "Freed:\n");
DP_TRACE(NONE, "Msdus Freed = %d",
pdev->stats.tx_i.freed.num);
DP_TRACE(NONE, "Bytes Freed = %d",
pdev->stats.tx_i.freed.bytes);
DP_TRACE(NONE, "Dropped:\n");
DP_TRACE(NONE, "Total Packets Dropped = %d",
DP_TRACE_STATS(NONE, "Dropped:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.dropped.dropped_pkt.num);
DP_TRACE(NONE, "Bytes Dropped = %d",
pdev->stats.tx_i.dropped.dropped_pkt.bytes);
DP_TRACE(NONE, "Dma_map_error = %d",
pdev->stats.tx.dropped.dma_map_error);
DP_TRACE(NONE, "Ring Full = %d", pdev->stats.tx.dropped.ring_full);
DP_TRACE(NONE, "Fw Discard = %d",
DP_TRACE_STATS(NONE, "Dma_map_error = %d",
pdev->stats.tx_i.dropped.dma_error);
DP_TRACE_STATS(NONE, "Ring Full = %d",
pdev->stats.tx_i.dropped.ring_full);
DP_TRACE_STATS(NONE, "Descriptor Not available = %d",
pdev->stats.tx_i.dropped.desc_na);
DP_TRACE_STATS(NONE, "HW enqueue failed= %d",
pdev->stats.tx_i.dropped.enqueue_fail);
DP_TRACE_STATS(NONE, "Resources Full = %d",
pdev->stats.tx_i.dropped.res_full);
DP_TRACE_STATS(NONE, "Fw Discard = %d",
pdev->stats.tx.dropped.fw_discard);
DP_TRACE(NONE, "Fw Discard Retired = %d",
DP_TRACE_STATS(NONE, "Fw Discard Retired = %d",
pdev->stats.tx.dropped.fw_discard_retired);
DP_TRACE(NONE, "Firmware Discard Untransmitted = %d",
DP_TRACE_STATS(NONE, "Firmware Discard Untransmitted = %d",
pdev->stats.tx.dropped.fw_discard_untransmitted);
DP_TRACE(NONE, "Mpdu Age Out = %d",
DP_TRACE_STATS(NONE, "Mpdu Age Out = %d",
pdev->stats.tx.dropped.mpdu_age_out);
DP_TRACE(NONE, "Firmware Discard Reason1 = %d",
DP_TRACE_STATS(NONE, "Firmware Discard Reason1 = %d",
pdev->stats.tx.dropped.fw_discard_reason1);
DP_TRACE(NONE, "Firmware Discard Reason2 = %d",
DP_TRACE_STATS(NONE, "Firmware Discard Reason2 = %d",
pdev->stats.tx.dropped.fw_discard_reason2);
DP_TRACE(NONE, "Firmware Discard Reason3 = %d",
DP_TRACE_STATS(NONE, "Firmware Discard Reason3 = %d\n",
pdev->stats.tx.dropped.fw_discard_reason3);
DP_TRACE(NONE, "Scatter Gather:\n");
DP_TRACE(NONE, "Total Packets = %d",
DP_TRACE_STATS(NONE, "Scatter Gather:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.sg.sg_pkt.num);
DP_TRACE(NONE, "Total Bytes = %d",
DP_TRACE_STATS(NONE, "Bytes = %d",
pdev->stats.tx_i.sg.sg_pkt.bytes);
DP_TRACE(NONE, "Dropped By Host = %d",
DP_TRACE_STATS(NONE, "Dropped By Host = %d",
pdev->stats.tx_i.sg.dropped_host);
DP_TRACE(NONE, "Dropped By Target = %d",
DP_TRACE_STATS(NONE, "Dropped By Target = %d\n",
pdev->stats.tx_i.sg.dropped_target);
DP_TRACE(NONE, "Tso:\n");
DP_TRACE(NONE, "Number of Segments = %d",
DP_TRACE_STATS(NONE, "Tso:\n");
DP_TRACE_STATS(NONE, "Number of Segments = %d",
pdev->stats.tx_i.tso.num_seg);
DP_TRACE(NONE, "Number Packets = %d",
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.tso.tso_pkt.num);
DP_TRACE(NONE, "Total Bytes = %d",
DP_TRACE_STATS(NONE, "Bytes = %d",
pdev->stats.tx_i.tso.tso_pkt.bytes);
DP_TRACE(NONE, "Dropped By Host = %d",
DP_TRACE_STATS(NONE, "Dropped By Host = %d\n",
pdev->stats.tx_i.tso.dropped_host);
DP_TRACE(NONE, "Mcast Enhancement:\n");
DP_TRACE(NONE, "Dropped: Map Errors = %d",
DP_TRACE_STATS(NONE, "Mcast Enhancement:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.mcast_en.mcast_pkt.num);
DP_TRACE_STATS(NONE, "Bytes = %d",
pdev->stats.tx_i.mcast_en.mcast_pkt.bytes);
DP_TRACE_STATS(NONE, "Dropped: Map Errors = %d",
pdev->stats.tx_i.mcast_en.dropped_map_error);
DP_TRACE(NONE, "Dropped: Self Mac = %d",
DP_TRACE_STATS(NONE, "Dropped: Self Mac = %d",
pdev->stats.tx_i.mcast_en.dropped_self_mac);
DP_TRACE(NONE, "Dropped: Send Fail = %d",
DP_TRACE_STATS(NONE, "Dropped: Send Fail = %d",
pdev->stats.tx_i.mcast_en.dropped_send_fail);
DP_TRACE(NONE, "Total Unicast sent = %d",
DP_TRACE_STATS(NONE, "Unicast sent = %d\n",
pdev->stats.tx_i.mcast_en.ucast);
DP_TRACE_STATS(NONE, "Raw:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.raw.raw_pkt.num);
DP_TRACE_STATS(NONE, "Bytes = %d",
pdev->stats.tx_i.raw.raw_pkt.bytes);
DP_TRACE_STATS(NONE, "DMA map error = %d\n",
pdev->stats.tx_i.raw.dma_map_error);
DP_TRACE_STATS(NONE, "Reinjected:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.reinject_pkts.num);
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.tx_i.reinject_pkts.bytes);
DP_TRACE_STATS(NONE, "Inspected:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.tx_i.inspect_pkts.num);
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.tx_i.inspect_pkts.bytes);
}
/**
@@ -2687,33 +2737,42 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev)
static inline void
dp_print_pdev_rx_stats(struct dp_pdev *pdev)
{
DP_TRACE(NONE, "WLAN Rx Stats:\n");
DP_TRACE(NONE, "Received From HW (Reo Dest Ring):\n");
DP_TRACE(NONE, "Total Packets Received = %d",
pdev->stats.rx.rcvd_reo.num);
DP_TRACE(NONE, "Bytes Sent = %d",
pdev->stats.rx.rcvd_reo.bytes);
DP_TRACE(NONE, "Replenished:\n");
DP_TRACE(NONE, "Total Packets Replenished = %d",
pdev->stats.replenished.num);
DP_TRACE(NONE, "Bytes Sent = %d",
pdev->stats.replenished.bytes);
DP_TRACE(NONE, "Buffers Added To Freelist = %d",
DP_TRACE_STATS(NONE, "WLAN Rx Stats:\n");
DP_TRACE_STATS(NONE, "Received From HW (Per Rx Ring):\n");
DP_TRACE_STATS(NONE, "Packets = %d %d %d %d",
pdev->stats.rx.rcvd_reo[0].num,
pdev->stats.rx.rcvd_reo[1].num,
pdev->stats.rx.rcvd_reo[2].num,
pdev->stats.rx.rcvd_reo[3].num);
DP_TRACE_STATS(NONE, "Bytes = %d %d %d %d\n",
pdev->stats.rx.rcvd_reo[0].bytes,
pdev->stats.rx.rcvd_reo[1].bytes,
pdev->stats.rx.rcvd_reo[2].bytes,
pdev->stats.rx.rcvd_reo[3].bytes);
DP_TRACE_STATS(NONE, "Replenished:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.replenish.pkts.num);
DP_TRACE_STATS(NONE, "Bytes = %d",
pdev->stats.replenish.pkts.bytes);
DP_TRACE_STATS(NONE, "Buffers Added To Freelist = %d\n",
pdev->stats.buf_freelist);
DP_TRACE(NONE, "Dropped:\n");
DP_TRACE(NONE, "Total Packets With Msdu Not Done = %d",
pdev->stats.dropped.msdu_not_done.num);
DP_TRACE(NONE, "Bytes Sent With Msdu Not Done = %d",
pdev->stats.dropped.msdu_not_done.bytes);
DP_TRACE(NONE, "Sent To Stack:\n");
DP_TRACE(NONE, "Packets Sent To Stack = %d",
DP_TRACE_STATS(NONE, "Dropped:\n");
DP_TRACE_STATS(NONE, "Total Packets With Msdu Not Done = %d\n",
pdev->stats.dropped.msdu_not_done);
DP_TRACE_STATS(NONE, "Sent To Stack:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.rx.to_stack.num);
DP_TRACE(NONE, "Bytes Sent To Stack = %d",
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.rx.to_stack.bytes);
DP_TRACE(NONE, "Errors:\n");
DP_TRACE(NONE, "Rxdma Ring Unititalized: %d",
pdev->stats.err.rxdma_unitialized);
DP_TRACE(NONE, "Desc Alloc Failed: %d",
DP_TRACE_STATS(NONE, "Multicast/Broadcast:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
pdev->stats.rx.multicast.num);
DP_TRACE_STATS(NONE, "Bytes = %d\n",
pdev->stats.rx.multicast.bytes);
DP_TRACE_STATS(NONE, "Errors:\n");
DP_TRACE_STATS(NONE, "Rxdma Ring Un-inititalized = %d",
pdev->stats.replenish.rxdma_err);
DP_TRACE_STATS(NONE, "Desc Alloc Failed: = %d",
pdev->stats.err.desc_alloc_fail);
}
@@ -2726,13 +2785,19 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev)
static inline void
dp_print_soc_tx_stats(struct dp_soc *soc)
{
DP_TRACE(NONE, "SOC Tx Stats:\n");
DP_TRACE(NONE, "Tx Descriptors In Use = %d",
DP_TRACE_STATS(NONE, "SOC Tx Stats:\n");
DP_TRACE_STATS(NONE, "Tx Descriptors In Use = %d",
soc->stats.tx.desc_in_use);
DP_TRACE(NONE, "Total Packets With No Peer = %d",
DP_TRACE_STATS(NONE, "Invalid peer:\n");
DP_TRACE_STATS(NONE, "Packets = %d",
soc->stats.tx.tx_invalid_peer.num);
DP_TRACE(NONE, "Bytes Sent With No Peer = %d",
DP_TRACE_STATS(NONE, "Bytes = %d",
soc->stats.tx.tx_invalid_peer.bytes);
DP_TRACE_STATS(NONE, "Packets dropped due to TCL ring full = %d %d %d",
soc->stats.tx.tcl_ring_full[0],
soc->stats.tx.tcl_ring_full[1],
soc->stats.tx.tcl_ring_full[2]);
}
@@ -2750,33 +2815,33 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
char rxdma_error[DP_RXDMA_ERR_LENGTH];
uint8_t index = 0;
DP_TRACE(NONE, "SOC Rx Stats:\n");
DP_TRACE(NONE, "Errors:\n");
DP_TRACE(NONE, "Invalid RBM = %d",
DP_TRACE_STATS(NONE, "SOC Rx Stats:\n");
DP_TRACE_STATS(NONE, "Errors:\n");
DP_TRACE_STATS(NONE, "Invalid RBM = %d",
soc->stats.rx.err.invalid_rbm);
DP_TRACE(NONE, "Invalid Vdev = %d",
DP_TRACE_STATS(NONE, "Invalid Vdev = %d",
soc->stats.rx.err.invalid_vdev);
DP_TRACE(NONE, "Invalid Pdev = %d",
DP_TRACE_STATS(NONE, "Invalid Pdev = %d",
soc->stats.rx.err.invalid_pdev);
DP_TRACE(NONE, "Invalid Peer = %d",
DP_TRACE_STATS(NONE, "Invalid Peer = %d",
soc->stats.rx.err.rx_invalid_peer.num);
DP_TRACE(NONE, "HAL Ring Access Fail = %d",
DP_TRACE_STATS(NONE, "HAL Ring Access Fail = %d",
soc->stats.rx.err.hal_ring_access_fail);
for (i = 0; i < MAX_RXDMA_ERRORS; i++) {
index += qdf_snprint(&rxdma_error[index],
DP_RXDMA_ERR_LENGTH - index,
" %d,", soc->stats.rx.err.rxdma_error[i]);
" %d", soc->stats.rx.err.rxdma_error[i]);
}
DP_TRACE(NONE, "RXDMA Error (0-31):%s",
DP_TRACE_STATS(NONE, "RXDMA Error (0-31):%s",
rxdma_error);
index = 0;
for (i = 0; i < REO_ERROR_TYPE_MAX; i++) {
index += qdf_snprint(&reo_error[index],
DP_REO_ERR_LENGTH - index,
" %d,", soc->stats.rx.err.reo_error[i]);
" %d", soc->stats.rx.err.reo_error[i]);
}
DP_TRACE(NONE, "REO Error(0-14):%s",
DP_TRACE_STATS(NONE, "REO Error(0-14):%s",
reo_error);
}
@@ -2811,28 +2876,53 @@ 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 i, pkt_type;
uint8_t index = 0;
char mcs[DP_MCS_LENGTH];
char rx_mcs[DOT11_MAX][DP_MCS_LENGTH];
char nss[DP_NSS_LENGTH];
DP_TRACE(NONE, "Rx Rate Info:\n");
for (i = 0; i < MAX_MCS; i++) {
index += qdf_snprint(&mcs[index], DP_MCS_LENGTH - index,
" %d,", pdev->stats.rx.mcs_count[i]);
}
DP_TRACE(NONE, "MCS(0-11):%s",
mcs);
DP_TRACE_STATS(NONE, "Rx Rate Info:\n");
for (pkt_type = 0; pkt_type < DOT11_MAX; pkt_type++) {
index = 0;
for (i = 0; i < MAX_MCS; i++) {
index += qdf_snprint(&rx_mcs[pkt_type][index],
DP_MCS_LENGTH - index,
" %d ",
pdev->stats.rx.pkt_type[pkt_type].
mcs_count[i]);
}
}
DP_TRACE_STATS(NONE, "11A MCS(0-7) = %s",
rx_mcs[0]);
DP_TRACE_STATS(NONE, "11A MCS Invalid = %d",
pdev->stats.rx.pkt_type[DOT11_A].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11B MCS(0-6) = %s",
rx_mcs[1]);
DP_TRACE_STATS(NONE, "11B MCS Invalid = %d",
pdev->stats.rx.pkt_type[DOT11_B].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11N MCS(0-7) = %s",
rx_mcs[2]);
DP_TRACE_STATS(NONE, "11N MCS Invalid = %d",
pdev->stats.rx.pkt_type[DOT11_N].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "Type 11AC MCS(0-9) = %s",
rx_mcs[3]);
DP_TRACE_STATS(NONE, "11AC MCS Invalid = %d",
pdev->stats.rx.pkt_type[DOT11_AC].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11AX MCS(0-11) = %s",
rx_mcs[4]);
DP_TRACE_STATS(NONE, "11AX MCS Invalid = %d",
pdev->stats.rx.pkt_type[DOT11_AX].mcs_count[MAX_MCS]);
index = 0;
for (i = 0; i < SS_COUNT; i++) {
index += qdf_snprint(&nss[index], DP_NSS_LENGTH - index,
" %d,", pdev->stats.rx.nss[i]);
" %d", pdev->stats.rx.nss[i]);
}
DP_TRACE(NONE, "NSS(0-7):%s",
DP_TRACE_STATS(NONE, "NSS(0-7) = %s",
nss);
DP_TRACE(NONE, "SGI:"
DP_TRACE_STATS(NONE, "SGI ="
" 0.8us %d,"
" 0.4us %d,"
" 1.6us %d,"
@@ -2841,26 +2931,26 @@ dp_print_rx_rates(struct dp_vdev *vdev)
pdev->stats.rx.sgi_count[1],
pdev->stats.rx.sgi_count[2],
pdev->stats.rx.sgi_count[3]);
DP_TRACE(NONE, "BW Counts: 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "Reception Type:"
DP_TRACE_STATS(NONE, "Reception Type ="
" SU: %d,"
" MU_MIMO:%d,"
" MU_OFDMA:%d,"
" MU_OFDMA_MIMO:%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_TRACE(NONE, "Aggregation:\n");
DP_TRACE(NONE, "Number of Msdu's Part of Ampdus = %d",
DP_TRACE_STATS(NONE, "Aggregation:\n");
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Ampdus = %d",
pdev->stats.rx.ampdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Mpdu Level Aggregation : %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Mpdu Level Aggregation : %d",
pdev->stats.rx.non_ampdu_cnt);
DP_TRACE(NONE, "Number of Msdu's Part of Amsdu: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Amsdu: %d",
pdev->stats.rx.amsdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Msdu Level Aggregation: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Msdu Level Aggregation: %d",
pdev->stats.rx.non_amsdu_cnt);
}
@@ -2878,7 +2968,7 @@ dp_print_tx_rates(struct dp_vdev *vdev)
char mcs[DOT11_MAX][DP_MCS_LENGTH];
uint32_t index;
DP_TRACE(NONE, "Tx Rate Info:\n");
DP_TRACE_STATS(NONE, "Tx Rate Info:\n");
for (pkt_type = 0; pkt_type < DOT11_MAX; pkt_type++) {
index = 0;
@@ -2891,42 +2981,47 @@ dp_print_tx_rates(struct dp_vdev *vdev)
}
}
DP_TRACE(NONE, "Packet Type 11A MCS(0-7):%s",
DP_TRACE_STATS(NONE, "11A MCS(0-7) = %s",
mcs[0]);
DP_TRACE(NONE, "Packet Type 11A MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11A MCS Invalid = %d",
pdev->stats.tx.pkt_type[DOT11_A].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11B MCS(0-6):%s",
DP_TRACE_STATS(NONE, "11B MCS(0-6) = %s",
mcs[1]);
DP_TRACE(NONE, "Packet Type 11B MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11B MCS Invalid = %d",
pdev->stats.tx.pkt_type[DOT11_B].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11N MCS(0-7):%s",
DP_TRACE_STATS(NONE, "11N MCS(0-7) = %s",
mcs[2]);
DP_TRACE(NONE, "Packet Type 11N MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11N MCS Invalid = %d",
pdev->stats.tx.pkt_type[DOT11_N].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11AC MCS(0-9):%s",
DP_TRACE_STATS(NONE, "Type 11AC MCS(0-9) = %s",
mcs[3]);
DP_TRACE(NONE, "Packet Type 11AC MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11AC MCS Invalid = %d",
pdev->stats.tx.pkt_type[DOT11_AC].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11AX MCS(0-11):%s",
DP_TRACE_STATS(NONE, "11AX MCS(0-11) = %s",
mcs[4]);
DP_TRACE(NONE, "Packet Type 11AX MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11AX MCS Invalid = %d",
pdev->stats.tx.pkt_type[DOT11_AX].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "SGI:"
" 0.8us %d,"
" 0.4us %d,"
" 1.6us %d,"
" 3.2us %d,",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "BW Counts: 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "Aggregation:\n");
DP_TRACE(NONE, "Number of Msdu's Part of Amsdu: %d",
DP_TRACE_STATS(NONE, "OFDMA = %d", pdev->stats.tx.ofdma);
DP_TRACE_STATS(NONE, "STBC = %d", pdev->stats.tx.stbc);
DP_TRACE_STATS(NONE, "LDPC = %d", pdev->stats.tx.ldpc);
DP_TRACE_STATS(NONE, "Retries = %d", pdev->stats.tx.retries);
DP_TRACE_STATS(NONE, "Last ack rssi = %d\n", pdev->stats.tx.last_ack_rssi);
DP_TRACE_STATS(NONE, "Aggregation:\n");
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Amsdu = %d",
pdev->stats.tx.amsdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Msdu Level Aggregation: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Msdu Level Aggregation = %d",
pdev->stats.tx.non_amsdu_cnt);
}
@@ -2939,58 +3034,54 @@ dp_print_tx_rates(struct dp_vdev *vdev)
static inline void dp_print_peer_stats(struct dp_peer *peer)
{
uint8_t i, pkt_type;
char mcs[DOT11_MAX][DP_MCS_LENGTH];
char tx_mcs[DOT11_MAX][DP_MCS_LENGTH];
char rx_mcs[DOT11_MAX][DP_MCS_LENGTH];
uint32_t index;
char nss[DP_NSS_LENGTH];
char mcs_rx[DP_MCS_LENGTH];
DP_TRACE(NONE, "Node Tx Stats:\n");
DP_TRACE(NONE, "Total Packet Completions %d",
DP_TRACE_STATS(NONE, "Node Tx Stats:\n");
DP_TRACE_STATS(NONE, "Total Packet Completions = %d",
peer->stats.tx.comp_pkt.num);
DP_TRACE(NONE, "Total Bytes Completions %d",
DP_TRACE_STATS(NONE, "Total Bytes Completions = %d",
peer->stats.tx.comp_pkt.bytes);
DP_TRACE(NONE, "Success Packets %d",
DP_TRACE_STATS(NONE, "Success Packets = %d",
peer->stats.tx.tx_success.num);
DP_TRACE(NONE, "Success Bytes %d",
DP_TRACE_STATS(NONE, "Success Bytes = %d",
peer->stats.tx.tx_success.bytes);
DP_TRACE(NONE, "Packets Failed %d",
DP_TRACE_STATS(NONE, "Packets Failed = %d",
peer->stats.tx.tx_failed);
DP_TRACE(NONE, "Packets In OFDMA %d",
DP_TRACE_STATS(NONE, "Packets In OFDMA = %d",
peer->stats.tx.ofdma);
DP_TRACE(NONE, "Packets In STBC %d",
DP_TRACE_STATS(NONE, "Packets In STBC = %d",
peer->stats.tx.stbc);
DP_TRACE(NONE, "Packets In LDPC %d",
DP_TRACE_STATS(NONE, "Packets In LDPC = %d",
peer->stats.tx.ldpc);
DP_TRACE(NONE, "Packet Retries %d",
DP_TRACE_STATS(NONE, "Packet Retries = %d",
peer->stats.tx.retries);
DP_TRACE(NONE, "Msdu's Not Part of Ampdu %d",
DP_TRACE_STATS(NONE, "Msdu's Not Part of Ampdu = %d",
peer->stats.tx.non_amsdu_cnt);
DP_TRACE(NONE, "Mpdu's Part of Ampdu %d",
DP_TRACE_STATS(NONE, "Mpdu's Part of Ampdu = %d",
peer->stats.tx.amsdu_cnt);
DP_TRACE(NONE, "Last Packet RSSI %d",
DP_TRACE_STATS(NONE, "Last Packet RSSI = %d",
peer->stats.tx.last_ack_rssi);
DP_TRACE(NONE, "Dropped At Host: Due To DMA Map Error %d",
peer->stats.tx.dropped.dma_map_error);
DP_TRACE(NONE, "Dropped At Host: Due To Ring Full %d",
peer->stats.tx.dropped.ring_full);
DP_TRACE(NONE, "Dropped At FW: FW Discard %d",
DP_TRACE_STATS(NONE, "Dropped At FW: FW Discard = %d",
peer->stats.tx.dropped.fw_discard);
DP_TRACE(NONE, "Dropped At FW: FW Discard Retired %d",
DP_TRACE_STATS(NONE, "Dropped At FW: FW Discard Retired = %d",
peer->stats.tx.dropped.fw_discard_retired);
DP_TRACE(NONE, "Dropped At FW: FW Discard Untransmitted %d",
DP_TRACE_STATS(NONE, "Dropped At FW: FW Discard Untransmitted = %d",
peer->stats.tx.dropped.fw_discard_untransmitted);
DP_TRACE(NONE, "Dropped : Mpdu Age Out %d",
DP_TRACE_STATS(NONE, "Dropped : Mpdu Age Out = %d",
peer->stats.tx.dropped.mpdu_age_out);
DP_TRACE(NONE, "Dropped : FW Discard Reason1 %d",
DP_TRACE_STATS(NONE, "Dropped : FW Discard Reason1 = %d",
peer->stats.tx.dropped.fw_discard_reason1);
DP_TRACE(NONE, "Dropped : FW Discard Reason2 %d",
DP_TRACE_STATS(NONE, "Dropped : FW Discard Reason2 = %d",
peer->stats.tx.dropped.fw_discard_reason2);
DP_TRACE(NONE, "Dropped : FW Discard Reason3 %d",
DP_TRACE_STATS(NONE, "Dropped : FW Discard Reason3 = %d",
peer->stats.tx.dropped.fw_discard_reason3);
for (pkt_type = 0; pkt_type < DOT11_MAX; pkt_type++) {
index = 0;
for (i = 0; i < MAX_MCS; i++) {
index += qdf_snprint(&mcs[pkt_type][index],
index += qdf_snprint(&tx_mcs[pkt_type][index],
DP_MCS_LENGTH - index,
" %d ",
peer->stats.tx.pkt_type[pkt_type].
@@ -2998,95 +3089,96 @@ static inline void dp_print_peer_stats(struct dp_peer *peer)
}
}
DP_TRACE(NONE, "Packet Type 11A MCS(0-7):%s",
mcs[0]);
DP_TRACE(NONE, "Packet Type 11A MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11A MCS(0-7) = %s",
tx_mcs[0]);
DP_TRACE_STATS(NONE, "11A MCS Invalid = %d",
peer->stats.tx.pkt_type[DOT11_A].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11B MCS(0-6):%s",
mcs[1]);
DP_TRACE(NONE, "Packet Type 11B MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11B MCS(0-6) = %s",
tx_mcs[1]);
DP_TRACE_STATS(NONE, "11B MCS Invalid = %d",
peer->stats.tx.pkt_type[DOT11_B].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11N MCS(0-7):%s",
mcs[2]);
DP_TRACE(NONE, "Packet Type 11N MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11N MCS(0-7) = %s",
tx_mcs[2]);
DP_TRACE_STATS(NONE, "11N MCS Invalid = %d",
peer->stats.tx.pkt_type[DOT11_N].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11AC MCS(0-9):%s",
mcs[3]);
DP_TRACE(NONE, "Packet Type 11AC MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11AC MCS(0-9) = %s",
tx_mcs[3]);
DP_TRACE_STATS(NONE, "11AC MCS Invalid = %d",
peer->stats.tx.pkt_type[DOT11_AC].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "Packet Type 11AX MCS(0-11):%s",
mcs[4]);
DP_TRACE(NONE, "Packet Type 11AX MCS Invalid = %d",
DP_TRACE_STATS(NONE, "11AX MCS(0-11) = %s",
tx_mcs[4]);
DP_TRACE_STATS(NONE, "11AX MCS Invalid = %d",
peer->stats.tx.pkt_type[DOT11_AX].mcs_count[MAX_MCS]);
DP_TRACE(NONE, "SGI:"
" 0.8us %d,"
" 0.4us %d,"
" 1.6us %d,"
" 3.2us %d,",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "BW Counts: 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
DP_TRACE_STATS(NONE, "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]);
DP_TRACE(NONE, "Aggregation:\n");
DP_TRACE(NONE, "Number of Msdu's Part of Amsdu: %d",
DP_TRACE_STATS(NONE, "Aggregation:\n");
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Amsdu = %d",
peer->stats.tx.amsdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Msdu Level Aggregation: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Msdu Level Aggregation = %d\n",
peer->stats.tx.non_amsdu_cnt);
DP_TRACE(NONE, "Node Rx Stats:\n");
DP_TRACE(NONE, "Packets Sent To Stack %d",
DP_TRACE_STATS(NONE, "Node Rx Stats:\n");
DP_TRACE_STATS(NONE, "Packets Sent To Stack = %d",
peer->stats.rx.to_stack.num);
DP_TRACE(NONE, "Bytes Sent To Stack %d",
DP_TRACE_STATS(NONE, "Bytes Sent To Stack = %d",
peer->stats.rx.to_stack.bytes);
DP_TRACE(NONE, "Packets Received %d", peer->stats.rx.rcvd_reo.num);
DP_TRACE(NONE, "Bytes Received %d", peer->stats.rx.rcvd_reo.bytes);
DP_TRACE(NONE, "Unicast Packets Received %d",
peer->stats.rx.unicast.num);
DP_TRACE(NONE, "Unicast Bytes Received %d",
peer->stats.rx.unicast.bytes);
DP_TRACE(NONE, "Multicast Packets Received %d",
for (i = 0; i < CDP_MAX_RX_RINGS; i++) {
DP_TRACE_STATS(NONE, "Packets Received = %d",
peer->stats.rx.rcvd_reo[i].num);
DP_TRACE_STATS(NONE, "Bytes Received = %d",
peer->stats.rx.rcvd_reo[i].bytes);
}
DP_TRACE_STATS(NONE, "Multicast Packets Received = %d",
peer->stats.rx.multicast.num);
DP_TRACE(NONE, "Multicast Bytes Received %d",
DP_TRACE_STATS(NONE, "Multicast Bytes Received = %d",
peer->stats.rx.multicast.bytes);
DP_TRACE(NONE, "WDS Packets Received %d",
DP_TRACE_STATS(NONE, "WDS Packets Received = %d",
peer->stats.rx.wds.num);
DP_TRACE(NONE, "WDS Bytes Received %d",
DP_TRACE_STATS(NONE, "WDS Bytes Received = %d",
peer->stats.rx.wds.bytes);
DP_TRACE(NONE, "Intra BSS Packets Received %d",
peer->stats.rx.intra_bss.num);
DP_TRACE(NONE, "Intra BSS Bytes Received %d",
peer->stats.rx.intra_bss.bytes);
DP_TRACE(NONE, "Raw Packets Received %d",
DP_TRACE_STATS(NONE, "Intra BSS Packets Received = %d",
peer->stats.rx.intra_bss.pkts.num);
DP_TRACE_STATS(NONE, "Intra BSS Bytes Received = %d",
peer->stats.rx.intra_bss.pkts.bytes);
DP_TRACE_STATS(NONE, "Raw Packets Received = %d",
peer->stats.rx.raw.num);
DP_TRACE(NONE, "Raw Bytes Received %d",
DP_TRACE_STATS(NONE, "Raw Bytes Received = %d",
peer->stats.rx.raw.bytes);
DP_TRACE(NONE, "Errors: MIC Errors %d",
DP_TRACE_STATS(NONE, "Errors: MIC Errors = %d",
peer->stats.rx.err.mic_err);
DP_TRACE(NONE, "Erros: Decryption Errors %d",
DP_TRACE_STATS(NONE, "Erros: Decryption Errors = %d",
peer->stats.rx.err.decrypt_err);
DP_TRACE(NONE, "Msdu's Received As Part of Ampdu %d",
DP_TRACE_STATS(NONE, "Msdu's Received As Part of Ampdu = %d",
peer->stats.rx.non_ampdu_cnt);
DP_TRACE(NONE, "Msdu's Recived As Ampdu %d", peer->stats.rx.ampdu_cnt);
DP_TRACE(NONE, "Msdu's Received Not Part of Amsdu's %d",
DP_TRACE_STATS(NONE, "Msdu's Recived As Ampdu = %d",
peer->stats.rx.ampdu_cnt);
DP_TRACE_STATS(NONE, "Msdu's Received Not Part of Amsdu's = %d",
peer->stats.rx.non_amsdu_cnt);
DP_TRACE(NONE, "MSDUs Received As Part of Amsdu %d",
DP_TRACE_STATS(NONE, "MSDUs Received As Part of Amsdu = %d",
peer->stats.rx.amsdu_cnt);
DP_TRACE(NONE, "SGI:"
" 0.8us %d,"
" 0.4us %d,"
" 1.6us %d,"
" 3.2us %d,",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "BW Counts: 20MHZ %d, 40MHZ %d, 80MHZ %d, 160MHZ %d",
DP_TRACE_STATS(NONE, "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_TRACE(NONE, "Reception Type:"
DP_TRACE_STATS(NONE, "Reception Type ="
" SU %d,"
" MU_MIMO %d,"
" MU_OFDMA %d,"
@@ -3096,29 +3188,53 @@ static inline void dp_print_peer_stats(struct dp_peer *peer)
peer->stats.rx.reception_type[2],
peer->stats.rx.reception_type[3]);
index = 0;
for (i = 0; i < MAX_MCS; i++) {
index += qdf_snprint(&mcs_rx[index], DP_MCS_LENGTH - index,
" %d,", peer->stats.rx.mcs_count[i]);
for (pkt_type = 0; pkt_type < DOT11_MAX; pkt_type++) {
index = 0;
for (i = 0; i < MAX_MCS; i++) {
index += qdf_snprint(&rx_mcs[pkt_type][index],
DP_MCS_LENGTH - index,
" %d ",
peer->stats.rx.pkt_type[pkt_type].
mcs_count[i]);
}
}
DP_TRACE(NONE, "MCS(0-11):%s",
mcs_rx);
DP_TRACE_STATS(NONE, "11A MCS(0-7) = %s",
rx_mcs[0]);
DP_TRACE_STATS(NONE, "11A MCS Invalid = %d",
peer->stats.rx.pkt_type[DOT11_A].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11B MCS(0-6) = %s",
rx_mcs[1]);
DP_TRACE_STATS(NONE, "11B MCS Invalid = %d",
peer->stats.rx.pkt_type[DOT11_B].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11N MCS(0-7) = %s",
rx_mcs[2]);
DP_TRACE_STATS(NONE, "11N MCS Invalid = %d",
peer->stats.rx.pkt_type[DOT11_N].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11AC MCS(0-9) = %s",
rx_mcs[3]);
DP_TRACE_STATS(NONE, "11AC MCS Invalid = %d",
peer->stats.rx.pkt_type[DOT11_AC].mcs_count[MAX_MCS]);
DP_TRACE_STATS(NONE, "11AX MCS(0-11) = %s",
rx_mcs[4]);
DP_TRACE_STATS(NONE, "11AX MCS Invalid = %d",
peer->stats.rx.pkt_type[DOT11_AX].mcs_count[MAX_MCS]);
index = 0;
for (i = 0; i < SS_COUNT; i++) {
index += qdf_snprint(&nss[index], DP_NSS_LENGTH - index,
" %d,", peer->stats.rx.nss[i]);
" %d", peer->stats.rx.nss[i]);
}
DP_TRACE(NONE, "NSS(0-7):%s",
DP_TRACE_STATS(NONE, "NSS(0-7) = %s\n",
nss);
DP_TRACE(NONE, "Aggregation:\n");
DP_TRACE(NONE, "Number of Msdu's Part of Ampdu = %d",
DP_TRACE_STATS(NONE, "Aggregation:\n");
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Ampdu = %d",
peer->stats.rx.ampdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Mpdu Level Aggregation : %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Mpdu Level Aggregation = %d",
peer->stats.rx.non_ampdu_cnt);
DP_TRACE(NONE, "Number of Msdu's Part of Amsdu: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's Part of Amsdu = %d",
peer->stats.rx.amsdu_cnt);
DP_TRACE(NONE, "Number of Msdu's With No Msdu Level Aggregation: %d",
DP_TRACE_STATS(NONE, "Number of Msdu's With No Msdu Level Aggregation = %d",
peer->stats.rx.non_amsdu_cnt);
}
@@ -3296,8 +3412,12 @@ static int dp_txrx_stats(struct cdp_vdev *vdev,
/* TODO: Firmware Mapping not implemented */
if (host_stats != TXRX_HOST_STATS_INVALID)
if ((host_stats != TXRX_HOST_STATS_INVALID) &&
(host_stats <= TXRX_HOST_STATS_MAX))
return dp_print_host_stats(vdev, req, host_stats);
else
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
"Wrong Input for TxRx Stats");
return 0;
}
@@ -3336,6 +3456,7 @@ 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;
for (loop_pdev = 0; loop_pdev < soc->pdev_count; loop_pdev++) {
@@ -3404,12 +3525,13 @@ static void dp_txrx_path_stats(struct dp_soc *soc)
DP_TRACE(NONE, "delivered %u msdus ( %u bytes),",
pdev->stats.rx.to_stack.num,
pdev->stats.rx.to_stack.bytes);
DP_TRACE(NONE, "received on reo %u msdus ( %u bytes),",
pdev->stats.rx.rcvd_reo.num,
pdev->stats.rx.rcvd_reo.bytes);
for (i = 0; i < CDP_MAX_RX_RINGS; i++)
DP_TRACE(NONE, "received on reo[%d] %u msdus ( %u bytes),",
i, pdev->stats.rx.rcvd_reo[i].num,
pdev->stats.rx.rcvd_reo[i].bytes);
DP_TRACE(NONE, "intra-bss packets %u msdus ( %u bytes),",
pdev->stats.rx.intra_bss.num,
pdev->stats.rx.intra_bss.bytes);
pdev->stats.rx.intra_bss.pkts.num,
pdev->stats.rx.intra_bss.pkts.bytes);
DP_TRACE(NONE, "raw packets %u msdus ( %u bytes),",
pdev->stats.rx.raw.num,
pdev->stats.rx.raw.bytes);