diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 30 | 
1 files changed, 17 insertions, 13 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9d77b1d7dca..f1b0dbe5846 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)  	struct net_device *dev = skb->dev;  	struct net_device *master = dev->master; -	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) { +		if (master->priv_flags & IFF_MASTER_ARPMON) +			dev->last_rx = jiffies; -		if (master->priv_flags & IFF_MASTER_ALB) { -			if (skb->pkt_type != PACKET_BROADCAST && -			    skb->pkt_type != PACKET_MULTICAST) +		if (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_8023AD && -		    skb->protocol == __constant_htons(ETH_P_SLOW)) -			return 0; -		return 1; +			if (master->priv_flags & IFF_MASTER_ALB) { +				if (skb->pkt_type != PACKET_BROADCAST && +				    skb->pkt_type != PACKET_MULTICAST) +					return 0; +			} +			if (master->priv_flags & IFF_MASTER_8023AD && +			    skb->protocol == __constant_htons(ETH_P_SLOW)) +				return 0; + +			return 1; +		}  	}  	return 0;  }  |