mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: menglong8.dong@gmail.com
To: dsahern@kernel.org, kuba@kernel.org
Cc: edumazet@google.com, davem@davemloft.net, rostedt@goodmis.org,
	mingo@redhat.com, yoshfuji@linux-ipv6.org, ast@kernel.org,
	daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com,
	imagedong@tencent.com, talalahmad@google.com,
	keescook@chromium.org, ilias.apalodimas@linaro.org,
	alobakin@pm.me, memxor@gmail.com, atenart@kernel.org,
	bigeasy@linutronix.de, pabeni@redhat.com, linyunsheng@huawei.com,
	arnd@arndb.de, yajun.deng@linux.dev, roopa@nvidia.com,
	willemb@google.com, vvs@virtuozzo.com, cong.wang@bytedance.com,
	luiz.von.dentz@intel.com, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org, bpf@vger.kernel.org,
	flyingpeng@tencent.com
Subject: [PATCH net-next 16/19] net: dev: use kfree_skb_reason() for enqueue_to_backlog()
Date: Tue, 15 Feb 2022 19:28:09 +0800	[thread overview]
Message-ID: <20220215112812.2093852-17-imagedong@tencent.com> (raw)
In-Reply-To: <20220215112812.2093852-1-imagedong@tencent.com>

From: Menglong Dong <imagedong@tencent.com>

Replace kfree_skb() used in enqueue_to_backlog() with
kfree_skb_reason(). The skb drop reason SKB_DROP_REASON_CPU_BACKLOG is
introduced for the case of failing to enqueue the skb to the per CPU
backlog queue. The further reason can be backlog queue full or RPS
flow limition, and I think we needn't to make further distinctions.

Signed-off-by: Menglong Dong <imagedong@tencent.com>
---
 include/linux/skbuff.h     | 6 ++++++
 include/trace/events/skb.h | 1 +
 net/core/dev.c             | 6 +++++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 0f7e5177dbaf..d59fdcd98278 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -404,6 +404,12 @@ enum skb_drop_reason {
 					 * outputting (failed to enqueue to
 					 * current qdisc)
 					 */
+	SKB_DROP_REASON_CPU_BACKLOG,	/* failed to enqueue the skb to
+					 * the per CPU backlog queue. This
+					 * can be caused by backlog queue
+					 * full (see netdev_max_backlog in
+					 * net.rst) or RPS flow limit
+					 */
 	SKB_DROP_REASON_MAX,
 };
 
diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h
index 356bea7567b5..a1c235daf23b 100644
--- a/include/trace/events/skb.h
+++ b/include/trace/events/skb.h
@@ -45,6 +45,7 @@
 	EM(SKB_DROP_REASON_NEIGH_QUEUEFULL, NEIGH_QUEUEFULL)	\
 	EM(SKB_DROP_REASON_QDISC_EGRESS, QDISC_EGRESS)		\
 	EM(SKB_DROP_REASON_QDISC_DROP, QDISC_DROP)		\
+	EM(SKB_DROP_REASON_CPU_BACKLOG, CPU_BACKLOG)		\
 	EMe(SKB_DROP_REASON_MAX, MAX)
 
 #undef EM
diff --git a/net/core/dev.c b/net/core/dev.c
index 55e890964fe2..8fee7adfca88 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4520,10 +4520,12 @@ static bool skb_flow_limit(struct sk_buff *skb, unsigned int qlen)
 static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
 			      unsigned int *qtail)
 {
+	enum skb_drop_reason reason;
 	struct softnet_data *sd;
 	unsigned long flags;
 	unsigned int qlen;
 
+	reason = SKB_DROP_REASON_NOT_SPECIFIED;
 	sd = &per_cpu(softnet_data, cpu);
 
 	local_irq_save(flags);
@@ -4550,6 +4552,8 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
 				____napi_schedule(sd, &sd->backlog);
 		}
 		goto enqueue;
+	} else {
+		reason = SKB_DROP_REASON_CPU_BACKLOG;
 	}
 
 drop:
