From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, mkubecek@suse.cz,
michael.chan@broadcom.com, tariqt@nvidia.com, saeedm@nvidia.com,
alexander.duyck@gmail.com, andrew@lunn.ch,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next v2 8/8] mlx4: add pause frame stats
Date: Fri, 11 Sep 2020 16:28:53 -0700 [thread overview]
Message-ID: <20200911232853.1072362-9-kuba@kernel.org> (raw)
In-Reply-To: <20200911232853.1072362-1-kuba@kernel.org>
Check if the pause stats are reported by HW by checking the bitmap.
Calculation is based on the order of strings in main_strings from
ethtool -S. Hopefully the semantics of these stats match the standard..
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
.../net/ethernet/mellanox/mlx4/en_ethtool.c | 19 +++++++++++++++++++
.../net/ethernet/mellanox/mlx4/mlx4_stats.h | 12 ++++++++++++
2 files changed, 31 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
index b816154bc79a..23849f2b9c25 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
@@ -1106,6 +1106,24 @@ static int mlx4_en_set_pauseparam(struct net_device *dev,
return err;
}
+static void mlx4_en_get_pause_stats(struct net_device *dev,
+ struct ethtool_pause_stats *stats)
+{
+ struct mlx4_en_priv *priv = netdev_priv(dev);
+ struct bitmap_iterator it;
+
+ bitmap_iterator_init(&it, priv->stats_bitmap.bitmap, NUM_ALL_STATS);
+
+ spin_lock_bh(&priv->stats_lock);
+ if (test_bit(FLOW_PRIORITY_STATS_IDX_TX_FRAMES,
+ priv->stats_bitmap.bitmap))
+ stats->tx_pause_frames = priv->tx_flowstats.tx_pause;
+ if (test_bit(FLOW_PRIORITY_STATS_IDX_RX_FRAMES,
+ priv->stats_bitmap.bitmap))
+ stats->rx_pause_frames = priv->rx_flowstats.rx_pause;
+ spin_unlock_bh(&priv->stats_lock);
+}
+
static void mlx4_en_get_pauseparam(struct net_device *dev,
struct ethtool_pauseparam *pause)
{
@@ -2138,6 +2156,7 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
.set_msglevel = mlx4_en_set_msglevel,
.get_coalesce = mlx4_en_get_coalesce,
.set_coalesce = mlx4_en_set_coalesce,
+ .get_pause_stats = mlx4_en_get_pause_stats,
.get_pauseparam = mlx4_en_get_pauseparam,
.set_pauseparam = mlx4_en_set_pauseparam,
.get_ringparam = mlx4_en_get_ringparam,
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
index 86b6051da8ec..51d4eaab6a2f 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
@@ -84,6 +84,11 @@ struct mlx4_en_flow_stats_rx {
MLX4_NUM_PRIORITIES)
};
+#define FLOW_PRIORITY_STATS_IDX_RX_FRAMES (NUM_MAIN_STATS + \
+ NUM_PORT_STATS + \
+ NUM_PF_STATS + \
+ NUM_FLOW_PRIORITY_STATS_RX)
+
struct mlx4_en_flow_stats_tx {
u64 tx_pause;
u64 tx_pause_duration;
@@ -93,6 +98,13 @@ struct mlx4_en_flow_stats_tx {
MLX4_NUM_PRIORITIES)
};
+#define FLOW_PRIORITY_STATS_IDX_TX_FRAMES (NUM_MAIN_STATS + \
+ NUM_PORT_STATS + \
+ NUM_PF_STATS + \
+ NUM_FLOW_PRIORITY_STATS_RX + \
+ NUM_FLOW_STATS_RX + \
+ NUM_FLOW_PRIORITY_STATS_TX)
+
#define NUM_FLOW_STATS (NUM_FLOW_STATS_RX + NUM_FLOW_STATS_TX + \
NUM_FLOW_PRIORITY_STATS_TX + \
NUM_FLOW_PRIORITY_STATS_RX)
--
2.26.2
next prev parent reply other threads:[~2020-09-11 23:29 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-11 23:28 [PATCH net-next v2 0/8] ethtool: add pause frame stats Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 1/8] ethtool: add standard pause stats Jakub Kicinski
2020-09-14 1:48 ` Andrew Lunn
2020-09-14 15:48 ` Jakub Kicinski
2020-09-14 17:18 ` Andrew Lunn
2020-09-14 18:58 ` Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 2/8] docs: net: include the new ethtool pause stats in the stats doc Jakub Kicinski
2020-09-14 19:33 ` Saeed Mahameed
2020-09-14 19:52 ` Jakub Kicinski
2020-09-14 21:19 ` Saeed Mahameed
2020-09-11 23:28 ` [PATCH net-next v2 3/8] netdevsim: add pause frame stats Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 4/8] selftests: add a test for ethtool pause stats Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 5/8] bnxt: add pause frame stats Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 6/8] ixgbe: " Jakub Kicinski
2020-09-11 23:28 ` [PATCH net-next v2 7/8] mlx5: " Jakub Kicinski
2020-09-12 1:10 ` Jakub Kicinski
2020-09-13 8:16 ` kernel test robot
2020-09-13 8:16 ` kernel test robot
2020-09-11 23:28 ` Jakub Kicinski [this message]
2020-09-11 23:49 ` [PATCH net-next v2 0/8] ethtool: " Vladimir Oltean
2020-09-12 0:07 ` Jakub Kicinski
2020-09-12 0:15 ` Vladimir Oltean
2020-09-12 0:42 ` Jakub Kicinski
2020-09-12 2:54 ` Florian Fainelli
2020-09-14 15:53 ` Jakub Kicinski
2020-09-14 16:25 ` Florian Fainelli
2020-09-14 16:54 ` Jakub Kicinski
2020-09-14 17:36 ` Andrew Lunn
2020-09-14 19:20 ` Jakub Kicinski
2020-09-12 7:16 ` Vladimir Oltean
2020-09-14 16:15 ` Jakub Kicinski
2020-09-14 17:28 ` Andrew Lunn
2020-09-14 19:36 ` Jakub Kicinski
2020-09-14 2:08 ` Andrew Lunn
2020-09-14 16:26 ` Jakub Kicinski
2020-09-14 20:05 ` Saeed Mahameed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200911232853.1072362-9-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=alexander.duyck@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=michael.chan@broadcom.com \
--cc=mkubecek@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.