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 05D2E489EF for ; Mon, 27 Oct 2025 17:21:23 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F410240655; Mon, 27 Oct 2025 17:21:22 +0100 (CET) Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mails.dpdk.org (Postfix) with ESMTP id 91D614065F for ; Mon, 27 Oct 2025 17:21:19 +0100 (CET) Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4770c2cd96fso14057395e9.3 for ; Mon, 27 Oct 2025 09:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761582079; x=1762186879; 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=Hhfl41/rfAmeLpS8u6I5NvFw53TrQncSv8uKWHEekg0=; b=mQnrSRjho+c6Nbnj9G3RNzBmbe+OF/zfOJ/C51oIf2JNz/77XbgqSnLZILzqhLbD1Q NwA6S5cXZcvuAFJXeMXa24Mmc1FM100LFvY34uA7swSYyB3/TS7gtNgCRWjE9kLbJK9q gaPIzzccd9kCW5Eol6FylFCcVOcnw2qK4Q9RrlpWpMe+oXzUq2SVxciwyhWUBNpr4Ctz uWBGshDo9RJx3okV0GOjDkdDzV7BKQDE/RM7NsT19G4y1r/y+J2hR/LRyPRCTGrjine+ qOtSD1UkSy4d0MpmE0Ot4WErvM61LU5HnL8DWRLHypYJZtoROMw4gk/nG/qsIcPH+TPa Sq4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761582079; x=1762186879; 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=Hhfl41/rfAmeLpS8u6I5NvFw53TrQncSv8uKWHEekg0=; b=Y9uP5U7XrLAoMdVBhvhpPKg8B3rRqrxsYxHCyfuQ0upJ/jc68vAAMJF6avbRr0qosY gNfEhip2vz5jrGBXbYa3+UEOklxYvoSD/YPW88evyd8Kov7p3UnlV5xO31tZyFwYDX82 5dL0duzMzkaTpY5ya1paGnJoGFzpuilKWsA+xuTMRHh2v9oxaxNDqQaeyYde3EH4GRWQ oMLVgf6oWE8dmOzP19wVqAfbuPN66/65HFMw8sAoi7nQ4GA4tInnhnBlSCbcYePn/fnh wOV96FhZmWhiSK5bQa8rsKCTcnK99hgJkGxL1SSk5Aj6OZ1YnfwSbOIveCo4zO2kevhu TnKQ== X-Forwarded-Encrypted: i=1; AJvYcCXT6jbgX+IHWeSLaVRAq1AqvvuASKx/ZNLWRvW082MM4vSdYCEUSErUDjCPDpjrU8xdTJM4+V0=@dpdk.org X-Gm-Message-State: AOJu0Yzq05CZp1K1wtjK0io6jHPpNHMuhkFOiRU7Cgt2oCE+jkb0+7z4 UfT/y1jCz5BVtZdwTgm75ZznBrQ+fMAuDIDV0pPn2ib9KRJ9YCE4bUSX+ljYyA== X-Gm-Gg: ASbGncuwlw39h7GTCeO6te6Ey/C4OFaTJBP6hAilhWtQy8ADVFWSzdDrv5BU5nyENGt VLFrXC6yiCB7/9h4apPy7Z3FBm4t+k+nQrQCj/KgA6IZNVls9Zy+e6pJTC3sWrnUQsTaVC3bpHJ 71/uERJ29GANMdPHNMvTSnx78SLYGUlB5BZ+6i/3pbSG1CM0R4elvh+Wh5b0MxM8eWWhMtwFjeY iBtYn8INnukX6/qvM7W5amc4uu1qckLOYdLVdmsCdzcK3TlP80ESev08ZkBb2rR1cQgXU4MEoml FN3sQCLpHxI9iRlup+vfc/rJKGAOV6L61P+wDRkYFk+p2p7UQSPyP2fVzAEicNtM7b6dwCTLyyq BRP0av1XaIE6uMVuJDDFkvT+QLk6ZbQyux43yAB9O8xkxGfdCPpQEWB7gCC6MrDia7vw2/BY/qs 83jJ84xA== X-Google-Smtp-Source: AGHT+IGE/eol+wPl5DtQdc8QND7hp3LWlrKFQ80kuNo0b843FS6j8GcwuINJfYjbV4HkDiKIibf0Eg== X-Received: by 2002:a05:600c:45c7:b0:471:c04:a352 with SMTP id 5b1f17b1804b1-47717df6bf2mr2487145e9.4.1761582079053; Mon, 27 Oct 2025 09:21:19 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:6fc5:c3bc:147e:832c]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-475dd01dfc7sm70776495e9.2.2025.10.27.09.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Oct 2025 09:21:18 -0700 (PDT) From: luca.boccassi@gmail.com To: Bruce Richardson Cc: Ciara Loftus , dpdk stable Subject: patch 'net/intel: fix assumption about tag placement order' has been queued to stable release 22.11.11 Date: Mon, 27 Oct 2025 16:19:02 +0000 Message-ID: <20251027162001.3710450-24-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251027162001.3710450-1-luca.boccassi@gmail.com> References: <20251027162001.3710450-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.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 10/29/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/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/c093725ca89688e1dcf44c477f9c73e25be8ab37 Thanks. Luca Boccassi --- >From c093725ca89688e1dcf44c477f9c73e25be8ab37 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 55985e7e37..952ccf2083 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp) #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC 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", rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_1), diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index 1f82d1cf3f..4418b620c4 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -1131,11 +1131,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb, #ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC 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", rte_le_to_cpu_16(rxdp->wb.l2tag2_1st), diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index 0814c79bde..bfbce8f151 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -1658,9 +1658,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp) #ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC 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", rte_le_to_cpu_16(rxdp->wb.l2tag2_1st), -- 2.47.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-10-27 15:54:35.758189805 +0000 +++ 0024-net-intel-fix-assumption-about-tag-placement-order.patch 2025-10-27 15:54:34.791949450 +0000 @@ -1 +1 @@ -From 21168355589ea9edfcb2925f4952ecb05470f92f Mon Sep 17 00:00:00 2001 +From c093725ca89688e1dcf44c477f9c73e25be8ab37 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,6 +28,6 @@ -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 -@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_desc *rxdp) - #ifndef RTE_NET_INTEL_USE_16BYTE_DESC +diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c +index 55985e7e37..952ccf2083 100644 +--- a/drivers/net/i40e/i40e_rxtx.c ++++ b/drivers/net/i40e/i40e_rxtx.c +@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp) + #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC @@ -48,6 +49,6 @@ -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 -@@ -1184,11 +1184,13 @@ 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 1f82d1cf3f..4418b620c4 100644 +--- a/drivers/net/iavf/iavf_rxtx.c ++++ b/drivers/net/iavf/iavf_rxtx.c +@@ -1131,11 +1131,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb, + #ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC @@ -71,6 +72,6 @@ -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 -@@ -1835,9 +1835,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_flex_desc *rxdp) - #ifndef RTE_NET_INTEL_USE_16BYTE_DESC +diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c +index 0814c79bde..bfbce8f151 100644 +--- a/drivers/net/ice/ice_rxtx.c ++++ b/drivers/net/ice/ice_rxtx.c +@@ -1658,9 +1658,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp) + #ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC