Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp8762092rwb; Thu, 24 Nov 2022 04:05:18 -0800 (PST) X-Google-Smtp-Source: AA0mqf4HB1c5zAdnMUf5f5za8UqymptOc2PXHEJT44mKaqzDtckJrYLV7Xca1EVrarIeM6AVJTqi X-Received: by 2002:aa7:c78b:0:b0:467:97e4:6339 with SMTP id n11-20020aa7c78b000000b0046797e46339mr29359832eds.381.1669291517710; Thu, 24 Nov 2022 04:05:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669291517; cv=none; d=google.com; s=arc-20160816; b=Ywv31MYziqkhZfE4qNr1YOcSoT+X4sbXnG79Vmmq0SGYzlphl4yqB1J/ZdaOXYoq/O mHdH86lBXoXcX3NmeRXOS48lCHzHDKvW1A0qYxspre51IE8exROJ6sO1KQoODjJGBQB2 ikR7ksDhyQ+c/O2rubaUNPgpopkhsxBt4rL2HUlKfSycYVBqKVKx+rh2QLy2L3/iu0t/ jwNJ8VNTXNhh5x1mr9cNallh87/tHqVfmyKR9boAh25MIR8YiV4DhB+1Gw0FQivJDsiY YpVnXNpuqL/b66ZKMM+I8ZE0cWcJIxTAXur7fcrlQj1XVNqMclwmJqA9YJOmI2CbLYFI +8AA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:content-disposition:mime-version :message-id:subject:to:from:date:dkim-signature; bh=uFPDvjtCbP4Fl3gQ9OrK16yYyHn0B4VM0PaF8ZquGSE=; b=yWufwX+9tDl+A/RISaZspQelL7qaf5syPM8gWKRibYJDEPEPV3k2BS6AZ58D/vVUkT sBNveCG8KrraUJCD/InCgjeYaLWze/wsI342N83oPLXLdqlSnll0OplIpJ4tbQhNWA7Z 8560Tc0gRt80Q/EnYRa1Ma01xyvih+ZzfZ/BEjS+2Dq1c43g00vGBSeS6CPIF76lvk5/ 0UVZ7yJvHBn1UnrgPUbL4iZsXqSGDnjFjDHov0ewVysJjgb2O9DwjbN26JDp4QBV37J2 jp1jNV88E1P0oYIsuLcl6sQyiuoekIhPx1kBw8ZogfUTr2dqESpl1Zt8LMMOWOz09LP7 EVHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="T/FnsTcT"; 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 ht20-20020a170907609400b0079800b8172bsi96017ejc.450.2022.11.24.04.04.55; Thu, 24 Nov 2022 04:05:17 -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="T/FnsTcT"; 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 S230165AbiKXLzy (ORCPT + 86 others); Thu, 24 Nov 2022 06:55:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230002AbiKXLzt (ORCPT ); Thu, 24 Nov 2022 06:55:49 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE0D6C663A; Thu, 24 Nov 2022 03:55:48 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id m7-20020a05600c090700b003cf8a105d9eso1064036wmp.5; Thu, 24 Nov 2022 03:55:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=user-agent:content-disposition:mime-version:message-id:subject:to :from:date:from:to:cc:subject:date:message-id:reply-to; bh=uFPDvjtCbP4Fl3gQ9OrK16yYyHn0B4VM0PaF8ZquGSE=; b=T/FnsTcT2xkrA3yQ7Q2zthHnE2uoosNgSDeCjWjQkBX7Sael4MOqvmSL5UuvyvnV7z ah1rVgohqfDCitHE0id8Jw8unFHfZjGV5Bd/dljfEMHnKuIBpFNjyWhU92sovQ+I3yWQ WnNUD/4H6Rn0tuBOaz4v987chDB6Da8qOZVz9wd/oNsolUFLTY6u78vmf7m6UUmw79da ORmHnrQdrcGbj+V5gxg+n9M8lkCaOiMuVbxG0o879IVDyHJkd8F1htwsmHvYW4wtl2Kw ktFaT2SZwWCpdN/oKjfr6JsO/laMimQHBxSzGwAiLPtCN/fjQzj/T+i85VaMrWpP1jvy Pf4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent:content-disposition:mime-version:message-id:subject:to :from:date:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uFPDvjtCbP4Fl3gQ9OrK16yYyHn0B4VM0PaF8ZquGSE=; b=Jb9oTydA/nyQgAWiuYzTg95WkWt3JcwoMBvLWhmbL7XQvW/5OcB1WTxM/cKeeqaTyj 2/RYmQXz/HA0nqgiyKkCWrIuNAx7Bsqz507ctGl37Xuk+NlwHLSk+iFFUBlrxvWeRX71 ZoxDnplXDDEUfTECPoNYy/2P/wEhlvfAmePq+KD8XPSjtVXIg+b6FuC5TnMMuoNyE5ca 9DPQsT+IQvpheLwAf4D4r2MgnQhYbsDjorabsB1keOnIOd14lBzeMEvTX6xoOu/xcwyo 8nwNVVpIbZKmscQDsrgJZjBfgC3iDiRhNmON55E9kKl2ue2F7mLHtmz5eJksCbFwo9s5 5cUA== X-Gm-Message-State: ANoB5pncX9h0g/8tCW8KMu+2umtLqhwfpVKrbD+gLehgntwUaq7ajGVQ 0wg8iojt0w/kVU5rCT72/xs= X-Received: by 2002:a05:600c:288:b0:3cf:758f:161f with SMTP id 8-20020a05600c028800b003cf758f161fmr21979270wmk.54.1669290947271; Thu, 24 Nov 2022 03:55:47 -0800 (PST) Received: from debian ([89.238.191.199]) by smtp.gmail.com with ESMTPSA id l22-20020a05600c4f1600b003cffd3c3d6csm1717612wmq.12.2022.11.24.03.55.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Nov 2022 03:55:46 -0800 (PST) Date: Thu, 24 Nov 2022 12:55:27 +0100 From: Richard Gobert To: edumazet@google.com, davem@davemloft.net, yoshfuji@linux-ipv6.org, dsahern@kernel.org, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/2] gro: change confusing use of flush variable Message-ID: <20221124115507.GA73719@debian> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) 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 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 The variable "flush" in tcp_gro_received is confusingly used for two different purposes. The first use is to keep track whether we are going to flush the SKB at the end of the function (the same use as in other GRO receive functions). The second use is just after the "found" label, where it is used to keep track whether we are going to skip the call to skb_gro_receive that merges the SKBs. This is entirely not related to the previous use, but uses the same variable. To make the code more readable, this patch moves the second use to a separate variable called "dont_merge". Signed-off-by: Richard Gobert --- net/ipv4/tcp_offload.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/net/ipv4/tcp_offload.c b/net/ipv4/tcp_offload.c index f17271e5c7c5..7ca6be2f56df 100644 --- a/net/ipv4/tcp_offload.c +++ b/net/ipv4/tcp_offload.c @@ -191,6 +191,7 @@ struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb) unsigned int hlen; unsigned int off; int flush = 1; + int dont_merge; int i; off = skb_gro_offset(skb); @@ -234,13 +235,13 @@ struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb) found: /* Include the IP ID check below from the inner most IP hdr */ - flush = NAPI_GRO_CB(p)->flush; - flush |= (__force int)(flags & TCP_FLAG_CWR); - flush |= (__force int)((flags ^ tcp_flag_word(th2)) & + dont_merge = NAPI_GRO_CB(p)->flush; + dont_merge |= (__force int)(flags & TCP_FLAG_CWR); + dont_merge |= (__force int)((flags ^ tcp_flag_word(th2)) & ~(TCP_FLAG_CWR | TCP_FLAG_FIN | TCP_FLAG_PSH)); - flush |= (__force int)(th->ack_seq ^ th2->ack_seq); + dont_merge |= (__force int)(th->ack_seq ^ th2->ack_seq); for (i = sizeof(*th); i < thlen; i += 4) - flush |= *(u32 *)((u8 *)th + i) ^ + dont_merge |= *(u32 *)((u8 *)th + i) ^ *(u32 *)((u8 *)th2 + i); /* When we receive our second frame we can made a decision on if we @@ -250,7 +251,7 @@ struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb) if (NAPI_GRO_CB(p)->flush_id != 1 || NAPI_GRO_CB(p)->count != 1 || !NAPI_GRO_CB(p)->is_atomic) - flush |= NAPI_GRO_CB(p)->flush_id; + dont_merge |= NAPI_GRO_CB(p)->flush_id; else NAPI_GRO_CB(p)->is_atomic = false; @@ -261,16 +262,16 @@ struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb) * is bigger than our mss. */ if (unlikely(skb_is_gso(skb))) - flush |= (mss != skb_shinfo(skb)->gso_size); + dont_merge |= (mss != skb_shinfo(skb)->gso_size); else - flush |= (len - 1) >= mss; + dont_merge |= (len - 1) >= mss; - flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq); + dont_merge |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq); #ifdef CONFIG_TLS_DEVICE - flush |= p->decrypted ^ skb->decrypted; + dont_merge |= p->decrypted ^ skb->decrypted; #endif - if (flush || skb_gro_receive(p, skb)) { + if (dont_merge || skb_gro_receive(p, skb)) { flush = 0; goto out_check_final; } -- 2.36.1