Annotation of cci/usr/src/etc/nstat/enpstat.c, revision 1.1

1.1     ! root        1: 
        !             2: /*     if_enp: ACC VERSAbus Ethernet controler (v/eiu)         */
        !             3: /*                                                             */
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include <sys/types.h>
        !             7: #include <sys/socket.h>
        !             8: #include <sys/errno.h>
        !             9: 
        !            10: #include <net/if.h>
        !            11: #include <net/netisr.h>
        !            12: #include <net/route.h>
        !            13: #include <netinet/in.h>
        !            14: #include <netinet/ip_var.h>
        !            15: #include <netinet/if_ether.h>
        !            16: 
        !            17: #include <machine/mtpr.h>
        !            18: #include <tahoeif/if_enp.h> 
        !            19: #include <sys/buf.h>
        !            20: #include <vba/vbavar.h>
        !            21: #include <nlist.h>
        !            22: #include "nstat.h"
        !            23: 
        !            24: struct nlist   enpnl[] = {
        !            25: #                      define  N_ENPSOFTC      0       
        !            26:        { "_enp_softc"},
        !            27: #                      define  N_STATADDR      1
        !            28:        { "_stat_addr"},
        !            29: #                      define  N_NUMENP        2
        !            30:        { "_numenp" },
        !            31:        { "" },
        !            32: };
        !            33: 
        !            34: #define NENP           6
        !            35: struct         enp_softc       enpsoftc[NENP];
        !            36: 
        !            37: extern int     kmem;
        !            38: extern int     vmem;
        !            39: extern char    *system;
        !            40: char   *vmemf = "/dev/vmem";
        !            41: int    vmem;
        !            42: ENPSTAT        enp_stats;
        !            43: 
        !            44: #define        STARTENP() sin = (struct sockaddr_in *)&(f->if_addr);\
        !            45:                   if (sin->sin_addr.s_addr == 0) { \
        !            46:                        printf("enpstat: enp%d is not configured.\n", kk);\
        !            47:                        continue; \
        !            48:                   }
        !            49: #define ENDENP            putchar('\n');
        !            50: 
        !            51: enpstat(unit, from)
        !            52: int unit, from;
        !            53: {
        !            54:        int     i, j, num;
        !            55: 
        !            56:        ENPSTAT                 *s;
        !            57:        long                    stat_addr[NENP]; /* addrs of stat areas */
        !            58:        struct  enp_softc       *p;
        !            59:        struct  ifnet           *f;
        !            60:        struct  sockaddr_in     *sin;
        !            61: 
        !            62:        off_t   numdev_memaddr;
        !            63:        off_t   stat_memaddr;
        !            64:        off_t   enpsoftc_memaddr;
        !            65: 
        !            66:        int     kk;
        !            67:        static  int     getvm = 0;
        !            68: 
        !            69:        if (!getvm) {
        !            70:                nlist(system, enpnl);
        !            71:                getvm = 1;
        !            72:        }
        !            73: 
        !            74:        numdev_memaddr = enpnl[N_NUMENP].n_value;
        !            75:        stat_memaddr = enpnl[N_STATADDR].n_value; /* versa bus address */
        !            76:        enpsoftc_memaddr = enpnl[N_ENPSOFTC].n_value;
        !            77: 
        !            78:        if (numdev_memaddr==0 || stat_memaddr == 0 || enpsoftc_memaddr == 0) {
        !            79:                printf("enpstat: symbol not in namelist\n");
        !            80:                return(1);
        !            81:        }
        !            82: 
        !            83:        klseek(kmem, numdev_memaddr, 0);
        !            84:        read(kmem, (char *)&num, sizeof (num));
        !            85: 
        !            86:        if ((num < 0) || (num > NENP)) {  
        !            87:                printf("enpstat: invalid number of devices (num = %d)\n", num);
        !            88:                return(1);
        !            89:        }
        !            90:        if (num == 0) {  
        !            91:                printf("enpstat: no enp (driver) installed.\n");
        !            92:                return(1);
        !            93:        }
        !            94: 
        !            95:        if (unit > num)
        !            96:                if (unit == WILDCARD)
        !            97:                        unit = 0;       /* print all    */
        !            98:                else {
        !            99:                        printf("enpstat: invalid device no.(unit=%d)\n", unit);
        !           100:                        return;
        !           101:                }
        !           102:        else
        !           103:                num = unit + 1;         /* print only once for dev-> unit */
        !           104: 
        !           105:        if (!from) {
        !           106:                klseek(kmem, enpsoftc_memaddr, 0);
        !           107:                read(kmem, enpsoftc, sizeof(struct enp_softc)*num);
        !           108:        }
        !           109: 
        !           110:        klseek(kmem, stat_memaddr, 0);
        !           111:        read(kmem, (char *)stat_addr, sizeof(long)*num);
        !           112: 
        !           113:        vmem = open(vmemf, 0);
        !           114:        if (vmem < 0) {
        !           115:                printf("enpstat: cannot open ");
        !           116:                perror(vmemf);
        !           117:                return(1);
        !           118:        }
        !           119: 
        !           120:        if (from)
        !           121:                return(0);      /* don't output */
        !           122: 
        !           123:        for (kk = unit; kk < num; kk++) {
        !           124:                lseek(vmem, (off_t)stat_addr[kk], 0);
        !           125:                read(vmem, (char *)&enp_stats, sizeof(ENPSTAT));
        !           126:                p = &enpsoftc[kk];
        !           127:                f = &p->es_if;
        !           128:                s = (ENPSTAT *)&enp_stats;
        !           129: 
        !           130:                printf("--------------------------------\n");
        !           131:                STARTENP();
        !           132:                        printf("Device Name: %s%d", "enp", f->if_unit);
        !           133:                        printf("\t\tEthernet Station Address: ");
        !           134:                        for (j=0; j<6; j++)
        !           135:                                printf("%x.",p->es_enaddr[j] & 0xff);
        !           136:                        printf("   ");
        !           137:                ENDENP
        !           138:        
        !           139:                lseek(vmem, (off_t)stat_addr[kk], 0);
        !           140:                read(vmem, (char *)&enp_stats, sizeof(ENPSTAT));
        !           141: 
        !           142:                STARTENP();
        !           143:                        printf("Transmit:%20d", s->e_xmit_successful);
        !           144:                        printf("\tReceive:%25d", s->e_rcv_successful);
        !           145:                ENDENP
        !           146: 
        !           147:                STARTENP();
        !           148:                        printf("Multiple Retries:%12d", s->e_mult_retry);
        !           149:                        printf("\tMissed Packets(out of buf):%6d",
        !           150:                                s->e_rcv_missed);
        !           151:                ENDENP
        !           152:        
        !           153:                STARTENP();
        !           154:                        printf("Single Retries:%14d", s->e_one_retry);
        !           155:                        printf("\tCRC Errors:%22d", s->e_crc_err);
        !           156:                ENDENP
        !           157:        
        !           158:                STARTENP();
        !           159:                        printf("Retry Failures:%14d", s->e_fail_retry);
        !           160:                        printf("\tFraming Errors:%18d", s->e_frame_err);
        !           161:                ENDENP
        !           162:        
        !           163:                STARTENP();
        !           164:                        printf("Late Collision:%14d", s->e_late_coll);
        !           165:                ENDENP
        !           166: 
        !           167:                STARTENP();
        !           168:                        printf("No. of Collisions:%11d",
        !           169:                                s->e_mult_retry+s->e_one_retry+s->e_late_coll);
        !           170:                ENDENP
        !           171:        
        !           172:                STARTENP();
        !           173:                        printf("Deferals on Xmit:%12d", s->e_deferrals);
        !           174:                ENDENP
        !           175:        
        !           176:                STARTENP();
        !           177:                        printf("Transmit BUF Errors*:%8d", s->e_xmit_buff_err);
        !           178:                        printf("\tReceive BUF Errors*:%13d", s->e_rcv_buff_err);
        !           179:                ENDENP
        !           180: 
        !           181:                STARTENP();
        !           182:                        printf("Underrun Errors:%13d", s->e_silo_underrun);
        !           183:                        printf("\tOverrun Errors:%18d", s->e_silo_overrun);
        !           184:                ENDENP
        !           185: 
        !           186:                STARTENP();
        !           187:                        printf("Carriers Losses*:%12d", s->e_lost_carrier);
        !           188:                ENDENP
        !           189:        
        !           190:                STARTENP();
        !           191:                        printf("Babbling Xmitter Errors:%5d", s->e_babble);
        !           192:                ENDENP
        !           193:        
        !           194:                STARTENP();
        !           195:                        printf("Memory Errors* (Xmit):%7d", s->e_xmit_mem_err);
        !           196:                        printf("\tMemory Errors* (Recv):%11d", 
        !           197:                                s->e_rcv_mem_err);
        !           198:                ENDENP
        !           199:                printf("--------------------------------\n");
        !           200:                printf("* Fatal Errors. Controller has to be reloaded.\n");
        !           201:        }
        !           202:        close(vmem);
        !           203: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.