Skip to content

Commit

Permalink
netdevsim: move sdev-specific init/uninit code into separate functions
Browse files Browse the repository at this point in the history
In order to improve readability and prepare for future code changes,
move sdev specific init/uninit code into separate functions.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Apr 12, 2019
1 parent b26b694 commit 4b3a84b
Showing 1 changed file with 38 additions and 25 deletions.
63 changes: 38 additions & 25 deletions drivers/net/netdevsim/bpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -578,35 +578,51 @@ int nsim_bpf(struct net_device *dev, struct netdev_bpf *bpf)
}
}

int nsim_bpf_init(struct netdevsim *ns)
static int nsim_bpf_sdev_init(struct netdevsim_shared_dev *sdev)
{
int err;

if (ns->sdev->refcnt == 1) {
INIT_LIST_HEAD(&ns->sdev->bpf_bound_progs);
INIT_LIST_HEAD(&ns->sdev->bpf_bound_maps);
INIT_LIST_HEAD(&sdev->bpf_bound_progs);
INIT_LIST_HEAD(&sdev->bpf_bound_maps);

sdev->ddir_bpf_bound_progs =
debugfs_create_dir("bpf_bound_progs", sdev->ddir);
if (IS_ERR_OR_NULL(sdev->ddir_bpf_bound_progs))
return -ENOMEM;

sdev->bpf_dev = bpf_offload_dev_create(&nsim_bpf_dev_ops, sdev);
err = PTR_ERR_OR_ZERO(sdev->bpf_dev);
if (err)
return err;

sdev->bpf_bind_accept = true;
debugfs_create_bool("bpf_bind_accept", 0600, sdev->ddir,
&sdev->bpf_bind_accept);
debugfs_create_u32("bpf_bind_verifier_delay", 0600, sdev->ddir,
&sdev->bpf_bind_verifier_delay);
return 0;
}

static void nsim_bpf_sdev_uninit(struct netdevsim_shared_dev *sdev)
{
WARN_ON(!list_empty(&sdev->bpf_bound_progs));
WARN_ON(!list_empty(&sdev->bpf_bound_maps));
bpf_offload_dev_destroy(sdev->bpf_dev);
}

ns->sdev->ddir_bpf_bound_progs =
debugfs_create_dir("bpf_bound_progs", ns->sdev->ddir);
if (IS_ERR_OR_NULL(ns->sdev->ddir_bpf_bound_progs))
return -ENOMEM;
int nsim_bpf_init(struct netdevsim *ns)
{
int err;

ns->sdev->bpf_dev = bpf_offload_dev_create(&nsim_bpf_dev_ops,
ns->sdev);
err = PTR_ERR_OR_ZERO(ns->sdev->bpf_dev);
if (ns->sdev->refcnt == 1) {
err = nsim_bpf_sdev_init(ns->sdev);
if (err)
return err;

ns->sdev->bpf_bind_accept = true;
debugfs_create_bool("bpf_bind_accept", 0600, ns->sdev->ddir,
&ns->sdev->bpf_bind_accept);
debugfs_create_u32("bpf_bind_verifier_delay", 0600, ns->sdev->ddir,
&ns->sdev->bpf_bind_verifier_delay);
}

err = bpf_offload_dev_netdev_register(ns->sdev->bpf_dev, ns->netdev);
if (err)
goto err_destroy_bdev;
goto err_bpf_sdev_uninit;

debugfs_create_u32("bpf_offloaded_id", 0400, ns->ddir,
&ns->bpf_offloaded_id);
Expand All @@ -629,9 +645,9 @@ int nsim_bpf_init(struct netdevsim *ns)

return 0;

err_destroy_bdev:
err_bpf_sdev_uninit:
if (ns->sdev->refcnt == 1)
bpf_offload_dev_destroy(ns->sdev->bpf_dev);
nsim_bpf_sdev_uninit(ns->sdev);
return err;
}

Expand All @@ -642,9 +658,6 @@ void nsim_bpf_uninit(struct netdevsim *ns)
WARN_ON(ns->bpf_offloaded);
bpf_offload_dev_netdev_unregister(ns->sdev->bpf_dev, ns->netdev);

if (ns->sdev->refcnt == 1) {
WARN_ON(!list_empty(&ns->sdev->bpf_bound_progs));
WARN_ON(!list_empty(&ns->sdev->bpf_bound_maps));
bpf_offload_dev_destroy(ns->sdev->bpf_dev);
}
if (ns->sdev->refcnt == 1)
nsim_bpf_sdev_uninit(ns->sdev);
}

0 comments on commit 4b3a84b

Please sign in to comment.