Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bonding: allow xmit hash policy change while bond dev is up

Since the xmit_hash_policy pointer is always valid and not dependent on
anything, we can change it while the bond device is up and running. The
only downside would be the out of order packets but that is a small price
to pay.

Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Nikolay Aleksandrov and committed by
David S. Miller
53edee2c 1a9561a3

+1 -9
+1 -9
drivers/net/bonding/bond_sysfs.c
··· 383 383 int new_value, ret = count; 384 384 struct bonding *bond = to_bond(d); 385 385 386 - if (bond->dev->flags & IFF_UP) { 387 - pr_err("%s: Interface is up. Unable to update xmit policy.\n", 388 - bond->dev->name); 389 - ret = -EPERM; 390 - goto out; 391 - } 392 - 393 386 new_value = bond_parse_parm(buf, xmit_hashtype_tbl); 394 387 if (new_value < 0) { 395 388 pr_err("%s: Ignoring invalid xmit hash policy value %.*s.\n", 396 389 bond->dev->name, 397 390 (int)strlen(buf) - 1, buf); 398 391 ret = -EINVAL; 399 - goto out; 400 392 } else { 401 393 bond->params.xmit_policy = new_value; 402 394 bond_set_mode_ops(bond, bond->params.mode); ··· 396 404 bond->dev->name, 397 405 xmit_hashtype_tbl[new_value].modename, new_value); 398 406 } 399 - out: 407 + 400 408 return ret; 401 409 } 402 410 static DEVICE_ATTR(xmit_hash_policy, S_IRUGO | S_IWUSR,