Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13ac34a8 authored by Veaceslav Falico's avatar Veaceslav Falico Committed by David S. Miller
Browse files

bonding: permit using arp_validate with non-ab modes



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: default avatarVeaceslav Falico <vfalico@redhat.com>
Acked-by: default avatarNikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3b7d636b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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:
+0 −4
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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
	},