aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-06-12 15:39:05 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-06-12 15:39:05 -0400
commit812fd645968118c35a3f4d0d18dd3f4d07221df0 (patch)
treeb68ee223f22a811e9743b193872052cd264fe2d0 /include
parentcb180840a0c6bff7c0787373c23cefdf20417a27 (diff)
parent940d0ac9dbe3fb9d4806e96f006286c2e476deed (diff)
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Conflicts: drivers/net/wireless/iwlwifi/mvm/mac80211.c
Diffstat (limited to 'include')
-rw-r--r--include/linux/ieee80211.h1
-rw-r--r--include/net/cfg80211.h115
-rw-r--r--include/net/mac80211.h11
-rw-r--r--include/uapi/linux/nl80211.h9
4 files changed, 70 insertions, 66 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index d826e5a84af0..b0dc87a2a376 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -146,6 +146,7 @@ static inline u16 ieee80211_sn_sub(u16 sn1, u16 sn2)
146#define IEEE80211_MAX_RTS_THRESHOLD 2353 146#define IEEE80211_MAX_RTS_THRESHOLD 2353
147#define IEEE80211_MAX_AID 2007 147#define IEEE80211_MAX_AID 2007
148#define IEEE80211_MAX_TIM_LEN 251 148#define IEEE80211_MAX_TIM_LEN 251
149#define IEEE80211_MAX_MESH_PEERINGS 63
149/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section 150/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
150 6.2.1.1.2. 151 6.2.1.1.2.
151 152
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 6dd19593e333..6a43c34ce96f 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1124,6 +1124,9 @@ struct bss_parameters {
1124 * setting for new peer links. 1124 * setting for new peer links.
1125 * @dot11MeshAwakeWindowDuration: The duration in TUs the STA will remain awake 1125 * @dot11MeshAwakeWindowDuration: The duration in TUs the STA will remain awake
1126 * after transmitting its beacon. 1126 * after transmitting its beacon.
1127 * @plink_timeout: If no tx activity is seen from a STA we've established
1128 * peering with for longer than this time (in seconds), then remove it
1129 * from the STA's list of peers. Default is 30 minutes.
1127 */ 1130 */
1128struct mesh_config { 1131struct mesh_config {
1129 u16 dot11MeshRetryTimeout; 1132 u16 dot11MeshRetryTimeout;
@@ -1153,6 +1156,7 @@ struct mesh_config {
1153 u16 dot11MeshHWMPconfirmationInterval; 1156 u16 dot11MeshHWMPconfirmationInterval;
1154 enum nl80211_mesh_power_mode power_mode; 1157 enum nl80211_mesh_power_mode power_mode;
1155 u16 dot11MeshAwakeWindowDuration; 1158 u16 dot11MeshAwakeWindowDuration;
1159 u32 plink_timeout;
1156}; 1160};
1157 1161
1158/** 1162/**
@@ -1172,6 +1176,7 @@ struct mesh_config {
1172 * @dtim_period: DTIM period to use 1176 * @dtim_period: DTIM period to use
1173 * @beacon_interval: beacon interval to use 1177 * @beacon_interval: beacon interval to use
1174 * @mcast_rate: multicat rate for Mesh Node [6Mbps is the default for 802.11a] 1178 * @mcast_rate: multicat rate for Mesh Node [6Mbps is the default for 802.11a]
1179 * @basic_rates: basic rates to use when creating the mesh
1175 * 1180 *
1176 * These parameters are fixed when the mesh is created. 1181 * These parameters are fixed when the mesh is created.
1177 */ 1182 */
@@ -1191,6 +1196,7 @@ struct mesh_setup {
1191 u8 dtim_period; 1196 u8 dtim_period;
1192 u16 beacon_interval; 1197 u16 beacon_interval;
1193 int mcast_rate[IEEE80211_NUM_BANDS]; 1198 int mcast_rate[IEEE80211_NUM_BANDS];
1199 u32 basic_rates;
1194}; 1200};
1195 1201
1196/** 1202/**
@@ -2654,7 +2660,7 @@ struct wiphy {
2654 u32 hw_version; 2660 u32 hw_version;
2655 2661
2656#ifdef CONFIG_PM 2662#ifdef CONFIG_PM
2657 struct wiphy_wowlan_support wowlan; 2663 const struct wiphy_wowlan_support *wowlan;
2658 struct cfg80211_wowlan *wowlan_config; 2664 struct cfg80211_wowlan *wowlan_config;
2659#endif 2665#endif
2660 2666
@@ -2853,7 +2859,7 @@ struct cfg80211_cached_keys;
2853 * @current_bss: (private) Used by the internal configuration code 2859 * @current_bss: (private) Used by the internal configuration code
2854 * @channel: (private) Used by the internal configuration code to track 2860 * @channel: (private) Used by the internal configuration code to track
2855 * the user-set AP, monitor and WDS channel 2861 * the user-set AP, monitor and WDS channel
2856 * @preset_chan: (private) Used by the internal configuration code to 2862 * @preset_chandef: (private) Used by the internal configuration code to
2857 * track the channel to be used for AP later 2863 * track the channel to be used for AP later
2858 * @bssid: (private) Used by the internal configuration code 2864 * @bssid: (private) Used by the internal configuration code
2859 * @ssid: (private) Used by the internal configuration code 2865 * @ssid: (private) Used by the internal configuration code
@@ -2875,6 +2881,15 @@ struct cfg80211_cached_keys;
2875 * @p2p_started: true if this is a P2P Device that has been started 2881 * @p2p_started: true if this is a P2P Device that has been started
2876 * @cac_started: true if DFS channel availability check has been started 2882 * @cac_started: true if DFS channel availability check has been started
2877 * @cac_start_time: timestamp (jiffies) when the dfs state was entered. 2883 * @cac_start_time: timestamp (jiffies) when the dfs state was entered.
2884 * @ps: powersave mode is enabled
2885 * @ps_timeout: dynamic powersave timeout
2886 * @ap_unexpected_nlportid: (private) netlink port ID of application
2887 * registered for unexpected class 3 frames (AP mode)
2888 * @conn: (private) cfg80211 software SME connection state machine data
2889 * @connect_keys: (private) keys to set after connection is established
2890 * @ibss_fixed: (private) IBSS is using fixed BSSID
2891 * @event_list: (private) list for internal event processing
2892 * @event_lock: (private) lock for event list
2878 */ 2893 */
2879struct wireless_dev { 2894struct wireless_dev {
2880 struct wiphy *wiphy; 2895 struct wiphy *wiphy;
@@ -2898,11 +2913,6 @@ struct wireless_dev {
2898 /* currently used for IBSS and SME - might be rearranged later */ 2913 /* currently used for IBSS and SME - might be rearranged later */
2899 u8 ssid[IEEE80211_MAX_SSID_LEN]; 2914 u8 ssid[IEEE80211_MAX_SSID_LEN];
2900 u8 ssid_len, mesh_id_len, mesh_id_up_len; 2915 u8 ssid_len, mesh_id_len, mesh_id_up_len;
2901 enum {
2902 CFG80211_SME_IDLE,
2903 CFG80211_SME_CONNECTING,
2904 CFG80211_SME_CONNECTED,
2905 } sme_state;
2906 struct cfg80211_conn *conn; 2916 struct cfg80211_conn *conn;
2907 struct cfg80211_cached_keys *connect_keys; 2917 struct cfg80211_cached_keys *connect_keys;
2908 2918
@@ -3432,59 +3442,66 @@ void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
3432void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss); 3442void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
3433 3443
3434/** 3444/**
3435 * cfg80211_send_rx_auth - notification of processed authentication 3445 * cfg80211_rx_mlme_mgmt - notification of processed MLME management frame
3436 * @dev: network device 3446 * @dev: network device
3437 * @buf: authentication frame (header + body) 3447 * @buf: authentication frame (header + body)
3438 * @len: length of the frame data 3448 * @len: length of the frame data
3439 * 3449 *
3440 * This function is called whenever an authentication has been processed in 3450 * This function is called whenever an authentication, disassociation or
3441 * station mode. The driver is required to call either this function or 3451 * deauthentication frame has been received and processed in station mode.
3442 * cfg80211_send_auth_timeout() to indicate the result of cfg80211_ops::auth() 3452 * After being asked to authenticate via cfg80211_ops::auth() the driver must
3443 * call. This function may sleep. The caller must hold the corresponding wdev's 3453 * call either this function or cfg80211_auth_timeout().
3444 * mutex. 3454 * After being asked to associate via cfg80211_ops::assoc() the driver must
3455 * call either this function or cfg80211_auth_timeout().
3456 * While connected, the driver must calls this for received and processed
3457 * disassociation and deauthentication frames. If the frame couldn't be used
3458 * because it was unprotected, the driver must call the function
3459 * cfg80211_rx_unprot_mlme_mgmt() instead.
3460 *
3461 * This function may sleep. The caller must hold the corresponding wdev's mutex.
3445 */ 3462 */
3446void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len); 3463void cfg80211_rx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len);
3447 3464
3448/** 3465/**
3449 * cfg80211_send_auth_timeout - notification of timed out authentication 3466 * cfg80211_auth_timeout - notification of timed out authentication
3450 * @dev: network device 3467 * @dev: network device
3451 * @addr: The MAC address of the device with which the authentication timed out 3468 * @addr: The MAC address of the device with which the authentication timed out
3452 * 3469 *
3453 * This function may sleep. The caller must hold the corresponding wdev's 3470 * This function may sleep. The caller must hold the corresponding wdev's
3454 * mutex. 3471 * mutex.
3455 */ 3472 */
3456void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr); 3473void cfg80211_auth_timeout(struct net_device *dev, const u8 *addr);
3457 3474
3458/** 3475/**
3459 * cfg80211_send_rx_assoc - notification of processed association 3476 * cfg80211_rx_assoc_resp - notification of processed association response
3460 * @dev: network device 3477 * @dev: network device
3461 * @bss: the BSS struct association was requested for, the struct reference 3478 * @bss: the BSS that association was requested with, ownership of the pointer
3462 * is owned by cfg80211 after this call 3479 * moves to cfg80211 in this call
3463 * @buf: (re)association response frame (header + body) 3480 * @buf: authentication frame (header + body)
3464 * @len: length of the frame data 3481 * @len: length of the frame data
3465 * 3482 *
3466 * This function is called whenever a (re)association response has been 3483 * After being asked to associate via cfg80211_ops::assoc() the driver must
3467 * processed in station mode. The driver is required to call either this 3484 * call either this function or cfg80211_auth_timeout().
3468 * function or cfg80211_send_assoc_timeout() to indicate the result of 3485 *
3469 * cfg80211_ops::assoc() call. This function may sleep. The caller must hold 3486 * This function may sleep. The caller must hold the corresponding wdev's mutex.
3470 * the corresponding wdev's mutex.
3471 */ 3487 */
3472void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss, 3488void cfg80211_rx_assoc_resp(struct net_device *dev,
3489 struct cfg80211_bss *bss,
3473 const u8 *buf, size_t len); 3490 const u8 *buf, size_t len);
3474 3491
3475/** 3492/**
3476 * cfg80211_send_assoc_timeout - notification of timed out association 3493 * cfg80211_assoc_timeout - notification of timed out association
3477 * @dev: network device 3494 * @dev: network device
3478 * @addr: The MAC address of the device with which the association timed out 3495 * @addr: The MAC address of the device with which the association timed out
3479 * 3496 *
3480 * This function may sleep. The caller must hold the corresponding wdev's mutex. 3497 * This function may sleep. The caller must hold the corresponding wdev's mutex.
3481 */ 3498 */
3482void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr); 3499void cfg80211_assoc_timeout(struct net_device *dev, const u8 *addr);
3483 3500
3484/** 3501/**
3485 * cfg80211_send_deauth - notification of processed deauthentication 3502 * cfg80211_tx_mlme_mgmt - notification of transmitted deauth/disassoc frame
3486 * @dev: network device 3503 * @dev: network device
3487 * @buf: deauthentication frame (header + body) 3504 * @buf: 802.11 frame (header + body)
3488 * @len: length of the frame data 3505 * @len: length of the frame data
3489 * 3506 *
3490 * This function is called whenever deauthentication has been processed in 3507 * This function is called whenever deauthentication has been processed in
@@ -3492,46 +3509,20 @@ void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr);
3492 * locally generated ones. This function may sleep. The caller must hold the 3509 * locally generated ones. This function may sleep. The caller must hold the
3493 * corresponding wdev's mutex. 3510 * corresponding wdev's mutex.
3494 */ 3511 */
3495void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len); 3512void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len);
3496
3497/**
3498 * cfg80211_send_disassoc - notification of processed disassociation
3499 * @dev: network device
3500 * @buf: disassociation response frame (header + body)
3501 * @len: length of the frame data
3502 *
3503 * This function is called whenever disassociation has been processed in
3504 * station mode. This includes both received disassociation frames and locally
3505 * generated ones. This function may sleep. The caller must hold the
3506 * corresponding wdev's mutex.
3507 */
3508void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len);
3509 3513
3510/** 3514/**
3511 * cfg80211_send_unprot_deauth - notification of unprotected deauthentication 3515 * cfg80211_rx_unprot_mlme_mgmt - notification of unprotected mlme mgmt frame
3512 * @dev: network device 3516 * @dev: network device
3513 * @buf: deauthentication frame (header + body) 3517 * @buf: deauthentication frame (header + body)
3514 * @len: length of the frame data 3518 * @len: length of the frame data
3515 * 3519 *
3516 * This function is called whenever a received Deauthentication frame has been 3520 * This function is called whenever a received deauthentication or dissassoc
3517 * dropped in station mode because of MFP being used but the Deauthentication 3521 * frame has been dropped in station mode because of MFP being used but the
3518 * frame was not protected. This function may sleep.
3519 */
3520void cfg80211_send_unprot_deauth(struct net_device *dev, const u8 *buf,
3521 size_t len);
3522
3523/**
3524 * cfg80211_send_unprot_disassoc - notification of unprotected disassociation
3525 * @dev: network device
3526 * @buf: disassociation frame (header + body)
3527 * @len: length of the frame data
3528 *
3529 * This function is called whenever a received Disassociation frame has been
3530 * dropped in station mode because of MFP being used but the Disassociation
3531 * frame was not protected. This function may sleep. 3522 * frame was not protected. This function may sleep.
3532 */ 3523 */
3533void cfg80211_send_unprot_disassoc(struct net_device *dev, const u8 *buf, 3524void cfg80211_rx_unprot_mlme_mgmt(struct net_device *dev,
3534 size_t len); 3525 const u8 *buf, size_t len);
3535 3526
3536/** 3527/**
3537 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) 3528 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 1f0014bd4d87..a405a7a9775c 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -217,8 +217,8 @@ struct ieee80211_chanctx_conf {
217 * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface 217 * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface
218 * @BSS_CHANGED_P2P_PS: P2P powersave settings (CTWindow, opportunistic PS) 218 * @BSS_CHANGED_P2P_PS: P2P powersave settings (CTWindow, opportunistic PS)
219 * changed (currently only in P2P client mode, GO mode will be later) 219 * changed (currently only in P2P client mode, GO mode will be later)
220 * @BSS_CHANGED_DTIM_PERIOD: the DTIM period value was changed (set when 220 * @BSS_CHANGED_BEACON_INFO: Data from the AP's beacon became available:
221 * it becomes valid, managed mode only) 221 * currently dtim_period only is under consideration.
222 * @BSS_CHANGED_BANDWIDTH: The bandwidth used by this interface changed, 222 * @BSS_CHANGED_BANDWIDTH: The bandwidth used by this interface changed,
223 * note that this is only called when it changes after the channel 223 * note that this is only called when it changes after the channel
224 * context had been assigned. 224 * context had been assigned.
@@ -244,7 +244,7 @@ enum ieee80211_bss_change {
244 BSS_CHANGED_PS = 1<<17, 244 BSS_CHANGED_PS = 1<<17,
245 BSS_CHANGED_TXPOWER = 1<<18, 245 BSS_CHANGED_TXPOWER = 1<<18,
246 BSS_CHANGED_P2P_PS = 1<<19, 246 BSS_CHANGED_P2P_PS = 1<<19,
247 BSS_CHANGED_DTIM_PERIOD = 1<<20, 247 BSS_CHANGED_BEACON_INFO = 1<<20,
248 BSS_CHANGED_BANDWIDTH = 1<<21, 248 BSS_CHANGED_BANDWIDTH = 1<<21,
249 249
250 /* when adding here, make sure to change ieee80211_reconfig */ 250 /* when adding here, make sure to change ieee80211_reconfig */
@@ -288,7 +288,7 @@ enum ieee80211_rssi_event {
288 * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag 288 * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag
289 * @dtim_period: num of beacons before the next DTIM, for beaconing, 289 * @dtim_period: num of beacons before the next DTIM, for beaconing,
290 * valid in station mode only if after the driver was notified 290 * valid in station mode only if after the driver was notified
291 * with the %BSS_CHANGED_DTIM_PERIOD flag, will be non-zero then. 291 * with the %BSS_CHANGED_BEACON_INFO flag, will be non-zero then.
292 * @sync_tsf: last beacon's/probe response's TSF timestamp (could be old 292 * @sync_tsf: last beacon's/probe response's TSF timestamp (could be old
293 * as it may have been received during scanning long ago). If the 293 * as it may have been received during scanning long ago). If the
294 * HW flag %IEEE80211_HW_TIMING_BEACON_ONLY is set, then this can 294 * HW flag %IEEE80211_HW_TIMING_BEACON_ONLY is set, then this can
@@ -460,6 +460,8 @@ struct ieee80211_bss_conf {
460 * @IEEE80211_TX_CTL_DONTFRAG: Don't fragment this packet even if it 460 * @IEEE80211_TX_CTL_DONTFRAG: Don't fragment this packet even if it
461 * would be fragmented by size (this is optional, only used for 461 * would be fragmented by size (this is optional, only used for
462 * monitor injection). 462 * monitor injection).
463 * @IEEE80211_TX_CTL_PS_RESPONSE: This frame is a response to a poll
464 * frame (PS-Poll or uAPSD).
463 * 465 *
464 * Note: If you have to add new flags to the enumeration, then don't 466 * Note: If you have to add new flags to the enumeration, then don't
465 * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. 467 * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary.
@@ -495,6 +497,7 @@ enum mac80211_tx_control_flags {
495 IEEE80211_TX_STATUS_EOSP = BIT(28), 497 IEEE80211_TX_STATUS_EOSP = BIT(28),
496 IEEE80211_TX_CTL_USE_MINRATE = BIT(29), 498 IEEE80211_TX_CTL_USE_MINRATE = BIT(29),
497 IEEE80211_TX_CTL_DONTFRAG = BIT(30), 499 IEEE80211_TX_CTL_DONTFRAG = BIT(30),
500 IEEE80211_TX_CTL_PS_RESPONSE = BIT(31),
498}; 501};
499 502
500#define IEEE80211_TX_CTL_STBC_SHIFT 23 503#define IEEE80211_TX_CTL_STBC_SHIFT 23
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 5920715278c2..ca6facf4df0c 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -2577,6 +2577,10 @@ enum nl80211_mesh_power_mode {
2577 * 2577 *
2578 * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs) 2578 * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs)
2579 * 2579 *
2580 * @NL80211_MESHCONF_PLINK_TIMEOUT: If no tx activity is seen from a STA we've
2581 * established peering with for longer than this time (in seconds), then
2582 * remove it from the STA's list of peers. Default is 30 minutes.
2583 *
2580 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use 2584 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
2581 */ 2585 */
2582enum nl80211_meshconf_params { 2586enum nl80211_meshconf_params {
@@ -2608,6 +2612,7 @@ enum nl80211_meshconf_params {
2608 NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, 2612 NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
2609 NL80211_MESHCONF_POWER_MODE, 2613 NL80211_MESHCONF_POWER_MODE,
2610 NL80211_MESHCONF_AWAKE_WINDOW, 2614 NL80211_MESHCONF_AWAKE_WINDOW,
2615 NL80211_MESHCONF_PLINK_TIMEOUT,
2611 2616
2612 /* keep last */ 2617 /* keep last */
2613 __NL80211_MESHCONF_ATTR_AFTER_LAST, 2618 __NL80211_MESHCONF_ATTR_AFTER_LAST,
@@ -3579,6 +3584,10 @@ enum nl80211_ap_sme_features {
3579 * Peering Management entity which may be implemented by registering for 3584 * Peering Management entity which may be implemented by registering for
3580 * beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is 3585 * beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is
3581 * still generated by the driver. 3586 * still generated by the driver.
3587 * @NL80211_FEATURE_ACTIVE_MONITOR: This driver supports an active monitor
3588 * interface. An active monitor interface behaves like a normal monitor
3589 * interface, but gets added to the driver. It ensures that incoming
3590 * unicast packets directed at the configured interface address get ACKed.
3582 */ 3591 */
3583enum nl80211_feature_flags { 3592enum nl80211_feature_flags {
3584 NL80211_FEATURE_SK_TX_STATUS = 1 << 0, 3593 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,