aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/ieee80211.h2
-rw-r--r--include/net/cfg80211.h38
-rw-r--r--include/net/mac80211.h22
-rw-r--r--include/net/regulatory.h1
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
141struct ieee80211_hdr { 143struct 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
1198struct 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 */
1217struct wiphy { 1233struct 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 */
1639unsigned int cfg80211_classify8021d(struct sk_buff *skb); 1659unsigned 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 */
1675const 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 */
275enum mac80211_tx_control_flags { 281enum 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.