e1000.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:6k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*******************************************************************************
  2.   
  3.   Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
  4.   
  5.   This program is free software; you can redistribute it and/or modify it 
  6.   under the terms of the GNU General Public License as published by the Free 
  7.   Software Foundation; either version 2 of the License, or (at your option) 
  8.   any later version.
  9.   
  10.   This program is distributed in the hope that 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., 59 
  17.   Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.   
  19.   The full GNU General Public License is included in this distribution in the
  20.   file called LICENSE.
  21.   
  22.   Contact Information:
  23.   Linux NICS <linux.nics@intel.com>
  24.   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  25. *******************************************************************************/
  26. /* Linux PRO/1000 Ethernet Driver main header file */
  27. #ifndef _E1000_H_
  28. #define _E1000_H_
  29. #include <linux/stddef.h>
  30. #include <linux/config.h>
  31. #include <linux/module.h>
  32. #include <linux/types.h>
  33. #include <asm/byteorder.h>
  34. #include <linux/init.h>
  35. #include <linux/mm.h>
  36. #include <linux/errno.h>
  37. #include <linux/ioport.h>
  38. #include <linux/pci.h>
  39. #include <linux/kernel.h>
  40. #include <linux/netdevice.h>
  41. #include <linux/etherdevice.h>
  42. #include <linux/skbuff.h>
  43. #include <linux/delay.h>
  44. #include <linux/timer.h>
  45. #include <linux/slab.h>
  46. #include <linux/interrupt.h>
  47. #include <linux/string.h>
  48. #include <linux/pagemap.h>
  49. #include <asm/bitops.h>
  50. #include <asm/io.h>
  51. #include <asm/irq.h>
  52. #include <linux/capability.h>
  53. #include <linux/in.h>
  54. #include <linux/ip.h>
  55. #include <linux/tcp.h>
  56. #include <linux/udp.h>
  57. #include <net/pkt_sched.h>
  58. #include <linux/list.h>
  59. #include <linux/reboot.h>
  60. #include <linux/tqueue.h>
  61. #include <linux/ethtool.h>
  62. #include <linux/if_vlan.h>
  63. #define BAR_0 0
  64. #define BAR_1 1
  65. #define BAR_5 5
  66. #define PCI_DMA_64BIT 0xffffffffffffffffULL
  67. #define PCI_DMA_32BIT 0x00000000ffffffffULL
  68. struct e1000_adapter;
  69. #include "e1000_hw.h"
  70. #if DBG
  71. #define E1000_DBG(args...) printk(KERN_DEBUG "e1000: " args)
  72. #else
  73. #define E1000_DBG(args...)
  74. #endif
  75. #define E1000_ERR(args...) printk(KERN_ERR "e1000: " args)
  76. #define E1000_MAX_INTR 10
  77. /* Supported Rx Buffer Sizes */
  78. #define E1000_RXBUFFER_2048  2048
  79. #define E1000_RXBUFFER_4096  4096
  80. #define E1000_RXBUFFER_8192  8192
  81. #define E1000_RXBUFFER_16384 16384
  82. /* Flow Control High-Watermark: 43464 bytes */
  83. #define E1000_FC_HIGH_THRESH 0xA9C8
  84. /* Flow Control Low-Watermark: 43456 bytes */
  85. #define E1000_FC_LOW_THRESH 0xA9C0
  86. /* Flow Control Pause Time: 858 usec */
  87. #define E1000_FC_PAUSE_TIME 0x0680
  88. /* How many Tx Descriptors do we need to call netif_wake_queue ? */
  89. #define E1000_TX_QUEUE_WAKE 16
  90. /* How many Rx Buffers do we bundle into one write to the hardware ? */
  91. #define E1000_RX_BUFFER_WRITE 16
  92. #define E1000_JUMBO_PBA      0x00000028
  93. #define E1000_DEFAULT_PBA    0x00000030
  94. #define AUTO_ALL_MODES       0
  95. /* only works for sizes that are powers of 2 */
  96. #define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))
  97. /* wrapper around a pointer to a socket buffer,
  98.  * so a DMA handle can be stored along with the buffer */
  99. struct e1000_buffer {
  100. struct sk_buff *skb;
  101. uint64_t dma;
  102. unsigned long length;
  103. unsigned long time_stamp;
  104. };
  105. struct e1000_desc_ring {
  106. /* pointer to the descriptor ring memory */
  107. void *desc;
  108. /* physical address of the descriptor ring */
  109. dma_addr_t dma;
  110. /* length of descriptor ring in bytes */
  111. unsigned int size;
  112. /* number of descriptors in the ring */
  113. unsigned int count;
  114. /* next descriptor to associate a buffer with */
  115. unsigned int next_to_use;
  116. /* next descriptor to check for DD status bit */
  117. unsigned int next_to_clean;
  118. /* array of buffer information structs */
  119. struct e1000_buffer *buffer_info;
  120. };
  121. #define E1000_DESC_UNUSED(R) 
  122. ((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count))
  123. #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i]))
  124. #define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc)
  125. #define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc)
  126. #define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc)
  127. /* board specific private data structure */
  128. struct e1000_adapter {
  129. struct timer_list watchdog_timer;
  130. struct timer_list phy_info_timer;
  131. #ifdef CONFIG_PROC_FS
  132. struct list_head proc_list_head;
  133. #endif
  134. struct vlan_group *vlgrp;
  135. char *id_string;
  136. uint32_t bd_number;
  137. uint32_t rx_buffer_len;
  138. uint32_t part_num;
  139. uint32_t wol;
  140. uint16_t link_speed;
  141. uint16_t link_duplex;
  142. spinlock_t stats_lock;
  143. atomic_t irq_sem;
  144. struct tq_struct tx_timeout_task;
  145. struct timer_list blink_timer;
  146. unsigned long led_status;
  147. /* TX */
  148. struct e1000_desc_ring tx_ring;
  149. uint32_t txd_cmd;
  150. uint32_t tx_int_delay;
  151. uint32_t tx_abs_int_delay;
  152. int max_data_per_txd;
  153. /* RX */
  154. struct e1000_desc_ring rx_ring;
  155. uint64_t hw_csum_err;
  156. uint64_t hw_csum_good;
  157. uint32_t rx_int_delay;
  158. uint32_t rx_abs_int_delay;
  159. boolean_t rx_csum;
  160. /* OS defined structs */
  161. struct net_device *netdev;
  162. struct pci_dev *pdev;
  163. struct net_device_stats net_stats;
  164. /* structs defined in e1000_hw.h */
  165. struct e1000_hw hw;
  166. struct e1000_hw_stats stats;
  167. struct e1000_phy_info phy_info;
  168. struct e1000_phy_stats phy_stats;
  169. uint32_t pci_state[16];
  170. char ifname[IFNAMSIZ];
  171. };
  172. #endif /* _E1000_H_ */