]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Move hostap driver specific workaround into the driver wrapper
authorJouni Malinen <j@w1.fi>
Sun, 9 Jan 2011 10:50:57 +0000 (12:50 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 9 Jan 2011 10:50:57 +0000 (12:50 +0200)
src/ap/hostapd.c
src/drivers/driver_hostap.c

index 6c301ed803118a62382795ea206114f10c36e951..219983760ba6d5809a48c06a267c4476576815c0 100644 (file)
@@ -324,6 +324,7 @@ static int hostapd_setup_encryption(char *iface, struct hostapd_data *hapd)
 static int hostapd_flush_old_stations(struct hostapd_data *hapd)
 {
        int ret = 0;
+       u8 addr[ETH_ALEN];
 
        if (hostapd_drv_none(hapd) || hapd->drv_priv == NULL)
                return 0;
@@ -334,17 +335,8 @@ static int hostapd_flush_old_stations(struct hostapd_data *hapd)
                ret = -1;
        }
        wpa_printf(MSG_DEBUG, "Deauthenticate all stations");
-
-       /* New Prism2.5/3 STA firmware versions seem to have issues with this
-        * broadcast deauth frame. This gets the firmware in odd state where
-        * nothing works correctly, so let's skip sending this for the hostap
-        * driver. */
-       if (hapd->driver && os_strcmp(hapd->driver->name, "hostap") != 0) {
-               u8 addr[ETH_ALEN];
-               os_memset(addr, 0xff, ETH_ALEN);
-               hostapd_drv_sta_deauth(hapd, addr,
-                                      WLAN_REASON_PREV_AUTH_NOT_VALID);
-       }
+       os_memset(addr, 0xff, ETH_ALEN);
+       hostapd_drv_sta_deauth(hapd, addr, WLAN_REASON_PREV_AUTH_NOT_VALID);
 
        return ret;
 }
index 624293b767030f609f92a4fe998e557d8f5e2ca6..4fe6178309f8eba89fc4741a374d5e74c079aa68 100644 (file)
@@ -1035,6 +1035,16 @@ static int hostap_sta_deauth(void *priv, const u8 *own_addr, const u8 *addr,
        struct hostap_driver_data *drv = priv;
        struct ieee80211_mgmt mgmt;
 
+       if (is_broadcast_ether_addr(addr)) {
+               /*
+                * New Prism2.5/3 STA firmware versions seem to have issues
+                * with this broadcast deauth frame. This gets the firmware in
+                * odd state where nothing works correctly, so let's skip
+                * sending this for the hostap driver.
+                */
+               return 0;
+       }
+
        memset(&mgmt, 0, sizeof(mgmt));
        mgmt.frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
                                          WLAN_FC_STYPE_DEAUTH);