atl1e.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Copyright(c) 2007 Atheros Corporation. All rights reserved.
  4. * Copyright(c) 2007 xiong huang <[email protected]>
  5. *
  6. * Derived from Intel e1000 driver
  7. * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
  8. */
  9. #ifndef _ATL1E_H_
  10. #define _ATL1E_H_
  11. #include <linux/interrupt.h>
  12. #include <linux/types.h>
  13. #include <linux/errno.h>
  14. #include <linux/module.h>
  15. #include <linux/pci.h>
  16. #include <linux/netdevice.h>
  17. #include <linux/etherdevice.h>
  18. #include <linux/skbuff.h>
  19. #include <linux/ioport.h>
  20. #include <linux/slab.h>
  21. #include <linux/list.h>
  22. #include <linux/delay.h>
  23. #include <linux/sched.h>
  24. #include <linux/in.h>
  25. #include <linux/ip.h>
  26. #include <linux/ipv6.h>
  27. #include <linux/udp.h>
  28. #include <linux/mii.h>
  29. #include <linux/io.h>
  30. #include <linux/vmalloc.h>
  31. #include <linux/pagemap.h>
  32. #include <linux/tcp.h>
  33. #include <linux/ethtool.h>
  34. #include <linux/if_vlan.h>
  35. #include <linux/workqueue.h>
  36. #include <net/checksum.h>
  37. #include <net/ip6_checksum.h>
  38. #include "atl1e_hw.h"
  39. #define PCI_REG_COMMAND 0x04 /* PCI Command Register */
  40. #define CMD_IO_SPACE 0x0001
  41. #define CMD_MEMORY_SPACE 0x0002
  42. #define CMD_BUS_MASTER 0x0004
  43. #define BAR_0 0
  44. #define BAR_1 1
  45. #define BAR_5 5
  46. /* Wake Up Filter Control */
  47. #define AT_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */
  48. #define AT_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */
  49. #define AT_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */
  50. #define AT_WUFC_MC 0x00000008 /* Multicast Wakeup Enable */
  51. #define AT_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */
  52. #define SPEED_0 0xffff
  53. #define HALF_DUPLEX 1
  54. #define FULL_DUPLEX 2
  55. /* Error Codes */
  56. #define AT_ERR_EEPROM 1
  57. #define AT_ERR_PHY 2
  58. #define AT_ERR_CONFIG 3
  59. #define AT_ERR_PARAM 4
  60. #define AT_ERR_MAC_TYPE 5
  61. #define AT_ERR_PHY_TYPE 6
  62. #define AT_ERR_PHY_SPEED 7
  63. #define AT_ERR_PHY_RES 8
  64. #define AT_ERR_TIMEOUT 9
  65. #define MAX_JUMBO_FRAME_SIZE 0x2000
  66. #define AT_VLAN_TAG_TO_TPD_TAG(_vlan, _tpd) \
  67. _tpd = (((_vlan) << (4)) | (((_vlan) >> 13) & 7) |\
  68. (((_vlan) >> 9) & 8))
  69. #define AT_TPD_TAG_TO_VLAN_TAG(_tpd, _vlan) \
  70. _vlan = (((_tpd) >> 8) | (((_tpd) & 0x77) << 9) |\
  71. (((_tdp) & 0x88) << 5))
  72. #define AT_MAX_RECEIVE_QUEUE 4
  73. #define AT_PAGE_NUM_PER_QUEUE 2
  74. #define AT_DMA_HI_ADDR_MASK 0xffffffff00000000ULL
  75. #define AT_DMA_LO_ADDR_MASK 0x00000000ffffffffULL
  76. #define AT_TX_WATCHDOG (5 * HZ)
  77. #define AT_MAX_INT_WORK 10
  78. #define AT_TWSI_EEPROM_TIMEOUT 100
  79. #define AT_HW_MAX_IDLE_DELAY 10
  80. #define AT_SUSPEND_LINK_TIMEOUT 28
  81. #define AT_REGS_LEN 75
  82. #define AT_EEPROM_LEN 512
  83. #define AT_ADV_MASK (ADVERTISE_10_HALF |\
  84. ADVERTISE_10_FULL |\
  85. ADVERTISE_100_HALF |\
  86. ADVERTISE_100_FULL |\
  87. ADVERTISE_1000_FULL)
  88. /* tpd word 2 */
  89. #define TPD_BUFLEN_MASK 0x3FFF
  90. #define TPD_BUFLEN_SHIFT 0
  91. #define TPD_DMAINT_MASK 0x0001
  92. #define TPD_DMAINT_SHIFT 14
  93. #define TPD_PKTNT_MASK 0x0001
  94. #define TPD_PKTINT_SHIFT 15
  95. #define TPD_VLANTAG_MASK 0xFFFF
  96. #define TPD_VLAN_SHIFT 16
  97. /* tpd word 3 bits 0:4 */
  98. #define TPD_EOP_MASK 0x0001
  99. #define TPD_EOP_SHIFT 0
  100. #define TPD_IP_VERSION_MASK 0x0001
  101. #define TPD_IP_VERSION_SHIFT 1 /* 0 : IPV4, 1 : IPV6 */
  102. #define TPD_INS_VL_TAG_MASK 0x0001
  103. #define TPD_INS_VL_TAG_SHIFT 2
  104. #define TPD_CC_SEGMENT_EN_MASK 0x0001
  105. #define TPD_CC_SEGMENT_EN_SHIFT 3
  106. #define TPD_SEGMENT_EN_MASK 0x0001
  107. #define TPD_SEGMENT_EN_SHIFT 4
  108. /* tdp word 3 bits 5:7 if ip version is 0 */
  109. #define TPD_IP_CSUM_MASK 0x0001
  110. #define TPD_IP_CSUM_SHIFT 5
  111. #define TPD_TCP_CSUM_MASK 0x0001
  112. #define TPD_TCP_CSUM_SHIFT 6
  113. #define TPD_UDP_CSUM_MASK 0x0001
  114. #define TPD_UDP_CSUM_SHIFT 7
  115. /* tdp word 3 bits 5:7 if ip version is 1 */
  116. #define TPD_V6_IPHLLO_MASK 0x0007
  117. #define TPD_V6_IPHLLO_SHIFT 7
  118. /* tpd word 3 bits 8:9 bit */
  119. #define TPD_VL_TAGGED_MASK 0x0001
  120. #define TPD_VL_TAGGED_SHIFT 8
  121. #define TPD_ETHTYPE_MASK 0x0001
  122. #define TPD_ETHTYPE_SHIFT 9
  123. /* tdp word 3 bits 10:13 if ip version is 0 */
  124. #define TDP_V4_IPHL_MASK 0x000F
  125. #define TPD_V4_IPHL_SHIFT 10
  126. /* tdp word 3 bits 10:13 if ip version is 1 */
  127. #define TPD_V6_IPHLHI_MASK 0x000F
  128. #define TPD_V6_IPHLHI_SHIFT 10
  129. /* tpd word 3 bit 14:31 if segment enabled */
  130. #define TPD_TCPHDRLEN_MASK 0x000F
  131. #define TPD_TCPHDRLEN_SHIFT 14
  132. #define TPD_HDRFLAG_MASK 0x0001
  133. #define TPD_HDRFLAG_SHIFT 18
  134. #define TPD_MSS_MASK 0x1FFF
  135. #define TPD_MSS_SHIFT 19
  136. /* tdp word 3 bit 16:31 if custom csum enabled */
  137. #define TPD_PLOADOFFSET_MASK 0x00FF
  138. #define TPD_PLOADOFFSET_SHIFT 16
  139. #define TPD_CCSUMOFFSET_MASK 0x00FF
  140. #define TPD_CCSUMOFFSET_SHIFT 24
  141. struct atl1e_tpd_desc {
  142. __le64 buffer_addr;
  143. __le32 word2;
  144. __le32 word3;
  145. };
  146. /* how about 0x2000 */
  147. #define MAX_TX_BUF_LEN 0x2000
  148. #define MAX_TX_BUF_SHIFT 13
  149. #define MAX_TSO_SEG_SIZE 0x3c00
  150. /* rrs word 1 bit 0:31 */
  151. #define RRS_RX_CSUM_MASK 0xFFFF
  152. #define RRS_RX_CSUM_SHIFT 0
  153. #define RRS_PKT_SIZE_MASK 0x3FFF
  154. #define RRS_PKT_SIZE_SHIFT 16
  155. #define RRS_CPU_NUM_MASK 0x0003
  156. #define RRS_CPU_NUM_SHIFT 30
  157. #define RRS_IS_RSS_IPV4 0x0001
  158. #define RRS_IS_RSS_IPV4_TCP 0x0002
  159. #define RRS_IS_RSS_IPV6 0x0004
  160. #define RRS_IS_RSS_IPV6_TCP 0x0008
  161. #define RRS_IS_IPV6 0x0010
  162. #define RRS_IS_IP_FRAG 0x0020
  163. #define RRS_IS_IP_DF 0x0040
  164. #define RRS_IS_802_3 0x0080
  165. #define RRS_IS_VLAN_TAG 0x0100
  166. #define RRS_IS_ERR_FRAME 0x0200
  167. #define RRS_IS_IPV4 0x0400
  168. #define RRS_IS_UDP 0x0800
  169. #define RRS_IS_TCP 0x1000
  170. #define RRS_IS_BCAST 0x2000
  171. #define RRS_IS_MCAST 0x4000
  172. #define RRS_IS_PAUSE 0x8000
  173. #define RRS_ERR_BAD_CRC 0x0001
  174. #define RRS_ERR_CODE 0x0002
  175. #define RRS_ERR_DRIBBLE 0x0004
  176. #define RRS_ERR_RUNT 0x0008
  177. #define RRS_ERR_RX_OVERFLOW 0x0010
  178. #define RRS_ERR_TRUNC 0x0020
  179. #define RRS_ERR_IP_CSUM 0x0040
  180. #define RRS_ERR_L4_CSUM 0x0080
  181. #define RRS_ERR_LENGTH 0x0100
  182. #define RRS_ERR_DES_ADDR 0x0200
  183. struct atl1e_recv_ret_status {
  184. u16 seq_num;
  185. u16 hash_lo;
  186. __le32 word1;
  187. u16 pkt_flag;
  188. u16 err_flag;
  189. u16 hash_hi;
  190. u16 vtag;
  191. };
  192. enum atl1e_dma_req_block {
  193. atl1e_dma_req_128 = 0,
  194. atl1e_dma_req_256 = 1,
  195. atl1e_dma_req_512 = 2,
  196. atl1e_dma_req_1024 = 3,
  197. atl1e_dma_req_2048 = 4,
  198. atl1e_dma_req_4096 = 5
  199. };
  200. enum atl1e_rrs_type {
  201. atl1e_rrs_disable = 0,
  202. atl1e_rrs_ipv4 = 1,
  203. atl1e_rrs_ipv4_tcp = 2,
  204. atl1e_rrs_ipv6 = 4,
  205. atl1e_rrs_ipv6_tcp = 8
  206. };
  207. enum atl1e_nic_type {
  208. athr_l1e = 0,
  209. athr_l2e_revA = 1,
  210. athr_l2e_revB = 2
  211. };
  212. struct atl1e_hw_stats {
  213. /* rx */
  214. unsigned long rx_ok; /* The number of good packet received. */
  215. unsigned long rx_bcast; /* The number of good broadcast packet received. */
  216. unsigned long rx_mcast; /* The number of good multicast packet received. */
  217. unsigned long rx_pause; /* The number of Pause packet received. */
  218. unsigned long rx_ctrl; /* The number of Control packet received other than Pause frame. */
  219. unsigned long rx_fcs_err; /* The number of packets with bad FCS. */
  220. unsigned long rx_len_err; /* The number of packets with mismatch of length field and actual size. */
  221. unsigned long rx_byte_cnt; /* The number of bytes of good packet received. FCS is NOT included. */
  222. unsigned long rx_runt; /* The number of packets received that are less than 64 byte long and with good FCS. */
  223. unsigned long rx_frag; /* The number of packets received that are less than 64 byte long and with bad FCS. */
  224. unsigned long rx_sz_64; /* The number of good and bad packets received that are 64 byte long. */
  225. unsigned long rx_sz_65_127; /* The number of good and bad packets received that are between 65 and 127-byte long. */
  226. unsigned long rx_sz_128_255; /* The number of good and bad packets received that are between 128 and 255-byte long. */
  227. unsigned long rx_sz_256_511; /* The number of good and bad packets received that are between 256 and 511-byte long. */
  228. unsigned long rx_sz_512_1023; /* The number of good and bad packets received that are between 512 and 1023-byte long. */
  229. unsigned long rx_sz_1024_1518; /* The number of good and bad packets received that are between 1024 and 1518-byte long. */
  230. unsigned long rx_sz_1519_max; /* The number of good and bad packets received that are between 1519-byte and MTU. */
  231. unsigned long rx_sz_ov; /* The number of good and bad packets received that are more than MTU size truncated by Selene. */
  232. unsigned long rx_rxf_ov; /* The number of frame dropped due to occurrence of RX FIFO overflow. */
  233. unsigned long rx_rrd_ov; /* The number of frame dropped due to occurrence of RRD overflow. */
  234. unsigned long rx_align_err; /* Alignment Error */
  235. unsigned long rx_bcast_byte_cnt; /* The byte count of broadcast packet received, excluding FCS. */
  236. unsigned long rx_mcast_byte_cnt; /* The byte count of multicast packet received, excluding FCS. */
  237. unsigned long rx_err_addr; /* The number of packets dropped due to address filtering. */
  238. /* tx */
  239. unsigned long tx_ok; /* The number of good packet transmitted. */
  240. unsigned long tx_bcast; /* The number of good broadcast packet transmitted. */
  241. unsigned long tx_mcast; /* The number of good multicast packet transmitted. */
  242. unsigned long tx_pause; /* The number of Pause packet transmitted. */
  243. unsigned long tx_exc_defer; /* The number of packets transmitted with excessive deferral. */
  244. unsigned long tx_ctrl; /* The number of packets transmitted is a control frame, excluding Pause frame. */
  245. unsigned long tx_defer; /* The number of packets transmitted that is deferred. */
  246. unsigned long tx_byte_cnt; /* The number of bytes of data transmitted. FCS is NOT included. */
  247. unsigned long tx_sz_64; /* The number of good and bad packets transmitted that are 64 byte long. */
  248. unsigned long tx_sz_65_127; /* The number of good and bad packets transmitted that are between 65 and 127-byte long. */
  249. unsigned long tx_sz_128_255; /* The number of good and bad packets transmitted that are between 128 and 255-byte long. */
  250. unsigned long tx_sz_256_511; /* The number of good and bad packets transmitted that are between 256 and 511-byte long. */
  251. unsigned long tx_sz_512_1023; /* The number of good and bad packets transmitted that are between 512 and 1023-byte long. */
  252. unsigned long tx_sz_1024_1518; /* The number of good and bad packets transmitted that are between 1024 and 1518-byte long. */
  253. unsigned long tx_sz_1519_max; /* The number of good and bad packets transmitted that are between 1519-byte and MTU. */
  254. unsigned long tx_1_col; /* The number of packets subsequently transmitted successfully with a single prior collision. */
  255. unsigned long tx_2_col; /* The number of packets subsequently transmitted successfully with multiple prior collisions. */
  256. unsigned long tx_late_col; /* The number of packets transmitted with late collisions. */
  257. unsigned long tx_abort_col; /* The number of transmit packets aborted due to excessive collisions. */
  258. unsigned long tx_underrun; /* The number of transmit packets aborted due to transmit FIFO underrun, or TRD FIFO underrun */
  259. unsigned long tx_rd_eop; /* The number of times that read beyond the EOP into the next frame area when TRD was not written timely */
  260. unsigned long tx_len_err; /* The number of transmit packets with length field does NOT match the actual frame size. */
  261. unsigned long tx_trunc; /* The number of transmit packets truncated due to size exceeding MTU. */
  262. unsigned long tx_bcast_byte; /* The byte count of broadcast packet transmitted, excluding FCS. */
  263. unsigned long tx_mcast_byte; /* The byte count of multicast packet transmitted, excluding FCS. */
  264. };
  265. struct atl1e_hw {
  266. u8 __iomem *hw_addr; /* inner register address */
  267. resource_size_t mem_rang;
  268. struct atl1e_adapter *adapter;
  269. enum atl1e_nic_type nic_type;
  270. u16 device_id;
  271. u16 vendor_id;
  272. u16 subsystem_id;
  273. u16 subsystem_vendor_id;
  274. u8 revision_id;
  275. u16 pci_cmd_word;
  276. u8 mac_addr[ETH_ALEN];
  277. u8 perm_mac_addr[ETH_ALEN];
  278. u8 preamble_len;
  279. u16 max_frame_size;
  280. u16 rx_jumbo_th;
  281. u16 tx_jumbo_th;
  282. u16 media_type;
  283. #define MEDIA_TYPE_AUTO_SENSOR 0
  284. #define MEDIA_TYPE_100M_FULL 1
  285. #define MEDIA_TYPE_100M_HALF 2
  286. #define MEDIA_TYPE_10M_FULL 3
  287. #define MEDIA_TYPE_10M_HALF 4
  288. u16 autoneg_advertised;
  289. #define ADVERTISE_10_HALF 0x0001
  290. #define ADVERTISE_10_FULL 0x0002
  291. #define ADVERTISE_100_HALF 0x0004
  292. #define ADVERTISE_100_FULL 0x0008
  293. #define ADVERTISE_1000_HALF 0x0010 /* Not used, just FYI */
  294. #define ADVERTISE_1000_FULL 0x0020
  295. u16 mii_autoneg_adv_reg;
  296. u16 mii_1000t_ctrl_reg;
  297. u16 imt; /* Interrupt Moderator timer ( 2us resolution) */
  298. u16 ict; /* Interrupt Clear timer (2us resolution) */
  299. u32 smb_timer;
  300. u16 rrd_thresh; /* Threshold of number of RRD produced to trigger
  301. interrupt request */
  302. u16 tpd_thresh;
  303. u16 rx_count_down; /* 2us resolution */
  304. u16 tx_count_down;
  305. u8 tpd_burst; /* Number of TPD to prefetch in cache-aligned burst. */
  306. enum atl1e_rrs_type rrs_type;
  307. u32 base_cpu;
  308. u32 indirect_tab;
  309. enum atl1e_dma_req_block dmar_block;
  310. enum atl1e_dma_req_block dmaw_block;
  311. u8 dmaw_dly_cnt;
  312. u8 dmar_dly_cnt;
  313. bool phy_configured;
  314. bool re_autoneg;
  315. bool emi_ca;
  316. };
  317. /*
  318. * wrapper around a pointer to a socket buffer,
  319. * so a DMA handle can be stored along with the buffer
  320. */
  321. struct atl1e_tx_buffer {
  322. struct sk_buff *skb;
  323. u16 flags;
  324. #define ATL1E_TX_PCIMAP_SINGLE 0x0001
  325. #define ATL1E_TX_PCIMAP_PAGE 0x0002
  326. #define ATL1E_TX_PCIMAP_TYPE_MASK 0x0003
  327. u16 length;
  328. dma_addr_t dma;
  329. };
  330. #define ATL1E_SET_PCIMAP_TYPE(tx_buff, type) do { \
  331. ((tx_buff)->flags) &= ~ATL1E_TX_PCIMAP_TYPE_MASK; \
  332. ((tx_buff)->flags) |= (type); \
  333. } while (0)
  334. struct atl1e_rx_page {
  335. dma_addr_t dma; /* receive rage DMA address */
  336. u8 *addr; /* receive rage virtual address */
  337. dma_addr_t write_offset_dma; /* the DMA address which contain the
  338. receive data offset in the page */
  339. u32 *write_offset_addr; /* the virtaul address which contain
  340. the receive data offset in the page */
  341. u32 read_offset; /* the offset where we have read */
  342. };
  343. struct atl1e_rx_page_desc {
  344. struct atl1e_rx_page rx_page[AT_PAGE_NUM_PER_QUEUE];
  345. u8 rx_using;
  346. u16 rx_nxseq;
  347. };
  348. /* transmit packet descriptor (tpd) ring */
  349. struct atl1e_tx_ring {
  350. struct atl1e_tpd_desc *desc; /* descriptor ring virtual address */
  351. dma_addr_t dma; /* descriptor ring physical address */
  352. u16 count; /* the count of transmit rings */
  353. rwlock_t tx_lock;
  354. u16 next_to_use;
  355. atomic_t next_to_clean;
  356. struct atl1e_tx_buffer *tx_buffer;
  357. dma_addr_t cmb_dma;
  358. u32 *cmb;
  359. };
  360. /* receive packet descriptor ring */
  361. struct atl1e_rx_ring {
  362. void *desc;
  363. dma_addr_t dma;
  364. int size;
  365. u32 page_size; /* bytes length of rxf page */
  366. u32 real_page_size; /* real_page_size = page_size + jumbo + aliagn */
  367. struct atl1e_rx_page_desc rx_page_desc[AT_MAX_RECEIVE_QUEUE];
  368. };
  369. /* board specific private data structure */
  370. struct atl1e_adapter {
  371. struct net_device *netdev;
  372. struct pci_dev *pdev;
  373. struct napi_struct napi;
  374. struct mii_if_info mii; /* MII interface info */
  375. struct atl1e_hw hw;
  376. struct atl1e_hw_stats hw_stats;
  377. u32 wol;
  378. u16 link_speed;
  379. u16 link_duplex;
  380. spinlock_t mdio_lock;
  381. atomic_t irq_sem;
  382. struct work_struct reset_task;
  383. struct work_struct link_chg_task;
  384. struct timer_list watchdog_timer;
  385. struct timer_list phy_config_timer;
  386. /* All Descriptor memory */
  387. dma_addr_t ring_dma;
  388. void *ring_vir_addr;
  389. u32 ring_size;
  390. struct atl1e_tx_ring tx_ring;
  391. struct atl1e_rx_ring rx_ring;
  392. int num_rx_queues;
  393. unsigned long flags;
  394. #define __AT_TESTING 0x0001
  395. #define __AT_RESETTING 0x0002
  396. #define __AT_DOWN 0x0003
  397. u32 bd_number; /* board number;*/
  398. u32 pci_state[16];
  399. u32 *config_space;
  400. };
  401. #define AT_WRITE_REG(a, reg, value) ( \
  402. writel((value), ((a)->hw_addr + reg)))
  403. #define AT_WRITE_FLUSH(a) (\
  404. readl((a)->hw_addr))
  405. #define AT_READ_REG(a, reg) ( \
  406. readl((a)->hw_addr + reg))
  407. #define AT_WRITE_REGB(a, reg, value) (\
  408. writeb((value), ((a)->hw_addr + reg)))
  409. #define AT_READ_REGB(a, reg) (\
  410. readb((a)->hw_addr + reg))
  411. #define AT_WRITE_REGW(a, reg, value) (\
  412. writew((value), ((a)->hw_addr + reg)))
  413. #define AT_READ_REGW(a, reg) (\
  414. readw((a)->hw_addr + reg))
  415. #define AT_WRITE_REG_ARRAY(a, reg, offset, value) ( \
  416. writel((value), (((a)->hw_addr + reg) + ((offset) << 2))))
  417. #define AT_READ_REG_ARRAY(a, reg, offset) ( \
  418. readl(((a)->hw_addr + reg) + ((offset) << 2)))
  419. extern char atl1e_driver_name[];
  420. void atl1e_check_options(struct atl1e_adapter *adapter);
  421. int atl1e_up(struct atl1e_adapter *adapter);
  422. void atl1e_down(struct atl1e_adapter *adapter);
  423. void atl1e_reinit_locked(struct atl1e_adapter *adapter);
  424. s32 atl1e_reset_hw(struct atl1e_hw *hw);
  425. void atl1e_set_ethtool_ops(struct net_device *netdev);
  426. #endif /* _ATL1_E_H_ */