All of lore.kernel.org
 help / color / mirror / Atom feed
From: Menglong Dong <menglong8.dong@gmail.com>
To: Eric Dumazet <edumazet@google.com>
Cc: David Ahern <dsahern@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ingo Molnar <mingo@redhat.com>,
	David Miller <davem@davemloft.net>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Jesper Dangaard Brouer <hawk@kernel.org>,
	John Fastabend <john.fastabend@gmail.com>,
	Menglong Dong <imagedong@tencent.com>,
	Talal Ahmad <talalahmad@google.com>,
	Kees Cook <keescook@chromium.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Alexander Lobakin <alobakin@pm.me>,
	flyingpeng@tencent.com, Mengen Sun <mengensun@tencent.com>,
	Antoine Tenart <atenart@kernel.org>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>,
	Arnd Bergmann <arnd@arndb.de>, Paolo Abeni <pabeni@redhat.com>,
	Willem de Bruijn <willemb@google.com>,
	Vasily Averin <vvs@virtuozzo.com>,
	Cong Wang <cong.wang@bytedance.com>,
	LKML <linux-kernel@vger.kernel.org>,
	netdev <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org>
Subject: Re: [PATCH net-next 4/7] net: dev: use kfree_skb_reason() for enqueue_to_backlog()
Date: Fri, 4 Mar 2022 12:40:00 +0800	[thread overview]
Message-ID: <CADxym3YUT3sdMH_NaSHvgQFTWkdLngM5Zr4g=WDAPSSsQVor0w@mail.gmail.com> (raw)
In-Reply-To: <CANn89iLcp96x15SkmPN7d7WyHRXecbswYNhghB3U2+JQxOvvjQ@mail.gmail.com>

On Fri, Mar 4, 2022 at 1:59 AM Eric Dumazet <edumazet@google.com> wrote:
>
> On Thu, Mar 3, 2022 at 9:48 AM <menglong8.dong@gmail.com> wrote:
> >
> > From: Menglong Dong <imagedong@tencent.com>
> >
> > Replace kfree_skb() used in enqueue_to_backlog() with
> > kfree_skb_reason(). The skb rop 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 meedn'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 62f9d15ec6ec..d2cf87ff84c2 100644
> > --- a/include/linux/skbuff.h
> > +++ b/include/linux/skbuff.h
> > @@ -402,6 +402,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 80fe15d175e3..29c360b5e114 100644
> > --- a/include/trace/events/skb.h
> > +++ b/include/trace/events/skb.h
> > @@ -47,6 +47,7 @@
> >         EM(SKB_DROP_REASON_NEIGH_DEAD, NEIGH_DEAD)              \
> >         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 3280ba2502cd..373fa7a33ffa 100644
> > --- a/net/core/dev.c
> > +++ b/net/core/dev.c
> > @@ -4541,10 +4541,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);
> >
> >         rps_lock_irqsave(sd, &flags);
> > @@ -4566,6 +4568,8 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
> >                 if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state))
> >                         napi_schedule_rps(sd);
> >                 goto enqueue;
> > +       } else {
>
> No need for an else {} after a goto  xxx;
>

Yeah, this 'else' can be omitted :) Thanks!

>
> > +               reason = SKB_DROP_REASON_CPU_BACKLOG;
> >         }
> >
> >  drop:
> > @@ -4573,7 +4577,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
> >         rps_unlock_irq_restore(sd, &flags);
> >
> >         atomic_long_inc(&skb->dev->rx_dropped);
> > -       kfree_skb(skb);
> > +       kfree_skb_reason(skb, reason);
> >         return NET_RX_DROP;
> >  }
> >
> > --
> > 2.35.1
> >

  reply	other threads:[~2022-03-04  4:40 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-03 17:47 [PATCH net-next 0/7] net: dev: add skb drop reasons to net/core/dev.c menglong8.dong
2022-03-03 17:47 ` [PATCH net-next 1/7] net: dev: use kfree_skb_reason() for sch_handle_egress() menglong8.dong
2022-03-04  4:25   ` Jakub Kicinski
2022-03-04  4:56     ` Menglong Dong
2022-03-04  5:05       ` Jakub Kicinski
2022-03-04  5:19         ` Menglong Dong
2022-03-03 17:47 ` [PATCH net-next 2/7] net: skb: introduce the function kfree_skb_list_reason() menglong8.dong
2022-03-04  0:12   ` Dongli Zhang
2022-03-04  4:06     ` Jakub Kicinski
2022-03-03 17:47 ` [PATCH net-next 3/7] net: dev: add skb drop reasons to __dev_xmit_skb() menglong8.dong
2022-03-03 17:47 ` [PATCH net-next 4/7] net: dev: use kfree_skb_reason() for enqueue_to_backlog() menglong8.dong
2022-03-03 17:59   ` Eric Dumazet
2022-03-04  4:40     ` Menglong Dong [this message]
2022-03-03 17:47 ` [PATCH net-next 5/7] net: dev: use kfree_skb_reason() for do_xdp_generic() menglong8.dong
2022-03-03 17:47 ` [PATCH net-next 6/7] net: dev: use kfree_skb_reason() for sch_handle_ingress() menglong8.dong
2022-03-03 17:47 ` [PATCH net-next 7/7] net: dev: use kfree_skb_reason() for __netif_receive_skb_core() menglong8.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='CADxym3YUT3sdMH_NaSHvgQFTWkdLngM5Zr4g=WDAPSSsQVor0w@mail.gmail.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=memxor@gmail.com \
    --cc=mengensun@tencent.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=talalahmad@google.com \
    --cc=vvs@virtuozzo.com \
    --cc=willemb@google.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.