X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=include%2Flinux%2Fnetdevice.h;h=13d6d4eb8b3af70b008be76f6fcf3fc23dc602cb;hp=ac4f50213bc3c4c0b38daa37fdbb76014cb32a89;hb=b0df3bd1e553e901ec7297267611a5db88240b38;hpb=a67ab2bde752b26be75d4b68ecead9a14692eac5 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ac4f50213bc3..13d6d4eb8b3a 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1015,7 +1015,8 @@ static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) } /* On bonding slaves other than the currently active slave, suppress - * duplicates except for 802.3ad ETH_P_SLOW and alb non-mcast/bcast. + * duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and + * ARP on active-backup slaves with arp_validate enabled. */ static inline int skb_bond_should_drop(struct sk_buff *skb) { @@ -1024,6 +1025,10 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) if (master && (dev->priv_flags & IFF_SLAVE_INACTIVE)) { + if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && + skb->protocol == __constant_htons(ETH_P_ARP)) + return 0; + if (master->priv_flags & IFF_MASTER_ALB) { if (skb->pkt_type != PACKET_BROADCAST && skb->pkt_type != PACKET_MULTICAST)