|
@@ -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);
|