The ethtool manpage only gives a nebulous explanation:
rxvlan on|off
Specifies whether RX VLAN acceleration should be enabled
txvlan on|off
Specifies whether TX VLAN acceleration should be enabled
What exactly do the options accomplish, assuming you can enable them?
Apparently,
rxvlan
andtxvlan
are aliases for the kernel featuresrx-vlan-hw-parse
andtx-vlan-hw-insert
respectively (seeethtool.c
).In the kernel they are translated to the netdev features
NETIF_F_HW_VLAN_CTAG_RX_BIT
andNETIF_F_HW_VLAN_CTAG_TX_BIT
. (Seenet/core/ethtool.c
)To the best of my knowledge, the TX_BIT allows the NIC to add the VLAN tag during transmission without explicitly placing it in the packet. See the relevant code in the VLAN driver.
Similarly, when the RX_BIT is enabled, the NIC can strip the VLAN tag from incoming packets and let the driver place the information from the VLAN tag in the relevant skb.