From: Heiner Kallweit <hkallweit1@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>,
David Miller <davem@davemloft.net>,
Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
Andrew Lunn <andrew@lunn.ch>,
Vivien Didelot <vivien.didelot@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Pablo Neira Ayuso <pablo@netfilter.org>,
Harald Welte <laforge@gnumonks.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
Herbert Xu <herbert@gondor.apana.org.au>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
osmocom-net-gprs@lists.osmocom.org, wireguard@lists.zx2c4.com,
Steffen Klassert <steffen.klassert@secunet.com>
Subject: [PATCH net-next v3 01/10] net: core: add dev_get_tstats64 as a ndo_get_stats64 implementation
Date: Sat, 7 Nov 2020 21:49:07 +0100 [thread overview]
Message-ID: <484218db-e035-dba4-dfb7-93c2cf177cec@gmail.com> (raw)
In-Reply-To: <99273e2f-c218-cd19-916e-9161d8ad8c56@gmail.com>
It's a frequent pattern to use netdev->stats for the less frequently
accessed counters and per-cpu counters for the frequently accessed
counters (rx/tx bytes/packets). Add a default ndo_get_stats64()
implementation for this use case.
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
include/linux/netdevice.h | 1 +
net/core/dev.c | 15 +++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index a53ed2d1e..7ce648a56 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4527,6 +4527,7 @@ void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
const struct net_device_stats *netdev_stats);
void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
const struct pcpu_sw_netstats __percpu *netstats);
+void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);
extern int netdev_max_backlog;
extern int netdev_tstamp_prequeue;
diff --git a/net/core/dev.c b/net/core/dev.c
index bd6100da6..60d325bda 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -10366,6 +10366,21 @@ void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
}
EXPORT_SYMBOL_GPL(dev_fetch_sw_netstats);
+/**
+ * dev_get_tstats64 - ndo_get_stats64 implementation
+ * @dev: device to get statistics from
+ * @s: place to store stats
+ *
+ * Populate @s from dev->stats and dev->tstats. Can be used as
+ * ndo_get_stats64() callback.
+ */
+void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s)
+{
+ netdev_stats_to_stats64(s, &dev->stats);
+ dev_fetch_sw_netstats(s, dev->tstats);
+}
+EXPORT_SYMBOL_GPL(dev_get_tstats64);
+
struct netdev_queue *dev_ingress_queue_create(struct net_device *dev)
{
struct netdev_queue *queue = dev_ingress_queue(dev);
--
2.29.2
next prev parent reply other threads:[~2020-11-09 23:05 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-07 20:48 [PATCH net-next v3 00/10] net: add and use dev_get_tstats64 Heiner Kallweit
2020-11-07 20:49 ` Heiner Kallweit [this message]
2020-11-07 20:49 ` [PATCH net-next v3 02/10] net: dsa: use net core stats64 handling Heiner Kallweit
2020-11-07 20:50 ` [PATCH net-next v3 03/10] tun: switch to net core provided statistics counters Heiner Kallweit
2020-11-07 20:51 ` [PATCH net-next v3 04/10] ip6_tunnel: use ip_tunnel_get_stats64 as ndo_get_stats64 callback Heiner Kallweit
2020-11-07 20:52 ` [PATCH net-next v3 05/10] net: switch to dev_get_tstats64 Heiner Kallweit
2020-11-07 20:52 ` [PATCH net-next v3 06/10] gtp: " Heiner Kallweit
2020-11-07 20:53 ` [PATCH net-next v3 07/10] wireguard: " Heiner Kallweit
2020-11-07 20:53 ` [PATCH net-next v3 08/10] vti: " Heiner Kallweit
2020-11-07 20:54 ` [PATCH net-next v3 09/10] ipv4/ipv6: " Heiner Kallweit
2020-11-07 20:55 ` [PATCH net-next v3 10/10] net: remove ip_tunnel_get_stats64 Heiner Kallweit
2020-11-10 3:58 ` [PATCH net-next v3 00/10] net: add and use dev_get_tstats64 Jakub Kicinski
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=484218db-e035-dba4-dfb7-93c2cf177cec@gmail.com \
--to=hkallweit1@gmail.com \
--cc=Jason@zx2c4.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=kuba@kernel.org \
--cc=kuznet@ms2.inr.ac.ru \
--cc=laforge@gnumonks.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=osmocom-net-gprs@lists.osmocom.org \
--cc=pablo@netfilter.org \
--cc=steffen.klassert@secunet.com \
--cc=vivien.didelot@gmail.com \
--cc=wireguard@lists.zx2c4.com \
--cc=yoshfuji@linux-ipv6.org \
/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.