dropped packets with bonding and 8021q

From: Michael Walle
Date: Wed Aug 19 2009 - 06:39:47 EST



Hi,

i have some strange bonding and vlan configuration. The bonding interface
is in active-standby mode and i want to send and receive raw ethernet
frames on _both_ enslaved interfaces. Additionally the frames are tagged
with a vlan id. So one config could be:

# modprobe bonding mode=1
# modprobe 8021q
# ifenslave bond0 eth1
# ifenslave bond0 eth2
# vconfig add eth1 10
# vconfig add eth2 20
# vconfig add bond0 1000

# [activate bonding active slave etc..]

I use raw/dgram sockets (AF_PACKET) with eth1.10 and eth2.20 (or dump the
frames with tcpdump).

As long as i don't use the bonding module everything works as expected.
But if the physical interfaces are enslaved, frames received on the
standby device will be dropped.

The network driver is e1000. So the hardware acceleration for tagged VLAN
frames gets used and the frame gets through __vlan_hwaccel_rx() in the
receiving path. And there it seems to get dropped by
skb_bond_should_drop().

On the "normal" receive path there was a patch by Joe Eykholt that allows
to receive frames on the physical interface even if it is enslaved and not
active (git commit 0d7a3681232f545).

Shouldn't __vlan_hwaccel_rx() (in net/8021q/vlan_core.c) be patched in the
same way to allow reception on inactive enslaved interfaces?

Thanks,
Michael

PS. could you please cc me, as i'm not subscribed to the ml.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/