rx-vlan-offload 和 tx-vlan-offload ethtool 选项究竟有什么作用?

What exactly do the rx-vlan-offload and tx-vlan-offload ethtool options do?

ethtool 手册页只给出了模糊的解释:

   rxvlan on|off
          Specifies whether RX VLAN acceleration should be enabled

   txvlan on|off
          Specifies whether TX VLAN acceleration should be enabled

假设您可以启用这些选项,这些选项究竟有什么作用?

显然,rxvlantxvlan 分别是内核功能 rx-vlan-hw-parsetx-vlan-hw-insert 的别名(参见 ethtool.c)。

在内核中,它们被翻译成 netdev 特性 NETIF_F_HW_VLAN_CTAG_RX_BITNETIF_F_HW_VLAN_CTAG_TX_BIT。 (参见 net/core/ethtool.c

据我所知,TX_BIT 允许 NIC 在传输过程中添加 VLAN 标记,而无需将其显式放置在数据包中。参见VLAN driver.

中的相关代码

同样,当RX_BIT启用时,NIC可以从传入的数据包中剥离VLAN标签,让驱动程序将VLAN标签中的信息放入相关的skb中。