atheros: Fix WPA/802.1X disabling to clear Privacy flag
authorJouni Malinen <jouni.malinen@atheros.com>
Fri, 28 May 2010 18:51:31 +0000 (21:51 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 28 May 2010 18:51:31 +0000 (21:51 +0300)
Setting IEEE80211_PARAM_AUTHMODE to IEEE80211_AUTH_AUTO ends up enabling
Privacy mode in the driver. We need to clear that to allow hostapd to be
reconfigured into open mode.

src/drivers/driver_atheros.c

index ad78c2a..a146114 100644 (file)
@@ -74,6 +74,7 @@ struct madwifi_driver_data {
 
 static int madwifi_sta_deauth(void *priv, const u8 *own_addr, const u8 *addr,
                              int reason_code);
+static int madwifi_set_privacy(void *priv, int enabled);
 
 static const char * athr_get_ioctl_name(int op)
 {
@@ -343,8 +344,11 @@ madwifi_set_ieee8021x(void *priv, struct wpa_bss_params *params)
 
        if (!params->enabled) {
                /* XXX restore state */
-               return set80211param(priv, IEEE80211_PARAM_AUTHMODE,
-                       IEEE80211_AUTH_AUTO);
+               if (set80211param(priv, IEEE80211_PARAM_AUTHMODE,
+                                 IEEE80211_AUTH_AUTO) < 0)
+                       return -1;
+               /* IEEE80211_AUTH_AUTO ends up enabling Privacy; clear that */
+               return madwifi_set_privacy(drv, 0);
        }
        if (!params->wpa && !params->ieee802_1x) {
                hostapd_logger(drv->hapd, NULL, HOSTAPD_MODULE_DRIVER,