aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2010-05-05 09:28:27 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-05-07 14:55:51 -0400
commit0aaffa9b9699894aab3266195a529baf9f96ac29 (patch)
tree26fe5f5277ac6d7061ea723f92d4038b0c28b0b8 /net/mac80211/ieee80211_i.h
parentf444de05d20e27cdd960c13fcbcfca3099f03143 (diff)
mac80211: improve HT channel handling
Currently, when one interface switches HT mode, all others will follow along. This is clearly undesirable, since the new one might switch to no-HT while another one is operating in HT. Address this issue by keeping track of the HT mode per interface, and allowing only changes that are compatible, i.e. switching into HT40+ is not possible when another interface is in HT40-, in that case the second one needs to fall back to HT20. Also, to allow drivers to know what's going on, store the per-interface HT mode (channel type) in the virtual interface's bss_conf. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 359edff31471..69e7f4131f46 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -768,7 +768,7 @@ struct ieee80211_local {
768 enum mac80211_scan_state next_scan_state; 768 enum mac80211_scan_state next_scan_state;
769 struct delayed_work scan_work; 769 struct delayed_work scan_work;
770 struct ieee80211_sub_if_data *scan_sdata; 770 struct ieee80211_sub_if_data *scan_sdata;
771 enum nl80211_channel_type oper_channel_type; 771 enum nl80211_channel_type _oper_channel_type;
772 struct ieee80211_channel *oper_channel, *csa_channel; 772 struct ieee80211_channel *oper_channel, *csa_channel;
773 773
774 /* Temporary remain-on-channel for off-channel operations */ 774 /* Temporary remain-on-channel for off-channel operations */
@@ -1239,6 +1239,9 @@ enum ieee80211_chan_mode {
1239enum ieee80211_chan_mode 1239enum ieee80211_chan_mode
1240ieee80211_get_channel_mode(struct ieee80211_local *local, 1240ieee80211_get_channel_mode(struct ieee80211_local *local,
1241 struct ieee80211_sub_if_data *ignore); 1241 struct ieee80211_sub_if_data *ignore);
1242bool ieee80211_set_channel_type(struct ieee80211_local *local,
1243 struct ieee80211_sub_if_data *sdata,
1244 enum nl80211_channel_type chantype);
1242 1245
1243#ifdef CONFIG_MAC80211_NOINLINE 1246#ifdef CONFIG_MAC80211_NOINLINE
1244#define debug_noinline noinline 1247#define debug_noinline noinline