summaryrefslogtreecommitdiffstats
path: root/tools/tools
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2007-06-11 04:05:49 +0000
committersam <sam@FreeBSD.org>2007-06-11 04:05:49 +0000
commitf467c70443a536d2ed3b77f11cb72461c2e77687 (patch)
tree2d6dc351cdc0b3f69e3a46749cb2063189c5f162 /tools/tools
parentffbf3d640750f000dff681ec93b067c0c579091a (diff)
downloadFreeBSD-src-f467c70443a536d2ed3b77f11cb72461c2e77687.zip
FreeBSD-src-f467c70443a536d2ed3b77f11cb72461c2e77687.tar.gz
add 11n stats
Diffstat (limited to 'tools/tools')
-rw-r--r--tools/tools/net80211/wlanstats/wlanstats.c77
1 files changed, 60 insertions, 17 deletions
diff --git a/tools/tools/net80211/wlanstats/wlanstats.c b/tools/tools/net80211/wlanstats/wlanstats.c
index 3f5f372..2c8f698 100644
--- a/tools/tools/net80211/wlanstats/wlanstats.c
+++ b/tools/tools/net80211/wlanstats/wlanstats.c
@@ -50,6 +50,7 @@
#include <net/ethernet.h>
#include <stdio.h>
+#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
@@ -91,7 +92,7 @@ static const struct fmt wlanstats[] = {
#define S_RX_MGTDISCARD 11
{ 5, "rx_mgtdiscard", "mgtdiscard", "rx discard mgt frames" },
#define S_RX_CTL 12
- { 5, "rx_ctl", "ctl", "rx discard ctrl frames" },
+ { 5, "rx_ctl", "ctl", "rx ctrl frames" },
#define S_RX_BEACON 13
{ 5, "rx_beacon", "beacon", "rx beacon frames" },
#define S_RX_RSTOOBIG 14
@@ -256,29 +257,49 @@ static const struct fmt wlanstats[] = {
{ 5, "rx_demicfail", "rx_demicfail", "rx demic failed" },
#define S_RX_DEFRAG 91
{ 5, "rx_defrag", "rx_defrag", "rx defragmentation failed" },
-#define S_INPUT 92
+#define S_RX_ACTION 92
+ { 5, "rx_action", "rx_action", "rx action frames" },
+#define S_AMSDU_TOOSHORT 93
+ { 8, "amsdu_tooshort", "amsdu_tooshort","A-MSDU rx decap error" },
+#define S_AMSDU_SPLIT 94
+ { 8, "amsdu_split", "amsdu_split", "A-MSDU rx failed on frame split" },
+#define S_AMSDU_DECAP 95
+ { 8, "amsdu_decap", "amsdu_decap", "A-MSDU frames received" },
+#define S_AMSDU_ENCAP 96
+ { 8, "amsdu_encap", "amsdu_encap", "A-MSDU frames transmitted" },
+#define S_AMPDU_FLUSH 97
+ { 8, "ampdu_flush", "ampdu_flush", "A-MPDU frames flushed" },
+#define S_AMPDU_BARBAD 98
+ { 8, "ampdu_barbad", "ampdu_barbad", "A-MPDU BAR rx before ADDBA exchange" },
+#define S_AMPDU_BAROOW 99
+ { 8, "ampdu_baroow", "ampdu_baroow", "A-MPDU BAR rx out of BA window" },
+#define S_AMPDU_BAR 100
+ { 8, "ampdu_bar", "ampdu_bar", "A-MPDU BAR rx successful" },
+#define S_AMPDU_OOR 101
+ { 8, "ampdu_oor", "ampdu_oor", "A-MPDU frames received out-of-order" },
+#define S_AMPDU_COPY 102
+ { 8, "ampdu_copy", "ampdu_copy", "A-MPDU rx window slots copied" },
+#define S_INPUT 103
{ 8, "input", "input", "data frames received" },
-#define S_OUTPUT 93
+#define S_OUTPUT 104
{ 8, "output", "output", "data frames transmit" },
-#define S_RATE 94
+#define S_RATE 105
{ 4, "rate", "rate", "current transmit rate" },
-#define S_RSSI 95
+#define S_RSSI 106
{ 4, "rssi", "rssi", "current rssi" },
-#define S_NOISE 96
+#define S_NOISE 107
{ 4, "noise", "noise", "current noise floor (dBm)" },
-#define S_RX_UCAST 97
+#define S_RX_UCAST 108
{ 8, "rx_ucast", "rx_ucast", "unicast data frames received" },
-#define S_RX_MCAST 98
+#define S_RX_MCAST 109
{ 8, "rx_mcast", "rx_mcast", "multicast data frames received" },
-#define S_TX_UCAST 99
+#define S_TX_UCAST 110
{ 8, "tx_ucast", "tx_ucast", "unicast data frames sent" },
-#define S_TX_MCAST 100
+#define S_TX_MCAST 111
{ 8, "tx_mcast", "tx_mcast", "multicast data frames sent" },
-#define S_SIGNAL 101
+#define S_SIGNAL 112
{ 4, "signal", "sig", "current signal (dBm)" },
};
-#define S_LAST S_RX_DEFRAG
-#define S_MAX S_LAST+1
struct wlanstatfoo_p {
struct wlanstatfoo base;
@@ -376,7 +397,7 @@ wlan_setstamac(struct wlanstatfoo *wf0, const uint8_t *mac)
wf->ireq.i_data = wf->mac;
wf->ireq.i_len = IEEE80211_ADDR_LEN;
if (ioctl(wf->s, SIOCG80211, &wf->ireq) <0)
- err(1, wf->ireq.i_name);
+ err(1, "%s (IEEE80211_IOC_BSSID)", wf->ireq.i_name);
break;
}
} else
@@ -394,18 +415,18 @@ wlan_collect(struct wlanstatfoo_p *wf,
wf->ireq.i_data = (caddr_t) &wf->u_info;
wf->ireq.i_len = sizeof(wf->u_info);
if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0)
- err(1, wf->ireq.i_name);
+ err(1, "%s (IEEE80211_IOC_STA_INFO)", wf->ireq.i_name);
IEEE80211_ADDR_COPY(nstats->is_u.macaddr, wf->mac);
wf->ireq.i_type = IEEE80211_IOC_STA_STATS;
wf->ireq.i_data = (caddr_t) nstats;
wf->ireq.i_len = sizeof(*nstats);
if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0)
- err(1, wf->ireq.i_name);
+ err(1, "%s (IEEE80211_IOC_STA_STATS)", wf->ireq.i_name);
wf->ifr.ifr_data = (caddr_t) stats;
if (ioctl(wf->s, SIOCG80211STATS, &wf->ifr) < 0)
- err(1, wf->ifr.ifr_name);
+ err(1, "%s (SIOCG80211STATS)", wf->ifr.ifr_name);
}
static void
@@ -561,6 +582,17 @@ wlan_get_curstat(struct statfoo *sf, int s, char b[], size_t bs)
case S_RX_MGMT: STAT(rx_mgmt);
case S_RX_DEMICFAIL: STAT(rx_demicfail);
case S_RX_DEFRAG: STAT(rx_defrag);
+ case S_RX_ACTION: STAT(rx_action);
+ case S_AMSDU_TOOSHORT: STAT(amsdu_tooshort);
+ case S_AMSDU_SPLIT: STAT(amsdu_split);
+ case S_AMSDU_DECAP: STAT(amsdu_decap);
+ case S_AMSDU_ENCAP: STAT(amsdu_encap);
+ case S_AMPDU_FLUSH: STAT(ampdu_rx_flush);
+ case S_AMPDU_BARBAD: STAT(ampdu_bar_bad);
+ case S_AMPDU_BAROOW: STAT(ampdu_bar_oow);
+ case S_AMPDU_BAR: STAT(ampdu_bar_rx);
+ case S_AMPDU_OOR: STAT(ampdu_rx_oor);
+ case S_AMPDU_COPY: STAT(ampdu_rx_copy);
case S_INPUT: NSTAT(rx_data);
case S_OUTPUT: NSTAT(tx_data);
case S_RX_UCAST: NSTAT(rx_ucast);
@@ -674,6 +706,17 @@ wlan_get_totstat(struct statfoo *sf, int s, char b[], size_t bs)
case S_RX_MGMT: STAT(rx_mgmt);
case S_RX_DEMICFAIL: STAT(rx_demicfail);
case S_RX_DEFRAG: STAT(rx_defrag);
+ case S_RX_ACTION: STAT(rx_action);
+ case S_AMSDU_TOOSHORT: STAT(amsdu_tooshort);
+ case S_AMSDU_SPLIT: STAT(amsdu_split);
+ case S_AMSDU_DECAP: STAT(amsdu_decap);
+ case S_AMSDU_ENCAP: STAT(amsdu_encap);
+ case S_AMPDU_FLUSH: STAT(ampdu_rx_flush);
+ case S_AMPDU_BARBAD: STAT(ampdu_bar_bad);
+ case S_AMPDU_BAROOW: STAT(ampdu_bar_oow);
+ case S_AMPDU_BAR: STAT(ampdu_bar_rx);
+ case S_AMPDU_OOR: STAT(ampdu_rx_oor);
+ case S_AMPDU_COPY: STAT(ampdu_rx_copy);
case S_INPUT: NSTAT(rx_data);
case S_OUTPUT: NSTAT(tx_data);
case S_RX_UCAST: NSTAT(rx_ucast);
OpenPOWER on IntegriCloud