softmac: add SIOCSIWMLME
Subsystems (2)
PATCH 1/1 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 <[email protected]>
net/ieee80211/softmac/ieee80211softmac_priv.h +1 -0
@@ -150,6 +150,7 @@ int ieee80211softmac_handle_disassoc(strint 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)
net/ieee80211/softmac/ieee80211softmac_wx.c +32 -0
@@ -424,3 +424,35 @@ ieee80211softmac_wx_get_genie(struct net }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);
include/net/ieee80211softmac_wx.h +5 -0
@@ -91,4 +91,9 @@ ieee80211softmac_wx_get_genie(struct netstruct 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 */
net/ieee80211/softmac/ieee80211softmac_assoc.c +1 -1
@@ -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;