On Mon, 2011-01-31 at 11:30 -0800, greearb@xxxxxxxxxxxxxxx wrote: > From: Ben Greear <greearb@xxxxxxxxxxxxxxx> > > When a vif goes away, it could cause the super-chan > to be recalculated differently, so do that calculation > on iface removal. Seems fine to me. Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> > --- > v2: Just deal with channel-change calc, not the WARN_ON_ONCE > stuff. Will get that later in separate patch. > > :100644 100644 605c222... abf5f8e... M net/mac80211/iface.c > net/mac80211/iface.c | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c > index 605c222..abf5f8e 100644 > --- a/net/mac80211/iface.c > +++ b/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); -- 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