diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2007-11-26 09:14:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:55:30 -0500 |
commit | 10816d40f2e9500057cb46d7608a362a1d10bb9b (patch) | |
tree | ad026a7a9c9ac9458e2895f16a1f21f32e6a4b80 | |
parent | 82b3cad942ebf1f64798e6ec3c46c277822e1fce (diff) |
mac80211: adding 802.11n HT framework definitions
New structures:
- ieee80211_ht_info: describing STA's HT capabilities
- ieee80211_ht_bss_info: describing BSS's HT characteristics
Changed structures:
- ieee80211_hw_mode: now also holds PHY HT capabilities for each HW mode
- ieee80211_conf: ht_conf holds current self HT configuration
ht_bss_conf holds current BSS HT configuration
- flag IEEE80211_CONF_SUPPORT_HT_MODE added to indicate if HT use is
desired
- sta_info: now also holds Peer's HT capabilities
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/mac80211.h | 56 | ||||
-rw-r--r-- | net/mac80211/sta_info.h | 3 |
2 files changed, 53 insertions, 6 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 4cc5b1c8a4f1..79e96455438a 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -139,17 +139,54 @@ enum ieee80211_phymode { | |||
139 | }; | 139 | }; |
140 | 140 | ||
141 | /** | 141 | /** |
142 | * struct ieee80211_ht_info - describing STA's HT capabilities | ||
143 | * | ||
144 | * This structure describes most essential parameters needed | ||
145 | * to describe 802.11n HT capabilities for an STA. | ||
146 | * | ||
147 | * @ht_supported: is HT supported by STA, 0: no, 1: yes | ||
148 | * @cap: HT capabilities map as described in 802.11n spec | ||
149 | * @ampdu_factor: Maximum A-MPDU length factor | ||
150 | * @ampdu_density: Minimum A-MPDU spacing | ||
151 | * @supp_mcs_set: Supported MCS set as described in 802.11n spec | ||
152 | */ | ||
153 | struct ieee80211_ht_info { | ||
154 | u8 ht_supported; | ||
155 | u16 cap; /* use IEEE80211_HT_CAP_ */ | ||
156 | u8 ampdu_factor; | ||
157 | u8 ampdu_density; | ||
158 | u8 supp_mcs_set[16]; | ||
159 | }; | ||
160 | |||
161 | /** | ||
162 | * struct ieee80211_ht_bss_info - describing BSS's HT characteristics | ||
163 | * | ||
164 | * This structure describes most essential parameters needed | ||
165 | * to describe 802.11n HT characteristics in a BSS | ||
166 | * | ||
167 | * @primary_channel: channel number of primery channel | ||
168 | * @bss_cap: 802.11n's general BSS capabilities (e.g. channel width) | ||
169 | * @bss_op_mode: 802.11n's BSS operation modes (e.g. HT protection) | ||
170 | */ | ||
171 | struct ieee80211_ht_bss_info { | ||
172 | u8 primary_channel; | ||
173 | u8 bss_cap; /* use IEEE80211_HT_IE_CHA_ */ | ||
174 | u8 bss_op_mode; /* use IEEE80211_HT_IE_ */ | ||
175 | }; | ||
176 | |||
177 | /** | ||
142 | * struct ieee80211_hw_mode - PHY mode definition | 178 | * struct ieee80211_hw_mode - PHY mode definition |
143 | * | 179 | * |
144 | * This structure describes the capabilities supported by the device | 180 | * This structure describes the capabilities supported by the device |
145 | * in a single PHY mode. | 181 | * in a single PHY mode. |
146 | * | 182 | * |
183 | * @list: internal | ||
184 | * @channels: pointer to array of supported channels | ||
185 | * @rates: pointer to array of supported bitrates | ||
147 | * @mode: the PHY mode for this definition | 186 | * @mode: the PHY mode for this definition |
148 | * @num_channels: number of supported channels | 187 | * @num_channels: number of supported channels |
149 | * @channels: pointer to array of supported channels | ||
150 | * @num_rates: number of supported bitrates | 188 | * @num_rates: number of supported bitrates |
151 | * @rates: pointer to array of supported bitrates | 189 | * @ht_info: PHY's 802.11n HT abilities for this mode |
152 | * @list: internal | ||
153 | */ | 190 | */ |
154 | struct ieee80211_hw_mode { | 191 | struct ieee80211_hw_mode { |
155 | struct list_head list; | 192 | struct list_head list; |
@@ -158,6 +195,7 @@ struct ieee80211_hw_mode { | |||
158 | enum ieee80211_phymode mode; | 195 | enum ieee80211_phymode mode; |
159 | int num_channels; | 196 | int num_channels; |
160 | int num_rates; | 197 | int num_rates; |
198 | struct ieee80211_ht_info ht_info; | ||
161 | }; | 199 | }; |
162 | 200 | ||
163 | /** | 201 | /** |
@@ -406,11 +444,12 @@ struct ieee80211_tx_status { | |||
406 | * | 444 | * |
407 | * @IEEE80211_CONF_SHORT_SLOT_TIME: use 802.11g short slot time | 445 | * @IEEE80211_CONF_SHORT_SLOT_TIME: use 802.11g short slot time |
408 | * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported) | 446 | * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported) |
409 | * | 447 | * @IEEE80211_CONF_SUPPORT_HT_MODE: use 802.11n HT capabilities (if supported) |
410 | */ | 448 | */ |
411 | enum ieee80211_conf_flags { | 449 | enum ieee80211_conf_flags { |
412 | IEEE80211_CONF_SHORT_SLOT_TIME = 1<<0, | 450 | IEEE80211_CONF_SHORT_SLOT_TIME = (1<<0), |
413 | IEEE80211_CONF_RADIOTAP = 1<<1, | 451 | IEEE80211_CONF_RADIOTAP = (1<<1), |
452 | IEEE80211_CONF_SUPPORT_HT_MODE = (1<<2), | ||
414 | }; | 453 | }; |
415 | 454 | ||
416 | /** | 455 | /** |
@@ -434,6 +473,8 @@ enum ieee80211_conf_flags { | |||
434 | * @antenna_sel_tx: transmit antenna selection, 0: default/diversity, | 473 | * @antenna_sel_tx: transmit antenna selection, 0: default/diversity, |
435 | * 1/2: antenna 0/1 | 474 | * 1/2: antenna 0/1 |
436 | * @antenna_sel_rx: receive antenna selection, like @antenna_sel_tx | 475 | * @antenna_sel_rx: receive antenna selection, like @antenna_sel_tx |
476 | * @ht_conf: describes current self configuration of 802.11n HT capabilies | ||
477 | * @ht_bss_conf: describes current BSS configuration of 802.11n HT parameters | ||
437 | */ | 478 | */ |
438 | struct ieee80211_conf { | 479 | struct ieee80211_conf { |
439 | int channel; /* IEEE 802.11 channel number */ | 480 | int channel; /* IEEE 802.11 channel number */ |
@@ -452,6 +493,9 @@ struct ieee80211_conf { | |||
452 | u8 antenna_max; | 493 | u8 antenna_max; |
453 | u8 antenna_sel_tx; | 494 | u8 antenna_sel_tx; |
454 | u8 antenna_sel_rx; | 495 | u8 antenna_sel_rx; |
496 | |||
497 | struct ieee80211_ht_info ht_conf; | ||
498 | struct ieee80211_ht_bss_info ht_bss_conf; | ||
455 | }; | 499 | }; |
456 | 500 | ||
457 | /** | 501 | /** |
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 8f7ebe41c024..e1a4ac1d48d7 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -99,6 +99,9 @@ struct sta_info { | |||
99 | 99 | ||
100 | u16 listen_interval; | 100 | u16 listen_interval; |
101 | 101 | ||
102 | struct ieee80211_ht_info ht_info; /* 802.11n HT capabilities | ||
103 | of this STA */ | ||
104 | |||
102 | #ifdef CONFIG_MAC80211_DEBUGFS | 105 | #ifdef CONFIG_MAC80211_DEBUGFS |
103 | struct sta_info_debugfsdentries { | 106 | struct sta_info_debugfsdentries { |
104 | struct dentry *dir; | 107 | struct dentry *dir; |