Commit b6c7658e authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

[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: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent b10c991f
...@@ -390,3 +390,21 @@ ieee80211softmac_handle_disassoc(struct net_device * dev, ...@@ -390,3 +390,21 @@ ieee80211softmac_handle_disassoc(struct net_device * dev,
return 0; return 0;
} }
int
ieee80211softmac_handle_reassoc_req(struct net_device * dev,
struct ieee80211_reassoc_request * resp)
{
struct ieee80211softmac_device *mac = ieee80211_priv(dev);
struct ieee80211softmac_network *network;
function_enter();
network = ieee80211softmac_get_network_by_bssid(mac, resp->header.addr3);
if (!network) {
dprintkl(KERN_INFO PFX "reassoc request from unknown network\n");
return 0;
}
ieee80211softmac_assoc(mac, network);
return 0;
}
...@@ -41,6 +41,7 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv) ...@@ -41,6 +41,7 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv)
softmac->ieee->handle_auth = ieee80211softmac_auth_resp; softmac->ieee->handle_auth = ieee80211softmac_auth_resp;
softmac->ieee->handle_deauth = ieee80211softmac_deauth_resp; softmac->ieee->handle_deauth = ieee80211softmac_deauth_resp;
softmac->ieee->handle_assoc_response = ieee80211softmac_handle_assoc_response; softmac->ieee->handle_assoc_response = ieee80211softmac_handle_assoc_response;
softmac->ieee->handle_reassoc_request = ieee80211softmac_handle_reassoc_req;
softmac->ieee->handle_disassoc = ieee80211softmac_handle_disassoc; softmac->ieee->handle_disassoc = ieee80211softmac_handle_disassoc;
softmac->scaninfo = NULL; softmac->scaninfo = NULL;
......
...@@ -156,6 +156,8 @@ int ieee80211softmac_handle_assoc_response(struct net_device * dev, ...@@ -156,6 +156,8 @@ int ieee80211softmac_handle_assoc_response(struct net_device * dev,
struct ieee80211_network * network); struct ieee80211_network * network);
int ieee80211softmac_handle_disassoc(struct net_device * dev, int ieee80211softmac_handle_disassoc(struct net_device * dev,
struct ieee80211_disassoc * disassoc); struct ieee80211_disassoc * disassoc);
int ieee80211softmac_handle_reassoc_req(struct net_device * dev,
struct ieee80211_reassoc_request * reassoc);
void ieee80211softmac_assoc_timeout(void *d); void ieee80211softmac_assoc_timeout(void *d);
/* some helper functions */ /* some helper functions */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment