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 2E3B2A04B1 for ; Mon, 23 Nov 2020 18:13:32 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2642EC8FC; Mon, 23 Nov 2020 18:13:31 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by dpdk.org (Postfix) with ESMTP id 5E27CC8FA for ; Mon, 23 Nov 2020 18:13:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606151607; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UeJddl95oB1Z7w+TQhPo98CVRA/bR65fwugVxmknqO8=; b=cneAooet/+8v5aYgQU0aWBc4z65XJnFd56ijjRt4YNXbJ5WgZjRaMx3IaRk28Inv7TI5ix 4d3rao1NuVfnXTekENMYZ9Z74MlZp1ktb2+a97YCPE4ITB8R3eMMZ0ouT9XAKgC096RTTb HI6UhGbDetQRxYO+eyM1nsJpYV09+F4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-459-Q-z7RenAP-Gszp9soCQ0hg-1; Mon, 23 Nov 2020 12:13:24 -0500 X-MC-Unique: Q-z7RenAP-Gszp9soCQ0hg-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9972C9A224; Mon, 23 Nov 2020 17:13:23 +0000 (UTC) Received: from rh.redhat.com (ovpn-112-19.ams2.redhat.com [10.36.112.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7604760C04; Mon, 23 Nov 2020 17:13:22 +0000 (UTC) From: Kevin Traynor To: Maxime Leroy Cc: Nelio Laranjeiro , Viacheslav Ovsiienko , dpdk stable Date: Mon, 23 Nov 2020 17:12:15 +0000 Message-Id: <20201123171222.79398-23-ktraynor@redhat.com> In-Reply-To: <20201123171222.79398-1-ktraynor@redhat.com> References: <20201123171222.79398-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Subject: [dpdk-stable] patch 'net/mlx5: fix Rx queue count calculation' has been queued to LTS release 18.11.11 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 LTS release 18.11.11 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/27/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. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/77fb0d8675924094ae787238477eebad1010bfa0 Thanks. Kevin. --- >From 77fb0d8675924094ae787238477eebad1010bfa0 Mon Sep 17 00:00:00 2001 From: Maxime Leroy Date: Tue, 17 Nov 2020 12:26:46 +0100 Subject: [PATCH] net/mlx5: fix Rx queue count calculation [ upstream commit 9ae9720d7f0c12f877df9214f7cbedae546d4020 ] The commit d2d57605522d ("net/mlx5: fix Rx queue count calculation") is incorrect because the count calculation is wrong for the next cqe: Example: Compressed Set of packets 1 | Compressed Set of packets 2 C | a | e0 | e1 | e2 | e3 | e4 | e5 | C | a | e0 There are 2 compressed set of packets in the first queue. For the first set, n is computed correctly. But for the second, n is not computed properly. Because the zip context is for the first set. The second set is not yet decompressed, so there are no context. To fix the issue, we should only use the zip context for the first CQEs series. Fixes: d2d57605522d ("net/mlx5: fix Rx queue count calculation") Signed-off-by: Maxime Leroy Signed-off-by: Nelio Laranjeiro Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_rxtx.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 2896a9b4ef..dd7b183395 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -431,9 +431,16 @@ rx_queue_count(struct mlx5_rxq_data *rxq) struct rxq_zip *zip = &rxq->zip; volatile struct mlx5_cqe *cqe; - unsigned int cq_ci = rxq->cq_ci; const unsigned int cqe_n = (1 << rxq->cqe_n); const unsigned int cqe_cnt = cqe_n - 1; - unsigned int used = 0; + unsigned int cq_ci, used; + /* if we are processing a compressed cqe */ + if (zip->ai) { + used = zip->cqe_cnt - zip->ai; + cq_ci = zip->cq_ci; + } else { + used = 0; + cq_ci = rxq->cq_ci; + } cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; while (check_cqe(cqe, cqe_n, cq_ci) == 0) { @@ -443,8 +450,5 @@ rx_queue_count(struct mlx5_rxq_data *rxq) op_own = cqe->op_own; if (MLX5_CQE_FORMAT(op_own) == MLX5_COMPRESSED) - if (unlikely(zip->ai)) - n = zip->cqe_cnt - zip->ai; - else - n = rte_be_to_cpu_32(cqe->byte_cnt); + n = rte_be_to_cpu_32(cqe->byte_cnt); else n = 1; -- 2.26.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-11-23 17:10:14.532486728 +0000 +++ 0023-net-mlx5-fix-Rx-queue-count-calculation.patch 2020-11-23 17:10:14.007061601 +0000 @@ -1 +1 @@ -From 9ae9720d7f0c12f877df9214f7cbedae546d4020 Mon Sep 17 00:00:00 2001 +From 77fb0d8675924094ae787238477eebad1010bfa0 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 9ae9720d7f0c12f877df9214f7cbedae546d4020 ] + @@ -25 +26,0 @@ -Cc: stable@dpdk.org @@ -35 +36 @@ -index 844a1c633d..2733dcd3ff 100644 +index 2896a9b4ef..dd7b183395 100644 @@ -38 +39 @@ -@@ -463,9 +463,16 @@ rx_queue_count(struct mlx5_rxq_data *rxq) +@@ -431,9 +431,16 @@ rx_queue_count(struct mlx5_rxq_data *rxq) @@ -56,2 +57,2 @@ - while (check_cqe(cqe, cqe_n, cq_ci) != MLX5_CQE_STATUS_HW_OWN) { -@@ -475,8 +482,5 @@ rx_queue_count(struct mlx5_rxq_data *rxq) + while (check_cqe(cqe, cqe_n, cq_ci) == 0) { +@@ -443,8 +450,5 @@ rx_queue_count(struct mlx5_rxq_data *rxq)