diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 656442c6b1c3..24a69f6075c2 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -115,17 +115,17 @@ enum ieee80211_max_queues { | |||
115 | * The information provided in this structure is required for QoS | 115 | * The information provided in this structure is required for QoS |
116 | * transmit queue configuration. Cf. IEEE 802.11 7.3.2.29. | 116 | * transmit queue configuration. Cf. IEEE 802.11 7.3.2.29. |
117 | * | 117 | * |
118 | * @aifs: arbitration interface space [0..255, -1: use default] | 118 | * @aifs: arbitration interface space [0..255] |
119 | * @cw_min: minimum contention window [will be a value of the form | 119 | * @cw_min: minimum contention window [a value of the form |
120 | * 2^n-1 in the range 1..1023; 0: use default] | 120 | * 2^n-1 in the range 1..32767] |
121 | * @cw_max: maximum contention window [like @cw_min] | 121 | * @cw_max: maximum contention window [like @cw_min] |
122 | * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled | 122 | * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled |
123 | */ | 123 | */ |
124 | struct ieee80211_tx_queue_params { | 124 | struct ieee80211_tx_queue_params { |
125 | s16 aifs; | 125 | u16 txop; |
126 | u16 cw_min; | 126 | u16 cw_min; |
127 | u16 cw_max; | 127 | u16 cw_max; |
128 | u16 txop; | 128 | u8 aifs; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | /** | 131 | /** |
@@ -239,6 +239,17 @@ struct ieee80211_bss_conf { | |||
239 | * is for the whole aggregation. | 239 | * is for the whole aggregation. |
240 | * @IEEE80211_TX_STAT_AMPDU_NO_BACK: no block ack was returned, | 240 | * @IEEE80211_TX_STAT_AMPDU_NO_BACK: no block ack was returned, |
241 | * so consider using block ack request (BAR). | 241 | * so consider using block ack request (BAR). |
242 | * @IEEE80211_TX_CTL_ASSIGN_SEQ: The driver has to assign a sequence | ||
243 | * number to this frame, taking care of not overwriting the fragment | ||
244 | * number and increasing the sequence number only when the | ||
245 | * IEEE80211_TX_CTL_FIRST_FRAGMENT flags is set. mac80211 will properly | ||
246 | * assign sequence numbers to QoS-data frames but cannot do so correctly | ||
247 | * for non-QoS-data and management frames because beacons need them from | ||
248 | * that counter as well and mac80211 cannot guarantee proper sequencing. | ||
249 | * If this flag is set, the driver should instruct the hardware to | ||
250 | * assign a sequence number to the frame or assign one itself. Cf. IEEE | ||
251 | * 802.11-2007 7.1.3.4.1 paragraph 3. This flag will always be set for | ||
252 | * beacons always be clear for frames without a sequence number field. | ||
242 | */ | 253 | */ |
243 | enum mac80211_tx_control_flags { | 254 | enum mac80211_tx_control_flags { |
244 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), | 255 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
@@ -265,6 +276,7 @@ enum mac80211_tx_control_flags { | |||
265 | IEEE80211_TX_STAT_ACK = BIT(21), | 276 | IEEE80211_TX_STAT_ACK = BIT(21), |
266 | IEEE80211_TX_STAT_AMPDU = BIT(22), | 277 | IEEE80211_TX_STAT_AMPDU = BIT(22), |
267 | IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(23), | 278 | IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(23), |
279 | IEEE80211_TX_CTL_ASSIGN_SEQ = BIT(24), | ||
268 | }; | 280 | }; |
269 | 281 | ||
270 | 282 | ||
@@ -407,11 +419,13 @@ struct ieee80211_rx_status { | |||
407 | * @IEEE80211_CONF_SHORT_SLOT_TIME: use 802.11g short slot time | 419 | * @IEEE80211_CONF_SHORT_SLOT_TIME: use 802.11g short slot time |
408 | * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported) | 420 | * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported) |
409 | * @IEEE80211_CONF_SUPPORT_HT_MODE: use 802.11n HT capabilities (if supported) | 421 | * @IEEE80211_CONF_SUPPORT_HT_MODE: use 802.11n HT capabilities (if supported) |
422 | * @IEEE80211_CONF_PS: Enable 802.11 power save mode | ||
410 | */ | 423 | */ |
411 | enum ieee80211_conf_flags { | 424 | enum ieee80211_conf_flags { |
412 | IEEE80211_CONF_SHORT_SLOT_TIME = (1<<0), | 425 | IEEE80211_CONF_SHORT_SLOT_TIME = (1<<0), |
413 | IEEE80211_CONF_RADIOTAP = (1<<1), | 426 | IEEE80211_CONF_RADIOTAP = (1<<1), |
414 | IEEE80211_CONF_SUPPORT_HT_MODE = (1<<2), | 427 | IEEE80211_CONF_SUPPORT_HT_MODE = (1<<2), |
428 | IEEE80211_CONF_PS = (1<<3), | ||
415 | }; | 429 | }; |
416 | 430 | ||
417 | /** | 431 | /** |
@@ -527,33 +541,38 @@ struct ieee80211_if_init_conf { | |||
527 | }; | 541 | }; |
528 | 542 | ||
529 | /** | 543 | /** |
544 | * enum ieee80211_if_conf_change - interface config change flags | ||
545 | * | ||
546 | * @IEEE80211_IFCC_BSSID: The BSSID changed. | ||
547 | * @IEEE80211_IFCC_SSID: The SSID changed. | ||
548 | * @IEEE80211_IFCC_BEACON: The beacon for this interface changed | ||
549 | * (currently AP and MESH only), use ieee80211_beacon_get(). | ||
550 | */ | ||
551 | enum ieee80211_if_conf_change { | ||
552 | IEEE80211_IFCC_BSSID = BIT(0), | ||
553 | IEEE80211_IFCC_SSID = BIT(1), | ||
554 | IEEE80211_IFCC_BEACON = BIT(2), | ||
555 | }; | ||
556 | |||
557 | /** | ||
530 | * struct ieee80211_if_conf - configuration of an interface | 558 | * struct ieee80211_if_conf - configuration of an interface |
531 | * | 559 | * |
532 | * @type: type of the interface. This is always the same as was specified in | 560 | * @changed: parameters that have changed, see &enum ieee80211_if_conf_change. |
533 | * &struct ieee80211_if_init_conf. The type of an interface never changes | ||
534 | * during the life of the interface; this field is present only for | ||
535 | * convenience. | ||
536 | * @bssid: BSSID of the network we are associated to/creating. | 561 | * @bssid: BSSID of the network we are associated to/creating. |
537 | * @ssid: used (together with @ssid_len) by drivers for hardware that | 562 | * @ssid: used (together with @ssid_len) by drivers for hardware that |
538 | * generate beacons independently. The pointer is valid only during the | 563 | * generate beacons independently. The pointer is valid only during the |
539 | * config_interface() call, so copy the value somewhere if you need | 564 | * config_interface() call, so copy the value somewhere if you need |
540 | * it. | 565 | * it. |
541 | * @ssid_len: length of the @ssid field. | 566 | * @ssid_len: length of the @ssid field. |
542 | * @beacon: beacon template. Valid only if @host_gen_beacon_template in | ||
543 | * &struct ieee80211_hw is set. The driver is responsible of freeing | ||
544 | * the sk_buff. | ||
545 | * @beacon_control: tx_control for the beacon template, this field is only | ||
546 | * valid when the @beacon field was set. | ||
547 | * | 567 | * |
548 | * This structure is passed to the config_interface() callback of | 568 | * This structure is passed to the config_interface() callback of |
549 | * &struct ieee80211_hw. | 569 | * &struct ieee80211_hw. |
550 | */ | 570 | */ |
551 | struct ieee80211_if_conf { | 571 | struct ieee80211_if_conf { |
552 | int type; | 572 | u32 changed; |
553 | u8 *bssid; | 573 | u8 *bssid; |
554 | u8 *ssid; | 574 | u8 *ssid; |
555 | size_t ssid_len; | 575 | size_t ssid_len; |
556 | struct sk_buff *beacon; | ||
557 | }; | 576 | }; |
558 | 577 | ||
559 | /** | 578 | /** |
@@ -681,15 +700,6 @@ enum ieee80211_tkip_key_type { | |||
681 | * any particular flags. There are some exceptions to this rule, | 700 | * any particular flags. There are some exceptions to this rule, |
682 | * however, so you are advised to review these flags carefully. | 701 | * however, so you are advised to review these flags carefully. |
683 | * | 702 | * |
684 | * @IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE: | ||
685 | * The device only needs to be supplied with a beacon template. | ||
686 | * If you need the host to generate each beacon then don't use | ||
687 | * this flag and call ieee80211_beacon_get() when you need the | ||
688 | * next beacon frame. Note that if you set this flag, you must | ||
689 | * implement the set_tim() callback for powersave mode to work | ||
690 | * properly. | ||
691 | * This flag is only relevant for access-point mode. | ||
692 | * | ||
693 | * @IEEE80211_HW_RX_INCLUDES_FCS: | 703 | * @IEEE80211_HW_RX_INCLUDES_FCS: |
694 | * Indicates that received frames passed to the stack include | 704 | * Indicates that received frames passed to the stack include |
695 | * the FCS at the end. | 705 | * the FCS at the end. |
@@ -1149,17 +1159,6 @@ enum ieee80211_ampdu_mlme_action { | |||
1149 | * function is optional if the firmware/hardware takes full care of | 1159 | * function is optional if the firmware/hardware takes full care of |
1150 | * TSF synchronization. | 1160 | * TSF synchronization. |
1151 | * | 1161 | * |
1152 | * @beacon_update: Setup beacon data for IBSS beacons. Unlike access point, | ||
1153 | * IBSS uses a fixed beacon frame which is configured using this | ||
1154 | * function. | ||
1155 | * If the driver returns success (0) from this callback, it owns | ||
1156 | * the skb. That means the driver is responsible to kfree_skb() it. | ||
1157 | * The control structure is not dynamically allocated. That means the | ||
1158 | * driver does not own the pointer and if it needs it somewhere | ||
1159 | * outside of the context of this function, it must copy it | ||
1160 | * somewhere else. | ||
1161 | * This handler is required only for IBSS mode. | ||
1162 | * | ||
1163 | * @tx_last_beacon: Determine whether the last IBSS beacon was sent by us. | 1162 | * @tx_last_beacon: Determine whether the last IBSS beacon was sent by us. |
1164 | * This is needed only for IBSS mode and the result of this function is | 1163 | * This is needed only for IBSS mode and the result of this function is |
1165 | * used to determine whether to reply to Probe Requests. | 1164 | * used to determine whether to reply to Probe Requests. |
@@ -1217,8 +1216,6 @@ struct ieee80211_ops { | |||
1217 | struct ieee80211_tx_queue_stats *stats); | 1216 | struct ieee80211_tx_queue_stats *stats); |
1218 | u64 (*get_tsf)(struct ieee80211_hw *hw); | 1217 | u64 (*get_tsf)(struct ieee80211_hw *hw); |
1219 | void (*reset_tsf)(struct ieee80211_hw *hw); | 1218 | void (*reset_tsf)(struct ieee80211_hw *hw); |
1220 | int (*beacon_update)(struct ieee80211_hw *hw, | ||
1221 | struct sk_buff *skb); | ||
1222 | int (*tx_last_beacon)(struct ieee80211_hw *hw); | 1219 | int (*tx_last_beacon)(struct ieee80211_hw *hw); |
1223 | int (*ampdu_action)(struct ieee80211_hw *hw, | 1220 | int (*ampdu_action)(struct ieee80211_hw *hw, |
1224 | enum ieee80211_ampdu_mlme_action action, | 1221 | enum ieee80211_ampdu_mlme_action action, |