From owner-svn-src-head@FreeBSD.ORG Fri Jul 20 06:11:27 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9EE781065673; Fri, 20 Jul 2012 06:11:27 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6C8DF8FC08; Fri, 20 Jul 2012 06:11:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6K6BRb9063370; Fri, 20 Jul 2012 06:11:27 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6K6BRFk063368; Fri, 20 Jul 2012 06:11:27 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201207200611.q6K6BRFk063368@svn.freebsd.org> From: Adrian Chadd Date: Fri, 20 Jul 2012 06:11:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238646 - head/tools/tools/ath/athratestats X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jul 2012 06:11:27 -0000 Author: adrian Date: Fri Jul 20 06:11:26 2012 New Revision: 238646 URL: http://svn.freebsd.org/changeset/base/238646 Log: Tidy things up substantially: * remove some debugging; * introduce command line arguments; * introduce support for non-ath0 interfaces. Modified: head/tools/tools/ath/athratestats/main.c Modified: head/tools/tools/ath/athratestats/main.c ============================================================================== --- head/tools/tools/ath/athratestats/main.c Fri Jul 20 05:47:12 2012 (r238645) +++ head/tools/tools/ath/athratestats/main.c Fri Jul 20 06:11:26 2012 (r238646) @@ -57,6 +57,12 @@ #include "ath_rate/sample/sample.h" +/* + * This needs to be big enough to fit the two TLVs, the rate table + * and the rate statistics table for a single node. + */ +#define STATS_BUF_SIZE 8192 + struct ath_ratestats { int s; struct ath_rateioctl re; @@ -159,20 +165,13 @@ ath_setsta(struct ath_ratestats *r, cons static void ath_rate_ioctl(struct ath_ratestats *r) { - printf("ether: %x:%x:%x:%x:%x:%x\n", - r->re.is_u.macaddr[0], - r->re.is_u.macaddr[1], - r->re.is_u.macaddr[2], - r->re.is_u.macaddr[3], - r->re.is_u.macaddr[4], - r->re.is_u.macaddr[5]); + if (ioctl(r->s, SIOCGATHNODERATESTATS, &r->re) < 0) err(1, "ioctl"); } -#define STATS_BUF_SIZE 8192 int -main(int argc, const char *argv[]) +main(int argc, char *argv[]) { struct ath_ratestats r; struct ether_addr *e; @@ -180,6 +179,33 @@ main(int argc, const char *argv[]) struct ath_rateioctl_tlv *av; struct sample_node *sn = NULL; struct ath_rateioctl_rt *rt = NULL; + char const *ifname = NULL, *macaddr = NULL; + int c; + int do_all = 0; + + ifname = getenv("ATH"); + if (ifname == NULL) + ifname = "ath0"; + + while ((c = getopt(argc, argv, "ahi:m:")) != -1) { + switch (c) { + case 'a': + do_all = 1; + break; + case 'i': + ifname = optarg; + break; + case 'm': + macaddr = optarg; + break; + + default: + errx(1, + "usage: %s [-h] [-i ifname] [-a] [-m macaddr]\n", + argv[0]); + /* NOTREACHED */ + } + } buf = calloc(1, STATS_BUF_SIZE); if (buf == NULL) @@ -191,11 +217,17 @@ main(int argc, const char *argv[]) err(1, "socket"); } /* XXX error check */ - ath_setifname(&r, "ath0"); + ath_setifname(&r, ifname); - e = ether_aton(argv[1]); + if (macaddr == NULL) { + errx(1, "%s: macaddress wasn't supplied and no -a given\n", + argv[0]); + /* NOTREACHED */ + } + e = ether_aton(macaddr); + if (e == NULL) + err(1, "ether_aton"); - /* caddr_t ? */ r.re.buf = buf; r.re.len = STATS_BUF_SIZE;