xref: /openbmc/linux/net/6lowpan/debugfs.c (revision b1815fd949e5bd06d118019acf68f87c9414f705)
1*b1815fd9SAlexander Aring /* This program is free software; you can redistribute it and/or modify
2*b1815fd9SAlexander Aring  * it under the terms of the GNU General Public License version 2
3*b1815fd9SAlexander Aring  * as published by the Free Software Foundation.
4*b1815fd9SAlexander Aring  *
5*b1815fd9SAlexander Aring  * This program is distributed in the hope that it will be useful,
6*b1815fd9SAlexander Aring  * but WITHOUT ANY WARRANTY; without even the implied warranty of
7*b1815fd9SAlexander Aring  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8*b1815fd9SAlexander Aring  * GNU General Public License for more details.
9*b1815fd9SAlexander Aring  *
10*b1815fd9SAlexander Aring  * Authors:
11*b1815fd9SAlexander Aring  * (C) 2015 Pengutronix, Alexander Aring <aar@pengutronix.de>
12*b1815fd9SAlexander Aring  * Copyright (c)  2015 Nordic Semiconductor. All Rights Reserved.
13*b1815fd9SAlexander Aring  */
14*b1815fd9SAlexander Aring 
15*b1815fd9SAlexander Aring #include <net/6lowpan.h>
16*b1815fd9SAlexander Aring 
17*b1815fd9SAlexander Aring #include "6lowpan_i.h"
18*b1815fd9SAlexander Aring 
19*b1815fd9SAlexander Aring static struct dentry *lowpan_debugfs;
20*b1815fd9SAlexander Aring 
21*b1815fd9SAlexander Aring int lowpan_dev_debugfs_init(struct net_device *dev)
22*b1815fd9SAlexander Aring {
23*b1815fd9SAlexander Aring 	struct lowpan_priv *lpriv = lowpan_priv(dev);
24*b1815fd9SAlexander Aring 
25*b1815fd9SAlexander Aring 	/* creating the root */
26*b1815fd9SAlexander Aring 	lpriv->iface_debugfs = debugfs_create_dir(dev->name, lowpan_debugfs);
27*b1815fd9SAlexander Aring 	if (!lpriv->iface_debugfs)
28*b1815fd9SAlexander Aring 		goto fail;
29*b1815fd9SAlexander Aring 
30*b1815fd9SAlexander Aring 	return 0;
31*b1815fd9SAlexander Aring 
32*b1815fd9SAlexander Aring fail:
33*b1815fd9SAlexander Aring 	return -EINVAL;
34*b1815fd9SAlexander Aring }
35*b1815fd9SAlexander Aring 
36*b1815fd9SAlexander Aring void lowpan_dev_debugfs_exit(struct net_device *dev)
37*b1815fd9SAlexander Aring {
38*b1815fd9SAlexander Aring 	debugfs_remove_recursive(lowpan_priv(dev)->iface_debugfs);
39*b1815fd9SAlexander Aring }
40*b1815fd9SAlexander Aring 
41*b1815fd9SAlexander Aring int __init lowpan_debugfs_init(void)
42*b1815fd9SAlexander Aring {
43*b1815fd9SAlexander Aring 	lowpan_debugfs = debugfs_create_dir("6lowpan", NULL);
44*b1815fd9SAlexander Aring 	if (!lowpan_debugfs)
45*b1815fd9SAlexander Aring 		return -EINVAL;
46*b1815fd9SAlexander Aring 
47*b1815fd9SAlexander Aring 	return 0;
48*b1815fd9SAlexander Aring }
49*b1815fd9SAlexander Aring 
50*b1815fd9SAlexander Aring void lowpan_debugfs_exit(void)
51*b1815fd9SAlexander Aring {
52*b1815fd9SAlexander Aring 	debugfs_remove_recursive(lowpan_debugfs);
53*b1815fd9SAlexander Aring }
54