diff options
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9d77b1d7dca8..f1b0dbe58464 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1742,22 +1742,26 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) | |||
1742 | struct net_device *dev = skb->dev; | 1742 | struct net_device *dev = skb->dev; |
1743 | struct net_device *master = dev->master; | 1743 | struct net_device *master = dev->master; |
1744 | 1744 | ||
1745 | if (master && | 1745 | if (master) { |
1746 | (dev->priv_flags & IFF_SLAVE_INACTIVE)) { | 1746 | if (master->priv_flags & IFF_MASTER_ARPMON) |
1747 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && | 1747 | dev->last_rx = jiffies; |
1748 | skb->protocol == __constant_htons(ETH_P_ARP)) | 1748 | |
1749 | return 0; | 1749 | if (dev->priv_flags & IFF_SLAVE_INACTIVE) { |
1750 | 1750 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && | |
1751 | if (master->priv_flags & IFF_MASTER_ALB) { | 1751 | skb->protocol == __constant_htons(ETH_P_ARP)) |
1752 | if (skb->pkt_type != PACKET_BROADCAST && | ||
1753 | skb->pkt_type != PACKET_MULTICAST) | ||
1754 | return 0; | 1752 | return 0; |
1755 | } | ||
1756 | if (master->priv_flags & IFF_MASTER_8023AD && | ||
1757 | skb->protocol == __constant_htons(ETH_P_SLOW)) | ||
1758 | return 0; | ||
1759 | 1753 | ||
1760 | return 1; | 1754 | if (master->priv_flags & IFF_MASTER_ALB) { |
1755 | if (skb->pkt_type != PACKET_BROADCAST && | ||
1756 | skb->pkt_type != PACKET_MULTICAST) | ||
1757 | return 0; | ||
1758 | } | ||
1759 | if (master->priv_flags & IFF_MASTER_8023AD && | ||
1760 | skb->protocol == __constant_htons(ETH_P_SLOW)) | ||
1761 | return 0; | ||
1762 | |||
1763 | return 1; | ||
1764 | } | ||
1761 | } | 1765 | } |
1762 | return 0; | 1766 | return 0; |
1763 | } | 1767 | } |