#! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'lestats/Makefile' <<'END_OF_FILE' X# X# lestats - an AMD 7990 LANCE driver statistics reporting module X# X#ident "@(#)lestats:$Id: Makefile,v 1.1 1995/09/11 22:35:18 woods Exp $" X XOPTIM = -O XSDB =# -g X XINSDIR = /local/sbin X XCC = cc XCFLAGS = $(OPTIM) XCPPFLAGS = -DSUN4 XLDFLAGS = $(SDB) XLOADLIBES = -lkvm X Xlestats: $$@.o X $(CC) $(LDFLAGS) -o $@ $? $(LOADLIBES) X Xinstall: lestats X install -o root -g kmem -m 2555 lestats $(INSDIR) END_OF_FILE if test 394 -ne `wc -c <'lestats/Makefile'`; then echo shar: \"'lestats/Makefile'\" unpacked with wrong size! fi # end of 'lestats/Makefile' fi if test -f 'lestats/lestats.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lestats/lestats.c'\" else echo shar: Extracting \"'lestats/lestats.c'\" \(4398 characters\) sed "s/^X//" >'lestats/lestats.c' <<'END_OF_FILE' X/* X * Program to print le Ethernet interface statistics. X * Bruce Orchard, February 12, 1992 X * Modified by Rob Montjoy May 9, 1993 X * X */ X#ident "@(#)lestats:$Id$" X X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X X#define N_IFNET 0 X X#define HAVE_ES_EXTRABYTE 1 X#define HAVE_ES_MEMERR 1 X#define HAVE_ES_TBUFF 1 X#define HAVE_ES_NO_TBUFS 1 X X#if defined(SUN4) || defined(SUN3) X# undef HAVE_ES_MEMERR X# undef HAVE_ES_NO_TBUFS X#endif X Xstatic struct nlist nl[] = { X { "_ifnet"}, X {NULL } X}; X Xint Xmain(argc, argv) X int argc; X char *argv[]; X{ X int status; X char *ifnet_addr, gname[12]; X double collision_rate; X kvm_t *kvm; X struct le_softc le; X X if (!(kvm = kvm_open(0, 0, 0, O_RDONLY, argv[0]))) X exit(1); X if ((status = kvm_nlist(kvm, nl))) { X fprintf(stderr, "%s: kvm_nlist returned %d\n", argv[0], status); X exit(1); X } X for (kvm_read(kvm, nl[N_IFNET].n_value, &ifnet_addr, sizeof(ifnet_addr)); X ifnet_addr; X ifnet_addr = (char *) le.es_if.if_next) { X if (kvm_read(kvm, ifnet_addr, &le, sizeof(le)) < 0) { X perror("kvm_read(&le) failed"); X exit(1); X } X if (kvm_read(kvm, le.es_if.if_name, gname, sizeof(gname)) < 0) { X perror("kvm_read(&le.es_if) failed"); X exit(1); X } X if (strcmp(gname, "le") != 0) X continue; X printf("Ethernet Device:\t%s%d\n", gname, le.es_if.if_unit); X printf("Ethernet Address:\t%02x:%02x:%02x:%02x:%02x:%02x\n", X le.es_ac.ac_enaddr.ether_addr_octet[0], X le.es_ac.ac_enaddr.ether_addr_octet[1], X le.es_ac.ac_enaddr.ether_addr_octet[2], X le.es_ac.ac_enaddr.ether_addr_octet[3], X le.es_ac.ac_enaddr.ether_addr_octet[4], X le.es_ac.ac_enaddr.ether_addr_octet[5]); X printf("Mtu:\t\t\t%d\n", le.es_if.if_mtu); X printf("\n Performance Statistics:\n"); X#ifdef HAVE_ES_EXTRABYTE X printf("\tRev C,D LANCE extra byte probs: %8d\n", le.es_extrabyte); X#endif X printf("\tInitializations: %8d\n", le.es_dogreset); X printf("\tledog() Chip Resets: %8d\n", le.es_dogreset); X#ifdef HAVE_ES_MEMERR X printf("\tMemory Errors: %8d\n", le.es_memerr); X#endif X printf("\tInput Copy Operations: %8d\n", le.es_incpy); X printf("\tOutput Copy Operations: %8d\n", le.es_outcpy); X printf("\tMissed Packets: %8d\n", le.es_missed); X printf("\tNonexistent heartbeats: %8d\n", le.es_noheartbeat); X printf("\tLost Transmit Sync: %8d\n", le.es_tsync); X#ifdef HAVE_ES_TBUFF X printf("\tBUFF bit in tmd occurrences: %8d\n", le.es_tBUFF); X#endif X#ifdef HAVE_ES_NO_TBUFS X printf("\tNo Transmit Buffers Available: %8d\n", le.es_no_tbufs); X#endif X collision_rate = (double) le.es_if.if_collisions / (double) le.es_if.if_opackets; X X printf("\n Recieve Statistics:\n"); X printf("\tTotal Packets: %8d\n", le.es_if.if_ipackets); X X printf("\n\tErrors:\n"); X printf("\t Frame:\t\t%4d\t", le.es_crc); X printf("CRC:\t\t%4d\n", le.es_fram); X printf("\t Overruns:\t\t%4d\n", le.es_oflo); X X printf("\t Total:\t\t%4d\t", le.es_if.if_ierrors); X printf("Error Rate:\t%9.4f %%\n", X 100.0 * (double) le.es_if.if_ierrors / (double) le.es_if.if_ipackets); X X printf("\n Transmit Statistics:\n"); X printf("\tTotal Packets: %8d\n", le.es_if.if_opackets); X printf("\tCollisions: %8d\n", le.es_if.if_collisions); X printf("\tCollision Rate: %13.4f %%\n", 100.0 * collision_rate); X printf("\tRetries: %8d\n", le.es_retries); X printf("\tDeferred: %8d\n", le.es_defer); X printf("\tDefered Rate: %13.4f %%\n", X 100.0 * ((float)le.es_defer / (float) le.es_if.if_opackets)); X printf("\tPackets Dropped: %8d\n", le.es_no_tmds); X X printf("\n\tErrors:\n"); X printf("\t Late Collisions:\t%4d\t", le.es_tlcol); X printf("No Carrier:\t%4d\n", le.es_tnocar); X printf("\t Retry Errors:\t%4d\t", le.es_trtry); X printf("Underruns:\t%4d\n", le.es_uflo); X X printf("\t Total:\t\t%4d\t", le.es_if.if_oerrors); X printf("Error Rate:\t%9.4f %%\n", X 100.0 * (double)le.es_if.if_oerrors / (double)le.es_if.if_opackets); X } X X exit(0); X /* NOTREACHED */ X} END_OF_FILE if test 4398 -ne `wc -c <'lestats/lestats.c'`; then echo shar: \"'lestats/lestats.c'\" unpacked with wrong size! fi # end of 'lestats/lestats.c' fi if test ! -d 'iestats' ; then echo shar: Creating directory \"'iestats'\" mkdir 'iestats' fi if test -f 'iestats/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'iestats/Makefile'\" else echo shar: Extracting \"'iestats/Makefile'\" \(394 characters\) sed "s/^X//" >'iestats/Makefile' <<'END_OF_FILE' X# X# iestats - an Intel 82586 Ethernet driver statistics reporting module X# X#ident "@(#)iestats:$Id: Makefile,v 1.2 1995/09/11 22:30:49 woods Exp $" X XOPTIM = -O XSDB =# -g X XINSDIR = /local/sbin X XCC = cc XCFLAGS = $(OPTIM) XCPPFLAGS = XLDFLAGS = $(SDB) XLOADLIBES = -lkvm X Xiestats: $$@.o X $(CC) $(LDFLAGS) -o $@ $? $(LOADLIBES) X Xinstall: iestats X install -o root -g kmem -m 2555 iestats $(INSDIR) END_OF_FILE if test 394 -ne `wc -c <'iestats/Makefile'`; then echo shar: \"'iestats/Makefile'\" unpacked with wrong size! fi # end of 'iestats/Makefile' fi if test -f 'iestats/iestats.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'iestats/iestats.c'\" else echo shar: Extracting \"'iestats/iestats.c'\" \(4163 characters\) sed "s/^X//" >'iestats/iestats.c' <<'END_OF_FILE' X/* X * iestats - print SunOS ie (Intel 82586) Ethernet interface statistics. X * X * Derrived from lestats.c by Bruce Orchard, February 12, 1992 X */ X#ident "@(#)iestats:$Id: iestats.c,v 1.3 1996/01/12 15:00:57 woods Exp $" X X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X X#define N_IFNET 0 X Xstatic struct nlist nl[] = { X { "_ifnet"}, X {NULL } X}; X Xint Xmain(argc, argv) X int argc; X char *argv[]; X{ X int status; X char *ifnet_addr, gname[12]; X double collision_rate; X kvm_t *kvm; X struct ie_softc ie; X X if (argc != 1) { X fprintf(stderr, "Usage: %s\n", argv[0]); X exit(2); X } X if (!(kvm = kvm_open(0, 0, 0, O_RDONLY, argv[0]))) X exit(1); X if ((status = kvm_nlist(kvm, nl))) { X fprintf(stderr, "%s: kvm_nlist returned %d\n", argv[0], status); X exit(1); X } X for (kvm_read(kvm, nl[N_IFNET].n_value, &ifnet_addr, sizeof(ifnet_addr)); X ifnet_addr; X ifnet_addr = (char *) ie.es_if.if_next) { X if (kvm_read(kvm, ifnet_addr, &ie, sizeof(ie)) < 0) { X perror("kvm_read(&ie) failed"); X exit(1); X } X if (kvm_read(kvm, ie.es_if.if_name, gname, sizeof(gname)) < 0) { X perror("kvm_read(&ie.es_if) failed"); X exit(1); X } X if (strcmp(gname, "ie") != 0) X continue; X printf("Ethernet Device:\t%s%d\n", gname, ie.es_if.if_unit); X printf("Ethernet Address:\t%02x:%02x:%02x:%02x:%02x:%02x\n", X ie.es_ac.ac_enaddr.ether_addr_octet[0], X ie.es_ac.ac_enaddr.ether_addr_octet[1], X ie.es_ac.ac_enaddr.ether_addr_octet[2], X ie.es_ac.ac_enaddr.ether_addr_octet[3], X ie.es_ac.ac_enaddr.ether_addr_octet[4], X ie.es_ac.ac_enaddr.ether_addr_octet[5]); X printf("Mtu:\t\t\t%d\n", ie.es_if.if_mtu); X X printf("\n Errors and Performance Statistics:\n"); X printf("\tInitializations [iedog()]: %8d\n", X ie.es_dogreset); X printf("\tRU Not Ready Occurrences: %8d\n", X ie.es_runotready); X printf("\tHeartbeat counter: %8d\n", X ie.es_ieheart); X printf("\tDeferred transmissions: %8d\n", X ie.es_iedefer); X printf("\tiestartout() with >0 queue len: %8d\n", X ie.es_started); X printf("\tiestartout() with >1 queue len: %8d\n", X ie.es_started2); X printf("\tOutput Copy Operations: %8d\n", X ie.es_outcpy); X printf("\tResource exhaustion (out tbds): %8d\n", X ie.es_notbds); X printf("\tPotential receive buf loanouts: %8d\n", X ie.es_prloans); X printf("\tActual receive buf loanouts: %8d\n", X ie.es_arloans); X printf("\tRequeues after failed transmit: %8d\n", X ie.es_requeues); X printf("\tSpurious Interrupts: %8d\n", X ie.es_spurious); X X collision_rate = (double) ie.es_if.if_collisions / (double) ie.es_if.if_opackets; X X printf("\n Recieve Statistics:\n"); X printf("\tTotal Packets: %8d\n", ie.es_if.if_ipackets); X printf("\tRecieve Errors: %8d\n", ie.es_if.if_ierrors); X printf("\tError Rate: %13.4f %%\n", X 100.0 * (double) ie.es_if.if_ierrors / (double) ie.es_if.if_ipackets); X printf("\t CRC Errors: %4d\n", ie.es_ierr.crc); X printf("\t ALN Errors: %4d\n", ie.es_ierr.aln); X printf("\t RSC Errors: %4d\n", ie.es_ierr.rsc); X printf("\t OVR Errors: %4d\n", ie.es_ierr.ovr); X X printf("\n Transmit Statistics:\n"); X printf("\tTotal Packets: %8d\n", ie.es_if.if_opackets); X printf("\tCollisions: %8d\n", ie.es_if.if_collisions); X printf("\tCollision Rate: %13.4f %%\n", 100.0 * collision_rate); X printf("\tTransmission Errors: %8d\n", ie.es_if.if_oerrors); X printf("\tError Rate: %13.4f %%\n", X 100.0 * (double) ie.es_if.if_oerrors / (double) ie.es_if.if_opackets); X printf("\t DMA underruns: %4d\n", ie.es_xmiturun); X printf("\t Network jams: %4d\n", ie.es_trtry); X printf("\t No Carrier: %4d\n", ie.es_tnocar); X printf("\t No CTS: %4d\n", ie.es_noCTS); X } X X exit(0); X /* NOTREACHED */ X} END_OF_FILE if test 4163 -ne `wc -c <'iestats/iestats.c'`; then echo shar: \"'iestats/iestats.c'\" unpacked with wrong size! fi # end of 'iestats/iestats.c' fi echo shar: End of shell archive. exit 0 .