]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - net/core/devlink.c
UBUNTU: Start new release
[mirror_ubuntu-zesty-kernel.git] / net / core / devlink.c
index 2b5bf9efa720a9feed9d2f187dda6ab5bf59cda0..e9c1e6acfb6d196d4373dcc36bcf76577952dd32 100644 (file)
@@ -1392,9 +1392,9 @@ static int devlink_nl_cmd_sb_occ_max_clear_doit(struct sk_buff *skb,
        return -EOPNOTSUPP;
 }
 
-static int devlink_eswitch_fill(struct sk_buff *msg, struct devlink *devlink,
-                               enum devlink_command cmd, u32 portid,
-                               u32 seq, int flags)
+static int devlink_nl_eswitch_fill(struct sk_buff *msg, struct devlink *devlink,
+                                  enum devlink_command cmd, u32 portid,
+                                  u32 seq, int flags)
 {
        const struct devlink_ops *ops = devlink->ops;
        void *hdr;
@@ -1408,50 +1408,52 @@ static int devlink_eswitch_fill(struct sk_buff *msg, struct devlink *devlink,
 
        err = devlink_nl_put_handle(msg, devlink);
        if (err)
-               goto out;
+               goto nla_put_failure;
 
-       err = ops->eswitch_mode_get(devlink, &mode);
-       if (err)
-               goto out;
-       err = nla_put_u16(msg, DEVLINK_ATTR_ESWITCH_MODE, mode);
-       if (err)
-               goto out;
+       if (ops->eswitch_mode_get) {
+               err = ops->eswitch_mode_get(devlink, &mode);
+               if (err)
+                       goto nla_put_failure;
+               err = nla_put_u16(msg, DEVLINK_ATTR_ESWITCH_MODE, mode);
+               if (err)
+                       goto nla_put_failure;
+       }
 
        if (ops->eswitch_inline_mode_get) {
                err = ops->eswitch_inline_mode_get(devlink, &inline_mode);
                if (err)
-                       goto out;
+                       goto nla_put_failure;
                err = nla_put_u8(msg, DEVLINK_ATTR_ESWITCH_INLINE_MODE,
                                 inline_mode);
                if (err)
-                       goto out;
+                       goto nla_put_failure;
        }
 
        genlmsg_end(msg, hdr);
        return 0;
 
-out:
+nla_put_failure:
        genlmsg_cancel(msg, hdr);
        return err;
 }
 
-static int devlink_nl_cmd_eswitch_mode_get_doit(struct sk_buff *skb,
-                                               struct genl_info *info)
+static int devlink_nl_cmd_eswitch_get_doit(struct sk_buff *skb,
+                                          struct genl_info *info)
 {
        struct devlink *devlink = info->user_ptr[0];
        const struct devlink_ops *ops = devlink->ops;
        struct sk_buff *msg;
        int err;
 
-       if (!ops || !ops->eswitch_mode_get)
+       if (!ops)
                return -EOPNOTSUPP;
 
        msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
        if (!msg)
                return -ENOMEM;
 
-       err = devlink_eswitch_fill(msg, devlink, DEVLINK_CMD_ESWITCH_MODE_GET,
-                                  info->snd_portid, info->snd_seq, 0);
+       err = devlink_nl_eswitch_fill(msg, devlink, DEVLINK_CMD_ESWITCH_GET,
+                                     info->snd_portid, info->snd_seq, 0);
 
        if (err) {
                nlmsg_free(msg);
@@ -1461,8 +1463,8 @@ static int devlink_nl_cmd_eswitch_mode_get_doit(struct sk_buff *skb,
        return genlmsg_reply(msg, info);
 }
 
-static int devlink_nl_cmd_eswitch_mode_set_doit(struct sk_buff *skb,
-                                               struct genl_info *info)
+static int devlink_nl_cmd_eswitch_set_doit(struct sk_buff *skb,
+                                          struct genl_info *info)
 {
        struct devlink *devlink = info->user_ptr[0];
        const struct devlink_ops *ops = devlink->ops;
@@ -1629,15 +1631,15 @@ static const struct genl_ops devlink_nl_ops[] = {
                                  DEVLINK_NL_FLAG_LOCK_PORTS,
        },
        {
-               .cmd = DEVLINK_CMD_ESWITCH_MODE_GET,
-               .doit = devlink_nl_cmd_eswitch_mode_get_doit,
+               .cmd = DEVLINK_CMD_ESWITCH_GET,
+               .doit = devlink_nl_cmd_eswitch_get_doit,
                .policy = devlink_nl_policy,
                .flags = GENL_ADMIN_PERM,
                .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
        },
        {
-               .cmd = DEVLINK_CMD_ESWITCH_MODE_SET,
-               .doit = devlink_nl_cmd_eswitch_mode_set_doit,
+               .cmd = DEVLINK_CMD_ESWITCH_SET,
+               .doit = devlink_nl_cmd_eswitch_set_doit,
                .policy = devlink_nl_policy,
                .flags = GENL_ADMIN_PERM,
                .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,