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 C82DAA0540 for ; Thu, 7 Jul 2022 09:56:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BDD7B40A7B; Thu, 7 Jul 2022 09:56:50 +0200 (CEST) Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by mails.dpdk.org (Postfix) with ESMTP id 96EB640A7B for ; Thu, 7 Jul 2022 09:56:49 +0200 (CEST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id B081C40A90 for ; Thu, 7 Jul 2022 07:56:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1657180608; bh=8yPC5Jqt4tFUuWL0InZdCJfhr7zTUNwdyWPLpyISIYU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NCvcbgwKDVyHpMv8Xm5uYPEhfyeXo5ia6ddDIoRku654crf7SLRjyuZPgXpUcGFqB TTJyk3ddVQA9UL1ug36IHyLN3II3Tc7+yTUKxjZjvy54ss8PSiOaJCcaA+39QjJywW 3EVWNbwZFypiPng/3SqxgbHhAG6LaUKXI7UUbB/Oy1eYMHfsyvexYYD4CPD/zlOdzO FfOkIS2BQfQXtVYAw1Y11ejLBKjusjmX3VSmvfGTqQqnK+ZbQCJ6YznM4jlPSz1gkN LJKeHin4S7fUQUexetw1JXY+cz/beGIMqrvP3gE1aoz9x92HRE2+uzw3LhRnWOj7Xl GwNLu5sVNkhRg== Received: by mail-ed1-f69.google.com with SMTP id g7-20020a056402424700b00435ac9c7a8bso13387726edb.14 for ; Thu, 07 Jul 2022 00:56:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8yPC5Jqt4tFUuWL0InZdCJfhr7zTUNwdyWPLpyISIYU=; b=57pNrMqaB+BD8wZfCn67ypK9DzL/aGEy9N6oAPW6oDTYdcsdl2RsUFvCsBSu3jF1VL GPOywu1T9gu6pLdFQijujSdszJYx87iP9YyRQE5xEfTCLUFO0zJVccf1C+YFqrk9L+/C R3T9Uohd9uYlq/bj/ETvB4o3e8zYlNcDYSD1l8z0Q0IsUyZ5zc3qkx5ll+91FJBKTB1v 82KLwieOwhaHFLgK1svLqjycMdAr8e0U7ukeoQmK05HmJ9tHOhAFNI7B+L9AOXxQdNtp tS/5LBGv+c6ACOmtov0FKJP/BaUD+LHf4xxYrnLmBzGc3zUomNX+FZy/jCbYKmqRAOKq ZQ3w== X-Gm-Message-State: AJIora/ps/bUcYD2ljIG5USSZBn7SoMoA8AGAAMTljWtODv/iFH6IVTG WwJnj3Wpc1vjpkXXYpeGLfHImZzajrK2Aoyixw7MM5OnSU+3QQn23wQ8zCyXKaCO42aGHSYQn1a PkTGMPQ4mF+FSjGH3sRYhohxm X-Received: by 2002:a17:907:7da1:b0:726:9562:b09f with SMTP id oz33-20020a1709077da100b007269562b09fmr45893475ejc.11.1657180608094; Thu, 07 Jul 2022 00:56:48 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tLFEzdodOAl0HLtMWQvjPhEq7oDP/pvMEJX0ldPl7j26CL68K4lJm3Lfb0teBVZCX6VKb4hw== X-Received: by 2002:a17:907:7da1:b0:726:9562:b09f with SMTP id oz33-20020a1709077da100b007269562b09fmr45893459ejc.11.1657180607862; Thu, 07 Jul 2022 00:56:47 -0700 (PDT) Received: from Keschdeichel.fritz.box ([2a02:6d40:3a4f:7b00:c19b:938e:7c97:afe2]) by smtp.gmail.com with ESMTPSA id eq26-20020a056402299a00b0043a26e3db72sm9957123edb.54.2022.07.07.00.56.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Jul 2022 00:56:47 -0700 (PDT) From: christian.ehrhardt@canonical.com To: Konstantin Ananyev Cc: Ido Goshen , dpdk stable Subject: patch 'acl: fix rules with 8-byte field size' has been queued to stable release 19.11.13 Date: Thu, 7 Jul 2022 09:54:22 +0200 Message-Id: <20220707075522.194223-27-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220707075522.194223-1-christian.ehrhardt@canonical.com> References: <20220707075522.194223-1-christian.ehrhardt@canonical.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 19.11.13 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/09/22. 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/cpaelzer/dpdk-stable-queue This queued commit can be viewed at: https://github.com/cpaelzer/dpdk-stable-queue/commit/c807a4cd6d1f24b320b009adc201c1e6cb79b846 Thanks. Christian Ehrhardt --- >From c807a4cd6d1f24b320b009adc201c1e6cb79b846 Mon Sep 17 00:00:00 2001 From: Konstantin Ananyev Date: Sun, 15 May 2022 21:03:18 +0100 Subject: [PATCH] acl: fix rules with 8-byte field size [ upstream commit 451098159c2209bc5c395a30d2dae325af93e8c2 ] In theory ACL library allows fields with 8B long. Though in practice they usually not used, not tested, and as was revealed by Ido, this functionality is not working properly. There are few places inside ACL build code-path that need to be addressed. Bugzilla ID: 673 Fixes: dc276b5780c2 ("acl: new library") Reported-by: Ido Goshen Signed-off-by: Konstantin Ananyev Tested-by: Ido Goshen --- lib/librte_acl/acl_bld.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/librte_acl/acl_bld.c b/lib/librte_acl/acl_bld.c index aeeaf040b8..1d6caf8984 100644 --- a/lib/librte_acl/acl_bld.c +++ b/lib/librte_acl/acl_bld.c @@ -12,6 +12,9 @@ /* number of pointers per alloc */ #define ACL_PTR_ALLOC 32 +/* account for situation when all fields are 8B long */ +#define ACL_MAX_INDEXES (2 * RTE_ACL_MAX_FIELDS) + /* macros for dividing rule sets heuristics */ #define NODE_MAX 0x4000 #define NODE_MIN 0x800 @@ -80,7 +83,7 @@ struct acl_build_context { struct tb_mem_pool pool; struct rte_acl_trie tries[RTE_ACL_MAX_TRIES]; struct rte_acl_bld_trie bld_tries[RTE_ACL_MAX_TRIES]; - uint32_t data_indexes[RTE_ACL_MAX_TRIES][RTE_ACL_MAX_FIELDS]; + uint32_t data_indexes[RTE_ACL_MAX_TRIES][ACL_MAX_INDEXES]; /* memory free lists for nodes and blocks used for node ptrs */ struct acl_mem_block blocks[MEM_BLOCK_NUM]; @@ -988,7 +991,7 @@ build_trie(struct acl_build_context *context, struct rte_acl_build_rule *head, */ uint64_t mask; mask = RTE_ACL_MASKLEN_TO_BITMASK( - fld->mask_range.u32, + fld->mask_range.u64, rule->config->defs[n].size); /* gen a mini-trie for this field */ @@ -1301,6 +1304,9 @@ acl_build_index(const struct rte_acl_config *config, uint32_t *data_index) if (last_header != config->defs[n].input_index) { last_header = config->defs[n].input_index; data_index[m++] = config->defs[n].offset; + if (config->defs[n].size > sizeof(uint32_t)) + data_index[m++] = config->defs[n].offset + + sizeof(uint32_t); } } @@ -1487,7 +1493,7 @@ acl_set_data_indexes(struct rte_acl_ctx *ctx) memcpy(ctx->data_indexes + ofs, ctx->trie[i].data_index, n * sizeof(ctx->data_indexes[0])); ctx->trie[i].data_index = ctx->data_indexes + ofs; - ofs += RTE_ACL_MAX_FIELDS; + ofs += ACL_MAX_INDEXES; } } @@ -1612,7 +1618,7 @@ rte_acl_build(struct rte_acl_ctx *ctx, const struct rte_acl_config *cfg) /* allocate and fill run-time structures. */ rc = rte_acl_gen(ctx, bcx.tries, bcx.bld_tries, bcx.num_tries, bcx.cfg.num_categories, - RTE_ACL_MAX_FIELDS * RTE_DIM(bcx.tries) * + ACL_MAX_INDEXES * RTE_DIM(bcx.tries) * sizeof(ctx->data_indexes[0]), max_size); if (rc == 0) { /* set data indexes. */ -- 2.37.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-07-07 09:54:12.356551364 +0200 +++ 0027-acl-fix-rules-with-8-byte-field-size.patch 2022-07-07 09:54:10.841823851 +0200 @@ -1 +1 @@ -From 451098159c2209bc5c395a30d2dae325af93e8c2 Mon Sep 17 00:00:00 2001 +From c807a4cd6d1f24b320b009adc201c1e6cb79b846 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 451098159c2209bc5c395a30d2dae325af93e8c2 ] + @@ -13 +14,0 @@ -Cc: stable@dpdk.org @@ -19 +20 @@ - lib/acl/acl_bld.c | 14 ++++++++++---- + lib/librte_acl/acl_bld.c | 14 ++++++++++---- @@ -22,4 +23,4 @@ -diff --git a/lib/acl/acl_bld.c b/lib/acl/acl_bld.c -index 7ea30f4186..2816632803 100644 ---- a/lib/acl/acl_bld.c -+++ b/lib/acl/acl_bld.c +diff --git a/lib/librte_acl/acl_bld.c b/lib/librte_acl/acl_bld.c +index aeeaf040b8..1d6caf8984 100644 +--- a/lib/librte_acl/acl_bld.c ++++ b/lib/librte_acl/acl_bld.c @@ -73 +74 @@ -@@ -1643,7 +1649,7 @@ rte_acl_build(struct rte_acl_ctx *ctx, const struct rte_acl_config *cfg) +@@ -1612,7 +1618,7 @@ rte_acl_build(struct rte_acl_ctx *ctx, const struct rte_acl_config *cfg)