OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [net/] [dgrs_ether.h] - Blame information for rev 1772

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1626 jcastillo
/*
2
 *      A filtering function.  There are two filters/port.  Filter "0"
3
 *      is the input filter, and filter "1" is the output filter.
4
 */
5
typedef int (FILTER_FUNC)(uchar *pktp, int pktlen, ulong *scratch, int port);
6
#define NFILTERS        2
7
 
8
/*
9
 *      The per port structure
10
 */
11
typedef 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
 */
113
extern PORT     Port[1+SE_NPORTS+1];
114
 
115
extern int      Nports;         /* Number of genuine ethernet controllers */
116
extern int      Nchan;          /* ... plus one for host interface */
117
 
118
extern int      FirstChan;      /* 0 or 1, depedning on whether host is used */
119
extern int      NumChan;        /* 4 or 5 */
120
 
121
/*
122
 *      A few globals
123
 */
124
extern int      IsPromisc;
125
extern int      MultiNicMode;
126
 
127
/*
128
 *      Functions
129
 */
130
extern void     eth_xmit_spew_on(PORT *p, int cnt);
131
extern void     eth_xmit_spew_off(PORT *p);
132
 
133
extern I596_RBD *alloc_rbds(PORT *p, int num);
134
 
135
extern I596_CB * eth_cb_alloc(PORT *p);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.