diff options
| -rw-r--r-- | net/mac80211/main.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 4d2e797e3f16..722f3d9fb416 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -1098,6 +1098,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)  	ieee80211_led_init(local); +	result = ieee80211_txq_setup_flows(local); +	if (result) +		goto fail_flows; +  	rtnl_lock();  	result = ieee80211_init_rate_ctrl_alg(local, @@ -1120,10 +1124,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)  	rtnl_unlock(); -	result = ieee80211_txq_setup_flows(local); -	if (result) -		goto fail_flows; -  #ifdef CONFIG_INET  	local->ifa_notifier.notifier_call = ieee80211_ifa_changed;  	result = register_inetaddr_notifier(&local->ifa_notifier); @@ -1149,8 +1149,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)  #if defined(CONFIG_INET) || defined(CONFIG_IPV6)   fail_ifa:  #endif -	ieee80211_txq_teardown_flows(local); - fail_flows:  	rtnl_lock();  	rate_control_deinitialize(local);  	ieee80211_remove_interfaces(local); @@ -1158,6 +1156,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)  	rtnl_unlock();  	ieee80211_led_exit(local);  	ieee80211_wep_free(local); +	ieee80211_txq_teardown_flows(local); + fail_flows:  	destroy_workqueue(local->workqueue);   fail_workqueue:  	wiphy_unregister(local->hw.wiphy);  | 
