As previously discussed on these lists, we are offering a set of
patches that enhance the support for VLAN over bonding. They are
independent from the last set sent by Amir for dynamic configuration
of bonding since it was not yet decided what would be the best
replacement for the ioctl hook we suggested.
The enhancement is in to areas:
1) Add support for slaves that are capable of VLAN hardware
acceleration offloading - We have found that for Gig adapters working
at line speed, this support reduces CPU usage by up to 12%. The basic
idea is to make the bond interface fully HW acceleration capable, and
take special care when passing an skb to a slave that is not
offloading capable ("un-accelerating" the skb).
2) Add support for tagging packets that are self generated by bonding,
e.g. TLB learning packets, ALB arp packets, etc.
Both features required exporting VLAN tag setting/getting
functionality by the 8021q module. In order to make the bonding and
8021q modules in dipendant, this support is exported via if_vlan.h as
inline functions that are used by both modules to reduce code
duplication. For the second feature it was also required to split the
arp_send functionality into arp_create and arp_xmit. This eliminates
code duplication too, and enables intermediate network drivers like
bonding and others to have a chance to tag ARP packets before sending
them. All other places in the kernel that use arp_send() will not
notice the change.
There are two sets of 6 patches each, one for 2.4 and one for 2.6.
They apply on top of latest netdev-2.4 and netdev-2.6 respectively.
Both have been tested for patch application and compilation.
Functionality and performance was tested on netdev-2.4.
| Shmulik Hen Advanced Network Services |
| Israel Design Center, Jerusalem |
| LAN Access Division, Platform Networking |
| Intel Communications Group, Intel corp. |