diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 64 |
1 files changed, 54 insertions, 10 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 72eddd1b410b..d49928ba5d09 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -166,6 +166,7 @@ struct ieee80211_low_level_stats { | |||
166 | * that it is only ever disabled for station mode. | 166 | * that it is only ever disabled for station mode. |
167 | * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface. | 167 | * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface. |
168 | * @BSS_CHANGED_SSID: SSID changed for this BSS (AP mode) | 168 | * @BSS_CHANGED_SSID: SSID changed for this BSS (AP mode) |
169 | * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode) | ||
169 | */ | 170 | */ |
170 | enum ieee80211_bss_change { | 171 | enum ieee80211_bss_change { |
171 | BSS_CHANGED_ASSOC = 1<<0, | 172 | BSS_CHANGED_ASSOC = 1<<0, |
@@ -184,6 +185,7 @@ enum ieee80211_bss_change { | |||
184 | BSS_CHANGED_QOS = 1<<13, | 185 | BSS_CHANGED_QOS = 1<<13, |
185 | BSS_CHANGED_IDLE = 1<<14, | 186 | BSS_CHANGED_IDLE = 1<<14, |
186 | BSS_CHANGED_SSID = 1<<15, | 187 | BSS_CHANGED_SSID = 1<<15, |
188 | BSS_CHANGED_AP_PROBE_RESP = 1<<16, | ||
187 | 189 | ||
188 | /* when adding here, make sure to change ieee80211_reconfig */ | 190 | /* when adding here, make sure to change ieee80211_reconfig */ |
189 | }; | 191 | }; |
@@ -518,7 +520,7 @@ struct ieee80211_tx_rate { | |||
518 | * @flags: transmit info flags, defined above | 520 | * @flags: transmit info flags, defined above |
519 | * @band: the band to transmit on (use for checking for races) | 521 | * @band: the band to transmit on (use for checking for races) |
520 | * @antenna_sel_tx: antenna to use, 0 for automatic diversity | 522 | * @antenna_sel_tx: antenna to use, 0 for automatic diversity |
521 | * @pad: padding, ignore | 523 | * @ack_frame_id: internal frame ID for TX status, used internally |
522 | * @control: union for control data | 524 | * @control: union for control data |
523 | * @status: union for status data | 525 | * @status: union for status data |
524 | * @driver_data: array of driver_data pointers | 526 | * @driver_data: array of driver_data pointers |
@@ -535,8 +537,7 @@ struct ieee80211_tx_info { | |||
535 | 537 | ||
536 | u8 antenna_sel_tx; | 538 | u8 antenna_sel_tx; |
537 | 539 | ||
538 | /* 2 byte hole */ | 540 | u16 ack_frame_id; |
539 | u8 pad[2]; | ||
540 | 541 | ||
541 | union { | 542 | union { |
542 | struct { | 543 | struct { |
@@ -901,6 +902,10 @@ static inline bool ieee80211_vif_is_mesh(struct ieee80211_vif *vif) | |||
901 | * @IEEE80211_KEY_FLAG_SW_MGMT: This flag should be set by the driver for a | 902 | * @IEEE80211_KEY_FLAG_SW_MGMT: This flag should be set by the driver for a |
902 | * CCMP key if it requires CCMP encryption of management frames (MFP) to | 903 | * CCMP key if it requires CCMP encryption of management frames (MFP) to |
903 | * be done in software. | 904 | * be done in software. |
905 | * @IEEE80211_KEY_FLAG_PUT_IV_SPACE: This flag should be set by the driver | ||
906 | * for a CCMP key if space should be prepared for the IV, but the IV | ||
907 | * itself should not be generated. Do not set together with | ||
908 | * @IEEE80211_KEY_FLAG_GENERATE_IV on the same key. | ||
904 | */ | 909 | */ |
905 | enum ieee80211_key_flags { | 910 | enum ieee80211_key_flags { |
906 | IEEE80211_KEY_FLAG_WMM_STA = 1<<0, | 911 | IEEE80211_KEY_FLAG_WMM_STA = 1<<0, |
@@ -908,6 +913,7 @@ enum ieee80211_key_flags { | |||
908 | IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, | 913 | IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, |
909 | IEEE80211_KEY_FLAG_PAIRWISE = 1<<3, | 914 | IEEE80211_KEY_FLAG_PAIRWISE = 1<<3, |
910 | IEEE80211_KEY_FLAG_SW_MGMT = 1<<4, | 915 | IEEE80211_KEY_FLAG_SW_MGMT = 1<<4, |
916 | IEEE80211_KEY_FLAG_PUT_IV_SPACE = 1<<5, | ||
911 | }; | 917 | }; |
912 | 918 | ||
913 | /** | 919 | /** |
@@ -1304,6 +1310,16 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | |||
1304 | } | 1310 | } |
1305 | 1311 | ||
1306 | /** | 1312 | /** |
1313 | * ieee80211_free_txskb - free TX skb | ||
1314 | * @hw: the hardware | ||
1315 | * @skb: the skb | ||
1316 | * | ||
1317 | * Free a transmit skb. Use this funtion when some failure | ||
1318 | * to transmit happened and thus status cannot be reported. | ||
1319 | */ | ||
1320 | void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | ||
1321 | |||
1322 | /** | ||
1307 | * DOC: Hardware crypto acceleration | 1323 | * DOC: Hardware crypto acceleration |
1308 | * | 1324 | * |
1309 | * mac80211 is capable of taking advantage of many hardware | 1325 | * mac80211 is capable of taking advantage of many hardware |
@@ -1423,7 +1439,7 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | |||
1423 | * DOC: Beacon filter support | 1439 | * DOC: Beacon filter support |
1424 | * | 1440 | * |
1425 | * Some hardware have beacon filter support to reduce host cpu wakeups | 1441 | * Some hardware have beacon filter support to reduce host cpu wakeups |
1426 | * which will reduce system power consumption. It usuallly works so that | 1442 | * which will reduce system power consumption. It usually works so that |
1427 | * the firmware creates a checksum of the beacon but omits all constantly | 1443 | * the firmware creates a checksum of the beacon but omits all constantly |
1428 | * changing elements (TSF, TIM etc). Whenever the checksum changes the | 1444 | * changing elements (TSF, TIM etc). Whenever the checksum changes the |
1429 | * beacon is forwarded to the host, otherwise it will be just dropped. That | 1445 | * beacon is forwarded to the host, otherwise it will be just dropped. That |
@@ -1744,11 +1760,21 @@ enum ieee80211_frame_release_type { | |||
1744 | * skb contains the buffer starting from the IEEE 802.11 header. | 1760 | * skb contains the buffer starting from the IEEE 802.11 header. |
1745 | * The low-level driver should send the frame out based on | 1761 | * The low-level driver should send the frame out based on |
1746 | * configuration in the TX control data. This handler should, | 1762 | * configuration in the TX control data. This handler should, |
1747 | * preferably, never fail and stop queues appropriately, more | 1763 | * preferably, never fail and stop queues appropriately. |
1748 | * importantly, however, it must never fail for A-MPDU-queues. | 1764 | * This must be implemented if @tx_frags is not. |
1749 | * This function should return NETDEV_TX_OK except in very | 1765 | * Must be atomic. |
1750 | * limited cases. | 1766 | * |
1751 | * Must be implemented and atomic. | 1767 | * @tx_frags: Called to transmit multiple fragments of a single MSDU. |
1768 | * This handler must consume all fragments, sending out some of | ||
1769 | * them only is useless and it can't ask for some of them to be | ||
1770 | * queued again. If the frame is not fragmented the queue has a | ||
1771 | * single SKB only. To avoid issues with the networking stack | ||
1772 | * when TX status is reported the frames should be removed from | ||
1773 | * the skb queue. | ||
1774 | * If this is used, the tx_info @vif and @sta pointers will be | ||
1775 | * invalid -- you must not use them in that case. | ||
1776 | * This must be implemented if @tx isn't. | ||
1777 | * Must be atomic. | ||
1752 | * | 1778 | * |
1753 | * @start: Called before the first netdevice attached to the hardware | 1779 | * @start: Called before the first netdevice attached to the hardware |
1754 | * is enabled. This should turn on the hardware and must turn on | 1780 | * is enabled. This should turn on the hardware and must turn on |
@@ -2085,6 +2111,8 @@ enum ieee80211_frame_release_type { | |||
2085 | */ | 2111 | */ |
2086 | struct ieee80211_ops { | 2112 | struct ieee80211_ops { |
2087 | void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); | 2113 | void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); |
2114 | void (*tx_frags)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | ||
2115 | struct ieee80211_sta *sta, struct sk_buff_head *skbs); | ||
2088 | int (*start)(struct ieee80211_hw *hw); | 2116 | int (*start)(struct ieee80211_hw *hw); |
2089 | void (*stop)(struct ieee80211_hw *hw); | 2117 | void (*stop)(struct ieee80211_hw *hw); |
2090 | #ifdef CONFIG_PM | 2118 | #ifdef CONFIG_PM |
@@ -2661,6 +2689,19 @@ static inline struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
2661 | } | 2689 | } |
2662 | 2690 | ||
2663 | /** | 2691 | /** |
2692 | * ieee80211_proberesp_get - retrieve a Probe Response template | ||
2693 | * @hw: pointer obtained from ieee80211_alloc_hw(). | ||
2694 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
2695 | * | ||
2696 | * Creates a Probe Response template which can, for example, be uploaded to | ||
2697 | * hardware. The destination address should be set by the caller. | ||
2698 | * | ||
2699 | * Can only be called in AP mode. | ||
2700 | */ | ||
2701 | struct sk_buff *ieee80211_proberesp_get(struct ieee80211_hw *hw, | ||
2702 | struct ieee80211_vif *vif); | ||
2703 | |||
2704 | /** | ||
2664 | * ieee80211_pspoll_get - retrieve a PS Poll template | 2705 | * ieee80211_pspoll_get - retrieve a PS Poll template |
2665 | * @hw: pointer obtained from ieee80211_alloc_hw(). | 2706 | * @hw: pointer obtained from ieee80211_alloc_hw(). |
2666 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 2707 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
@@ -3461,9 +3502,12 @@ void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn); | |||
3461 | * | 3502 | * |
3462 | * @IEEE80211_RC_HT_CHANGED: The HT parameters of the operating channel have | 3503 | * @IEEE80211_RC_HT_CHANGED: The HT parameters of the operating channel have |
3463 | * changed, rate control algorithm can update its internal state if needed. | 3504 | * changed, rate control algorithm can update its internal state if needed. |
3505 | * @IEEE80211_RC_SMPS_CHANGED: The SMPS state of the station changed, the rate | ||
3506 | * control algorithm needs to adjust accordingly. | ||
3464 | */ | 3507 | */ |
3465 | enum rate_control_changed { | 3508 | enum rate_control_changed { |
3466 | IEEE80211_RC_HT_CHANGED = BIT(0) | 3509 | IEEE80211_RC_HT_CHANGED = BIT(0), |
3510 | IEEE80211_RC_SMPS_CHANGED = BIT(1), | ||
3467 | }; | 3511 | }; |
3468 | 3512 | ||
3469 | /** | 3513 | /** |