Subject: [bonding] Enhance support for VLAN over bonding

From: Shmuel Hen <[email-masked]>
Date: Thu, 22 Jan 2004 17:55:49 +0200

Hi,

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.  |