Support vlan_group workaround implemented in XenServer kernels.
authorBen Pfaff <blp@nicira.com>
Wed, 16 Mar 2011 21:39:17 +0000 (14:39 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 16 Mar 2011 21:39:17 +0000 (14:39 -0700)
commit431488e6638d3fbb53d215fa10d2ff2d8f1c2824
tree0bf2a0c44cd5fbd2fa3718acaab4b5d8e91644ef
parent21dcb94fd5fbfda3b281cfcf124ab57802d77c23
Support vlan_group workaround implemented in XenServer kernels.

Some Linux network drivers support a feature called "VLAN acceleration",
associated with a data structure called a "vlan_group".  A vlan_group is,
abstractly, a dictionary that maps from a VLAN ID (in the range 0...4095)
to a VLAN device, that is, a Linux network device associated with a
particular VLAN, e.g. "eth0.9" for VLAN 9 on eth0.

Some drivers that support VLAN acceleration have bugs that fall roughly
into the following categories:

    * Some NICs strip VLAN tags on receive if no vlan_group is registered,
      so that the tag is completely lost.

    * Some drivers size their receive buffers based on whether a vlan_group
      is enabled, meaning that a maximum size packet with a VLAN tag will
      not fit if a vlan_group is not configured.

    * On transmit some drivers expect that VLAN acceleration will be used
      if it is available (which can only be done if a vlan_group is
      configured).  In these cases, the driver may fail to parse the packet
      and correctly setup checksum offloading and/or TSO.

The correct long term solution is to fix these driver bugs.  To cope until
then, we have prepared a patch to the Linux kernel network stack that works
around these problems.  This commit adds support for the workaround
implemented by that patch.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
INSTALL.Linux
acinclude.m4
datapath/vport-netdev.c
utilities/automake.mk
utilities/ovs-vlan-bug-workaround.8.in [new file with mode: 0644]
utilities/ovs-vlan-bug-workaround.c [new file with mode: 0644]
utilities/ovs-vlan-bugs.man [new file with mode: 0644]
utilities/ovs-vlan-test.8.in
xenserver/openvswitch-xen.spec
xenserver/opt_xensource_libexec_InterfaceReconfigure.py
xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py