Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1562004pxm; Thu, 3 Mar 2022 21:57:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwRdzoA0vBDGxrOqlwHcwW5ws8iAGaiHxmIOo0Do8n2RTfLgINSpdNbqrWoqVp0hNRJiNFn X-Received: by 2002:a17:906:4fd2:b0:6d6:f920:f121 with SMTP id i18-20020a1709064fd200b006d6f920f121mr12114943ejw.467.1646373466670; Thu, 03 Mar 2022 21:57:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646373466; cv=none; d=google.com; s=arc-20160816; b=gc//PWTkcDpLuqbK8SVf0VES2bhwkPDoXZrsmHIzSl52cAt0jRTs+p0vPJO+IGewoZ gtIholITgHYk1gkJE6bAbeLl6Y5lrboFYfIoihCAsee/TfYSU96dZLRoNbHFA/VO3Rk3 3mwQcazuwW2GE78yZYj3LAUY3uvXRNixy2fQU4V48rk0akbMvfecN/a9q0ogsQ1l71Nl u2z5VoaBk8xlZcExHEFvQWxT0R6+Q2Fmys3rbQ5LcYC7MA7TZ+fNf7QO55PSLCnmhtoo azHCdQVWX78BgvLFqr2OVIW9VHewdgPWKgMxtuX0MlGp/N8kM8eLKaSnwdZX0S4ESqSU kf/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=POVwrXrpJZ5ubY6AO535Yj6HhCtMlU5j67jaEaw4sB4=; b=vRBFdNl6hJGqBl3ZapbQ+2+Hw0P8QcdD/kvrLRETDyDvVBOpDm0F57LbZSMSFNTKKE HkHZmuDS1lyM9R1TO/x1m86bR+vWNfi11Ym1PfKIEdEI2HMG4Vki9+wonepP48bQxTfo NVlzlW4S8arinfpLFNYajgY9xnBXhXQMKl4dqaxPAH7b2A5m3ul4hj28tjB6a641UyBO 6h0OzUi5zQDc0CY6B57fPZiQeTWFK7ktmQHiYj18qxfUCjAPCy9y2IpUoaY34+bGuIat AMd5yriAHkT80dvYUVpPBI5HsigZjau0URpsJv4StZdhMZiHMTVqoOKcG3hfmwjUtr23 jDsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=E2xODOv4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w7-20020a05640234c700b00415a27c6726si2740902edc.287.2022.03.03.21.57.13; Thu, 03 Mar 2022 21:57:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=E2xODOv4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237926AbiCDElB (ORCPT + 99 others); Thu, 3 Mar 2022 23:41:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232625AbiCDElA (ORCPT ); Thu, 3 Mar 2022 23:41:00 -0500 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A1CF15D390; Thu, 3 Mar 2022 20:40:13 -0800 (PST) Received: by mail-ej1-x643.google.com with SMTP id qt6so14980260ejb.11; Thu, 03 Mar 2022 20:40:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=POVwrXrpJZ5ubY6AO535Yj6HhCtMlU5j67jaEaw4sB4=; b=E2xODOv4+P+RsaNqjKYitETpX5eDGC36DnOf16Yr/qCrI7riVGgmYpBX1aJTThr+Sz xYTQgYEbJouThVYDu5AFBtES2PkSCdOdz7eyhUaCu2DOAwZ478bjXBbj8dRpkJJnRn+A RBNbKi58bHSigdHlanofMYYXjWAmmBMe7xR8KahYn/ClgOaX79hMV6vJnyJtxGtBJAFP VFb2ZUAHsN51nkf5CnLD1rBoGF8YofNAXamH/z9M+JlGMOr7ImEEwL2YY/jxy62LU3Ac jkdxJagJDserozlUo1pzvHq3WS6cQaxB92D4hRz8m1B249kiXEElGwmoG3EnCl6EH0Ca td/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=POVwrXrpJZ5ubY6AO535Yj6HhCtMlU5j67jaEaw4sB4=; b=3kLZeQqJbrHsInt2VBz1a1aIPKHuwa15+NwKZmnYQJbFxxYTsiy4iCnQ7gKoN3Feox hjkFseJi8soxSRYLSAta7bUUEbkbZ9PSD46FI715dJdl8DB5y7UiSS1sTJAeMy8Ssd0H GN0hfwFabswdCst8dgPgOvRhKdC8rw61imToxbIYsAEXKBIqmgq4KKhjMGL1PEVH5KpG +W72Sy16HIfGNM97lQnpmPaAQCcSlRfWzoPViKANxT0PNJbjLpZ5Rb2pQs6D/Hcr3t40 6HVS0UrnWHtWRFCuzp5Apbx/w3de30K9vnady5lI3echA5y8q6h2hpwU5Cd6Wnp13pzI y0wQ== X-Gm-Message-State: AOAM532aq8aLqIK2hVoz+6Y77aTMLDDGHai2RWyn2s/0TPVr/akua9ok kF44p8POWnC3vP1p5PLuEbnfL7blTDOkMfzz1jI= X-Received: by 2002:a17:906:3144:b0:6ce:de5d:5e3b with SMTP id e4-20020a170906314400b006cede5d5e3bmr29669325eje.689.1646368811491; Thu, 03 Mar 2022 20:40:11 -0800 (PST) MIME-Version: 1.0 References: <20220303174707.40431-1-imagedong@tencent.com> <20220303174707.40431-5-imagedong@tencent.com> In-Reply-To: From: Menglong Dong Date: Fri, 4 Mar 2022 12:40:00 +0800 Message-ID: Subject: Re: [PATCH net-next 4/7] net: dev: use kfree_skb_reason() for enqueue_to_backlog() To: Eric Dumazet Cc: David Ahern , Jakub Kicinski , Steven Rostedt , Ingo Molnar , David Miller , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Menglong Dong , Talal Ahmad , Kees Cook , Ilias Apalodimas , Alexander Lobakin , flyingpeng@tencent.com, Mengen Sun , Antoine Tenart , Sebastian Andrzej Siewior , Kumar Kartikeya Dwivedi , Arnd Bergmann , Paolo Abeni , Willem de Bruijn , Vasily Averin , Cong Wang , LKML , netdev , bpf Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 4, 2022 at 1:59 AM Eric Dumazet wrote: > > On Thu, Mar 3, 2022 at 9:48 AM wrote: > > > > From: Menglong Dong > > > > 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 > > --- > > 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 > >