From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
amritha.nambiar@intel.com, danielj@nvidia.com, mst@redhat.com,
michael.chan@broadcom.com, sdf@google.com,
vadim.fedorenko@linux.dev, przemyslaw.kitszel@intel.com,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next v2 2/3] netdev: add queue stat for alloc failures
Date: Wed, 28 Feb 2024 17:02:20 -0800 [thread overview]
Message-ID: <20240229010221.2408413-3-kuba@kernel.org> (raw)
In-Reply-To: <20240229010221.2408413-1-kuba@kernel.org>
Rx alloc failures are commonly counted by drivers.
Support reporting those via netdev-genl queue stats.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
Documentation/netlink/specs/netdev.yaml | 7 +++++++
include/net/netdev_queues.h | 2 ++
include/uapi/linux/netdev.h | 1 +
net/core/netdev-genl.c | 3 ++-
tools/include/uapi/linux/netdev.h | 1 +
5 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml
index a1e48c3c84c9..76352dbd2be4 100644
--- a/Documentation/netlink/specs/netdev.yaml
+++ b/Documentation/netlink/specs/netdev.yaml
@@ -328,6 +328,13 @@ name: netdev
name: tx-bytes
doc: Successfully sent bytes, see `tx-packets`.
type: uint
+ -
+ name: rx-alloc-fail
+ doc: |
+ Number of times skb or buffer allocation failed on the Rx datapath.
+ Allocation failure may, or may not result in a packet drop, depending
+ on driver implementation and whether system recovers quickly.
+ type: uint
operations:
list:
diff --git a/include/net/netdev_queues.h b/include/net/netdev_queues.h
index d633347eeda5..1ec408585373 100644
--- a/include/net/netdev_queues.h
+++ b/include/net/netdev_queues.h
@@ -4,9 +4,11 @@
#include <linux/netdevice.h>
+/* See the netdev.yaml spec for definition of each statistic */
struct netdev_queue_stats_rx {
u64 bytes;
u64 packets;
+ u64 alloc_fail;
};
struct netdev_queue_stats_tx {
diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h
index 639ffa04c172..bb65ee840cda 100644
--- a/include/uapi/linux/netdev.h
+++ b/include/uapi/linux/netdev.h
@@ -145,6 +145,7 @@ enum {
NETDEV_A_QSTATS_RX_BYTES,
NETDEV_A_QSTATS_TX_PACKETS,
NETDEV_A_QSTATS_TX_BYTES,
+ NETDEV_A_QSTATS_RX_ALLOC_FAIL,
__NETDEV_A_QSTATS_MAX,
NETDEV_A_QSTATS_MAX = (__NETDEV_A_QSTATS_MAX - 1)
diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c
index 9369ef54d172..2eb45b7f5030 100644
--- a/net/core/netdev-genl.c
+++ b/net/core/netdev-genl.c
@@ -497,7 +497,8 @@ static int
netdev_nl_stats_write_rx(struct sk_buff *rsp, struct netdev_queue_stats_rx *rx)
{
if (netdev_stat_put(rsp, NETDEV_A_QSTATS_RX_PACKETS, rx->packets) ||
- netdev_stat_put(rsp, NETDEV_A_QSTATS_RX_BYTES, rx->bytes))
+ netdev_stat_put(rsp, NETDEV_A_QSTATS_RX_BYTES, rx->bytes) ||
+ netdev_stat_put(rsp, NETDEV_A_QSTATS_RX_ALLOC_FAIL, rx->alloc_fail))
return -EMSGSIZE;
return 0;
}
diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/netdev.h
index 639ffa04c172..bb65ee840cda 100644
--- a/tools/include/uapi/linux/netdev.h
+++ b/tools/include/uapi/linux/netdev.h
@@ -145,6 +145,7 @@ enum {
NETDEV_A_QSTATS_RX_BYTES,
NETDEV_A_QSTATS_TX_PACKETS,
NETDEV_A_QSTATS_TX_BYTES,
+ NETDEV_A_QSTATS_RX_ALLOC_FAIL,
__NETDEV_A_QSTATS_MAX,
NETDEV_A_QSTATS_MAX = (__NETDEV_A_QSTATS_MAX - 1)
--
2.43.2
next prev parent reply other threads:[~2024-02-29 1:02 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-29 1:02 [PATCH net-next v2 0/3] netdev: add per-queue statistics Jakub Kicinski
2024-02-29 1:02 ` [PATCH net-next v2 1/3] " Jakub Kicinski
2024-02-29 1:02 ` Jakub Kicinski [this message]
2024-02-29 1:02 ` [PATCH net-next v2 3/3] eth: bnxt: support " Jakub Kicinski
2024-02-29 3:40 ` Michael Chan
2024-02-29 3:52 ` Jakub Kicinski
2024-03-06 14:56 ` Jakub Kicinski
2024-03-06 18:10 ` Michael Chan
2024-02-29 17:26 ` [PATCH net-next v2 0/3] netdev: add " Stanislav Fomichev
2024-02-29 18:53 ` Nambiar, Amritha
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=20240229010221.2408413-3-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=amritha.nambiar@intel.com \
--cc=danielj@nvidia.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=michael.chan@broadcom.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=sdf@google.com \
--cc=vadim.fedorenko@linux.dev \
/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.