@@ -4559,7 +4563,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
 	local_irq_restore(flags);
 
 	atomic_long_inc(&skb->dev->rx_dropped);
-	kfree_skb(skb);
+	kfree_skb_reason(skb, reason);
 	return NET_RX_DROP;
 }
 
-- 
2.34.1


  parent reply	other threads:[~2022-02-15 11:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-15 11:27 [PATCH net-next 00/19] net: add skb drop reasons for TCP, IP, dev and neigh menglong8.dong
2022-02-15 11:27 ` [PATCH net-next 01/19] net: tcp: introduce tcp_drop_reason() menglong8.dong
2022-02-15 17:34   ` Eric Dumazet
2022-02-15 18:47     ` David Ahern
2022-02-16  2:38       ` Menglong Dong
2022-02-16  2:31     ` Menglong Dong
2022-02-15 11:27 ` [PATCH net-next 02/19] net: tcp: add skb drop reasons to tcp_v4_rcv() menglong8.dong
2022-02-15 11:27 ` [PATCH net-next 03/19] net: tcp: use kfree_skb_reason() for tcp_v6_rcv() menglong8.dong
2022-02-15 11:27 ` [PATCH net-next 04/19] net: tcp: add skb drop reasons to tcp_v{4,6}_inbound_md5_hash() menglong8.dong
2022-02-15 11:27 ` [PATCH net-next 05/19] net: tcp: add skb drop reasons to tcp_add_backlog() menglong8.dong
2022-02-15 11:27 ` [PATCH net-next 06/19] net: tcp: use kfree_skb_reason() for tcp_v{4,6}_do_rcv() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 07/19] net: tcp: use tcp_drop_reason() for tcp_rcv_established() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 08/19] net: tcp: use tcp_drop_reason() for tcp_data_queue() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 09/19] net: tcp: use tcp_drop_reason() for tcp_data_queue_ofo() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 10/19] net: ip: add skb drop reasons during ip outputting menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 11/19] net: neigh: use kfree_skb_reason() for __neigh_event_send() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 12/19] net: neigh: add skb drop reasons to arp_error_report() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 13/19] net: dev: use kfree_skb_reason() for sch_handle_egress() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 14/19] net: skb: introduce the function kfree_skb_list_reason() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 15/19] net: dev: add skb drop reasons to __dev_xmit_skb() menglong8.dong
2022-02-15 11:28 ` menglong8.dong [this message]
2022-02-15 11:28 ` [PATCH net-next 17/19] net: dev: use kfree_skb_reason() for do_xdp_generic() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 18/19] net: dev: use kfree_skb_reason() for sch_handle_ingress() menglong8.dong
2022-02-15 11:28 ` [PATCH net-next 19/19] net: dev: use kfree_skb_reason() for __netif_receive_skb_core() menglong8.dong
2022-02-15 16:04 ` [PATCH net-next 00/19] net: add skb drop reasons for TCP, IP, dev and neigh Jakub Kicinski
2022-02-15 16:09   ` David Ahern
2022-02-16  1:55     ` Menglong Dong

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=20220215112812.2093852-17-imagedong@tencent.com \
    --to=menglong8.dong@gmail.com \
    --cc=alobakin@pm.me \
    --cc=arnd@arndb.de \
    --cc=ast@kernel.org \
    --cc=atenart@kernel.org \
    --cc=bigeasy@linutronix.de \
    --cc=bpf@vger.kernel.org \
    --cc=cong.wang@bytedance.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=flyingpeng@tencent.com \
    --cc=hawk@kernel.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=imagedong@tencent.com \
    --cc=john.fastabend@gmail.com \
    --cc=keescook@chromium.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linyunsheng@huawei.com \
    --cc=luiz.von.dentz@intel.com \
    --cc=memxor@gmail.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=roopa@nvidia.com \
    --cc=rostedt@goodmis.org \
    --cc=talalahmad@google.com \
    --cc=vvs@virtuozzo.com \
    --cc=willemb@google.com \
    --cc=yajun.deng@linux.dev \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®