From patchwork Thu Nov 12 15:39:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 84065 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DB7BDA09D3; Thu, 12 Nov 2020 16:39:57 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 57D595B30; Thu, 12 Nov 2020 16:39:26 +0100 (CET) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by dpdk.org (Postfix) with ESMTP id 30FFF592C for ; Thu, 12 Nov 2020 16:39:22 +0100 (CET) Received: by mail-wr1-f68.google.com with SMTP id 33so6451707wrl.7 for ; Thu, 12 Nov 2020 07:39:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o3UPQPfPoH2OvjdE0If0pFykDb/+Lx2Yl5cDaJPSalU=; b=Yx7cHCQo/vDoXwYLBeg/vKtppZIcELKI2/16G3la1go48dTDEW2+ljRgGxDGjQOpBv q0jm3kkksEaypyFwj/wwJYMKCu7uxBUck1kti/Cs8NR/+ZhGcRkZG/8zZ9DmXV+IykcS /5MU9cQEiY3TSZ9dbfjQsf8vQsj8gajUbSWTLf4TnWOTR1r2XYHeP+fhNfbrYcTbuq1g aibg/pgm7KzZYS3xFcTzD8sObTbtZ31Hiun/9GkFjOqUSKKzD3oNZxTU1fBaN3SBrHoQ lzNGoOf349ZrxFSd4ClONyFDZjHdy4tiNf5m47CdXh9XCIhMvyLrwyHN0Xuc33BehUBW Uw6w== 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=o3UPQPfPoH2OvjdE0If0pFykDb/+Lx2Yl5cDaJPSalU=; b=jJxu8jQ32bezZAPjd/r3uWcD613jRu3/AVSmDjYtRr3Xx1TcfaFnWoHRLJvngJ000C HHBWoiAZQTuFBfwbb/vFOFDj3tXwV1GduizzlOqvkZVNG+NrtZa829dPbT832xA4ZL7v 1LzhDWWEFrWEx+Ahm1J36AzDFQoB0xnLZhHniJB8o0CXfjPAXUyIynXMhhOLP3Ab90NR 6Ly1pS4X1owZVbx1Xxsa9+9GODApdxo/cLIqrkyDDmc59zbCyxuruGQlm7Va1Vmnx7yc AIzrIMTp9Lx2aNlujhD4x3M/9X9zPWO5OH6ZS1I/2D5jUWpe9NF7mhn81x9VkhZd4qsM 1p9Q== X-Gm-Message-State: AOAM533itDcm1NXN+vmoR6/hWrxfuhzU0YBkItaGOT3DIz2sAffcwGjs 9zRWYR8hEow8mSWVrJhYGJJa/g== X-Google-Smtp-Source: ABdhPJyn71tiA1wc+PgcfaiiJp81C5kuUf4QRorcGYvvI/1107Csh3/JCJkJbqpthLGn/JiN/uHclA== X-Received: by 2002:adf:e787:: with SMTP id n7mr105703wrm.153.1605195560943; Thu, 12 Nov 2020 07:39:20 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id g4sm6004938wrp.0.2020.11.12.07.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 07:39:20 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , Alexander Kozyrev Cc: dev@dpdk.org, Nelio Laranjeiro Date: Thu, 12 Nov 2020 16:39:09 +0100 Message-Id: <20201112153911.15044-2-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201112153911.15044-1-maxime.leroy@6wind.com> References: <20201112153911.15044-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 1/2] net/mlx5: fix Rx queue count calculation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The commit d2d57605522d ("net/mlx5: fix Rx queue count calculation") is uncorrect 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 serie. 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 844a1c63..2733dcd3 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -462,11 +462,18 @@ 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) != MLX5_CQE_STATUS_HW_OWN) { int8_t op_own; @@ -474,10 +481,7 @@ 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; cq_ci += n; From patchwork Thu Nov 12 15:39:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Leroy X-Patchwork-Id: 84066 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 99F40A09D3; Thu, 12 Nov 2020 16:40:21 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A6F626004; Thu, 12 Nov 2020 16:39:27 +0100 (CET) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id D1165593A for ; Thu, 12 Nov 2020 16:39:23 +0100 (CET) Received: by mail-wr1-f66.google.com with SMTP id 23so6441596wrc.8 for ; Thu, 12 Nov 2020 07:39:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=My1OoZk7T+XYqyFJATletVCbJscOMV3gir4bjm/EEow=; b=YXfxmkImezcTo2uForCwOY5CQinWPBgBfKkL9z+QYhV0hSry79gPuYxZ//MHM5yZio G8vEKHDHbcvBE9nTb3XBhQ+IIegT+LUBryCSgZ1n37YXC2U+hAXFyi8WmTWWFQIZT92p oXKJzfRzM5FUPPFNlT/TbW86zY8smFt6sIVJrIQ1tT1QdDbcsO2lykpwJid6i/BYVDQB Oqu/g2c/INpkGqhnpSG5r96GWKjsQZPUOVQLlROO8eKqUEtHd+sWFthjzxxP3Q7djYfJ yFT1kugY0NpB9/ppucvjepOSwnMrbpv7R1KWNOA9jO4R3zsDftSFH0G2MPl6eneOOjfo xhHw== 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=My1OoZk7T+XYqyFJATletVCbJscOMV3gir4bjm/EEow=; b=KDX9yiWXGFeLKRHRTT4YMYH+aEzOPytIM5M5Yp46h/4SM/YBUz5pzKSe9yXi8ISUAM OuGXBLCFX/J8dX2M58vaSmJXnOLO3HwsDpsQPi/Ck38Dq1Fws/EHFhfxcfsj+u7eDGMl COm6oVfKk5XbJsmGdbz0uL5kifdG1wMFA4EEDcXc13zrLCaEkbFCNp5QeZrq4wDjySrZ 5QBLwKD2O+jjB8z30MuSTSQR1HsEAEsfeNJXj6cBRWUxiU2ez/M4xBz0CS6mjc/oLfE0 jAI/QBUvyD93hHnB5gVVkSh5ewOSyGeb/AQkyjrTgNA5GmQp1YSKuuQ6HOj48EmtHugN 1CbA== X-Gm-Message-State: AOAM533/AIRETBiSX7IxzqXXMfQFdYIVopXeFXTu5pYOel/q7Ow5hWPY zNDXpJKnx5ZVa0i2k2QSQJSgSg== X-Google-Smtp-Source: ABdhPJyCHIvbcFyawXK1YWHONSAVW1txN+yDczrYEAw1XSC5wDLqjHSHO49JW3uddCVndjPP174hRA== X-Received: by 2002:a05:6000:372:: with SMTP id f18mr107105wrf.149.1605195563661; Thu, 12 Nov 2020 07:39:23 -0800 (PST) Received: from bolet.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id g4sm6004938wrp.0.2020.11.12.07.39.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 07:39:22 -0800 (PST) From: Maxime Leroy To: Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , Olivier Matz Cc: dev@dpdk.org, Didier Pallard Date: Thu, 12 Nov 2020 16:39:10 +0100 Message-Id: <20201112153911.15044-3-maxime.leroy@6wind.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201112153911.15044-1-maxime.leroy@6wind.com> References: <20201112153911.15044-1-maxime.leroy@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 2/2] net/mlx5: fix Rx descriptor status returned value X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Didier Pallard One entry may contain several segments, so 'used' must be multiplied by number of segments per entry to properly reflect the queue usage. Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") Signed-off-by: Didier Pallard Signed-off-by: Maxime Leroy --- drivers/net/mlx5/mlx5_rxtx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 2733dcd3..f390dd66 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -463,6 +463,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) struct rxq_zip *zip = &rxq->zip; volatile struct mlx5_cqe *cqe; const unsigned int cqe_n = (1 << rxq->cqe_n); + const unsigned int sges_n = (1 << rxq->sges_n); const unsigned int cqe_cnt = cqe_n - 1; unsigned int cq_ci, used; @@ -488,7 +489,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) used += n; cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; } - used = RTE_MIN(used, cqe_n); + used = RTE_MIN(used * sges_n, cqe_n); return used; }