[PATCH] softmac: add SIOCSIWMLME
This patch adds the SIOCSIWMLME wext to softmac, this functionality appears to be used by wpa_supplicant and is softmac-specific. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Cc: Jouni Malinen <jkm@devicescape.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
e3c5a64e70
Коммит
9a1771e867
|
@ -91,4 +91,9 @@ ieee80211softmac_wx_get_genie(struct net_device *dev,
|
|||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra);
|
||||
extern int
|
||||
ieee80211softmac_wx_set_mlme(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra);
|
||||
#endif /* _IEEE80211SOFTMAC_WX */
|
||||
|
|
|
@ -82,7 +82,7 @@ ieee80211softmac_assoc_timeout(void *d)
|
|||
}
|
||||
|
||||
/* Sends out a disassociation request to the desired AP */
|
||||
static void
|
||||
void
|
||||
ieee80211softmac_disassoc(struct ieee80211softmac_device *mac, u16 reason)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
|
|
@ -150,6 +150,7 @@ int ieee80211softmac_handle_disassoc(struct net_device * dev,
|
|||
int ieee80211softmac_handle_reassoc_req(struct net_device * dev,
|
||||
struct ieee80211_reassoc_request * reassoc);
|
||||
void ieee80211softmac_assoc_timeout(void *d);
|
||||
void ieee80211softmac_disassoc(struct ieee80211softmac_device *mac, u16 reason);
|
||||
|
||||
/* some helper functions */
|
||||
static inline int ieee80211softmac_scan_handlers_check_self(struct ieee80211softmac_device *sm)
|
||||
|
|
|
@ -431,3 +431,35 @@ ieee80211softmac_wx_get_genie(struct net_device *dev,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(ieee80211softmac_wx_get_genie);
|
||||
|
||||
int
|
||||
ieee80211softmac_wx_set_mlme(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra)
|
||||
{
|
||||
struct ieee80211softmac_device *mac = ieee80211_priv(dev);
|
||||
struct iw_mlme *mlme = (struct iw_mlme *)extra;
|
||||
u16 reason = cpu_to_le16(mlme->reason_code);
|
||||
struct ieee80211softmac_network *net;
|
||||
|
||||
if (memcmp(mac->associnfo.bssid, mlme->addr.sa_data, ETH_ALEN)) {
|
||||
printk(KERN_DEBUG PFX "wx_set_mlme: requested operation on net we don't use\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (mlme->cmd) {
|
||||
case IW_MLME_DEAUTH:
|
||||
net = ieee80211softmac_get_network_by_bssid_locked(mac, mlme->addr.sa_data);
|
||||
if (!net) {
|
||||
printk(KERN_DEBUG PFX "wx_set_mlme: we should know the net here...\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return ieee80211softmac_deauth_req(mac, net, reason);
|
||||
case IW_MLME_DISASSOC:
|
||||
ieee80211softmac_disassoc(mac, reason);
|
||||
return 0;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ieee80211softmac_wx_set_mlme);
|
||||
|
|
Загрузка…
Ссылка в новой задаче