]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wlantest: Add counters for AP deauth/disassoc while asleep/awake
authorJouni Malinen <jouni.malinen@atheros.com>
Fri, 7 Jan 2011 14:52:56 +0000 (16:52 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 7 Jan 2011 14:52:56 +0000 (16:52 +0200)
These can be used to check whether the STA is in power save mode
and because of that, is not seeing disconnection notifications.

wlantest/rx_mgmt.c
wlantest/wlantest_cli.c
wlantest/wlantest_ctrl.h

index 234de6103bf58d0703b1301772aca9c79bb8e030..dd430be28dd8ae4d19b572bf65618e99c6990528 100644 (file)
@@ -204,10 +204,14 @@ static void rx_mgmt_deauth(struct wlantest *wt, const u8 *data, size_t len,
                return;
        }
 
-       if (os_memcmp(mgmt->sa, mgmt->bssid, ETH_ALEN) == 0)
+       if (os_memcmp(mgmt->sa, mgmt->bssid, ETH_ALEN) == 0) {
                sta->counters[valid ? WLANTEST_STA_COUNTER_VALID_DEAUTH_RX :
                              WLANTEST_STA_COUNTER_INVALID_DEAUTH_RX]++;
-       else
+               if (sta->pwrmgt && !sta->pspoll)
+                       sta->counters[WLANTEST_STA_COUNTER_DEAUTH_RX_ASLEEP]++;
+               else
+                       sta->counters[WLANTEST_STA_COUNTER_DEAUTH_RX_AWAKE]++;
+       } else
                sta->counters[valid ? WLANTEST_STA_COUNTER_VALID_DEAUTH_TX :
                              WLANTEST_STA_COUNTER_INVALID_DEAUTH_TX]++;
 
@@ -529,10 +533,16 @@ static void rx_mgmt_disassoc(struct wlantest *wt, const u8 *data, size_t len,
                return;
        }
 
-       if (os_memcmp(mgmt->sa, mgmt->bssid, ETH_ALEN) == 0)
+       if (os_memcmp(mgmt->sa, mgmt->bssid, ETH_ALEN) == 0) {
                sta->counters[valid ? WLANTEST_STA_COUNTER_VALID_DISASSOC_RX :
                              WLANTEST_STA_COUNTER_INVALID_DISASSOC_RX]++;
-       else
+               if (sta->pwrmgt && !sta->pspoll)
+                       sta->counters[
+                               WLANTEST_STA_COUNTER_DISASSOC_RX_ASLEEP]++;
+               else
+                       sta->counters[
+                               WLANTEST_STA_COUNTER_DISASSOC_RX_AWAKE]++;
+       } else
                sta->counters[valid ? WLANTEST_STA_COUNTER_VALID_DISASSOC_TX :
                              WLANTEST_STA_COUNTER_INVALID_DISASSOC_TX]++;
 
index a2bb6b920227f5a982b736926da0f850ae1bd8b4..da2552470a57d141a18de1dc91f1e67a0c22d3ed 100644 (file)
@@ -547,6 +547,10 @@ static const struct sta_counters sta_counters[] = {
          WLANTEST_STA_COUNTER_INVALID_DEAUTH_RX_ACK },
        { "invalid_disassoc_rx_ack",
          WLANTEST_STA_COUNTER_INVALID_DISASSOC_RX_ACK },
+       { "deauth_rx_asleep", WLANTEST_STA_COUNTER_DEAUTH_RX_ASLEEP },
+       { "deauth_rx_awake", WLANTEST_STA_COUNTER_DEAUTH_RX_AWAKE },
+       { "disassoc_rx_asleep", WLANTEST_STA_COUNTER_DISASSOC_RX_ASLEEP },
+       { "disassoc_rx_awake", WLANTEST_STA_COUNTER_DISASSOC_RX_AWAKE },
        { NULL, 0 }
 };
 
index 0dbf8c5e8ca0f4c5e9e3e6cb6f2b51fbc5107255..fa6b7660ad47201b3e86468233fddbe731c81a86 100644 (file)
@@ -101,6 +101,10 @@ enum wlantest_sta_counter {
        WLANTEST_STA_COUNTER_VALID_DISASSOC_RX_ACK,
        WLANTEST_STA_COUNTER_INVALID_DEAUTH_RX_ACK,
        WLANTEST_STA_COUNTER_INVALID_DISASSOC_RX_ACK,
+       WLANTEST_STA_COUNTER_DEAUTH_RX_ASLEEP,
+       WLANTEST_STA_COUNTER_DEAUTH_RX_AWAKE,
+       WLANTEST_STA_COUNTER_DISASSOC_RX_ASLEEP,
+       WLANTEST_STA_COUNTER_DISASSOC_RX_AWAKE,
        NUM_WLANTEST_STA_COUNTER
 };