Hi All, I am seeing multiple issues with net_ice where VLAN mode changes after a device reset or an ungraceful application exit, which then breaks RX VLAN offloading.
The same NIC and the same DDP package behave correctly after a cold start, but switch to a different VLAN mode after either port reset (or rte_eth_dev_reset()) in testpmd or after killing the application with SIGKILL. After that, VLAN tags appear to be stripped in hardware, but VLAN metadata is no longer delivered to vlan_tci in mbuf structure. *My setup is the following:* Debian Bookworm Ethernet controller: Intel(R) Ethernet Controller E810-C for QSFP Firmware (NVM): 4.91 and 4.51 were tested DDP: ICE COMMS Package 1.3.55.0 and 1.3.50.0 were tested DPDK: 25.11 *First scenario: port reset in testpmd* > :~$ sudo ./DPDK/dpdk-25.11.0/dpdk-25.11/build/app/dpdk-testpmd -l 0-15 -a > 0000:04:00.0 -a 0000:04:00.1 -- -i > EAL: Detected CPU lcores: 90 > EAL: Detected NUMA nodes: 1 > EAL: Detected static linkage of DPDK > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket > EAL: Selected IOVA mode 'PA' > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (double VLAN mode) > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (double VLAN mode) > Interactive-mode selected > Warning: NUMA should be configured manually by using --port-numa-config > and --ring-numa-config parameters along with --numa. > testpmd: create a new mbuf pool <mb_pool_0>: n=267456, size=2176, socket=0 > testpmd: preferred mempool ops selected: ring_mp_mc > Configuring Port 0 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 0). > Configuring Port 1 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 1). > Port 0: link state change event > Port 0: link state change event > Checking link statuses... > Done > testpmd> port stop all > Stopping ports... > Checking link statuses... > Done > testpmd> port reset all > Resetting ports... > ETHDEV: Device with port_id=0 already stopped > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (single VLAN mode) > ETHDEV: Device with port_id=1 already stopped > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (single VLAN mode) After this reset, RX VLAN offload no longer behaves correctly. VLAN tags are stripped from packets, but VLAN TCI information is missing in the received mbufs vlan_tci fields. *Second scenario: killing the application with SIGKILL* > :~$ sudo ./DPDK/dpdk-25.11.0/dpdk-25.11/build/app/dpdk-testpmd -l 0-15 -a > 0000:04:00.0 -a 0000:04:00.1 -- -i > EAL: Detected CPU lcores: 90 > EAL: Detected NUMA nodes: 1 > EAL: Detected static linkage of DPDK > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket > EAL: Selected IOVA mode 'PA' > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (double VLAN mode) > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (double VLAN mode) > Interactive-mode selected > Warning: NUMA should be configured manually by using --port-numa-config > and --ring-numa-config parameters along with --numa. > testpmd: create a new mbuf pool <mb_pool_0>: n=267456, size=2176, socket=0 > testpmd: preferred mempool ops selected: ring_mp_mc > Configuring Port 0 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 0). > Configuring Port 1 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 1). > Port 0: link state change event > Port 0: link state change event > Checking link statuses... > Done > testpmd> Killed > > :~$ sudo ./DPDK/dpdk-25.11.0/dpdk-25.11/build/app/dpdk-testpmd -l 0-15 -a > 0000:04:00.0 -a 0000:04:00.1 -- -i > EAL: Detected CPU lcores: 90 > EAL: Detected NUMA nodes: 1 > EAL: Detected static linkage of DPDK > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket > EAL: Selected IOVA mode 'PA' > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (single VLAN mode) > ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.55.0, ICE COMMS > Package (single VLAN mode) > Interactive-mode selected > Warning: NUMA should be configured manually by using --port-numa-config > and --ring-numa-config parameters along with --numa. > testpmd: create a new mbuf pool <mb_pool_0>: n=267456, size=2176, socket=0 > testpmd: preferred mempool ops selected: ring_mp_mc > Configuring Port 0 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 0). > Configuring Port 1 (socket 0) > ICE_DRIVER: ice_set_rx_function(): Using Vector AVX2 (port 1). > Port 0: link state change event > Port 0: link state change event > Checking link statuses... > Done > testpmd> At this point the behavior is the same as after port reset: RX VLAN offloading is broken. The observed RX VLAN offloading behavior then is very similar to the issue described in the following bug report, where VLAN stripping works but metadata is missing: https://bugs.dpdk.org/show_bug.cgi?id=1677 The trigger is different, but the resulting VLAN RX offload behavior appears to be the same. I can reproduce this reliably and can provide more logs or information if needed. Best regards, Taras

