linux-bk/drivers/net/dgrs_ether.h
<<
>>
Prefs
   1/*
   2 *      A filtering function.  There are two filters/port.  Filter "0"
   3 *      is the input filter, and filter "1" is the output filter.
   4 */
   5typedef int (FILTER_FUNC)(uchar *pktp, int pktlen, ulong *scratch, int port);
   6#define NFILTERS        2
   7
   8/*
   9 *      The per port structure
  10 */
  11typedef struct
  12{
  13        int             chan;           /* Channel number (0-3) */
  14        ulong           portaddr;       /* address of 596 port register */
  15        volatile ulong  *ca;            /* address of 596 chan attention */
  16        ulong           intmask;        /* Interrupt mask for this port */
  17        ulong           intack;         /* Ack bit for this port */
  18
  19        uchar           ethaddr[6];     /* Ethernet address of this port */
  20        int             is_promisc;     /* Port is promiscuous */
  21
  22        int             debug;          /* Debugging turned on */
  23
  24        I596_ISCP       *iscpp;         /* Uncached ISCP pointer */
  25        I596_SCP        *scpp;          /* Uncached SCP pointer */
  26        I596_SCB        *scbp;          /* Uncached SCB pointer */
  27
  28        I596_ISCP       iscp;
  29        I596_SCB        scb;
  30
  31        /* Command Queue */
  32        I596_CB         *cb0;
  33        I596_CB         *cbN;
  34        I596_CB         *cb_head;
  35        I596_CB         *cb_tail;
  36
  37        /* Receive Queue */
  38        I596_RFD        *rfd0;
  39        I596_RFD        *rfdN;
  40        I596_RFD        *rfd_head;
  41        I596_RFD        *rfd_tail;
  42
  43        /* Receive Buffers */
  44        I596_RBD        *rbd0;
  45        I596_RBD        *rbdN;
  46        I596_RBD        *rbd_head;
  47        I596_RBD        *rbd_tail;
  48        int             buf_size;       /* Size of an RBD buffer */
  49        int             buf_cnt;        /* Total RBD's allocated */
  50
  51        /* Rx Statistics */
  52        ulong           cnt_rx_cnt;     /* Total packets rcvd, good and bad */ 
  53        ulong           cnt_rx_good;    /* Total good packets rcvd */
  54        ulong           cnt_rx_bad;     /* Total of all bad packets rcvd */
  55                                        /* Subtotals can be gotten from SCB */
  56        ulong           cnt_rx_nores;   /* No resources */
  57        ulong           cnt_rx_bytes;   /* Total bytes rcvd */
  58
  59        /* Tx Statistics */
  60        ulong           cnt_tx_queued;
  61        ulong           cnt_tx_done;
  62        ulong           cnt_tx_freed;
  63        ulong           cnt_tx_nores;   /* No resources */
  64
  65        ulong           cnt_tx_bad;
  66        ulong           cnt_tx_err_late;
  67        ulong           cnt_tx_err_nocrs;
  68        ulong           cnt_tx_err_nocts;
  69        ulong           cnt_tx_err_under;
  70        ulong           cnt_tx_err_maxcol;
  71        ulong           cnt_tx_collisions;
  72
  73        /* Special stuff for host */
  74#       define          rfd_freed       cnt_rx_cnt
  75        ulong           rbd_freed;
  76        int             host_timer;
  77
  78        /* Added after first beta */
  79        ulong           cnt_tx_races;   /* Counts race conditions */
  80        int             spanstate;
  81        ulong           cnt_st_tx;      /* send span tree pkts */
  82        ulong           cnt_st_fail_tx; /* Failures to send span tree pkts */
  83        ulong           cnt_st_fail_rbd;/* Failures to send span tree pkts */
  84        ulong           cnt_st_rx;      /* rcv span tree pkts */
  85        ulong           cnt_st_rx_bad;  /* bogus st packets rcvd */
  86        ulong           cnt_rx_fwd;     /* Rcvd packets that were forwarded */
  87
  88        ulong           cnt_rx_mcast;   /* Multicast pkts received */
  89        ulong           cnt_tx_mcast;   /* Multicast pkts transmitted */
  90        ulong           cnt_tx_bytes;   /* Bytes transmitted */
  91
  92        /*
  93         *      Packet filtering
  94         *      Filter 0: input filter
  95         *      Filter 1: output filter
  96         */
  97        
  98        ulong           *filter_space[NFILTERS];
  99        FILTER_FUNC     *filter_func[NFILTERS];
 100        ulong           filter_cnt[NFILTERS];
 101        ulong           filter_len[NFILTERS];
 102
 103        ulong           pad[ (512-300) / 4];
 104} PORT;
 105
 106/*
 107 *      Port[0]                 is host interface
 108 *      Port[1..SE_NPORTS]      are external 10 Base T ports.  Fewer may be in
 109 *                              use, depending on whether this is an SE-4 or
 110 *                              an SE-6.
 111 *      Port[SE_NPORTS]         Pseudo-port for Spanning tree and SNMP
 112 */
 113extern PORT     Port[1+SE_NPORTS+1];
 114
 115extern int      Nports;         /* Number of genuine ethernet controllers */
 116extern int      Nchan;          /* ... plus one for host interface */
 117
 118extern int      FirstChan;      /* 0 or 1, depedning on whether host is used */
 119extern int      NumChan;        /* 4 or 5 */
 120
 121/*
 122 *      A few globals
 123 */
 124extern int      IsPromisc;
 125extern int      MultiNicMode;
 126
 127/*
 128 *      Functions
 129 */
 130extern void     eth_xmit_spew_on(PORT *p, int cnt);
 131extern void     eth_xmit_spew_off(PORT *p);
 132
 133extern I596_RBD *alloc_rbds(PORT *p, int num);
 134
 135extern I596_CB * eth_cb_alloc(PORT *p);
 136
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.