mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
74 lines
2.7 KiB
Diff
74 lines
2.7 KiB
Diff
|
From 5a43b0405561fb6feffb7042493b58014ac27a4d Mon Sep 17 00:00:00 2001
|
||
|
From: Ioana Radulescu <ruxandra.radulescu@nxp.com>
|
||
|
Date: Tue, 12 Feb 2019 22:05:16 +0200
|
||
|
Subject: [PATCH] dpaa2-eth: Add channel stat
|
||
|
|
||
|
Compute average number of frames processed for each CDAN
|
||
|
received on a channel and print it in the detailed channel
|
||
|
stats.
|
||
|
|
||
|
Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
|
||
|
---
|
||
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c | 8 +++++---
|
||
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 1 +
|
||
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 2 ++
|
||
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 2 +-
|
||
|
4 files changed, 9 insertions(+), 4 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c
|
||
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c
|
||
|
@@ -132,16 +132,18 @@ static int dpaa2_dbg_ch_show(struct seq_
|
||
|
int i;
|
||
|
|
||
|
seq_printf(file, "Channel stats for %s:\n", priv->net_dev->name);
|
||
|
- seq_printf(file, "%s%16s%16s%16s%16s\n",
|
||
|
- "CHID", "CPU", "Deq busy", "CDANs", "Buf count");
|
||
|
+ seq_printf(file, "%s%16s%16s%16s%16s%16s%16s\n",
|
||
|
+ "CHID", "CPU", "Deq busy", "Frames", "CDANs", "Avg Frm/CDAN", "Buf count");
|
||
|
|
||
|
for (i = 0; i < priv->num_channels; i++) {
|
||
|
ch = priv->channel[i];
|
||
|
- seq_printf(file, "%4d%16d%16llu%16llu%16d\n",
|
||
|
+ seq_printf(file, "%4d%16d%16llu%16llu%16llu%16llu%16d\n",
|
||
|
ch->ch_id,
|
||
|
ch->nctx.desired_cpu,
|
||
|
ch->stats.dequeue_portal_busy,
|
||
|
+ ch->stats.frames,
|
||
|
ch->stats.cdan,
|
||
|
+ ch->stats.frames / ch->stats.cdan,
|
||
|
ch->buf_count);
|
||
|
}
|
||
|
|
||
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||
|
@@ -540,6 +540,7 @@ static int consume_frames(struct dpaa2_e
|
||
|
return 0;
|
||
|
|
||
|
fq->stats.frames += cleaned;
|
||
|
+ ch->stats.frames += cleaned;
|
||
|
|
||
|
/* A dequeue operation only pulls frames from a single queue
|
||
|
* into the store. Return the frame queue as an out param.
|
||
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||
|
@@ -310,6 +310,8 @@ struct dpaa2_eth_ch_stats {
|
||
|
__u64 xdp_tx;
|
||
|
__u64 xdp_tx_err;
|
||
|
__u64 xdp_redirect;
|
||
|
+ /* Must be last, does not show up in ethtool stats */
|
||
|
+ __u64 frames;
|
||
|
};
|
||
|
|
||
|
/* Maximum number of queues associated with a DPNI */
|
||
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||
|
@@ -234,7 +234,7 @@ static void dpaa2_eth_get_ethtool_stats(
|
||
|
/* Per-channel stats */
|
||
|
for (k = 0; k < priv->num_channels; k++) {
|
||
|
ch_stats = &priv->channel[k]->stats;
|
||
|
- for (j = 0; j < sizeof(*ch_stats) / sizeof(__u64); j++)
|
||
|
+ for (j = 0; j < sizeof(*ch_stats) / sizeof(__u64) - 1; j++)
|
||
|
*((__u64 *)data + i + j) += *((__u64 *)ch_stats + j);
|
||
|
}
|
||
|
i += j;
|