diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ieee80211.h | 2 | ||||
-rw-r--r-- | include/net/cfg80211.h | 38 | ||||
-rw-r--r-- | include/net/mac80211.h | 22 | ||||
-rw-r--r-- | include/net/regulatory.h | 1 |
4 files changed, 58 insertions, 5 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 842701906ae9..19984958ab7b 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -138,6 +138,8 @@ | |||
138 | #define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03 | 138 | #define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03 |
139 | #define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5 | 139 | #define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5 |
140 | 140 | ||
141 | #define IEEE80211_HT_CTL_LEN 4 | ||
142 | |||
141 | struct ieee80211_hdr { | 143 | struct ieee80211_hdr { |
142 | __le16 frame_control; | 144 | __le16 frame_control; |
143 | __le16 duration_id; | 145 | __le16 duration_id; |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 2af52704e670..a3f0a7ed31ac 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1195,6 +1195,10 @@ enum wiphy_flags { | |||
1195 | WIPHY_FLAG_4ADDR_STATION = BIT(6), | 1195 | WIPHY_FLAG_4ADDR_STATION = BIT(6), |
1196 | }; | 1196 | }; |
1197 | 1197 | ||
1198 | struct mac_address { | ||
1199 | u8 addr[ETH_ALEN]; | ||
1200 | }; | ||
1201 | |||
1198 | /** | 1202 | /** |
1199 | * struct wiphy - wireless hardware description | 1203 | * struct wiphy - wireless hardware description |
1200 | * @idx: the wiphy index assigned to this item | 1204 | * @idx: the wiphy index assigned to this item |
@@ -1213,12 +1217,28 @@ enum wiphy_flags { | |||
1213 | * -1 = fragmentation disabled, only odd values >= 256 used | 1217 | * -1 = fragmentation disabled, only odd values >= 256 used |
1214 | * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled | 1218 | * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled |
1215 | * @net: the network namespace this wiphy currently lives in | 1219 | * @net: the network namespace this wiphy currently lives in |
1220 | * @perm_addr: permanent MAC address of this device | ||
1221 | * @addr_mask: If the device supports multiple MAC addresses by masking, | ||
1222 | * set this to a mask with variable bits set to 1, e.g. if the last | ||
1223 | * four bits are variable then set it to 00:...:00:0f. The actual | ||
1224 | * variable bits shall be determined by the interfaces added, with | ||
1225 | * interfaces not matching the mask being rejected to be brought up. | ||
1226 | * @n_addresses: number of addresses in @addresses. | ||
1227 | * @addresses: If the device has more than one address, set this pointer | ||
1228 | * to a list of addresses (6 bytes each). The first one will be used | ||
1229 | * by default for perm_addr. In this case, the mask should be set to | ||
1230 | * all-zeroes. In this case it is assumed that the device can handle | ||
1231 | * the same number of arbitrary MAC addresses. | ||
1216 | */ | 1232 | */ |
1217 | struct wiphy { | 1233 | struct wiphy { |
1218 | /* assign these fields before you register the wiphy */ | 1234 | /* assign these fields before you register the wiphy */ |
1219 | 1235 | ||
1220 | /* permanent MAC address */ | 1236 | /* permanent MAC address(es) */ |
1221 | u8 perm_addr[ETH_ALEN]; | 1237 | u8 perm_addr[ETH_ALEN]; |
1238 | u8 addr_mask[ETH_ALEN]; | ||
1239 | |||
1240 | u16 n_addresses; | ||
1241 | struct mac_address *addresses; | ||
1222 | 1242 | ||
1223 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ | 1243 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ |
1224 | u16 interface_modes; | 1244 | u16 interface_modes; |
@@ -1638,6 +1658,22 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, | |||
1638 | */ | 1658 | */ |
1639 | unsigned int cfg80211_classify8021d(struct sk_buff *skb); | 1659 | unsigned int cfg80211_classify8021d(struct sk_buff *skb); |
1640 | 1660 | ||
1661 | /** | ||
1662 | * cfg80211_find_ie - find information element in data | ||
1663 | * | ||
1664 | * @eid: element ID | ||
1665 | * @ies: data consisting of IEs | ||
1666 | * @len: length of data | ||
1667 | * | ||
1668 | * This function will return %NULL if the element ID could | ||
1669 | * not be found or if the element is invalid (claims to be | ||
1670 | * longer than the given data), or a pointer to the first byte | ||
1671 | * of the requested element, that is the byte containing the | ||
1672 | * element ID. There are no checks on the element length | ||
1673 | * other than having to fit into the given data. | ||
1674 | */ | ||
1675 | const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len); | ||
1676 | |||
1641 | /* | 1677 | /* |
1642 | * Regulatory helper functions for wiphys | 1678 | * Regulatory helper functions for wiphys |
1643 | */ | 1679 | */ |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index c90047de4428..74ccf30fdf8e 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -186,7 +186,8 @@ enum ieee80211_bss_change { | |||
186 | * @use_short_slot: use short slot time (only relevant for ERP); | 186 | * @use_short_slot: use short slot time (only relevant for ERP); |
187 | * if the hardware cannot handle this it must set the | 187 | * if the hardware cannot handle this it must set the |
188 | * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag | 188 | * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag |
189 | * @dtim_period: num of beacons before the next DTIM, for PSM | 189 | * @dtim_period: num of beacons before the next DTIM, for beaconing, |
190 | * not valid in station mode (cf. hw conf ps_dtim_period) | ||
190 | * @timestamp: beacon timestamp | 191 | * @timestamp: beacon timestamp |
191 | * @beacon_int: beacon interval | 192 | * @beacon_int: beacon interval |
192 | * @assoc_capability: capabilities taken from assoc resp | 193 | * @assoc_capability: capabilities taken from assoc resp |
@@ -271,6 +272,11 @@ struct ieee80211_bss_conf { | |||
271 | * transmit function after the current frame, this can be used | 272 | * transmit function after the current frame, this can be used |
272 | * by drivers to kick the DMA queue only if unset or when the | 273 | * by drivers to kick the DMA queue only if unset or when the |
273 | * queue gets full. | 274 | * queue gets full. |
275 | * @IEEE80211_TX_INTFL_RETRANSMISSION: This frame is being retransmitted | ||
276 | * after TX status because the destination was asleep, it must not | ||
277 | * be modified again (no seqno assignment, crypto, etc.) | ||
278 | * @IEEE80211_TX_INTFL_HAS_RADIOTAP: This frame was injected and still | ||
279 | * has a radiotap header at skb->data. | ||
274 | */ | 280 | */ |
275 | enum mac80211_tx_control_flags { | 281 | enum mac80211_tx_control_flags { |
276 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), | 282 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
@@ -291,6 +297,8 @@ enum mac80211_tx_control_flags { | |||
291 | IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), | 297 | IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), |
292 | IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), | 298 | IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), |
293 | IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), | 299 | IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), |
300 | IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), | ||
301 | IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20), | ||
294 | }; | 302 | }; |
295 | 303 | ||
296 | /** | 304 | /** |
@@ -644,6 +652,9 @@ enum ieee80211_smps_mode { | |||
644 | * value will be only achievable between DTIM frames, the hardware | 652 | * value will be only achievable between DTIM frames, the hardware |
645 | * needs to check for the multicast traffic bit in DTIM beacons. | 653 | * needs to check for the multicast traffic bit in DTIM beacons. |
646 | * This variable is valid only when the CONF_PS flag is set. | 654 | * This variable is valid only when the CONF_PS flag is set. |
655 | * @ps_dtim_period: The DTIM period of the AP we're connected to, for use | ||
656 | * in power saving. Power saving will not be enabled until a beacon | ||
657 | * has been received and the DTIM period is known. | ||
647 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the | 658 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the |
648 | * powersave documentation below. This variable is valid only when | 659 | * powersave documentation below. This variable is valid only when |
649 | * the CONF_PS flag is set. | 660 | * the CONF_PS flag is set. |
@@ -670,6 +681,7 @@ struct ieee80211_conf { | |||
670 | int max_sleep_period; | 681 | int max_sleep_period; |
671 | 682 | ||
672 | u16 listen_interval; | 683 | u16 listen_interval; |
684 | u8 ps_dtim_period; | ||
673 | 685 | ||
674 | u8 long_frame_max_tx_count, short_frame_max_tx_count; | 686 | u8 long_frame_max_tx_count, short_frame_max_tx_count; |
675 | 687 | ||
@@ -1485,7 +1497,7 @@ enum ieee80211_ampdu_mlme_action { | |||
1485 | * @update_tkip_key: See the section "Hardware crypto acceleration" | 1497 | * @update_tkip_key: See the section "Hardware crypto acceleration" |
1486 | * This callback will be called in the context of Rx. Called for drivers | 1498 | * This callback will be called in the context of Rx. Called for drivers |
1487 | * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. | 1499 | * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. |
1488 | * The callback can sleep. | 1500 | * The callback must be atomic. |
1489 | * | 1501 | * |
1490 | * @hw_scan: Ask the hardware to service the scan request, no need to start | 1502 | * @hw_scan: Ask the hardware to service the scan request, no need to start |
1491 | * the scan state machine in stack. The scan must honour the channel | 1503 | * the scan state machine in stack. The scan must honour the channel |
@@ -1610,8 +1622,10 @@ struct ieee80211_ops { | |||
1610 | struct ieee80211_vif *vif, struct ieee80211_sta *sta, | 1622 | struct ieee80211_vif *vif, struct ieee80211_sta *sta, |
1611 | struct ieee80211_key_conf *key); | 1623 | struct ieee80211_key_conf *key); |
1612 | void (*update_tkip_key)(struct ieee80211_hw *hw, | 1624 | void (*update_tkip_key)(struct ieee80211_hw *hw, |
1613 | struct ieee80211_key_conf *conf, const u8 *address, | 1625 | struct ieee80211_vif *vif, |
1614 | u32 iv32, u16 *phase1key); | 1626 | struct ieee80211_key_conf *conf, |
1627 | struct ieee80211_sta *sta, | ||
1628 | u32 iv32, u16 *phase1key); | ||
1615 | int (*hw_scan)(struct ieee80211_hw *hw, | 1629 | int (*hw_scan)(struct ieee80211_hw *hw, |
1616 | struct cfg80211_scan_request *req); | 1630 | struct cfg80211_scan_request *req); |
1617 | void (*sw_scan_start)(struct ieee80211_hw *hw); | 1631 | void (*sw_scan_start)(struct ieee80211_hw *hw); |
diff --git a/include/net/regulatory.h b/include/net/regulatory.h index 47995b81c5d7..f873ee37f7e4 100644 --- a/include/net/regulatory.h +++ b/include/net/regulatory.h | |||
@@ -39,6 +39,7 @@ enum environment_cap { | |||
39 | * 00 - World regulatory domain | 39 | * 00 - World regulatory domain |
40 | * 99 - built by driver but a specific alpha2 cannot be determined | 40 | * 99 - built by driver but a specific alpha2 cannot be determined |
41 | * 98 - result of an intersection between two regulatory domains | 41 | * 98 - result of an intersection between two regulatory domains |
42 | * 97 - regulatory domain has not yet been configured | ||
42 | * @intersect: indicates whether the wireless core should intersect | 43 | * @intersect: indicates whether the wireless core should intersect |
43 | * the requested regulatory domain with the presently set regulatory | 44 | * the requested regulatory domain with the presently set regulatory |
44 | * domain. | 45 | * domain. |