Import iwi-specific tools. Can help debug firmware or connection issues.

This commit is contained in:
damien 2005-10-07 18:27:21 +00:00
parent 0c7db07fc7
commit 83f4245cc4
3 changed files with 136 additions and 0 deletions

View File

@ -29,6 +29,8 @@ hcomp Compress header files by removing comments and whitespace.
html-mv Rename HTML generated filenames to human readable filenames.
ifinfo Uses the interface MIB to print out all the information
an interface exports in an ugly form.
iwi Tools specific to the Intel PRO/Wireless 2200BG/2225BG/2915ABG
support.
kdrv KernelDriver; add/list/remove third-party kernel driver
source to/in/from a kernel source tree.
kernelcruft Shellscript to find orphaned *.c files in /sys

6
tools/tools/iwi/Makefile Normal file
View File

@ -0,0 +1,6 @@
# $FreeBSD$
PROG = iwistats
NO_MAN = noman
.include <bsd.prog.mk>

128
tools/tools/iwi/iwistats.c Normal file
View File

@ -0,0 +1,128 @@
/* $FreeBSD$ */
/*-
* Copyright (c) 2005
* Damien Bergamini <damien.bergamini@free.fr>. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice unmodified, this list of conditions, and the following
* disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/sysctl.h>
#include <err.h>
#include <stdio.h>
#include <sysexits.h>
static void get_statistics(const char *);
int
main(int argc, char **argv)
{
get_statistics((argc > 1) ? argv[1] : "iwi0");
return EX_OK;
}
static const struct statistic {
int index;
const char *desc;
} tbl[] = {
{ 1, "Current transmission rate" },
{ 2, "Fragmentation threshold" },
{ 3, "RTS threshold" },
{ 4, "Number of frames submitted for transfer" },
{ 5, "Number of frames transmitted" },
{ 6, "Number of unicast frames transmitted" },
{ 7, "Number of unicast 802.11b frames transmitted at 1Mb/s" },
{ 8, "Number of unicast 802.11b frames transmitted at 2Mb/s" },
{ 9, "Number of unicast 802.11b frames transmitted at 5.5Mb/s" },
{ 10, "Number of unicast 802.11b frames transmitted at 11Mb/s" },
{ 19, "Number of unicast 802.11g frames transmitted at 1Mb/s" },
{ 20, "Number of unicast 802.11g frames transmitted at 2Mb/s" },
{ 21, "Number of unicast 802.11g frames transmitted at 5.5Mb/s" },
{ 22, "Number of unicast 802.11g frames transmitted at 6Mb/s" },
{ 23, "Number of unicast 802.11g frames transmitted at 9Mb/s" },
{ 24, "Number of unicast 802.11g frames transmitted at 11Mb/s" },
{ 25, "Number of unicast 802.11g frames transmitted at 12Mb/s" },
{ 26, "Number of unicast 802.11g frames transmitted at 18Mb/s" },
{ 27, "Number of unicast 802.11g frames transmitted at 24Mb/s" },
{ 28, "Number of unicast 802.11g frames transmitted at 36Mb/s" },
{ 29, "Number of unicast 802.11g frames transmitted at 48Mb/s" },
{ 30, "Number of unicast 802.11g frames transmitted at 54Mb/s" },
{ 31, "Number of multicast frames transmitted" },
{ 32, "Number of multicast 802.11b frames transmitted at 1Mb/s" },
{ 33, "Number of multicast 802.11b frames transmitted at 2Mb/s" },
{ 34, "Number of multicast 802.11b frames transmitted at 5.5Mb/s" },
{ 35, "Number of multicast 802.11b frames transmitted at 11Mb/s" },
{ 44, "Number of multicast 802.11g frames transmitted at 1Mb/s" },
{ 45, "Number of multicast 802.11g frames transmitted at 2Mb/s" },
{ 46, "Number of multicast 802.11g frames transmitted at 5.5Mb/s" },
{ 47, "Number of multicast 802.11g frames transmitted at 6Mb/s" },
{ 48, "Number of multicast 802.11g frames transmitted at 9Mb/s" },
{ 49, "Number of multicast 802.11g frames transmitted at 11Mb/s" },
{ 50, "Number of multicast 802.11g frames transmitted at 12Mb/s" },
{ 51, "Number of multicast 802.11g frames transmitted at 18Mb/s" },
{ 52, "Number of multicast 802.11g frames transmitted at 24Mb/s" },
{ 53, "Number of multicast 802.11g frames transmitted at 36Mb/s" },
{ 54, "Number of multicast 802.11g frames transmitted at 48Mb/s" },
{ 55, "Number of multicast 802.11g frames transmitted at 54Mb/s" },
{ 56, "Number of transmission retries" },
{ 57, "Number of transmission failures" },
{ 58, "Number of CRC errors" },
{ 61, "Number of full scans" },
{ 62, "Number of partial scans" },
{ 64, "Number of bytes transmitted" },
{ 65, "Current RSSI" },
{ 66, "Number of beacons received" },
{ 67, "Number of beacons missed" },
{ -1, NULL }
};
static void
get_statistics(const char *iface)
{
static uint32_t stats[256];
const struct statistic *stat;
char oid[32];
int ifaceno, len;
if (sscanf(iface, "iwi%u", &ifaceno) != 1)
errx(EX_DATAERR, "Invalid interface name '%s'", iface);
len = sizeof stats;
(void)snprintf(oid, sizeof oid, "dev.iwi.%u.stats", ifaceno);
if (sysctlbyname(oid, stats, &len, NULL, 0) == -1)
err(EX_OSERR, "Can't retrieve statistics");
for (stat = tbl; stat->index != -1; stat++)
(void)printf("%-60s[%lu]\n", stat->desc, stats[stat->index]);
}