diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 86 |
1 files changed, 36 insertions, 50 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index d0354b16d24f..2e92bbd9b2d0 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -227,11 +227,32 @@ struct mesh_preq_queue { | |||
227 | u8 flags; | 227 | u8 flags; |
228 | }; | 228 | }; |
229 | 229 | ||
230 | enum ieee80211_mgd_state { | ||
231 | IEEE80211_MGD_STATE_IDLE, | ||
232 | IEEE80211_MGD_STATE_PROBE, | ||
233 | IEEE80211_MGD_STATE_AUTH, | ||
234 | IEEE80211_MGD_STATE_ASSOC, | ||
235 | }; | ||
236 | |||
237 | struct ieee80211_mgd_work { | ||
238 | struct list_head list; | ||
239 | struct ieee80211_bss *bss; | ||
240 | int ie_len; | ||
241 | u8 prev_bssid[ETH_ALEN]; | ||
242 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
243 | u8 ssid_len; | ||
244 | unsigned long timeout; | ||
245 | enum ieee80211_mgd_state state; | ||
246 | u16 auth_alg, auth_transaction; | ||
247 | |||
248 | int tries; | ||
249 | |||
250 | /* must be last */ | ||
251 | u8 ie[0]; /* for auth or assoc frame, not probe */ | ||
252 | }; | ||
253 | |||
230 | /* flags used in struct ieee80211_if_managed.flags */ | 254 | /* flags used in struct ieee80211_if_managed.flags */ |
231 | enum ieee80211_sta_flags { | 255 | enum ieee80211_sta_flags { |
232 | IEEE80211_STA_PREV_BSSID_SET = BIT(0), | ||
233 | IEEE80211_STA_AUTHENTICATED = BIT(1), | ||
234 | IEEE80211_STA_ASSOCIATED = BIT(2), | ||
235 | IEEE80211_STA_PROBEREQ_POLL = BIT(3), | 256 | IEEE80211_STA_PROBEREQ_POLL = BIT(3), |
236 | IEEE80211_STA_CONTROL_PORT = BIT(4), | 257 | IEEE80211_STA_CONTROL_PORT = BIT(4), |
237 | IEEE80211_STA_WMM_ENABLED = BIT(5), | 258 | IEEE80211_STA_WMM_ENABLED = BIT(5), |
@@ -243,8 +264,6 @@ enum ieee80211_sta_flags { | |||
243 | /* flags for MLME request */ | 264 | /* flags for MLME request */ |
244 | enum ieee80211_sta_request { | 265 | enum ieee80211_sta_request { |
245 | IEEE80211_STA_REQ_SCAN, | 266 | IEEE80211_STA_REQ_SCAN, |
246 | IEEE80211_STA_REQ_AUTH, | ||
247 | IEEE80211_STA_REQ_RUN, | ||
248 | }; | 267 | }; |
249 | 268 | ||
250 | struct ieee80211_if_managed { | 269 | struct ieee80211_if_managed { |
@@ -254,35 +273,17 @@ struct ieee80211_if_managed { | |||
254 | struct work_struct chswitch_work; | 273 | struct work_struct chswitch_work; |
255 | struct work_struct beacon_loss_work; | 274 | struct work_struct beacon_loss_work; |
256 | 275 | ||
257 | u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN]; | 276 | struct mutex mtx; |
277 | struct ieee80211_bss *associated; | ||
278 | struct list_head work_list; | ||
258 | 279 | ||
259 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | 280 | u8 bssid[ETH_ALEN]; |
260 | size_t ssid_len; | ||
261 | |||
262 | enum { | ||
263 | IEEE80211_STA_MLME_DISABLED, | ||
264 | IEEE80211_STA_MLME_DIRECT_PROBE, | ||
265 | IEEE80211_STA_MLME_AUTHENTICATE, | ||
266 | IEEE80211_STA_MLME_ASSOCIATE, | ||
267 | IEEE80211_STA_MLME_ASSOCIATED, | ||
268 | } state; | ||
269 | 281 | ||
270 | u16 aid; | 282 | u16 aid; |
271 | u16 capab; | 283 | u16 capab; |
272 | u8 *extra_ie; /* to be added to the end of AssocReq */ | ||
273 | size_t extra_ie_len; | ||
274 | |||
275 | /* The last AssocReq/Resp IEs */ | ||
276 | u8 *assocreq_ies, *assocresp_ies; | ||
277 | size_t assocreq_ies_len, assocresp_ies_len; | ||
278 | 284 | ||
279 | struct sk_buff_head skb_queue; | 285 | struct sk_buff_head skb_queue; |
280 | 286 | ||
281 | int assoc_scan_tries; /* number of scans done pre-association */ | ||
282 | int direct_probe_tries; /* retries for direct probes */ | ||
283 | int auth_tries; /* retries for auth req */ | ||
284 | int assoc_tries; /* retries for assoc req */ | ||
285 | |||
286 | unsigned long timers_running; /* used for quiesce/restart */ | 287 | unsigned long timers_running; /* used for quiesce/restart */ |
287 | bool powersave; /* powersave requested for this iface */ | 288 | bool powersave; /* powersave requested for this iface */ |
288 | 289 | ||
@@ -292,9 +293,6 @@ struct ieee80211_if_managed { | |||
292 | 293 | ||
293 | unsigned int flags; | 294 | unsigned int flags; |
294 | 295 | ||
295 | int auth_alg; /* currently used IEEE 802.11 authentication algorithm */ | ||
296 | int auth_transaction; | ||
297 | |||
298 | u32 beacon_crc; | 296 | u32 beacon_crc; |
299 | 297 | ||
300 | enum { | 298 | enum { |
@@ -304,10 +302,6 @@ struct ieee80211_if_managed { | |||
304 | } mfp; /* management frame protection */ | 302 | } mfp; /* management frame protection */ |
305 | 303 | ||
306 | int wmm_last_param_set; | 304 | int wmm_last_param_set; |
307 | |||
308 | /* Extra IE data for management frames */ | ||
309 | u8 *sme_auth_ie; | ||
310 | size_t sme_auth_ie_len; | ||
311 | }; | 305 | }; |
312 | 306 | ||
313 | enum ieee80211_ibss_request { | 307 | enum ieee80211_ibss_request { |
@@ -466,18 +460,9 @@ struct ieee80211_sub_if_data { | |||
466 | union { | 460 | union { |
467 | struct { | 461 | struct { |
468 | struct dentry *drop_unencrypted; | 462 | struct dentry *drop_unencrypted; |
469 | struct dentry *state; | ||
470 | struct dentry *bssid; | 463 | struct dentry *bssid; |
471 | struct dentry *prev_bssid; | ||
472 | struct dentry *ssid_len; | ||
473 | struct dentry *aid; | 464 | struct dentry *aid; |
474 | struct dentry *capab; | 465 | struct dentry *capab; |
475 | struct dentry *extra_ie_len; | ||
476 | struct dentry *auth_tries; | ||
477 | struct dentry *assoc_tries; | ||
478 | struct dentry *auth_alg; | ||
479 | struct dentry *auth_transaction; | ||
480 | struct dentry *flags; | ||
481 | struct dentry *force_unicast_rateidx; | 466 | struct dentry *force_unicast_rateidx; |
482 | struct dentry *max_ratectrl_rateidx; | 467 | struct dentry *max_ratectrl_rateidx; |
483 | } sta; | 468 | } sta; |
@@ -928,11 +913,16 @@ extern const struct iw_handler_def ieee80211_iw_handler_def; | |||
928 | 913 | ||
929 | /* STA code */ | 914 | /* STA code */ |
930 | void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata); | 915 | void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata); |
916 | int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata, | ||
917 | struct cfg80211_auth_request *req); | ||
918 | int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata, | ||
919 | struct cfg80211_assoc_request *req); | ||
920 | int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata, | ||
921 | struct cfg80211_deauth_request *req); | ||
922 | int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata, | ||
923 | struct cfg80211_disassoc_request *req); | ||
931 | ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata, | 924 | ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata, |
932 | struct sk_buff *skb); | 925 | struct sk_buff *skb); |
933 | void ieee80211_sta_req_auth(struct ieee80211_sub_if_data *sdata); | ||
934 | int ieee80211_sta_deauthenticate(struct ieee80211_sub_if_data *sdata, u16 reason); | ||
935 | int ieee80211_sta_disassociate(struct ieee80211_sub_if_data *sdata, u16 reason); | ||
936 | void ieee80211_send_pspoll(struct ieee80211_local *local, | 926 | void ieee80211_send_pspoll(struct ieee80211_local *local, |
937 | struct ieee80211_sub_if_data *sdata); | 927 | struct ieee80211_sub_if_data *sdata); |
938 | void ieee80211_recalc_ps(struct ieee80211_local *local, s32 latency); | 928 | void ieee80211_recalc_ps(struct ieee80211_local *local, s32 latency); |
@@ -966,8 +956,6 @@ int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, | |||
966 | void ieee80211_scan_cancel(struct ieee80211_local *local); | 956 | void ieee80211_scan_cancel(struct ieee80211_local *local); |
967 | ieee80211_rx_result | 957 | ieee80211_rx_result |
968 | ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); | 958 | ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); |
969 | int ieee80211_sta_set_extra_ie(struct ieee80211_sub_if_data *sdata, | ||
970 | const char *ie, size_t len); | ||
971 | 959 | ||
972 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local); | 960 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local); |
973 | struct ieee80211_bss * | 961 | struct ieee80211_bss * |
@@ -983,8 +971,6 @@ ieee80211_rx_bss_get(struct ieee80211_local *local, u8 *bssid, int freq, | |||
983 | u8 *ssid, u8 ssid_len); | 971 | u8 *ssid, u8 ssid_len); |
984 | void ieee80211_rx_bss_put(struct ieee80211_local *local, | 972 | void ieee80211_rx_bss_put(struct ieee80211_local *local, |
985 | struct ieee80211_bss *bss); | 973 | struct ieee80211_bss *bss); |
986 | void ieee80211_rx_bss_remove(struct ieee80211_sub_if_data *sdata, u8 *bssid, | ||
987 | int freq, u8 *ssid, u8 ssid_len); | ||
988 | 974 | ||
989 | /* interface handling */ | 975 | /* interface handling */ |
990 | int ieee80211_if_add(struct ieee80211_local *local, const char *name, | 976 | int ieee80211_if_add(struct ieee80211_local *local, const char *name, |