diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-04-19 13:57:45 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-04-22 16:57:17 -0400 |
commit | 691597cb26f236ac7471f1adf925a134c86799d6 (patch) | |
tree | e89d91e496af082711b7c0789aaf0a985e7ba964 /net/mac80211 | |
parent | d726405af6c8c81d2ee5e6a29301c68b9d4c574f (diff) |
cfg80211/mac80211: move wext SIWMLME into cfg80211
Since we have ->deauth and ->disassoc we can support the
wext SIWMLME call directly without driver wext handlers.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/cfg.c | 12 | ||||
-rw-r--r-- | net/mac80211/mlme.c | 6 | ||||
-rw-r--r-- | net/mac80211/wext.c | 25 |
3 files changed, 5 insertions, 38 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 520efa8a0791..daf75287e92a 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -1268,22 +1268,18 @@ static int ieee80211_assoc(struct wiphy *wiphy, struct net_device *dev, | |||
1268 | static int ieee80211_deauth(struct wiphy *wiphy, struct net_device *dev, | 1268 | static int ieee80211_deauth(struct wiphy *wiphy, struct net_device *dev, |
1269 | struct cfg80211_deauth_request *req) | 1269 | struct cfg80211_deauth_request *req) |
1270 | { | 1270 | { |
1271 | struct ieee80211_sub_if_data *sdata; | 1271 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
1272 | |||
1273 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
1274 | 1272 | ||
1275 | /* TODO: req->ie */ | 1273 | /* TODO: req->ie, req->peer_addr */ |
1276 | return ieee80211_sta_deauthenticate(sdata, req->reason_code); | 1274 | return ieee80211_sta_deauthenticate(sdata, req->reason_code); |
1277 | } | 1275 | } |
1278 | 1276 | ||
1279 | static int ieee80211_disassoc(struct wiphy *wiphy, struct net_device *dev, | 1277 | static int ieee80211_disassoc(struct wiphy *wiphy, struct net_device *dev, |
1280 | struct cfg80211_disassoc_request *req) | 1278 | struct cfg80211_disassoc_request *req) |
1281 | { | 1279 | { |
1282 | struct ieee80211_sub_if_data *sdata; | 1280 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
1283 | |||
1284 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
1285 | 1281 | ||
1286 | /* TODO: req->ie */ | 1282 | /* TODO: req->ie, req->peer_addr */ |
1287 | return ieee80211_sta_disassociate(sdata, req->reason_code); | 1283 | return ieee80211_sta_disassociate(sdata, req->reason_code); |
1288 | } | 1284 | } |
1289 | 1285 | ||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index a16c9d724be1..428742d7f440 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -2338,9 +2338,6 @@ int ieee80211_sta_deauthenticate(struct ieee80211_sub_if_data *sdata, u16 reason | |||
2338 | printk(KERN_DEBUG "%s: deauthenticating by local choice (reason=%d)\n", | 2338 | printk(KERN_DEBUG "%s: deauthenticating by local choice (reason=%d)\n", |
2339 | sdata->dev->name, reason); | 2339 | sdata->dev->name, reason); |
2340 | 2340 | ||
2341 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | ||
2342 | return -EINVAL; | ||
2343 | |||
2344 | ieee80211_set_disassoc(sdata, true, true, reason); | 2341 | ieee80211_set_disassoc(sdata, true, true, reason); |
2345 | return 0; | 2342 | return 0; |
2346 | } | 2343 | } |
@@ -2352,9 +2349,6 @@ int ieee80211_sta_disassociate(struct ieee80211_sub_if_data *sdata, u16 reason) | |||
2352 | printk(KERN_DEBUG "%s: disassociating by local choice (reason=%d)\n", | 2349 | printk(KERN_DEBUG "%s: disassociating by local choice (reason=%d)\n", |
2353 | sdata->dev->name, reason); | 2350 | sdata->dev->name, reason); |
2354 | 2351 | ||
2355 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | ||
2356 | return -EINVAL; | ||
2357 | |||
2358 | if (!(ifmgd->flags & IEEE80211_STA_ASSOCIATED)) | 2352 | if (!(ifmgd->flags & IEEE80211_STA_ASSOCIATED)) |
2359 | return -ENOLINK; | 2353 | return -ENOLINK; |
2360 | 2354 | ||
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c index 1c4664b8b1a0..896704cf94e1 100644 --- a/net/mac80211/wext.c +++ b/net/mac80211/wext.c | |||
@@ -612,29 +612,6 @@ static int ieee80211_ioctl_giwretry(struct net_device *dev, | |||
612 | return 0; | 612 | return 0; |
613 | } | 613 | } |
614 | 614 | ||
615 | static int ieee80211_ioctl_siwmlme(struct net_device *dev, | ||
616 | struct iw_request_info *info, | ||
617 | struct iw_point *data, char *extra) | ||
618 | { | ||
619 | struct ieee80211_sub_if_data *sdata; | ||
620 | struct iw_mlme *mlme = (struct iw_mlme *) extra; | ||
621 | |||
622 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
623 | if (!(sdata->vif.type == NL80211_IFTYPE_STATION)) | ||
624 | return -EINVAL; | ||
625 | |||
626 | switch (mlme->cmd) { | ||
627 | case IW_MLME_DEAUTH: | ||
628 | /* TODO: mlme->addr.sa_data */ | ||
629 | return ieee80211_sta_deauthenticate(sdata, mlme->reason_code); | ||
630 | case IW_MLME_DISASSOC: | ||
631 | /* TODO: mlme->addr.sa_data */ | ||
632 | return ieee80211_sta_disassociate(sdata, mlme->reason_code); | ||
633 | default: | ||
634 | return -EOPNOTSUPP; | ||
635 | } | ||
636 | } | ||
637 | |||
638 | 615 | ||
639 | static int ieee80211_ioctl_siwencode(struct net_device *dev, | 616 | static int ieee80211_ioctl_siwencode(struct net_device *dev, |
640 | struct iw_request_info *info, | 617 | struct iw_request_info *info, |
@@ -1076,7 +1053,7 @@ static const iw_handler ieee80211_handler[] = | |||
1076 | (iw_handler) NULL, /* SIOCGIWTHRSPY */ | 1053 | (iw_handler) NULL, /* SIOCGIWTHRSPY */ |
1077 | (iw_handler) ieee80211_ioctl_siwap, /* SIOCSIWAP */ | 1054 | (iw_handler) ieee80211_ioctl_siwap, /* SIOCSIWAP */ |
1078 | (iw_handler) ieee80211_ioctl_giwap, /* SIOCGIWAP */ | 1055 | (iw_handler) ieee80211_ioctl_giwap, /* SIOCGIWAP */ |
1079 | (iw_handler) ieee80211_ioctl_siwmlme, /* SIOCSIWMLME */ | 1056 | (iw_handler) cfg80211_wext_siwmlme, /* SIOCSIWMLME */ |
1080 | (iw_handler) NULL, /* SIOCGIWAPLIST */ | 1057 | (iw_handler) NULL, /* SIOCGIWAPLIST */ |
1081 | (iw_handler) cfg80211_wext_siwscan, /* SIOCSIWSCAN */ | 1058 | (iw_handler) cfg80211_wext_siwscan, /* SIOCSIWSCAN */ |
1082 | (iw_handler) cfg80211_wext_giwscan, /* SIOCGIWSCAN */ | 1059 | (iw_handler) cfg80211_wext_giwscan, /* SIOCGIWSCAN */ |