1 /*******************************************************************************
3 Intel PRO/1000 Linux driver
4 Copyright(c) 1999 - 2007 Intel Corporation.
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.
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
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.
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
25 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
27 *******************************************************************************/
29 #include <linux/module.h>
30 #include <linux/types.h>
31 #include <linux/init.h>
32 #include <linux/pci.h>
33 #include <linux/vmalloc.h>
34 #include <linux/pagemap.h>
35 #include <linux/delay.h>
36 #include <linux/netdevice.h>
37 #include <linux/tcp.h>
38 #include <linux/ipv6.h>
39 #include <net/checksum.h>
40 #include <net/ip6_checksum.h>
41 #include <linux/mii.h>
42 #include <linux/ethtool.h>
43 #include <linux/if_vlan.h>
44 #include <linux/cpu.h>
45 #include <linux/smp.h>
49 #define DRV_VERSION "0.2.0"
50 char e1000e_driver_name[] = "e1000e";
51 const char e1000e_driver_version[] = DRV_VERSION;
53 static const struct e1000_info *e1000_info_tbl[] = {
54 [board_82571] = &e1000_82571_info,
55 [board_82572] = &e1000_82572_info,
56 [board_82573] = &e1000_82573_info,
57 [board_80003es2lan] = &e1000_es2_info,
58 [board_ich8lan] = &e1000_ich8_info,
59 [board_ich9lan] = &e1000_ich9_info,
64 * e1000_get_hw_dev_name - return device name string
65 * used by hardware layer to print debugging information
67 char *e1000e_get_hw_dev_name(struct e1000_hw *hw)
69 return hw->adapter->netdev->name;
74 * e1000_desc_unused - calculate if we have unused descriptors
76 static int e1000_desc_unused(struct e1000_ring *ring)
78 if (ring->next_to_clean > ring->next_to_use)
79 return ring->next_to_clean - ring->next_to_use - 1;
81 return ring->count + ring->next_to_clean - ring->next_to_use - 1;
85 * e1000_receive_skb - helper function to handle rx indications
86 * @adapter: board private structure
87 * @status: descriptor status field as written by hardware
88 * @vlan: descriptor vlan field as written by hardware (no le/be conversion)
89 * @skb: pointer to sk_buff to be indicated to stack
91 static void e1000_receive_skb(struct e1000_adapter *adapter,
92 struct net_device *netdev,
96 skb->protocol = eth_type_trans(skb, netdev);
98 if (adapter->vlgrp && (status & E1000_RXD_STAT_VP))
99 vlan_hwaccel_receive_skb(skb, adapter->vlgrp,
101 E1000_RXD_SPC_VLAN_MASK);
103 netif_receive_skb(skb);
105 netdev->last_rx = jiffies;
109 * e1000_rx_checksum - Receive Checksum Offload for 82543
110 * @adapter: board private structure
111 * @status_err: receive descriptor status and error fields
112 * @csum: receive descriptor csum field
113 * @sk_buff: socket buffer with received data
115 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err,
116 u32 csum, struct sk_buff *skb)
118 u16 status = (u16)status_err;
119 u8 errors = (u8)(status_err >> 24);
120 skb->ip_summed = CHECKSUM_NONE;
122 /* Ignore Checksum bit is set */
123 if (status & E1000_RXD_STAT_IXSM)
125 /* TCP/UDP checksum error bit is set */
126 if (errors & E1000_RXD_ERR_TCPE) {
127 /* let the stack verify checksum errors */
128 adapter->hw_csum_err++;
132 /* TCP/UDP Checksum has not been calculated */
133 if (!(status & (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_UDPCS)))
136 /* It must be a TCP or UDP packet with a valid checksum */
137 if (status & E1000_RXD_STAT_TCPCS) {
138 /* TCP checksum is good */
139 skb->ip_summed = CHECKSUM_UNNECESSARY;
141 /* IP fragment with UDP payload */
142 /* Hardware complements the payload checksum, so we undo it
143 * and then put the value in host order for further stack use.
145 csum = ntohl(csum ^ 0xFFFF);
147 skb->ip_summed = CHECKSUM_COMPLETE;
149 adapter->hw_csum_good++;
153 * e1000_alloc_rx_buffers - Replace used receive buffers; legacy & extended
154 * @adapter: address of board private structure
156 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
159 struct net_device *netdev = adapter->netdev;
160 struct pci_dev *pdev = adapter->pdev;
161 struct e1000_ring *rx_ring = adapter->rx_ring;
162 struct e1000_rx_desc *rx_desc;
163 struct e1000_buffer *buffer_info;
166 unsigned int bufsz = adapter->rx_buffer_len + NET_IP_ALIGN;
168 i = rx_ring->next_to_use;
169 buffer_info = &rx_ring->buffer_info[i];
171 while (cleaned_count--) {
172 skb = buffer_info->skb;
178 skb = netdev_alloc_skb(netdev, bufsz);
180 /* Better luck next round */
181 adapter->alloc_rx_buff_failed++;
185 /* Make buffer alignment 2 beyond a 16 byte boundary
186 * this will result in a 16 byte aligned IP header after
187 * the 14 byte MAC header is removed
189 skb_reserve(skb, NET_IP_ALIGN);
191 buffer_info->skb = skb;
193 buffer_info->dma = pci_map_single(pdev, skb->data,
194 adapter->rx_buffer_len,
196 if (pci_dma_mapping_error(buffer_info->dma)) {
197 dev_err(&pdev->dev, "RX DMA map failed\n");
198 adapter->rx_dma_failed++;
202 rx_desc = E1000_RX_DESC(*rx_ring, i);
203 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
206 if (i == rx_ring->count)
208 buffer_info = &rx_ring->buffer_info[i];
211 if (rx_ring->next_to_use != i) {
212 rx_ring->next_to_use = i;
214 i = (rx_ring->count - 1);
216 /* Force memory writes to complete before letting h/w
217 * know there are new descriptors to fetch. (Only
218 * applicable for weak-ordered memory model archs,
221 writel(i, adapter->hw.hw_addr + rx_ring->tail);
226 * e1000_alloc_rx_buffers_ps - Replace used receive buffers; packet split
227 * @adapter: address of board private structure
229 static void e1000_alloc_rx_buffers_ps(struct e1000_adapter *adapter,
232 struct net_device *netdev = adapter->netdev;
233 struct pci_dev *pdev = adapter->pdev;
234 union e1000_rx_desc_packet_split *rx_desc;
235 struct e1000_ring *rx_ring = adapter->rx_ring;
236 struct e1000_buffer *buffer_info;
237 struct e1000_ps_page *ps_page;
241 i = rx_ring->next_to_use;
242 buffer_info = &rx_ring->buffer_info[i];
244 while (cleaned_count--) {
245 rx_desc = E1000_RX_DESC_PS(*rx_ring, i);
247 for (j = 0; j < PS_PAGE_BUFFERS; j++) {
248 ps_page = &buffer_info->ps_pages[j];
249 if (j >= adapter->rx_ps_pages) {
250 /* all unused desc entries get hw null ptr */
251 rx_desc->read.buffer_addr[j+1] = ~0;
254 if (!ps_page->page) {
255 ps_page->page = alloc_page(GFP_ATOMIC);
256 if (!ps_page->page) {
257 adapter->alloc_rx_buff_failed++;
260 ps_page->dma = pci_map_page(pdev,
264 if (pci_dma_mapping_error(ps_page->dma)) {
265 dev_err(&adapter->pdev->dev,
266 "RX DMA page map failed\n");
267 adapter->rx_dma_failed++;
272 * Refresh the desc even if buffer_addrs
273 * didn't change because each write-back
276 rx_desc->read.buffer_addr[j+1] =
277 cpu_to_le64(ps_page->dma);
280 skb = netdev_alloc_skb(netdev,
281 adapter->rx_ps_bsize0 + NET_IP_ALIGN);
284 adapter->alloc_rx_buff_failed++;
288 /* Make buffer alignment 2 beyond a 16 byte boundary
289 * this will result in a 16 byte aligned IP header after
290 * the 14 byte MAC header is removed
292 skb_reserve(skb, NET_IP_ALIGN);
294 buffer_info->skb = skb;
295 buffer_info->dma = pci_map_single(pdev, skb->data,
296 adapter->rx_ps_bsize0,
298 if (pci_dma_mapping_error(buffer_info->dma)) {
299 dev_err(&pdev->dev, "RX DMA map failed\n");
300 adapter->rx_dma_failed++;
302 dev_kfree_skb_any(skb);
303 buffer_info->skb = NULL;
307 rx_desc->read.buffer_addr[0] = cpu_to_le64(buffer_info->dma);
310 if (i == rx_ring->count)
312 buffer_info = &rx_ring->buffer_info[i];
316 if (rx_ring->next_to_use != i) {
317 rx_ring->next_to_use = i;
320 i = (rx_ring->count - 1);
322 /* Force memory writes to complete before letting h/w
323 * know there are new descriptors to fetch. (Only
324 * applicable for weak-ordered memory model archs,
327 /* Hardware increments by 16 bytes, but packet split
328 * descriptors are 32 bytes...so we increment tail
331 writel(i<<1, adapter->hw.hw_addr + rx_ring->tail);
336 * e1000_clean_rx_irq - Send received data up the network stack; legacy
337 * @adapter: board private structure
339 * the return value indicates whether actual cleaning was done, there
340 * is no guarantee that everything was cleaned
342 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
343 int *work_done, int work_to_do)
345 struct net_device *netdev = adapter->netdev;
346 struct pci_dev *pdev = adapter->pdev;
347 struct e1000_ring *rx_ring = adapter->rx_ring;
348 struct e1000_rx_desc *rx_desc, *next_rxd;
349 struct e1000_buffer *buffer_info, *next_buffer;
352 int cleaned_count = 0;
354 unsigned int total_rx_bytes = 0, total_rx_packets = 0;
356 i = rx_ring->next_to_clean;
357 rx_desc = E1000_RX_DESC(*rx_ring, i);
358 buffer_info = &rx_ring->buffer_info[i];
360 while (rx_desc->status & E1000_RXD_STAT_DD) {
364 if (*work_done >= work_to_do)
368 status = rx_desc->status;
369 skb = buffer_info->skb;
370 buffer_info->skb = NULL;
372 prefetch(skb->data - NET_IP_ALIGN);
375 if (i == rx_ring->count)
377 next_rxd = E1000_RX_DESC(*rx_ring, i);
380 next_buffer = &rx_ring->buffer_info[i];
384 pci_unmap_single(pdev,
386 adapter->rx_buffer_len,
388 buffer_info->dma = 0;
390 length = le16_to_cpu(rx_desc->length);
392 /* !EOP means multiple descriptors were used to store a single
393 * packet, also make sure the frame isn't just CRC only */
394 if (!(status & E1000_RXD_STAT_EOP) || (length <= 4)) {
395 /* All receives must fit into a single buffer */
396 ndev_dbg(netdev, "%s: Receive packet consumed "
397 "multiple buffers\n", netdev->name);
399 buffer_info->skb = skb;
403 if (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK) {
405 buffer_info->skb = skb;
409 total_rx_bytes += length;
412 /* code added for copybreak, this should improve
413 * performance for small packets with large amounts
414 * of reassembly being done in the stack */
415 if (length < copybreak) {
416 struct sk_buff *new_skb =
417 netdev_alloc_skb(netdev, length + NET_IP_ALIGN);
419 skb_reserve(new_skb, NET_IP_ALIGN);
420 memcpy(new_skb->data - NET_IP_ALIGN,
421 skb->data - NET_IP_ALIGN,
422 length + NET_IP_ALIGN);
423 /* save the skb in buffer_info as good */
424 buffer_info->skb = skb;
427 /* else just continue with the old one */
429 /* end copybreak code */
430 skb_put(skb, length);
432 /* Receive Checksum Offload */
433 e1000_rx_checksum(adapter,
435 ((u32)(rx_desc->errors) << 24),
436 le16_to_cpu(rx_desc->csum), skb);
438 e1000_receive_skb(adapter, netdev, skb,status,rx_desc->special);
443 /* return some buffers to hardware, one at a time is too slow */
444 if (cleaned_count >= E1000_RX_BUFFER_WRITE) {
445 adapter->alloc_rx_buf(adapter, cleaned_count);
449 /* use prefetched values */
451 buffer_info = next_buffer;
453 rx_ring->next_to_clean = i;
455 cleaned_count = e1000_desc_unused(rx_ring);
457 adapter->alloc_rx_buf(adapter, cleaned_count);
459 adapter->total_rx_packets += total_rx_packets;
460 adapter->total_rx_bytes += total_rx_bytes;
464 static void e1000_put_txbuf(struct e1000_adapter *adapter,
465 struct e1000_buffer *buffer_info)
467 if (buffer_info->dma) {
468 pci_unmap_page(adapter->pdev, buffer_info->dma,
469 buffer_info->length, PCI_DMA_TODEVICE);
470 buffer_info->dma = 0;
472 if (buffer_info->skb) {
473 dev_kfree_skb_any(buffer_info->skb);
474 buffer_info->skb = NULL;
478 static void e1000_print_tx_hang(struct e1000_adapter *adapter)
480 struct e1000_ring *tx_ring = adapter->tx_ring;
481 unsigned int i = tx_ring->next_to_clean;
482 unsigned int eop = tx_ring->buffer_info[i].next_to_watch;
483 struct e1000_tx_desc *eop_desc = E1000_TX_DESC(*tx_ring, eop);
484 struct net_device *netdev = adapter->netdev;
486 /* detected Tx unit hang */
488 "Detected Tx Unit Hang:\n"
491 " next_to_use <%x>\n"
492 " next_to_clean <%x>\n"
493 "buffer_info[next_to_clean]:\n"
494 " time_stamp <%lx>\n"
495 " next_to_watch <%x>\n"
497 " next_to_watch.status <%x>\n",
498 readl(adapter->hw.hw_addr + tx_ring->head),
499 readl(adapter->hw.hw_addr + tx_ring->tail),
500 tx_ring->next_to_use,
501 tx_ring->next_to_clean,
502 tx_ring->buffer_info[eop].time_stamp,
505 eop_desc->upper.fields.status);
509 * e1000_clean_tx_irq - Reclaim resources after transmit completes
510 * @adapter: board private structure
512 * the return value indicates whether actual cleaning was done, there
513 * is no guarantee that everything was cleaned
515 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
517 struct net_device *netdev = adapter->netdev;
518 struct e1000_hw *hw = &adapter->hw;
519 struct e1000_ring *tx_ring = adapter->tx_ring;
520 struct e1000_tx_desc *tx_desc, *eop_desc;
521 struct e1000_buffer *buffer_info;
523 unsigned int count = 0;
525 unsigned int total_tx_bytes = 0, total_tx_packets = 0;
527 i = tx_ring->next_to_clean;
528 eop = tx_ring->buffer_info[i].next_to_watch;
529 eop_desc = E1000_TX_DESC(*tx_ring, eop);
531 while (eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) {
532 for (cleaned = 0; !cleaned; ) {
533 tx_desc = E1000_TX_DESC(*tx_ring, i);
534 buffer_info = &tx_ring->buffer_info[i];
535 cleaned = (i == eop);
538 struct sk_buff *skb = buffer_info->skb;
539 unsigned int segs, bytecount;
540 segs = skb_shinfo(skb)->gso_segs ?: 1;
541 /* multiply data chunks by size of headers */
542 bytecount = ((segs - 1) * skb_headlen(skb)) +
544 total_tx_packets += segs;
545 total_tx_bytes += bytecount;
548 e1000_put_txbuf(adapter, buffer_info);
549 tx_desc->upper.data = 0;
552 if (i == tx_ring->count)
556 eop = tx_ring->buffer_info[i].next_to_watch;
557 eop_desc = E1000_TX_DESC(*tx_ring, eop);
558 #define E1000_TX_WEIGHT 64
559 /* weight of a sort for tx, to avoid endless transmit cleanup */
560 if (count++ == E1000_TX_WEIGHT)
564 tx_ring->next_to_clean = i;
566 #define TX_WAKE_THRESHOLD 32
567 if (cleaned && netif_carrier_ok(netdev) &&
568 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) {
569 /* Make sure that anybody stopping the queue after this
570 * sees the new next_to_clean.
574 if (netif_queue_stopped(netdev) &&
575 !(test_bit(__E1000_DOWN, &adapter->state))) {
576 netif_wake_queue(netdev);
577 ++adapter->restart_queue;
581 if (adapter->detect_tx_hung) {
582 /* Detect a transmit hang in hardware, this serializes the
583 * check with the clearing of time_stamp and movement of i */
584 adapter->detect_tx_hung = 0;
585 if (tx_ring->buffer_info[eop].dma &&
586 time_after(jiffies, tx_ring->buffer_info[eop].time_stamp
587 + (adapter->tx_timeout_factor * HZ))
589 E1000_STATUS_TXOFF)) {
590 e1000_print_tx_hang(adapter);
591 netif_stop_queue(netdev);
594 adapter->total_tx_bytes += total_tx_bytes;
595 adapter->total_tx_packets += total_tx_packets;
600 * e1000_clean_rx_irq_ps - Send received data up the network stack; packet split
601 * @adapter: board private structure
603 * the return value indicates whether actual cleaning was done, there
604 * is no guarantee that everything was cleaned
606 static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
607 int *work_done, int work_to_do)
609 union e1000_rx_desc_packet_split *rx_desc, *next_rxd;
610 struct net_device *netdev = adapter->netdev;
611 struct pci_dev *pdev = adapter->pdev;
612 struct e1000_ring *rx_ring = adapter->rx_ring;
613 struct e1000_buffer *buffer_info, *next_buffer;
614 struct e1000_ps_page *ps_page;
618 int cleaned_count = 0;
620 unsigned int total_rx_bytes = 0, total_rx_packets = 0;
622 i = rx_ring->next_to_clean;
623 rx_desc = E1000_RX_DESC_PS(*rx_ring, i);
624 staterr = le32_to_cpu(rx_desc->wb.middle.status_error);
625 buffer_info = &rx_ring->buffer_info[i];
627 while (staterr & E1000_RXD_STAT_DD) {
628 if (*work_done >= work_to_do)
631 skb = buffer_info->skb;
633 /* in the packet split case this is header only */
634 prefetch(skb->data - NET_IP_ALIGN);
637 if (i == rx_ring->count)
639 next_rxd = E1000_RX_DESC_PS(*rx_ring, i);
642 next_buffer = &rx_ring->buffer_info[i];
646 pci_unmap_single(pdev, buffer_info->dma,
647 adapter->rx_ps_bsize0,
649 buffer_info->dma = 0;
651 if (!(staterr & E1000_RXD_STAT_EOP)) {
652 ndev_dbg(netdev, "%s: Packet Split buffers didn't pick "
653 "up the full packet\n", netdev->name);
654 dev_kfree_skb_irq(skb);
658 if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
659 dev_kfree_skb_irq(skb);
663 length = le16_to_cpu(rx_desc->wb.middle.length0);
666 ndev_dbg(netdev, "%s: Last part of the packet spanning"
667 " multiple descriptors\n", netdev->name);
668 dev_kfree_skb_irq(skb);
673 skb_put(skb, length);
676 /* this looks ugly, but it seems compiler issues make it
677 more efficient than reusing j */
678 int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]);
680 /* page alloc/put takes too long and effects small packet
681 * throughput, so unsplit small packets and save the alloc/put*/
682 if (l1 && (l1 <= copybreak) &&
683 ((length + l1) <= adapter->rx_ps_bsize0)) {
686 ps_page = &buffer_info->ps_pages[0];
688 /* there is no documentation about how to call
689 * kmap_atomic, so we can't hold the mapping
691 pci_dma_sync_single_for_cpu(pdev, ps_page->dma,
692 PAGE_SIZE, PCI_DMA_FROMDEVICE);
693 vaddr = kmap_atomic(ps_page->page, KM_SKB_DATA_SOFTIRQ);
694 memcpy(skb_tail_pointer(skb), vaddr, l1);
695 kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ);
696 pci_dma_sync_single_for_device(pdev, ps_page->dma,
697 PAGE_SIZE, PCI_DMA_FROMDEVICE);
704 for (j = 0; j < PS_PAGE_BUFFERS; j++) {
705 length = le16_to_cpu(rx_desc->wb.upper.length[j]);
709 ps_page = &buffer_info->ps_pages[j];
710 pci_unmap_page(pdev, ps_page->dma, PAGE_SIZE,
713 skb_fill_page_desc(skb, j, ps_page->page, 0, length);
714 ps_page->page = NULL;
716 skb->data_len += length;
717 skb->truesize += length;
721 total_rx_bytes += skb->len;
724 e1000_rx_checksum(adapter, staterr, le16_to_cpu(
725 rx_desc->wb.lower.hi_dword.csum_ip.csum), skb);
727 if (rx_desc->wb.upper.header_status &
728 cpu_to_le16(E1000_RXDPS_HDRSTAT_HDRSP))
729 adapter->rx_hdr_split++;
731 e1000_receive_skb(adapter, netdev, skb,
732 staterr, rx_desc->wb.middle.vlan);
735 rx_desc->wb.middle.status_error &= cpu_to_le32(~0xFF);
736 buffer_info->skb = NULL;
738 /* return some buffers to hardware, one at a time is too slow */
739 if (cleaned_count >= E1000_RX_BUFFER_WRITE) {
740 adapter->alloc_rx_buf(adapter, cleaned_count);
744 /* use prefetched values */
746 buffer_info = next_buffer;
748 staterr = le32_to_cpu(rx_desc->wb.middle.status_error);
750 rx_ring->next_to_clean = i;
752 cleaned_count = e1000_desc_unused(rx_ring);
754 adapter->alloc_rx_buf(adapter, cleaned_count);
756 adapter->total_rx_packets += total_rx_packets;
757 adapter->total_rx_bytes += total_rx_bytes;
762 * e1000_clean_rx_ring - Free Rx Buffers per Queue
763 * @adapter: board private structure
765 static void e1000_clean_rx_ring(struct e1000_adapter *adapter)
767 struct e1000_ring *rx_ring = adapter->rx_ring;
768 struct e1000_buffer *buffer_info;
769 struct e1000_ps_page *ps_page;
770 struct pci_dev *pdev = adapter->pdev;
773 /* Free all the Rx ring sk_buffs */
774 for (i = 0; i < rx_ring->count; i++) {
775 buffer_info = &rx_ring->buffer_info[i];
776 if (buffer_info->dma) {
777 if (adapter->clean_rx == e1000_clean_rx_irq)
778 pci_unmap_single(pdev, buffer_info->dma,
779 adapter->rx_buffer_len,
781 else if (adapter->clean_rx == e1000_clean_rx_irq_ps)
782 pci_unmap_single(pdev, buffer_info->dma,
783 adapter->rx_ps_bsize0,
785 buffer_info->dma = 0;
788 if (buffer_info->skb) {
789 dev_kfree_skb(buffer_info->skb);
790 buffer_info->skb = NULL;
793 for (j = 0; j < PS_PAGE_BUFFERS; j++) {
794 ps_page = &buffer_info->ps_pages[j];
797 pci_unmap_page(pdev, ps_page->dma, PAGE_SIZE,
800 put_page(ps_page->page);
801 ps_page->page = NULL;
805 /* there also may be some cached data from a chained receive */
806 if (rx_ring->rx_skb_top) {
807 dev_kfree_skb(rx_ring->rx_skb_top);
808 rx_ring->rx_skb_top = NULL;
811 /* Zero out the descriptor ring */
812 memset(rx_ring->desc, 0, rx_ring->size);
814 rx_ring->next_to_clean = 0;
815 rx_ring->next_to_use = 0;
817 writel(0, adapter->hw.hw_addr + rx_ring->head);
818 writel(0, adapter->hw.hw_addr + rx_ring->tail);
822 * e1000_intr_msi - Interrupt Handler
823 * @irq: interrupt number
824 * @data: pointer to a network interface device structure
826 static irqreturn_t e1000_intr_msi(int irq, void *data)
828 struct net_device *netdev = data;
829 struct e1000_adapter *adapter = netdev_priv(netdev);
830 struct e1000_hw *hw = &adapter->hw;
833 /* read ICR disables interrupts using IAM, so keep up with our
834 * enable/disable accounting */
835 atomic_inc(&adapter->irq_sem);
837 if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
838 hw->mac.get_link_status = 1;
839 /* ICH8 workaround-- Call gig speed drop workaround on cable
840 * disconnect (LSC) before accessing any PHY registers */
841 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) &&
842 (!(er32(STATUS) & E1000_STATUS_LU)))
843 e1000e_gig_downshift_workaround_ich8lan(hw);
845 /* 80003ES2LAN workaround-- For packet buffer work-around on
846 * link down event; disable receives here in the ISR and reset
847 * adapter in watchdog */
848 if (netif_carrier_ok(netdev) &&
849 adapter->flags & FLAG_RX_NEEDS_RESTART) {
850 /* disable receives */
851 u32 rctl = er32(RCTL);
852 ew32(RCTL, rctl & ~E1000_RCTL_EN);
854 /* guard against interrupt when we're going down */
855 if (!test_bit(__E1000_DOWN, &adapter->state))
856 mod_timer(&adapter->watchdog_timer, jiffies + 1);
859 if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
860 adapter->total_tx_bytes = 0;
861 adapter->total_tx_packets = 0;
862 adapter->total_rx_bytes = 0;
863 adapter->total_rx_packets = 0;
864 __netif_rx_schedule(netdev, &adapter->napi);
866 atomic_dec(&adapter->irq_sem);
873 * e1000_intr - Interrupt Handler
874 * @irq: interrupt number
875 * @data: pointer to a network interface device structure
877 static irqreturn_t e1000_intr(int irq, void *data)
879 struct net_device *netdev = data;
880 struct e1000_adapter *adapter = netdev_priv(netdev);
881 struct e1000_hw *hw = &adapter->hw;
883 u32 rctl, icr = er32(ICR);
885 return IRQ_NONE; /* Not our interrupt */
887 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
888 * not set, then the adapter didn't send an interrupt */
889 if (!(icr & E1000_ICR_INT_ASSERTED))
892 /* Interrupt Auto-Mask...upon reading ICR,
893 * interrupts are masked. No need for the
894 * IMC write, but it does mean we should
895 * account for it ASAP. */
896 atomic_inc(&adapter->irq_sem);
898 if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
899 hw->mac.get_link_status = 1;
900 /* ICH8 workaround-- Call gig speed drop workaround on cable
901 * disconnect (LSC) before accessing any PHY registers */
902 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) &&
903 (!(er32(STATUS) & E1000_STATUS_LU)))
904 e1000e_gig_downshift_workaround_ich8lan(hw);
906 /* 80003ES2LAN workaround--
907 * For packet buffer work-around on link down event;
908 * disable receives here in the ISR and
909 * reset adapter in watchdog
911 if (netif_carrier_ok(netdev) &&
912 (adapter->flags & FLAG_RX_NEEDS_RESTART)) {
913 /* disable receives */
915 ew32(RCTL, rctl & ~E1000_RCTL_EN);
917 /* guard against interrupt when we're going down */
918 if (!test_bit(__E1000_DOWN, &adapter->state))
919 mod_timer(&adapter->watchdog_timer, jiffies + 1);
922 if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
923 adapter->total_tx_bytes = 0;
924 adapter->total_tx_packets = 0;
925 adapter->total_rx_bytes = 0;
926 adapter->total_rx_packets = 0;
927 __netif_rx_schedule(netdev, &adapter->napi);
929 atomic_dec(&adapter->irq_sem);
935 static int e1000_request_irq(struct e1000_adapter *adapter)
937 struct net_device *netdev = adapter->netdev;
938 void (*handler) = &e1000_intr;
939 int irq_flags = IRQF_SHARED;
942 err = pci_enable_msi(adapter->pdev);
945 "Unable to allocate MSI interrupt Error: %d\n", err);
947 adapter->flags |= FLAG_MSI_ENABLED;
948 handler = &e1000_intr_msi;
952 err = request_irq(adapter->pdev->irq, handler, irq_flags, netdev->name,
955 if (adapter->flags & FLAG_MSI_ENABLED)
956 pci_disable_msi(adapter->pdev);
958 "Unable to allocate interrupt Error: %d\n", err);
964 static void e1000_free_irq(struct e1000_adapter *adapter)
966 struct net_device *netdev = adapter->netdev;
968 free_irq(adapter->pdev->irq, netdev);
969 if (adapter->flags & FLAG_MSI_ENABLED) {
970 pci_disable_msi(adapter->pdev);
971 adapter->flags &= ~FLAG_MSI_ENABLED;
976 * e1000_irq_disable - Mask off interrupt generation on the NIC
978 static void e1000_irq_disable(struct e1000_adapter *adapter)
980 struct e1000_hw *hw = &adapter->hw;
982 atomic_inc(&adapter->irq_sem);
985 synchronize_irq(adapter->pdev->irq);
989 * e1000_irq_enable - Enable default interrupt generation settings
991 static void e1000_irq_enable(struct e1000_adapter *adapter)
993 struct e1000_hw *hw = &adapter->hw;
995 if (atomic_dec_and_test(&adapter->irq_sem)) {
996 ew32(IMS, IMS_ENABLE_MASK);
1002 * e1000_get_hw_control - get control of the h/w from f/w
1003 * @adapter: address of board private structure
1005 * e1000_get_hw_control sets {CTRL_EXT|FWSM}:DRV_LOAD bit.
1006 * For ASF and Pass Through versions of f/w this means that
1007 * the driver is loaded. For AMT version (only with 82573)
1008 * of the f/w this means that the network i/f is open.
1010 static void e1000_get_hw_control(struct e1000_adapter *adapter)
1012 struct e1000_hw *hw = &adapter->hw;
1016 /* Let firmware know the driver has taken over */
1017 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) {
1019 ew32(SWSM, swsm | E1000_SWSM_DRV_LOAD);
1020 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) {
1021 ctrl_ext = er32(CTRL_EXT);
1023 ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
1028 * e1000_release_hw_control - release control of the h/w to f/w
1029 * @adapter: address of board private structure
1031 * e1000_release_hw_control resets {CTRL_EXT|FWSM}:DRV_LOAD bit.
1032 * For ASF and Pass Through versions of f/w this means that the
1033 * driver is no longer loaded. For AMT version (only with 82573) i
1034 * of the f/w this means that the network i/f is closed.
1037 static void e1000_release_hw_control(struct e1000_adapter *adapter)
1039 struct e1000_hw *hw = &adapter->hw;
1043 /* Let firmware taken over control of h/w */
1044 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) {
1046 ew32(SWSM, swsm & ~E1000_SWSM_DRV_LOAD);
1047 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) {
1048 ctrl_ext = er32(CTRL_EXT);
1050 ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD);
1054 static void e1000_release_manageability(struct e1000_adapter *adapter)
1056 if (adapter->flags & FLAG_MNG_PT_ENABLED) {
1057 struct e1000_hw *hw = &adapter->hw;
1059 u32 manc = er32(MANC);
1061 /* re-enable hardware interception of ARP */
1062 manc |= E1000_MANC_ARP_EN;
1063 manc &= ~E1000_MANC_EN_MNG2HOST;
1065 /* don't explicitly have to mess with MANC2H since
1066 * MANC has an enable disable that gates MANC2H */
1072 * @e1000_alloc_ring - allocate memory for a ring structure
1074 static int e1000_alloc_ring_dma(struct e1000_adapter *adapter,
1075 struct e1000_ring *ring)
1077 struct pci_dev *pdev = adapter->pdev;
1079 ring->desc = dma_alloc_coherent(&pdev->dev, ring->size, &ring->dma,
1088 * e1000e_setup_tx_resources - allocate Tx resources (Descriptors)
1089 * @adapter: board private structure
1091 * Return 0 on success, negative on failure
1093 int e1000e_setup_tx_resources(struct e1000_adapter *adapter)
1095 struct e1000_ring *tx_ring = adapter->tx_ring;
1096 int err = -ENOMEM, size;
1098 size = sizeof(struct e1000_buffer) * tx_ring->count;
1099 tx_ring->buffer_info = vmalloc(size);
1100 if (!tx_ring->buffer_info)
1102 memset(tx_ring->buffer_info, 0, size);
1104 /* round up to nearest 4K */
1105 tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc);
1106 tx_ring->size = ALIGN(tx_ring->size, 4096);
1108 err = e1000_alloc_ring_dma(adapter, tx_ring);
1112 tx_ring->next_to_use = 0;
1113 tx_ring->next_to_clean = 0;
1114 spin_lock_init(&adapter->tx_queue_lock);
1118 vfree(tx_ring->buffer_info);
1119 ndev_err(adapter->netdev,
1120 "Unable to allocate memory for the transmit descriptor ring\n");
1125 * e1000e_setup_rx_resources - allocate Rx resources (Descriptors)
1126 * @adapter: board private structure
1128 * Returns 0 on success, negative on failure
1130 int e1000e_setup_rx_resources(struct e1000_adapter *adapter)
1132 struct e1000_ring *rx_ring = adapter->rx_ring;
1133 struct e1000_buffer *buffer_info;
1134 int i, size, desc_len, err = -ENOMEM;
1136 size = sizeof(struct e1000_buffer) * rx_ring->count;
1137 rx_ring->buffer_info = vmalloc(size);
1138 if (!rx_ring->buffer_info)
1140 memset(rx_ring->buffer_info, 0, size);
1142 for (i = 0; i < rx_ring->count; i++) {
1143 buffer_info = &rx_ring->buffer_info[i];
1144 buffer_info->ps_pages = kcalloc(PS_PAGE_BUFFERS,
1145 sizeof(struct e1000_ps_page),
1147 if (!buffer_info->ps_pages)
1151 desc_len = sizeof(union e1000_rx_desc_packet_split);
1153 /* Round up to nearest 4K */
1154 rx_ring->size = rx_ring->count * desc_len;
1155 rx_ring->size = ALIGN(rx_ring->size, 4096);
1157 err = e1000_alloc_ring_dma(adapter, rx_ring);
1161 rx_ring->next_to_clean = 0;
1162 rx_ring->next_to_use = 0;
1163 rx_ring->rx_skb_top = NULL;
1168 for (i = 0; i < rx_ring->count; i++) {
1169 buffer_info = &rx_ring->buffer_info[i];
1170 kfree(buffer_info->ps_pages);
1173 vfree(rx_ring->buffer_info);
1174 ndev_err(adapter->netdev,
1175 "Unable to allocate memory for the transmit descriptor ring\n");
1180 * e1000_clean_tx_ring - Free Tx Buffers
1181 * @adapter: board private structure
1183 static void e1000_clean_tx_ring(struct e1000_adapter *adapter)
1185 struct e1000_ring *tx_ring = adapter->tx_ring;
1186 struct e1000_buffer *buffer_info;
1190 for (i = 0; i < tx_ring->count; i++) {
1191 buffer_info = &tx_ring->buffer_info[i];
1192 e1000_put_txbuf(adapter, buffer_info);
1195 size = sizeof(struct e1000_buffer) * tx_ring->count;
1196 memset(tx_ring->buffer_info, 0, size);
1198 memset(tx_ring->desc, 0, tx_ring->size);
1200 tx_ring->next_to_use = 0;
1201 tx_ring->next_to_clean = 0;
1203 writel(0, adapter->hw.hw_addr + tx_ring->head);
1204 writel(0, adapter->hw.hw_addr + tx_ring->tail);
1208 * e1000e_free_tx_resources - Free Tx Resources per Queue
1209 * @adapter: board private structure
1211 * Free all transmit software resources
1213 void e1000e_free_tx_resources(struct e1000_adapter *adapter)
1215 struct pci_dev *pdev = adapter->pdev;
1216 struct e1000_ring *tx_ring = adapter->tx_ring;
1218 e1000_clean_tx_ring(adapter);
1220 vfree(tx_ring->buffer_info);
1221 tx_ring->buffer_info = NULL;
1223 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
1225 tx_ring->desc = NULL;
1229 * e1000e_free_rx_resources - Free Rx Resources
1230 * @adapter: board private structure
1232 * Free all receive software resources
1235 void e1000e_free_rx_resources(struct e1000_adapter *adapter)
1237 struct pci_dev *pdev = adapter->pdev;
1238 struct e1000_ring *rx_ring = adapter->rx_ring;
1241 e1000_clean_rx_ring(adapter);
1243 for (i = 0; i < rx_ring->count; i++) {
1244 kfree(rx_ring->buffer_info[i].ps_pages);
1247 vfree(rx_ring->buffer_info);
1248 rx_ring->buffer_info = NULL;
1250 dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
1252 rx_ring->desc = NULL;
1256 * e1000_update_itr - update the dynamic ITR value based on statistics
1257 * Stores a new ITR value based on packets and byte
1258 * counts during the last interrupt. The advantage of per interrupt
1259 * computation is faster updates and more accurate ITR for the current
1260 * traffic pattern. Constants in this function were computed
1261 * based on theoretical maximum wire speed and thresholds were set based
1262 * on testing data as well as attempting to minimize response time
1263 * while increasing bulk throughput.
1264 * this functionality is controlled by the InterruptThrottleRate module
1265 * parameter (see e1000_param.c)
1266 * @adapter: pointer to adapter
1267 * @itr_setting: current adapter->itr
1268 * @packets: the number of packets during this measurement interval
1269 * @bytes: the number of bytes during this measurement interval
1271 static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
1272 u16 itr_setting, int packets,
1275 unsigned int retval = itr_setting;
1278 goto update_itr_done;
1280 switch (itr_setting) {
1281 case lowest_latency:
1282 /* handle TSO and jumbo frames */
1283 if (bytes/packets > 8000)
1284 retval = bulk_latency;
1285 else if ((packets < 5) && (bytes > 512)) {
1286 retval = low_latency;
1289 case low_latency: /* 50 usec aka 20000 ints/s */
1290 if (bytes > 10000) {
1291 /* this if handles the TSO accounting */
1292 if (bytes/packets > 8000) {
1293 retval = bulk_latency;
1294 } else if ((packets < 10) || ((bytes/packets) > 1200)) {
1295 retval = bulk_latency;
1296 } else if ((packets > 35)) {
1297 retval = lowest_latency;
1299 } else if (bytes/packets > 2000) {
1300 retval = bulk_latency;
1301 } else if (packets <= 2 && bytes < 512) {
1302 retval = lowest_latency;
1305 case bulk_latency: /* 250 usec aka 4000 ints/s */
1306 if (bytes > 25000) {
1308 retval = low_latency;
1310 } else if (bytes < 6000) {
1311 retval = low_latency;
1320 static void e1000_set_itr(struct e1000_adapter *adapter)
1322 struct e1000_hw *hw = &adapter->hw;
1324 u32 new_itr = adapter->itr;
1326 /* for non-gigabit speeds, just fix the interrupt rate at 4000 */
1327 if (adapter->link_speed != SPEED_1000) {
1333 adapter->tx_itr = e1000_update_itr(adapter,
1335 adapter->total_tx_packets,
1336 adapter->total_tx_bytes);
1337 /* conservative mode (itr 3) eliminates the lowest_latency setting */
1338 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency)
1339 adapter->tx_itr = low_latency;
1341 adapter->rx_itr = e1000_update_itr(adapter,
1343 adapter->total_rx_packets,
1344 adapter->total_rx_bytes);
1345 /* conservative mode (itr 3) eliminates the lowest_latency setting */
1346 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency)
1347 adapter->rx_itr = low_latency;
1349 current_itr = max(adapter->rx_itr, adapter->tx_itr);
1351 switch (current_itr) {
1352 /* counts and packets in update_itr are dependent on these numbers */
1353 case lowest_latency:
1357 new_itr = 20000; /* aka hwitr = ~200 */
1367 if (new_itr != adapter->itr) {
1368 /* this attempts to bias the interrupt rate towards Bulk
1369 * by adding intermediate steps when interrupt rate is
1371 new_itr = new_itr > adapter->itr ?
1372 min(adapter->itr + (new_itr >> 2), new_itr) :
1374 adapter->itr = new_itr;
1375 ew32(ITR, 1000000000 / (new_itr * 256));
1380 * e1000_clean - NAPI Rx polling callback
1381 * @adapter: board private structure
1383 static int e1000_clean(struct napi_struct *napi, int budget)
1385 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
1386 struct net_device *poll_dev = adapter->netdev;
1387 int tx_cleaned = 0, work_done = 0;
1389 /* Must NOT use netdev_priv macro here. */
1390 adapter = poll_dev->priv;
1392 /* e1000_clean is called per-cpu. This lock protects
1393 * tx_ring from being cleaned by multiple cpus
1394 * simultaneously. A failure obtaining the lock means
1395 * tx_ring is currently being cleaned anyway. */
1396 if (spin_trylock(&adapter->tx_queue_lock)) {
1397 tx_cleaned = e1000_clean_tx_irq(adapter);
1398 spin_unlock(&adapter->tx_queue_lock);
1401 adapter->clean_rx(adapter, &work_done, budget);
1406 /* If budget not fully consumed, exit the polling mode */
1407 if (work_done < budget) {
1408 if (adapter->itr_setting & 3)
1409 e1000_set_itr(adapter);
1410 netif_rx_complete(poll_dev, napi);
1411 e1000_irq_enable(adapter);
1417 static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
1419 struct e1000_adapter *adapter = netdev_priv(netdev);
1420 struct e1000_hw *hw = &adapter->hw;
1423 /* don't update vlan cookie if already programmed */
1424 if ((adapter->hw.mng_cookie.status &
1425 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
1426 (vid == adapter->mng_vlan_id))
1428 /* add VID to filter table */
1429 index = (vid >> 5) & 0x7F;
1430 vfta = E1000_READ_REG_ARRAY(hw, E1000_VFTA, index);
1431 vfta |= (1 << (vid & 0x1F));
1432 e1000e_write_vfta(hw, index, vfta);
1435 static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
1437 struct e1000_adapter *adapter = netdev_priv(netdev);
1438 struct e1000_hw *hw = &adapter->hw;
1441 e1000_irq_disable(adapter);
1442 vlan_group_set_device(adapter->vlgrp, vid, NULL);
1443 e1000_irq_enable(adapter);
1445 if ((adapter->hw.mng_cookie.status &
1446 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
1447 (vid == adapter->mng_vlan_id)) {
1448 /* release control to f/w */
1449 e1000_release_hw_control(adapter);
1453 /* remove VID from filter table */
1454 index = (vid >> 5) & 0x7F;
1455 vfta = E1000_READ_REG_ARRAY(hw, E1000_VFTA, index);
1456 vfta &= ~(1 << (vid & 0x1F));
1457 e1000e_write_vfta(hw, index, vfta);
1460 static void e1000_update_mng_vlan(struct e1000_adapter *adapter)
1462 struct net_device *netdev = adapter->netdev;
1463 u16 vid = adapter->hw.mng_cookie.vlan_id;
1464 u16 old_vid = adapter->mng_vlan_id;
1466 if (!adapter->vlgrp)
1469 if (!vlan_group_get_device(adapter->vlgrp, vid)) {
1470 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE;
1471 if (adapter->hw.mng_cookie.status &
1472 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) {
1473 e1000_vlan_rx_add_vid(netdev, vid);
1474 adapter->mng_vlan_id = vid;
1477 if ((old_vid != (u16)E1000_MNG_VLAN_NONE) &&
1479 !vlan_group_get_device(adapter->vlgrp, old_vid))
1480 e1000_vlan_rx_kill_vid(netdev, old_vid);
1482 adapter->mng_vlan_id = vid;
1487 static void e1000_vlan_rx_register(struct net_device *netdev,
1488 struct vlan_group *grp)
1490 struct e1000_adapter *adapter = netdev_priv(netdev);
1491 struct e1000_hw *hw = &adapter->hw;
1494 e1000_irq_disable(adapter);
1495 adapter->vlgrp = grp;
1498 /* enable VLAN tag insert/strip */
1500 ctrl |= E1000_CTRL_VME;
1503 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) {
1504 /* enable VLAN receive filtering */
1506 rctl |= E1000_RCTL_VFE;
1507 rctl &= ~E1000_RCTL_CFIEN;
1509 e1000_update_mng_vlan(adapter);
1512 /* disable VLAN tag insert/strip */
1514 ctrl &= ~E1000_CTRL_VME;
1517 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) {
1518 /* disable VLAN filtering */
1520 rctl &= ~E1000_RCTL_VFE;
1522 if (adapter->mng_vlan_id !=
1523 (u16)E1000_MNG_VLAN_NONE) {
1524 e1000_vlan_rx_kill_vid(netdev,
1525 adapter->mng_vlan_id);
1526 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE;
1531 e1000_irq_enable(adapter);
1534 static void e1000_restore_vlan(struct e1000_adapter *adapter)
1538 e1000_vlan_rx_register(adapter->netdev, adapter->vlgrp);
1540 if (!adapter->vlgrp)
1543 for (vid = 0; vid < VLAN_GROUP_ARRAY_LEN; vid++) {
1544 if (!vlan_group_get_device(adapter->vlgrp, vid))
1546 e1000_vlan_rx_add_vid(adapter->netdev, vid);
1550 static void e1000_init_manageability(struct e1000_adapter *adapter)
1552 struct e1000_hw *hw = &adapter->hw;
1555 if (!(adapter->flags & FLAG_MNG_PT_ENABLED))
1560 /* disable hardware interception of ARP */
1561 manc &= ~(E1000_MANC_ARP_EN);
1563 /* enable receiving management packets to the host. this will probably
1564 * generate destination unreachable messages from the host OS, but
1565 * the packets will be handled on SMBUS */
1566 manc |= E1000_MANC_EN_MNG2HOST;
1567 manc2h = er32(MANC2H);
1568 #define E1000_MNG2HOST_PORT_623 (1 << 5)
1569 #define E1000_MNG2HOST_PORT_664 (1 << 6)
1570 manc2h |= E1000_MNG2HOST_PORT_623;
1571 manc2h |= E1000_MNG2HOST_PORT_664;
1572 ew32(MANC2H, manc2h);
1577 * e1000_configure_tx - Configure 8254x Transmit Unit after Reset
1578 * @adapter: board private structure
1580 * Configure the Tx unit of the MAC after a reset.
1582 static void e1000_configure_tx(struct e1000_adapter *adapter)
1584 struct e1000_hw *hw = &adapter->hw;
1585 struct e1000_ring *tx_ring = adapter->tx_ring;
1587 u32 tdlen, tctl, tipg, tarc;
1590 /* Setup the HW Tx Head and Tail descriptor pointers */
1591 tdba = tx_ring->dma;
1592 tdlen = tx_ring->count * sizeof(struct e1000_tx_desc);
1593 ew32(TDBAL, (tdba & DMA_32BIT_MASK));
1594 ew32(TDBAH, (tdba >> 32));
1598 tx_ring->head = E1000_TDH;
1599 tx_ring->tail = E1000_TDT;
1601 /* Set the default values for the Tx Inter Packet Gap timer */
1602 tipg = DEFAULT_82543_TIPG_IPGT_COPPER; /* 8 */
1603 ipgr1 = DEFAULT_82543_TIPG_IPGR1; /* 8 */
1604 ipgr2 = DEFAULT_82543_TIPG_IPGR2; /* 6 */
1606 if (adapter->flags & FLAG_TIPG_MEDIUM_FOR_80003ESLAN)
1607 ipgr2 = DEFAULT_80003ES2LAN_TIPG_IPGR2; /* 7 */
1609 tipg |= ipgr1 << E1000_TIPG_IPGR1_SHIFT;
1610 tipg |= ipgr2 << E1000_TIPG_IPGR2_SHIFT;
1613 /* Set the Tx Interrupt Delay register */
1614 ew32(TIDV, adapter->tx_int_delay);
1615 /* tx irq moderation */
1616 ew32(TADV, adapter->tx_abs_int_delay);
1618 /* Program the Transmit Control Register */
1620 tctl &= ~E1000_TCTL_CT;
1621 tctl |= E1000_TCTL_PSP | E1000_TCTL_RTLC |
1622 (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT);
1624 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) {
1626 /* set the speed mode bit, we'll clear it if we're not at
1627 * gigabit link later */
1628 #define SPEED_MODE_BIT (1 << 21)
1629 tarc |= SPEED_MODE_BIT;
1633 /* errata: program both queues to unweighted RR */
1634 if (adapter->flags & FLAG_TARC_SET_BIT_ZERO) {
1643 e1000e_config_collision_dist(hw);
1645 /* Setup Transmit Descriptor Settings for eop descriptor */
1646 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS;
1648 /* only set IDE if we are delaying interrupts using the timers */
1649 if (adapter->tx_int_delay)
1650 adapter->txd_cmd |= E1000_TXD_CMD_IDE;
1652 /* enable Report Status bit */
1653 adapter->txd_cmd |= E1000_TXD_CMD_RS;
1657 adapter->tx_queue_len = adapter->netdev->tx_queue_len;
1661 * e1000_setup_rctl - configure the receive control registers
1662 * @adapter: Board private structure
1664 #define PAGE_USE_COUNT(S) (((S) >> PAGE_SHIFT) + \
1665 (((S) & (PAGE_SIZE - 1)) ? 1 : 0))
1666 static void e1000_setup_rctl(struct e1000_adapter *adapter)
1668 struct e1000_hw *hw = &adapter->hw;
1673 /* Program MC offset vector base */
1675 rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
1676 rctl |= E1000_RCTL_EN | E1000_RCTL_BAM |
1677 E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
1678 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
1680 /* Do not Store bad packets */
1681 rctl &= ~E1000_RCTL_SBP;
1683 /* Enable Long Packet receive */
1684 if (adapter->netdev->mtu <= ETH_DATA_LEN)
1685 rctl &= ~E1000_RCTL_LPE;
1687 rctl |= E1000_RCTL_LPE;
1689 /* Setup buffer sizes */
1690 rctl &= ~E1000_RCTL_SZ_4096;
1691 rctl |= E1000_RCTL_BSEX;
1692 switch (adapter->rx_buffer_len) {
1694 rctl |= E1000_RCTL_SZ_256;
1695 rctl &= ~E1000_RCTL_BSEX;
1698 rctl |= E1000_RCTL_SZ_512;
1699 rctl &= ~E1000_RCTL_BSEX;
1702 rctl |= E1000_RCTL_SZ_1024;
1703 rctl &= ~E1000_RCTL_BSEX;
1707 rctl |= E1000_RCTL_SZ_2048;
1708 rctl &= ~E1000_RCTL_BSEX;
1711 rctl |= E1000_RCTL_SZ_4096;
1714 rctl |= E1000_RCTL_SZ_8192;
1717 rctl |= E1000_RCTL_SZ_16384;
1722 * 82571 and greater support packet-split where the protocol
1723 * header is placed in skb->data and the packet data is
1724 * placed in pages hanging off of skb_shinfo(skb)->nr_frags.
1725 * In the case of a non-split, skb->data is linearly filled,
1726 * followed by the page buffers. Therefore, skb->data is
1727 * sized to hold the largest protocol header.
1729 * allocations using alloc_page take too long for regular MTU
1730 * so only enable packet split for jumbo frames
1732 * Using pages when the page size is greater than 16k wastes
1733 * a lot of memory, since we allocate 3 pages at all times
1736 adapter->rx_ps_pages = 0;
1737 pages = PAGE_USE_COUNT(adapter->netdev->mtu);
1738 if ((pages <= 3) && (PAGE_SIZE <= 16384) && (rctl & E1000_RCTL_LPE))
1739 adapter->rx_ps_pages = pages;
1741 if (adapter->rx_ps_pages) {
1742 /* Configure extra packet-split registers */
1743 rfctl = er32(RFCTL);
1744 rfctl |= E1000_RFCTL_EXTEN;
1745 /* disable packet split support for IPv6 extension headers,
1746 * because some malformed IPv6 headers can hang the RX */
1747 rfctl |= (E1000_RFCTL_IPV6_EX_DIS |
1748 E1000_RFCTL_NEW_IPV6_EXT_DIS);
1752 /* Enable Packet split descriptors */
1753 rctl |= E1000_RCTL_DTYP_PS;
1755 /* Enable hardware CRC frame stripping */
1756 rctl |= E1000_RCTL_SECRC;
1758 psrctl |= adapter->rx_ps_bsize0 >>
1759 E1000_PSRCTL_BSIZE0_SHIFT;
1761 switch (adapter->rx_ps_pages) {
1763 psrctl |= PAGE_SIZE <<
1764 E1000_PSRCTL_BSIZE3_SHIFT;
1766 psrctl |= PAGE_SIZE <<
1767 E1000_PSRCTL_BSIZE2_SHIFT;
1769 psrctl |= PAGE_SIZE >>
1770 E1000_PSRCTL_BSIZE1_SHIFT;
1774 ew32(PSRCTL, psrctl);
1781 * e1000_configure_rx - Configure Receive Unit after Reset
1782 * @adapter: board private structure
1784 * Configure the Rx unit of the MAC after a reset.
1786 static void e1000_configure_rx(struct e1000_adapter *adapter)
1788 struct e1000_hw *hw = &adapter->hw;
1789 struct e1000_ring *rx_ring = adapter->rx_ring;
1791 u32 rdlen, rctl, rxcsum, ctrl_ext;
1793 if (adapter->rx_ps_pages) {
1794 /* this is a 32 byte descriptor */
1795 rdlen = rx_ring->count *
1796 sizeof(union e1000_rx_desc_packet_split);
1797 adapter->clean_rx = e1000_clean_rx_irq_ps;
1798 adapter->alloc_rx_buf = e1000_alloc_rx_buffers_ps;
1800 rdlen = rx_ring->count *
1801 sizeof(struct e1000_rx_desc);
1802 adapter->clean_rx = e1000_clean_rx_irq;
1803 adapter->alloc_rx_buf = e1000_alloc_rx_buffers;
1806 /* disable receives while setting up the descriptors */
1808 ew32(RCTL, rctl & ~E1000_RCTL_EN);
1812 /* set the Receive Delay Timer Register */
1813 ew32(RDTR, adapter->rx_int_delay);
1815 /* irq moderation */
1816 ew32(RADV, adapter->rx_abs_int_delay);
1817 if (adapter->itr_setting != 0)
1819 1000000000 / (adapter->itr * 256));
1821 ctrl_ext = er32(CTRL_EXT);
1822 /* Reset delay timers after every interrupt */
1823 ctrl_ext |= E1000_CTRL_EXT_INT_TIMER_CLR;
1824 /* Auto-Mask interrupts upon ICR access */
1825 ctrl_ext |= E1000_CTRL_EXT_IAME;
1826 ew32(IAM, 0xffffffff);
1827 ew32(CTRL_EXT, ctrl_ext);
1830 /* Setup the HW Rx Head and Tail Descriptor Pointers and
1831 * the Base and Length of the Rx Descriptor Ring */
1832 rdba = rx_ring->dma;
1833 ew32(RDBAL, (rdba & DMA_32BIT_MASK));
1834 ew32(RDBAH, (rdba >> 32));
1838 rx_ring->head = E1000_RDH;
1839 rx_ring->tail = E1000_RDT;
1841 /* Enable Receive Checksum Offload for TCP and UDP */
1842 rxcsum = er32(RXCSUM);
1843 if (adapter->flags & FLAG_RX_CSUM_ENABLED) {
1844 rxcsum |= E1000_RXCSUM_TUOFL;
1846 /* IPv4 payload checksum for UDP fragments must be
1847 * used in conjunction with packet-split. */
1848 if (adapter->rx_ps_pages)
1849 rxcsum |= E1000_RXCSUM_IPPCSE;
1851 rxcsum &= ~E1000_RXCSUM_TUOFL;
1852 /* no need to clear IPPCSE as it defaults to 0 */
1854 ew32(RXCSUM, rxcsum);
1856 /* Enable early receives on supported devices, only takes effect when
1857 * packet size is equal or larger than the specified value (in 8 byte
1858 * units), e.g. using jumbo frames when setting to E1000_ERT_2048 */
1859 if ((adapter->flags & FLAG_HAS_ERT) &&
1860 (adapter->netdev->mtu > ETH_DATA_LEN))
1861 ew32(ERT, E1000_ERT_2048);
1863 /* Enable Receives */
1868 * e1000_mc_addr_list_update - Update Multicast addresses
1869 * @hw: pointer to the HW structure
1870 * @mc_addr_list: array of multicast addresses to program
1871 * @mc_addr_count: number of multicast addresses to program
1872 * @rar_used_count: the first RAR register free to program
1873 * @rar_count: total number of supported Receive Address Registers
1875 * Updates the Receive Address Registers and Multicast Table Array.
1876 * The caller must have a packed mc_addr_list of multicast addresses.
1877 * The parameter rar_count will usually be hw->mac.rar_entry_count
1878 * unless there are workarounds that change this. Currently no func pointer
1879 * exists and all implementations are handled in the generic version of this
1882 static void e1000_mc_addr_list_update(struct e1000_hw *hw, u8 *mc_addr_list,
1883 u32 mc_addr_count, u32 rar_used_count,
1886 hw->mac.ops.mc_addr_list_update(hw, mc_addr_list, mc_addr_count,
1887 rar_used_count, rar_count);
1891 * e1000_set_multi - Multicast and Promiscuous mode set
1892 * @netdev: network interface device structure
1894 * The set_multi entry point is called whenever the multicast address
1895 * list or the network interface flags are updated. This routine is
1896 * responsible for configuring the hardware for proper multicast,
1897 * promiscuous mode, and all-multi behavior.
1899 static void e1000_set_multi(struct net_device *netdev)
1901 struct e1000_adapter *adapter = netdev_priv(netdev);
1902 struct e1000_hw *hw = &adapter->hw;
1903 struct e1000_mac_info *mac = &hw->mac;
1904 struct dev_mc_list *mc_ptr;
1909 /* Check for Promiscuous and All Multicast modes */
1913 if (netdev->flags & IFF_PROMISC) {
1914 rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
1915 } else if (netdev->flags & IFF_ALLMULTI) {
1916 rctl |= E1000_RCTL_MPE;
1917 rctl &= ~E1000_RCTL_UPE;
1919 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE);
1924 if (netdev->mc_count) {
1925 mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC);
1929 /* prepare a packed array of only addresses. */
1930 mc_ptr = netdev->mc_list;
1932 for (i = 0; i < netdev->mc_count; i++) {
1935 memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr,
1937 mc_ptr = mc_ptr->next;
1940 e1000_mc_addr_list_update(hw, mta_list, i, 1,
1941 mac->rar_entry_count);
1945 * if we're called from probe, we might not have
1946 * anything to do here, so clear out the list
1948 e1000_mc_addr_list_update(hw, NULL, 0, 1,
1949 mac->rar_entry_count);
1954 * e1000_configure - configure the hardware for RX and TX
1955 * @adapter: private board structure
1957 static void e1000_configure(struct e1000_adapter *adapter)
1959 e1000_set_multi(adapter->netdev);
1961 e1000_restore_vlan(adapter);
1962 e1000_init_manageability(adapter);
1964 e1000_configure_tx(adapter);
1965 e1000_setup_rctl(adapter);
1966 e1000_configure_rx(adapter);
1967 adapter->alloc_rx_buf(adapter,
1968 e1000_desc_unused(adapter->rx_ring));
1972 * e1000e_power_up_phy - restore link in case the phy was powered down
1973 * @adapter: address of board private structure
1975 * The phy may be powered down to save power and turn off link when the
1976 * driver is unloaded and wake on lan is not enabled (among others)
1977 * *** this routine MUST be followed by a call to e1000e_reset ***
1979 void e1000e_power_up_phy(struct e1000_adapter *adapter)
1983 /* Just clear the power down bit to wake the phy back up */
1984 if (adapter->hw.media_type == e1000_media_type_copper) {
1985 /* according to the manual, the phy will retain its
1986 * settings across a power-down/up cycle */
1987 e1e_rphy(&adapter->hw, PHY_CONTROL, &mii_reg);
1988 mii_reg &= ~MII_CR_POWER_DOWN;
1989 e1e_wphy(&adapter->hw, PHY_CONTROL, mii_reg);
1992 adapter->hw.mac.ops.setup_link(&adapter->hw);
1996 * e1000_power_down_phy - Power down the PHY
1998 * Power down the PHY so no link is implied when interface is down
1999 * The PHY cannot be powered down is management or WoL is active
2001 static void e1000_power_down_phy(struct e1000_adapter *adapter)
2003 struct e1000_hw *hw = &adapter->hw;
2006 /* WoL is enabled */
2010 /* non-copper PHY? */
2011 if (adapter->hw.media_type != e1000_media_type_copper)
2014 /* reset is blocked because of a SoL/IDER session */
2015 if (e1000e_check_mng_mode(hw) ||
2016 e1000_check_reset_block(hw))
2019 /* managebility (AMT) is enabled */
2020 if (er32(MANC) & E1000_MANC_SMBUS_EN)
2023 /* power down the PHY */
2024 e1e_rphy(hw, PHY_CONTROL, &mii_reg);
2025 mii_reg |= MII_CR_POWER_DOWN;
2026 e1e_wphy(hw, PHY_CONTROL, mii_reg);
2031 * e1000e_reset - bring the hardware into a known good state
2033 * This function boots the hardware and enables some settings that
2034 * require a configuration cycle of the hardware - those cannot be
2035 * set/changed during runtime. After reset the device needs to be
2036 * properly configured for rx, tx etc.
2038 void e1000e_reset(struct e1000_adapter *adapter)
2040 struct e1000_mac_info *mac = &adapter->hw.mac;
2041 struct e1000_hw *hw = &adapter->hw;
2042 u32 tx_space, min_tx_space, min_rx_space;
2046 ew32(PBA, adapter->pba);
2048 if (mac->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN ) {
2049 /* To maintain wire speed transmits, the Tx FIFO should be
2050 * large enough to accommodate two full transmit packets,
2051 * rounded up to the next 1KB and expressed in KB. Likewise,
2052 * the Rx FIFO should be large enough to accommodate at least
2053 * one full receive packet and is similarly rounded up and
2054 * expressed in KB. */
2056 /* upper 16 bits has Tx packet buffer allocation size in KB */
2057 tx_space = pba >> 16;
2058 /* lower 16 bits has Rx packet buffer allocation size in KB */
2060 /* the tx fifo also stores 16 bytes of information about the tx
2061 * but don't include ethernet FCS because hardware appends it */
2062 min_tx_space = (mac->max_frame_size +
2063 sizeof(struct e1000_tx_desc) -
2065 min_tx_space = ALIGN(min_tx_space, 1024);
2066 min_tx_space >>= 10;
2067 /* software strips receive CRC, so leave room for it */
2068 min_rx_space = mac->max_frame_size;
2069 min_rx_space = ALIGN(min_rx_space, 1024);
2070 min_rx_space >>= 10;
2072 /* If current Tx allocation is less than the min Tx FIFO size,
2073 * and the min Tx FIFO size is less than the current Rx FIFO
2074 * allocation, take space away from current Rx allocation */
2075 if ((tx_space < min_tx_space) &&
2076 ((min_tx_space - tx_space) < pba)) {
2077 pba -= min_tx_space - tx_space;
2079 /* if short on rx space, rx wins and must trump tx
2080 * adjustment or use Early Receive if available */
2081 if ((pba < min_rx_space) &&
2082 (!(adapter->flags & FLAG_HAS_ERT)))
2083 /* ERT enabled in e1000_configure_rx */
2091 /* flow control settings */
2092 /* The high water mark must be low enough to fit one full frame
2093 * (or the size used for early receive) above it in the Rx FIFO.
2094 * Set it to the lower of:
2095 * - 90% of the Rx FIFO size, and
2096 * - the full Rx FIFO size minus the early receive size (for parts
2097 * with ERT support assuming ERT set to E1000_ERT_2048), or
2098 * - the full Rx FIFO size minus one full frame */
2099 if (adapter->flags & FLAG_HAS_ERT)
2100 hwm = min(((adapter->pba << 10) * 9 / 10),
2101 ((adapter->pba << 10) - (E1000_ERT_2048 << 3)));
2103 hwm = min(((adapter->pba << 10) * 9 / 10),
2104 ((adapter->pba << 10) - mac->max_frame_size));
2106 mac->fc_high_water = hwm & 0xFFF8; /* 8-byte granularity */
2107 mac->fc_low_water = mac->fc_high_water - 8;
2109 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME)
2110 mac->fc_pause_time = 0xFFFF;
2112 mac->fc_pause_time = E1000_FC_PAUSE_TIME;
2113 mac->fc = mac->original_fc;
2115 /* Allow time for pending master requests to run */
2116 mac->ops.reset_hw(hw);
2119 if (mac->ops.init_hw(hw))
2120 ndev_err(adapter->netdev, "Hardware Error\n");
2122 e1000_update_mng_vlan(adapter);
2124 /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
2125 ew32(VET, ETH_P_8021Q);
2127 e1000e_reset_adaptive(hw);
2128 e1000_get_phy_info(hw);
2130 if (!(adapter->flags & FLAG_SMART_POWER_DOWN)) {
2132 /* speed up time to link by disabling smart power down, ignore
2133 * the return value of this function because there is nothing
2134 * different we would do if it failed */
2135 e1e_rphy(hw, IGP02E1000_PHY_POWER_MGMT, &phy_data);
2136 phy_data &= ~IGP02E1000_PM_SPD;
2137 e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, phy_data);
2140 e1000_release_manageability(adapter);
2143 int e1000e_up(struct e1000_adapter *adapter)
2145 struct e1000_hw *hw = &adapter->hw;
2147 /* hardware has been reset, we need to reload some things */
2148 e1000_configure(adapter);
2150 clear_bit(__E1000_DOWN, &adapter->state);
2152 napi_enable(&adapter->napi);
2153 e1000_irq_enable(adapter);
2155 /* fire a link change interrupt to start the watchdog */
2156 ew32(ICS, E1000_ICS_LSC);
2160 void e1000e_down(struct e1000_adapter *adapter)
2162 struct net_device *netdev = adapter->netdev;
2163 struct e1000_hw *hw = &adapter->hw;
2166 /* signal that we're down so the interrupt handler does not
2167 * reschedule our watchdog timer */
2168 set_bit(__E1000_DOWN, &adapter->state);
2170 /* disable receives in the hardware */
2172 ew32(RCTL, rctl & ~E1000_RCTL_EN);
2173 /* flush and sleep below */
2175 netif_stop_queue(netdev);
2177 /* disable transmits in the hardware */
2179 tctl &= ~E1000_TCTL_EN;
2181 /* flush both disables and wait for them to finish */
2185 napi_disable(&adapter->napi);
2186 atomic_set(&adapter->irq_sem, 0);
2187 e1000_irq_disable(adapter);
2189 del_timer_sync(&adapter->watchdog_timer);
2190 del_timer_sync(&adapter->phy_info_timer);
2192 netdev->tx_queue_len = adapter->tx_queue_len;
2193 netif_carrier_off(netdev);
2194 adapter->link_speed = 0;
2195 adapter->link_duplex = 0;
2197 e1000e_reset(adapter);
2198 e1000_clean_tx_ring(adapter);
2199 e1000_clean_rx_ring(adapter);
2202 * TODO: for power management, we could drop the link and
2203 * pci_disable_device here.
2207 void e1000e_reinit_locked(struct e1000_adapter *adapter)
2210 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
2212 e1000e_down(adapter);
2214 clear_bit(__E1000_RESETTING, &adapter->state);
2218 * e1000_sw_init - Initialize general software structures (struct e1000_adapter)
2219 * @adapter: board private structure to initialize
2221 * e1000_sw_init initializes the Adapter private data structure.
2222 * Fields are initialized based on PCI device information and
2223 * OS network device settings (MTU size).
2225 static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
2227 struct e1000_hw *hw = &adapter->hw;
2228 struct net_device *netdev = adapter->netdev;
2230 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN;
2231 adapter->rx_ps_bsize0 = 128;
2232 hw->mac.max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
2233 hw->mac.min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
2235 adapter->tx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL);
2236 if (!adapter->tx_ring)
2239 adapter->rx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL);
2240 if (!adapter->rx_ring)
2243 spin_lock_init(&adapter->tx_queue_lock);
2245 /* Explicitly disable IRQ since the NIC can be in any state. */
2246 atomic_set(&adapter->irq_sem, 0);
2247 e1000_irq_disable(adapter);
2249 spin_lock_init(&adapter->stats_lock);
2251 set_bit(__E1000_DOWN, &adapter->state);
2255 ndev_err(netdev, "Unable to allocate memory for queues\n");
2256 kfree(adapter->rx_ring);
2257 kfree(adapter->tx_ring);
2262 * e1000_open - Called when a network interface is made active
2263 * @netdev: network interface device structure
2265 * Returns 0 on success, negative value on failure
2267 * The open entry point is called when a network interface is made
2268 * active by the system (IFF_UP). At this point all resources needed
2269 * for transmit and receive operations are allocated, the interrupt
2270 * handler is registered with the OS, the watchdog timer is started,
2271 * and the stack is notified that the interface is ready.
2273 static int e1000_open(struct net_device *netdev)
2275 struct e1000_adapter *adapter = netdev_priv(netdev);
2276 struct e1000_hw *hw = &adapter->hw;
2279 /* disallow open during test */
2280 if (test_bit(__E1000_TESTING, &adapter->state))
2283 /* allocate transmit descriptors */
2284 err = e1000e_setup_tx_resources(adapter);
2288 /* allocate receive descriptors */
2289 err = e1000e_setup_rx_resources(adapter);
2293 e1000e_power_up_phy(adapter);
2295 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE;
2296 if ((adapter->hw.mng_cookie.status &
2297 E1000_MNG_DHCP_COOKIE_STATUS_VLAN))
2298 e1000_update_mng_vlan(adapter);
2300 /* If AMT is enabled, let the firmware know that the network
2301 * interface is now open */
2302 if ((adapter->flags & FLAG_HAS_AMT) &&
2303 e1000e_check_mng_mode(&adapter->hw))
2304 e1000_get_hw_control(adapter);
2306 /* before we allocate an interrupt, we must be ready to handle it.
2307 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
2308 * as soon as we call pci_request_irq, so we have to setup our
2309 * clean_rx handler before we do so. */
2310 e1000_configure(adapter);
2312 err = e1000_request_irq(adapter);
2316 /* From here on the code is the same as e1000e_up() */
2317 clear_bit(__E1000_DOWN, &adapter->state);
2319 napi_enable(&adapter->napi);
2321 e1000_irq_enable(adapter);
2323 /* fire a link status change interrupt to start the watchdog */
2324 ew32(ICS, E1000_ICS_LSC);
2329 e1000_release_hw_control(adapter);
2330 e1000_power_down_phy(adapter);
2331 e1000e_free_rx_resources(adapter);
2333 e1000e_free_tx_resources(adapter);
2335 e1000e_reset(adapter);
2341 * e1000_close - Disables a network interface
2342 * @netdev: network interface device structure
2344 * Returns 0, this is not allowed to fail
2346 * The close entry point is called when an interface is de-activated
2347 * by the OS. The hardware is still under the drivers control, but
2348 * needs to be disabled. A global MAC reset is issued to stop the
2349 * hardware, and all transmit and receive resources are freed.
2351 static int e1000_close(struct net_device *netdev)
2353 struct e1000_adapter *adapter = netdev_priv(netdev);
2355 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
2356 e1000e_down(adapter);
2357 e1000_power_down_phy(adapter);
2358 e1000_free_irq(adapter);
2360 e1000e_free_tx_resources(adapter);
2361 e1000e_free_rx_resources(adapter);
2363 /* kill manageability vlan ID if supported, but not if a vlan with
2364 * the same ID is registered on the host OS (let 8021q kill it) */
2365 if ((adapter->hw.mng_cookie.status &
2366 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
2368 vlan_group_get_device(adapter->vlgrp, adapter->mng_vlan_id)))
2369 e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
2371 /* If AMT is enabled, let the firmware know that the network
2372 * interface is now closed */
2373 if ((adapter->flags & FLAG_HAS_AMT) &&
2374 e1000e_check_mng_mode(&adapter->hw))
2375 e1000_release_hw_control(adapter);
2380 * e1000_set_mac - Change the Ethernet Address of the NIC
2381 * @netdev: network interface device structure
2382 * @p: pointer to an address structure
2384 * Returns 0 on success, negative on failure
2386 static int e1000_set_mac(struct net_device *netdev, void *p)
2388 struct e1000_adapter *adapter = netdev_priv(netdev);
2389 struct sockaddr *addr = p;
2391 if (!is_valid_ether_addr(addr->sa_data))
2392 return -EADDRNOTAVAIL;
2394 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
2395 memcpy(adapter->hw.mac.addr, addr->sa_data, netdev->addr_len);
2397 e1000e_rar_set(&adapter->hw, adapter->hw.mac.addr, 0);
2399 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) {
2400 /* activate the work around */
2401 e1000e_set_laa_state_82571(&adapter->hw, 1);
2403 /* Hold a copy of the LAA in RAR[14] This is done so that
2404 * between the time RAR[0] gets clobbered and the time it
2405 * gets fixed (in e1000_watchdog), the actual LAA is in one
2406 * of the RARs and no incoming packets directed to this port
2407 * are dropped. Eventually the LAA will be in RAR[0] and
2409 e1000e_rar_set(&adapter->hw,
2410 adapter->hw.mac.addr,
2411 adapter->hw.mac.rar_entry_count - 1);
2417 /* Need to wait a few seconds after link up to get diagnostic information from
2419 static void e1000_update_phy_info(unsigned long data)
2421 struct e1000_adapter *adapter = (struct e1000_adapter *) data;
2422 e1000_get_phy_info(&adapter->hw);
2426 * e1000e_update_stats - Update the board statistics counters
2427 * @adapter: board private structure
2429 void e1000e_update_stats(struct e1000_adapter *adapter)
2431 struct e1000_hw *hw = &adapter->hw;
2432 struct pci_dev *pdev = adapter->pdev;
2433 unsigned long irq_flags;
2436 #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
2439 * Prevent stats update while adapter is being reset, or if the pci
2440 * connection is down.
2442 if (adapter->link_speed == 0)
2444 if (pci_channel_offline(pdev))
2447 spin_lock_irqsave(&adapter->stats_lock, irq_flags);
2449 /* these counters are modified from e1000_adjust_tbi_stats,
2450 * called from the interrupt context, so they must only
2451 * be written while holding adapter->stats_lock
2454 adapter->stats.crcerrs += er32(CRCERRS);
2455 adapter->stats.gprc += er32(GPRC);
2456 adapter->stats.gorcl += er32(GORCL);
2457 adapter->stats.gorch += er32(GORCH);
2458 adapter->stats.bprc += er32(BPRC);
2459 adapter->stats.mprc += er32(MPRC);
2460 adapter->stats.roc += er32(ROC);
2462 if (adapter->flags & FLAG_HAS_STATS_PTC_PRC) {
2463 adapter->stats.prc64 += er32(PRC64);
2464 adapter->stats.prc127 += er32(PRC127);
2465 adapter->stats.prc255 += er32(PRC255);
2466 adapter->stats.prc511 += er32(PRC511);
2467 adapter->stats.prc1023 += er32(PRC1023);
2468 adapter->stats.prc1522 += er32(PRC1522);
2469 adapter->stats.symerrs += er32(SYMERRS);
2470 adapter->stats.sec += er32(SEC);
2473 adapter->stats.mpc += er32(MPC);
2474 adapter->stats.scc += er32(SCC);
2475 adapter->stats.ecol += er32(ECOL);
2476 adapter->stats.mcc += er32(MCC);
2477 adapter->stats.latecol += er32(LATECOL);
2478 adapter->stats.dc += er32(DC);
2479 adapter->stats.rlec += er32(RLEC);
2480 adapter->stats.xonrxc += er32(XONRXC);
2481 adapter->stats.xontxc += er32(XONTXC);
2482 adapter->stats.xoffrxc += er32(XOFFRXC);
2483 adapter->stats.xofftxc += er32(XOFFTXC);
2484 adapter->stats.fcruc += er32(FCRUC);
2485 adapter->stats.gptc += er32(GPTC);
2486 adapter->stats.gotcl += er32(GOTCL);
2487 adapter->stats.gotch += er32(GOTCH);
2488 adapter->stats.rnbc += er32(RNBC);
2489 adapter->stats.ruc += er32(RUC);
2490 adapter->stats.rfc += er32(RFC);
2491 adapter->stats.rjc += er32(RJC);
2492 adapter->stats.torl += er32(TORL);
2493 adapter->stats.torh += er32(TORH);
2494 adapter->stats.totl += er32(TOTL);
2495 adapter->stats.toth += er32(TOTH);
2496 adapter->stats.tpr += er32(TPR);
2498 if (adapter->flags & FLAG_HAS_STATS_PTC_PRC) {
2499 adapter->stats.ptc64 += er32(PTC64);
2500 adapter->stats.ptc127 += er32(PTC127);
2501 adapter->stats.ptc255 += er32(PTC255);
2502 adapter->stats.ptc511 += er32(PTC511);
2503 adapter->stats.ptc1023 += er32(PTC1023);
2504 adapter->stats.ptc1522 += er32(PTC1522);
2507 adapter->stats.mptc += er32(MPTC);
2508 adapter->stats.bptc += er32(BPTC);
2510 /* used for adaptive IFS */
2512 hw->mac.tx_packet_delta = er32(TPT);
2513 adapter->stats.tpt += hw->mac.tx_packet_delta;
2514 hw->mac.collision_delta = er32(COLC);
2515 adapter->stats.colc += hw->mac.collision_delta;
2517 adapter->stats.algnerrc += er32(ALGNERRC);
2518 adapter->stats.rxerrc += er32(RXERRC);
2519 adapter->stats.tncrs += er32(TNCRS);
2520 adapter->stats.cexterr += er32(CEXTERR);
2521 adapter->stats.tsctc += er32(TSCTC);
2522 adapter->stats.tsctfc += er32(TSCTFC);
2524 adapter->stats.iac += er32(IAC);
2526 if (adapter->flags & FLAG_HAS_STATS_ICR_ICT) {
2527 adapter->stats.icrxoc += er32(ICRXOC);
2528 adapter->stats.icrxptc += er32(ICRXPTC);
2529 adapter->stats.icrxatc += er32(ICRXATC);
2530 adapter->stats.ictxptc += er32(ICTXPTC);
2531 adapter->stats.ictxatc += er32(ICTXATC);
2532 adapter->stats.ictxqec += er32(ICTXQEC);
2533 adapter->stats.ictxqmtc += er32(ICTXQMTC);
2534 adapter->stats.icrxdmtc += er32(ICRXDMTC);
2537 /* Fill out the OS statistics structure */
2538 adapter->net_stats.rx_packets = adapter->stats.gprc;
2539 adapter->net_stats.tx_packets = adapter->stats.gptc;
2540 adapter->net_stats.rx_bytes = adapter->stats.gorcl;
2541 adapter->net_stats.tx_bytes = adapter->stats.gotcl;
2542 adapter->net_stats.multicast = adapter->stats.mprc;
2543 adapter->net_stats.collisions = adapter->stats.colc;
2547 /* RLEC on some newer hardware can be incorrect so build
2548 * our own version based on RUC and ROC */
2549 adapter->net_stats.rx_errors = adapter->stats.rxerrc +
2550 adapter->stats.crcerrs + adapter->stats.algnerrc +
2551 adapter->stats.ruc + adapter->stats.roc +
2552 adapter->stats.cexterr;
2553 adapter->net_stats.rx_length_errors = adapter->stats.ruc +
2555 adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs;
2556 adapter->net_stats.rx_frame_errors = adapter->stats.algnerrc;
2557 adapter->net_stats.rx_missed_errors = adapter->stats.mpc;
2560 adapter->net_stats.tx_errors = adapter->stats.ecol +
2561 adapter->stats.latecol;
2562 adapter->net_stats.tx_aborted_errors = adapter->stats.ecol;
2563 adapter->net_stats.tx_window_errors = adapter->stats.latecol;
2564 adapter->net_stats.tx_carrier_errors = adapter->stats.tncrs;
2566 /* Tx Dropped needs to be maintained elsewhere */
2569 if (hw->media_type == e1000_media_type_copper) {
2570 if ((adapter->link_speed == SPEED_1000) &&
2571 (!e1e_rphy(hw, PHY_1000T_STATUS, &phy_tmp))) {
2572 phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
2573 adapter->phy_stats.idle_errors += phy_tmp;
2577 /* Management Stats */
2578 adapter->stats.mgptc += er32(MGTPTC);
2579 adapter->stats.mgprc += er32(MGTPRC);
2580 adapter->stats.mgpdc += er32(MGTPDC);
2582 spin_unlock_irqrestore(&adapter->stats_lock, irq_flags);
2585 static void e1000_print_link_info(struct e1000_adapter *adapter)
2587 struct net_device *netdev = adapter->netdev;
2588 struct e1000_hw *hw = &adapter->hw;
2589 u32 ctrl = er32(CTRL);
2592 "Link is Up %d Mbps %s, Flow Control: %s\n",
2593 adapter->link_speed,
2594 (adapter->link_duplex == FULL_DUPLEX) ?
2595 "Full Duplex" : "Half Duplex",
2596 ((ctrl & E1000_CTRL_TFCE) && (ctrl & E1000_CTRL_RFCE)) ?
2598 ((ctrl & E1000_CTRL_RFCE) ? "RX" :
2599 ((ctrl & E1000_CTRL_TFCE) ? "TX" : "None" )));
2603 * e1000_watchdog - Timer Call-back
2604 * @data: pointer to adapter cast into an unsigned long
2606 static void e1000_watchdog(unsigned long data)
2608 struct e1000_adapter *adapter = (struct e1000_adapter *) data;
2610 /* Do the rest outside of interrupt context */
2611 schedule_work(&adapter->watchdog_task);
2613 /* TODO: make this use queue_delayed_work() */
2616 static void e1000_watchdog_task(struct work_struct *work)
2618 struct e1000_adapter *adapter = container_of(work,
2619 struct e1000_adapter, watchdog_task);
2621 struct net_device *netdev = adapter->netdev;
2622 struct e1000_mac_info *mac = &adapter->hw.mac;
2623 struct e1000_ring *tx_ring = adapter->tx_ring;
2624 struct e1000_hw *hw = &adapter->hw;
2629 if ((netif_carrier_ok(netdev)) &&
2630 (er32(STATUS) & E1000_STATUS_LU))
2633 ret_val = mac->ops.check_for_link(hw);
2634 if ((ret_val == E1000_ERR_PHY) &&
2635 (adapter->hw.phy.type == e1000_phy_igp_3) &&
2637 E1000_PHY_CTRL_GBE_DISABLE)) {
2638 /* See e1000_kmrn_lock_loss_workaround_ich8lan() */
2640 "Gigabit has been disabled, downgrading speed\n");
2643 if ((e1000e_enable_tx_pkt_filtering(hw)) &&
2644 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id))
2645 e1000_update_mng_vlan(adapter);
2647 if ((adapter->hw.media_type == e1000_media_type_internal_serdes) &&
2648 !(er32(TXCW) & E1000_TXCW_ANE))
2649 link = adapter->hw.mac.serdes_has_link;
2651 link = er32(STATUS) & E1000_STATUS_LU;
2654 if (!netif_carrier_ok(netdev)) {
2656 mac->ops.get_link_up_info(&adapter->hw,
2657 &adapter->link_speed,
2658 &adapter->link_duplex);
2659 e1000_print_link_info(adapter);
2660 /* tweak tx_queue_len according to speed/duplex
2661 * and adjust the timeout factor */
2662 netdev->tx_queue_len = adapter->tx_queue_len;
2663 adapter->tx_timeout_factor = 1;
2664 switch (adapter->link_speed) {
2667 netdev->tx_queue_len = 10;
2668 adapter->tx_timeout_factor = 14;
2672 netdev->tx_queue_len = 100;
2673 /* maybe add some timeout factor ? */
2677 /* workaround: re-program speed mode bit after
2679 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) &&
2682 tarc0 = er32(TARC0);
2683 tarc0 &= ~SPEED_MODE_BIT;
2687 /* disable TSO for pcie and 10/100 speeds, to avoid
2688 * some hardware issues */
2689 if (!(adapter->flags & FLAG_TSO_FORCE)) {
2690 switch (adapter->link_speed) {
2694 "10/100 speed: disabling TSO\n");
2695 netdev->features &= ~NETIF_F_TSO;
2696 netdev->features &= ~NETIF_F_TSO6;
2699 netdev->features |= NETIF_F_TSO;
2700 netdev->features |= NETIF_F_TSO6;
2708 /* enable transmits in the hardware, need to do this
2709 * after setting TARC0 */
2711 tctl |= E1000_TCTL_EN;
2714 netif_carrier_on(netdev);
2715 netif_wake_queue(netdev);
2717 if (!test_bit(__E1000_DOWN, &adapter->state))
2718 mod_timer(&adapter->phy_info_timer,
2719 round_jiffies(jiffies + 2 * HZ));
2721 /* make sure the receive unit is started */
2722 if (adapter->flags & FLAG_RX_NEEDS_RESTART) {
2723 u32 rctl = er32(RCTL);
2729 if (netif_carrier_ok(netdev)) {
2730 adapter->link_speed = 0;
2731 adapter->link_duplex = 0;
2732 ndev_info(netdev, "Link is Down\n");
2733 netif_carrier_off(netdev);
2734 netif_stop_queue(netdev);
2735 if (!test_bit(__E1000_DOWN, &adapter->state))
2736 mod_timer(&adapter->phy_info_timer,
2737 round_jiffies(jiffies + 2 * HZ));
2739 if (adapter->flags & FLAG_RX_NEEDS_RESTART)
2740 schedule_work(&adapter->reset_task);
2745 e1000e_update_stats(adapter);
2747 mac->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old;
2748 adapter->tpt_old = adapter->stats.tpt;
2749 mac->collision_delta = adapter->stats.colc - adapter->colc_old;
2750 adapter->colc_old = adapter->stats.colc;
2752 adapter->gorcl = adapter->stats.gorcl - adapter->gorcl_old;
2753 adapter->gorcl_old = adapter->stats.gorcl;
2754 adapter->gotcl = adapter->stats.gotcl - adapter->gotcl_old;
2755 adapter->gotcl_old = adapter->stats.gotcl;
2757 e1000e_update_adaptive(&adapter->hw);
2759 if (!netif_carrier_ok(netdev)) {
2760 tx_pending = (e1000_desc_unused(tx_ring) + 1 <
2763 /* We've lost link, so the controller stops DMA,
2764 * but we've got queued Tx work that's never going
2765 * to get done, so reset controller to flush Tx.
2766 * (Do the reset outside of interrupt context). */
2767 adapter->tx_timeout_count++;
2768 schedule_work(&adapter->reset_task);
2772 /* Cause software interrupt to ensure rx ring is cleaned */
2773 ew32(ICS, E1000_ICS_RXDMT0);
2775 /* Force detection of hung controller every watchdog period */
2776 adapter->detect_tx_hung = 1;
2778 /* With 82571 controllers, LAA may be overwritten due to controller
2779 * reset from the other port. Set the appropriate LAA in RAR[0] */
2780 if (e1000e_get_laa_state_82571(hw))
2781 e1000e_rar_set(hw, adapter->hw.mac.addr, 0);
2783 /* Reset the timer */
2784 if (!test_bit(__E1000_DOWN, &adapter->state))
2785 mod_timer(&adapter->watchdog_timer,
2786 round_jiffies(jiffies + 2 * HZ));
2789 #define E1000_TX_FLAGS_CSUM 0x00000001
2790 #define E1000_TX_FLAGS_VLAN 0x00000002
2791 #define E1000_TX_FLAGS_TSO 0x00000004
2792 #define E1000_TX_FLAGS_IPV4 0x00000008
2793 #define E1000_TX_FLAGS_VLAN_MASK 0xffff0000
2794 #define E1000_TX_FLAGS_VLAN_SHIFT 16
2796 static int e1000_tso(struct e1000_adapter *adapter,
2797 struct sk_buff *skb)
2799 struct e1000_ring *tx_ring = adapter->tx_ring;
2800 struct e1000_context_desc *context_desc;
2801 struct e1000_buffer *buffer_info;
2804 u16 ipcse = 0, tucse, mss;
2805 u8 ipcss, ipcso, tucss, tucso, hdr_len;
2808 if (skb_is_gso(skb)) {
2809 if (skb_header_cloned(skb)) {
2810 err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
2815 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
2816 mss = skb_shinfo(skb)->gso_size;
2817 if (skb->protocol == htons(ETH_P_IP)) {
2818 struct iphdr *iph = ip_hdr(skb);
2821 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
2825 cmd_length = E1000_TXD_CMD_IP;
2826 ipcse = skb_transport_offset(skb) - 1;
2827 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
2828 ipv6_hdr(skb)->payload_len = 0;
2829 tcp_hdr(skb)->check =
2830 ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
2831 &ipv6_hdr(skb)->daddr,
2835 ipcss = skb_network_offset(skb);
2836 ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data;
2837 tucss = skb_transport_offset(skb);
2838 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data;
2841 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE |
2842 E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));
2844 i = tx_ring->next_to_use;
2845 context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
2846 buffer_info = &tx_ring->buffer_info[i];
2848 context_desc->lower_setup.ip_fields.ipcss = ipcss;
2849 context_desc->lower_setup.ip_fields.ipcso = ipcso;
2850 context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse);
2851 context_desc->upper_setup.tcp_fields.tucss = tucss;
2852 context_desc->upper_setup.tcp_fields.tucso = tucso;
2853 context_desc->upper_setup.tcp_fields.tucse = cpu_to_le16(tucse);
2854 context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss);
2855 context_desc->tcp_seg_setup.fields.hdr_len = hdr_len;
2856 context_desc->cmd_and_length = cpu_to_le32(cmd_length);
2858 buffer_info->time_stamp = jiffies;
2859 buffer_info->next_to_watch = i;
2862 if (i == tx_ring->count)
2864 tx_ring->next_to_use = i;
2872 static bool e1000_tx_csum(struct e1000_adapter *adapter, struct sk_buff *skb)
2874 struct e1000_ring *tx_ring = adapter->tx_ring;
2875 struct e1000_context_desc *context_desc;
2876 struct e1000_buffer *buffer_info;
2880 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2881 css = skb_transport_offset(skb);
2883 i = tx_ring->next_to_use;
2884 buffer_info = &tx_ring->buffer_info[i];
2885 context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
2887 context_desc->lower_setup.ip_config = 0;
2888 context_desc->upper_setup.tcp_fields.tucss = css;
2889 context_desc->upper_setup.tcp_fields.tucso =
2890 css + skb->csum_offset;
2891 context_desc->upper_setup.tcp_fields.tucse = 0;
2892 context_desc->tcp_seg_setup.data = 0;
2893 context_desc->cmd_and_length = cpu_to_le32(E1000_TXD_CMD_DEXT);
2895 buffer_info->time_stamp = jiffies;
2896 buffer_info->next_to_watch = i;
2899 if (i == tx_ring->count)
2901 tx_ring->next_to_use = i;
2909 #define E1000_MAX_PER_TXD 8192
2910 #define E1000_MAX_TXD_PWR 12
2912 static int e1000_tx_map(struct e1000_adapter *adapter,
2913 struct sk_buff *skb, unsigned int first,
2914 unsigned int max_per_txd, unsigned int nr_frags,
2917 struct e1000_ring *tx_ring = adapter->tx_ring;
2918 struct e1000_buffer *buffer_info;
2919 unsigned int len = skb->len - skb->data_len;
2920 unsigned int offset = 0, size, count = 0, i;
2923 i = tx_ring->next_to_use;
2926 buffer_info = &tx_ring->buffer_info[i];
2927 size = min(len, max_per_txd);
2929 /* Workaround for premature desc write-backs
2930 * in TSO mode. Append 4-byte sentinel desc */
2931 if (mss && !nr_frags && size == len && size > 8)
2934 buffer_info->length = size;
2935 /* set time_stamp *before* dma to help avoid a possible race */
2936 buffer_info->time_stamp = jiffies;
2938 pci_map_single(adapter->pdev,
2942 if (pci_dma_mapping_error(buffer_info->dma)) {
2943 dev_err(&adapter->pdev->dev, "TX DMA map failed\n");
2944 adapter->tx_dma_failed++;
2947 buffer_info->next_to_watch = i;
2953 if (i == tx_ring->count)
2957 for (f = 0; f < nr_frags; f++) {
2958 struct skb_frag_struct *frag;
2960 frag = &skb_shinfo(skb)->frags[f];
2962 offset = frag->page_offset;
2965 buffer_info = &tx_ring->buffer_info[i];
2966 size = min(len, max_per_txd);
2967 /* Workaround for premature desc write-backs
2968 * in TSO mode. Append 4-byte sentinel desc */
2969 if (mss && f == (nr_frags-1) && size == len && size > 8)
2972 buffer_info->length = size;
2973 buffer_info->time_stamp = jiffies;
2975 pci_map_page(adapter->pdev,
2980 if (pci_dma_mapping_error(buffer_info->dma)) {
2981 dev_err(&adapter->pdev->dev,
2982 "TX DMA page map failed\n");
2983 adapter->tx_dma_failed++;
2987 buffer_info->next_to_watch = i;
2994 if (i == tx_ring->count)
3000 i = tx_ring->count - 1;
3004 tx_ring->buffer_info[i].skb = skb;
3005 tx_ring->buffer_info[first].next_to_watch = i;
3010 static void e1000_tx_queue(struct e1000_adapter *adapter,
3011 int tx_flags, int count)
3013 struct e1000_ring *tx_ring = adapter->tx_ring;
3014 struct e1000_tx_desc *tx_desc = NULL;
3015 struct e1000_buffer *buffer_info;
3016 u32 txd_upper = 0, txd_lower = E1000_TXD_CMD_IFCS;
3019 if (tx_flags & E1000_TX_FLAGS_TSO) {
3020 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D |
3022 txd_upper |= E1000_TXD_POPTS_TXSM << 8;
3024 if (tx_flags & E1000_TX_FLAGS_IPV4)
3025 txd_upper |= E1000_TXD_POPTS_IXSM << 8;
3028 if (tx_flags & E1000_TX_FLAGS_CSUM) {
3029 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D;
3030 txd_upper |= E1000_TXD_POPTS_TXSM << 8;
3033 if (tx_flags & E1000_TX_FLAGS_VLAN) {
3034 txd_lower |= E1000_TXD_CMD_VLE;
3035 txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK);
3038 i = tx_ring->next_to_use;
3041 buffer_info = &tx_ring->buffer_info[i];
3042 tx_desc = E1000_TX_DESC(*tx_ring, i);
3043 tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
3044 tx_desc->lower.data =
3045 cpu_to_le32(txd_lower | buffer_info->length);
3046 tx_desc->upper.data = cpu_to_le32(txd_upper);
3049 if (i == tx_ring->count)
3053 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd);
3055 /* Force memory writes to complete before letting h/w
3056 * know there are new descriptors to fetch. (Only
3057 * applicable for weak-ordered memory model archs,
3058 * such as IA-64). */
3061 tx_ring->next_to_use = i;
3062 writel(i, adapter->hw.hw_addr + tx_ring->tail);
3063 /* we need this if more than one processor can write to our tail
3064 * at a time, it synchronizes IO on IA64/Altix systems */
3068 #define MINIMUM_DHCP_PACKET_SIZE 282
3069 static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter,
3070 struct sk_buff *skb)
3072 struct e1000_hw *hw = &adapter->hw;
3075 if (vlan_tx_tag_present(skb)) {
3076 if (!((vlan_tx_tag_get(skb) == adapter->hw.mng_cookie.vlan_id)
3077 && (adapter->hw.mng_cookie.status &
3078 E1000_MNG_DHCP_COOKIE_STATUS_VLAN)))
3082 if (skb->len <= MINIMUM_DHCP_PACKET_SIZE)
3085 if (((struct ethhdr *) skb->data)->h_proto != htons(ETH_P_IP))
3089 const struct iphdr *ip = (struct iphdr *)((u8 *)skb->data+14);
3092 if (ip->protocol != IPPROTO_UDP)
3095 udp = (struct udphdr *)((u8 *)ip + (ip->ihl << 2));
3096 if (ntohs(udp->dest) != 67)
3099 offset = (u8 *)udp + 8 - skb->data;
3100 length = skb->len - offset;
3101 return e1000e_mng_write_dhcp_info(hw, (u8 *)udp + 8, length);
3107 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
3109 struct e1000_adapter *adapter = netdev_priv(netdev);
3111 netif_stop_queue(netdev);
3112 /* Herbert's original patch had:
3113 * smp_mb__after_netif_stop_queue();
3114 * but since that doesn't exist yet, just open code it. */
3117 /* We need to check again in a case another CPU has just
3118 * made room available. */
3119 if (e1000_desc_unused(adapter->tx_ring) < size)
3123 netif_start_queue(netdev);
3124 ++adapter->restart_queue;
3128 static int e1000_maybe_stop_tx(struct net_device *netdev, int size)
3130 struct e1000_adapter *adapter = netdev_priv(netdev);
3132 if (e1000_desc_unused(adapter->tx_ring) >= size)
3134 return __e1000_maybe_stop_tx(netdev, size);
3137 #define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1 )
3138 static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
3140 struct e1000_adapter *adapter = netdev_priv(netdev);
3141 struct e1000_ring *tx_ring = adapter->tx_ring;
3143 unsigned int max_per_txd = E1000_MAX_PER_TXD;
3144 unsigned int max_txd_pwr = E1000_MAX_TXD_PWR;
3145 unsigned int tx_flags = 0;
3146 unsigned int len = skb->len - skb->data_len;
3147 unsigned long irq_flags;
3148 unsigned int nr_frags;
3154 if (test_bit(__E1000_DOWN, &adapter->state)) {
3155 dev_kfree_skb_any(skb);
3156 return NETDEV_TX_OK;
3159 if (skb->len <= 0) {
3160 dev_kfree_skb_any(skb);
3161 return NETDEV_TX_OK;
3164 mss = skb_shinfo(skb)->gso_size;
3165 /* The controller does a simple calculation to
3166 * make sure there is enough room in the FIFO before
3167 * initiating the DMA for each buffer. The calc is:
3168 * 4 = ceil(buffer len/mss). To make sure we don't
3169 * overrun the FIFO, adjust the max buffer len if mss
3173 max_per_txd = min(mss << 2, max_per_txd);
3174 max_txd_pwr = fls(max_per_txd) - 1;
3176 /* TSO Workaround for 82571/2/3 Controllers -- if skb->data
3177 * points to just header, pull a few bytes of payload from
3178 * frags into skb->data */
3179 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
3180 if (skb->data_len && (hdr_len == len)) {
3181 unsigned int pull_size;
3183 pull_size = min((unsigned int)4, skb->data_len);
3184 if (!__pskb_pull_tail(skb, pull_size)) {
3186 "__pskb_pull_tail failed.\n");
3187 dev_kfree_skb_any(skb);
3188 return NETDEV_TX_OK;
3190 len = skb->len - skb->data_len;
3194 /* reserve a descriptor for the offload context */
3195 if ((mss) || (skb->ip_summed == CHECKSUM_PARTIAL))
3199 count += TXD_USE_COUNT(len, max_txd_pwr);
3201 nr_frags = skb_shinfo(skb)->nr_frags;
3202 for (f = 0; f < nr_frags; f++)
3203 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size,
3206 if (adapter->hw.mac.tx_pkt_filtering)
3207 e1000_transfer_dhcp_info(adapter, skb);
3209 if (!spin_trylock_irqsave(&adapter->tx_queue_lock, irq_flags))
3210 /* Collision - tell upper layer to requeue */
3211 return NETDEV_TX_LOCKED;
3213 /* need: count + 2 desc gap to keep tail from touching
3214 * head, otherwise try next time */
3215 if (e1000_maybe_stop_tx(netdev, count + 2)) {
3216 spin_unlock_irqrestore(&adapter->tx_queue_lock, irq_flags);
3217 return NETDEV_TX_BUSY;
3220 if (adapter->vlgrp && vlan_tx_tag_present(skb)) {
3221 tx_flags |= E1000_TX_FLAGS_VLAN;
3222 tx_flags |= (vlan_tx_tag_get(skb) << E1000_TX_FLAGS_VLAN_SHIFT);
3225 first = tx_ring->next_to_use;
3227 tso = e1000_tso(adapter, skb);
3229 dev_kfree_skb_any(skb);
3230 spin_unlock_irqrestore(&adapter->tx_queue_lock, irq_flags);
3231 return NETDEV_TX_OK;
3235 tx_flags |= E1000_TX_FLAGS_TSO;
3236 else if (e1000_tx_csum(adapter, skb))
3237 tx_flags |= E1000_TX_FLAGS_CSUM;
3239 /* Old method was to assume IPv4 packet by default if TSO was enabled.
3240 * 82571 hardware supports TSO capabilities for IPv6 as well...
3241 * no longer assume, we must. */
3242 if (skb->protocol == htons(ETH_P_IP))
3243 tx_flags |= E1000_TX_FLAGS_IPV4;
3245 count = e1000_tx_map(adapter, skb, first, max_per_txd, nr_frags, mss);
3247 /* handle pci_map_single() error in e1000_tx_map */
3248 dev_kfree_skb_any(skb);
3249 spin_unlock_irqrestore(&adapter->tx_queue_lock, irq_flags);
3250 return NETDEV_TX_OK;
3253 e1000_tx_queue(adapter, tx_flags, count);
3255 netdev->trans_start = jiffies;
3257 /* Make sure there is space in the ring for the next send. */
3258 e1000_maybe_stop_tx(netdev, MAX_SKB_FRAGS + 2);
3260 spin_unlock_irqrestore(&adapter->tx_queue_lock, irq_flags);
3261 return NETDEV_TX_OK;
3265 * e1000_tx_timeout - Respond to a Tx Hang
3266 * @netdev: network interface device structure
3268 static void e1000_tx_timeout(struct net_device *netdev)
3270 struct e1000_adapter *adapter = netdev_priv(netdev);
3272 /* Do the reset outside of interrupt context */
3273 adapter->tx_timeout_count++;
3274 schedule_work(&adapter->reset_task);
3277 static void e1000_reset_task(struct work_struct *work)
3279 struct e1000_adapter *adapter;
3280 adapter = container_of(work, struct e1000_adapter, reset_task);
3282 e1000e_reinit_locked(adapter);
3286 * e1000_get_stats - Get System Network Statistics
3287 * @netdev: network interface device structure
3289 * Returns the address of the device statistics structure.
3290 * The statistics are actually updated from the timer callback.
3292 static struct net_device_stats *e1000_get_stats(struct net_device *netdev)
3294 struct e1000_adapter *adapter = netdev_priv(netdev);
3296 /* only return the current stats */
3297 return &adapter->net_stats;
3301 * e1000_change_mtu - Change the Maximum Transfer Unit
3302 * @netdev: network interface device structure
3303 * @new_mtu: new value for maximum frame size
3305 * Returns 0 on success, negative on failure
3307 static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
3309 struct e1000_adapter *adapter = netdev_priv(netdev);
3310 int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
3312 if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) ||
3313 (max_frame > MAX_JUMBO_FRAME_SIZE)) {
3314 ndev_err(netdev, "Invalid MTU setting\n");
3318 /* Jumbo frame size limits */
3319 if (max_frame > ETH_FRAME_LEN + ETH_FCS_LEN) {
3320 if (!(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) {
3321 ndev_err(netdev, "Jumbo Frames not supported.\n");
3324 if (adapter->hw.phy.type == e1000_phy_ife) {
3325 ndev_err(netdev, "Jumbo Frames not supported.\n");
3330 #define MAX_STD_JUMBO_FRAME_SIZE 9234
3331 if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) {
3332 ndev_err(netdev, "MTU > 9216 not supported.\n");
3336 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
3338 /* e1000e_down has a dependency on max_frame_size */
3339 adapter->hw.mac.max_frame_size = max_frame;
3340 if (netif_running(netdev))
3341 e1000e_down(adapter);
3343 /* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
3344 * means we reserve 2 more, this pushes us to allocate from the next
3346 * i.e. RXBUFFER_2048 --> size-4096 slab */
3348 if (max_frame <= 256)
3349 adapter->rx_buffer_len = 256;
3350 else if (max_frame <= 512)
3351 adapter->rx_buffer_len = 512;
3352 else if (max_frame <= 1024)
3353 adapter->rx_buffer_len = 1024;
3354 else if (max_frame <= 2048)
3355 adapter->rx_buffer_len = 2048;
3357 adapter->rx_buffer_len = 4096;
3359 /* adjust allocation if LPE protects us, and we aren't using SBP */
3360 if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) ||
3361 (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN))
3362 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN
3365 ndev_info(netdev, "changing MTU from %d to %d\n",
3366 netdev->mtu, new_mtu);
3367 netdev->mtu = new_mtu;
3369 if (netif_running(netdev))
3372 e1000e_reset(adapter);
3374 clear_bit(__E1000_RESETTING, &adapter->state);
3379 static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
3382 struct e1000_adapter *adapter = netdev_priv(netdev);
3383 struct mii_ioctl_data *data = if_mii(ifr);
3384 unsigned long irq_flags;
3386 if (adapter->hw.media_type != e1000_media_type_copper)
3391 data->phy_id = adapter->hw.phy.addr;
3394 if (!capable(CAP_NET_ADMIN))
3396 spin_lock_irqsave(&adapter->stats_lock, irq_flags);
3397 if (e1e_rphy(&adapter->hw, data->reg_num & 0x1F,
3399 spin_unlock_irqrestore(&adapter->stats_lock, irq_flags);
3402 spin_unlock_irqrestore(&adapter->stats_lock, irq_flags);
3411 static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
3417 return e1000_mii_ioctl(netdev, ifr, cmd);
3423 static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
3425 struct net_device *netdev = pci_get_drvdata(pdev);
3426 struct e1000_adapter *adapter = netdev_priv(netdev);
3427 struct e1000_hw *hw = &adapter->hw;
3428 u32 ctrl, ctrl_ext, rctl, status;
3429 u32 wufc = adapter->wol;
3432 netif_device_detach(netdev);
3434 if (netif_running(netdev)) {
3435 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
3436 e1000e_down(adapter);
3437 e1000_free_irq(adapter);
3440 retval = pci_save_state(pdev);
3444 status = er32(STATUS);
3445 if (status & E1000_STATUS_LU)
3446 wufc &= ~E1000_WUFC_LNKC;
3449 e1000_setup_rctl(adapter);
3450 e1000_set_multi(netdev);
3452 /* turn on all-multi mode if wake on multicast is enabled */
3453 if (wufc & E1000_WUFC_MC) {
3455 rctl |= E1000_RCTL_MPE;
3460 /* advertise wake from D3Cold */
3461 #define E1000_CTRL_ADVD3WUC 0x00100000
3462 /* phy power management enable */
3463 #define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000
3464 ctrl |= E1000_CTRL_ADVD3WUC |
3465 E1000_CTRL_EN_PHY_PWR_MGMT;
3468 if (adapter->hw.media_type == e1000_media_type_fiber ||
3469 adapter->hw.media_type == e1000_media_type_internal_serdes) {
3470 /* keep the laser running in D3 */
3471 ctrl_ext = er32(CTRL_EXT);
3472 ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA;
3473 ew32(CTRL_EXT, ctrl_ext);
3476 /* Allow time for pending master requests to run */
3477 e1000e_disable_pcie_master(&adapter->hw);
3479 ew32(WUC, E1000_WUC_PME_EN);
3481 pci_enable_wake(pdev, PCI_D3hot, 1);
3482 pci_enable_wake(pdev, PCI_D3cold, 1);
3486 pci_enable_wake(pdev, PCI_D3hot, 0);
3487 pci_enable_wake(pdev, PCI_D3cold, 0);
3490 e1000_release_manageability(adapter);
3492 /* make sure adapter isn't asleep if manageability is enabled */
3493 if (adapter->flags & FLAG_MNG_PT_ENABLED) {
3494 pci_enable_wake(pdev, PCI_D3hot, 1);
3495 pci_enable_wake(pdev, PCI_D3cold, 1);
3498 if (adapter->hw.phy.type == e1000_phy_igp_3)
3499 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);
3501 /* Release control of h/w to f/w. If f/w is AMT enabled, this
3502 * would have already happened in close and is redundant. */
3503 e1000_release_hw_control(adapter);
3505 pci_disable_device(pdev);
3507 pci_set_power_state(pdev, pci_choose_state(pdev, state));
3513 static int e1000_resume(struct pci_dev *pdev)
3515 struct net_device *netdev = pci_get_drvdata(pdev);
3516 struct e1000_adapter *adapter = netdev_priv(netdev);
3517 struct e1000_hw *hw = &adapter->hw;
3520 pci_set_power_state(pdev, PCI_D0);
3521 pci_restore_state(pdev);
3522 err = pci_enable_device(pdev);
3525 "Cannot enable PCI device from suspend\n");
3529 pci_set_master(pdev);
3531 pci_enable_wake(pdev, PCI_D3hot, 0);
3532 pci_enable_wake(pdev, PCI_D3cold, 0);
3534 if (netif_running(netdev)) {
3535 err = e1000_request_irq(adapter);
3540 e1000e_power_up_phy(adapter);
3541 e1000e_reset(adapter);
3544 e1000_init_manageability(adapter);
3546 if (netif_running(netdev))
3549 netif_device_attach(netdev);
3551 /* If the controller has AMT, do not set DRV_LOAD until the interface
3552 * is up. For all other cases, let the f/w know that the h/w is now
3553 * under the control of the driver. */
3554 if (!(adapter->flags & FLAG_HAS_AMT) || !e1000e_check_mng_mode(&adapter->hw))
3555 e1000_get_hw_control(adapter);
3561 static void e1000_shutdown(struct pci_dev *pdev)
3563 e1000_suspend(pdev, PMSG_SUSPEND);
3566 #ifdef CONFIG_NET_POLL_CONTROLLER
3568 * Polling 'interrupt' - used by things like netconsole to send skbs
3569 * without having to re-enable interrupts. It's not called while
3570 * the interrupt routine is executing.
3572 static void e1000_netpoll(struct net_device *netdev)
3574 struct e1000_adapter *adapter = netdev_priv(netdev);
3576 disable_irq(adapter->pdev->irq);
3577 e1000_intr(adapter->pdev->irq, netdev);
3579 e1000_clean_tx_irq(adapter);
3581 enable_irq(adapter->pdev->irq);
3586 * e1000_io_error_detected - called when PCI error is detected
3587 * @pdev: Pointer to PCI device
3588 * @state: The current pci connection state
3590 * This function is called after a PCI bus error affecting
3591 * this device has been detected.
3593 static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev,
3594 pci_channel_state_t state)
3596 struct net_device *netdev = pci_get_drvdata(pdev);
3597 struct e1000_adapter *adapter = netdev_priv(netdev);
3599 netif_device_detach(netdev);
3601 if (netif_running(netdev))
3602 e1000e_down(adapter);
3603 pci_disable_device(pdev);
3605 /* Request a slot slot reset. */
3606 return PCI_ERS_RESULT_NEED_RESET;
3610 * e1000_io_slot_reset - called after the pci bus has been reset.
3611 * @pdev: Pointer to PCI device
3613 * Restart the card from scratch, as if from a cold-boot. Implementation
3614 * resembles the first-half of the e1000_resume routine.
3616 static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev)
3618 struct net_device *netdev = pci_get_drvdata(pdev);
3619 struct e1000_adapter *adapter = netdev_priv(netdev);
3620 struct e1000_hw *hw = &adapter->hw;
3622 if (pci_enable_device(pdev)) {
3624 "Cannot re-enable PCI device after reset.\n");
3625 return PCI_ERS_RESULT_DISCONNECT;
3627 pci_set_master(pdev);
3629 pci_enable_wake(pdev, PCI_D3hot, 0);
3630 pci_enable_wake(pdev, PCI_D3cold, 0);
3632 e1000e_reset(adapter);
3635 return PCI_ERS_RESULT_RECOVERED;
3639 * e1000_io_resume - called when traffic can start flowing again.
3640 * @pdev: Pointer to PCI device
3642 * This callback is called when the error recovery driver tells us that
3643 * its OK to resume normal operation. Implementation resembles the
3644 * second-half of the e1000_resume routine.
3646 static void e1000_io_resume(struct pci_dev *pdev)
3648 struct net_device *netdev = pci_get_drvdata(pdev);
3649 struct e1000_adapter *adapter = netdev_priv(netdev);
3651 e1000_init_manageability(adapter);
3653 if (netif_running(netdev)) {
3654 if (e1000e_up(adapter)) {
3656 "can't bring device back up after reset\n");
3661 netif_device_attach(netdev);
3663 /* If the controller has AMT, do not set DRV_LOAD until the interface
3664 * is up. For all other cases, let the f/w know that the h/w is now
3665 * under the control of the driver. */
3666 if (!(adapter->flags & FLAG_HAS_AMT) ||
3667 !e1000e_check_mng_mode(&adapter->hw))
3668 e1000_get_hw_control(adapter);
3672 static void e1000_print_device_info(struct e1000_adapter *adapter)
3674 struct e1000_hw *hw = &adapter->hw;
3675 struct net_device *netdev = adapter->netdev;
3678 /* print bus type/speed/width info */
3679 ndev_info(netdev, "(PCI Express:2.5GB/s:%s) "
3680 "%02x:%02x:%02x:%02x:%02x:%02x\n",
3682 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
3685 netdev->dev_addr[0], netdev->dev_addr[1],
3686 netdev->dev_addr[2], netdev->dev_addr[3],
3687 netdev->dev_addr[4], netdev->dev_addr[5]);
3688 ndev_info(netdev, "Intel(R) PRO/%s Network Connection\n",
3689 (hw->phy.type == e1000_phy_ife)
3690 ? "10/100" : "1000");
3691 e1000e_read_part_num(hw, &part_num);
3692 ndev_info(netdev, "MAC: %d, PHY: %d, PBA No: %06x-%03x\n",
3693 hw->mac.type, hw->phy.type,
3694 (part_num >> 8), (part_num & 0xff));
3698 * e1000_probe - Device Initialization Routine
3699 * @pdev: PCI device information struct
3700 * @ent: entry in e1000_pci_tbl
3702 * Returns 0 on success, negative on failure
3704 * e1000_probe initializes an adapter identified by a pci_dev structure.
3705 * The OS initialization, configuring of the adapter private structure,
3706 * and a hardware reset occur.
3708 static int __devinit e1000_probe(struct pci_dev *pdev,
3709 const struct pci_device_id *ent)
3711 struct net_device *netdev;
3712 struct e1000_adapter *adapter;
3713 struct e1000_hw *hw;
3714 const struct e1000_info *ei = e1000_info_tbl[ent->driver_data];
3715 unsigned long mmio_start, mmio_len;
3716 unsigned long flash_start, flash_len;
3718 static int cards_found;
3719 int i, err, pci_using_dac;
3720 u16 eeprom_data = 0;
3721 u16 eeprom_apme_mask = E1000_EEPROM_APME;
3723 err = pci_enable_device(pdev);
3728 err = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
3730 err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK);
3734 err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
3736 err = pci_set_consistent_dma_mask(pdev,
3739 dev_err(&pdev->dev, "No usable DMA "
3740 "configuration, aborting\n");
3746 err = pci_request_regions(pdev, e1000e_driver_name);
3750 pci_set_master(pdev);
3753 netdev = alloc_etherdev(sizeof(struct e1000_adapter));
3755 goto err_alloc_etherdev;
3757 SET_NETDEV_DEV(netdev, &pdev->dev);
3759 pci_set_drvdata(pdev, netdev);
3760 adapter = netdev_priv(netdev);
3762 adapter->netdev = netdev;
3763 adapter->pdev = pdev;
3765 adapter->pba = ei->pba;
3766 adapter->flags = ei->flags;
3767 adapter->hw.adapter = adapter;
3768 adapter->hw.mac.type = ei->mac;
3769 adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1;
3771 mmio_start = pci_resource_start(pdev, 0);
3772 mmio_len = pci_resource_len(pdev, 0);
3775 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len);
3776 if (!adapter->hw.hw_addr)
3779 if ((adapter->flags & FLAG_HAS_FLASH) &&
3780 (pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) {
3781 flash_start = pci_resource_start(pdev, 1);
3782 flash_len = pci_resource_len(pdev, 1);
3783 adapter->hw.flash_address = ioremap(flash_start, flash_len);
3784 if (!adapter->hw.flash_address)
3788 /* construct the net_device struct */
3789 netdev->open = &e1000_open;
3790 netdev->stop = &e1000_close;
3791 netdev->hard_start_xmit = &e1000_xmit_frame;
3792 netdev->get_stats = &e1000_get_stats;
3793 netdev->set_multicast_list = &e1000_set_multi;
3794 netdev->set_mac_address = &e1000_set_mac;
3795 netdev->change_mtu = &e1000_change_mtu;
3796 netdev->do_ioctl = &e1000_ioctl;
3797 e1000e_set_ethtool_ops(netdev);
3798 netdev->tx_timeout = &e1000_tx_timeout;
3799 netdev->watchdog_timeo = 5 * HZ;
3800 netif_napi_add(netdev, &adapter->napi, e1000_clean, 64);
3801 netdev->vlan_rx_register = e1000_vlan_rx_register;
3802 netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid;
3803 netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid;
3804 #ifdef CONFIG_NET_POLL_CONTROLLER
3805 netdev->poll_controller = e1000_netpoll;
3807 strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
3809 netdev->mem_start = mmio_start;
3810 netdev->mem_end = mmio_start + mmio_len;
3812 adapter->bd_number = cards_found++;
3814 /* setup adapter struct */
3815 err = e1000_sw_init(adapter);
3821 memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
3822 memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
3823 memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
3825 err = ei->get_invariants(adapter);
3829 hw->mac.ops.get_bus_info(&adapter->hw);
3831 adapter->hw.phy.wait_for_link = 0;
3833 /* Copper options */
3834 if (adapter->hw.media_type == e1000_media_type_copper) {
3835 adapter->hw.phy.mdix = AUTO_ALL_MODES;
3836 adapter->hw.phy.disable_polarity_correction = 0;
3837 adapter->hw.phy.ms_type = e1000_ms_hw_default;
3840 if (e1000_check_reset_block(&adapter->hw))
3842 "PHY reset is blocked due to SOL/IDER session.\n");
3844 netdev->features = NETIF_F_SG |
3846 NETIF_F_HW_VLAN_TX |
3849 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER)
3850 netdev->features |= NETIF_F_HW_VLAN_FILTER;
3852 netdev->features |= NETIF_F_TSO;
3853 netdev->features |= NETIF_F_TSO6;
3856 netdev->features |= NETIF_F_HIGHDMA;
3858 /* We should not be using LLTX anymore, but we are still TX faster with
3860 netdev->features |= NETIF_F_LLTX;
3862 if (e1000e_enable_mng_pass_thru(&adapter->hw))
3863 adapter->flags |= FLAG_MNG_PT_ENABLED;
3865 /* before reading the NVM, reset the controller to
3866 * put the device in a known good starting state */
3867 adapter->hw.mac.ops.reset_hw(&adapter->hw);
3870 * systems with ASPM and others may see the checksum fail on the first
3871 * attempt. Let's give it a few tries
3874 if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
3877 ndev_err(netdev, "The NVM Checksum Is Not Valid\n");
3883 /* copy the MAC address out of the NVM */
3884 if (e1000e_read_mac_addr(&adapter->hw))
3885 ndev_err(netdev, "NVM Read Error while reading MAC address\n");
3887 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
3888 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
3890 if (!is_valid_ether_addr(netdev->perm_addr)) {
3891 ndev_err(netdev, "Invalid MAC Address: "
3892 "%02x:%02x:%02x:%02x:%02x:%02x\n",
3893 netdev->perm_addr[0], netdev->perm_addr[1],
3894 netdev->perm_addr[2], netdev->perm_addr[3],
3895 netdev->perm_addr[4], netdev->perm_addr[5]);
3900 init_timer(&adapter->watchdog_timer);
3901 adapter->watchdog_timer.function = &e1000_watchdog;
3902 adapter->watchdog_timer.data = (unsigned long) adapter;
3904 init_timer(&adapter->phy_info_timer);
3905 adapter->phy_info_timer.function = &e1000_update_phy_info;
3906 adapter->phy_info_timer.data = (unsigned long) adapter;
3908 INIT_WORK(&adapter->reset_task, e1000_reset_task);
3909 INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task);
3911 e1000e_check_options(adapter);
3913 /* Initialize link parameters. User can change them with ethtool */
3914 adapter->hw.mac.autoneg = 1;
3915 adapter->fc_autoneg = 1;
3916 adapter->hw.mac.original_fc = e1000_fc_default;
3917 adapter->hw.mac.fc = e1000_fc_default;
3918 adapter->hw.phy.autoneg_advertised = 0x2f;
3920 /* ring size defaults */
3921 adapter->rx_ring->count = 256;
3922 adapter->tx_ring->count = 256;
3925 * Initial Wake on LAN setting - If APM wake is enabled in
3926 * the EEPROM, enable the ACPI Magic Packet filter
3928 if (adapter->flags & FLAG_APME_IN_WUC) {
3929 /* APME bit in EEPROM is mapped to WUC.APME */
3930 eeprom_data = er32(WUC);
3931 eeprom_apme_mask = E1000_WUC_APME;
3932 } else if (adapter->flags & FLAG_APME_IN_CTRL3) {
3933 if (adapter->flags & FLAG_APME_CHECK_PORT_B &&
3934 (adapter->hw.bus.func == 1))
3935 e1000_read_nvm(&adapter->hw,
3936 NVM_INIT_CONTROL3_PORT_B, 1, &eeprom_data);
3938 e1000_read_nvm(&adapter->hw,
3939 NVM_INIT_CONTROL3_PORT_A, 1, &eeprom_data);
3942 /* fetch WoL from EEPROM */
3943 if (eeprom_data & eeprom_apme_mask)
3944 adapter->eeprom_wol |= E1000_WUFC_MAG;
3947 * now that we have the eeprom settings, apply the special cases
3948 * where the eeprom may be wrong or the board simply won't support
3949 * wake on lan on a particular port
3951 if (!(adapter->flags & FLAG_HAS_WOL))
3952 adapter->eeprom_wol = 0;
3954 /* initialize the wol settings based on the eeprom settings */
3955 adapter->wol = adapter->eeprom_wol;
3957 /* reset the hardware with the new settings */
3958 e1000e_reset(adapter);
3960 /* If the controller has AMT, do not set DRV_LOAD until the interface
3961 * is up. For all other cases, let the f/w know that the h/w is now
3962 * under the control of the driver. */
3963 if (!(adapter->flags & FLAG_HAS_AMT) ||
3964 !e1000e_check_mng_mode(&adapter->hw))
3965 e1000_get_hw_control(adapter);
3967 /* tell the stack to leave us alone until e1000_open() is called */
3968 netif_carrier_off(netdev);
3969 netif_stop_queue(netdev);
3971 strcpy(netdev->name, "eth%d");
3972 err = register_netdev(netdev);
3976 e1000_print_device_info(adapter);
3982 e1000_release_hw_control(adapter);
3984 if (!e1000_check_reset_block(&adapter->hw))
3985 e1000_phy_hw_reset(&adapter->hw);
3987 if (adapter->hw.flash_address)
3988 iounmap(adapter->hw.flash_address);
3991 kfree(adapter->tx_ring);
3992 kfree(adapter->rx_ring);
3994 iounmap(adapter->hw.hw_addr);
3996 free_netdev(netdev);
3998 pci_release_regions(pdev);
4001 pci_disable_device(pdev);
4006 * e1000_remove - Device Removal Routine
4007 * @pdev: PCI device information struct
4009 * e1000_remove is called by the PCI subsystem to alert the driver
4010 * that it should release a PCI device. The could be caused by a
4011 * Hot-Plug event, or because the driver is going to be removed from
4014 static void __devexit e1000_remove(struct pci_dev *pdev)
4016 struct net_device *netdev = pci_get_drvdata(pdev);
4017 struct e1000_adapter *adapter = netdev_priv(netdev);
4019 /* flush_scheduled work may reschedule our watchdog task, so
4020 * explicitly disable watchdog tasks from being rescheduled */
4021 set_bit(__E1000_DOWN, &adapter->state);
4022 del_timer_sync(&adapter->watchdog_timer);
4023 del_timer_sync(&adapter->phy_info_timer);
4025 flush_scheduled_work();
4027 e1000_release_manageability(adapter);
4029 /* Release control of h/w to f/w. If f/w is AMT enabled, this
4030 * would have already happened in close and is redundant. */
4031 e1000_release_hw_control(adapter);
4033 unregister_netdev(netdev);
4035 if (!e1000_check_reset_block(&adapter->hw))
4036 e1000_phy_hw_reset(&adapter->hw);
4038 kfree(adapter->tx_ring);
4039 kfree(adapter->rx_ring);
4041 iounmap(adapter->hw.hw_addr);
4042 if (adapter->hw.flash_address)
4043 iounmap(adapter->hw.flash_address);
4044 pci_release_regions(pdev);
4046 free_netdev(netdev);
4048 pci_disable_device(pdev);
4051 /* PCI Error Recovery (ERS) */
4052 static struct pci_error_handlers e1000_err_handler = {
4053 .error_detected = e1000_io_error_detected,
4054 .slot_reset = e1000_io_slot_reset,
4055 .resume = e1000_io_resume,
4058 static struct pci_device_id e1000_pci_tbl[] = {
4060 * Support for 82571/2/3, es2lan and ich8 will be phased in
4063 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_COPPER), board_82571 },
4064 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_FIBER), board_82571 },
4065 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER), board_82571 },
4066 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER_LP), board_82571 },
4067 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_FIBER), board_82571 },
4068 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES), board_82571 },
4069 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI), board_82572 },
4070 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_COPPER), board_82572 },
4071 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_FIBER), board_82572 },
4072 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_SERDES), board_82572 },
4073 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573E), board_82573 },
4074 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573E_IAMT), board_82573 },
4075 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573L), board_82573 },
4076 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_COPPER_DPT),
4077 board_80003es2lan },
4078 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_COPPER_SPT),
4079 board_80003es2lan },
4080 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_SERDES_DPT),
4081 board_80003es2lan },
4082 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_SERDES_SPT),
4083 board_80003es2lan },
4084 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE), board_ich8lan },
4085 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE_G), board_ich8lan },
4086 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE_GT), board_ich8lan },
4087 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_AMT), board_ich8lan },
4088 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_C), board_ich8lan },
4089 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_M), board_ich8lan },
4090 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_M_AMT), board_ich8lan },
4093 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE), board_ich9lan },
4094 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE_G), board_ich9lan },
4095 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE_GT), board_ich9lan },
4096 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_AMT), board_ich9lan },
4097 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_C), board_ich9lan },
4099 { } /* terminate list */
4101 MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);
4103 /* PCI Device API Driver */
4104 static struct pci_driver e1000_driver = {
4105 .name = e1000e_driver_name,
4106 .id_table = e1000_pci_tbl,
4107 .probe = e1000_probe,
4108 .remove = __devexit_p(e1000_remove),
4110 /* Power Managment Hooks */
4111 .suspend = e1000_suspend,
4112 .resume = e1000_resume,
4114 .shutdown = e1000_shutdown,
4115 .err_handler = &e1000_err_handler
4119 * e1000_init_module - Driver Registration Routine
4121 * e1000_init_module is the first routine called when the driver is
4122 * loaded. All it does is register with the PCI subsystem.
4124 static int __init e1000_init_module(void)
4127 printk(KERN_INFO "%s: Intel(R) PRO/1000 Network Driver - %s\n",
4128 e1000e_driver_name, e1000e_driver_version);
4129 printk(KERN_INFO "%s: Copyright (c) 1999-2007 Intel Corporation.\n",
4130 e1000e_driver_name);
4131 ret = pci_register_driver(&e1000_driver);
4135 module_init(e1000_init_module);
4138 * e1000_exit_module - Driver Exit Cleanup Routine
4140 * e1000_exit_module is called just before the driver is removed
4143 static void __exit e1000_exit_module(void)
4145 pci_unregister_driver(&e1000_driver);
4147 module_exit(e1000_exit_module);
4151 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
4152 MODULE_LICENSE("GPL");
4153 MODULE_VERSION(DRV_VERSION);