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 DC81348A44 for ; Fri, 31 Oct 2025 15:37:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D53004065D; Fri, 31 Oct 2025 15:37:11 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id EF0B140150 for ; Fri, 31 Oct 2025 15:37:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761921430; 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=bYQ5WSCWbMgB3Fym+TCzbyYcQ7j2DZTJYJ6uhcBCiy8=; b=WvJyXlZ0lyNknoAXrKd04I7QyrvrgW1ASbEAJM3+RG7Rz0d9IZnETwII06FZUQ5+SA+Svr jyVeIuo+5V8cB/Wvfzz7srYpKKLeNocVplHP/DIdHfPZliB+20I7lYC8o73d2BWj3Yteyr Yho5ztAn0SlsjxehXplUWON/9jupcc8= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-L4_sbQz4MPuoTd6M9Ttq_w-1; Fri, 31 Oct 2025 10:37:07 -0400 X-MC-Unique: L4_sbQz4MPuoTd6M9Ttq_w-1 X-Mimecast-MFC-AGG-ID: L4_sbQz4MPuoTd6M9Ttq_w_1761921426 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 56A8B1800669; Fri, 31 Oct 2025 14:37:06 +0000 (UTC) Received: from rh.redhat.com (unknown [10.44.32.50]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A98BE180044F; Fri, 31 Oct 2025 14:37:04 +0000 (UTC) From: Kevin Traynor To: Bruce Richardson Cc: Ciara Loftus , dpdk stable Subject: patch 'net/intel: fix assumption about tag placement order' has been queued to stable release 24.11.4 Date: Fri, 31 Oct 2025 14:32:48 +0000 Message-ID: <20251031143421.324432-46-ktraynor@redhat.com> In-Reply-To: <20251031143421.324432-1-ktraynor@redhat.com> References: <20251031143421.324432-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 6kPg-fmo6FAU3MaOnik14xuE1n-4dyUkncz9JKq5UAA_1761921426 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true 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 24.11.4 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/05/25. 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 This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/3624bcf1ddfea8da6ed526319e44f980158076dd Thanks. Kevin --- >From 3624bcf1ddfea8da6ed526319e44f980158076dd Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Fri, 18 Jul 2025 16:43:12 +0100 Subject: [PATCH] net/intel: fix assumption about tag placement order [ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ] The specific placement of outer/inner VLAN tags in NIC descriptors is configurable. Therefore, remove the assumption that if the L2Tag2 field is filled in, that the L2Tag1 must also be. Instead, check the existing mbuf VLAN flags, and move tags and set flags as appropriate. This fixes an issue where, with QinQ packets with different Tag ethtypes (0x88a8 vs 0x8100), we get an mbuf reporting two valid tags, but only having had one tag stripped. Fixes: cc9d0456b870 ("i40e: support double vlan stripping and insertion") Fixes: 1e728b01120c ("net/iavf: rework Tx path") Fixes: e0dcf94a0d7f ("net/ice: support VLAN ops") Signed-off-by: Bruce Richardson Acked-by: Ciara Loftus --- drivers/net/i40e/i40e_rxtx.c | 10 +++++++--- drivers/net/iavf/iavf_rxtx.c | 12 +++++++----- drivers/net/ice/ice_rxtx.c | 10 +++++++--- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index 0392c41005..4b0b3d0074 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp) if (rte_le_to_cpu_16(rxdp->wb.qword2.ext_status) & (1 << I40E_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT)) { - mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ | - RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN; - mb->vlan_tci_outer = mb->vlan_tci; + if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) { + mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + } else { + /* if two tags, move Tag1 to outer tag field */ + mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ; + mb->vlan_tci_outer = mb->vlan_tci; + } mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_2); PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u", diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index cce4917a3f..8fdf0f92e2 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -1201,9 +1201,11 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb, if (rte_le_to_cpu_16(rxdp->wb.status_error1) & (1 << IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) { - mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | - RTE_MBUF_F_RX_QINQ | - RTE_MBUF_F_RX_VLAN_STRIPPED | - RTE_MBUF_F_RX_VLAN; - mb->vlan_tci_outer = mb->vlan_tci; + if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) { + mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + } else { + /* if two tags, move Tag1 to outer tag field */ + mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ; + mb->vlan_tci_outer = mb->vlan_tci; + } mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd); PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u", diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index f58df9bdfe..417dc80a3a 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -1686,7 +1686,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp) if (rte_le_to_cpu_16(rxdp->wb.status_error1) & (1 << ICE_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) { - mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ | - RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN; - mb->vlan_tci_outer = mb->vlan_tci; + if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) { + mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + } else { + /* if two tags, move Tag1 to outer tag field */ + mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ; + mb->vlan_tci_outer = mb->vlan_tci; + } mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd); PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u", -- 2.51.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-10-31 13:53:53.712831057 +0000 +++ 0046-net-intel-fix-assumption-about-tag-placement-order.patch 2025-10-31 13:53:52.148523718 +0000 @@ -1 +1 @@ -From 21168355589ea9edfcb2925f4952ecb05470f92f Mon Sep 17 00:00:00 2001 +From 3624bcf1ddfea8da6ed526319e44f980158076dd Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ] + @@ -17 +18,0 @@ -Cc: stable@dpdk.org @@ -22,3 +23,3 @@ - drivers/net/intel/i40e/i40e_rxtx.c | 10 +++++++--- - drivers/net/intel/iavf/iavf_rxtx.c | 12 +++++++----- - drivers/net/intel/ice/ice_rxtx.c | 10 +++++++--- + drivers/net/i40e/i40e_rxtx.c | 10 +++++++--- + drivers/net/iavf/iavf_rxtx.c | 12 +++++++----- + drivers/net/ice/ice_rxtx.c | 10 +++++++--- @@ -27,5 +28,5 @@ -diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c -index b149a4c127..50b74149e3 100644 ---- a/drivers/net/intel/i40e/i40e_rxtx.c -+++ b/drivers/net/intel/i40e/i40e_rxtx.c -@@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_desc *rxdp) +diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c +index 0392c41005..4b0b3d0074 100644 +--- a/drivers/net/i40e/i40e_rxtx.c ++++ b/drivers/net/i40e/i40e_rxtx.c +@@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp) @@ -46,5 +47,5 @@ -diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c -index 50adc7ea1a..982e16f929 100644 ---- a/drivers/net/intel/iavf/iavf_rxtx.c -+++ b/drivers/net/intel/iavf/iavf_rxtx.c -@@ -1185,9 +1185,11 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb, +diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c +index cce4917a3f..8fdf0f92e2 100644 +--- a/drivers/net/iavf/iavf_rxtx.c ++++ b/drivers/net/iavf/iavf_rxtx.c +@@ -1201,9 +1201,11 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb, @@ -67,5 +68,5 @@ -diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c -index 5e72c231f7..aa8b838955 100644 ---- a/drivers/net/intel/ice/ice_rxtx.c -+++ b/drivers/net/intel/ice/ice_rxtx.c -@@ -1836,7 +1836,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_flex_desc *rxdp) +diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c +index f58df9bdfe..417dc80a3a 100644 +--- a/drivers/net/ice/ice_rxtx.c ++++ b/drivers/net/ice/ice_rxtx.c +@@ -1686,7 +1686,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)