]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
bonding: allow xmit hash policy change while bond dev is up
authorNikolay Aleksandrov <nikolay@redhat.com>
Fri, 24 May 2013 00:59:47 +0000 (00:59 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 28 May 2013 06:27:14 +0000 (23:27 -0700)
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>
drivers/net/bonding/bond_sysfs.c

index d7434e0a610e925e6a8b6de206856b37b4fd0375..3d269a52789ceeac454e66e0dd6fdc87211446f9 100644 (file)
@@ -383,20 +383,12 @@ static ssize_t bonding_store_xmit_hash(struct device *d,
        int new_value, ret = count;
        struct bonding *bond = to_bond(d);
 
-       if (bond->dev->flags & IFF_UP) {
-               pr_err("%s: Interface is up. Unable to update xmit policy.\n",
-                      bond->dev->name);
-               ret = -EPERM;
-               goto out;
-       }
-
        new_value = bond_parse_parm(buf, xmit_hashtype_tbl);
        if (new_value < 0)  {
                pr_err("%s: Ignoring invalid xmit hash policy value %.*s.\n",
                       bond->dev->name,
                       (int)strlen(buf) - 1, buf);
                ret = -EINVAL;
-               goto out;
        } else {
                bond->params.xmit_policy = new_value;
                bond_set_mode_ops(bond, bond->params.mode);
@@ -404,7 +396,7 @@ static ssize_t bonding_store_xmit_hash(struct device *d,
                        bond->dev->name,
                        xmit_hashtype_tbl[new_value].modename, new_value);
        }
-out:
+
        return ret;
 }
 static DEVICE_ATTR(xmit_hash_policy, S_IRUGO | S_IWUSR,