aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-01-20 07:55:25 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-02-06 14:50:37 -0500
commit95de817b9034d50860319f6033ec85d25024694c (patch)
tree8dc100ec6a5ee527a6e86b33e904f5f9d14181ab /include/net/cfg80211.h
parent7852e36186d2a1983c215836d7e3d7b8927c930d (diff)
cfg80211: stop tracking authenticated state
To track authenticated state seems to have been a design mistake in cfg80211. It is possible to have out of band authentication (FT), tracking multiple authentications caused more problems than it ever helped, and the implementation in mac80211 is too complex. Remove all this complexity, and let userspace do whatever it wants to, mac80211 can deal with that just fine. Association is still tracked of course, but authentication no longer is. Local auth state changes are thus no longer of value, so ignore them completely. This will also help implement SAE -- asking the driver to do an authentication is now almost equivalent to sending an authentication frame, with the exception of shared key authentication which is still handled completely. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r--include/net/cfg80211.h39
1 files changed, 11 insertions, 28 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 2964205332f4..6cfecb02a34b 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1039,10 +1039,6 @@ const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie);
1039 * @key_len: length of WEP key for shared key authentication 1039 * @key_len: length of WEP key for shared key authentication
1040 * @key_idx: index of WEP key for shared key authentication 1040 * @key_idx: index of WEP key for shared key authentication
1041 * @key: WEP key for shared key authentication 1041 * @key: WEP key for shared key authentication
1042 * @local_state_change: This is a request for a local state only, i.e., no
1043 * Authentication frame is to be transmitted and authentication state is
1044 * to be changed without having to wait for a response from the peer STA
1045 * (AP).
1046 */ 1042 */
1047struct cfg80211_auth_request { 1043struct cfg80211_auth_request {
1048 struct cfg80211_bss *bss; 1044 struct cfg80211_bss *bss;
@@ -1051,7 +1047,6 @@ struct cfg80211_auth_request {
1051 enum nl80211_auth_type auth_type; 1047 enum nl80211_auth_type auth_type;
1052 const u8 *key; 1048 const u8 *key;
1053 u8 key_len, key_idx; 1049 u8 key_len, key_idx;
1054 bool local_state_change;
1055}; 1050};
1056 1051
1057/** 1052/**
@@ -1068,7 +1063,11 @@ enum cfg80211_assoc_req_flags {
1068 * 1063 *
1069 * This structure provides information needed to complete IEEE 802.11 1064 * This structure provides information needed to complete IEEE 802.11
1070 * (re)association. 1065 * (re)association.
1071 * @bss: The BSS to associate with. 1066 * @bss: The BSS to associate with. If the call is successful the driver
1067 * is given a reference that it must release, normally via a call to
1068 * cfg80211_send_rx_assoc(), or, if association timed out, with a
1069 * call to cfg80211_put_bss() (in addition to calling
1070 * cfg80211_send_assoc_timeout())
1072 * @ie: Extra IEs to add to (Re)Association Request frame or %NULL 1071 * @ie: Extra IEs to add to (Re)Association Request frame or %NULL
1073 * @ie_len: Length of ie buffer in octets 1072 * @ie_len: Length of ie buffer in octets
1074 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association 1073 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association
@@ -1096,19 +1095,16 @@ struct cfg80211_assoc_request {
1096 * This structure provides information needed to complete IEEE 802.11 1095 * This structure provides information needed to complete IEEE 802.11
1097 * deauthentication. 1096 * deauthentication.
1098 * 1097 *
1099 * @bss: the BSS to deauthenticate from 1098 * @bssid: the BSSID of the BSS to deauthenticate from
1100 * @ie: Extra IEs to add to Deauthentication frame or %NULL 1099 * @ie: Extra IEs to add to Deauthentication frame or %NULL
1101 * @ie_len: Length of ie buffer in octets 1100 * @ie_len: Length of ie buffer in octets
1102 * @reason_code: The reason code for the deauthentication 1101 * @reason_code: The reason code for the deauthentication
1103 * @local_state_change: This is a request for a local state only, i.e., no
1104 * Deauthentication frame is to be transmitted.
1105 */ 1102 */
1106struct cfg80211_deauth_request { 1103struct cfg80211_deauth_request {
1107 struct cfg80211_bss *bss; 1104 const u8 *bssid;
1108 const u8 *ie; 1105 const u8 *ie;
1109 size_t ie_len; 1106 size_t ie_len;
1110 u16 reason_code; 1107 u16 reason_code;
1111 bool local_state_change;
1112}; 1108};
1113 1109
1114/** 1110/**
@@ -2206,8 +2202,6 @@ struct cfg80211_conn;
2206struct cfg80211_internal_bss; 2202struct cfg80211_internal_bss;
2207struct cfg80211_cached_keys; 2203struct cfg80211_cached_keys;
2208 2204
2209#define MAX_AUTH_BSSES 4
2210
2211/** 2205/**
2212 * struct wireless_dev - wireless per-netdev state 2206 * struct wireless_dev - wireless per-netdev state
2213 * 2207 *
@@ -2271,8 +2265,6 @@ struct wireless_dev {
2271 struct list_head event_list; 2265 struct list_head event_list;
2272 spinlock_t event_lock; 2266 spinlock_t event_lock;
2273 2267
2274 struct cfg80211_internal_bss *authtry_bsses[MAX_AUTH_BSSES];
2275 struct cfg80211_internal_bss *auth_bsses[MAX_AUTH_BSSES];
2276 struct cfg80211_internal_bss *current_bss; /* associated / joined */ 2268 struct cfg80211_internal_bss *current_bss; /* associated / joined */
2277 struct ieee80211_channel *channel; 2269 struct ieee80211_channel *channel;
2278 2270
@@ -2764,20 +2756,10 @@ void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len);
2764void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr); 2756void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr);
2765 2757
2766/** 2758/**
2767 * __cfg80211_auth_canceled - notify cfg80211 that authentication was canceled
2768 * @dev: network device
2769 * @addr: The MAC address of the device with which the authentication timed out
2770 *
2771 * When a pending authentication had no action yet, the driver may decide
2772 * to not send a deauth frame, but in that case must calls this function
2773 * to tell cfg80211 about this decision. It is only valid to call this
2774 * function within the deauth() callback.
2775 */
2776void __cfg80211_auth_canceled(struct net_device *dev, const u8 *addr);
2777
2778/**
2779 * cfg80211_send_rx_assoc - notification of processed association 2759 * cfg80211_send_rx_assoc - notification of processed association
2780 * @dev: network device 2760 * @dev: network device
2761 * @bss: the BSS struct association was requested for, the struct reference
2762 * is owned by cfg80211 after this call
2781 * @buf: (re)association response frame (header + body) 2763 * @buf: (re)association response frame (header + body)
2782 * @len: length of the frame data 2764 * @len: length of the frame data
2783 * 2765 *
@@ -2786,7 +2768,8 @@ void __cfg80211_auth_canceled(struct net_device *dev, const u8 *addr);
2786 * function or cfg80211_send_assoc_timeout() to indicate the result of 2768 * function or cfg80211_send_assoc_timeout() to indicate the result of
2787 * cfg80211_ops::assoc() call. This function may sleep. 2769 * cfg80211_ops::assoc() call. This function may sleep.
2788 */ 2770 */
2789void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len); 2771void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss,
2772 const u8 *buf, size_t len);
2790 2773
2791/** 2774/**
2792 * cfg80211_send_assoc_timeout - notification of timed out association 2775 * cfg80211_send_assoc_timeout - notification of timed out association