netdevsim: change debugfs tree topology
authorJiri Pirko <jiri@mellanox.com>
Thu, 25 Apr 2019 13:59:52 +0000 (15:59 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Apr 2019 05:52:02 +0000 (01:52 -0400)
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>
drivers/net/netdevsim/dev.c
drivers/net/netdevsim/netdev.c
drivers/net/netdevsim/netdevsim.h
tools/testing/selftests/bpf/test_offload.py
tools/testing/selftests/net/rtnetlink.sh

index 98a56d8bdcece26ba9b7ec83e3c15982e875bd68..14946d162e5378f81b46f3e3ce48b7bb61039f4f 100644 (file)
@@ -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);
 }
 
@@ -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;
index 9b4310e20129d07d820647c6bad2c824c81bb35b..eb823bd0dc393a1ecda8267b433ab313e1a6a030 100644 (file)
@@ -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)
 {
@@ -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);
 
@@ -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)
@@ -425,8 +419,6 @@ err_bus_exit:
        nsim_bus_exit();
 err_dev_exit:
        nsim_dev_exit();
-err_debugfs_destroy:
-       debugfs_remove_recursive(nsim_ddir);
        return err;
 }
 
@@ -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);
index 17639c7c903276789f47c9ed984f4b23fbd6cd37..e951b1ccc3f278c44b3179b0bf1044fc8e26dc88 100644 (file)
@@ -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;
index 91dfe876a707002b5316bf6adc43675fcc27e36f..5f2e4f9e70e47c5f0a53ae5e335913360903b00e 100755 (executable)
@@ -306,6 +306,8 @@ class DebugfsDir:
 
         _, 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))
@@ -334,7 +336,7 @@ class NetdevSim:
 
         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()
 
index b447803f3f8ae067ea4da2782a268ff72dace936..311f82bcbe8d072323e3757b8c8105153ddce7c9 100755 (executable)
@@ -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