and really add upstream source :-)
[linux-2.6.git] / drivers / net / ip1000a / ipg_structs.h
1 /*\r
2  *\r
3  * ipg.h\r
4  *\r
5  * Include file with structures for Gigabit Ethernet\r
6  * device driver for Network Interface Cards (NICs) utilizing the\r
7  * Tamarack Microelectronics Inc. IPG Gigabit or Triple Speed\r
8  * Ethernet Media Access Controller.\r
9  *\r
10  * Craig Rich\r
11  * Sundance Technology, Inc.\r
12  * 1485 Saratoga Avenue\r
13  * Suite 200\r
14  * San Jose, CA 95129\r
15  * 408 873 4117\r
16  * www.sundanceti.com\r
17  * craig_rich@sundanceti.com\r
18  *\r
19  * Rev  Date     Description\r
20  * --------------------------------------------------------------\r
21  * 0.1  3/30/01  New file created from original ipg.h\r
22  *\r
23  * 0.2  5/22/01  Added PCI_DEVICE_ID_TAMARACK_TC9020_9021_ALT\r
24  *               to nics_supported[] array.\r
25  */\r
26 \r
27 /* IPG Ethernet device structure, used for removing module. */\r
28 IPG_DEVICE_TYPE *root_ipg_ethernet_device = NULL;\r
29 \r
30 /* Transmit Frame Descriptor. The IPG supports 15 fragments,\r
31  * however Linux requires only a single fragment. Note, each\r
32  * TFD field is 64 bits wide.\r
33  */\r
34 struct TFD\r
35 {\r
36         u64             TFDNextPtr;\r
37         u64             TFC;\r
38         u64             FragInfo;\r
39 };\r
40 \r
41 /* Receive Frame Descriptor. Note, each RFD field is 64 bits wide.\r
42  */\r
43 struct RFD\r
44 {\r
45         u64             RFDNextPtr;\r
46         u64             RFS;\r
47         u64             FragInfo;\r
48 };\r
49 \r
50 #ifdef IPG_LINUX2_4\r
51 struct ipg_dmabuff\r
52 {\r
53         dma_addr_t      dmahandle;\r
54         unsigned long   len;\r
55 };\r
56 \r
57 #endif\r
58 struct SJumbo\r
59 {\r
60         int FoundStart;\r
61         int CurrentSize;\r
62         struct sk_buff                  *skb;\r
63 };\r
64 /* Structure of IPG NIC specific data. */\r
65 struct ipg_nic_private\r
66 {\r
67         struct TFD              *TFDList;\r
68         struct RFD              *RFDList;\r
69 #ifdef IPG_LINUX2_4\r
70         dma_addr_t              TFDListDMAhandle;\r
71         dma_addr_t              RFDListDMAhandle;\r
72         struct ipg_dmabuff      TxBuffDMAhandle[IPG_TFDLIST_LENGTH];\r
73         struct ipg_dmabuff      RxBuffDMAhandle[IPG_RFDLIST_LENGTH];\r
74 #endif\r
75         struct sk_buff          *TxBuff[IPG_TFDLIST_LENGTH];\r
76         struct sk_buff          *RxBuff[IPG_RFDLIST_LENGTH];\r
77         u16                     CurrentTxFrameID;\r
78         int                     CurrentTFD;\r
79         int                     LastFreedTxBuff;\r
80         int                     CurrentRFD;\r
81 // Add by Grace 2005/05/19\r
82 #ifdef JUMBO_FRAME\r
83         struct SJumbo      Jumbo;\r
84 #endif\r
85         int                     LastRestoredRxBuff;\r
86         int                     RxBuffNotReady;\r
87         struct pci_dev          *ipg_pci_device;\r
88         IPG_STATS_TYPE  stats;\r
89         IPG_DEVICE_TYPE *next_ipg_ethernet_device;\r
90         spinlock_t              lock;\r
91         int                     tenmbpsmode;\r
92         \r
93         /*Jesse20040128EEPROM_VALUE */\r
94         u16         LED_Mode;\r
95         u16         StationAddr0;   /* Station Address in EEPROM Reg 0x10 */\r
96    u16         StationAddr1;   /* Station Address in EEPROM Reg 0x11 */        \r
97         u16         StationAddr2;   /* Station Address in EEPROM Reg 0x12 */   \r
98 \r
99 #ifdef IPG_DEBUG\r
100         int                     TFDunavailCount;\r
101         int                     RFDlistendCount;\r
102         int                     RFDListCheckedCount;\r
103         int                     EmptyRFDListCount;\r
104 #endif\r
105 };\r
106 \r
107 struct  nic_id\r
108 {\r
109         char*           NICname;\r
110         int             vendorid;\r
111         int             deviceid;\r
112 };\r
113 \r
114 struct  nic_id  nics_supported[] =\r
115 {\r
116         {"IC PLUS IP1000 1000/100/10 based NIC",\r
117          PCI_VENDOR_ID_ICPLUS,\r
118          PCI_DEVICE_ID_IP1000},\r
119         {"Sundance Technology ST2021 based NIC",\r
120      PCI_VENDOR_ID_SUNDANCE,\r
121          PCI_DEVICE_ID_SUNDANCE_ST2021},\r
122         {"Tamarack Microelectronics TC9020/9021 based NIC",\r
123          PCI_VENDOR_ID_SUNDANCE,\r
124          PCI_DEVICE_ID_TAMARACK_TC9020_9021},\r
125         {"Tamarack Microelectronics TC9020/9021 based NIC",\r
126          PCI_VENDOR_ID_SUNDANCE,\r
127          PCI_DEVICE_ID_TAMARACK_TC9020_9021_ALT},\r
128         {"D-Link NIC",\r
129          PCI_VENDOR_ID_DLINK,\r
130          PCI_DEVICE_ID_DLINK_1002},\r
131         {"D-Link NIC IP1000A",\r
132          PCI_VENDOR_ID_DLINK,\r
133          PCI_DEVICE_ID_DLINK_IP1000A},\r
134          \r
135         {"N/A", 0xFFFF, 0}\r
136 };\r
137 \r
138 #ifdef IPG_LINUX2_4\r
139 struct  pci_device_id   pci_devices_supported[] =\r
140 {\r
141         {PCI_VENDOR_ID_ICPLUS,\r
142          PCI_DEVICE_ID_IP1000,\r
143          PCI_ANY_ID,\r
144          PCI_ANY_ID,\r
145          0x020000,\r
146          0xFFFFFF,\r
147          0},\r
148 \r
149         {PCI_VENDOR_ID_SUNDANCE,\r
150          PCI_DEVICE_ID_SUNDANCE_ST2021,\r
151          PCI_ANY_ID,\r
152          PCI_ANY_ID,\r
153          0x020000,\r
154          0xFFFFFF,\r
155          1},\r
156 \r
157         {PCI_VENDOR_ID_SUNDANCE,\r
158          PCI_DEVICE_ID_TAMARACK_TC9020_9021,\r
159          PCI_ANY_ID,\r
160          PCI_ANY_ID,\r
161          0x020000,\r
162          0xFFFFFF,\r
163          2},\r
164 \r
165         {PCI_VENDOR_ID_DLINK,\r
166          PCI_DEVICE_ID_DLINK_1002,\r
167          PCI_ANY_ID,\r
168          PCI_ANY_ID,\r
169          0x020000,\r
170          0xFFFFFF,\r
171          3},\r
172 \r
173         {0,}\r
174 };\r
175 #endif\r
176 /* end ipg_structs.h */\r