diff options
author | Sam Leffler <sam@FreeBSD.org> | 2009-02-13 05:45:23 +0000 |
---|---|---|
committer | Sam Leffler <sam@FreeBSD.org> | 2009-02-13 05:45:23 +0000 |
commit | dd8d00f53c4a2b4bda26988addc2a927111ed9ee (patch) | |
tree | 02b3dcfa9290e1fe80bce61cda3ef5298540dff4 | |
parent | 41e449db4ac3230000ed6bdd08ef66a01096da94 (diff) | |
download | src-dd8d00f53c4a2b4bda26988addc2a927111ed9ee.tar.gz src-dd8d00f53c4a2b4bda26988addc2a927111ed9ee.zip |
add -z option to zero driver statistics (but note we don't yet zero
stats obtained from the hal)
Notes
Notes:
svn path=/head/; revision=188560
-rw-r--r-- | tools/tools/ath/athstats/athstats.c | 10 | ||||
-rw-r--r-- | tools/tools/ath/athstats/athstats.h | 2 | ||||
-rw-r--r-- | tools/tools/ath/athstats/main.c | 9 |
3 files changed, 18 insertions, 3 deletions
diff --git a/tools/tools/ath/athstats/athstats.c b/tools/tools/ath/athstats/athstats.c index 0bb05a4c9638..be729c149ea0 100644 --- a/tools/tools/ath/athstats/athstats.c +++ b/tools/tools/ath/athstats/athstats.c @@ -436,6 +436,15 @@ ath_setifname(struct athstatfoo *wf0, const char *ifname) #endif } +static void +ath_zerostats(struct athstatfoo *wf0) +{ + struct athstatfoo_p *wf = (struct athstatfoo_p *) wf0; + + if (ioctl(wf->s, SIOCZATHSTATS, &wf->ifr) < 0) + err(-1, wf->ifr.ifr_name); +} + static void ath_collect(struct athstatfoo_p *wf, struct _athstats *stats) { @@ -997,6 +1006,7 @@ athstats_new(const char *ifname, const char *fmtstring) #if 0 wf->base.setstamac = wlan_setstamac; #endif + wf->base.zerostats = ath_zerostats; wf->s = socket(AF_INET, SOCK_DGRAM, 0); if (wf->s < 0) err(1, "socket"); diff --git a/tools/tools/ath/athstats/athstats.h b/tools/tools/ath/athstats/athstats.h index 4ebfa7407b65..cfd44ca7fb1b 100644 --- a/tools/tools/ath/athstats/athstats.h +++ b/tools/tools/ath/athstats/athstats.h @@ -46,6 +46,8 @@ struct athstatfoo { void (*setifname)(struct athstatfoo *, const char *ifname); /* set the mac address of the associated station/ap */ void (*setstamac)(struct athstatfoo *, const uint8_t mac[]); + /* zero in-kernel statistics */ + void (*zerostats)(struct athstatfoo *); }; struct athstatfoo *athstats_new(const char *ifname, const char *fmtstring); diff --git a/tools/tools/ath/athstats/main.c b/tools/tools/ath/athstats/main.c index 518b1499278f..acb846737fa9 100644 --- a/tools/tools/ath/athstats/main.c +++ b/tools/tools/ath/athstats/main.c @@ -33,7 +33,7 @@ * Simple Atheros-specific tool to inspect and monitor network traffic * statistics. * - * athstats [-i interface] [-l] [-o fmtstring] [interval] + * athstats [-i interface] [-z] [-l] [-o fmtstring] [interval] * * (default interface is ath0). If interval is specified a rolling output * a la netstat -i is displayed every interval seconds. The format of @@ -95,7 +95,7 @@ main(int argc, char *argv[]) if (ifname == NULL) ifname = "ath0"; wf = athstats_new(ifname, getfmt("default")); - while ((c = getopt(argc, argv, "i:lo:")) != -1) { + while ((c = getopt(argc, argv, "i:lo:z")) != -1) { switch (c) { case 'i': wf->setifname(wf, optarg); @@ -106,8 +106,11 @@ main(int argc, char *argv[]) case 'o': wf->setfmt(wf, getfmt(optarg)); break; + case 'z': + wf->zerostats(wf); + break; default: - errx(-1, "usage: %s [-a] [-i ifname] [-l] [-o fmt] [interval]\n", argv[0]); + errx(-1, "usage: %s [-a] [-i ifname] [-l] [-o fmt] [-z] [interval]\n", argv[0]); /*NOTREACHED*/ } } |