From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EE2FA45BB6 for ; Wed, 23 Oct 2024 23:21:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E8FCE43340; Wed, 23 Oct 2024 23:21:42 +0200 (CEST) Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by mails.dpdk.org (Postfix) with ESMTP id E2A854333C for ; Wed, 23 Oct 2024 23:21:39 +0200 (CEST) Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-37d4b0943c7so104204f8f.1 for ; Wed, 23 Oct 2024 14:21:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729718499; x=1730323299; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XmnANnhu8hW7MxuleCF8DF7WxAskTU0JCVYVYq0p8Q4=; b=dfyweB4oMHmJKdvda+TIXtOUzHi/SYBDmIr40x4HhUd0//SDF97asO+sJvDhocG3nJ hiPUxE6NVn0mwbPCnKKsCKRCAdI3SVeEz2/4wfAcRVVHXg41b70bUNrdqtsgdtEAFNi1 QDusvJ0hOOnJlm7B8W+ySg5I2DLIwo0U2oyYFkpkg6YcP9ORXIiBj4dWp+1eYmpJXg+N eI8v42+Evhpfp92WRSG9XypShqgwJZDkYp9aP/sztdNv9lLUu7jm9ZhXBcrfYpX1RDDc XWmbc1qS4GcdJTckFWGpcmsHVjqiQP+V/SBGSTono6VNxMmQvQ6DOPh6UQNEA1gWBXcS KycA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729718499; x=1730323299; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XmnANnhu8hW7MxuleCF8DF7WxAskTU0JCVYVYq0p8Q4=; b=GRS3f2HqgVIk7blMpyygAGXFJUsWY2WnVSmep0Vbi+ArJ4jXrBBVXaJq2SRp64FuXU RK7quKOIUJ6ggICtCc39VgS5ixPv5NnhJ7wAOw3TY8pPtCY9d3CIMUGoCPtO3uj+SQsg KcVt+AgJWIPZmvw7ZGJW2PsRWn3HWpdtyfrN5OybMhPg4Lv2fbAWfAr2fjHXYwKX2keO psrlwb1ieaa0kI6p5ClBM193tNIR3CBtDCiLHgnCgXuOEH8LsyM6lZZxf7InlZ+YCocE Ecji44FWCrCiXDfqOPjBeck+ILAvFMERHl3lsgUtVUtyXkgo4bRZ75ed4mmIIYDo6Pth nNrw== X-Gm-Message-State: AOJu0Yx5HxOI8H9DRUJknIkXMjcbdwGoJdcJqOeiGGkiIT9M622Gzomh CseFfqdGgNHFlFFbVEjSdxXBoJcoGfB/aAldZlf7u30UGOBZxU5HIouazhiV X-Google-Smtp-Source: AGHT+IEOQ9kiGVq7XKLIW6qCp/N+YEkuJePKP7wVw3aK9NqMTAKIjoexhh9aw+GlsULQy9XzfvJT2w== X-Received: by 2002:a5d:4143:0:b0:37c:d2ac:dd7d with SMTP id ffacd0b85a97d-37efcf4e276mr2646850f8f.30.1729718499342; Wed, 23 Oct 2024 14:21:39 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:21cd:def0:a01d:d2aa]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37ee0a58cc2sm9776398f8f.54.2024.10.23.14.21.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2024 14:21:38 -0700 (PDT) From: luca.boccassi@gmail.com To: Vladimir Medvedkin Cc: dpdk stable Subject: patch 'hash: fix thash LFSR initialization' has been queued to stable release 22.11.7 Date: Wed, 23 Oct 2024 22:16:55 +0100 Message-ID: <20241023211704.1216956-75-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241023211704.1216956-1-luca.boccassi@gmail.com> References: <20241023211704.1216956-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 22.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/25/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/fec66c08d4227a36d2965f5097d384ae5759d81a Thanks. Luca Boccassi --- >From fec66c08d4227a36d2965f5097d384ae5759d81a Mon Sep 17 00:00:00 2001 From: Vladimir Medvedkin Date: Fri, 6 Sep 2024 17:01:41 +0000 Subject: [PATCH] hash: fix thash LFSR initialization [ upstream commit ebf7f1188ea83d6154746e90d535392113ecb1e8 ] Reverse polynomial for an LFSR was initialized improperly which could generate improper bit sequence in some situations. This patch implements proper polynomial reversing function. Fixes: 28ebff11c2dc ("hash: add predictable RSS") Signed-off-by: Vladimir Medvedkin --- lib/hash/rte_thash.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c index 2228af576b..363603c102 100644 --- a/lib/hash/rte_thash.c +++ b/lib/hash/rte_thash.c @@ -160,6 +160,30 @@ thash_get_rand_poly(uint32_t poly_degree) RTE_DIM(irreducible_poly_table[poly_degree])]; } +static inline uint32_t +get_rev_poly(uint32_t poly, int degree) +{ + int i; + /* + * The implicit highest coefficient of the polynomial + * becomes the lowest after reversal. + */ + uint32_t rev_poly = 1; + uint32_t mask = (1 << degree) - 1; + + /* + * Here we assume "poly" argument is an irreducible polynomial, + * thus the lowest coefficient of the "poly" must always be equal to "1". + * After the reversal, this the lowest coefficient becomes the highest and + * it is omitted since the highest coefficient is implicitly determined by + * degree of the polynomial. + */ + for (i = 1; i < degree; i++) + rev_poly |= ((poly >> i) & 0x1) << (degree - i); + + return rev_poly & mask; +} + static struct thash_lfsr * alloc_lfsr(struct rte_thash_ctx *ctx) { @@ -179,7 +203,7 @@ alloc_lfsr(struct rte_thash_ctx *ctx) lfsr->state = rte_rand() & ((1 << lfsr->deg) - 1); } while (lfsr->state == 0); /* init reverse order polynomial */ - lfsr->rev_poly = (lfsr->poly >> 1) | (1 << (lfsr->deg - 1)); + lfsr->rev_poly = get_rev_poly(lfsr->poly, lfsr->deg); /* init proper rev_state*/ lfsr->rev_state = lfsr->state; for (i = 0; i <= lfsr->deg; i++) -- 2.45.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-10-23 22:16:43.371890184 +0100 +++ 0075-hash-fix-thash-LFSR-initialization.patch 2024-10-23 22:16:40.555944919 +0100 @@ -1 +1 @@ -From ebf7f1188ea83d6154746e90d535392113ecb1e8 Mon Sep 17 00:00:00 2001 +From fec66c08d4227a36d2965f5097d384ae5759d81a Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit ebf7f1188ea83d6154746e90d535392113ecb1e8 ] + @@ -11 +12,0 @@ -Cc: stable@dpdk.org @@ -19 +20 @@ -index 10721effe6..99a685f0c8 100644 +index 2228af576b..363603c102 100644 @@ -22 +23 @@ -@@ -166,6 +166,30 @@ thash_get_rand_poly(uint32_t poly_degree) +@@ -160,6 +160,30 @@ thash_get_rand_poly(uint32_t poly_degree) @@ -53 +54 @@ -@@ -185,7 +209,7 @@ alloc_lfsr(struct rte_thash_ctx *ctx) +@@ -179,7 +203,7 @@ alloc_lfsr(struct rte_thash_ctx *ctx)