From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 588E3A0093 for ; Tue, 19 May 2020 15:13:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4E3211D8D1; Tue, 19 May 2020 15:13:26 +0200 (CEST) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by dpdk.org (Postfix) with ESMTP id 117E31D8E1 for ; Tue, 19 May 2020 15:13:24 +0200 (CEST) Received: by mail-wr1-f46.google.com with SMTP id s8so15852240wrt.9 for ; Tue, 19 May 2020 06:13:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dinS70zRMlqac1ZPY6gcZxI34ac2RFAdKTloORVqGOM=; b=YEbIgBzd0S/ypyQ2n2iX45hiy2LqWG1WjjlB5+xn3hug08BgEfYTgpMKWeoKV3b1DA rQ5ISnm4BrL4Ml48f/VBWhdfYZl5f1ez7QQtqZcxjKiPY5rghfyIChMh0UTGm0EStP1G MEgDprT2mgu0FoWd02B76kJsLlHezzJFO3yAryJX8s8FpuK8IUV2q035qJPraPricUbO nKqiTWdH1ELH0/GzaSMLwIdN0MMozR23COYAeLHgaNg5z3kzjP6Bpb51pRUBSGSUF/gB 1CxO2nkWxglozw4sPPIeMXR4nyLDZkj0Jk2f65k3i2HY9GtwvD14RnHWoyf6mZv4e7P+ VnKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dinS70zRMlqac1ZPY6gcZxI34ac2RFAdKTloORVqGOM=; b=UISUKCTE2edbjHmg0MOCfTp6hzT2PqiLSKEIVY0mjvZEUPuU0GgUJx4WUVYuHwV8OH Qa+pz5oXX5/vIEa8BFObaAFMKKCu1YMF2yvVgn8yYPyqF1AWQv0clyx10SOnVHVvgGtT Lw8LCQTdiPMS9ypOsFtszeXlhnYMuLOvgMpAqBrq0lT+WwFYq9lyzuQeRZ69145ZLGtr 1qe1K7TKwerTvgYDgxPILStC9WEhAHSQqZFMv8791SCPRttFGnfs1aSBcKS5tw3z5gFq ZOlc2lOmKvrqLnS03HA6Q5eBwrd7EOliH5Nj/UNI+5DhwQl+Nl+wMgJZg0TobEDyyKzc fExg== X-Gm-Message-State: AOAM530fR6CvXwqEp+AiSJNdfar6sgI6AXHHiF1XSCrC4KhAExmLm5ZK tO4eCcQ/yQuRhngwOQFf5M8= X-Google-Smtp-Source: ABdhPJx21I/Ti1KcVKKjdX4N6t4BU69MROeyailG/Kp7QNoq1+ouMcrTNFDcsOC/TRG9lSVSoh5vlw== X-Received: by 2002:adf:dc89:: with SMTP id r9mr24230595wrj.138.1589894003782; Tue, 19 May 2020 06:13:23 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id r11sm20836833wrv.14.2020.05.19.06.13.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:13:23 -0700 (PDT) From: luca.boccassi@gmail.com To: Alexander Kozyrev Cc: Viacheslav Ovsiienko , dpdk stable Date: Tue, 19 May 2020 14:04:38 +0100 Message-Id: <20200519130549.112823-143-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix assert in dynamic metadata handling' has been queued to stable release 19.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/21/20. 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. Thanks. Luca Boccassi --- >From 58ca518c24dc1fd75f6c047efe4fb8bfe23eb6f1 Mon Sep 17 00:00:00 2001 From: Alexander Kozyrev Date: Mon, 27 Apr 2020 18:20:11 +0000 Subject: [PATCH] net/mlx5: fix assert in dynamic metadata handling [ upstream commit 0c55591588e017f1ef2c1ac845a1fa23ea1e19fb ] The assert in dynamic flow metadata handling is wrong after the fix for the performance degradation. The assert meant to check the metadata mask but was updated with the metadata offset instead. Fix this assert and restore proper metadata mask checking. Fixes: 6c55b622a956 ("net/mlx5: set dynamic flow metadata in Rx queues") Signed-off-by: Alexander Kozyrev Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 7 ++++--- drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 5 +++-- drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h index 5bc47c714b..23ffb8d036 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h @@ -263,14 +263,15 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, elts[pos + 2]->hash.fdir.hi = flow_tag; elts[pos + 3]->hash.fdir.hi = flow_tag; } - if (!!rxq->flow_meta_mask) { + if (rxq->dynf_meta) { int32_t offs = rxq->flow_meta_offset; const uint32_t meta = *RTE_MBUF_DYNFIELD(t_pkt, offs, uint32_t *); /* Check if title packet has valid metadata. */ if (meta) { - assert(t_pkt->ol_flags & offs); + assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta; *RTE_MBUF_DYNFIELD(elts[pos + 1], offs, @@ -1028,7 +1029,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, pkts[pos + 3]->timestamp = rte_be_to_cpu_64(cq[pos + p3].timestamp); } - if (!!rxq->flow_meta_mask) { + if (rxq->dynf_meta) { uint64_t flag = rxq->flow_meta_mask; int32_t offs = rxq->flow_meta_offset; uint32_t metadata; diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index 2880f97af1..f92ece4299 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -205,14 +205,15 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, elts[pos + 2]->hash.fdir.hi = flow_tag; elts[pos + 3]->hash.fdir.hi = flow_tag; } - if (!!rxq->flow_meta_mask) { + if (rxq->dynf_meta) { int32_t offs = rxq->flow_meta_offset; const uint32_t meta = *RTE_MBUF_DYNFIELD(t_pkt, offs, uint32_t *); /* Check if title packet has valid metadata. */ if (meta) { - assert(t_pkt->ol_flags & offs); + assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta; *RTE_MBUF_DYNFIELD(elts[pos + 1], offs, diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h index ac8568ed4b..bb59163a26 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -197,7 +197,8 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, /* Check if title packet has valid metadata. */ if (meta) { - assert(t_pkt->ol_flags & offs); + assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta; *RTE_MBUF_DYNFIELD(elts[pos + 1], offs, -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:50.262014190 +0100 +++ 0143-net-mlx5-fix-assert-in-dynamic-metadata-handling.patch 2020-05-19 14:04:44.460652796 +0100 @@ -1,15 +1,16 @@ -From 0c55591588e017f1ef2c1ac845a1fa23ea1e19fb Mon Sep 17 00:00:00 2001 +From 58ca518c24dc1fd75f6c047efe4fb8bfe23eb6f1 Mon Sep 17 00:00:00 2001 From: Alexander Kozyrev Date: Mon, 27 Apr 2020 18:20:11 +0000 Subject: [PATCH] net/mlx5: fix assert in dynamic metadata handling +[ upstream commit 0c55591588e017f1ef2c1ac845a1fa23ea1e19fb ] + The assert in dynamic flow metadata handling is wrong after the fix for the performance degradation. The assert meant to check the metadata mask but was updated with the metadata offset instead. Fix this assert and restore proper metadata mask checking. Fixes: 6c55b622a956 ("net/mlx5: set dynamic flow metadata in Rx queues") -Cc: stable@dpdk.org Signed-off-by: Alexander Kozyrev Acked-by: Viacheslav Ovsiienko @@ -20,10 +21,10 @@ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h -index 69b934707c..26715ef450 100644 +index 5bc47c714b..23ffb8d036 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h -@@ -264,14 +264,15 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, +@@ -263,14 +263,15 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, elts[pos + 2]->hash.fdir.hi = flow_tag; elts[pos + 3]->hash.fdir.hi = flow_tag; } @@ -35,8 +36,8 @@ /* Check if title packet has valid metadata. */ if (meta) { -- MLX5_ASSERT(t_pkt->ol_flags & offs); -+ MLX5_ASSERT(t_pkt->ol_flags & +- assert(t_pkt->ol_flags & offs); ++ assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta; @@ -51,7 +52,7 @@ int32_t offs = rxq->flow_meta_offset; uint32_t metadata; diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h -index d39e72680b..ecafbf8004 100644 +index 2880f97af1..f92ece4299 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -205,14 +205,15 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, @@ -66,22 +67,22 @@ /* Check if title packet has valid metadata. */ if (meta) { -- MLX5_ASSERT(t_pkt->ol_flags & offs); -+ MLX5_ASSERT(t_pkt->ol_flags & +- assert(t_pkt->ol_flags & offs); ++ assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta; *RTE_MBUF_DYNFIELD(elts[pos + 1], offs, diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h -index f110f73b4a..6847ae7827 100644 +index ac8568ed4b..bb59163a26 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h -@@ -199,7 +199,8 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, +@@ -197,7 +197,8 @@ rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq, /* Check if title packet has valid metadata. */ if (meta) { -- MLX5_ASSERT(t_pkt->ol_flags & offs); -+ MLX5_ASSERT(t_pkt->ol_flags & +- assert(t_pkt->ol_flags & offs); ++ assert(t_pkt->ol_flags & + rxq->flow_meta_mask); *RTE_MBUF_DYNFIELD(elts[pos], offs, uint32_t *) = meta;