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 D484543CAD for ; Thu, 14 Mar 2024 01:12:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CADB742E40; Thu, 14 Mar 2024 01:12:14 +0100 (CET) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by mails.dpdk.org (Postfix) with ESMTP id 3B91240297 for ; Thu, 14 Mar 2024 01:12:14 +0100 (CET) Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-33e9623c3a8so286239f8f.0 for ; Wed, 13 Mar 2024 17:12:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710375134; x=1710979934; 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=dETu1Z0PUz7Xs7nZCIDWyVZ0IKfk8/z7IObPYEycBkg=; b=ngMqsoVBWiyAy8BmrIXrpm0tI7s2PPDQOEwpX7LOwPlm7uRZ91Px9r3SX2Acw8l8P9 GPwJ/D6iVB647W40hBXzQadOmBqCtx1lZNgG6PIsfaPGRUEY2jDsyyNVvDnlcLS93De1 9Sa7XRlCC8OQsgfjwjclvvv0O/S/gaP4L26VmbGx/cLaz05IGMCQge+MWMHRjuzkcyCW tY3y0QMER4hDRYRbVXQOW2mQQ0ICGAaPJ3h3FzZ2z7PQ9z3Ld2ldd4ZdLFEtx8ZS1s3f odumAeqR/8Cjs+j4CAz803a3/Jcc7GhXVSx9MBXk8d9vf1t3LXx/PmxSZTeoS/zztUcN Wkcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710375134; x=1710979934; 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=dETu1Z0PUz7Xs7nZCIDWyVZ0IKfk8/z7IObPYEycBkg=; b=c1x6wfm9sM16sdGQoQsDRv4Nu7usY91WLyGH027Q2cfOwIIREzQIZ5XEx9UYHbVv2E GWCgkXwI3L72erpv5aWzcfb+hRqJ1hZdHryl1RH61qH1bMx02P4+/c2WW4SY2zOQiJTg jqJlSKRVszQHwN+iDlIDGlfeBRjWF/gr8z+biSbs6JdD6NC8xC4Qtb8suWAwrxz7Mf4q lFugCz5hSjfnOIBeIvg9tHeK7zYPdyrnreeQRXMxwBXTDROoIJStb6+3Pe+aBBU/yu03 ZOSvrC9Mk2zcGqvBiFrNC2+1mvY4QrXuRSw19YL+hGWia5sHG9jdb6tiAJkb70rBlWAs 92CA== X-Forwarded-Encrypted: i=1; AJvYcCVsenMtpNwe4qWs38ATNrSBcteabGk8JVYOCjyMxFR9p3V8LyN7OOUxAE2OrzgBluPV7t3fCiYo95U0r/9wyJ4= X-Gm-Message-State: AOJu0YyUX29qrfe5oSppoiXjmTohTPvdsZ9AbQKxLfQYySzYChsM58/z 54GzmbhWH/TPwn8UWqENc5q7XpKXar/TbCDKYZK6LYd8/GWrhhS6 X-Google-Smtp-Source: AGHT+IHu5Rz2R8KrHRInSCsMrF8wIcZwNlDAzAdl3rgTmPUYHNQHDhJiziTxHP1UJFujunTi/fxqvw== X-Received: by 2002:adf:e88c:0:b0:33e:a1e3:87b3 with SMTP id d12-20020adfe88c000000b0033ea1e387b3mr85768wrm.41.1710375133751; Wed, 13 Mar 2024 17:12:13 -0700 (PDT) Received: from localhost ([137.220.120.171]) by smtp.gmail.com with ESMTPSA id h7-20020a056000000700b0033dec836ea6sm280575wrx.99.2024.03.13.17.12.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Mar 2024 17:12:13 -0700 (PDT) From: luca.boccassi@gmail.com To: Viacheslav Ovsiienko Cc: Dariusz Sosnowski , dpdk stable Subject: patch 'net/mlx5: fix error packets drop in regular Rx' has been queued to stable release 22.11.5 Date: Thu, 14 Mar 2024 00:09:37 +0000 Message-Id: <20240314000957.2810803-41-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240314000957.2810803-1-luca.boccassi@gmail.com> References: <20240307013159.1735343-102-luca.boccassi@gmail.com> <20240314000957.2810803-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.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/16/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/3032a40f28fa9cb423fee723e6c89a14d84fdee0 Thanks. Luca Boccassi --- >From 3032a40f28fa9cb423fee723e6c89a14d84fdee0 Mon Sep 17 00:00:00 2001 From: Viacheslav Ovsiienko Date: Tue, 20 Feb 2024 13:45:20 +0200 Subject: [PATCH] net/mlx5: fix error packets drop in regular Rx [ upstream commit ef296e8f6140ea469b50c7bfe73501b1c9ef86e1 ] When packet gets received with error it is reported in CQE structure and PMD analyzes the error syndrome and provides two options - either reset the entire queue for the critical errors, or just ignore the packet. The non-vectorized rx_burst did not ignore the non-critical error packets, and in case of packet length exceeding the mbuf data buffer length it took the next element in the queue WQE ring, resulting in CQE/WQE consume indices synchronization lost. Fixes: aa67ed308458 ("net/mlx5: ignore non-critical syndromes for Rx queue") Signed-off-by: Viacheslav Ovsiienko Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/mlx5_rx.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c index b41f7a51f5..56e5568f33 100644 --- a/drivers/net/mlx5/mlx5_rx.c +++ b/drivers/net/mlx5/mlx5_rx.c @@ -601,7 +601,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, * @param mprq * Indication if it is called from MPRQ. * @return - * 0 in case of empty CQE, MLX5_REGULAR_ERROR_CQE_RET in case of error CQE, + * 0 in case of empty CQE, + * MLX5_REGULAR_ERROR_CQE_RET in case of error CQE, * MLX5_CRITICAL_ERROR_CQE_RET in case of error CQE lead to Rx queue reset, * otherwise the packet size in regular RxQ, * and striding byte count format in mprq case. @@ -675,6 +676,11 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe, if (ret == MLX5_RECOVERY_ERROR_RET || ret == MLX5_RECOVERY_COMPLETED_RET) return MLX5_CRITICAL_ERROR_CQE_RET; + if (!mprq && ret == MLX5_RECOVERY_IGNORE_RET) { + *skip_cnt = 1; + ++rxq->cq_ci; + return MLX5_ERROR_CQE_MASK; + } } else { return 0; } @@ -928,19 +934,18 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_cnt]; len = mlx5_rx_poll_len(rxq, cqe, cqe_cnt, &mcqe, &skip_cnt, false); if (unlikely(len & MLX5_ERROR_CQE_MASK)) { + /* We drop packets with non-critical errors */ + rte_mbuf_raw_free(rep); if (len == MLX5_CRITICAL_ERROR_CQE_RET) { - rte_mbuf_raw_free(rep); rq_ci = rxq->rq_ci << sges_n; break; } + /* Skip specified amount of error CQEs packets */ rq_ci >>= sges_n; rq_ci += skip_cnt; rq_ci <<= sges_n; - idx = rq_ci & wqe_cnt; - wqe = &((volatile struct mlx5_wqe_data_seg *)rxq->wqes)[idx]; - seg = (*rxq->elts)[idx]; - cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_cnt]; - len = len & ~MLX5_ERROR_CQE_MASK; + MLX5_ASSERT(!pkt); + continue; } if (len == 0) { rte_mbuf_raw_free(rep); -- 2.39.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-03-14 00:09:22.571302258 +0000 +++ 0041-net-mlx5-fix-error-packets-drop-in-regular-Rx.patch 2024-03-14 00:09:20.633615618 +0000 @@ -1 +1 @@ -From ef296e8f6140ea469b50c7bfe73501b1c9ef86e1 Mon Sep 17 00:00:00 2001 +From 3032a40f28fa9cb423fee723e6c89a14d84fdee0 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit ef296e8f6140ea469b50c7bfe73501b1c9ef86e1 ] + @@ -18 +19,0 @@ -Cc: stable@dpdk.org @@ -27 +28 @@ -index 5bf1a679b2..cc087348a4 100644 +index b41f7a51f5..56e5568f33 100644 @@ -30 +31 @@ -@@ -613,7 +613,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, +@@ -601,7 +601,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, @@ -40 +41 @@ -@@ -697,6 +698,11 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe, +@@ -675,6 +676,11 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe, @@ -52,3 +53,3 @@ -@@ -971,19 +977,18 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) - cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_mask]; - len = mlx5_rx_poll_len(rxq, cqe, cqe_n, cqe_mask, &mcqe, &skip_cnt, false); +@@ -928,19 +934,18 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) + cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_cnt]; + len = mlx5_rx_poll_len(rxq, cqe, cqe_cnt, &mcqe, &skip_cnt, false); @@ -67 +68 @@ -- idx = rq_ci & wqe_mask; +- idx = rq_ci & wqe_cnt; @@ -70 +71 @@ -- cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_mask]; +- cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_cnt];