1 /******************************************************************************* 2 3 Intel PRO/1000 Linux driver 4 Copyright(c) 1999 - 2006 Intel Corporation. 5 6 This program is free software; you can redistribute it and/or modify it 7 under the terms and conditions of the GNU General Public License, 8 version 2, as published by the Free Software Foundation. 9 10 This program is distributed in the hope it will be useful, but WITHOUT 11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 more details. 14 15 You should have received a copy of the GNU General Public License along with 16 this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 18 19 The full GNU General Public License is included in this distribution in 20 the file called "COPYING". 21 22 Contact Information: 23 Linux NICS <linux.nics@intel.com> 24 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> 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/module.h> 37 #include <linux/types.h> 38 #include <asm/byteorder.h> 39 #include <linux/init.h> 40 #include <linux/mm.h> 41 #include <linux/errno.h> 42 #include <linux/ioport.h> 43 #include <linux/pci.h> 44 #include <linux/kernel.h> 45 #include <linux/netdevice.h> 46 #include <linux/etherdevice.h> 47 #include <linux/skbuff.h> 48 #include <linux/delay.h> 49 #include <linux/timer.h> 50 #include <linux/slab.h> 51 #include <linux/vmalloc.h> 52 #include <linux/interrupt.h> 53 #include <linux/string.h> 54 #include <linux/pagemap.h> 55 #include <linux/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 SIOCGMIIPHY 67 #include <linux/mii.h> 68 #endif 69 #ifdef SIOCETHTOOL 70 #include <linux/ethtool.h> 71 #endif 72 #ifdef NETIF_F_HW_VLAN_TX 73 #include <linux/if_vlan.h> 74 #endif 75 76 #define BAR_0 0 77 #define BAR_1 1 78 #define BAR_5 5 79 80 #include "kcompat.h" 81 #define INTEL_E1000_ETHERNET_DEVICE(device_id) {\ 82 PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)} 83 84 struct e1000_adapter; 85 86 #include "e1000_hw.h" 87 88 #define E1000_DBG(args...) 89 90 #define E1000_ERR(args...) printk(KERN_ERR "e1000: " args) 91 92 #define PFX "e1000: " 93 #define DPRINTK(nlevel, klevel, fmt, args...) \ 94 (void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \ 95 printk(KERN_##klevel PFX "%s: %s: " fmt, adapter->netdev->name, \ 96 __FUNCTION__ , ## args)) 97 98 #define E1000_MAX_INTR 10 99 100 /* TX/RX descriptor defines */ 101 #define E1000_DEFAULT_TXD 256 102 #define E1000_MAX_TXD 256 103 #define E1000_MIN_TXD 80 104 #define E1000_MAX_82544_TXD 4096 105 106 #define E1000_DEFAULT_RXD 256 107 #define E1000_MAX_RXD 256 108 #define E1000_MIN_RXD 80 109 #define E1000_MAX_82544_RXD 4096 110 111 /* this is the size past which hardware will drop packets when setting LPE=0 */ 112 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522 113 114 /* Supported Rx Buffer Sizes */ 115 #define E1000_RXBUFFER_128 128 /* Used for packet split */ 116 #define E1000_RXBUFFER_256 256 /* Used for packet split */ 117 #define E1000_RXBUFFER_512 512 118 #define E1000_RXBUFFER_1024 1024 119 #define E1000_RXBUFFER_2048 2048 120 #define E1000_RXBUFFER_4096 4096 121 #define E1000_RXBUFFER_8192 8192 122 #define E1000_RXBUFFER_16384 16384 123 124 /* SmartSpeed delimiters */ 125 #define E1000_SMARTSPEED_DOWNSHIFT 3 126 #define E1000_SMARTSPEED_MAX 15 127 128 /* Packet Buffer allocations */ 129 #define E1000_PBA_BYTES_SHIFT 0xA 130 #define E1000_TX_HEAD_ADDR_SHIFT 7 131 #define E1000_PBA_TX_MASK 0xFFFF0000 132 133 /* Flow Control Watermarks */ 134 #define E1000_FC_HIGH_DIFF 0x1638 /* High: 5688 bytes below Rx FIFO size */ 135 #define E1000_FC_LOW_DIFF 0x1640 /* Low: 5696 bytes below Rx FIFO size */ 136 137 #define E1000_FC_PAUSE_TIME 0x0680 /* 858 usec */ 138 139 /* How many Tx Descriptors do we need to call netif_wake_queue ? */ 140 #define E1000_TX_QUEUE_WAKE 16 141 /* How many Rx Buffers do we bundle into one write to the hardware ? */ 142 #define E1000_RX_BUFFER_WRITE 16 /* Must be power of 2 */ 143 144 #define AUTO_ALL_MODES 0 145 #define E1000_EEPROM_82544_APM 0x0004 146 #define E1000_EEPROM_ICH8_APME 0x0004 147 #define E1000_EEPROM_APME 0x0400 148 149 #ifndef E1000_MASTER_SLAVE 150 /* Switch to override PHY master/slave setting */ 151 #define E1000_MASTER_SLAVE e1000_ms_hw_default 152 #endif 153 154 #ifdef NETIF_F_HW_VLAN_TX 155 #define E1000_MNG_VLAN_NONE -1 156 #endif 157 /* Number of packet split data buffers (not including the header buffer) */ 158 #define PS_PAGE_BUFFERS MAX_PS_BUFFERS-1 159 160 /* only works for sizes that are powers of 2 */ 161 #define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1))) 162 163 /* wrapper around a pointer to a socket buffer, 164 * so a DMA handle can be stored along with the buffer */ 165 struct e1000_buffer { 166 struct sk_buff *skb; 167 dma_addr_t dma; 168 unsigned long time_stamp; 169 uint16_t length; 170 uint16_t next_to_watch; 171 }; 172 173 174 struct e1000_ps_page { struct page *ps_page[PS_PAGE_BUFFERS]; }; 175 struct e1000_ps_page_dma { uint64_t ps_page_dma[PS_PAGE_BUFFERS]; }; 176 177 struct e1000_tx_ring { 178 /* pointer to the descriptor ring memory */ 179 void *desc; 180 /* physical address of the descriptor ring */ 181 dma_addr_t dma; 182 /* length of descriptor ring in bytes */ 183 unsigned int size; 184 /* number of descriptors in the ring */ 185 unsigned int count; 186 /* next descriptor to associate a buffer with */ 187 unsigned int next_to_use; 188 /* next descriptor to check for DD status bit */ 189 unsigned int next_to_clean; 190 /* array of buffer information structs */ 191 struct e1000_buffer *buffer_info; 192 193 spinlock_t tx_lock; 194 uint16_t tdh; 195 uint16_t tdt; 196 boolean_t last_tx_tso; 197 }; 198 199 struct e1000_rx_ring { 200 /* pointer to the descriptor ring memory */ 201 void *desc; 202 /* physical address of the descriptor ring */ 203 dma_addr_t dma; 204 /* length of descriptor ring in bytes */ 205 unsigned int size; 206 /* number of descriptors in the ring */ 207 unsigned int count; 208 /* next descriptor to associate a buffer with */ 209 unsigned int next_to_use; 210 /* next descriptor to check for DD status bit */ 211 unsigned int next_to_clean; 212 /* array of buffer information structs */ 213 struct e1000_buffer *buffer_info; 214 /* arrays of page information for packet split */ 215 struct e1000_ps_page *ps_page; 216 struct e1000_ps_page_dma *ps_page_dma; 217 218 /* cpu for rx queue */ 219 int cpu; 220 221 uint16_t rdh; 222 uint16_t rdt; 223 }; 224 225 #define E1000_DESC_UNUSED(R) \ 226 ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \ 227 (R)->next_to_clean - (R)->next_to_use - 1) 228 229 #define E1000_RX_DESC_PS(R, i) \ 230 (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) 231 #define E1000_RX_DESC_EXT(R, i) \ 232 (&(((union e1000_rx_desc_extended *)((R).desc))[i])) 233 #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i])) 234 #define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc) 235 #define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc) 236 #define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc) 237 238 /* board specific private data structure */ 239 240 struct e1000_adapter { 241 struct timer_list tx_fifo_stall_timer; 242 struct timer_list watchdog_timer; 243 struct timer_list phy_info_timer; 244 #ifdef NETIF_F_HW_VLAN_TX 245 struct vlan_group *vlgrp; 246 uint16_t mng_vlan_id; 247 #endif 248 uint32_t bd_number; 249 uint32_t rx_buffer_len; 250 uint32_t wol; 251 uint32_t smartspeed; 252 uint32_t en_mng_pt; 253 uint16_t link_speed; 254 uint16_t link_duplex; 255 spinlock_t stats_lock; 256 #ifdef CONFIG_E1000_NAPI 257 spinlock_t tx_queue_lock; 258 #endif 259 atomic_t irq_sem; 260 unsigned int total_tx_bytes; 261 unsigned int total_tx_packets; 262 unsigned int total_rx_bytes; 263 unsigned int total_rx_packets; 264 /* Interrupt Throttle Rate */ 265 uint32_t itr; 266 uint32_t itr_setting; 267 uint16_t tx_itr; 268 uint16_t rx_itr; 269 270 struct work_struct reset_task; 271 uint8_t fc_autoneg; 272 273 #ifdef ETHTOOL_PHYS_ID 274 struct timer_list blink_timer; 275 unsigned long led_status; 276 #endif 277 278 /* TX */ 279 struct e1000_tx_ring *tx_ring; /* One per active queue */ 280 unsigned int restart_queue; 281 unsigned long tx_queue_len; 282 uint32_t txd_cmd; 283 uint32_t tx_int_delay; 284 uint32_t tx_abs_int_delay; 285 uint32_t gotcl; 286 uint64_t gotcl_old; 287 uint64_t tpt_old; 288 uint64_t colc_old; 289 uint32_t tx_timeout_count; 290 uint32_t tx_fifo_head; 291 uint32_t tx_head_addr; 292 uint32_t tx_fifo_size; 293 uint8_t tx_timeout_factor; 294 atomic_t tx_fifo_stall; 295 boolean_t pcix_82544; 296 boolean_t detect_tx_hung; 297 298 /* RX */ 299 #ifdef CONFIG_E1000_NAPI 300 boolean_t (*clean_rx) (struct e1000_adapter *adapter, 301 struct e1000_rx_ring *rx_ring, 302 int *work_done, int work_to_do); 303 #else 304 boolean_t (*clean_rx) (struct e1000_adapter *adapter, 305 struct e1000_rx_ring *rx_ring); 306 #endif 307 void (*alloc_rx_buf) (struct e1000_adapter *adapter, 308 struct e1000_rx_ring *rx_ring, 309 int cleaned_count); 310 struct e1000_rx_ring *rx_ring; /* One per active queue */ 311 #ifdef CONFIG_E1000_NAPI 312 struct net_device *polling_netdev; /* One per active queue */ 313 #endif 314 int num_tx_queues; 315 int num_rx_queues; 316 317 uint64_t hw_csum_err; 318 uint64_t hw_csum_good; 319 uint64_t rx_hdr_split; 320 uint32_t alloc_rx_buff_failed; 321 uint32_t rx_int_delay; 322 uint32_t rx_abs_int_delay; 323 boolean_t rx_csum; 324 unsigned int rx_ps_pages; 325 uint32_t gorcl; 326 uint64_t gorcl_old; 327 uint16_t rx_ps_bsize0; 328 329 330 /* OS defined structs */ 331 struct net_device *netdev; 332 struct pci_dev *pdev; 333 struct net_device_stats net_stats; 334 335 /* structs defined in e1000_hw.h */ 336 struct e1000_hw hw; 337 struct e1000_hw_stats stats; 338 struct e1000_phy_info phy_info; 339 struct e1000_phy_stats phy_stats; 340 341 #ifdef ETHTOOL_TEST 342 uint32_t test_icr; 343 struct e1000_tx_ring test_tx_ring; 344 struct e1000_rx_ring test_rx_ring; 345 #endif 346 347 #ifdef E1000_COUNT_ICR 348 uint64_t icr_txdw; 349 uint64_t icr_txqe; 350 uint64_t icr_lsc; 351 uint64_t icr_rxseq; 352 uint64_t icr_rxdmt; 353 uint64_t icr_rxo; 354 uint64_t icr_rxt; 355 uint64_t icr_mdac; 356 uint64_t icr_rxcfg; 357 uint64_t icr_gpi; 358 #endif 359 360 uint32_t *config_space; 361 int msg_enable; 362 /* to not mess up cache alignment, always add to the bottom */ 363 boolean_t smart_power_down; /* phy smart power down */ 364 boolean_t quad_port_a; 365 unsigned long flags; 366 uint32_t eeprom_wol; 367 boolean_t discarding; 368 }; 369 370 enum e1000_state_t { 371 __E1000_TESTING, 372 __E1000_RESETTING, 373 __E1000_DOWN 374 }; 375 #endif /* _E1000_H_ */ 376