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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [net/] [e1000/] [e1000.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*******************************************************************************
2
 
3
 
4
  Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved.
5
 
6
  This program is free software; you can redistribute it and/or modify it
7
  under the terms of the GNU General Public License as published by the Free
8
  Software Foundation; either version 2 of the License, or (at your option)
9
  any later version.
10
 
11
  This program is distributed in the hope that it will be useful, but WITHOUT
12
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14
  more details.
15
 
16
  You should have received a copy of the GNU General Public License along with
17
  this program; if not, write to the Free Software Foundation, Inc., 59
18
  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19
 
20
  The full GNU General Public License is included in this distribution in the
21
  file called LICENSE.
22
 
23
  Contact Information:
24
  Linux NICS <linux.nics@intel.com>
25
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
26
 
27
*******************************************************************************/
28
 
29
 
30
/* Linux PRO/1000 Ethernet Driver main header file */
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/tqueue.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
 
81
struct 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
/* How many descriptors for TX and RX ? */
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
/* Supported Rx Buffer Sizes */
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
/* SmartSpeed delimiters */
112
#define E1000_SMARTSPEED_DOWNSHIFT 3
113
#define E1000_SMARTSPEED_MAX       15
114
 
115
/* Packet Buffer allocations */
116
#define E1000_TX_FIFO_SIZE_SHIFT 0xA
117
#define E1000_TX_HEAD_ADDR_SHIFT 7
118
#define E1000_PBA_TX_MASK 0xFFFF0000
119
 
120
/* Flow Control High-Watermark: 5688 bytes below Rx FIFO size */
121
#define E1000_FC_HIGH_DIFF 0x1638
122
 
123
/* Flow Control Low-Watermark: 5696 bytes below Rx FIFO size */
124
#define E1000_FC_LOW_DIFF 0x1640
125
 
126
/* Flow Control Pause Time: 858 usec */
127
#define E1000_FC_PAUSE_TIME 0x0680
128
 
129
/* How many Tx Descriptors do we need to call netif_wake_queue ? */
130
#define E1000_TX_QUEUE_WAKE     16
131
/* How many Rx Buffers do we bundle into one write to the hardware ? */
132
#define E1000_RX_BUFFER_WRITE   16      /* Must be power of 2 */
133
 
134
#define AUTO_ALL_MODES       0
135
#define E1000_EEPROM_APME    0x0400
136
 
137
#ifndef E1000_MASTER_SLAVE
138
/* Switch to override PHY master/slave setting */
139
#define E1000_MASTER_SLAVE      e1000_ms_hw_default
140
#endif
141
 
142
/* only works for sizes that are powers of 2 */
143
#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))
144
 
145
/* wrapper around a pointer to a socket buffer,
146
 * so a DMA handle can be stored along with the buffer */
147
struct 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
 
155
struct e1000_desc_ring {
156
        /* pointer to the descriptor ring memory */
157
        void *desc;
158
        /* physical address of the descriptor ring */
159
        dma_addr_t dma;
160
        /* length of descriptor ring in bytes */
161
        unsigned int size;
162
        /* number of descriptors in the ring */
163
        unsigned int count;
164
        /* next descriptor to associate a buffer with */
165
        unsigned int next_to_use;
166
        /* next descriptor to check for DD status bit */
167
        unsigned int next_to_clean;
168
        /* array of buffer information structs */
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
/* board specific private data structure */
182
 
183
struct 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 tq_struct tx_timeout_task;
198
        uint8_t fc_autoneg;
199
 
200
        struct timer_list blink_timer;
201
        unsigned long led_status;
202
 
203
        /* TX */
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
        /* RX */
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
        /* Interrupt Throttle Rate */
230
        uint32_t itr;
231
 
232
        /* OS defined structs */
233
        struct net_device *netdev;
234
        struct pci_dev *pdev;
235
        struct net_device_stats net_stats;
236
 
237
        /* structs defined in e1000_hw.h */
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 /* _E1000_H_ */

powered by: WebSVN 2.1.0

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