aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_debugfs.c
diff options
context:
space:
mode:
authorTaku Izumi <izumi.taku@jp.fujitsu.com>2010-12-09 10:17:13 -0500
committerDavid S. Miller <davem@davemloft.net>2010-12-10 19:24:33 -0500
commitf073c7ca29a4a7e14060d9d3ddf09bfbb7cd9cc0 (patch)
treed545b7e77908ffb101c16d1be8cfe641828fa9b9 /drivers/net/bonding/bond_debugfs.c
parent6c2c9d964e71770e7d6efc1a82f3621005d12185 (diff)
bonding: add the debugfs facility to the bonding driver
This patch provides the debugfs facility to the bonding driver. The "bonding" directory is created in the debugfs root and directories of each bonding interface (like bond0, bond1...) are created in that. # mount -t debugfs none /sys/kernel/debug # ls /sys/kernel/debug/bonding bond0 bond1 Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com> Signed-off-by: Jay Vosburgh <fubar@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding/bond_debugfs.c')
-rw-r--r--drivers/net/bonding/bond_debugfs.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c
new file mode 100644
index 000000000000..ae1eb2fc3a47
--- /dev/null
+++ b/drivers/net/bonding/bond_debugfs.c
@@ -0,0 +1,96 @@
1#include <linux/kernel.h>
2#include <linux/module.h>
3#include <linux/device.h>
4#include <linux/netdevice.h>
5
6#include "bonding.h"
7
8#ifdef CONFIG_DEBUG_FS
9
10#include <linux/debugfs.h>
11#include <linux/seq_file.h>
12
13static struct dentry *bonding_debug_root;
14
15void bond_debug_register(struct bonding *bond)
16{
17 if (!bonding_debug_root)
18 return;
19
20 bond->debug_dir =
21 debugfs_create_dir(bond->dev->name, bonding_debug_root);
22
23 if (!bond->debug_dir) {
24 pr_warning("%s: Warning: failed to register to debugfs\n",
25 bond->dev->name);
26 return;
27 }
28}
29
30void bond_debug_unregister(struct bonding *bond)
31{
32 if (!bonding_debug_root)
33 return;
34
35 debugfs_remove_recursive(bond->debug_dir);
36}
37
38void bond_debug_reregister(struct bonding *bond)
39{
40 struct dentry *d;
41
42 if (!bonding_debug_root)
43 return;
44
45 d = debugfs_rename(bonding_debug_root, bond->debug_dir,
46 bonding_debug_root, bond->dev->name);
47 if (d) {
48 bond->debug_dir = d;
49 } else {
50 pr_warning("%s: Warning: failed to reregister, "
51 "so just unregister old one\n",
52 bond->dev->name);
53 bond_debug_unregister(bond);
54 }
55}
56
57void bond_create_debugfs(void)
58{
59 bonding_debug_root = debugfs_create_dir("bonding", NULL);
60
61 if (!bonding_debug_root) {
62 pr_warning("Warning: Cannot create bonding directory"
63 " in debugfs\n");
64 }
65}
66
67void bond_destroy_debugfs(void)
68{
69 debugfs_remove_recursive(bonding_debug_root);
70 bonding_debug_root = NULL;
71}
72
73
74#else /* !CONFIG_DEBUG_FS */
75
76void bond_debug_register(struct bonding *bond)
77{
78}
79
80void bond_debug_unregister(struct bonding *bond)
81{
82}
83
84void bond_debug_reregister(struct bonding *bond)
85{
86}
87
88void bond_create_debugfs(void)
89{
90}
91
92void bond_destroy_debugfs(void)
93{
94}
95
96#endif /* CONFIG_DEBUG_FS */