aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2007-11-26 09:14:30 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:55:30 -0500
commit10816d40f2e9500057cb46d7608a362a1d10bb9b (patch)
treead026a7a9c9ac9458e2895f16a1f21f32e6a4b80
parent82b3cad942ebf1f64798e6ec3c46c277822e1fce (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.h56
-rw-r--r--net/mac80211/sta_info.h3
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 */
153struct 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 */
171struct 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 */
154struct ieee80211_hw_mode { 191struct 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 */
411enum ieee80211_conf_flags { 449enum 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 */
438struct ieee80211_conf { 479struct 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;