|
@@ -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);
|