aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2008-03-04 21:09:26 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-03-07 16:02:59 -0500
commit11f4b1cec98ad95abda80dc20bdc3cecac145d77 (patch)
treec3b3c81a1e41020f30614ea1bc7377a18938bab9 /include
parent134eb5d327270c5d3816f8d812e68aa27a335ca8 (diff)
mac80211: adding mac80211_tx_control_flags and HT flags
This patch makes enum from the defines previously dwelled inside ieee80211_tx_control for better readability. The patch also addes HT flags, for 802.11n drivers: - IEEE80211_TXCTL_OFDM_HT: request low-level driver to use HT OFDM rates - IEEE80211_TXCTL_GREEN_FIELD: use green field protection - IEEE80211_TXCTL_DUP_DATA: duplicate data on both 20 Mhz channels - IEEE80211_TXCTL_40_MHZ_WIDTH: send this frame in 40Mhz width - IEEE80211_TXCTL_SHORT_GI: send this frame with short guard interval Tx command can be a combination of any of these flags, along with bitrate represented by ieee80211_rate. this will allow legacy drivers to switch easily to any 11n rate representation. Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> CC: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/mac80211.h86
1 files changed, 55 insertions, 31 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index d002b1c6e78e..cde1b4953534 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -205,6 +205,58 @@ struct ieee80211_bss_conf {
205 bool use_short_preamble; 205 bool use_short_preamble;
206}; 206};
207 207
208/**
209 * enum mac80211_tx_control_flags - flags to describe Tx configuration for
210 * the Tx frame
211 *
212 * These flags are used with the @flags member of &ieee80211_tx_control
213 *
214 * @IEEE80211_TXCTL_REQ_TX_STATUS: request TX status callback for this frame.
215 * @IEEE80211_TXCTL_DO_NOT_ENCRYPT: send this frame without encryption;
216 * e.g., for EAPOL frame
217 * @IEEE80211_TXCTL_USE_RTS_CTS: use RTS-CTS before sending frame
218 * @IEEE80211_TXCTL_USE_CTS_PROTECT: use CTS protection for the frame (e.g.,
219 * for combined 802.11g / 802.11b networks)
220 * @IEEE80211_TXCTL_NO_ACK: tell the low level not to wait for an ack
221 * @IEEE80211_TXCTL_RATE_CTRL_PROBE
222 * @EEE80211_TXCTL_CLEAR_PS_FILT: clear powersave filter
223 * for destination station
224 * @IEEE80211_TXCTL_REQUEUE:
225 * @IEEE80211_TXCTL_FIRST_FRAGMENT: this is a first fragment of the frame
226 * @IEEE80211_TXCTL_LONG_RETRY_LIMIT: this frame should be send using the
227 * through set_retry_limit configured long
228 * retry value
229 * @IEEE80211_TXCTL_EAPOL_FRAME: internal to mac80211
230 * @IEEE80211_TXCTL_SEND_AFTER_DTIM: send this frame after DTIM beacon
231 * @IEEE80211_TXCTL_AMPDU: this frame should be sent as part of an A-MPDU
232 * @IEEE80211_TXCTL_OFDM_HT: this frame can be sent in HT OFDM rates
233 * @IEEE80211_TXCTL_GREEN_FIELD: use green field protection for this frame
234 * @IEEE80211_TXCTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width
235 * @IEEE80211_TXCTL_DUP_DATA: duplicate data frame on both 20 Mhz channels
236 * @IEEE80211_TXCTL_SHORT_GI: send this frame using short guard interval
237 */
238enum mac80211_tx_control_flags {
239 IEEE80211_TXCTL_REQ_TX_STATUS = (1<<0),
240 IEEE80211_TXCTL_DO_NOT_ENCRYPT = (1<<1),
241 IEEE80211_TXCTL_USE_RTS_CTS = (1<<2),
242 IEEE80211_TXCTL_USE_CTS_PROTECT = (1<<3),
243 IEEE80211_TXCTL_NO_ACK = (1<<4),
244 IEEE80211_TXCTL_RATE_CTRL_PROBE = (1<<5),
245 IEEE80211_TXCTL_CLEAR_PS_FILT = (1<<6),
246 IEEE80211_TXCTL_REQUEUE = (1<<7),
247 IEEE80211_TXCTL_FIRST_FRAGMENT = (1<<8),
248 IEEE80211_TXCTL_SHORT_PREAMBLE = (1<<9),
249 IEEE80211_TXCTL_LONG_RETRY_LIMIT = (1<<10),
250 IEEE80211_TXCTL_EAPOL_FRAME = (1<<11),
251 IEEE80211_TXCTL_SEND_AFTER_DTIM = (1<<12),
252 IEEE80211_TXCTL_AMPDU = (1<<13),
253 IEEE80211_TXCTL_OFDM_HT = (1<<14),
254 IEEE80211_TXCTL_GREEN_FIELD = (1<<15),
255 IEEE80211_TXCTL_40_MHZ_WIDTH = (1<<16),
256 IEEE80211_TXCTL_DUP_DATA = (1<<17),
257 IEEE80211_TXCTL_SHORT_GI = (1<<18),
258};
259
208/* Transmit control fields. This data structure is passed to low-level driver 260/* Transmit control fields. This data structure is passed to low-level driver
209 * with each TX frame. The low-level driver is responsible for configuring 261 * with each TX frame. The low-level driver is responsible for configuring
210 * the hardware to use given values (depending on what is supported). */ 262 * the hardware to use given values (depending on what is supported). */
@@ -219,42 +271,14 @@ struct ieee80211_tx_control {
219 /* retry rate for the last retries */ 271 /* retry rate for the last retries */
220 struct ieee80211_rate *alt_retry_rate; 272 struct ieee80211_rate *alt_retry_rate;
221 273
222#define IEEE80211_TXCTL_REQ_TX_STATUS (1<<0)/* request TX status callback for 274 u32 flags; /* tx control flags defined above */
223 * this frame */
224#define IEEE80211_TXCTL_DO_NOT_ENCRYPT (1<<1) /* send this frame without
225 * encryption; e.g., for EAPOL
226 * frames */
227#define IEEE80211_TXCTL_USE_RTS_CTS (1<<2) /* use RTS-CTS before sending
228 * frame */
229#define IEEE80211_TXCTL_USE_CTS_PROTECT (1<<3) /* use CTS protection for the
230 * frame (e.g., for combined
231 * 802.11g / 802.11b networks) */
232#define IEEE80211_TXCTL_NO_ACK (1<<4) /* tell the low level not to
233 * wait for an ack */
234#define IEEE80211_TXCTL_RATE_CTRL_PROBE (1<<5)
235#define IEEE80211_TXCTL_CLEAR_PS_FILT (1<<6) /* clear powersave filter
236 * for destination station */
237#define IEEE80211_TXCTL_REQUEUE (1<<7)
238#define IEEE80211_TXCTL_FIRST_FRAGMENT (1<<8) /* this is a first fragment of
239 * the frame */
240#define IEEE80211_TXCTL_SHORT_PREAMBLE (1<<9)
241#define IEEE80211_TXCTL_LONG_RETRY_LIMIT (1<<10) /* this frame should be send
242 * using the through
243 * set_retry_limit configured
244 * long retry value */
245#define IEEE80211_TXCTL_EAPOL_FRAME (1<<11) /* internal to mac80211 */
246#define IEEE80211_TXCTL_SEND_AFTER_DTIM (1<<12) /* send this frame after DTIM
247 * beacon */
248#define IEEE80211_TXCTL_AMPDU (1<<13) /* this frame should be sent
249 * as part of an A-MPDU */
250 u32 flags; /* tx control flags defined
251 * above */
252 u8 key_idx; /* keyidx from hw->set_key(), undefined if 275 u8 key_idx; /* keyidx from hw->set_key(), undefined if
253 * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */ 276 * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */
254 u8 retry_limit; /* 1 = only first attempt, 2 = one retry, .. 277 u8 retry_limit; /* 1 = only first attempt, 2 = one retry, ..
255 * This could be used when set_retry_limit 278 * This could be used when set_retry_limit
256 * is not implemented by the driver */ 279 * is not implemented by the driver */
257 u8 antenna_sel_tx; /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */ 280 u8 antenna_sel_tx; /* 0 = default/diversity, otherwise bit
281 * position represents antenna number used */
258 u8 icv_len; /* length of the ICV/MIC field in octets */ 282 u8 icv_len; /* length of the ICV/MIC field in octets */
259 u8 iv_len; /* length of the IV field in octets */ 283 u8 iv_len; /* length of the IV field in octets */
260 u8 queue; /* hardware queue to use for this frame; 284 u8 queue; /* hardware queue to use for this frame;