37 #include "e1000_api.h" 43 #define INTEL_E1000_ETHERNET_DEVICE(device_id) {\ 44 PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)} 48 #define E1000_DBG(args...) 50 #define E1000_ERR(args...) printk(KERN_ERR "e1000: " args) 53 #define DPRINTK(nlevel, klevel, fmt, args...) \ 54 (void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \ 55 printk(KERN_##klevel PFX "%s: %s: " fmt, adapter->netdev->name, \ 56 __FUNCTION__ , ## args)) 58 #define E1000_MAX_INTR 10 61 #define E1000_DEFAULT_TXD 256 62 #define E1000_MAX_TXD 256 63 #define E1000_MIN_TXD 80 64 #define E1000_MAX_82544_TXD 4096 66 #define E1000_DEFAULT_RXD 256 67 #define E1000_MAX_RXD 256 69 #define E1000_MIN_RXD 80 70 #define E1000_MAX_82544_RXD 4096 72 #define E1000_MIN_ITR_USECS 10 73 #define E1000_MAX_ITR_USECS 10000 75 #ifdef CONFIG_E1000_MQ 76 #define E1000_MAX_TX_QUEUES 4 80 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522 83 #define E1000_RXBUFFER_128 128 84 #define E1000_RXBUFFER_256 256 85 #define E1000_RXBUFFER_512 512 86 #define E1000_RXBUFFER_1024 1024 87 #define E1000_RXBUFFER_2048 2048 88 #define E1000_RXBUFFER_4096 4096 89 #define E1000_RXBUFFER_8192 8192 90 #define E1000_RXBUFFER_16384 16384 93 #define E1000_SMARTSPEED_DOWNSHIFT 3 94 #define E1000_SMARTSPEED_MAX 15 97 #define E1000_PBA_BYTES_SHIFT 0xA 98 #define E1000_TX_HEAD_ADDR_SHIFT 7 99 #define E1000_PBA_TX_MASK 0xFFFF0000 102 #define E1000_ERT_2048 0x100 104 #define E1000_FC_PAUSE_TIME 0x0680 107 #define E1000_TX_QUEUE_WAKE 16 109 #define E1000_RX_BUFFER_WRITE 16 111 #define AUTO_ALL_MODES 0 112 #define E1000_EEPROM_82544_APM 0x0004 113 #define E1000_EEPROM_APME 0x0400 115 #ifndef E1000_MASTER_SLAVE 117 #define E1000_MASTER_SLAVE e1000_ms_hw_default 120 #ifdef NETIF_F_HW_VLAN_TX 121 #define E1000_MNG_VLAN_NONE -1 124 #define PS_PAGE_BUFFERS MAX_PS_BUFFERS-1 128 struct e1000_buffer {
131 unsigned long time_stamp;
136 struct e1000_rx_buffer {
142 #ifdef CONFIG_E1000_MQ 143 struct e1000_queue_stats {
149 struct e1000_ps_page {
struct page *ps_page[PS_PAGE_BUFFERS]; };
150 struct e1000_ps_page_dma { u64 ps_page_dma[PS_PAGE_BUFFERS]; };
152 struct e1000_tx_ring {
162 unsigned int next_to_use;
164 unsigned int next_to_clean;
166 struct e1000_buffer *buffer_info;
168 #ifdef CONFIG_E1000_MQ 170 spinlock_t tx_queue_lock;
175 #ifdef CONFIG_E1000_MQ 176 struct e1000_queue_stats tx_stats;
181 struct e1000_rx_ring {
182 struct e1000_adapter *adapter;
192 unsigned int next_to_use;
194 unsigned int next_to_clean;
195 #ifdef CONFIG_E1000_NAPI 196 struct napi_struct napi;
199 struct e1000_rx_buffer *buffer_info;
201 struct e1000_ps_page *ps_page;
202 struct e1000_ps_page_dma *ps_page_dma;
203 struct sk_buff *rx_skb_top;
210 #ifdef CONFIG_E1000_MQ 211 struct e1000_queue_stats rx_stats;
215 #define E1000_DESC_UNUSED(R) \ 216 ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \ 217 (R)->next_to_clean - (R)->next_to_use - 1) 219 #define E1000_RX_DESC_PS(R, i) \ 220 (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) 221 #define E1000_RX_DESC_EXT(R, i) \ 222 (&(((union e1000_rx_desc_extended *)((R).desc))[i])) 223 #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i])) 224 #define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc) 225 #define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc) 226 #define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc) 230 struct e1000_phy_regs {
244 struct e1000_adapter {
245 struct timer_list tx_fifo_stall_timer;
246 struct timer_list watchdog_timer;
247 struct timer_list phy_info_timer;
248 #ifdef NETIF_F_HW_VLAN_TX 249 struct vlan_group *vlgrp;
260 #ifdef CONFIG_E1000_NAPI 261 spinlock_t tx_queue_lock;
264 unsigned int total_tx_bytes;
265 unsigned int total_tx_packets;
266 unsigned int total_rx_bytes;
267 unsigned int total_rx_packets;
274 struct work_struct reset_task;
275 struct work_struct watchdog_task;
278 #ifdef ETHTOOL_PHYS_ID 279 struct timer_list blink_timer;
280 unsigned long led_status;
284 struct e1000_tx_ring *tx_ring;
285 #ifdef CONFIG_E1000_MQ 286 struct e1000_tx_ring **cpu_tx_ring;
288 unsigned int restart_queue;
289 unsigned long tx_queue_len;
292 u32 tx_abs_int_delay;
297 u32 tx_timeout_count;
301 u8 tx_timeout_factor;
307 #ifdef CONFIG_E1000_NAPI 308 bool (*clean_rx) (
struct e1000_adapter *adapter,
309 struct e1000_rx_ring *rx_ring,
310 int *work_done,
int work_to_do);
312 bool (*clean_rx) (
struct e1000_adapter *adapter,
313 struct e1000_rx_ring *rx_ring,
316 void (*alloc_rx_buf) (
struct e1000_adapter *adapter,
317 struct e1000_rx_ring *rx_ring,
319 struct e1000_rx_ring *rx_ring;
320 #ifdef CONFIG_E1000_NAPI 329 u32 alloc_rx_buff_failed;
331 u32 rx_abs_int_delay;
333 unsigned int rx_ps_pages;
342 struct rtnet_device *netdev;
343 struct pci_dev *pdev;
344 struct net_device_stats net_stats;
346 rtdm_irq_t irq_handle;
351 struct e1000_hw_stats stats;
352 struct e1000_phy_info phy_info;
353 struct e1000_phy_stats phy_stats;
357 struct e1000_phy_regs phy_regs;
362 struct e1000_tx_ring test_tx_ring;
363 struct e1000_rx_ring test_rx_ring;
379 #define E1000_FLAG_HAS_SMBUS (1 << 0) 380 #define E1000_FLAG_HAS_MANC2H (1 << 1) 381 #define E1000_FLAG_HAS_MSI (1 << 2) 382 #define E1000_FLAG_MSI_ENABLED (1 << 3) 383 #define E1000_FLAG_HAS_INTR_MODERATION (1 << 4) 384 #define E1000_FLAG_RX_NEEDS_RESTART (1 << 5) 385 #define E1000_FLAG_BAD_TX_CARRIER_STATS_FD (1 << 6) 386 #define E1000_FLAG_INT_ASSERT_AUTO_MASK (1 << 7) 387 #define E1000_FLAG_QUAD_PORT_A (1 << 8) 388 #define E1000_FLAG_SMART_POWER_DOWN (1 << 9) 390 #define E1000_FLAG_HAS_TSO (1 << 10) 392 #define E1000_FLAG_HAS_TSO6 (1 << 11) 394 #define E1000_FLAG_TSO_FORCE (1 << 12) 396 #define E1000_FLAG_RX_RESTART_NOW (1 << 13) 404 extern char e1000_driver_name[];
405 extern const char e1000_driver_version[];
407 extern void e1000_power_up_phy(
struct e1000_hw *hw);
409 extern void e1000_set_ethtool_ops(
struct net_device *netdev);
410 extern void e1000_check_options(
struct e1000_adapter *adapter);
412 extern int e1000_up(
struct e1000_adapter *adapter);
413 extern void e1000_down(
struct e1000_adapter *adapter);
414 extern void e1000_reinit_locked(
struct e1000_adapter *adapter);
415 extern void e1000_reset(
struct e1000_adapter *adapter);
416 extern int e1000_set_spd_dplx(
struct e1000_adapter *adapter, u16 spddplx);
417 extern int e1000_setup_all_rx_resources(
struct e1000_adapter *adapter);
418 extern int e1000_setup_all_tx_resources(
struct e1000_adapter *adapter);
419 extern void e1000_free_all_rx_resources(
struct e1000_adapter *adapter);
420 extern void e1000_free_all_tx_resources(
struct e1000_adapter *adapter);
421 extern void e1000_update_stats(
struct e1000_adapter *adapter);
422 #ifdef ETHTOOL_OPS_COMPAT 423 extern int ethtool_ioctl(
struct ifreq *ifr);
ipipe_spinlock_t rtdm_lock_t
Lock variable.
Definition: driver.h:551
uint64_t nanosecs_abs_t
RTDM type for representing absolute dates.
Definition: rtdm.h:43
Copyright © 2011 Gilles Chanteperdrix gilles.chanteperdrix@xenomai.org.
Definition: atomic.h:24