]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
rocker: remove swdev mode
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Mon, 8 Dec 2014 22:04:20 +0000 (14:04 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Dec 2014 23:24:47 +0000 (18:24 -0500)
Remove use of 'swdev' mode in rocker. rocker dev offloads
can use the BRIDGE_FLAGS_SELF to indicate offload to hardware.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/rocker/rocker.c
net/core/rtnetlink.c

index 55364359b868b1aedba6680ee2f84b74003f528f..2f398fa4b9e607546e8f1255ec7a53bfa018114c 100644 (file)
@@ -3717,27 +3717,11 @@ static int rocker_port_bridge_setlink(struct net_device *dev,
 {
        struct rocker_port *rocker_port = netdev_priv(dev);
        struct nlattr *protinfo;
-       struct nlattr *afspec;
        struct nlattr *attr;
-       u16 mode;
        int err;
 
        protinfo = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg),
                                   IFLA_PROTINFO);
-       afspec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC);
-
-       if (afspec) {
-               attr = nla_find_nested(afspec, IFLA_BRIDGE_MODE);
-               if (attr) {
-                       if (nla_len(attr) < sizeof(mode))
-                               return -EINVAL;
-
-                       mode = nla_get_u16(attr);
-                       if (mode != BRIDGE_MODE_SWDEV)
-                               return -EINVAL;
-               }
-       }
-
        if (protinfo) {
                attr = nla_find_nested(protinfo, IFLA_BRPORT_LEARNING);
                if (attr) {
@@ -3772,7 +3756,7 @@ static int rocker_port_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
                                      u32 filter_mask)
 {
        struct rocker_port *rocker_port = netdev_priv(dev);
-       u16 mode = BRIDGE_MODE_SWDEV;
+       u16 mode = BRIDGE_MODE_UNDEF;
        u32 mask = BR_LEARNING | BR_LEARNING_SYNC;
 
        return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode,
index a9be2c1617028c9203f93c8c8683f4099ad3e356..eaa057f14bcd4a7b4506709acbb090f0122bf4b4 100644 (file)
@@ -2751,11 +2751,17 @@ int ndo_dflt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
        if (!br_afspec)
                goto nla_put_failure;
 
-       if (nla_put_u16(skb, IFLA_BRIDGE_FLAGS, BRIDGE_FLAGS_SELF) ||
-           nla_put_u16(skb, IFLA_BRIDGE_MODE, mode)) {
+       if (nla_put_u16(skb, IFLA_BRIDGE_FLAGS, BRIDGE_FLAGS_SELF)) {
                nla_nest_cancel(skb, br_afspec);
                goto nla_put_failure;
        }
+
+       if (mode != BRIDGE_MODE_UNDEF) {
+               if (nla_put_u16(skb, IFLA_BRIDGE_MODE, mode)) {
+                       nla_nest_cancel(skb, br_afspec);
+                       goto nla_put_failure;
+               }
+       }
        nla_nest_end(skb, br_afspec);
 
        protinfo = nla_nest_start(skb, IFLA_PROTINFO | NLA_F_NESTED);