Skip to content

Commit

Permalink
bonding: permit using arp_validate with non-ab modes
Browse files Browse the repository at this point in the history
Currently it's disabled because it's sometimes hard, in typical configs, to
make it work - because of the nature how the loadbalance modes work - as
it's hard to deliver valid arp replies to correct slaves by the switch.

However we still can use arp_validation in loadbalance with several other
configs, per example with arp_validate == 2 for backup with one broadcast
domain, without the switch(es) doing any balancing - this way we'd be (a
bit more) sure that the slave is up.

So, enable it to let users decide which one works/suits them best. Also
correct the mode limitation from BOND_OPT_ARP_VALIDATE.

CC: Nikolay Aleksandrov <nikolay@redhat.com>
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Acked-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Veaceslav Falico authored and David S. Miller committed Feb 18, 2014
1 parent 3b7d636 commit 13ac34a
Showing 3 changed files with 5 additions and 8 deletions.
6 changes: 3 additions & 3 deletions Documentation/networking/bonding.txt
Original file line number Diff line number Diff line change
@@ -270,9 +270,9 @@ arp_ip_target
arp_validate

Specifies whether or not ARP probes and replies should be
validated in the active-backup mode. This causes the ARP
monitor to examine the incoming ARP requests and replies, and
only consider a slave to be up if it is receiving the
validated in any mode that supports arp monitoring. This causes
the ARP monitor to examine the incoming ARP requests and replies,
and only consider a slave to be up if it is receiving the
appropriate ARP traffic.

Possible values are:
4 changes: 0 additions & 4 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
@@ -4183,10 +4183,6 @@ static int bond_check_params(struct bond_params *params)
}

if (arp_validate) {
if (bond_mode != BOND_MODE_ACTIVEBACKUP) {
pr_err("arp_validate only supported in active-backup mode\n");
return -EINVAL;
}
if (!arp_interval) {
pr_err("arp_validate requires arp_interval\n");
return -EINVAL;
3 changes: 2 additions & 1 deletion drivers/net/bonding/bond_options.c
Original file line number Diff line number Diff line change
@@ -151,7 +151,8 @@ static struct bond_option bond_opts[] = {
.id = BOND_OPT_ARP_VALIDATE,
.name = "arp_validate",
.desc = "validate src/dst of ARP probes",
.unsuppmodes = BOND_MODE_ALL_EX(BIT(BOND_MODE_ACTIVEBACKUP)),
.unsuppmodes = BIT(BOND_MODE_8023AD) | BIT(BOND_MODE_TLB) |
BIT(BOND_MODE_ALB),
.values = bond_arp_validate_tbl,
.set = bond_option_arp_validate_set
},

0 comments on commit 13ac34a

Please sign in to comment.