I'm trying to use DPDK to disable VLAN (802.1q) hardware offloading on an Intel PRO/1000 MT Desktop (82540EM) adapter, but haven't been able to do so.
My setup is an Ubuntu 16.04 host running an Ubuntu 14.04 VM (using Vagrant/VirtualBox). I have three host-only adapters that connect the host and the VM, and on the VM eth1 and eth2 are DPDK-bound and eth3 is kernel-bound. All are using separate 82540EM adapters. I'm generating VLAN packets on the host using ostinato and sending them to the VM. The kernel-bound interface receives the packet with the VLAN header intact, but the DPDK interfaces seem to strip the VLAN. I've tried disabling the VLAN stripping with the rxmode configuration in a call to rte_eth_dev_configure(), and I've also tried disabling it with a call to rte_eth_dev_set_vlan_offload(). Neither seem to work. When I call rte_eth_dev_get_vlan_offload() to see how the device is configured, I always get the value 0 -- before trying to disable offloading and after trying to disable it. Something's not adding up for me here -- why is the VLAN offload status 0 (instead of one of the ETH_VLAN_*_OFFLOAD flags), but the VLAN tag is removed? Perhaps I have misunderstood something about this kind of NIC or how to configure it. Thanks in advance for any help! Best, Cody
