aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h106
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 */
242enum 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 */
409struct ieee80211_conf { 437struct 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 */
441enum ieee80211_if_types { 469enum 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
496static 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 */