nl80211: Clear HT flags from the channel when exiting
authorJouni Malinen <jouni.malinen@atheros.com>
Wed, 26 Nov 2008 08:51:01 +0000 (10:51 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 26 Nov 2008 08:51:01 +0000 (10:51 +0200)
hostapd/driver_nl80211.c

index faadbe5..4f8d049 100644 (file)
@@ -70,6 +70,9 @@ struct i802_driver_data {
        int dtim_period, beacon_int;
        unsigned int beacon_set:1;
        unsigned int ieee802_1x_active:1;
+
+       int last_freq;
+       int last_freq_ht;
 };
 
 
@@ -471,6 +474,9 @@ static int i802_set_freq2(void *priv, struct hostapd_freq_params *freq)
        if (!msg)
                return -1;
 
+       drv->last_freq = freq->freq;
+       drv->last_freq_ht = freq->ht_enabled;
+
        genlmsg_put(msg, 0, 0, genl_family_get_id(drv->nl80211), 0, 0,
                    NL80211_CMD_SET_WIPHY, 0);
 
@@ -2384,6 +2390,14 @@ static void i802_deinit(void *priv)
 {
        struct i802_driver_data *drv = priv;
 
+       if (drv->last_freq_ht) {
+               /* Clear HT flags from the driver */
+               struct hostapd_freq_params freq;
+               os_memset(&freq, 0, sizeof(freq));
+               freq.freq = drv->last_freq;
+               i802_set_freq2(priv, &freq);
+       }
+
        i802_del_beacon(drv);
 
        /* remove monitor interface */