mac80211: fix channel type recalculation with HT and non-HT interfaces
authorFelix Fietkau <nbd@openwrt.org>
Fri, 11 Mar 2011 20:45:51 +0000 (21:45 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 14 Mar 2011 18:46:58 +0000 (14:46 -0400)
When running an AP interface along with the cooked monitor interface created
by hostapd, adding an interface and deleting it again triggers a channel type
recalculation during which the (non-HT) monitor interface takes precedence
over the HT AP interface, thus causing the channel type to be set to non-HT.
Fix this by ensuring that a more wide channel type will not be overwritten
by a less wide channel type.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/chan.c

index 5b24740fc0b0698c65cc1141c981631160a1efc8..889c3e93e0f4a9df2a1a2007799f2a2f13e8a496 100644 (file)
@@ -77,6 +77,9 @@ bool ieee80211_set_channel_type(struct ieee80211_local *local,
                switch (tmp->vif.bss_conf.channel_type) {
                case NL80211_CHAN_NO_HT:
                case NL80211_CHAN_HT20:
+                       if (superchan > tmp->vif.bss_conf.channel_type)
+                               break;
+
                        superchan = tmp->vif.bss_conf.channel_type;
                        break;
                case NL80211_CHAN_HT40PLUS: