diff mbox

mac80211: Move up init of TXQs

Message ID 152725136177.14483.16708750819293583562.stgit@alrua-kau (mailing list archive)
State Accepted
Delegated to: Johannes Berg
Headers show

Commit Message

Toke Høiland-Jørgensen May 25, 2018, 12:29 p.m. UTC
On init, ieee80211_if_add() dumps the interface. Since that now includes a
dump of the TXQ state, we need to initialise that before the dump happens.
So move up the TXQ initialisation to to before the call to
ieee80211_if_add().

Fixes: 52539ca89f36 ("cfg80211: Expose TXQ stats and parameters to userspace")
Reported-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
---
 net/mac80211/main.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Comments

Niklas Cassel May 25, 2018, 1:18 p.m. UTC | #1
Tested-by: Niklas Cassel <niklas.cassel@linaro.org>

On Fri, May 25, 2018 at 02:29:21PM +0200, Toke Høiland-Jørgensen wrote:
> On init, ieee80211_if_add() dumps the interface. Since that now includes a
> dump of the TXQ state, we need to initialise that before the dump happens.
> So move up the TXQ initialisation to to before the call to
> ieee80211_if_add().
> 
> Fixes: 52539ca89f36 ("cfg80211: Expose TXQ stats and parameters to userspace")
> Reported-by: Niklas Cassel <niklas.cassel@linaro.org>
> Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
> ---
>  net/mac80211/main.c |   12 ++++++------
>  1 file 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);
>
Toke Høiland-Jørgensen May 25, 2018, 1:27 p.m. UTC | #2
Niklas Cassel <niklas.cassel@linaro.org> writes:

> Tested-by: Niklas Cassel <niklas.cassel@linaro.org>

Great, thanks!

-Toke
diff mbox

Patch

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