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 #ifdef NETIF_F_HW_VLAN_TX 246 struct vlan_group *vlgrp;
257 #ifdef CONFIG_E1000_NAPI 258 spinlock_t tx_queue_lock;
261 unsigned int total_tx_bytes;
262 unsigned int total_tx_packets;
263 unsigned int total_rx_bytes;
264 unsigned int total_rx_packets;
273 #ifdef ETHTOOL_PHYS_ID 274 struct timer_list blink_timer;
275 unsigned long led_status;
279 struct e1000_tx_ring *tx_ring;
280 #ifdef CONFIG_E1000_MQ 281 struct e1000_tx_ring **cpu_tx_ring;
283 unsigned int restart_queue;
284 unsigned long tx_queue_len;
287 u32 tx_abs_int_delay;
292 u32 tx_timeout_count;
296 u8 tx_timeout_factor;
302 #ifdef CONFIG_E1000_NAPI 303 bool (*clean_rx) (
struct e1000_adapter *adapter,
304 struct e1000_rx_ring *rx_ring,
305 int *work_done,
int work_to_do);
307 bool (*clean_rx) (
struct e1000_adapter *adapter,
308 struct e1000_rx_ring *rx_ring,
311 void (*alloc_rx_buf) (
struct e1000_adapter *adapter,
312 struct e1000_rx_ring *rx_ring,
314 struct e1000_rx_ring *rx_ring;
315 #ifdef CONFIG_E1000_NAPI 324 u32 alloc_rx_buff_failed;
326 u32 rx_abs_int_delay;
328 unsigned int rx_ps_pages;
337 struct rtnet_device *netdev;
338 struct pci_dev *pdev;
339 struct net_device_stats net_stats;
341 rtdm_irq_t irq_handle;
346 struct e1000_hw_stats stats;
347 struct e1000_phy_info phy_info;
348 struct e1000_phy_stats phy_stats;
352 struct e1000_phy_regs phy_regs;
357 struct e1000_tx_ring test_tx_ring;
358 struct e1000_rx_ring test_rx_ring;
372 struct work_struct reset_task;
373 struct delayed_work watchdog_task;
374 struct delayed_work fifo_stall_task;
375 struct delayed_work phy_info_task;
378 #define E1000_FLAG_HAS_SMBUS (1 << 0) 379 #define E1000_FLAG_HAS_MANC2H (1 << 1) 380 #define E1000_FLAG_HAS_MSI (1 << 2) 381 #define E1000_FLAG_MSI_ENABLED (1 << 3) 382 #define E1000_FLAG_HAS_INTR_MODERATION (1 << 4) 383 #define E1000_FLAG_RX_NEEDS_RESTART (1 << 5) 384 #define E1000_FLAG_BAD_TX_CARRIER_STATS_FD (1 << 6) 385 #define E1000_FLAG_INT_ASSERT_AUTO_MASK (1 << 7) 386 #define E1000_FLAG_QUAD_PORT_A (1 << 8) 387 #define E1000_FLAG_SMART_POWER_DOWN (1 << 9) 389 #define E1000_FLAG_HAS_TSO (1 << 10) 391 #define E1000_FLAG_HAS_TSO6 (1 << 11) 393 #define E1000_FLAG_TSO_FORCE (1 << 12) 395 #define E1000_FLAG_RX_RESTART_NOW (1 << 13) 403 extern char e1000_driver_name[];
404 extern const char e1000_driver_version[];
406 extern void e1000_power_up_phy(
struct e1000_hw *hw);
408 extern void e1000_set_ethtool_ops(
struct net_device *netdev);
409 extern void e1000_check_options(
struct e1000_adapter *adapter);
411 extern int e1000_up(
struct e1000_adapter *adapter);
412 extern void e1000_down(
struct e1000_adapter *adapter);
413 extern void e1000_reinit_locked(
struct e1000_adapter *adapter);
414 extern void e1000_reset(
struct e1000_adapter *adapter);
415 extern int e1000_set_spd_dplx(
struct e1000_adapter *adapter, u16 spddplx);
416 extern int e1000_setup_all_rx_resources(
struct e1000_adapter *adapter);
417 extern int e1000_setup_all_tx_resources(
struct e1000_adapter *adapter);
418 extern void e1000_free_all_rx_resources(
struct e1000_adapter *adapter);
419 extern void e1000_free_all_tx_resources(
struct e1000_adapter *adapter);
420 extern void e1000_update_stats(
struct e1000_adapter *adapter);
421 #ifdef ETHTOOL_OPS_COMPAT 422 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