Skip to content

Commit

Permalink
netdevsim: change debugfs tree topology
Browse files Browse the repository at this point in the history
With the model where dev is represented by devlink and ports are
represented by devlink ports, make debugfs file names independent
on netdev names. Change the topology to the one illustrated
by the following example:

$ ls /sys/kernel/debug/netdevsim/
netdevsim1
$ ls /sys/kernel/debug/netdevsim/netdevsim1/
bpf_bind_accept  bpf_bind_verifier_delay  bpf_bound_progs  ports
$ ls /sys/kernel/debug/netdevsim/netdevsim1/ports/
0  1
$ ls /sys/kernel/debug/netdevsim/netdevsim1/ports/0/
bpf_map_accept  bpf_offloaded_id  bpf_tc_accept  bpf_tc_non_bound_accept  bpf_xdpdrv_accept  bpf_xdpoffload_accept  dev  ipsec
$ ls /sys/kernel/debug/netdevsim/netdevsim1/ports/0/dev -l
lrwxrwxrwx 1 root root 0 Apr 13 15:58 /sys/kernel/debug/netdevsim/netdevsim1/ports/0/dev -> ../../../netdevsim1

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
jpirko authored and davem330 committed Apr 26, 2019
1 parent 514cf64 commit ab1d0cc
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 17 deletions.
10 changes: 7 additions & 3 deletions drivers/net/netdevsim/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,21 @@ static struct dentry *nsim_dev_ddir;

static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
{
char dev_ddir_name[10];
char dev_ddir_name[16];

sprintf(dev_ddir_name, "%u", nsim_dev->nsim_bus_dev->dev.id);
sprintf(dev_ddir_name, DRV_NAME "%u", nsim_dev->nsim_bus_dev->dev.id);
nsim_dev->ddir = debugfs_create_dir(dev_ddir_name, nsim_dev_ddir);
if (IS_ERR_OR_NULL(nsim_dev->ddir))
return PTR_ERR_OR_ZERO(nsim_dev->ddir) ?: -EINVAL;
nsim_dev->ports_ddir = debugfs_create_dir("ports", nsim_dev->ddir);
if (IS_ERR_OR_NULL(nsim_dev->ports_ddir))
return PTR_ERR_OR_ZERO(nsim_dev->ports_ddir) ?: -EINVAL;
return 0;
}

static void nsim_dev_debugfs_exit(struct nsim_dev *nsim_dev)
{
debugfs_remove_recursive(nsim_dev->ports_ddir);
debugfs_remove_recursive(nsim_dev->ddir);
}

Expand Down Expand Up @@ -273,7 +277,7 @@ void nsim_dev_destroy(struct nsim_dev *nsim_dev)

int nsim_dev_init(void)
{
nsim_dev_ddir = debugfs_create_dir(DRV_NAME "_dev", NULL);
nsim_dev_ddir = debugfs_create_dir(DRV_NAME, NULL);
if (IS_ERR_OR_NULL(nsim_dev_ddir))
return -ENOMEM;
return 0;
Expand Down
15 changes: 3 additions & 12 deletions drivers/net/netdevsim/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@

#include "netdevsim.h"

static struct dentry *nsim_ddir;

static int nsim_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid)
{
Expand All @@ -42,11 +40,11 @@ static int nsim_init(struct net_device *dev)
char dev_link_name[32];
int err;

ns->ddir = debugfs_create_dir(netdev_name(dev), nsim_ddir);
ns->ddir = debugfs_create_dir("0", ns->nsim_dev->ports_ddir);
if (IS_ERR_OR_NULL(ns->ddir))
return -ENOMEM;

sprintf(dev_link_name, "../../" DRV_NAME "_dev/%u",
sprintf(dev_link_name, "../../../" DRV_NAME "%u",
ns->nsim_dev->nsim_bus_dev->dev.id);
debugfs_create_symlink("dev", ns->ddir, dev_link_name);

Expand Down Expand Up @@ -403,13 +401,9 @@ static int __init nsim_module_init(void)
{
int err;

nsim_ddir = debugfs_create_dir(DRV_NAME, NULL);
if (IS_ERR_OR_NULL(nsim_ddir))
return -ENOMEM;

err = nsim_dev_init();
if (err)
goto err_debugfs_destroy;
return err;

err = nsim_bus_init();
if (err)
Expand All @@ -425,8 +419,6 @@ static int __init nsim_module_init(void)
nsim_bus_exit();
err_dev_exit:
nsim_dev_exit();
err_debugfs_destroy:
debugfs_remove_recursive(nsim_ddir);
return err;
}

Expand All @@ -435,7 +427,6 @@ static void __exit nsim_module_exit(void)
rtnl_link_unregister(&nsim_link_ops);
nsim_bus_exit();
nsim_dev_exit();
debugfs_remove_recursive(nsim_ddir);
}

module_init(nsim_module_init);
Expand Down
1 change: 1 addition & 0 deletions drivers/net/netdevsim/netdevsim.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ struct nsim_dev {
struct nsim_bus_dev *nsim_bus_dev;
struct nsim_fib_data *fib_data;
struct dentry *ddir;
struct dentry *ports_ddir;
struct bpf_offload_dev *bpf_dev;
bool bpf_bind_accept;
u32 bpf_bind_verifier_delay;
Expand Down
4 changes: 3 additions & 1 deletion tools/testing/selftests/bpf/test_offload.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,8 @@ def _debugfs_dir_read(self, path):

_, out = cmd('ls ' + path)
for f in out.split():
if f == "ports":
continue
p = os.path.join(path, f)
if os.path.isfile(p):
_, out = cmd('cat %s/%s' % (path, f))
Expand Down Expand Up @@ -334,7 +336,7 @@ def __init__(self, link=None):

self.ns = ""

self.dfs_dir = '/sys/kernel/debug/netdevsim/%s' % (self.dev['ifname'])
self.dfs_dir = '/sys/kernel/debug/netdevsim/netdevsim0/ports/0/'
self.dev_dir = self.dfs_dir + '/dev/'
self.dfs_refresh()

Expand Down
2 changes: 1 addition & 1 deletion tools/testing/selftests/net/rtnetlink.sh
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,7 @@ kci_test_ipsec_offload()
srcip=192.168.123.3
dstip=192.168.123.4
dev=simx1
sysfsd=/sys/kernel/debug/netdevsim/$dev
sysfsd=/sys/kernel/debug/netdevsim/netdevsim0/ports/0/
sysfsf=$sysfsd/ipsec

# setup netdevsim since dummydev doesn't have offload support
Expand Down

0 comments on commit ab1d0cc

Please sign in to comment.