Annotation of cci/usr/src/etc/nstat/acestat.c, revision 1.1.1.1

1.1       root        1: /*                                                             */
                      2: /*     if_ace: ACC VERSAbus Ethernet controler (v/eiu)         */
                      3: /*                                                             */
                      4: 
                      5: 
                      6: 
                      7: #include <stdio.h>
                      8: #include <sys/types.h>
                      9: #include <sys/socket.h>
                     10: #include <sys/errno.h>
                     11: 
                     12: #include <net/if.h>
                     13: #include <net/netisr.h>
                     14: #include <net/route.h>
                     15: #include <netinet/in.h>
                     16: #include <netinet/ip_var.h>
                     17: #include <netinet/if_ether.h>
                     18: 
                     19: #include <machine/mtpr.h>
                     20: #include <tahoeif/if_acereg.h>
                     21: #include <sys/buf.h>
                     22: #include <vba/vbavar.h>
                     23: #include <nlist.h>
                     24: #include "nstat.h"
                     25: 
                     26: struct nlist   acenl[] = {
                     27: #                      define  N_ACEINFO       0
                     28:        { "_aceinfo" },
                     29: #                      define  N_ACESTAT       1
                     30:        { "_ace_softc"},
                     31: #                      define  N_NUMACE        2
                     32:        { "_numace" },
                     33:        { "" },
                     34: };
                     35: 
                     36: #define NACE           6
                     37: #define        NUMACESOFTC     10
                     38: struct ace_softc       acesoftc[NUMACESOFTC];
                     39: 
                     40: extern int     kmem;
                     41: extern char    *system;
                     42: 
                     43: #define        STARTACE(X) sin = (struct sockaddr_in *)&(f->if_addr);\
                     44:                    if (sin->sin_addr.s_addr == 0) { \
                     45:                            printf("acestat: ace%d is not configured.\n", kk); \
                     46:                            continue; \
                     47:                    } \
                     48:                    printf("%-25s",X);
                     49: #define ENDACE             putchar('\n');
                     50: 
                     51: acestat(unit)
                     52: int    unit;
                     53: {
                     54:        int     i, j , kk;
                     55: 
                     56:        struct  ace_softc       *p;
                     57:        struct  ifnet           *f;
                     58:        struct  ace_stats       *s;
                     59:        struct  vba_device      *aceinfo;
                     60:        struct  sockaddr_in     *sin;
                     61: 
                     62:        off_t   numdev_memaddr;
                     63:        off_t   stat_memaddr;
                     64:        off_t   aceinfo_memaddr;
                     65:        int     num;
                     66: 
                     67:        struct vba_device ui;
                     68:        struct acedevice acdev; 
                     69:        short txidx, rcidx;
                     70: 
                     71:        static  int     getvm = 0;
                     72: 
                     73:        if (!getvm) {
                     74:                nlist(system, acenl);
                     75:                getvm = 1;
                     76:        }
                     77: 
                     78:        numdev_memaddr = acenl[N_NUMACE].n_value;
                     79:        stat_memaddr = acenl[N_ACESTAT].n_value;
                     80:        aceinfo_memaddr = acenl[N_ACEINFO].n_value;
                     81: 
                     82:        if (numdev_memaddr==0 || stat_memaddr == 0 || aceinfo_memaddr==0) {
                     83:                printf("acestat: symbol not in namelist\n");
                     84:                return;
                     85:        }
                     86: 
                     87:        klseek(kmem, numdev_memaddr, 0);
                     88:        read(kmem, &num, sizeof (num));
                     89: 
                     90:        if ((num < 0) || (num > NACE)) {
                     91:                printf("acestat: invalid number of devices (num = %d)\n", num);
                     92:                return;
                     93:        }
                     94: 
                     95:        if (num == 0) {
                     96:                printf("acestat: no ace (driver) installed.\n");
                     97:                return;
                     98:        }
                     99: 
                    100:        if (unit > num)
                    101:                if (unit == WILDCARD)
                    102:                        unit = 0;       /* print all    */
                    103:                else {
                    104:                        printf("acestat: invalid device no.(unit=%d)\n", unit);
                    105:                        return;
                    106:                }
                    107:        else
                    108:                num = unit + 1;         /* print one    */
                    109: 
                    110:        klseek(kmem, stat_memaddr, 0);
                    111:        read(kmem, acesoftc, sizeof (struct ace_softc)*num);
                    112: 
                    113:        klseek(kmem, aceinfo_memaddr, 0);
                    114:        read(kmem, (char *)aceinfo, sizeof (aceinfo));
                    115:        
                    116:        for (kk = unit; kk < num; kk++) {
                    117:                p = &acesoftc[kk];
                    118:                f = &p->is_if;
                    119:                s = &p->is_stats;
                    120: 
                    121:                printf("--------------------------------\n");
                    122:                STARTACE("Device Name:");
                    123:                        printf("%s%-12d", "ace", f->if_unit);
                    124:                ENDACE
                    125: 
                    126:                STARTACE("Ethernet Station Address:");
                    127:                        for (j=0; j<6; j++)
                    128:                                printf("%x.",p->is_addr[j] & 0xff);
                    129:                        printf("   ");
                    130:                ENDACE
                    131: 
                    132:                STARTACE("Recv Overruns:");
                    133:                        printf("%-15d", s->rx_overruns);
                    134:                ENDACE
                    135: 
                    136:                STARTACE("Recv Underruns:");
                    137:                        printf("%-15d", s->rx_underruns);
                    138:                ENDACE
                    139: 
                    140:                STARTACE("Recv Alignment Errors:");
                    141:                        printf("%-15d", s->rx_align_errors);
                    142:                ENDACE
                    143: 
                    144:                STARTACE("Recv CRC Errors:");
                    145:                        printf("%-15d", s->rx_crc_errors);
                    146:                ENDACE
                    147:        
                    148:                STARTACE("Xmit Ethernet Retries:");
                    149:                        printf("%-15d", s->tx_retries);
                    150:                ENDACE
                    151: 
                    152:                STARTACE("Xmit Discarded:");
                    153:                        printf("%-15d", s->tx_discarded);
                    154:                ENDACE
                    155: 
                    156:                STARTACE("Xmit Busy Segments:");
                    157:                        printf("%-15d", s->tx_busy);
                    158:                ENDACE
                    159:        }
                    160: }

unix.superglobalmegacorp.com

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