aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r--drivers/net/bonding/bond_main.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 257ee7f05645..3fe81cdbd8fb 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2255,15 +2255,16 @@ int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond,
2255 struct arphdr *arp = (struct arphdr *)skb->data; 2255 struct arphdr *arp = (struct arphdr *)skb->data;
2256 unsigned char *arp_ptr; 2256 unsigned char *arp_ptr;
2257 __be32 sip, tip; 2257 __be32 sip, tip;
2258 int alen; 2258 int alen, is_arp = skb->protocol == __cpu_to_be16(ETH_P_ARP);
2259 2259
2260 slave->last_arp_rx = jiffies; 2260 if (!slave_do_arp_validate(bond, slave)) {
2261 2261 if ((slave_do_arp_validate_only(bond, slave) && is_arp) ||
2262 if (skb->protocol != __cpu_to_be16(ETH_P_ARP)) 2262 !slave_do_arp_validate_only(bond, slave))
2263 slave->last_arp_rx = jiffies;
2263 return RX_HANDLER_ANOTHER; 2264 return RX_HANDLER_ANOTHER;
2264 2265 } else if (!is_arp) {
2265 if (!slave_do_arp_validate(bond, slave)) 2266 return RX_HANDLER_ANOTHER;
2266 goto out_unlock; 2267 }
2267 2268
2268 alen = arp_hdr_len(bond->dev); 2269 alen = arp_hdr_len(bond->dev);
2269 2270