diff options
-rw-r--r-- | drivers/net/bonding/bond_main.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 12948b33451a..12861e37d526 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2155,8 +2155,13 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave) rt = ip_route_output(dev_net(bond->dev), targets[i], 0, RTO_ONLINK, 0); if (IS_ERR(rt)) { - pr_debug("%s: no route to arp_ip_target %pI4\n", - bond->dev->name, &targets[i]); + /* there's no route to target - try to send arp + * probe to generate any traffic (arp_validate=0) + */ + if (bond->params.arp_validate && net_ratelimit()) + pr_warn("%s: no route to arp_ip_target %pI4 and arp_validate is set\n", + bond->dev->name, &targets[i]); + bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], 0, 0); continue; } |