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);
 }
 
 
 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;
 
 
 #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)
 {
        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);
 
 {
        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)
        nsim_bus_exit();
 err_dev_exit:
        nsim_dev_exit();
-err_debugfs_destroy:
-       debugfs_remove_recursive(nsim_ddir);
        return err;
 }
 
        rtnl_link_unregister(&nsim_link_ops);
        nsim_bus_exit();
        nsim_dev_exit();
-       debugfs_remove_recursive(nsim_ddir);
 }
 
 module_init(nsim_module_init);
 
        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;
 
 
         _, 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))
 
         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()
 
 
        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