OLD | NEW |
1 /* | 1 /* |
2 * mac80211 <-> driver interface | 2 * mac80211 <-> driver interface |
3 * | 3 * |
4 * Copyright 2002-2005, Devicescape Software, Inc. | 4 * Copyright 2002-2005, Devicescape Software, Inc. |
5 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> | 5 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> |
6 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> | 6 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> |
7 * | 7 * |
8 * This program is free software; you can redistribute it and/or modify | 8 * This program is free software; you can redistribute it and/or modify |
9 * it under the terms of the GNU General Public License version 2 as | 9 * it under the terms of the GNU General Public License version 2 as |
10 * published by the Free Software Foundation. | 10 * published by the Free Software Foundation. |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 * after TX status because the destination was asleep, it must not | 308 * after TX status because the destination was asleep, it must not |
309 * be modified again (no seqno assignment, crypto, etc.) | 309 * be modified again (no seqno assignment, crypto, etc.) |
310 * @IEEE80211_TX_INTFL_HAS_RADIOTAP: This frame was injected and still | 310 * @IEEE80211_TX_INTFL_HAS_RADIOTAP: This frame was injected and still |
311 * has a radiotap header at skb->data. | 311 * has a radiotap header at skb->data. |
312 * @IEEE80211_TX_INTFL_NL80211_FRAME_TX: Frame was requested through nl80211 | 312 * @IEEE80211_TX_INTFL_NL80211_FRAME_TX: Frame was requested through nl80211 |
313 * MLME command (internal to mac80211 to figure out whether to send TX | 313 * MLME command (internal to mac80211 to figure out whether to send TX |
314 * status to user space) | 314 * status to user space) |
315 * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame | 315 * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame |
316 * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this | 316 * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this |
317 * frame and selects the maximum number of streams that it can use. | 317 * frame and selects the maximum number of streams that it can use. |
| 318 * |
| 319 * Note: If you have to add new flags to the enumeration, then don't |
| 320 * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. |
318 */ | 321 */ |
319 enum mac80211_tx_control_flags { | 322 enum mac80211_tx_control_flags { |
320 IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), | 323 IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
321 IEEE80211_TX_CTL_ASSIGN_SEQ = BIT(1), | 324 IEEE80211_TX_CTL_ASSIGN_SEQ = BIT(1), |
322 IEEE80211_TX_CTL_NO_ACK = BIT(2), | 325 IEEE80211_TX_CTL_NO_ACK = BIT(2), |
323 IEEE80211_TX_CTL_CLEAR_PS_FILT = BIT(3), | 326 IEEE80211_TX_CTL_CLEAR_PS_FILT = BIT(3), |
324 IEEE80211_TX_CTL_FIRST_FRAGMENT = BIT(4), | 327 IEEE80211_TX_CTL_FIRST_FRAGMENT = BIT(4), |
325 IEEE80211_TX_CTL_SEND_AFTER_DTIM = BIT(5), | 328 IEEE80211_TX_CTL_SEND_AFTER_DTIM = BIT(5), |
326 IEEE80211_TX_CTL_AMPDU = BIT(6), | 329 IEEE80211_TX_CTL_AMPDU = BIT(6), |
327 IEEE80211_TX_CTL_INJECTED = BIT(7), | 330 IEEE80211_TX_CTL_INJECTED = BIT(7), |
328 IEEE80211_TX_STAT_TX_FILTERED = BIT(8), | 331 IEEE80211_TX_STAT_TX_FILTERED = BIT(8), |
329 IEEE80211_TX_STAT_ACK = BIT(9), | 332 IEEE80211_TX_STAT_ACK = BIT(9), |
330 IEEE80211_TX_STAT_AMPDU = BIT(10), | 333 IEEE80211_TX_STAT_AMPDU = BIT(10), |
331 IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11), | 334 IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11), |
332 IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), | 335 IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), |
333 IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), | 336 IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), |
334 IEEE80211_TX_INTFL_RETRIED = BIT(15), | 337 IEEE80211_TX_INTFL_RETRIED = BIT(15), |
335 IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), | 338 IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), |
336 IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), | 339 IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), |
337 IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), | 340 IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), |
338 IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), | 341 IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), |
339 IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20), | 342 IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20), |
340 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), | 343 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), |
341 IEEE80211_TX_CTL_LDPC = BIT(22), | 344 IEEE80211_TX_CTL_LDPC = BIT(22), |
342 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), | 345 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), |
343 }; | 346 }; |
344 | 347 |
345 #define IEEE80211_TX_CTL_STBC_SHIFT 23 | 348 #define IEEE80211_TX_CTL_STBC_SHIFT 23 |
346 | 349 |
| 350 /* |
| 351 * This definition is used as a mask to clear all temporary flags, which are |
| 352 * set by the tx handlers for each transmission attempt by the mac80211 stack. |
| 353 */ |
| 354 #define IEEE80211_TX_TEMPORARY_FLAGS (IEEE80211_TX_CTL_NO_ACK | \ |
| 355 IEEE80211_TX_CTL_CLEAR_PS_FILT | IEEE80211_TX_CTL_FIRST_FRAGMENT | \ |
| 356 IEEE80211_TX_CTL_SEND_AFTER_DTIM | IEEE80211_TX_CTL_AMPDU | \ |
| 357 IEEE80211_TX_STAT_TX_FILTERED | IEEE80211_TX_STAT_ACK | \ |
| 358 IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_STAT_AMPDU_NO_BACK | \ |
| 359 IEEE80211_TX_CTL_RATE_CTRL_PROBE | IEEE80211_TX_CTL_PSPOLL_RESPONSE | \ |
| 360 IEEE80211_TX_CTL_MORE_FRAMES | IEEE80211_TX_CTL_LDPC | \ |
| 361 IEEE80211_TX_CTL_STBC) |
| 362 |
347 /** | 363 /** |
348 * enum mac80211_rate_control_flags - per-rate flags set by the | 364 * enum mac80211_rate_control_flags - per-rate flags set by the |
349 * Rate Control algorithm. | 365 * Rate Control algorithm. |
350 * | 366 * |
351 * These flags are set by the Rate control algorithm for each rate during tx, | 367 * These flags are set by the Rate control algorithm for each rate during tx, |
352 * in the @flags member of struct ieee80211_tx_rate. | 368 * in the @flags member of struct ieee80211_tx_rate. |
353 * | 369 * |
354 * @IEEE80211_TX_RC_USE_RTS_CTS: Use RTS/CTS exchange for this rate. | 370 * @IEEE80211_TX_RC_USE_RTS_CTS: Use RTS/CTS exchange for this rate. |
355 * @IEEE80211_TX_RC_USE_CTS_PROTECT: CTS-to-self protection is required. | 371 * @IEEE80211_TX_RC_USE_CTS_PROTECT: CTS-to-self protection is required. |
356 * This is set if the current BSS requires ERP protection. | 372 * This is set if the current BSS requires ERP protection. |
(...skipping 2322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2679 return conf_is_ht40_minus(conf) || conf_is_ht40_plus(conf); | 2695 return conf_is_ht40_minus(conf) || conf_is_ht40_plus(conf); |
2680 } | 2696 } |
2681 | 2697 |
2682 static inline bool | 2698 static inline bool |
2683 conf_is_ht(struct ieee80211_conf *conf) | 2699 conf_is_ht(struct ieee80211_conf *conf) |
2684 { | 2700 { |
2685 return conf->channel_type != NL80211_CHAN_NO_HT; | 2701 return conf->channel_type != NL80211_CHAN_NO_HT; |
2686 } | 2702 } |
2687 | 2703 |
2688 #endif /* MAC80211_H */ | 2704 #endif /* MAC80211_H */ |
OLD | NEW |