Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1389211pxf; Fri, 12 Mar 2021 08:25:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJxpZEWeaUGt1avWl9Z85SucmP4UoFJ0oBMnahTU5ddHuO7KI1q3t3qV5PT5WjuJKJsqnKnq X-Received: by 2002:a17:906:33d9:: with SMTP id w25mr9844970eja.413.1615566347532; Fri, 12 Mar 2021 08:25:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615566347; cv=none; d=google.com; s=arc-20160816; b=gDHvg9ad8zroSqeLbFeBe8mQEwP09hswnQGqX2PxIvlkbzxEYyPZriQ2mu2LjcVZYg 2uo713C3QXzV6WtvQu97nwfxAOqhBaMiFSVdQYEEem03I10L6d+vQh+mQDJbINTAgC0J 9A0yqqMeon1ieKwQB5IKY0AApWQec7NYBlrWwlrUT9Aodt559T4eXbBGwR7ini25Xkb9 hRCYqYPaKG+Ik2ZF1XEyhRFqVKyLAjmUxATksV1tk6Oq59DuaGnNzPsRjw/1JBM8oWXu IjC19jITzBJwun50Vx4JK9bwXKW0rzIrAnHWbNZgZCE+iqiIWhL+0bBYjUxnlLIrgExp EKHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:reply-to:cc:from:to :dkim-signature:date; bh=kBDDl8otlT8o/LM6cr4LLdHLvlyC4ODcgI6jQUcxeAo=; b=uaDtz1ImRDqfT63jE4lMgUZvjf/971s7rD1rJnZfUJ2r5VOGjtmH+J9EstJNbJdvii viSC+V9mXzM4HrE1J+dbTdKTbB4fC3MYm2dEAoA+wDh7auTlT+FibtR584yx0h3D6WgU fn4BPECYaV9BeNXi0T1fzso4wKBRmRRKLxNxwi9FLCty5MLpc25k8OHiTw843U9Z6mQs JlzZ6QbkrFAFEvj900E4pkOe2dOzJgzAucFWRnJTQmsgeTHIwDfHyBvJJYPX3vHmSG2P xS4SVDnUQrcMHiNby7a9eSXXlsgwrbSnE4OtAUgdYYUhiw+qo23Y6D01Cy4aLResgu+x AbkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pm.me header.s=protonmail header.b=TPHwMLPF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pm.me Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f6si4403577edq.600.2021.03.12.08.25.24; Fri, 12 Mar 2021 08:25:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@pm.me header.s=protonmail header.b=TPHwMLPF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pm.me Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232530AbhCLQWX (ORCPT + 99 others); Fri, 12 Mar 2021 11:22:23 -0500 Received: from mail-40136.protonmail.ch ([185.70.40.136]:55404 "EHLO mail-40136.protonmail.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231670AbhCLQWL (ORCPT ); Fri, 12 Mar 2021 11:22:11 -0500 Date: Fri, 12 Mar 2021 16:22:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail; t=1615566129; bh=kBDDl8otlT8o/LM6cr4LLdHLvlyC4ODcgI6jQUcxeAo=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=TPHwMLPFx8yRTAB179mgR4wMVehNyO1TW5OYr/dIAAqdgMy2JYicEKDCcO+VFjYyJ IKN4UB/I6vvxrSSOr6OlqtnK8/u+OW0HBgr7gKyN/K89KXe4axUMhWhSM+UzeSzEHU MwUckvm5CtZq5Yi52sx3dAKqidGMlCcb7nGVJJ+3llgTos3O7SXTnhuAZjSrRlGeeQ yJpiCrDpScE8Msn0QCnkgllWL7aDgXJjBCDkTjMaX1vwKpcJVB4OX+RWD9Lwh36tZY KsOUt9bwav3507PGqtPRUdUZ7/dikwJNHeqqHbSElUICxbx7+dzXQ5HP2mPX5GwKUv U7DaUwhm5Wo3Q== To: "David S. Miller" , Jakub Kicinski From: Alexander Lobakin Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Alexander Lobakin , Eric Dumazet , Wei Wang , Cong Wang , Taehee Yoo , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Reply-To: Alexander Lobakin Subject: [PATCH net-next 3/4] gro: simplify gro_list_prepare() Message-ID: <20210312162127.239795-4-alobakin@pm.me> In-Reply-To: <20210312162127.239795-1-alobakin@pm.me> References: <20210312162127.239795-1-alobakin@pm.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org gro_list_prepare() always returns &napi->gro_hash[bucket].list, without any variations. Moreover, it uses 'napi' argument only to have access to this list, and calculates the bucket index for the second time (firstly it happens at the beginning of dev_gro_receive()) to do that. Given that dev_gro_receive() already has a pointer to the needed list, just pass it as the first argument to eliminate redundant calculations, and make gro_list_prepare() return void. Also, both arguments of gro_list_prepare() can be constified since this function can only modify the skbs from the bucket list. Signed-off-by: Alexander Lobakin --- net/core/dev.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index ee124aecb8a2..65d9e7d9d1e8 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5858,15 +5858,13 @@ void napi_gro_flush(struct napi_struct *napi, bool = flush_old) } EXPORT_SYMBOL(napi_gro_flush); -static struct list_head *gro_list_prepare(struct napi_struct *napi, -=09=09=09=09=09 struct sk_buff *skb) +static void gro_list_prepare(const struct list_head *head, +=09=09=09 const struct sk_buff *skb) { =09unsigned int maclen =3D skb->dev->hard_header_len; =09u32 hash =3D skb_get_hash_raw(skb); -=09struct list_head *head; =09struct sk_buff *p; -=09head =3D &napi->gro_hash[hash & (GRO_HASH_BUCKETS - 1)].list; =09list_for_each_entry(p, head, list) { =09=09unsigned long diffs; @@ -5892,8 +5890,6 @@ static struct list_head *gro_list_prepare(struct napi= _struct *napi, =09=09=09=09 maclen); =09=09NAPI_GRO_CB(p)->same_flow =3D !diffs; =09} - -=09return head; } static void skb_gro_reset_offset(struct sk_buff *skb) @@ -5958,10 +5954,10 @@ static enum gro_result dev_gro_receive(struct napi_= struct *napi, struct sk_buff { =09u32 bucket =3D skb_get_hash_raw(skb) & (GRO_HASH_BUCKETS - 1); =09struct gro_list *gro_list =3D &napi->gro_hash[bucket]; +=09struct list_head *gro_head =3D &gro_list->list; =09struct list_head *head =3D &offload_base; =09struct packet_offload *ptype; =09__be16 type =3D skb->protocol; -=09struct list_head *gro_head; =09struct sk_buff *pp =3D NULL; =09enum gro_result ret; =09int same_flow; @@ -5970,7 +5966,7 @@ static enum gro_result dev_gro_receive(struct napi_st= ruct *napi, struct sk_buff =09if (netif_elide_gro(skb->dev)) =09=09goto normal; -=09gro_head =3D gro_list_prepare(napi, skb); +=09gro_list_prepare(gro_head, skb); =09rcu_read_lock(); =09list_for_each_entry_rcu(ptype, head, list) { -- 2.30.2