From b6a82f8d63d19576ebb1ebdb716739c9c34c2273 Mon Sep 17 00:00:00 2001 From: Ben Greear Date: Mon, 31 Jan 2011 11:30:09 -0800 Subject: [PATCH] --- yaml --- r: 237014 b: refs/heads/master c: 2cf22b897c63df65e7360a1897e5312c58617fbd h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/mac80211/iface.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 86c682867384..9ee36efbc6be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e6975f7b8ca31febaa94a1ee1acfb5322f8a82b +refs/heads/master: 2cf22b897c63df65e7360a1897e5312c58617fbd diff --git a/trunk/net/mac80211/iface.c b/trunk/net/mac80211/iface.c index 8acba456744e..5a4e19b88032 100644 --- a/trunk/net/mac80211/iface.c +++ b/trunk/net/mac80211/iface.c @@ -382,6 +382,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb, *tmp; u32 hw_reconf_flags = 0; int i; + enum nl80211_channel_type orig_ct; if (local->scan_sdata == sdata) ieee80211_scan_cancel(local); @@ -542,8 +543,14 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, hw_reconf_flags = 0; } + /* Re-calculate channel-type, in case there are multiple vifs + * on different channel types. + */ + orig_ct = local->_oper_channel_type; + ieee80211_set_channel_type(local, NULL, NL80211_CHAN_NO_HT); + /* do after stop to avoid reconfiguring when we stop anyway */ - if (hw_reconf_flags) + if (hw_reconf_flags || (orig_ct != local->_oper_channel_type)) ieee80211_hw_config(local, hw_reconf_flags); spin_lock_irqsave(&local->queue_stop_reason_lock, flags);