|
@@ -3841,42 +3841,34 @@ static int sky2_device_event(struct notifier_block *unused,
|
|
|
unsigned long event, void *ptr)
|
|
|
{
|
|
|
struct net_device *dev = ptr;
|
|
|
+ struct sky2_port *sky2 = netdev_priv(dev);
|
|
|
|
|
|
- if (dev->open == sky2_up) {
|
|
|
- struct sky2_port *sky2 = netdev_priv(dev);
|
|
|
+ if (dev->open != sky2_up || !sky2_debug)
|
|
|
+ return NOTIFY_DONE;
|
|
|
|
|
|
- switch(event) {
|
|
|
- case NETDEV_CHANGENAME:
|
|
|
- if (!netif_running(dev))
|
|
|
- break;
|
|
|
- /* fallthrough */
|
|
|
- case NETDEV_DOWN:
|
|
|
- case NETDEV_GOING_DOWN:
|
|
|
- if (sky2->debugfs) {
|
|
|
- printk(KERN_DEBUG PFX "%s: remove debugfs\n",
|
|
|
- dev->name);
|
|
|
- debugfs_remove(sky2->debugfs);
|
|
|
- sky2->debugfs = NULL;
|
|
|
- }
|
|
|
+ switch(event) {
|
|
|
+ case NETDEV_CHANGENAME:
|
|
|
+ if (sky2->debugfs) {
|
|
|
+ sky2->debugfs = debugfs_rename(sky2_debug, sky2->debugfs,
|
|
|
+ sky2_debug, dev->name);
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- if (event != NETDEV_CHANGENAME)
|
|
|
- break;
|
|
|
- /* fallthrough for changename */
|
|
|
- case NETDEV_UP:
|
|
|
- if (sky2_debug) {
|
|
|
- struct dentry *d;
|
|
|
- d = debugfs_create_file(dev->name, S_IRUGO,
|
|
|
- sky2_debug, dev,
|
|
|
- &sky2_debug_fops);
|
|
|
- if (d == NULL || IS_ERR(d))
|
|
|
- printk(KERN_INFO PFX
|
|
|
- "%s: debugfs create failed\n",
|
|
|
- dev->name);
|
|
|
- else
|
|
|
- sky2->debugfs = d;
|
|
|
- }
|
|
|
- break;
|
|
|
+ case NETDEV_GOING_DOWN:
|
|
|
+ if (sky2->debugfs) {
|
|
|
+ printk(KERN_DEBUG PFX "%s: remove debugfs\n",
|
|
|
+ dev->name);
|
|
|
+ debugfs_remove(sky2->debugfs);
|
|
|
+ sky2->debugfs = NULL;
|
|
|
}
|
|
|
+ break;
|
|
|
+
|
|
|
+ case NETDEV_UP:
|
|
|
+ sky2->debugfs = debugfs_create_file(dev->name, S_IRUGO,
|
|
|
+ sky2_debug, dev,
|
|
|
+ &sky2_debug_fops);
|
|
|
+ if (IS_ERR(sky2->debugfs))
|
|
|
+ sky2->debugfs = NULL;
|
|
|
}
|
|
|
|
|
|
return NOTIFY_DONE;
|