]> git.baikalelectronics.ru Git - kernel.git/commit
bonding: Fix stacked device detection in arp monitoring
authorVlad Yasevich <vyasevic@redhat.com>
Fri, 16 May 2014 21:20:38 +0000 (17:20 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 May 2014 02:29:05 +0000 (22:29 -0400)
commit69e2056e6d3d78d686e341634054edf18242ca68
tree60844a84ba8ca60a71ecb75eb496f8eb509c1ac4
parentc1b1ab303fe56cb8a32d800fa33e14ed4953fa68
bonding: Fix stacked device detection in arp monitoring

Prior to commit 78655dc345dbcbb25d642bac198b74f6bab3c948
bonding: support QinQ for bond arp interval

the arp monitoring code allowed for proper detection of devices
stacked on top of vlans.  Since the above commit, the
code can still detect a device stacked on top of single
vlan, but not a device stacked on top of Q-in-Q configuration.
The search will only set the inner vlan tag if the route
device is the vlan device.  However, this is not always the
case, as it is possible to extend the stacked configuration.

With this patch it is possible to provision devices on
top Q-in-Q vlan configuration that should be used as
a source of ARP monitoring information.

For example:
ip link add link bond0 vlan10 type vlan proto 802.1q id 10
ip link add link vlan10 vlan100 type vlan proto 802.1q id 100
ip link add link vlan100 type macvlan

Note:  This patch limites the number of stacked VLANs to 2,
just like before.  The original, however had another issue
in that if we had more then 2 levels of VLANs, we would end
up generating incorrectly tagged traffic.  This is no longer
possible.

Fixes: 78655dc345dbcbb25d642bac198b74f6bab3c948 (bonding: support QinQ for bond arp interval)
CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Veaceslav Falico <vfalico@redhat.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: Ding Tianhong <dingtianhong@huawei.com>
CC: Patric McHardy <kaber@trash.net>
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
drivers/net/bonding/bonding.h
include/linux/if_vlan.h
include/linux/netdevice.h
net/core/dev.c