switchdev: cut over to new switchdev_port_bridge_setlink
authorScott Feldman <sfeldma@gmail.com>
Sun, 10 May 2015 16:47:57 +0000 (09:47 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 May 2015 22:43:54 +0000 (18:43 -0400)
Rocker, bonding, and team can now use the switchdev bridge setlink to parse
raw netlink; no need to duplicate this code in each driver.

Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Acked-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
drivers/net/ethernet/rocker/rocker.c
drivers/net/team/team.c

index a475a0389cc790119aeee4df91a0e5cc9de037df..6b1b5dd985f0d65c81396ebf7d86428edaf499b0 100644 (file)
@@ -4039,7 +4039,7 @@ static const struct net_device_ops bond_netdev_ops = {
        .ndo_add_slave          = bond_enslave,
        .ndo_del_slave          = bond_release,
        .ndo_fix_features       = bond_fix_features,
-       .ndo_bridge_setlink     = ndo_dflt_switchdev_port_bridge_setlink,
+       .ndo_bridge_setlink     = switchdev_port_bridge_setlink,
        .ndo_bridge_dellink     = ndo_dflt_switchdev_port_bridge_dellink,
        .ndo_features_check     = passthru_features_check,
 };
index ceb6a643614421a4dcbdf050dc528ed6c29bb715..e94089e87e9411bc748ce62be5308af79d7cf1c5 100644 (file)
@@ -4295,46 +4295,6 @@ skip:
        return idx;
 }
 
-static int rocker_port_bridge_setlink(struct net_device *dev,
-                                     struct nlmsghdr *nlh, u16 flags)
-{
-       struct rocker_port *rocker_port = netdev_priv(dev);
-       struct nlattr *protinfo;
-       struct nlattr *attr;
-       int err;
-
-       protinfo = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg),
-                                  IFLA_PROTINFO);
-       if (protinfo) {
-               attr = nla_find_nested(protinfo, IFLA_BRPORT_LEARNING);
-               if (attr) {
-                       if (nla_len(attr) < sizeof(u8))
-                               return -EINVAL;
-
-                       if (nla_get_u8(attr))
-                               rocker_port->brport_flags |= BR_LEARNING;
-                       else
-                               rocker_port->brport_flags &= ~BR_LEARNING;
-                       err = rocker_port_set_learning(rocker_port,
-                                                      SWITCHDEV_TRANS_NONE);
-                       if (err)
-                               return err;
-               }
-               attr = nla_find_nested(protinfo, IFLA_BRPORT_LEARNING_SYNC);
-               if (attr) {
-                       if (nla_len(attr) < sizeof(u8))
-                               return -EINVAL;
-
-                       if (nla_get_u8(attr))
-                               rocker_port->brport_flags |= BR_LEARNING_SYNC;
-                       else
-                               rocker_port->brport_flags &= ~BR_LEARNING_SYNC;
-               }
-       }
-
-       return 0;
-}
-
 static int rocker_port_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
                                      struct net_device *dev,
                                      u32 filter_mask, int nlflags)
@@ -4374,7 +4334,7 @@ static const struct net_device_ops rocker_port_netdev_ops = {
        .ndo_fdb_add                    = rocker_port_fdb_add,
        .ndo_fdb_del                    = rocker_port_fdb_del,
        .ndo_fdb_dump                   = rocker_port_fdb_dump,
-       .ndo_bridge_setlink             = rocker_port_bridge_setlink,
+       .ndo_bridge_setlink             = switchdev_port_bridge_setlink,
        .ndo_bridge_getlink             = rocker_port_bridge_getlink,
        .ndo_get_phys_port_name         = rocker_port_get_phys_port_name,
 };
index cfe84965afb685693652deb01d22a1568d5c759c..e6c4df2e63c76e86d73c4f7bc5c3fa9bc1be296e 100644 (file)
@@ -1977,7 +1977,7 @@ static const struct net_device_ops team_netdev_ops = {
        .ndo_del_slave          = team_del_slave,
        .ndo_fix_features       = team_fix_features,
        .ndo_change_carrier     = team_change_carrier,
-       .ndo_bridge_setlink     = ndo_dflt_switchdev_port_bridge_setlink,
+       .ndo_bridge_setlink     = switchdev_port_bridge_setlink,
        .ndo_bridge_dellink     = ndo_dflt_switchdev_port_bridge_dellink,
        .ndo_features_check     = passthru_features_check,
 };