mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 07:01:57 +00:00
[PATCH] ieee80211: common wx auth code
This patch creates two functions ieee80211_wx_set_auth and ieee80211_wx_get_auth that can be used by drivers for the wireless extension handlers instead of writing their own, if the implementation should be software only. These patches enable using bcm43xx devices with WPA and this seems (as far as I can tell) to be the only difference between the stock ieee80211 and softmac's ieee80211 left. Signed-Off-By: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
bde37d0377
commit
dd5eeb461e
@ -1285,6 +1285,14 @@ extern int ieee80211_wx_set_encodeext(struct ieee80211_device *ieee,
|
||||
extern int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu, char *extra);
|
||||
extern int ieee80211_wx_set_auth(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra);
|
||||
extern int ieee80211_wx_get_auth(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra);
|
||||
|
||||
static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
|
||||
{
|
||||
|
@ -761,9 +761,98 @@ int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ieee80211_wx_set_auth(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra)
|
||||
{
|
||||
struct ieee80211_device *ieee = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
int err = 0;
|
||||
|
||||
spin_lock_irqsave(&ieee->lock, flags);
|
||||
|
||||
switch (wrqu->param.flags & IW_AUTH_INDEX) {
|
||||
case IW_AUTH_WPA_VERSION:
|
||||
case IW_AUTH_CIPHER_PAIRWISE:
|
||||
case IW_AUTH_CIPHER_GROUP:
|
||||
case IW_AUTH_KEY_MGMT:
|
||||
/*
|
||||
* Host AP driver does not use these parameters and allows
|
||||
* wpa_supplicant to control them internally.
|
||||
*/
|
||||
break;
|
||||
case IW_AUTH_TKIP_COUNTERMEASURES:
|
||||
break; /* FIXME */
|
||||
case IW_AUTH_DROP_UNENCRYPTED:
|
||||
ieee->drop_unencrypted = !!wrqu->param.value;
|
||||
break;
|
||||
case IW_AUTH_80211_AUTH_ALG:
|
||||
break; /* FIXME */
|
||||
case IW_AUTH_WPA_ENABLED:
|
||||
ieee->privacy_invoked = ieee->wpa_enabled = !!wrqu->param.value;
|
||||
break;
|
||||
case IW_AUTH_RX_UNENCRYPTED_EAPOL:
|
||||
ieee->ieee802_1x = !!wrqu->param.value;
|
||||
break;
|
||||
case IW_AUTH_PRIVACY_INVOKED:
|
||||
ieee->privacy_invoked = !!wrqu->param.value;
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
spin_unlock_irqrestore(&ieee->lock, flags);
|
||||
return err;
|
||||
}
|
||||
|
||||
int ieee80211_wx_get_auth(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu,
|
||||
char *extra)
|
||||
{
|
||||
struct ieee80211_device *ieee = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
int err = 0;
|
||||
|
||||
spin_lock_irqsave(&ieee->lock, flags);
|
||||
|
||||
switch (wrqu->param.flags & IW_AUTH_INDEX) {
|
||||
case IW_AUTH_WPA_VERSION:
|
||||
case IW_AUTH_CIPHER_PAIRWISE:
|
||||
case IW_AUTH_CIPHER_GROUP:
|
||||
case IW_AUTH_KEY_MGMT:
|
||||
case IW_AUTH_TKIP_COUNTERMEASURES: /* FIXME */
|
||||
case IW_AUTH_80211_AUTH_ALG: /* FIXME */
|
||||
/*
|
||||
* Host AP driver does not use these parameters and allows
|
||||
* wpa_supplicant to control them internally.
|
||||
*/
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
case IW_AUTH_DROP_UNENCRYPTED:
|
||||
wrqu->param.value = ieee->drop_unencrypted;
|
||||
break;
|
||||
case IW_AUTH_WPA_ENABLED:
|
||||
wrqu->param.value = ieee->wpa_enabled;
|
||||
break;
|
||||
case IW_AUTH_RX_UNENCRYPTED_EAPOL:
|
||||
wrqu->param.value = ieee->ieee802_1x;
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
spin_unlock_irqrestore(&ieee->lock, flags);
|
||||
return err;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ieee80211_wx_set_encodeext);
|
||||
EXPORT_SYMBOL(ieee80211_wx_get_encodeext);
|
||||
|
||||
EXPORT_SYMBOL(ieee80211_wx_get_scan);
|
||||
EXPORT_SYMBOL(ieee80211_wx_set_encode);
|
||||
EXPORT_SYMBOL(ieee80211_wx_get_encode);
|
||||
|
||||
EXPORT_SYMBOL_GPL(ieee80211_wx_set_auth);
|
||||
EXPORT_SYMBOL_GPL(ieee80211_wx_get_auth);
|
||||
|
Loading…
Reference in New Issue
Block a user