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 81D7E463FD;
Mon, 17 Mar 2025 08:40:34 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
by mails.dpdk.org (Postfix) with ESMTP id 230A0402BB;
Mon, 17 Mar 2025 08:40:34 +0100 (CET)
Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178])
by mails.dpdk.org (Postfix) with ESMTP id 081F740291
for ; Mon, 17 Mar 2025 08:40:33 +0100 (CET)
Received: by inbox.dpdk.org (Postfix, from userid 33)
id E282846406; Mon, 17 Mar 2025 08:40:32 +0100 (CET)
From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [DPDK/ethdev Bug 1677] E810 VLAN Stripping Offload broken with
multiple RX queues
Date: Mon, 17 Mar 2025 07:40:32 +0000
X-Bugzilla-Reason: AssignedTo
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: DPDK
X-Bugzilla-Component: ethdev
X-Bugzilla-Version: 24.11
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: roemerthorben@web.de
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: Normal
X-Bugzilla-Assigned-To: dev@dpdk.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform
op_sys bug_status bug_severity priority component assigned_to reporter
target_milestone
Message-ID:
Content-Type: multipart/alternative; boundary=17421972320.8Aa61.1848440
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://bugs.dpdk.org/
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
MIME-Version: 1.0
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dev-bounces@dpdk.org
--17421972320.8Aa61.1848440
Date: Mon, 17 Mar 2025 08:40:32 +0100
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://bugs.dpdk.org/
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
https://bugs.dpdk.org/show_bug.cgi?id=3D1677
Bug ID: 1677
Summary: E810 VLAN Stripping Offload broken with multiple RX
queues
Product: DPDK
Version: 24.11
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: ethdev
Assignee: dev@dpdk.org
Reporter: roemerthorben@web.de
Target Milestone: ---
## Overwiew
When using net/ice with E810 NICs and multiple RX queues, hardware VLAN
stripping seems to be working inconsistently, leading to missing VLAN
information for some received packets.
## Setup + Build
* x86-build on Debian Bookworm
* DPDK 24.11 and current main (2025-03-14,
7d6c28c9199351805e693e9b8f58f60e6f51c2ab) were tested
* E810 NIC with firmware 4.0 and 4.6 were tested
* ice DDP (1.3.30.0, ICE OS Default Package (double VLAN mode)) and (1.3.46=
.0,
ICE COMMS package (double VLAN mode)) were tested
* AVX2 Vector Rx is chosen by ice driver ("ICE_DRIVER: ice_set_rx_function(=
):
Using AVX2 OFFLOAD Vector Rx (port 0)")
## Steps to Reproduce
1. Start testpmd with two rx queues:
./dpdk-testpmd -- -i --enable-hw-vlan-strip --rxq 2 --txq 2
testpmd> show port 0 rx_offload configuration
Rx Offloading Configuration of port 0 :
Port : VLAN_STRIP RSS_HASH
Queue[ 0] : VLAN_STRIP RSS_HASH
Queue[ 1] : VLAN_STRIP RSS_HASH
testpmd> set verbose 1
Change verbose level from 0 to 1
testpmd> start
2. Send multiple IPv4+UDP packets with VLAN 100 and different destination IP
addresses until packets for both queues are received. testpmd output:
src=3DXX:XX:XX:XX:XX:XX - dst=3DYY:YY:YY:YY:YY:YY - pool=3Dmb_pool_0 - type=
=3D0x0800 -
length=3D60 - nb_segs=3D1 - RSS hash=3D0xfd40ac19 - RSS queue=3D0x1 - VLAN =
tci=3D0x64 -
hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER L3_IPV4
L4_UDP - l2_len=3D14 - l3_len=3D20 - l4_len=3D8 - Destination UDP port=3D1=
234 -
Receive queue=3D0x1
ol_flags: RTE_MBUF_F_RX_VLAN RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_=
GOOD
RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_VLAN_STRIPPED
RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD=20
src=3DXX:XX:XX:XX:XX:XX - dst=3DYY:YY:YY:YY:YY:YY - pool=3Dmb_pool_0 - type=
=3D0x0800 -
length=3D60 - nb_segs=3D1 - RSS hash=3D0x91fa772a - RSS queue=3D0x0 - hw pt=
ype:
L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER L3_IPV4 L4_UDP -
l2_len=3D14 - l3_len=3D20 - l4_len=3D8 - Destination UDP port=3D1234 - Rece=
ive
queue=3D0x0
ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD
RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD=20
3. The mbuf for the packet received by queue 0x1 (first packet displayed he=
re)
is looking as expected:
* `RTE_MBUF_F_RX_VLAN_STRIPPED` is set in `ol_flags`
* `VLAN tci` is 0x64=3D100=20
* `type` (ethertype) is 0x0800 becase VLAN header was stripped, leaving
0x0800=3DIPv4.
The mbuf for the second packet, received by queue 0x0, looks broken: `ol_fl=
ags`
does not contain `RTE_MBUF_F_RX_VLAN_STRIPPED` and `VLAN tci` is not set, w=
hich
indicates that the VLAN was not stripped. But `type` (ethertype) is still
0x0800, as if the VLAN header had been stripped. If no VLAN was stripped, t=
he
type should be 0x8100. If the VLAN was stripped, `ol_flags` and `VLAN tci`
should be set. This inconsistency means that the VLAN information was
completely lost and can not be recovered by the userspace application for
packets received by queue 0x0.
## Additional Information
The issue is also present in a custom user space application, so it seems
unlikely to be an error in testpmd.
According to ice.ini in docs/, the driver should fully support VLAN Strippi=
ng
even in vector paths.
The issue occurs since commit
http://git.dpdk.org/dpdk/commit/drivers/net/ice?id=3D882ed13a2a8c3b5cba48c1=
5af710bf09d445094a.
Before that (or if reverted), no VLAN is stripped but the mbuf is consisten=
t at
least (type 0x8100).
--=20
You are receiving this mail because:
You are the assignee for the bug.=
--17421972320.8Aa61.1848440
Date: Mon, 17 Mar 2025 08:40:32 +0100
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://bugs.dpdk.org/
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
E810 VLAN Stripping Offload broken with multiple RX queues
Product
DPDK
Version
24.11
Hardware
x86
OS
Linux
Status
UNCONFIRMED
Severity
normal
Priority
Normal
Component
ethdev
Assignee
dev@dpdk.org
Reporter
roemerthorben@web.de
Target Milestone
---
## Overwiew
When using net/ice with E810 NICs and multiple RX queues, hardware VLAN
stripping seems to be working inconsistently, leading to missing VLAN
information for some received packets.
## Setup + Build
* x86-build on Debian Bookworm
* DPDK 24.11 and current main (2025-03-14,
7d6c28c9199351805e693e9b8f58f60e6f51c2ab) were tested
* E810 NIC with firmware 4.0 and 4.6 were tested
* ice DDP (1.3.30.0, ICE OS Default Package (double VLAN mode)) and (1.3.46=
.0,
ICE COMMS package (double VLAN mode)) were tested
* AVX2 Vector Rx is chosen by ice driver ("ICE_DRIVER: ice_set_rx_func=
tion():
Using AVX2 OFFLOAD Vector Rx (port 0)")
## Steps to Reproduce
1. Start testpmd with two rx queues:
./dpdk-testpmd -- -i --enable-hw-vlan-strip --rxq 2 --txq 2
testpmd> show port 0 rx_offload configuration
Rx Offloading Configuration of port 0 :
Port : VLAN_STRIP RSS_HASH
Queue[ 0] : VLAN_STRIP RSS_HASH
Queue[ 1] : VLAN_STRIP RSS_HASH
testpmd> set verbose 1
Change verbose level from 0 to 1
testpmd> start
2. Send multiple IPv4+UDP packets with VLAN 100 and different destination IP
addresses until packets for both queues are received. testpmd output:
src=3DXX:XX:XX:XX:XX:XX - dst=3DYY:YY:YY:YY:YY:YY - pool=3Dmb_pool_0 - type=
=3D0x0800 -
length=3D60 - nb_segs=3D1 - RSS hash=3D0xfd40ac19 - RSS queue=3D0x1 - VLAN =
tci=3D0x64 -
hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER L3_IPV4
L4_UDP - l2_len=3D14 - l3_len=3D20 - l4_len=3D8 - Destination UDP port=3D1=
234 -
Receive queue=3D0x1
ol_flags: RTE_MBUF_F_RX_VLAN RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_=
GOOD
RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_VLAN_STRIPPED
RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD=20
src=3DXX:XX:XX:XX:XX:XX - dst=3DYY:YY:YY:YY:YY:YY - pool=3Dmb_pool_0 - type=
=3D0x0800 -
length=3D60 - nb_segs=3D1 - RSS hash=3D0x91fa772a - RSS queue=3D0x0 - hw pt=
ype:
L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER L3_IPV4 L4_UDP -
l2_len=3D14 - l3_len=3D20 - l4_len=3D8 - Destination UDP port=3D1234 - Rece=
ive
queue=3D0x0
ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD
RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD=20
3. The mbuf for the packet received by queue 0x1 (first packet displayed he=
re)
is looking as expected:
* `RTE_MBUF_F_RX_VLAN_STRIPPED` is set in `ol_flags`
* `VLAN tci` is 0x64=3D100=20
* `type` (ethertype) is 0x0800 becase VLAN header was stripped, leaving
0x0800=3DIPv4.
The mbuf for the second packet, received by queue 0x0, looks broken: `ol_fl=
ags`
does not contain `RTE_MBUF_F_RX_VLAN_STRIPPED` and `VLAN tci` is not set, w=
hich
indicates that the VLAN was not stripped. But `type` (ethertype) is still
0x0800, as if the VLAN header had been stripped. If no VLAN was stripped, t=
he
type should be 0x8100. If the VLAN was stripped, `ol_flags` and `VLAN tci`
should be set. This inconsistency means that the VLAN information was
completely lost and can not be recovered by the userspace application for
packets received by queue 0x0.
## Additional Information
The issue is also present in a custom user space application, so it seems
unlikely to be an error in testpmd.
According to ice.ini in docs/, the driver should fully support VLAN Strippi=
ng
even in vector paths.
The issue occurs since commit
http://git.dpdk.org/dpdk/commit/drivers/net/=
ice?id=3D882ed13a2a8c3b5cba48c15af710bf09d445094a.
Before that (or if reverted), no VLAN is stripped but the mbuf is consisten=
t at
least (type 0x8100).