Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 224991
b: refs/heads/master
c: f073c7c
h: refs/heads/master
i:
  224989: d69b222
  224987: 8b5d33f
  224983: ebc84f9
  224975: 25b1981
  224959: 3dd1b3e
v: v3
  • Loading branch information
Taku Izumi authored and David S. Miller committed Dec 11, 2010
1 parent e74641a commit fb4e1ee
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6c2c9d964e71770e7d6efc1a82f3621005d12185
refs/heads/master: f073c7ca29a4a7e14060d9d3ddf09bfbb7cd9cc0
2 changes: 1 addition & 1 deletion trunk/drivers/net/bonding/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

obj-$(CONFIG_BONDING) += bonding.o

bonding-objs := bond_main.o bond_3ad.o bond_alb.o bond_sysfs.o
bonding-objs := bond_main.o bond_3ad.o bond_alb.o bond_sysfs.o bond_debugfs.o

ipv6-$(subst m,y,$(CONFIG_IPV6)) += bond_ipv6.o
bonding-objs += $(ipv6-y)
Expand Down
96 changes: 96 additions & 0 deletions trunk/drivers/net/bonding/bond_debugfs.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/netdevice.h>

#include "bonding.h"

#ifdef CONFIG_DEBUG_FS

#include <linux/debugfs.h>
#include <linux/seq_file.h>

static struct dentry *bonding_debug_root;

void bond_debug_register(struct bonding *bond)
{
if (!bonding_debug_root)
return;

bond->debug_dir =
debugfs_create_dir(bond->dev->name, bonding_debug_root);

if (!bond->debug_dir) {
pr_warning("%s: Warning: failed to register to debugfs\n",
bond->dev->name);
return;
}
}

void bond_debug_unregister(struct bonding *bond)
{
if (!bonding_debug_root)
return;

debugfs_remove_recursive(bond->debug_dir);
}

void bond_debug_reregister(struct bonding *bond)
{
struct dentry *d;

if (!bonding_debug_root)
return;

d = debugfs_rename(bonding_debug_root, bond->debug_dir,
bonding_debug_root, bond->dev->name);
if (d) {
bond->debug_dir = d;
} else {
pr_warning("%s: Warning: failed to reregister, "
"so just unregister old one\n",
bond->dev->name);
bond_debug_unregister(bond);
}
}

void bond_create_debugfs(void)
{
bonding_debug_root = debugfs_create_dir("bonding", NULL);

if (!bonding_debug_root) {
pr_warning("Warning: Cannot create bonding directory"
" in debugfs\n");
}
}

void bond_destroy_debugfs(void)
{
debugfs_remove_recursive(bonding_debug_root);
bonding_debug_root = NULL;
}


#else /* !CONFIG_DEBUG_FS */

void bond_debug_register(struct bonding *bond)
{
}

void bond_debug_unregister(struct bonding *bond)
{
}

void bond_debug_reregister(struct bonding *bond)
{
}

void bond_create_debugfs(void)
{
}

void bond_destroy_debugfs(void)
{
}

#endif /* CONFIG_DEBUG_FS */
10 changes: 9 additions & 1 deletion trunk/drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3503,6 +3503,8 @@ static int bond_event_changename(struct bonding *bond)
bond_remove_proc_entry(bond);
bond_create_proc_entry(bond);

bond_debug_reregister(bond);

return NOTIFY_DONE;
}

Expand Down Expand Up @@ -4785,6 +4787,8 @@ static void bond_uninit(struct net_device *bond_dev)

bond_remove_proc_entry(bond);

bond_debug_unregister(bond);

__hw_addr_flush(&bond->mc_list);

list_for_each_entry_safe(vlan, tmp, &bond->vlan_list, vlan_list) {
Expand Down Expand Up @@ -5187,6 +5191,8 @@ static int bond_init(struct net_device *bond_dev)

bond_prepare_sysfs_group(bond);

bond_debug_register(bond);

__hw_addr_init(&bond->mc_list);
return 0;
}
Expand Down Expand Up @@ -5308,6 +5314,8 @@ static int __init bonding_init(void)
if (res)
goto err_link;

bond_create_debugfs();

for (i = 0; i < max_bonds; i++) {
res = bond_create(&init_net, NULL);
if (res)
Expand All @@ -5318,7 +5326,6 @@ static int __init bonding_init(void)
if (res)
goto err;


register_netdevice_notifier(&bond_netdev_notifier);
register_inetaddr_notifier(&bond_inetaddr_notifier);
bond_register_ipv6_notifier();
Expand All @@ -5342,6 +5349,7 @@ static void __exit bonding_exit(void)
bond_unregister_ipv6_notifier();

bond_destroy_sysfs();
bond_destroy_debugfs();

rtnl_link_unregister(&bond_link_ops);
unregister_pernet_subsys(&bond_net_ops);
Expand Down
9 changes: 9 additions & 0 deletions trunk/drivers/net/bonding/bonding.h
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,10 @@ struct bonding {
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
struct in6_addr master_ipv6;
#endif
#ifdef CONFIG_DEBUG_FS
/* debugging suport via debugfs */
struct dentry *debug_dir;
#endif /* CONFIG_DEBUG_FS */
};

/**
Expand Down Expand Up @@ -380,6 +384,11 @@ void bond_select_active_slave(struct bonding *bond);
void bond_change_active_slave(struct bonding *bond, struct slave *new_active);
void bond_register_arp(struct bonding *);
void bond_unregister_arp(struct bonding *);
void bond_create_debugfs(void);
void bond_destroy_debugfs(void);
void bond_debug_register(struct bonding *bond);
void bond_debug_unregister(struct bonding *bond);
void bond_debug_reregister(struct bonding *bond);

struct bond_net {
struct net * net; /* Associated network namespace */
Expand Down

0 comments on commit fb4e1ee

Please sign in to comment.