Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp809839rwb; Mon, 26 Sep 2022 06:13:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5v2Mog70Gt0zJO9gxzryiAz+vW+Ur+pY3KPVnAxXlQsnvN8bkz6DsOu/GrcfBdbPrTEwH6 X-Received: by 2002:a17:907:94d0:b0:783:d969:f30c with SMTP id dn16-20020a17090794d000b00783d969f30cmr719863ejc.165.1664197983295; Mon, 26 Sep 2022 06:13:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664197983; cv=none; d=google.com; s=arc-20160816; b=rN5Rnhg5WOhLBM3PaH6kgruI1/ztEHGdPWJqPgOTQKXsllADWRbCtpiOiOC/IeoUVe 5IWdCFpXbb/8j22vaKXKzkgJHhAkBkgHBppi2DVRTQ2/n9FiLxIbXiufM67TFf6uNZrK kFXNGW64kV+ocuCN5hN+nypxJJfSkNNVYOk3ce+yQo/sYWIrh6/luCeoxz2c0U85Zq4z Wd5Pq/fZ6SNQDn79blb2N950FFCXM4nDCyqtdGpNwaxJ4HyDKOEbZE+2VHqpvre6PhZp VhB+i1iOkvzdTJYc1JO3Q0+dsHNUIZyRiZicyLOGYUA30zLdw1J21TdC8sR9MYEPxVq7 mzuw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OPj3j5lq9O17RGn4ddl8Y1mFqgmDcQgU/1HK57XcqLE=; b=V1/9A98pJ0pEkfDXv4a/ImplVhhLIbDZRrdaXyIQcMpTu0xNYPYtHFaWrndt2Q1OHp 1sjnHA6bgCjN4rdly8paQMm6SRIoyor0vUyhC/Au/QT4lWCLhA8sYLaVkZThYaZE5Kzw hm2LOaB5xCFsNWK0Mk3HD//XvltL95QM2NkS9fzWKx042dENu5KllWTKTQlI9Dg0/qhC KRya2h5V+O21vuZ4DeHD79UMnVMW1KE69NY7UdOcJOtZLz3H7j7epiV7WuEyV/2gHSzR MMl3lL6c607G4yWrX5DVrbJFm9QJMJ4bkMc0odYf9ZzveMiFxRsdWEB3uDFEUopPX3hn OOCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=McBw2FW1; 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=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fw38-20020a170907502600b00781ebe14ffesi12989082ejc.816.2022.09.26.06.12.10; Mon, 26 Sep 2022 06:13:03 -0700 (PDT) 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=@linuxfoundation.org header.s=korg header.b=McBw2FW1; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237250AbiIZLCo (ORCPT + 99 others); Mon, 26 Sep 2022 07:02:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237072AbiIZLAb (ORCPT ); Mon, 26 Sep 2022 07:00:31 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87C1F5E306; Mon, 26 Sep 2022 03:31:34 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 39CB6B80920; Mon, 26 Sep 2022 10:30:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 76A67C433D6; Mon, 26 Sep 2022 10:30:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1664188201; bh=FI7rEFrMOyPLbRt3cV65JHtUQoUe/HdoklP+CaTR/68=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=McBw2FW1NsH81rD8heYbykkcTGZu22HK2QmibVIsL4Kku7CzuyxQ7QDkCzFvTeUzl /b/+q/sJ19tjJ7mxFIspuHJhEIvB7qwsWg2Ghrt2H7nosdMYuGF+HxLOy8bY1GkSvQ b0gK7xcyYZ44higu8bRbYcSj7CZZ7PQeQIIfr+V0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, zhang kai , "David S. Miller" , Sasha Levin Subject: [PATCH 5.10 073/141] net: let flow have same hash in two directions Date: Mon, 26 Sep 2022 12:11:39 +0200 Message-Id: <20220926100757.094339606@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220926100754.639112000@linuxfoundation.org> References: <20220926100754.639112000@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, 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 From: zhang kai [ Upstream commit 1e60cebf82948cfdc9497ea4553bab125587593c ] using same source and destination ip/port for flow hash calculation within the two directions. Signed-off-by: zhang kai Signed-off-by: David S. Miller Stable-dep-of: 64ae13ed4784 ("net: core: fix flow symmetric hash") Signed-off-by: Sasha Levin --- net/core/flow_dissector.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index f9baa9b1c77f..aad311c73810 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -1485,7 +1485,7 @@ __be32 flow_get_u32_dst(const struct flow_keys *flow) } EXPORT_SYMBOL(flow_get_u32_dst); -/* Sort the source and destination IP (and the ports if the IP are the same), +/* Sort the source and destination IP and the ports, * to have consistent hash within the two directions */ static inline void __flow_hash_consistentify(struct flow_keys *keys) @@ -1496,11 +1496,11 @@ static inline void __flow_hash_consistentify(struct flow_keys *keys) case FLOW_DISSECTOR_KEY_IPV4_ADDRS: addr_diff = (__force u32)keys->addrs.v4addrs.dst - (__force u32)keys->addrs.v4addrs.src; - if ((addr_diff < 0) || - (addr_diff == 0 && - ((__force u16)keys->ports.dst < - (__force u16)keys->ports.src))) { + if (addr_diff < 0) swap(keys->addrs.v4addrs.src, keys->addrs.v4addrs.dst); + + if ((__force u16)keys->ports.dst < + (__force u16)keys->ports.src) { swap(keys->ports.src, keys->ports.dst); } break; @@ -1508,13 +1508,13 @@ static inline void __flow_hash_consistentify(struct flow_keys *keys) addr_diff = memcmp(&keys->addrs.v6addrs.dst, &keys->addrs.v6addrs.src, sizeof(keys->addrs.v6addrs.dst)); - if ((addr_diff < 0) || - (addr_diff == 0 && - ((__force u16)keys->ports.dst < - (__force u16)keys->ports.src))) { + if (addr_diff < 0) { for (i = 0; i < 4; i++) swap(keys->addrs.v6addrs.src.s6_addr32[i], keys->addrs.v6addrs.dst.s6_addr32[i]); + } + if ((__force u16)keys->ports.dst < + (__force u16)keys->ports.src) { swap(keys->ports.src, keys->ports.dst); } break; -- 2.35.1