On Tue, 2007-09-25 at 22:06 +0200, Michael Buesch wrote: > The following happened when adding an interface through sysfs > on b43, while another one was operating and transmitting data: As discussed, this is because register_netdevice() didn't like the device. Try this patch. johannes --- wireless-dev.orig/net/mac80211/ieee80211.c 2007-09-25 22:26:31.341579155 +0200 +++ wireless-dev/net/mac80211/ieee80211.c 2007-09-25 22:29:12.421568847 +0200 @@ -266,7 +266,6 @@ void ieee80211_if_mgmt_setup(struct net_ dev->stop = ieee80211_mgmt_stop; dev->type = ARPHRD_IEEE80211_PRISM; dev->hard_header_parse = header_parse_80211; - dev->uninit = ieee80211_if_reinit; dev->destructor = ieee80211_if_free; } @@ -543,7 +542,6 @@ void ieee80211_if_setup(struct net_devic dev->change_mtu = ieee80211_change_mtu; dev->open = ieee80211_open; dev->stop = ieee80211_stop; - dev->uninit = ieee80211_if_reinit; dev->destructor = ieee80211_if_free; } @@ -1233,6 +1231,12 @@ int ieee80211_register_hw(struct ieee802 if (result < 0) goto fail_dev; + /* + * Called even when register_netdevice fails, it would + * oops if assigned before initialising the rest. + */ + local->mdev->uninit = ieee80211_if_reinit; + ieee80211_debugfs_add_netdev(IEEE80211_DEV_TO_SUB_IF(local->mdev)); result = ieee80211_init_rate_ctrl_alg(local, NULL); --- wireless-dev.orig/net/mac80211/ieee80211_iface.c 2007-09-25 22:26:40.111572537 +0200 +++ wireless-dev/net/mac80211/ieee80211_iface.c 2007-09-25 22:32:27.631569281 +0200 @@ -76,6 +76,12 @@ int ieee80211_if_add(struct net_device * if (ret) goto fail; + /* + * Called even when register_netdevice fails, it would + * oops if assigned before initialising the rest. + */ + ndev->uninit = ieee80211_if_reinit; + ieee80211_debugfs_add_netdev(sdata); ieee80211_if_set_type(ndev, type); @@ -127,6 +133,12 @@ int ieee80211_if_add_mgmt(struct ieee802 if (ret) goto fail; + /* + * Called even when register_netdevice fails, it would + * oops if assigned before initialising the rest. + */ + ndev->uninit = ieee80211_if_reinit; + ieee80211_debugfs_add_netdev(nsdata); if (local->open_count > 0) - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html