From: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
To: netdev@vger.kernel.org
Cc: kuba@kernel.org, davem@davemloft.net, johannes@sipsolutions.net,
ryazanov.s.a@gmail.com, loic.poulain@linaro.org,
krishna.c.sudi@intel.com, m.chetan.kumar@intel.com,
m.chetan.kumar@linux.intel.com, linuxwwan@intel.com
Subject: [PATCH V3 net-next 1/2] net: wwan: common debugfs base dir for wwan device
Date: Sat, 20 Nov 2021 21:51:54 +0530 [thread overview]
Message-ID: <20211120162155.1216081-2-m.chetan.kumar@linux.intel.com> (raw)
In-Reply-To: <20211120162155.1216081-1-m.chetan.kumar@linux.intel.com>
This patch set brings in a common debugfs base directory
i.e. /sys/kernel/debugfs/wwan/ in WWAN Subsystem for a
WWAN device instance. So that it avoids driver polluting
debugfs root with unrelated directories & possible name
collusion.
Having a common debugfs base directory for WWAN drivers
eases user to match control devices with debugfs entries.
WWAN Subsystem creates dentry (/sys/kernel/debugfs/wwan)
on module load & removes dentry on module unload.
When driver registers a new wwan device, dentry (wwanX)
is created for WWAN device instance & on driver unregister
dentry is removed.
New API is introduced to return the wwan device instance
dentry so that driver can create debugfs entries under it.
Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
---
v3:
* Removed unnecessary checks & empty lines before error checks.
---
drivers/net/wwan/wwan_core.c | 31 +++++++++++++++++++++++++++++--
include/linux/wwan.h | 2 ++
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c
index d293ab688044..aa9c1f7c944f 100644
--- a/drivers/net/wwan/wwan_core.c
+++ b/drivers/net/wwan/wwan_core.c
@@ -3,6 +3,7 @@
#include <linux/err.h>
#include <linux/errno.h>
+#include <linux/debugfs.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/idr.h>
@@ -25,6 +26,7 @@ static DEFINE_IDA(minors); /* minors for WWAN port chardevs */
static DEFINE_IDA(wwan_dev_ids); /* for unique WWAN device IDs */
static struct class *wwan_class;
static int wwan_major;
+static struct dentry *wwan_debugfs_dir;
#define to_wwan_dev(d) container_of(d, struct wwan_device, dev)
#define to_wwan_port(d) container_of(d, struct wwan_port, dev)
@@ -40,6 +42,7 @@ static int wwan_major;
* @port_id: Current available port ID to pick.
* @ops: wwan device ops
* @ops_ctxt: context to pass to ops
+ * @debugfs_dir: WWAN device debugfs dir
*/
struct wwan_device {
unsigned int id;
@@ -47,6 +50,7 @@ struct wwan_device {
atomic_t port_id;
const struct wwan_ops *ops;
void *ops_ctxt;
+ struct dentry *debugfs_dir;
};
/**
@@ -142,6 +146,18 @@ static struct wwan_device *wwan_dev_get_by_name(const char *name)
return to_wwan_dev(dev);
}
+struct dentry *wwan_get_debugfs_dir(struct device *parent)
+{
+ struct wwan_device *wwandev;
+
+ wwandev = wwan_dev_get_by_parent(parent);
+ if (IS_ERR(wwandev))
+ return ERR_CAST(wwandev);
+
+ return wwandev->debugfs_dir;
+}
+EXPORT_SYMBOL_GPL(wwan_get_debugfs_dir);
+
/* This function allocates and registers a new WWAN device OR if a WWAN device
* already exist for the given parent, it gets a reference and return it.
* This function is not exported (for now), it is called indirectly via
@@ -150,6 +166,7 @@ static struct wwan_device *wwan_dev_get_by_name(const char *name)
static struct wwan_device *wwan_create_dev(struct device *parent)
{
struct wwan_device *wwandev;
+ const char *wwandev_name;
int err, id;
/* The 'find-alloc-register' operation must be protected against
@@ -189,6 +206,10 @@ static struct wwan_device *wwan_create_dev(struct device *parent)
goto done_unlock;
}
+ wwandev_name = kobject_name(&wwandev->dev.kobj);
+ wwandev->debugfs_dir = debugfs_create_dir(wwandev_name,
+ wwan_debugfs_dir);
+
done_unlock:
mutex_unlock(&wwan_register_lock);
@@ -218,10 +236,12 @@ static void wwan_remove_dev(struct wwan_device *wwandev)
else
ret = device_for_each_child(&wwandev->dev, NULL, is_wwan_child);
- if (!ret)
+ if (!ret) {
+ debugfs_remove_recursive(wwandev->debugfs_dir);
device_unregister(&wwandev->dev);
- else
+ } else {
put_device(&wwandev->dev);
+ }
mutex_unlock(&wwan_register_lock);
}
@@ -1117,6 +1140,8 @@ static int __init wwan_init(void)
goto destroy;
}
+ wwan_debugfs_dir = debugfs_create_dir("wwan", NULL);
+
return 0;
destroy:
@@ -1128,6 +1153,7 @@ static int __init wwan_init(void)
static void __exit wwan_exit(void)
{
+ debugfs_remove_recursive(wwan_debugfs_dir);
__unregister_chrdev(wwan_major, 0, WWAN_MAX_MINORS, "wwan_port");
rtnl_link_unregister(&wwan_rtnl_link_ops);
class_destroy(wwan_class);
diff --git a/include/linux/wwan.h b/include/linux/wwan.h
index 9fac819f92e3..1646aa3e6779 100644
--- a/include/linux/wwan.h
+++ b/include/linux/wwan.h
@@ -171,4 +171,6 @@ int wwan_register_ops(struct device *parent, const struct wwan_ops *ops,
void wwan_unregister_ops(struct device *parent);
+struct dentry *wwan_get_debugfs_dir(struct device *parent);
+
#endif /* __WWAN_H */
--
2.25.1
next prev parent reply other threads:[~2021-11-20 16:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-20 16:21 [PATCH V3 net-next 0/2] net: wwan: debugfs support for wwan device logging M Chetan Kumar
2021-11-20 16:21 ` M Chetan Kumar [this message]
2021-11-22 8:55 ` [PATCH V3 net-next 1/2] net: wwan: common debugfs base dir for wwan device Loic Poulain
2021-11-28 16:53 ` Sergey Ryazanov
2021-11-20 16:21 ` [PATCH V3 net-next 2/2] net: wwan: iosm: device trace collection using relayfs M Chetan Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211120162155.1216081-2-m.chetan.kumar@linux.intel.com \
--to=m.chetan.kumar@linux.intel.com \
--cc=davem@davemloft.net \
--cc=johannes@sipsolutions.net \
--cc=krishna.c.sudi@intel.com \
--cc=kuba@kernel.org \
--cc=linuxwwan@intel.com \
--cc=loic.poulain@linaro.org \
--cc=m.chetan.kumar@intel.com \
--cc=netdev@vger.kernel.org \
--cc=ryazanov.s.a@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).