Skip to content

Commit

Permalink
netdevsim: Change nsim_devlink_setup to return error to caller
Browse files Browse the repository at this point in the history
Change nsim_devlink_setup to return any error back to the caller and
update nsim_init to handle it.

Requested-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David Ahern authored and David S. Miller committed Apr 1, 2018
1 parent 6851cf2 commit ef81710
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
12 changes: 7 additions & 5 deletions drivers/net/netdevsim/devlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,22 +218,22 @@ void nsim_devlink_teardown(struct netdevsim *ns)
}
}

void nsim_devlink_setup(struct netdevsim *ns)
int nsim_devlink_setup(struct netdevsim *ns)
{
struct net *net = nsim_to_net(ns);
bool *reg_devlink = net_generic(net, nsim_devlink_id);
struct devlink *devlink;
int err = -ENOMEM;
int err;

/* only one device per namespace controls devlink */
if (!*reg_devlink) {
ns->devlink = NULL;
return;
return 0;
}

devlink = devlink_alloc(&nsim_devlink_ops, 0);
if (!devlink)
return;
return -ENOMEM;

err = devlink_register(devlink, &ns->dev);
if (err)
Expand All @@ -247,12 +247,14 @@ void nsim_devlink_setup(struct netdevsim *ns)

*reg_devlink = false;

return;
return 0;

err_dl_unregister:
devlink_unregister(devlink);
err_devlink_free:
devlink_free(devlink);

return err;
}

/* Initialize per network namespace state */
Expand Down
6 changes: 5 additions & 1 deletion drivers/net/netdevsim/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,14 @@ static int nsim_init(struct net_device *dev)

SET_NETDEV_DEV(dev, &ns->dev);

nsim_devlink_setup(ns);
err = nsim_devlink_setup(ns);
if (err)
goto err_unreg_dev;

return 0;

err_unreg_dev:
device_unregister(&ns->dev);
err_bpf_uninit:
nsim_bpf_uninit(ns);
err_debugfs_destroy:
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/netdevsim/netdevsim.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ enum nsim_resource_id {
NSIM_RESOURCE_IPV6_FIB_RULES,
};

void nsim_devlink_setup(struct netdevsim *ns);
int nsim_devlink_setup(struct netdevsim *ns);
void nsim_devlink_teardown(struct netdevsim *ns);

int nsim_devlink_init(void);
Expand All @@ -128,8 +128,9 @@ void nsim_fib_exit(void);
u64 nsim_fib_get_val(struct net *net, enum nsim_resource_id res_id, bool max);
int nsim_fib_set_max(struct net *net, enum nsim_resource_id res_id, u64 val);
#else
static inline void nsim_devlink_setup(struct netdevsim *ns)
static inline int nsim_devlink_setup(struct netdevsim *ns)
{
return 0;
}

static inline void nsim_devlink_teardown(struct netdevsim *ns)
Expand Down

0 comments on commit ef81710

Please sign in to comment.