aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2006-01-31 13:49:42 -0500
committerJohn W. Linville <linville@tuxdriver.com>2006-03-22 22:17:01 -0500
commitb6c7658ef8888e82608265d8098d09807997f771 (patch)
tree85fa8c98d1184b3f2d8b2483cc9adb8323283e9e /net
parentb10c991fa4cf0f1353228e04671aa793b4b3cf1d (diff)
[PATCH] softmac: add reassociation code
This patch adds handling of reassociation to softmac when the AP requests it. Patch from Larry Finger. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_assoc.c18
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_module.c1
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_priv.h2
3 files changed, 21 insertions, 0 deletions
diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c b/net/ieee80211/softmac/ieee80211softmac_assoc.c
index 755b612ce197..c6124fcf27b7 100644
--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c
+++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
@@ -390,3 +390,21 @@ ieee80211softmac_handle_disassoc(struct net_device * dev,
390 390
391 return 0; 391 return 0;
392} 392}
393
394int
395ieee80211softmac_handle_reassoc_req(struct net_device * dev,
396 struct ieee80211_reassoc_request * resp)
397{
398 struct ieee80211softmac_device *mac = ieee80211_priv(dev);
399 struct ieee80211softmac_network *network;
400
401 function_enter();
402
403 network = ieee80211softmac_get_network_by_bssid(mac, resp->header.addr3);
404 if (!network) {
405 dprintkl(KERN_INFO PFX "reassoc request from unknown network\n");
406 return 0;
407 }
408 ieee80211softmac_assoc(mac, network);
409 return 0;
410}
diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c b/net/ieee80211/softmac/ieee80211softmac_module.c
index aa65d5ad4c05..6f99f781bff8 100644
--- a/net/ieee80211/softmac/ieee80211softmac_module.c
+++ b/net/ieee80211/softmac/ieee80211softmac_module.c
@@ -41,6 +41,7 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv)
41 softmac->ieee->handle_auth = ieee80211softmac_auth_resp; 41 softmac->ieee->handle_auth = ieee80211softmac_auth_resp;
42 softmac->ieee->handle_deauth = ieee80211softmac_deauth_resp; 42 softmac->ieee->handle_deauth = ieee80211softmac_deauth_resp;
43 softmac->ieee->handle_assoc_response = ieee80211softmac_handle_assoc_response; 43 softmac->ieee->handle_assoc_response = ieee80211softmac_handle_assoc_response;
44 softmac->ieee->handle_reassoc_request = ieee80211softmac_handle_reassoc_req;
44 softmac->ieee->handle_disassoc = ieee80211softmac_handle_disassoc; 45 softmac->ieee->handle_disassoc = ieee80211softmac_handle_disassoc;
45 softmac->scaninfo = NULL; 46 softmac->scaninfo = NULL;
46 47
diff --git a/net/ieee80211/softmac/ieee80211softmac_priv.h b/net/ieee80211/softmac/ieee80211softmac_priv.h
index db0017ac29ea..258da14937be 100644
--- a/net/ieee80211/softmac/ieee80211softmac_priv.h
+++ b/net/ieee80211/softmac/ieee80211softmac_priv.h
@@ -156,6 +156,8 @@ int ieee80211softmac_handle_assoc_response(struct net_device * dev,
156 struct ieee80211_network * network); 156 struct ieee80211_network * network);
157int ieee80211softmac_handle_disassoc(struct net_device * dev, 157int ieee80211softmac_handle_disassoc(struct net_device * dev,
158 struct ieee80211_disassoc * disassoc); 158 struct ieee80211_disassoc * disassoc);
159int ieee80211softmac_handle_reassoc_req(struct net_device * dev,
160 struct ieee80211_reassoc_request * reassoc);
159void ieee80211softmac_assoc_timeout(void *d); 161void ieee80211softmac_assoc_timeout(void *d);
160 162
161/* some helper functions */ 163/* some helper functions */