1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32#ifndef _E1000_H_
33#define _E1000_H_
34
35#include <linux/stddef.h>
36#include <linux/config.h>
37#include <linux/module.h>
38#include <linux/types.h>
39#include <asm/byteorder.h>
40#include <linux/init.h>
41#include <linux/mm.h>
42#include <linux/errno.h>
43#include <linux/ioport.h>
44#include <linux/pci.h>
45#include <linux/kernel.h>
46#include <linux/netdevice.h>
47#include <linux/etherdevice.h>
48#include <linux/skbuff.h>
49#include <linux/delay.h>
50#include <linux/timer.h>
51#include <linux/slab.h>
52#include <linux/interrupt.h>
53#include <linux/string.h>
54#include <linux/pagemap.h>
55#include <asm/bitops.h>
56#include <asm/io.h>
57#include <asm/irq.h>
58#include <linux/capability.h>
59#include <linux/in.h>
60#include <linux/ip.h>
61#include <linux/tcp.h>
62#include <linux/udp.h>
63#include <net/pkt_sched.h>
64#include <linux/list.h>
65#include <linux/reboot.h>
66#ifdef NETIF_F_TSO
67#include <net/checksum.h>
68#endif
69#include <linux/workqueue.h>
70#include <linux/mii.h>
71#include <linux/ethtool.h>
72#include <linux/if_vlan.h>
73
74#define BAR_0 0
75#define BAR_1 1
76#define BAR_5 5
77#define PCI_DMA_64BIT 0xffffffffffffffffULL
78#define PCI_DMA_32BIT 0x00000000ffffffffULL
79
80
81struct e1000_adapter;
82
83#include "e1000_hw.h"
84
85#if DBG
86#define E1000_DBG(args...) printk(KERN_DEBUG "e1000: " args)
87#else
88#define E1000_DBG(args...)
89#endif
90
91#define E1000_ERR(args...) printk(KERN_ERR "e1000: " args)
92
93#define E1000_MAX_INTR 10
94
95
96#define E1000_DEFAULT_TXD 256
97#define E1000_MAX_TXD 256
98#define E1000_MIN_TXD 80
99#define E1000_MAX_82544_TXD 4096
100#define E1000_DEFAULT_RXD 256
101#define E1000_MAX_RXD 256
102#define E1000_MIN_RXD 80
103#define E1000_MAX_82544_RXD 4096
104
105
106#define E1000_RXBUFFER_2048 2048
107#define E1000_RXBUFFER_4096 4096
108#define E1000_RXBUFFER_8192 8192
109#define E1000_RXBUFFER_16384 16384
110
111
112#define E1000_SMARTSPEED_DOWNSHIFT 3
113#define E1000_SMARTSPEED_MAX 15
114
115
116#define E1000_PBA_BYTES_SHIFT 0xA
117#define E1000_TX_HEAD_ADDR_SHIFT 7
118#define E1000_PBA_TX_MASK 0xFFFF0000
119
120
121#define E1000_FC_HIGH_DIFF 0x1638
122
123
124#define E1000_FC_LOW_DIFF 0x1640
125
126
127#define E1000_FC_PAUSE_TIME 0x0680
128
129
130#define E1000_TX_QUEUE_WAKE 16
131
132#define E1000_RX_BUFFER_WRITE 16
133
134#define AUTO_ALL_MODES 0
135#define E1000_EEPROM_APME 0x0400
136
137#ifndef E1000_MASTER_SLAVE
138
139#define E1000_MASTER_SLAVE e1000_ms_hw_default
140#endif
141
142
143#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))
144
145
146
147struct e1000_buffer {
148 struct sk_buff *skb;
149 uint64_t dma;
150 unsigned long length;
151 unsigned long time_stamp;
152 unsigned int next_to_watch;
153};
154
155struct e1000_desc_ring {
156
157 void *desc;
158
159 dma_addr_t dma;
160
161 unsigned int size;
162
163 unsigned int count;
164
165 unsigned int next_to_use;
166
167 unsigned int next_to_clean;
168
169 struct e1000_buffer *buffer_info;
170};
171
172#define E1000_DESC_UNUSED(R) \
173 ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \
174 (R)->next_to_clean - (R)->next_to_use - 1)
175
176#define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i]))
177#define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc)
178#define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc)
179#define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc)
180
181
182
183struct e1000_adapter {
184 struct timer_list tx_fifo_stall_timer;
185 struct timer_list watchdog_timer;
186 struct timer_list phy_info_timer;
187 struct vlan_group *vlgrp;
188 uint32_t bd_number;
189 uint32_t rx_buffer_len;
190 uint32_t part_num;
191 uint32_t wol;
192 uint32_t smartspeed;
193 uint16_t link_speed;
194 uint16_t link_duplex;
195 spinlock_t stats_lock;
196 atomic_t irq_sem;
197 struct work_struct tx_timeout_task;
198 uint8_t fc_autoneg;
199
200 struct timer_list blink_timer;
201 unsigned long led_status;
202
203
204 struct e1000_desc_ring tx_ring;
205 spinlock_t tx_lock;
206 uint32_t txd_cmd;
207 uint32_t tx_int_delay;
208 uint32_t tx_abs_int_delay;
209 uint32_t gotcl;
210 uint64_t gotcl_old;
211 uint64_t tpt_old;
212 uint64_t colc_old;
213 uint32_t tx_fifo_head;
214 uint32_t tx_head_addr;
215 uint32_t tx_fifo_size;
216 atomic_t tx_fifo_stall;
217 boolean_t pcix_82544;
218
219
220 struct e1000_desc_ring rx_ring;
221 uint64_t hw_csum_err;
222 uint64_t hw_csum_good;
223 uint32_t rx_int_delay;
224 uint32_t rx_abs_int_delay;
225 boolean_t rx_csum;
226 uint32_t gorcl;
227 uint64_t gorcl_old;
228
229
230 uint32_t itr;
231
232
233 struct net_device *netdev;
234 struct pci_dev *pdev;
235 struct net_device_stats net_stats;
236
237
238 struct e1000_hw hw;
239 struct e1000_hw_stats stats;
240 struct e1000_phy_info phy_info;
241 struct e1000_phy_stats phy_stats;
242
243 uint32_t test_icr;
244 struct e1000_desc_ring test_tx_ring;
245 struct e1000_desc_ring test_rx_ring;
246
247
248 uint32_t pci_state[16];
249};
250#endif
251