diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 106 |
1 files changed, 72 insertions, 34 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 7a80c3981237..5ab6a350ee6d 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -205,6 +205,62 @@ 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. number | ||
233 | * of streams when this flag is on can be extracted | ||
234 | * from antenna_sel_tx, so if 1 antenna is marked | ||
235 | * use SISO, 2 antennas marked use MIMO, n antennas | ||
236 | * marked use MIMO_n. | ||
237 | * @IEEE80211_TXCTL_GREEN_FIELD: use green field protection for this frame | ||
238 | * @IEEE80211_TXCTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width | ||
239 | * @IEEE80211_TXCTL_DUP_DATA: duplicate data frame on both 20 Mhz channels | ||
240 | * @IEEE80211_TXCTL_SHORT_GI: send this frame using short guard interval | ||
241 | */ | ||
242 | enum mac80211_tx_control_flags { | ||
243 | IEEE80211_TXCTL_REQ_TX_STATUS = (1<<0), | ||
244 | IEEE80211_TXCTL_DO_NOT_ENCRYPT = (1<<1), | ||
245 | IEEE80211_TXCTL_USE_RTS_CTS = (1<<2), | ||
246 | IEEE80211_TXCTL_USE_CTS_PROTECT = (1<<3), | ||
247 | IEEE80211_TXCTL_NO_ACK = (1<<4), | ||
248 | IEEE80211_TXCTL_RATE_CTRL_PROBE = (1<<5), | ||
249 | IEEE80211_TXCTL_CLEAR_PS_FILT = (1<<6), | ||
250 | IEEE80211_TXCTL_REQUEUE = (1<<7), | ||
251 | IEEE80211_TXCTL_FIRST_FRAGMENT = (1<<8), | ||
252 | IEEE80211_TXCTL_SHORT_PREAMBLE = (1<<9), | ||
253 | IEEE80211_TXCTL_LONG_RETRY_LIMIT = (1<<10), | ||
254 | IEEE80211_TXCTL_EAPOL_FRAME = (1<<11), | ||
255 | IEEE80211_TXCTL_SEND_AFTER_DTIM = (1<<12), | ||
256 | IEEE80211_TXCTL_AMPDU = (1<<13), | ||
257 | IEEE80211_TXCTL_OFDM_HT = (1<<14), | ||
258 | IEEE80211_TXCTL_GREEN_FIELD = (1<<15), | ||
259 | IEEE80211_TXCTL_40_MHZ_WIDTH = (1<<16), | ||
260 | IEEE80211_TXCTL_DUP_DATA = (1<<17), | ||
261 | IEEE80211_TXCTL_SHORT_GI = (1<<18), | ||
262 | }; | ||
263 | |||
208 | /* Transmit control fields. This data structure is passed to low-level driver | 264 | /* 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 | 265 | * with each TX frame. The low-level driver is responsible for configuring |
210 | * the hardware to use given values (depending on what is supported). */ | 266 | * the hardware to use given values (depending on what is supported). */ |
@@ -219,42 +275,14 @@ struct ieee80211_tx_control { | |||
219 | /* retry rate for the last retries */ | 275 | /* retry rate for the last retries */ |
220 | struct ieee80211_rate *alt_retry_rate; | 276 | struct ieee80211_rate *alt_retry_rate; |
221 | 277 | ||
222 | #define IEEE80211_TXCTL_REQ_TX_STATUS (1<<0)/* request TX status callback for | 278 | 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 | 279 | u8 key_idx; /* keyidx from hw->set_key(), undefined if |
253 | * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */ | 280 | * IEEE80211_TXCTL_DO_NOT_ENCRYPT is set */ |
254 | u8 retry_limit; /* 1 = only first attempt, 2 = one retry, .. | 281 | u8 retry_limit; /* 1 = only first attempt, 2 = one retry, .. |
255 | * This could be used when set_retry_limit | 282 | * This could be used when set_retry_limit |
256 | * is not implemented by the driver */ | 283 | * is not implemented by the driver */ |
257 | u8 antenna_sel_tx; /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */ | 284 | u8 antenna_sel_tx; /* 0 = default/diversity, otherwise bit |
285 | * position represents antenna number used */ | ||
258 | u8 icv_len; /* length of the ICV/MIC field in octets */ | 286 | u8 icv_len; /* length of the ICV/MIC field in octets */ |
259 | u8 iv_len; /* length of the IV field in octets */ | 287 | u8 iv_len; /* length of the IV field in octets */ |
260 | u8 queue; /* hardware queue to use for this frame; | 288 | u8 queue; /* hardware queue to use for this frame; |
@@ -407,7 +435,6 @@ enum ieee80211_conf_flags { | |||
407 | * @channel: the channel to tune to | 435 | * @channel: the channel to tune to |
408 | */ | 436 | */ |
409 | struct ieee80211_conf { | 437 | struct ieee80211_conf { |
410 | unsigned int regulatory_domain; | ||
411 | int radio_enabled; | 438 | int radio_enabled; |
412 | 439 | ||
413 | int beacon_int; | 440 | int beacon_int; |
@@ -437,12 +464,14 @@ struct ieee80211_conf { | |||
437 | * @IEEE80211_IF_TYPE_WDS: interface in WDS mode. | 464 | * @IEEE80211_IF_TYPE_WDS: interface in WDS mode. |
438 | * @IEEE80211_IF_TYPE_VLAN: VLAN interface bound to an AP, drivers | 465 | * @IEEE80211_IF_TYPE_VLAN: VLAN interface bound to an AP, drivers |
439 | * will never see this type. | 466 | * will never see this type. |
467 | * @IEEE80211_IF_TYPE_MESH_POINT: 802.11s mesh point | ||
440 | */ | 468 | */ |
441 | enum ieee80211_if_types { | 469 | enum ieee80211_if_types { |
442 | IEEE80211_IF_TYPE_INVALID, | 470 | IEEE80211_IF_TYPE_INVALID, |
443 | IEEE80211_IF_TYPE_AP, | 471 | IEEE80211_IF_TYPE_AP, |
444 | IEEE80211_IF_TYPE_STA, | 472 | IEEE80211_IF_TYPE_STA, |
445 | IEEE80211_IF_TYPE_IBSS, | 473 | IEEE80211_IF_TYPE_IBSS, |
474 | IEEE80211_IF_TYPE_MESH_POINT, | ||
446 | IEEE80211_IF_TYPE_MNTR, | 475 | IEEE80211_IF_TYPE_MNTR, |
447 | IEEE80211_IF_TYPE_WDS, | 476 | IEEE80211_IF_TYPE_WDS, |
448 | IEEE80211_IF_TYPE_VLAN, | 477 | IEEE80211_IF_TYPE_VLAN, |
@@ -464,6 +493,14 @@ struct ieee80211_vif { | |||
464 | u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *)))); | 493 | u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *)))); |
465 | }; | 494 | }; |
466 | 495 | ||
496 | static inline bool ieee80211_vif_is_mesh(struct ieee80211_vif *vif) | ||
497 | { | ||
498 | #ifdef CONFIG_MAC80211_MESH | ||
499 | return vif->type == IEEE80211_IF_TYPE_MESH_POINT; | ||
500 | #endif | ||
501 | return false; | ||
502 | } | ||
503 | |||
467 | /** | 504 | /** |
468 | * struct ieee80211_if_init_conf - initial configuration of an interface | 505 | * struct ieee80211_if_init_conf - initial configuration of an interface |
469 | * | 506 | * |
@@ -1087,8 +1124,9 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
1087 | /** | 1124 | /** |
1088 | * ieee80211_register_hw - Register hardware device | 1125 | * ieee80211_register_hw - Register hardware device |
1089 | * | 1126 | * |
1090 | * You must call this function before any other functions | 1127 | * You must call this function before any other functions in |
1091 | * except ieee80211_register_hwmode. | 1128 | * mac80211. Note that before a hardware can be registered, you |
1129 | * need to fill the contained wiphy's information. | ||
1092 | * | 1130 | * |
1093 | * @hw: the device to register as returned by ieee80211_alloc_hw() | 1131 | * @hw: the device to register as returned by ieee80211_alloc_hw() |
1094 | */ | 1132 | */ |