1 /*******************************************************************************
3 Intel(R) Gigabit Ethernet Linux driver
4 Copyright(c) 2007-2009 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".
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
26 *******************************************************************************/
28 #include <linux/module.h>
29 #include <linux/types.h>
30 #include <linux/init.h>
31 #include <linux/vmalloc.h>
32 #include <linux/pagemap.h>
33 #include <linux/netdevice.h>
34 #include <linux/ipv6.h>
35 #include <net/checksum.h>
36 #include <net/ip6_checksum.h>
37 #include <linux/net_tstamp.h>
38 #include <linux/mii.h>
39 #include <linux/ethtool.h>
40 #include <linux/if_vlan.h>
41 #include <linux/pci.h>
42 #include <linux/pci-aspm.h>
43 #include <linux/delay.h>
44 #include <linux/interrupt.h>
45 #include <linux/if_ether.h>
46 #include <linux/aer.h>
48 #include <linux/dca.h>
52 #define DRV_VERSION "1.3.16-k2"
53 char igb_driver_name[] = "igb";
54 char igb_driver_version[] = DRV_VERSION;
55 static const char igb_driver_string[] =
56 "Intel(R) Gigabit Ethernet Network Driver";
57 static const char igb_copyright[] = "Copyright (c) 2007-2009 Intel Corporation.";
59 static const struct e1000_info *igb_info_tbl[] = {
60 [board_82575] = &e1000_82575_info,
63 static struct pci_device_id igb_pci_tbl[] = {
64 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576), board_82575 },
65 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS), board_82575 },
66 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS_SERDES), board_82575 },
67 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_FIBER), board_82575 },
68 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES), board_82575 },
69 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES_QUAD), board_82575 },
70 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_QUAD_COPPER), board_82575 },
71 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_COPPER), board_82575 },
72 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_FIBER_SERDES), board_82575 },
73 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575GB_QUAD_COPPER), board_82575 },
74 /* required last entry */
78 MODULE_DEVICE_TABLE(pci, igb_pci_tbl);
80 void igb_reset(struct igb_adapter *);
81 static int igb_setup_all_tx_resources(struct igb_adapter *);
82 static int igb_setup_all_rx_resources(struct igb_adapter *);
83 static void igb_free_all_tx_resources(struct igb_adapter *);
84 static void igb_free_all_rx_resources(struct igb_adapter *);
85 static void igb_setup_mrqc(struct igb_adapter *);
86 void igb_update_stats(struct igb_adapter *);
87 static int igb_probe(struct pci_dev *, const struct pci_device_id *);
88 static void __devexit igb_remove(struct pci_dev *pdev);
89 static int igb_sw_init(struct igb_adapter *);
90 static int igb_open(struct net_device *);
91 static int igb_close(struct net_device *);
92 static void igb_configure_tx(struct igb_adapter *);
93 static void igb_configure_rx(struct igb_adapter *);
94 static void igb_clean_all_tx_rings(struct igb_adapter *);
95 static void igb_clean_all_rx_rings(struct igb_adapter *);
96 static void igb_clean_tx_ring(struct igb_ring *);
97 static void igb_clean_rx_ring(struct igb_ring *);
98 static void igb_set_rx_mode(struct net_device *);
99 static void igb_update_phy_info(unsigned long);
100 static void igb_watchdog(unsigned long);
101 static void igb_watchdog_task(struct work_struct *);
102 static netdev_tx_t igb_xmit_frame_adv(struct sk_buff *skb, struct net_device *);
103 static struct net_device_stats *igb_get_stats(struct net_device *);
104 static int igb_change_mtu(struct net_device *, int);
105 static int igb_set_mac(struct net_device *, void *);
106 static void igb_set_uta(struct igb_adapter *adapter);
107 static irqreturn_t igb_intr(int irq, void *);
108 static irqreturn_t igb_intr_msi(int irq, void *);
109 static irqreturn_t igb_msix_other(int irq, void *);
110 static irqreturn_t igb_msix_ring(int irq, void *);
111 #ifdef CONFIG_IGB_DCA
112 static void igb_update_dca(struct igb_q_vector *);
113 static void igb_setup_dca(struct igb_adapter *);
114 #endif /* CONFIG_IGB_DCA */
115 static bool igb_clean_tx_irq(struct igb_q_vector *);
116 static int igb_poll(struct napi_struct *, int);
117 static bool igb_clean_rx_irq_adv(struct igb_q_vector *, int *, int);
118 static int igb_ioctl(struct net_device *, struct ifreq *, int cmd);
119 static void igb_tx_timeout(struct net_device *);
120 static void igb_reset_task(struct work_struct *);
121 static void igb_vlan_rx_register(struct net_device *, struct vlan_group *);
122 static void igb_vlan_rx_add_vid(struct net_device *, u16);
123 static void igb_vlan_rx_kill_vid(struct net_device *, u16);
124 static void igb_restore_vlan(struct igb_adapter *);
125 static void igb_rar_set_qsel(struct igb_adapter *, u8 *, u32 , u8);
126 static void igb_ping_all_vfs(struct igb_adapter *);
127 static void igb_msg_task(struct igb_adapter *);
128 static int igb_rcv_msg_from_vf(struct igb_adapter *, u32);
129 static void igb_vmm_control(struct igb_adapter *);
130 static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *);
131 static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
133 static inline void igb_set_vmolr(struct e1000_hw *hw, int vfn)
137 reg_data = rd32(E1000_VMOLR(vfn));
138 reg_data |= E1000_VMOLR_BAM | /* Accept broadcast */
139 E1000_VMOLR_ROMPE | /* Accept packets matched in MTA */
140 E1000_VMOLR_AUPE | /* Accept untagged packets */
141 E1000_VMOLR_STRVLAN; /* Strip vlan tags */
142 wr32(E1000_VMOLR(vfn), reg_data);
145 static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
148 struct e1000_hw *hw = &adapter->hw;
151 /* if it isn't the PF check to see if VFs are enabled and
152 * increase the size to support vlan tags */
153 if (vfn < adapter->vfs_allocated_count &&
154 adapter->vf_data[vfn].vlans_enabled)
155 size += VLAN_TAG_SIZE;
157 vmolr = rd32(E1000_VMOLR(vfn));
158 vmolr &= ~E1000_VMOLR_RLPML_MASK;
159 vmolr |= size | E1000_VMOLR_LPE;
160 wr32(E1000_VMOLR(vfn), vmolr);
166 static int igb_suspend(struct pci_dev *, pm_message_t);
167 static int igb_resume(struct pci_dev *);
169 static void igb_shutdown(struct pci_dev *);
170 #ifdef CONFIG_IGB_DCA
171 static int igb_notify_dca(struct notifier_block *, unsigned long, void *);
172 static struct notifier_block dca_notifier = {
173 .notifier_call = igb_notify_dca,
178 #ifdef CONFIG_NET_POLL_CONTROLLER
179 /* for netdump / net console */
180 static void igb_netpoll(struct net_device *);
182 #ifdef CONFIG_PCI_IOV
183 static unsigned int max_vfs = 0;
184 module_param(max_vfs, uint, 0);
185 MODULE_PARM_DESC(max_vfs, "Maximum number of virtual functions to allocate "
186 "per physical function");
187 #endif /* CONFIG_PCI_IOV */
189 static pci_ers_result_t igb_io_error_detected(struct pci_dev *,
190 pci_channel_state_t);
191 static pci_ers_result_t igb_io_slot_reset(struct pci_dev *);
192 static void igb_io_resume(struct pci_dev *);
194 static struct pci_error_handlers igb_err_handler = {
195 .error_detected = igb_io_error_detected,
196 .slot_reset = igb_io_slot_reset,
197 .resume = igb_io_resume,
201 static struct pci_driver igb_driver = {
202 .name = igb_driver_name,
203 .id_table = igb_pci_tbl,
205 .remove = __devexit_p(igb_remove),
207 /* Power Managment Hooks */
208 .suspend = igb_suspend,
209 .resume = igb_resume,
211 .shutdown = igb_shutdown,
212 .err_handler = &igb_err_handler
215 static int global_quad_port_a; /* global quad port a indication */
217 MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>");
218 MODULE_DESCRIPTION("Intel(R) Gigabit Ethernet Network Driver");
219 MODULE_LICENSE("GPL");
220 MODULE_VERSION(DRV_VERSION);
223 * igb_read_clock - read raw cycle counter (to be used by time counter)
225 static cycle_t igb_read_clock(const struct cyclecounter *tc)
227 struct igb_adapter *adapter =
228 container_of(tc, struct igb_adapter, cycles);
229 struct e1000_hw *hw = &adapter->hw;
233 stamp |= (u64)rd32(E1000_SYSTIML) << shift;
234 stamp |= (u64)rd32(E1000_SYSTIMH) << (shift + 32);
240 * igb_get_hw_dev_name - return device name string
241 * used by hardware layer to print debugging information
243 char *igb_get_hw_dev_name(struct e1000_hw *hw)
245 struct igb_adapter *adapter = hw->back;
246 return adapter->netdev->name;
250 * igb_get_time_str - format current NIC and system time as string
252 static char *igb_get_time_str(struct igb_adapter *adapter,
255 cycle_t hw = adapter->cycles.read(&adapter->cycles);
256 struct timespec nic = ns_to_timespec(timecounter_read(&adapter->clock));
258 struct timespec delta;
259 getnstimeofday(&sys);
261 delta = timespec_sub(nic, sys);
264 "HW %llu, NIC %ld.%09lus, SYS %ld.%09lus, NIC-SYS %lds + %09luns",
266 (long)nic.tv_sec, nic.tv_nsec,
267 (long)sys.tv_sec, sys.tv_nsec,
268 (long)delta.tv_sec, delta.tv_nsec);
275 * igb_init_module - Driver Registration Routine
277 * igb_init_module is the first routine called when the driver is
278 * loaded. All it does is register with the PCI subsystem.
280 static int __init igb_init_module(void)
283 printk(KERN_INFO "%s - version %s\n",
284 igb_driver_string, igb_driver_version);
286 printk(KERN_INFO "%s\n", igb_copyright);
288 global_quad_port_a = 0;
290 #ifdef CONFIG_IGB_DCA
291 dca_register_notify(&dca_notifier);
294 ret = pci_register_driver(&igb_driver);
298 module_init(igb_init_module);
301 * igb_exit_module - Driver Exit Cleanup Routine
303 * igb_exit_module is called just before the driver is removed
306 static void __exit igb_exit_module(void)
308 #ifdef CONFIG_IGB_DCA
309 dca_unregister_notify(&dca_notifier);
311 pci_unregister_driver(&igb_driver);
314 module_exit(igb_exit_module);
316 #define Q_IDX_82576(i) (((i & 0x1) << 3) + (i >> 1))
318 * igb_cache_ring_register - Descriptor ring to register mapping
319 * @adapter: board private structure to initialize
321 * Once we know the feature-set enabled for the device, we'll cache
322 * the register offset the descriptor ring is assigned to.
324 static void igb_cache_ring_register(struct igb_adapter *adapter)
327 u32 rbase_offset = adapter->vfs_allocated_count;
329 switch (adapter->hw.mac.type) {
331 /* The queues are allocated for virtualization such that VF 0
332 * is allocated queues 0 and 8, VF 1 queues 1 and 9, etc.
333 * In order to avoid collision we start at the first free queue
334 * and continue consuming queues in the same sequence
336 for (i = 0; i < adapter->num_rx_queues; i++)
337 adapter->rx_ring[i].reg_idx = rbase_offset +
339 for (i = 0; i < adapter->num_tx_queues; i++)
340 adapter->tx_ring[i].reg_idx = rbase_offset +
345 for (i = 0; i < adapter->num_rx_queues; i++)
346 adapter->rx_ring[i].reg_idx = i;
347 for (i = 0; i < adapter->num_tx_queues; i++)
348 adapter->tx_ring[i].reg_idx = i;
353 static void igb_free_queues(struct igb_adapter *adapter)
355 kfree(adapter->tx_ring);
356 kfree(adapter->rx_ring);
358 adapter->tx_ring = NULL;
359 adapter->rx_ring = NULL;
361 adapter->num_rx_queues = 0;
362 adapter->num_tx_queues = 0;
366 * igb_alloc_queues - Allocate memory for all rings
367 * @adapter: board private structure to initialize
369 * We allocate one ring per queue at run-time since we don't know the
370 * number of queues at compile-time.
372 static int igb_alloc_queues(struct igb_adapter *adapter)
376 adapter->tx_ring = kcalloc(adapter->num_tx_queues,
377 sizeof(struct igb_ring), GFP_KERNEL);
378 if (!adapter->tx_ring)
381 adapter->rx_ring = kcalloc(adapter->num_rx_queues,
382 sizeof(struct igb_ring), GFP_KERNEL);
383 if (!adapter->rx_ring)
386 for (i = 0; i < adapter->num_tx_queues; i++) {
387 struct igb_ring *ring = &(adapter->tx_ring[i]);
388 ring->count = adapter->tx_ring_count;
389 ring->queue_index = i;
390 ring->pdev = adapter->pdev;
391 ring->netdev = adapter->netdev;
392 /* For 82575, context index must be unique per ring. */
393 if (adapter->hw.mac.type == e1000_82575)
394 ring->flags = IGB_RING_FLAG_TX_CTX_IDX;
397 for (i = 0; i < adapter->num_rx_queues; i++) {
398 struct igb_ring *ring = &(adapter->rx_ring[i]);
399 ring->count = adapter->rx_ring_count;
400 ring->queue_index = i;
401 ring->pdev = adapter->pdev;
402 ring->netdev = adapter->netdev;
403 ring->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE;
404 ring->flags = IGB_RING_FLAG_RX_CSUM; /* enable rx checksum */
405 /* set flag indicating ring supports SCTP checksum offload */
406 if (adapter->hw.mac.type >= e1000_82576)
407 ring->flags |= IGB_RING_FLAG_RX_SCTP_CSUM;
410 igb_cache_ring_register(adapter);
415 igb_free_queues(adapter);
420 #define IGB_N0_QUEUE -1
421 static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)
424 struct igb_adapter *adapter = q_vector->adapter;
425 struct e1000_hw *hw = &adapter->hw;
427 int rx_queue = IGB_N0_QUEUE;
428 int tx_queue = IGB_N0_QUEUE;
430 if (q_vector->rx_ring)
431 rx_queue = q_vector->rx_ring->reg_idx;
432 if (q_vector->tx_ring)
433 tx_queue = q_vector->tx_ring->reg_idx;
435 switch (hw->mac.type) {
437 /* The 82575 assigns vectors using a bitmask, which matches the
438 bitmask for the EICR/EIMS/EIMC registers. To assign one
439 or more queues to a vector, we write the appropriate bits
440 into the MSIXBM register for that vector. */
441 if (rx_queue > IGB_N0_QUEUE)
442 msixbm = E1000_EICR_RX_QUEUE0 << rx_queue;
443 if (tx_queue > IGB_N0_QUEUE)
444 msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue;
445 array_wr32(E1000_MSIXBM(0), msix_vector, msixbm);
446 q_vector->eims_value = msixbm;
449 /* 82576 uses a table-based method for assigning vectors.
450 Each queue has a single entry in the table to which we write
451 a vector number along with a "valid" bit. Sadly, the layout
452 of the table is somewhat counterintuitive. */
453 if (rx_queue > IGB_N0_QUEUE) {
454 index = (rx_queue & 0x7);
455 ivar = array_rd32(E1000_IVAR0, index);
457 /* vector goes into low byte of register */
458 ivar = ivar & 0xFFFFFF00;
459 ivar |= msix_vector | E1000_IVAR_VALID;
461 /* vector goes into third byte of register */
462 ivar = ivar & 0xFF00FFFF;
463 ivar |= (msix_vector | E1000_IVAR_VALID) << 16;
465 array_wr32(E1000_IVAR0, index, ivar);
467 if (tx_queue > IGB_N0_QUEUE) {
468 index = (tx_queue & 0x7);
469 ivar = array_rd32(E1000_IVAR0, index);
471 /* vector goes into second byte of register */
472 ivar = ivar & 0xFFFF00FF;
473 ivar |= (msix_vector | E1000_IVAR_VALID) << 8;
475 /* vector goes into high byte of register */
476 ivar = ivar & 0x00FFFFFF;
477 ivar |= (msix_vector | E1000_IVAR_VALID) << 24;
479 array_wr32(E1000_IVAR0, index, ivar);
481 q_vector->eims_value = 1 << msix_vector;
490 * igb_configure_msix - Configure MSI-X hardware
492 * igb_configure_msix sets up the hardware to properly
493 * generate MSI-X interrupts.
495 static void igb_configure_msix(struct igb_adapter *adapter)
499 struct e1000_hw *hw = &adapter->hw;
501 adapter->eims_enable_mask = 0;
503 /* set vector for other causes, i.e. link changes */
504 switch (hw->mac.type) {
506 tmp = rd32(E1000_CTRL_EXT);
507 /* enable MSI-X PBA support*/
508 tmp |= E1000_CTRL_EXT_PBA_CLR;
510 /* Auto-Mask interrupts upon ICR read. */
511 tmp |= E1000_CTRL_EXT_EIAME;
512 tmp |= E1000_CTRL_EXT_IRCA;
514 wr32(E1000_CTRL_EXT, tmp);
516 /* enable msix_other interrupt */
517 array_wr32(E1000_MSIXBM(0), vector++,
519 adapter->eims_other = E1000_EIMS_OTHER;
524 /* Turn on MSI-X capability first, or our settings
525 * won't stick. And it will take days to debug. */
526 wr32(E1000_GPIE, E1000_GPIE_MSIX_MODE |
527 E1000_GPIE_PBA | E1000_GPIE_EIAME |
530 /* enable msix_other interrupt */
531 adapter->eims_other = 1 << vector;
532 tmp = (vector++ | E1000_IVAR_VALID) << 8;
534 wr32(E1000_IVAR_MISC, tmp);
537 /* do nothing, since nothing else supports MSI-X */
539 } /* switch (hw->mac.type) */
541 adapter->eims_enable_mask |= adapter->eims_other;
543 for (i = 0; i < adapter->num_q_vectors; i++) {
544 struct igb_q_vector *q_vector = adapter->q_vector[i];
545 igb_assign_vector(q_vector, vector++);
546 adapter->eims_enable_mask |= q_vector->eims_value;
553 * igb_request_msix - Initialize MSI-X interrupts
555 * igb_request_msix allocates MSI-X vectors and requests interrupts from the
558 static int igb_request_msix(struct igb_adapter *adapter)
560 struct net_device *netdev = adapter->netdev;
561 struct e1000_hw *hw = &adapter->hw;
562 int i, err = 0, vector = 0;
564 err = request_irq(adapter->msix_entries[vector].vector,
565 &igb_msix_other, 0, netdev->name, adapter);
570 for (i = 0; i < adapter->num_q_vectors; i++) {
571 struct igb_q_vector *q_vector = adapter->q_vector[i];
573 q_vector->itr_register = hw->hw_addr + E1000_EITR(vector);
575 if (q_vector->rx_ring && q_vector->tx_ring)
576 sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,
577 q_vector->rx_ring->queue_index);
578 else if (q_vector->tx_ring)
579 sprintf(q_vector->name, "%s-tx-%u", netdev->name,
580 q_vector->tx_ring->queue_index);
581 else if (q_vector->rx_ring)
582 sprintf(q_vector->name, "%s-rx-%u", netdev->name,
583 q_vector->rx_ring->queue_index);
585 sprintf(q_vector->name, "%s-unused", netdev->name);
587 err = request_irq(adapter->msix_entries[vector].vector,
588 &igb_msix_ring, 0, q_vector->name,
595 igb_configure_msix(adapter);
601 static void igb_reset_interrupt_capability(struct igb_adapter *adapter)
603 if (adapter->msix_entries) {
604 pci_disable_msix(adapter->pdev);
605 kfree(adapter->msix_entries);
606 adapter->msix_entries = NULL;
607 } else if (adapter->flags & IGB_FLAG_HAS_MSI) {
608 pci_disable_msi(adapter->pdev);
613 * igb_free_q_vectors - Free memory allocated for interrupt vectors
614 * @adapter: board private structure to initialize
616 * This function frees the memory allocated to the q_vectors. In addition if
617 * NAPI is enabled it will delete any references to the NAPI struct prior
618 * to freeing the q_vector.
620 static void igb_free_q_vectors(struct igb_adapter *adapter)
624 for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) {
625 struct igb_q_vector *q_vector = adapter->q_vector[v_idx];
626 adapter->q_vector[v_idx] = NULL;
627 netif_napi_del(&q_vector->napi);
630 adapter->num_q_vectors = 0;
634 * igb_clear_interrupt_scheme - reset the device to a state of no interrupts
636 * This function resets the device so that it has 0 rx queues, tx queues, and
637 * MSI-X interrupts allocated.
639 static void igb_clear_interrupt_scheme(struct igb_adapter *adapter)
641 igb_free_queues(adapter);
642 igb_free_q_vectors(adapter);
643 igb_reset_interrupt_capability(adapter);
647 * igb_set_interrupt_capability - set MSI or MSI-X if supported
649 * Attempt to configure interrupts using the best available
650 * capabilities of the hardware and kernel.
652 static void igb_set_interrupt_capability(struct igb_adapter *adapter)
657 /* Number of supported queues. */
658 adapter->num_rx_queues = min_t(u32, IGB_MAX_RX_QUEUES, num_online_cpus());
659 adapter->num_tx_queues = min_t(u32, IGB_MAX_TX_QUEUES, num_online_cpus());
661 /* start with one vector for every rx queue */
662 numvecs = adapter->num_rx_queues;
664 /* if tx handler is seperate add 1 for every tx queue */
665 numvecs += adapter->num_tx_queues;
667 /* store the number of vectors reserved for queues */
668 adapter->num_q_vectors = numvecs;
670 /* add 1 vector for link status interrupts */
672 adapter->msix_entries = kcalloc(numvecs, sizeof(struct msix_entry),
674 if (!adapter->msix_entries)
677 for (i = 0; i < numvecs; i++)
678 adapter->msix_entries[i].entry = i;
680 err = pci_enable_msix(adapter->pdev,
681 adapter->msix_entries,
686 igb_reset_interrupt_capability(adapter);
688 /* If we can't do MSI-X, try MSI */
690 #ifdef CONFIG_PCI_IOV
691 /* disable SR-IOV for non MSI-X configurations */
692 if (adapter->vf_data) {
693 struct e1000_hw *hw = &adapter->hw;
694 /* disable iov and allow time for transactions to clear */
695 pci_disable_sriov(adapter->pdev);
698 kfree(adapter->vf_data);
699 adapter->vf_data = NULL;
700 wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
702 dev_info(&adapter->pdev->dev, "IOV Disabled\n");
705 adapter->vfs_allocated_count = 0;
706 adapter->flags |= IGB_FLAG_QUEUE_PAIRS;
707 adapter->num_rx_queues = 1;
708 adapter->num_tx_queues = 1;
709 adapter->num_q_vectors = 1;
710 if (!pci_enable_msi(adapter->pdev))
711 adapter->flags |= IGB_FLAG_HAS_MSI;
713 /* Notify the stack of the (possibly) reduced Tx Queue count. */
714 adapter->netdev->real_num_tx_queues = adapter->num_tx_queues;
719 * igb_alloc_q_vectors - Allocate memory for interrupt vectors
720 * @adapter: board private structure to initialize
722 * We allocate one q_vector per queue interrupt. If allocation fails we
725 static int igb_alloc_q_vectors(struct igb_adapter *adapter)
727 struct igb_q_vector *q_vector;
728 struct e1000_hw *hw = &adapter->hw;
731 for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) {
732 q_vector = kzalloc(sizeof(struct igb_q_vector), GFP_KERNEL);
735 q_vector->adapter = adapter;
736 q_vector->itr_shift = (hw->mac.type == e1000_82575) ? 16 : 0;
737 q_vector->itr_register = hw->hw_addr + E1000_EITR(0);
738 q_vector->itr_val = IGB_START_ITR;
739 q_vector->set_itr = 1;
740 netif_napi_add(adapter->netdev, &q_vector->napi, igb_poll, 64);
741 adapter->q_vector[v_idx] = q_vector;
748 q_vector = adapter->q_vector[v_idx];
749 netif_napi_del(&q_vector->napi);
751 adapter->q_vector[v_idx] = NULL;
756 static void igb_map_rx_ring_to_vector(struct igb_adapter *adapter,
757 int ring_idx, int v_idx)
759 struct igb_q_vector *q_vector;
761 q_vector = adapter->q_vector[v_idx];
762 q_vector->rx_ring = &adapter->rx_ring[ring_idx];
763 q_vector->rx_ring->q_vector = q_vector;
764 q_vector->itr_val = adapter->rx_itr_setting;
765 if (q_vector->itr_val && q_vector->itr_val <= 3)
766 q_vector->itr_val = IGB_START_ITR;
769 static void igb_map_tx_ring_to_vector(struct igb_adapter *adapter,
770 int ring_idx, int v_idx)
772 struct igb_q_vector *q_vector;
774 q_vector = adapter->q_vector[v_idx];
775 q_vector->tx_ring = &adapter->tx_ring[ring_idx];
776 q_vector->tx_ring->q_vector = q_vector;
777 q_vector->itr_val = adapter->tx_itr_setting;
778 if (q_vector->itr_val && q_vector->itr_val <= 3)
779 q_vector->itr_val = IGB_START_ITR;
783 * igb_map_ring_to_vector - maps allocated queues to vectors
785 * This function maps the recently allocated queues to vectors.
787 static int igb_map_ring_to_vector(struct igb_adapter *adapter)
792 if ((adapter->num_q_vectors < adapter->num_rx_queues) ||
793 (adapter->num_q_vectors < adapter->num_tx_queues))
796 if (adapter->num_q_vectors >=
797 (adapter->num_rx_queues + adapter->num_tx_queues)) {
798 for (i = 0; i < adapter->num_rx_queues; i++)
799 igb_map_rx_ring_to_vector(adapter, i, v_idx++);
800 for (i = 0; i < adapter->num_tx_queues; i++)
801 igb_map_tx_ring_to_vector(adapter, i, v_idx++);
803 for (i = 0; i < adapter->num_rx_queues; i++) {
804 if (i < adapter->num_tx_queues)
805 igb_map_tx_ring_to_vector(adapter, i, v_idx);
806 igb_map_rx_ring_to_vector(adapter, i, v_idx++);
808 for (; i < adapter->num_tx_queues; i++)
809 igb_map_tx_ring_to_vector(adapter, i, v_idx++);
815 * igb_init_interrupt_scheme - initialize interrupts, allocate queues/vectors
817 * This function initializes the interrupts and allocates all of the queues.
819 static int igb_init_interrupt_scheme(struct igb_adapter *adapter)
821 struct pci_dev *pdev = adapter->pdev;
824 igb_set_interrupt_capability(adapter);
826 err = igb_alloc_q_vectors(adapter);
828 dev_err(&pdev->dev, "Unable to allocate memory for vectors\n");
829 goto err_alloc_q_vectors;
832 err = igb_alloc_queues(adapter);
834 dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
835 goto err_alloc_queues;
838 err = igb_map_ring_to_vector(adapter);
840 dev_err(&pdev->dev, "Invalid q_vector to ring mapping\n");
847 igb_free_queues(adapter);
849 igb_free_q_vectors(adapter);
851 igb_reset_interrupt_capability(adapter);
856 * igb_request_irq - initialize interrupts
858 * Attempts to configure interrupts using the best available
859 * capabilities of the hardware and kernel.
861 static int igb_request_irq(struct igb_adapter *adapter)
863 struct net_device *netdev = adapter->netdev;
864 struct pci_dev *pdev = adapter->pdev;
865 struct e1000_hw *hw = &adapter->hw;
868 if (adapter->msix_entries) {
869 err = igb_request_msix(adapter);
872 /* fall back to MSI */
873 igb_clear_interrupt_scheme(adapter);
874 if (!pci_enable_msi(adapter->pdev))
875 adapter->flags |= IGB_FLAG_HAS_MSI;
876 igb_free_all_tx_resources(adapter);
877 igb_free_all_rx_resources(adapter);
878 adapter->num_tx_queues = 1;
879 adapter->num_rx_queues = 1;
880 adapter->num_q_vectors = 1;
881 err = igb_alloc_q_vectors(adapter);
884 "Unable to allocate memory for vectors\n");
887 err = igb_alloc_queues(adapter);
890 "Unable to allocate memory for queues\n");
891 igb_free_q_vectors(adapter);
894 igb_setup_all_tx_resources(adapter);
895 igb_setup_all_rx_resources(adapter);
897 switch (hw->mac.type) {
899 wr32(E1000_MSIXBM(0),
900 (E1000_EICR_RX_QUEUE0 |
901 E1000_EICR_TX_QUEUE0 |
905 wr32(E1000_IVAR0, E1000_IVAR_VALID);
912 if (adapter->flags & IGB_FLAG_HAS_MSI) {
913 err = request_irq(adapter->pdev->irq, &igb_intr_msi, 0,
914 netdev->name, adapter);
918 /* fall back to legacy interrupts */
919 igb_reset_interrupt_capability(adapter);
920 adapter->flags &= ~IGB_FLAG_HAS_MSI;
923 err = request_irq(adapter->pdev->irq, &igb_intr, IRQF_SHARED,
924 netdev->name, adapter);
927 dev_err(&adapter->pdev->dev, "Error %d getting interrupt\n",
934 static void igb_free_irq(struct igb_adapter *adapter)
936 if (adapter->msix_entries) {
939 free_irq(adapter->msix_entries[vector++].vector, adapter);
941 for (i = 0; i < adapter->num_q_vectors; i++) {
942 struct igb_q_vector *q_vector = adapter->q_vector[i];
943 free_irq(adapter->msix_entries[vector++].vector,
947 free_irq(adapter->pdev->irq, adapter);
952 * igb_irq_disable - Mask off interrupt generation on the NIC
953 * @adapter: board private structure
955 static void igb_irq_disable(struct igb_adapter *adapter)
957 struct e1000_hw *hw = &adapter->hw;
959 if (adapter->msix_entries) {
960 u32 regval = rd32(E1000_EIAM);
961 wr32(E1000_EIAM, regval & ~adapter->eims_enable_mask);
962 wr32(E1000_EIMC, adapter->eims_enable_mask);
963 regval = rd32(E1000_EIAC);
964 wr32(E1000_EIAC, regval & ~adapter->eims_enable_mask);
970 synchronize_irq(adapter->pdev->irq);
974 * igb_irq_enable - Enable default interrupt generation settings
975 * @adapter: board private structure
977 static void igb_irq_enable(struct igb_adapter *adapter)
979 struct e1000_hw *hw = &adapter->hw;
981 if (adapter->msix_entries) {
982 u32 regval = rd32(E1000_EIAC);
983 wr32(E1000_EIAC, regval | adapter->eims_enable_mask);
984 regval = rd32(E1000_EIAM);
985 wr32(E1000_EIAM, regval | adapter->eims_enable_mask);
986 wr32(E1000_EIMS, adapter->eims_enable_mask);
987 if (adapter->vfs_allocated_count)
988 wr32(E1000_MBVFIMR, 0xFF);
989 wr32(E1000_IMS, (E1000_IMS_LSC | E1000_IMS_VMMB |
990 E1000_IMS_DOUTSYNC));
992 wr32(E1000_IMS, IMS_ENABLE_MASK);
993 wr32(E1000_IAM, IMS_ENABLE_MASK);
997 static void igb_update_mng_vlan(struct igb_adapter *adapter)
999 struct net_device *netdev = adapter->netdev;
1000 u16 vid = adapter->hw.mng_cookie.vlan_id;
1001 u16 old_vid = adapter->mng_vlan_id;
1002 if (adapter->vlgrp) {
1003 if (!vlan_group_get_device(adapter->vlgrp, vid)) {
1004 if (adapter->hw.mng_cookie.status &
1005 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) {
1006 igb_vlan_rx_add_vid(netdev, vid);
1007 adapter->mng_vlan_id = vid;
1009 adapter->mng_vlan_id = IGB_MNG_VLAN_NONE;
1011 if ((old_vid != (u16)IGB_MNG_VLAN_NONE) &&
1013 !vlan_group_get_device(adapter->vlgrp, old_vid))
1014 igb_vlan_rx_kill_vid(netdev, old_vid);
1016 adapter->mng_vlan_id = vid;
1021 * igb_release_hw_control - release control of the h/w to f/w
1022 * @adapter: address of board private structure
1024 * igb_release_hw_control resets CTRL_EXT:DRV_LOAD bit.
1025 * For ASF and Pass Through versions of f/w this means that the
1026 * driver is no longer loaded.
1029 static void igb_release_hw_control(struct igb_adapter *adapter)
1031 struct e1000_hw *hw = &adapter->hw;
1034 /* Let firmware take over control of h/w */
1035 ctrl_ext = rd32(E1000_CTRL_EXT);
1036 wr32(E1000_CTRL_EXT,
1037 ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD);
1042 * igb_get_hw_control - get control of the h/w from f/w
1043 * @adapter: address of board private structure
1045 * igb_get_hw_control sets CTRL_EXT:DRV_LOAD bit.
1046 * For ASF and Pass Through versions of f/w this means that
1047 * the driver is loaded.
1050 static void igb_get_hw_control(struct igb_adapter *adapter)
1052 struct e1000_hw *hw = &adapter->hw;
1055 /* Let firmware know the driver has taken over */
1056 ctrl_ext = rd32(E1000_CTRL_EXT);
1057 wr32(E1000_CTRL_EXT,
1058 ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
1062 * igb_configure - configure the hardware for RX and TX
1063 * @adapter: private board structure
1065 static void igb_configure(struct igb_adapter *adapter)
1067 struct net_device *netdev = adapter->netdev;
1070 igb_get_hw_control(adapter);
1071 igb_set_rx_mode(netdev);
1073 igb_restore_vlan(adapter);
1075 igb_setup_tctl(adapter);
1076 igb_setup_mrqc(adapter);
1077 igb_setup_rctl(adapter);
1079 igb_configure_tx(adapter);
1080 igb_configure_rx(adapter);
1082 igb_rx_fifo_flush_82575(&adapter->hw);
1084 /* call igb_desc_unused which always leaves
1085 * at least 1 descriptor unused to make sure
1086 * next_to_use != next_to_clean */
1087 for (i = 0; i < adapter->num_rx_queues; i++) {
1088 struct igb_ring *ring = &adapter->rx_ring[i];
1089 igb_alloc_rx_buffers_adv(ring, igb_desc_unused(ring));
1093 adapter->tx_queue_len = netdev->tx_queue_len;
1098 * igb_up - Open the interface and prepare it to handle traffic
1099 * @adapter: board private structure
1102 int igb_up(struct igb_adapter *adapter)
1104 struct e1000_hw *hw = &adapter->hw;
1107 /* hardware has been reset, we need to reload some things */
1108 igb_configure(adapter);
1110 clear_bit(__IGB_DOWN, &adapter->state);
1112 for (i = 0; i < adapter->num_q_vectors; i++) {
1113 struct igb_q_vector *q_vector = adapter->q_vector[i];
1114 napi_enable(&q_vector->napi);
1116 if (adapter->msix_entries)
1117 igb_configure_msix(adapter);
1119 igb_set_vmolr(hw, adapter->vfs_allocated_count);
1121 /* Clear any pending interrupts. */
1123 igb_irq_enable(adapter);
1125 /* notify VFs that reset has been completed */
1126 if (adapter->vfs_allocated_count) {
1127 u32 reg_data = rd32(E1000_CTRL_EXT);
1128 reg_data |= E1000_CTRL_EXT_PFRSTD;
1129 wr32(E1000_CTRL_EXT, reg_data);
1132 netif_tx_start_all_queues(adapter->netdev);
1134 /* Fire a link change interrupt to start the watchdog. */
1135 wr32(E1000_ICS, E1000_ICS_LSC);
1139 void igb_down(struct igb_adapter *adapter)
1141 struct e1000_hw *hw = &adapter->hw;
1142 struct net_device *netdev = adapter->netdev;
1146 /* signal that we're down so the interrupt handler does not
1147 * reschedule our watchdog timer */
1148 set_bit(__IGB_DOWN, &adapter->state);
1150 /* disable receives in the hardware */
1151 rctl = rd32(E1000_RCTL);
1152 wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN);
1153 /* flush and sleep below */
1155 netif_tx_stop_all_queues(netdev);
1157 /* disable transmits in the hardware */
1158 tctl = rd32(E1000_TCTL);
1159 tctl &= ~E1000_TCTL_EN;
1160 wr32(E1000_TCTL, tctl);
1161 /* flush both disables and wait for them to finish */
1165 for (i = 0; i < adapter->num_q_vectors; i++) {
1166 struct igb_q_vector *q_vector = adapter->q_vector[i];
1167 napi_disable(&q_vector->napi);
1170 igb_irq_disable(adapter);
1172 del_timer_sync(&adapter->watchdog_timer);
1173 del_timer_sync(&adapter->phy_info_timer);
1175 netdev->tx_queue_len = adapter->tx_queue_len;
1176 netif_carrier_off(netdev);
1178 /* record the stats before reset*/
1179 igb_update_stats(adapter);
1181 adapter->link_speed = 0;
1182 adapter->link_duplex = 0;
1184 if (!pci_channel_offline(adapter->pdev))
1186 igb_clean_all_tx_rings(adapter);
1187 igb_clean_all_rx_rings(adapter);
1188 #ifdef CONFIG_IGB_DCA
1190 /* since we reset the hardware DCA settings were cleared */
1191 igb_setup_dca(adapter);
1195 void igb_reinit_locked(struct igb_adapter *adapter)
1197 WARN_ON(in_interrupt());
1198 while (test_and_set_bit(__IGB_RESETTING, &adapter->state))
1202 clear_bit(__IGB_RESETTING, &adapter->state);
1205 void igb_reset(struct igb_adapter *adapter)
1207 struct e1000_hw *hw = &adapter->hw;
1208 struct e1000_mac_info *mac = &hw->mac;
1209 struct e1000_fc_info *fc = &hw->fc;
1210 u32 pba = 0, tx_space, min_tx_space, min_rx_space;
1213 /* Repartition Pba for greater than 9k mtu
1214 * To take effect CTRL.RST is required.
1216 switch (mac->type) {
1218 pba = rd32(E1000_RXPBS);
1219 pba &= E1000_RXPBS_SIZE_MASK_82576;
1223 pba = E1000_PBA_34K;
1227 if ((adapter->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN) &&
1228 (mac->type < e1000_82576)) {
1229 /* adjust PBA for jumbo frames */
1230 wr32(E1000_PBA, pba);
1232 /* To maintain wire speed transmits, the Tx FIFO should be
1233 * large enough to accommodate two full transmit packets,
1234 * rounded up to the next 1KB and expressed in KB. Likewise,
1235 * the Rx FIFO should be large enough to accommodate at least
1236 * one full receive packet and is similarly rounded up and
1237 * expressed in KB. */
1238 pba = rd32(E1000_PBA);
1239 /* upper 16 bits has Tx packet buffer allocation size in KB */
1240 tx_space = pba >> 16;
1241 /* lower 16 bits has Rx packet buffer allocation size in KB */
1243 /* the tx fifo also stores 16 bytes of information about the tx
1244 * but don't include ethernet FCS because hardware appends it */
1245 min_tx_space = (adapter->max_frame_size +
1246 sizeof(union e1000_adv_tx_desc) -
1248 min_tx_space = ALIGN(min_tx_space, 1024);
1249 min_tx_space >>= 10;
1250 /* software strips receive CRC, so leave room for it */
1251 min_rx_space = adapter->max_frame_size;
1252 min_rx_space = ALIGN(min_rx_space, 1024);
1253 min_rx_space >>= 10;
1255 /* If current Tx allocation is less than the min Tx FIFO size,
1256 * and the min Tx FIFO size is less than the current Rx FIFO
1257 * allocation, take space away from current Rx allocation */
1258 if (tx_space < min_tx_space &&
1259 ((min_tx_space - tx_space) < pba)) {
1260 pba = pba - (min_tx_space - tx_space);
1262 /* if short on rx space, rx wins and must trump tx
1264 if (pba < min_rx_space)
1267 wr32(E1000_PBA, pba);
1270 /* flow control settings */
1271 /* The high water mark must be low enough to fit one full frame
1272 * (or the size used for early receive) above it in the Rx FIFO.
1273 * Set it to the lower of:
1274 * - 90% of the Rx FIFO size, or
1275 * - the full Rx FIFO size minus one full frame */
1276 hwm = min(((pba << 10) * 9 / 10),
1277 ((pba << 10) - 2 * adapter->max_frame_size));
1279 if (mac->type < e1000_82576) {
1280 fc->high_water = hwm & 0xFFF8; /* 8-byte granularity */
1281 fc->low_water = fc->high_water - 8;
1283 fc->high_water = hwm & 0xFFF0; /* 16-byte granularity */
1284 fc->low_water = fc->high_water - 16;
1286 fc->pause_time = 0xFFFF;
1288 fc->current_mode = fc->requested_mode;
1290 /* disable receive for all VFs and wait one second */
1291 if (adapter->vfs_allocated_count) {
1293 for (i = 0 ; i < adapter->vfs_allocated_count; i++)
1294 adapter->vf_data[i].clear_to_send = false;
1296 /* ping all the active vfs to let them know we are going down */
1297 igb_ping_all_vfs(adapter);
1299 /* disable transmits and receives */
1300 wr32(E1000_VFRE, 0);
1301 wr32(E1000_VFTE, 0);
1304 /* Allow time for pending master requests to run */
1305 adapter->hw.mac.ops.reset_hw(&adapter->hw);
1308 if (adapter->hw.mac.ops.init_hw(&adapter->hw))
1309 dev_err(&adapter->pdev->dev, "Hardware Error\n");
1311 igb_update_mng_vlan(adapter);
1313 /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
1314 wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE);
1316 igb_reset_adaptive(&adapter->hw);
1317 igb_get_phy_info(&adapter->hw);
1320 static const struct net_device_ops igb_netdev_ops = {
1321 .ndo_open = igb_open,
1322 .ndo_stop = igb_close,
1323 .ndo_start_xmit = igb_xmit_frame_adv,
1324 .ndo_get_stats = igb_get_stats,
1325 .ndo_set_rx_mode = igb_set_rx_mode,
1326 .ndo_set_multicast_list = igb_set_rx_mode,
1327 .ndo_set_mac_address = igb_set_mac,
1328 .ndo_change_mtu = igb_change_mtu,
1329 .ndo_do_ioctl = igb_ioctl,
1330 .ndo_tx_timeout = igb_tx_timeout,
1331 .ndo_validate_addr = eth_validate_addr,
1332 .ndo_vlan_rx_register = igb_vlan_rx_register,
1333 .ndo_vlan_rx_add_vid = igb_vlan_rx_add_vid,
1334 .ndo_vlan_rx_kill_vid = igb_vlan_rx_kill_vid,
1335 #ifdef CONFIG_NET_POLL_CONTROLLER
1336 .ndo_poll_controller = igb_netpoll,
1341 * igb_probe - Device Initialization Routine
1342 * @pdev: PCI device information struct
1343 * @ent: entry in igb_pci_tbl
1345 * Returns 0 on success, negative on failure
1347 * igb_probe initializes an adapter identified by a pci_dev structure.
1348 * The OS initialization, configuring of the adapter private structure,
1349 * and a hardware reset occur.
1351 static int __devinit igb_probe(struct pci_dev *pdev,
1352 const struct pci_device_id *ent)
1354 struct net_device *netdev;
1355 struct igb_adapter *adapter;
1356 struct e1000_hw *hw;
1357 const struct e1000_info *ei = igb_info_tbl[ent->driver_data];
1358 unsigned long mmio_start, mmio_len;
1359 int err, pci_using_dac;
1360 u16 eeprom_data = 0;
1361 u16 eeprom_apme_mask = IGB_EEPROM_APME;
1364 err = pci_enable_device_mem(pdev);
1369 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
1371 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
1375 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
1377 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
1379 dev_err(&pdev->dev, "No usable DMA "
1380 "configuration, aborting\n");
1386 err = pci_request_selected_regions(pdev, pci_select_bars(pdev,
1392 pci_enable_pcie_error_reporting(pdev);
1394 pci_set_master(pdev);
1395 pci_save_state(pdev);
1398 netdev = alloc_etherdev_mq(sizeof(struct igb_adapter),
1399 IGB_ABS_MAX_TX_QUEUES);
1401 goto err_alloc_etherdev;
1403 SET_NETDEV_DEV(netdev, &pdev->dev);
1405 pci_set_drvdata(pdev, netdev);
1406 adapter = netdev_priv(netdev);
1407 adapter->netdev = netdev;
1408 adapter->pdev = pdev;
1411 adapter->msg_enable = NETIF_MSG_DRV | NETIF_MSG_PROBE;
1413 mmio_start = pci_resource_start(pdev, 0);
1414 mmio_len = pci_resource_len(pdev, 0);
1417 hw->hw_addr = ioremap(mmio_start, mmio_len);
1421 netdev->netdev_ops = &igb_netdev_ops;
1422 igb_set_ethtool_ops(netdev);
1423 netdev->watchdog_timeo = 5 * HZ;
1425 strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
1427 netdev->mem_start = mmio_start;
1428 netdev->mem_end = mmio_start + mmio_len;
1430 /* PCI config space info */
1431 hw->vendor_id = pdev->vendor;
1432 hw->device_id = pdev->device;
1433 hw->revision_id = pdev->revision;
1434 hw->subsystem_vendor_id = pdev->subsystem_vendor;
1435 hw->subsystem_device_id = pdev->subsystem_device;
1437 /* setup the private structure */
1439 /* Copy the default MAC, PHY and NVM function pointers */
1440 memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
1441 memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
1442 memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
1443 /* Initialize skew-specific constants */
1444 err = ei->get_invariants(hw);
1448 #ifdef CONFIG_PCI_IOV
1449 /* since iov functionality isn't critical to base device function we
1450 * can accept failure. If it fails we don't allow iov to be enabled */
1451 if (hw->mac.type == e1000_82576) {
1452 /* 82576 supports a maximum of 7 VFs in addition to the PF */
1453 unsigned int num_vfs = (max_vfs > 7) ? 7 : max_vfs;
1455 unsigned char mac_addr[ETH_ALEN];
1458 adapter->vf_data = kcalloc(num_vfs,
1459 sizeof(struct vf_data_storage),
1461 if (!adapter->vf_data) {
1463 "Could not allocate VF private data - "
1464 "IOV enable failed\n");
1466 err = pci_enable_sriov(pdev, num_vfs);
1468 adapter->vfs_allocated_count = num_vfs;
1469 dev_info(&pdev->dev,
1470 "%d vfs allocated\n",
1473 i < adapter->vfs_allocated_count;
1475 random_ether_addr(mac_addr);
1476 igb_set_vf_mac(adapter, i,
1480 kfree(adapter->vf_data);
1481 adapter->vf_data = NULL;
1488 /* setup the private structure */
1489 err = igb_sw_init(adapter);
1493 igb_get_bus_info_pcie(hw);
1495 hw->phy.autoneg_wait_to_complete = false;
1496 hw->mac.adaptive_ifs = true;
1498 /* Copper options */
1499 if (hw->phy.media_type == e1000_media_type_copper) {
1500 hw->phy.mdix = AUTO_ALL_MODES;
1501 hw->phy.disable_polarity_correction = false;
1502 hw->phy.ms_type = e1000_ms_hw_default;
1505 if (igb_check_reset_block(hw))
1506 dev_info(&pdev->dev,
1507 "PHY reset is blocked due to SOL/IDER session.\n");
1509 netdev->features = NETIF_F_SG |
1511 NETIF_F_HW_VLAN_TX |
1512 NETIF_F_HW_VLAN_RX |
1513 NETIF_F_HW_VLAN_FILTER;
1515 netdev->features |= NETIF_F_IPV6_CSUM;
1516 netdev->features |= NETIF_F_TSO;
1517 netdev->features |= NETIF_F_TSO6;
1519 netdev->features |= NETIF_F_GRO;
1521 netdev->vlan_features |= NETIF_F_TSO;
1522 netdev->vlan_features |= NETIF_F_TSO6;
1523 netdev->vlan_features |= NETIF_F_IP_CSUM;
1524 netdev->vlan_features |= NETIF_F_IPV6_CSUM;
1525 netdev->vlan_features |= NETIF_F_SG;
1528 netdev->features |= NETIF_F_HIGHDMA;
1530 if (adapter->hw.mac.type == e1000_82576)
1531 netdev->features |= NETIF_F_SCTP_CSUM;
1533 adapter->en_mng_pt = igb_enable_mng_pass_thru(&adapter->hw);
1535 /* before reading the NVM, reset the controller to put the device in a
1536 * known good starting state */
1537 hw->mac.ops.reset_hw(hw);
1539 /* make sure the NVM is good */
1540 if (igb_validate_nvm_checksum(hw) < 0) {
1541 dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n");
1546 /* copy the MAC address out of the NVM */
1547 if (hw->mac.ops.read_mac_addr(hw))
1548 dev_err(&pdev->dev, "NVM Read Error\n");
1550 memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len);
1551 memcpy(netdev->perm_addr, hw->mac.addr, netdev->addr_len);
1553 if (!is_valid_ether_addr(netdev->perm_addr)) {
1554 dev_err(&pdev->dev, "Invalid MAC Address\n");
1559 setup_timer(&adapter->watchdog_timer, &igb_watchdog,
1560 (unsigned long) adapter);
1561 setup_timer(&adapter->phy_info_timer, &igb_update_phy_info,
1562 (unsigned long) adapter);
1564 INIT_WORK(&adapter->reset_task, igb_reset_task);
1565 INIT_WORK(&adapter->watchdog_task, igb_watchdog_task);
1567 /* Initialize link properties that are user-changeable */
1568 adapter->fc_autoneg = true;
1569 hw->mac.autoneg = true;
1570 hw->phy.autoneg_advertised = 0x2f;
1572 hw->fc.requested_mode = e1000_fc_default;
1573 hw->fc.current_mode = e1000_fc_default;
1575 igb_validate_mdi_setting(hw);
1577 /* Initial Wake on LAN setting If APM wake is enabled in the EEPROM,
1578 * enable the ACPI Magic Packet filter
1581 if (hw->bus.func == 0)
1582 hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_A, 1, &eeprom_data);
1583 else if (hw->bus.func == 1)
1584 hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_B, 1, &eeprom_data);
1586 if (eeprom_data & eeprom_apme_mask)
1587 adapter->eeprom_wol |= E1000_WUFC_MAG;
1589 /* now that we have the eeprom settings, apply the special cases where
1590 * the eeprom may be wrong or the board simply won't support wake on
1591 * lan on a particular port */
1592 switch (pdev->device) {
1593 case E1000_DEV_ID_82575GB_QUAD_COPPER:
1594 adapter->eeprom_wol = 0;
1596 case E1000_DEV_ID_82575EB_FIBER_SERDES:
1597 case E1000_DEV_ID_82576_FIBER:
1598 case E1000_DEV_ID_82576_SERDES:
1599 /* Wake events only supported on port A for dual fiber
1600 * regardless of eeprom setting */
1601 if (rd32(E1000_STATUS) & E1000_STATUS_FUNC_1)
1602 adapter->eeprom_wol = 0;
1604 case E1000_DEV_ID_82576_QUAD_COPPER:
1605 /* if quad port adapter, disable WoL on all but port A */
1606 if (global_quad_port_a != 0)
1607 adapter->eeprom_wol = 0;
1609 adapter->flags |= IGB_FLAG_QUAD_PORT_A;
1610 /* Reset for multiple quad port adapters */
1611 if (++global_quad_port_a == 4)
1612 global_quad_port_a = 0;
1616 /* initialize the wol settings based on the eeprom settings */
1617 adapter->wol = adapter->eeprom_wol;
1618 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
1620 /* reset the hardware with the new settings */
1623 /* let the f/w know that the h/w is now under the control of the
1625 igb_get_hw_control(adapter);
1627 strcpy(netdev->name, "eth%d");
1628 err = register_netdev(netdev);
1632 /* carrier off reporting is important to ethtool even BEFORE open */
1633 netif_carrier_off(netdev);
1635 #ifdef CONFIG_IGB_DCA
1636 if (dca_add_requester(&pdev->dev) == 0) {
1637 adapter->flags |= IGB_FLAG_DCA_ENABLED;
1638 dev_info(&pdev->dev, "DCA enabled\n");
1639 igb_setup_dca(adapter);
1644 switch (hw->mac.type) {
1647 * Initialize hardware timer: we keep it running just in case
1648 * that some program needs it later on.
1650 memset(&adapter->cycles, 0, sizeof(adapter->cycles));
1651 adapter->cycles.read = igb_read_clock;
1652 adapter->cycles.mask = CLOCKSOURCE_MASK(64);
1653 adapter->cycles.mult = 1;
1655 * Scale the NIC clock cycle by a large factor so that
1656 * relatively small clock corrections can be added or
1657 * substracted at each clock tick. The drawbacks of a large
1658 * factor are a) that the clock register overflows more quickly
1659 * (not such a big deal) and b) that the increment per tick has
1660 * to fit into 24 bits. As a result we need to use a shift of
1661 * 19 so we can fit a value of 16 into the TIMINCA register.
1663 adapter->cycles.shift = IGB_82576_TSYNC_SHIFT;
1665 (1 << E1000_TIMINCA_16NS_SHIFT) |
1666 (16 << IGB_82576_TSYNC_SHIFT));
1668 /* Set registers so that rollover occurs soon to test this. */
1669 wr32(E1000_SYSTIML, 0x00000000);
1670 wr32(E1000_SYSTIMH, 0xFF800000);
1673 timecounter_init(&adapter->clock,
1675 ktime_to_ns(ktime_get_real()));
1677 * Synchronize our NIC clock against system wall clock. NIC
1678 * time stamp reading requires ~3us per sample, each sample
1679 * was pretty stable even under load => only require 10
1680 * samples for each offset comparison.
1682 memset(&adapter->compare, 0, sizeof(adapter->compare));
1683 adapter->compare.source = &adapter->clock;
1684 adapter->compare.target = ktime_get_real;
1685 adapter->compare.num_samples = 10;
1686 timecompare_update(&adapter->compare, 0);
1689 /* 82575 does not support timesync */
1694 dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n");
1695 /* print bus type/speed/width info */
1696 dev_info(&pdev->dev, "%s: (PCIe:%s:%s) %pM\n",
1698 ((hw->bus.speed == e1000_bus_speed_2500)
1699 ? "2.5Gb/s" : "unknown"),
1700 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
1701 (hw->bus.width == e1000_bus_width_pcie_x2) ? "Width x2" :
1702 (hw->bus.width == e1000_bus_width_pcie_x1) ? "Width x1" :
1706 igb_read_part_num(hw, &part_num);
1707 dev_info(&pdev->dev, "%s: PBA No: %06x-%03x\n", netdev->name,
1708 (part_num >> 8), (part_num & 0xff));
1710 dev_info(&pdev->dev,
1711 "Using %s interrupts. %d rx queue(s), %d tx queue(s)\n",
1712 adapter->msix_entries ? "MSI-X" :
1713 (adapter->flags & IGB_FLAG_HAS_MSI) ? "MSI" : "legacy",
1714 adapter->num_rx_queues, adapter->num_tx_queues);
1719 igb_release_hw_control(adapter);
1721 if (!igb_check_reset_block(hw))
1724 if (hw->flash_address)
1725 iounmap(hw->flash_address);
1727 igb_clear_interrupt_scheme(adapter);
1728 iounmap(hw->hw_addr);
1730 free_netdev(netdev);
1732 pci_release_selected_regions(pdev, pci_select_bars(pdev,
1736 pci_disable_device(pdev);
1741 * igb_remove - Device Removal Routine
1742 * @pdev: PCI device information struct
1744 * igb_remove is called by the PCI subsystem to alert the driver
1745 * that it should release a PCI device. The could be caused by a
1746 * Hot-Plug event, or because the driver is going to be removed from
1749 static void __devexit igb_remove(struct pci_dev *pdev)
1751 struct net_device *netdev = pci_get_drvdata(pdev);
1752 struct igb_adapter *adapter = netdev_priv(netdev);
1753 struct e1000_hw *hw = &adapter->hw;
1755 /* flush_scheduled work may reschedule our watchdog task, so
1756 * explicitly disable watchdog tasks from being rescheduled */
1757 set_bit(__IGB_DOWN, &adapter->state);
1758 del_timer_sync(&adapter->watchdog_timer);
1759 del_timer_sync(&adapter->phy_info_timer);
1761 flush_scheduled_work();
1763 #ifdef CONFIG_IGB_DCA
1764 if (adapter->flags & IGB_FLAG_DCA_ENABLED) {
1765 dev_info(&pdev->dev, "DCA disabled\n");
1766 dca_remove_requester(&pdev->dev);
1767 adapter->flags &= ~IGB_FLAG_DCA_ENABLED;
1768 wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_DISABLE);
1772 /* Release control of h/w to f/w. If f/w is AMT enabled, this
1773 * would have already happened in close and is redundant. */
1774 igb_release_hw_control(adapter);
1776 unregister_netdev(netdev);
1778 if (!igb_check_reset_block(&adapter->hw))
1779 igb_reset_phy(&adapter->hw);
1781 igb_clear_interrupt_scheme(adapter);
1783 #ifdef CONFIG_PCI_IOV
1784 /* reclaim resources allocated to VFs */
1785 if (adapter->vf_data) {
1786 /* disable iov and allow time for transactions to clear */
1787 pci_disable_sriov(pdev);
1790 kfree(adapter->vf_data);
1791 adapter->vf_data = NULL;
1792 wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
1794 dev_info(&pdev->dev, "IOV Disabled\n");
1797 iounmap(hw->hw_addr);
1798 if (hw->flash_address)
1799 iounmap(hw->flash_address);
1800 pci_release_selected_regions(pdev, pci_select_bars(pdev,
1803 free_netdev(netdev);
1805 pci_disable_pcie_error_reporting(pdev);
1807 pci_disable_device(pdev);
1811 * igb_sw_init - Initialize general software structures (struct igb_adapter)
1812 * @adapter: board private structure to initialize
1814 * igb_sw_init initializes the Adapter private data structure.
1815 * Fields are initialized based on PCI device information and
1816 * OS network device settings (MTU size).
1818 static int __devinit igb_sw_init(struct igb_adapter *adapter)
1820 struct e1000_hw *hw = &adapter->hw;
1821 struct net_device *netdev = adapter->netdev;
1822 struct pci_dev *pdev = adapter->pdev;
1824 pci_read_config_word(pdev, PCI_COMMAND, &hw->bus.pci_cmd_word);
1826 adapter->tx_ring_count = IGB_DEFAULT_TXD;
1827 adapter->rx_ring_count = IGB_DEFAULT_RXD;
1828 adapter->rx_itr_setting = IGB_DEFAULT_ITR;
1829 adapter->tx_itr_setting = IGB_DEFAULT_ITR;
1831 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
1832 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
1834 /* This call may decrease the number of queues depending on
1835 * interrupt mode. */
1836 if (igb_init_interrupt_scheme(adapter)) {
1837 dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
1841 /* Explicitly disable IRQ since the NIC can be in any state. */
1842 igb_irq_disable(adapter);
1844 set_bit(__IGB_DOWN, &adapter->state);
1849 * igb_open - Called when a network interface is made active
1850 * @netdev: network interface device structure
1852 * Returns 0 on success, negative value on failure
1854 * The open entry point is called when a network interface is made
1855 * active by the system (IFF_UP). At this point all resources needed
1856 * for transmit and receive operations are allocated, the interrupt
1857 * handler is registered with the OS, the watchdog timer is started,
1858 * and the stack is notified that the interface is ready.
1860 static int igb_open(struct net_device *netdev)
1862 struct igb_adapter *adapter = netdev_priv(netdev);
1863 struct e1000_hw *hw = &adapter->hw;
1867 /* disallow open during test */
1868 if (test_bit(__IGB_TESTING, &adapter->state))
1871 netif_carrier_off(netdev);
1873 /* allocate transmit descriptors */
1874 err = igb_setup_all_tx_resources(adapter);
1878 /* allocate receive descriptors */
1879 err = igb_setup_all_rx_resources(adapter);
1883 /* e1000_power_up_phy(adapter); */
1885 adapter->mng_vlan_id = IGB_MNG_VLAN_NONE;
1886 if ((adapter->hw.mng_cookie.status &
1887 E1000_MNG_DHCP_COOKIE_STATUS_VLAN))
1888 igb_update_mng_vlan(adapter);
1890 /* before we allocate an interrupt, we must be ready to handle it.
1891 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
1892 * as soon as we call pci_request_irq, so we have to setup our
1893 * clean_rx handler before we do so. */
1894 igb_configure(adapter);
1896 igb_set_vmolr(hw, adapter->vfs_allocated_count);
1898 err = igb_request_irq(adapter);
1902 /* From here on the code is the same as igb_up() */
1903 clear_bit(__IGB_DOWN, &adapter->state);
1905 for (i = 0; i < adapter->num_q_vectors; i++) {
1906 struct igb_q_vector *q_vector = adapter->q_vector[i];
1907 napi_enable(&q_vector->napi);
1910 /* Clear any pending interrupts. */
1913 igb_irq_enable(adapter);
1915 /* notify VFs that reset has been completed */
1916 if (adapter->vfs_allocated_count) {
1917 u32 reg_data = rd32(E1000_CTRL_EXT);
1918 reg_data |= E1000_CTRL_EXT_PFRSTD;
1919 wr32(E1000_CTRL_EXT, reg_data);
1922 netif_tx_start_all_queues(netdev);
1924 /* Fire a link status change interrupt to start the watchdog. */
1925 wr32(E1000_ICS, E1000_ICS_LSC);
1930 igb_release_hw_control(adapter);
1931 /* e1000_power_down_phy(adapter); */
1932 igb_free_all_rx_resources(adapter);
1934 igb_free_all_tx_resources(adapter);
1942 * igb_close - Disables a network interface
1943 * @netdev: network interface device structure
1945 * Returns 0, this is not allowed to fail
1947 * The close entry point is called when an interface is de-activated
1948 * by the OS. The hardware is still under the driver's control, but
1949 * needs to be disabled. A global MAC reset is issued to stop the
1950 * hardware, and all transmit and receive resources are freed.
1952 static int igb_close(struct net_device *netdev)
1954 struct igb_adapter *adapter = netdev_priv(netdev);
1956 WARN_ON(test_bit(__IGB_RESETTING, &adapter->state));
1959 igb_free_irq(adapter);
1961 igb_free_all_tx_resources(adapter);
1962 igb_free_all_rx_resources(adapter);
1964 /* kill manageability vlan ID if supported, but not if a vlan with
1965 * the same ID is registered on the host OS (let 8021q kill it) */
1966 if ((adapter->hw.mng_cookie.status &
1967 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
1969 vlan_group_get_device(adapter->vlgrp, adapter->mng_vlan_id)))
1970 igb_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
1976 * igb_setup_tx_resources - allocate Tx resources (Descriptors)
1977 * @tx_ring: tx descriptor ring (for a specific queue) to setup
1979 * Return 0 on success, negative on failure
1981 int igb_setup_tx_resources(struct igb_ring *tx_ring)
1983 struct pci_dev *pdev = tx_ring->pdev;
1986 size = sizeof(struct igb_buffer) * tx_ring->count;
1987 tx_ring->buffer_info = vmalloc(size);
1988 if (!tx_ring->buffer_info)
1990 memset(tx_ring->buffer_info, 0, size);
1992 /* round up to nearest 4K */
1993 tx_ring->size = tx_ring->count * sizeof(union e1000_adv_tx_desc);
1994 tx_ring->size = ALIGN(tx_ring->size, 4096);
1996 tx_ring->desc = pci_alloc_consistent(pdev, tx_ring->size,
2002 tx_ring->next_to_use = 0;
2003 tx_ring->next_to_clean = 0;
2007 vfree(tx_ring->buffer_info);
2009 "Unable to allocate memory for the transmit descriptor ring\n");
2014 * igb_setup_all_tx_resources - wrapper to allocate Tx resources
2015 * (Descriptors) for all queues
2016 * @adapter: board private structure
2018 * Return 0 on success, negative on failure
2020 static int igb_setup_all_tx_resources(struct igb_adapter *adapter)
2025 for (i = 0; i < adapter->num_tx_queues; i++) {
2026 err = igb_setup_tx_resources(&adapter->tx_ring[i]);
2028 dev_err(&adapter->pdev->dev,
2029 "Allocation for Tx Queue %u failed\n", i);
2030 for (i--; i >= 0; i--)
2031 igb_free_tx_resources(&adapter->tx_ring[i]);
2036 for (i = 0; i < IGB_MAX_TX_QUEUES; i++) {
2037 r_idx = i % adapter->num_tx_queues;
2038 adapter->multi_tx_table[i] = &adapter->tx_ring[r_idx];
2044 * igb_setup_tctl - configure the transmit control registers
2045 * @adapter: Board private structure
2047 void igb_setup_tctl(struct igb_adapter *adapter)
2049 struct e1000_hw *hw = &adapter->hw;
2052 /* disable queue 0 which is enabled by default on 82575 and 82576 */
2053 wr32(E1000_TXDCTL(0), 0);
2055 /* Program the Transmit Control Register */
2056 tctl = rd32(E1000_TCTL);
2057 tctl &= ~E1000_TCTL_CT;
2058 tctl |= E1000_TCTL_PSP | E1000_TCTL_RTLC |
2059 (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT);
2061 igb_config_collision_dist(hw);
2063 /* Enable transmits */
2064 tctl |= E1000_TCTL_EN;
2066 wr32(E1000_TCTL, tctl);
2070 * igb_configure_tx_ring - Configure transmit ring after Reset
2071 * @adapter: board private structure
2072 * @ring: tx ring to configure
2074 * Configure a transmit ring after a reset.
2076 void igb_configure_tx_ring(struct igb_adapter *adapter,
2077 struct igb_ring *ring)
2079 struct e1000_hw *hw = &adapter->hw;
2081 u64 tdba = ring->dma;
2082 int reg_idx = ring->reg_idx;
2084 /* disable the queue */
2085 txdctl = rd32(E1000_TXDCTL(reg_idx));
2086 wr32(E1000_TXDCTL(reg_idx),
2087 txdctl & ~E1000_TXDCTL_QUEUE_ENABLE);
2091 wr32(E1000_TDLEN(reg_idx),
2092 ring->count * sizeof(union e1000_adv_tx_desc));
2093 wr32(E1000_TDBAL(reg_idx),
2094 tdba & 0x00000000ffffffffULL);
2095 wr32(E1000_TDBAH(reg_idx), tdba >> 32);
2097 ring->head = hw->hw_addr + E1000_TDH(reg_idx);
2098 ring->tail = hw->hw_addr + E1000_TDT(reg_idx);
2099 writel(0, ring->head);
2100 writel(0, ring->tail);
2102 txdctl |= IGB_TX_PTHRESH;
2103 txdctl |= IGB_TX_HTHRESH << 8;
2104 txdctl |= IGB_TX_WTHRESH << 16;
2106 txdctl |= E1000_TXDCTL_QUEUE_ENABLE;
2107 wr32(E1000_TXDCTL(reg_idx), txdctl);
2111 * igb_configure_tx - Configure transmit Unit after Reset
2112 * @adapter: board private structure
2114 * Configure the Tx unit of the MAC after a reset.
2116 static void igb_configure_tx(struct igb_adapter *adapter)
2120 for (i = 0; i < adapter->num_tx_queues; i++)
2121 igb_configure_tx_ring(adapter, &adapter->tx_ring[i]);
2125 * igb_setup_rx_resources - allocate Rx resources (Descriptors)
2126 * @rx_ring: rx descriptor ring (for a specific queue) to setup
2128 * Returns 0 on success, negative on failure
2130 int igb_setup_rx_resources(struct igb_ring *rx_ring)
2132 struct pci_dev *pdev = rx_ring->pdev;
2135 size = sizeof(struct igb_buffer) * rx_ring->count;
2136 rx_ring->buffer_info = vmalloc(size);
2137 if (!rx_ring->buffer_info)
2139 memset(rx_ring->buffer_info, 0, size);
2141 desc_len = sizeof(union e1000_adv_rx_desc);
2143 /* Round up to nearest 4K */
2144 rx_ring->size = rx_ring->count * desc_len;
2145 rx_ring->size = ALIGN(rx_ring->size, 4096);
2147 rx_ring->desc = pci_alloc_consistent(pdev, rx_ring->size,
2153 rx_ring->next_to_clean = 0;
2154 rx_ring->next_to_use = 0;
2159 vfree(rx_ring->buffer_info);
2160 dev_err(&pdev->dev, "Unable to allocate memory for "
2161 "the receive descriptor ring\n");
2166 * igb_setup_all_rx_resources - wrapper to allocate Rx resources
2167 * (Descriptors) for all queues
2168 * @adapter: board private structure
2170 * Return 0 on success, negative on failure
2172 static int igb_setup_all_rx_resources(struct igb_adapter *adapter)
2176 for (i = 0; i < adapter->num_rx_queues; i++) {
2177 err = igb_setup_rx_resources(&adapter->rx_ring[i]);
2179 dev_err(&adapter->pdev->dev,
2180 "Allocation for Rx Queue %u failed\n", i);
2181 for (i--; i >= 0; i--)
2182 igb_free_rx_resources(&adapter->rx_ring[i]);
2191 * igb_setup_mrqc - configure the multiple receive queue control registers
2192 * @adapter: Board private structure
2194 static void igb_setup_mrqc(struct igb_adapter *adapter)
2196 struct e1000_hw *hw = &adapter->hw;
2198 u32 j, num_rx_queues, shift = 0, shift2 = 0;
2203 static const u8 rsshash[40] = {
2204 0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2, 0x41, 0x67,
2205 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0, 0xd0, 0xca, 0x2b, 0xcb,
2206 0xae, 0x7b, 0x30, 0xb4, 0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30,
2207 0xf2, 0x0c, 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa };
2209 /* Fill out hash function seeds */
2210 for (j = 0; j < 10; j++) {
2211 u32 rsskey = rsshash[(j * 4)];
2212 rsskey |= rsshash[(j * 4) + 1] << 8;
2213 rsskey |= rsshash[(j * 4) + 2] << 16;
2214 rsskey |= rsshash[(j * 4) + 3] << 24;
2215 array_wr32(E1000_RSSRK(0), j, rsskey);
2218 num_rx_queues = adapter->num_rx_queues;
2220 if (adapter->vfs_allocated_count) {
2221 /* 82575 and 82576 supports 2 RSS queues for VMDq */
2222 switch (hw->mac.type) {
2234 if (hw->mac.type == e1000_82575)
2238 for (j = 0; j < (32 * 4); j++) {
2239 reta.bytes[j & 3] = (j % num_rx_queues) << shift;
2241 reta.bytes[j & 3] |= num_rx_queues << shift2;
2243 wr32(E1000_RETA(j >> 2), reta.dword);
2247 * Disable raw packet checksumming so that RSS hash is placed in
2248 * descriptor on writeback. No need to enable TCP/UDP/IP checksum
2249 * offloads as they are enabled by default
2251 rxcsum = rd32(E1000_RXCSUM);
2252 rxcsum |= E1000_RXCSUM_PCSD;
2254 if (adapter->hw.mac.type >= e1000_82576)
2255 /* Enable Receive Checksum Offload for SCTP */
2256 rxcsum |= E1000_RXCSUM_CRCOFL;
2258 /* Don't need to set TUOFL or IPOFL, they default to 1 */
2259 wr32(E1000_RXCSUM, rxcsum);
2261 /* If VMDq is enabled then we set the appropriate mode for that, else
2262 * we default to RSS so that an RSS hash is calculated per packet even
2263 * if we are only using one queue */
2264 if (adapter->vfs_allocated_count) {
2265 if (hw->mac.type > e1000_82575) {
2266 /* Set the default pool for the PF's first queue */
2267 u32 vtctl = rd32(E1000_VT_CTL);
2268 vtctl &= ~(E1000_VT_CTL_DEFAULT_POOL_MASK |
2269 E1000_VT_CTL_DISABLE_DEF_POOL);
2270 vtctl |= adapter->vfs_allocated_count <<
2271 E1000_VT_CTL_DEFAULT_POOL_SHIFT;
2272 wr32(E1000_VT_CTL, vtctl);
2274 if (adapter->num_rx_queues > 1)
2275 mrqc = E1000_MRQC_ENABLE_VMDQ_RSS_2Q;
2277 mrqc = E1000_MRQC_ENABLE_VMDQ;
2279 mrqc = E1000_MRQC_ENABLE_RSS_4Q;
2281 igb_vmm_control(adapter);
2283 mrqc |= (E1000_MRQC_RSS_FIELD_IPV4 |
2284 E1000_MRQC_RSS_FIELD_IPV4_TCP);
2285 mrqc |= (E1000_MRQC_RSS_FIELD_IPV6 |
2286 E1000_MRQC_RSS_FIELD_IPV6_TCP);
2287 mrqc |= (E1000_MRQC_RSS_FIELD_IPV4_UDP |
2288 E1000_MRQC_RSS_FIELD_IPV6_UDP);
2289 mrqc |= (E1000_MRQC_RSS_FIELD_IPV6_UDP_EX |
2290 E1000_MRQC_RSS_FIELD_IPV6_TCP_EX);
2292 wr32(E1000_MRQC, mrqc);
2296 * igb_setup_rctl - configure the receive control registers
2297 * @adapter: Board private structure
2299 void igb_setup_rctl(struct igb_adapter *adapter)
2301 struct e1000_hw *hw = &adapter->hw;
2304 rctl = rd32(E1000_RCTL);
2306 rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
2307 rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
2309 rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_RDMTS_HALF |
2310 (hw->mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
2313 * enable stripping of CRC. It's unlikely this will break BMC
2314 * redirection as it did with e1000. Newer features require
2315 * that the HW strips the CRC.
2317 rctl |= E1000_RCTL_SECRC;
2320 * disable store bad packets and clear size bits.
2322 rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_SZ_256);
2324 /* enable LPE to prevent packets larger than max_frame_size */
2325 rctl |= E1000_RCTL_LPE;
2327 /* disable queue 0 to prevent tail write w/o re-config */
2328 wr32(E1000_RXDCTL(0), 0);
2330 /* Attention!!! For SR-IOV PF driver operations you must enable
2331 * queue drop for all VF and PF queues to prevent head of line blocking
2332 * if an un-trusted VF does not provide descriptors to hardware.
2334 if (adapter->vfs_allocated_count) {
2337 /* set all queue drop enable bits */
2338 wr32(E1000_QDE, ALL_QUEUES);
2340 vmolr = rd32(E1000_VMOLR(adapter->vfs_allocated_count));
2341 if (rctl & E1000_RCTL_LPE)
2342 vmolr |= E1000_VMOLR_LPE;
2343 if (adapter->num_rx_queues > 1)
2344 vmolr |= E1000_VMOLR_RSSE;
2345 wr32(E1000_VMOLR(adapter->vfs_allocated_count), vmolr);
2348 wr32(E1000_RCTL, rctl);
2352 * igb_rlpml_set - set maximum receive packet size
2353 * @adapter: board private structure
2355 * Configure maximum receivable packet size.
2357 static void igb_rlpml_set(struct igb_adapter *adapter)
2359 u32 max_frame_size = adapter->max_frame_size;
2360 struct e1000_hw *hw = &adapter->hw;
2361 u16 pf_id = adapter->vfs_allocated_count;
2364 max_frame_size += VLAN_TAG_SIZE;
2366 /* if vfs are enabled we set RLPML to the largest possible request
2367 * size and set the VMOLR RLPML to the size we need */
2369 igb_set_vf_rlpml(adapter, max_frame_size, pf_id);
2370 max_frame_size = MAX_STD_JUMBO_FRAME_SIZE + VLAN_TAG_SIZE;
2373 wr32(E1000_RLPML, max_frame_size);
2377 * igb_configure_rx_ring - Configure a receive ring after Reset
2378 * @adapter: board private structure
2379 * @ring: receive ring to be configured
2381 * Configure the Rx unit of the MAC after a reset.
2383 void igb_configure_rx_ring(struct igb_adapter *adapter,
2384 struct igb_ring *ring)
2386 struct e1000_hw *hw = &adapter->hw;
2387 u64 rdba = ring->dma;
2388 int reg_idx = ring->reg_idx;
2391 /* disable the queue */
2392 rxdctl = rd32(E1000_RXDCTL(reg_idx));
2393 wr32(E1000_RXDCTL(reg_idx),
2394 rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
2396 /* Set DMA base address registers */
2397 wr32(E1000_RDBAL(reg_idx),
2398 rdba & 0x00000000ffffffffULL);
2399 wr32(E1000_RDBAH(reg_idx), rdba >> 32);
2400 wr32(E1000_RDLEN(reg_idx),
2401 ring->count * sizeof(union e1000_adv_rx_desc));
2403 /* initialize head and tail */
2404 ring->head = hw->hw_addr + E1000_RDH(reg_idx);
2405 ring->tail = hw->hw_addr + E1000_RDT(reg_idx);
2406 writel(0, ring->head);
2407 writel(0, ring->tail);
2409 /* set descriptor configuration */
2410 if (ring->rx_buffer_len < IGB_RXBUFFER_1024) {
2411 srrctl = ALIGN(ring->rx_buffer_len, 64) <<
2412 E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;
2413 #if (PAGE_SIZE / 2) > IGB_RXBUFFER_16384
2414 srrctl |= IGB_RXBUFFER_16384 >>
2415 E1000_SRRCTL_BSIZEPKT_SHIFT;
2417 srrctl |= (PAGE_SIZE / 2) >>
2418 E1000_SRRCTL_BSIZEPKT_SHIFT;
2420 srrctl |= E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
2422 srrctl = ALIGN(ring->rx_buffer_len, 1024) >>
2423 E1000_SRRCTL_BSIZEPKT_SHIFT;
2424 srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;
2427 wr32(E1000_SRRCTL(reg_idx), srrctl);
2429 /* enable receive descriptor fetching */
2430 rxdctl = rd32(E1000_RXDCTL(reg_idx));
2431 rxdctl |= E1000_RXDCTL_QUEUE_ENABLE;
2432 rxdctl &= 0xFFF00000;
2433 rxdctl |= IGB_RX_PTHRESH;
2434 rxdctl |= IGB_RX_HTHRESH << 8;
2435 rxdctl |= IGB_RX_WTHRESH << 16;
2436 wr32(E1000_RXDCTL(reg_idx), rxdctl);
2440 * igb_configure_rx - Configure receive Unit after Reset
2441 * @adapter: board private structure
2443 * Configure the Rx unit of the MAC after a reset.
2445 static void igb_configure_rx(struct igb_adapter *adapter)
2449 /* set UTA to appropriate mode */
2450 igb_set_uta(adapter);
2452 /* set the correct pool for the PF default MAC address in entry 0 */
2453 igb_rar_set_qsel(adapter, adapter->hw.mac.addr, 0,
2454 adapter->vfs_allocated_count);
2456 /* Setup the HW Rx Head and Tail Descriptor Pointers and
2457 * the Base and Length of the Rx Descriptor Ring */
2458 for (i = 0; i < adapter->num_rx_queues; i++)
2459 igb_configure_rx_ring(adapter, &adapter->rx_ring[i]);
2463 * igb_free_tx_resources - Free Tx Resources per Queue
2464 * @tx_ring: Tx descriptor ring for a specific queue
2466 * Free all transmit software resources
2468 void igb_free_tx_resources(struct igb_ring *tx_ring)
2470 igb_clean_tx_ring(tx_ring);
2472 vfree(tx_ring->buffer_info);
2473 tx_ring->buffer_info = NULL;
2475 pci_free_consistent(tx_ring->pdev, tx_ring->size,
2476 tx_ring->desc, tx_ring->dma);
2478 tx_ring->desc = NULL;
2482 * igb_free_all_tx_resources - Free Tx Resources for All Queues
2483 * @adapter: board private structure
2485 * Free all transmit software resources
2487 static void igb_free_all_tx_resources(struct igb_adapter *adapter)
2491 for (i = 0; i < adapter->num_tx_queues; i++)
2492 igb_free_tx_resources(&adapter->tx_ring[i]);
2495 void igb_unmap_and_free_tx_resource(struct igb_ring *tx_ring,
2496 struct igb_buffer *buffer_info)
2498 buffer_info->dma = 0;
2499 if (buffer_info->skb) {
2500 skb_dma_unmap(&tx_ring->pdev->dev,
2503 dev_kfree_skb_any(buffer_info->skb);
2504 buffer_info->skb = NULL;
2506 buffer_info->time_stamp = 0;
2507 /* buffer_info must be completely set up in the transmit path */
2511 * igb_clean_tx_ring - Free Tx Buffers
2512 * @tx_ring: ring to be cleaned
2514 static void igb_clean_tx_ring(struct igb_ring *tx_ring)
2516 struct igb_buffer *buffer_info;
2520 if (!tx_ring->buffer_info)
2522 /* Free all the Tx ring sk_buffs */
2524 for (i = 0; i < tx_ring->count; i++) {
2525 buffer_info = &tx_ring->buffer_info[i];
2526 igb_unmap_and_free_tx_resource(tx_ring, buffer_info);
2529 size = sizeof(struct igb_buffer) * tx_ring->count;
2530 memset(tx_ring->buffer_info, 0, size);
2532 /* Zero out the descriptor ring */
2534 memset(tx_ring->desc, 0, tx_ring->size);
2536 tx_ring->next_to_use = 0;
2537 tx_ring->next_to_clean = 0;
2539 writel(0, tx_ring->head);
2540 writel(0, tx_ring->tail);
2544 * igb_clean_all_tx_rings - Free Tx Buffers for all queues
2545 * @adapter: board private structure
2547 static void igb_clean_all_tx_rings(struct igb_adapter *adapter)
2551 for (i = 0; i < adapter->num_tx_queues; i++)
2552 igb_clean_tx_ring(&adapter->tx_ring[i]);
2556 * igb_free_rx_resources - Free Rx Resources
2557 * @rx_ring: ring to clean the resources from
2559 * Free all receive software resources
2561 void igb_free_rx_resources(struct igb_ring *rx_ring)
2563 igb_clean_rx_ring(rx_ring);
2565 vfree(rx_ring->buffer_info);
2566 rx_ring->buffer_info = NULL;
2568 pci_free_consistent(rx_ring->pdev, rx_ring->size,
2569 rx_ring->desc, rx_ring->dma);
2571 rx_ring->desc = NULL;
2575 * igb_free_all_rx_resources - Free Rx Resources for All Queues
2576 * @adapter: board private structure
2578 * Free all receive software resources
2580 static void igb_free_all_rx_resources(struct igb_adapter *adapter)
2584 for (i = 0; i < adapter->num_rx_queues; i++)
2585 igb_free_rx_resources(&adapter->rx_ring[i]);
2589 * igb_clean_rx_ring - Free Rx Buffers per Queue
2590 * @rx_ring: ring to free buffers from
2592 static void igb_clean_rx_ring(struct igb_ring *rx_ring)
2594 struct igb_buffer *buffer_info;
2598 if (!rx_ring->buffer_info)
2600 /* Free all the Rx ring sk_buffs */
2601 for (i = 0; i < rx_ring->count; i++) {
2602 buffer_info = &rx_ring->buffer_info[i];
2603 if (buffer_info->dma) {
2604 pci_unmap_single(rx_ring->pdev,
2606 rx_ring->rx_buffer_len,
2607 PCI_DMA_FROMDEVICE);
2608 buffer_info->dma = 0;
2611 if (buffer_info->skb) {
2612 dev_kfree_skb(buffer_info->skb);
2613 buffer_info->skb = NULL;
2615 if (buffer_info->page_dma) {
2616 pci_unmap_page(rx_ring->pdev,
2617 buffer_info->page_dma,
2619 PCI_DMA_FROMDEVICE);
2620 buffer_info->page_dma = 0;
2622 if (buffer_info->page) {
2623 put_page(buffer_info->page);
2624 buffer_info->page = NULL;
2625 buffer_info->page_offset = 0;
2629 size = sizeof(struct igb_buffer) * rx_ring->count;
2630 memset(rx_ring->buffer_info, 0, size);
2632 /* Zero out the descriptor ring */
2633 memset(rx_ring->desc, 0, rx_ring->size);
2635 rx_ring->next_to_clean = 0;
2636 rx_ring->next_to_use = 0;
2638 writel(0, rx_ring->head);
2639 writel(0, rx_ring->tail);
2643 * igb_clean_all_rx_rings - Free Rx Buffers for all queues
2644 * @adapter: board private structure
2646 static void igb_clean_all_rx_rings(struct igb_adapter *adapter)
2650 for (i = 0; i < adapter->num_rx_queues; i++)
2651 igb_clean_rx_ring(&adapter->rx_ring[i]);
2655 * igb_set_mac - Change the Ethernet Address of the NIC
2656 * @netdev: network interface device structure
2657 * @p: pointer to an address structure
2659 * Returns 0 on success, negative on failure
2661 static int igb_set_mac(struct net_device *netdev, void *p)
2663 struct igb_adapter *adapter = netdev_priv(netdev);
2664 struct e1000_hw *hw = &adapter->hw;
2665 struct sockaddr *addr = p;
2667 if (!is_valid_ether_addr(addr->sa_data))
2668 return -EADDRNOTAVAIL;
2670 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
2671 memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
2673 /* set the correct pool for the new PF MAC address in entry 0 */
2674 igb_rar_set_qsel(adapter, hw->mac.addr, 0,
2675 adapter->vfs_allocated_count);
2681 * igb_write_mc_addr_list - write multicast addresses to MTA
2682 * @netdev: network interface device structure
2684 * Writes multicast address list to the MTA hash table.
2685 * Returns: -ENOMEM on failure
2686 * 0 on no addresses written
2687 * X on writing X addresses to MTA
2689 static int igb_write_mc_addr_list(struct net_device *netdev)
2691 struct igb_adapter *adapter = netdev_priv(netdev);
2692 struct e1000_hw *hw = &adapter->hw;
2693 struct dev_mc_list *mc_ptr = netdev->mc_list;
2698 if (!netdev->mc_count) {
2699 /* nothing to program, so clear mc list */
2700 igb_update_mc_addr_list(hw, NULL, 0);
2701 igb_restore_vf_multicasts(adapter);
2705 mta_list = kzalloc(netdev->mc_count * 6, GFP_ATOMIC);
2709 /* set vmolr receive overflow multicast bit */
2710 vmolr |= E1000_VMOLR_ROMPE;
2712 /* The shared function expects a packed array of only addresses. */
2713 mc_ptr = netdev->mc_list;
2715 for (i = 0; i < netdev->mc_count; i++) {
2718 memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN);
2719 mc_ptr = mc_ptr->next;
2721 igb_update_mc_addr_list(hw, mta_list, i);
2724 return netdev->mc_count;
2728 * igb_write_uc_addr_list - write unicast addresses to RAR table
2729 * @netdev: network interface device structure
2731 * Writes unicast address list to the RAR table.
2732 * Returns: -ENOMEM on failure/insufficient address space
2733 * 0 on no addresses written
2734 * X on writing X addresses to the RAR table
2736 static int igb_write_uc_addr_list(struct net_device *netdev)
2738 struct igb_adapter *adapter = netdev_priv(netdev);
2739 struct e1000_hw *hw = &adapter->hw;
2740 unsigned int vfn = adapter->vfs_allocated_count;
2741 unsigned int rar_entries = hw->mac.rar_entry_count - (vfn + 1);
2744 /* return ENOMEM indicating insufficient memory for addresses */
2745 if (netdev->uc.count > rar_entries)
2748 if (netdev->uc.count && rar_entries) {
2749 struct netdev_hw_addr *ha;
2750 list_for_each_entry(ha, &netdev->uc.list, list) {
2753 igb_rar_set_qsel(adapter, ha->addr,
2759 /* write the addresses in reverse order to avoid write combining */
2760 for (; rar_entries > 0 ; rar_entries--) {
2761 wr32(E1000_RAH(rar_entries), 0);
2762 wr32(E1000_RAL(rar_entries), 0);
2770 * igb_set_rx_mode - Secondary Unicast, Multicast and Promiscuous mode set
2771 * @netdev: network interface device structure
2773 * The set_rx_mode entry point is called whenever the unicast or multicast
2774 * address lists or the network interface flags are updated. This routine is
2775 * responsible for configuring the hardware for proper unicast, multicast,
2776 * promiscuous mode, and all-multi behavior.
2778 static void igb_set_rx_mode(struct net_device *netdev)
2780 struct igb_adapter *adapter = netdev_priv(netdev);
2781 struct e1000_hw *hw = &adapter->hw;
2782 unsigned int vfn = adapter->vfs_allocated_count;
2783 u32 rctl, vmolr = 0;
2786 /* Check for Promiscuous and All Multicast modes */
2787 rctl = rd32(E1000_RCTL);
2789 /* clear the effected bits */
2790 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE | E1000_RCTL_VFE);
2792 if (netdev->flags & IFF_PROMISC) {
2793 rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
2794 vmolr |= (E1000_VMOLR_ROPE | E1000_VMOLR_MPME);
2796 if (netdev->flags & IFF_ALLMULTI) {
2797 rctl |= E1000_RCTL_MPE;
2798 vmolr |= E1000_VMOLR_MPME;
2801 * Write addresses to the MTA, if the attempt fails
2802 * then we should just turn on promiscous mode so
2803 * that we can at least receive multicast traffic
2805 count = igb_write_mc_addr_list(netdev);
2807 rctl |= E1000_RCTL_MPE;
2808 vmolr |= E1000_VMOLR_MPME;
2810 vmolr |= E1000_VMOLR_ROMPE;
2814 * Write addresses to available RAR registers, if there is not
2815 * sufficient space to store all the addresses then enable
2816 * unicast promiscous mode
2818 count = igb_write_uc_addr_list(netdev);
2820 rctl |= E1000_RCTL_UPE;
2821 vmolr |= E1000_VMOLR_ROPE;
2823 rctl |= E1000_RCTL_VFE;
2825 wr32(E1000_RCTL, rctl);
2828 * In order to support SR-IOV and eventually VMDq it is necessary to set
2829 * the VMOLR to enable the appropriate modes. Without this workaround
2830 * we will have issues with VLAN tag stripping not being done for frames
2831 * that are only arriving because we are the default pool
2833 if (hw->mac.type < e1000_82576)
2836 vmolr |= rd32(E1000_VMOLR(vfn)) &
2837 ~(E1000_VMOLR_ROPE | E1000_VMOLR_MPME | E1000_VMOLR_ROMPE);
2838 wr32(E1000_VMOLR(vfn), vmolr);
2839 igb_restore_vf_multicasts(adapter);
2842 /* Need to wait a few seconds after link up to get diagnostic information from
2844 static void igb_update_phy_info(unsigned long data)
2846 struct igb_adapter *adapter = (struct igb_adapter *) data;
2847 igb_get_phy_info(&adapter->hw);
2851 * igb_has_link - check shared code for link and determine up/down
2852 * @adapter: pointer to driver private info
2854 static bool igb_has_link(struct igb_adapter *adapter)
2856 struct e1000_hw *hw = &adapter->hw;
2857 bool link_active = false;
2860 /* get_link_status is set on LSC (link status) interrupt or
2861 * rx sequence error interrupt. get_link_status will stay
2862 * false until the e1000_check_for_link establishes link
2863 * for copper adapters ONLY
2865 switch (hw->phy.media_type) {
2866 case e1000_media_type_copper:
2867 if (hw->mac.get_link_status) {
2868 ret_val = hw->mac.ops.check_for_link(hw);
2869 link_active = !hw->mac.get_link_status;
2874 case e1000_media_type_internal_serdes:
2875 ret_val = hw->mac.ops.check_for_link(hw);
2876 link_active = hw->mac.serdes_has_link;
2879 case e1000_media_type_unknown:
2887 * igb_watchdog - Timer Call-back
2888 * @data: pointer to adapter cast into an unsigned long
2890 static void igb_watchdog(unsigned long data)
2892 struct igb_adapter *adapter = (struct igb_adapter *)data;
2893 /* Do the rest outside of interrupt context */
2894 schedule_work(&adapter->watchdog_task);
2897 static void igb_watchdog_task(struct work_struct *work)
2899 struct igb_adapter *adapter = container_of(work,
2900 struct igb_adapter, watchdog_task);
2901 struct e1000_hw *hw = &adapter->hw;
2902 struct net_device *netdev = adapter->netdev;
2903 struct igb_ring *tx_ring = adapter->tx_ring;
2907 link = igb_has_link(adapter);
2908 if ((netif_carrier_ok(netdev)) && link)
2912 if (!netif_carrier_ok(netdev)) {
2914 hw->mac.ops.get_speed_and_duplex(&adapter->hw,
2915 &adapter->link_speed,
2916 &adapter->link_duplex);
2918 ctrl = rd32(E1000_CTRL);
2919 /* Links status message must follow this format */
2920 printk(KERN_INFO "igb: %s NIC Link is Up %d Mbps %s, "
2921 "Flow Control: %s\n",
2923 adapter->link_speed,
2924 adapter->link_duplex == FULL_DUPLEX ?
2925 "Full Duplex" : "Half Duplex",
2926 ((ctrl & E1000_CTRL_TFCE) && (ctrl &
2927 E1000_CTRL_RFCE)) ? "RX/TX" : ((ctrl &
2928 E1000_CTRL_RFCE) ? "RX" : ((ctrl &
2929 E1000_CTRL_TFCE) ? "TX" : "None")));
2931 /* tweak tx_queue_len according to speed/duplex and
2932 * adjust the timeout factor */
2933 netdev->tx_queue_len = adapter->tx_queue_len;
2934 adapter->tx_timeout_factor = 1;
2935 switch (adapter->link_speed) {
2937 netdev->tx_queue_len = 10;
2938 adapter->tx_timeout_factor = 14;
2941 netdev->tx_queue_len = 100;
2942 /* maybe add some timeout factor ? */
2946 netif_carrier_on(netdev);
2948 igb_ping_all_vfs(adapter);
2950 /* link state has changed, schedule phy info update */
2951 if (!test_bit(__IGB_DOWN, &adapter->state))
2952 mod_timer(&adapter->phy_info_timer,
2953 round_jiffies(jiffies + 2 * HZ));
2956 if (netif_carrier_ok(netdev)) {
2957 adapter->link_speed = 0;
2958 adapter->link_duplex = 0;
2959 /* Links status message must follow this format */
2960 printk(KERN_INFO "igb: %s NIC Link is Down\n",
2962 netif_carrier_off(netdev);
2964 igb_ping_all_vfs(adapter);
2966 /* link state has changed, schedule phy info update */
2967 if (!test_bit(__IGB_DOWN, &adapter->state))
2968 mod_timer(&adapter->phy_info_timer,
2969 round_jiffies(jiffies + 2 * HZ));
2974 igb_update_stats(adapter);
2976 hw->mac.tx_packet_delta = adapter->stats.tpt - adapter->tpt_old;
2977 adapter->tpt_old = adapter->stats.tpt;
2978 hw->mac.collision_delta = adapter->stats.colc - adapter->colc_old;
2979 adapter->colc_old = adapter->stats.colc;
2981 adapter->gorc = adapter->stats.gorc - adapter->gorc_old;
2982 adapter->gorc_old = adapter->stats.gorc;
2983 adapter->gotc = adapter->stats.gotc - adapter->gotc_old;
2984 adapter->gotc_old = adapter->stats.gotc;
2986 igb_update_adaptive(&adapter->hw);
2988 if (!netif_carrier_ok(netdev)) {
2989 if (igb_desc_unused(tx_ring) + 1 < tx_ring->count) {
2990 /* We've lost link, so the controller stops DMA,
2991 * but we've got queued Tx work that's never going
2992 * to get done, so reset controller to flush Tx.
2993 * (Do the reset outside of interrupt context). */
2994 adapter->tx_timeout_count++;
2995 schedule_work(&adapter->reset_task);
2996 /* return immediately since reset is imminent */
3001 /* Cause software interrupt to ensure rx ring is cleaned */
3002 if (adapter->msix_entries) {
3004 for (i = 0; i < adapter->num_q_vectors; i++) {
3005 struct igb_q_vector *q_vector = adapter->q_vector[i];
3006 eics |= q_vector->eims_value;
3008 wr32(E1000_EICS, eics);
3010 wr32(E1000_ICS, E1000_ICS_RXDMT0);
3013 /* Force detection of hung controller every watchdog period */
3014 tx_ring->detect_tx_hung = true;
3016 /* Reset the timer */
3017 if (!test_bit(__IGB_DOWN, &adapter->state))
3018 mod_timer(&adapter->watchdog_timer,
3019 round_jiffies(jiffies + 2 * HZ));
3022 enum latency_range {
3026 latency_invalid = 255
3030 * igb_update_ring_itr - update the dynamic ITR value based on packet size
3032 * Stores a new ITR value based on strictly on packet size. This
3033 * algorithm is less sophisticated than that used in igb_update_itr,
3034 * due to the difficulty of synchronizing statistics across multiple
3035 * receive rings. The divisors and thresholds used by this fuction
3036 * were determined based on theoretical maximum wire speed and testing
3037 * data, in order to minimize response time while increasing bulk
3039 * This functionality is controlled by the InterruptThrottleRate module
3040 * parameter (see igb_param.c)
3041 * NOTE: This function is called only when operating in a multiqueue
3042 * receive environment.
3043 * @q_vector: pointer to q_vector
3045 static void igb_update_ring_itr(struct igb_q_vector *q_vector)
3047 int new_val = q_vector->itr_val;
3048 int avg_wire_size = 0;
3049 struct igb_adapter *adapter = q_vector->adapter;
3051 /* For non-gigabit speeds, just fix the interrupt rate at 4000
3052 * ints/sec - ITR timer value of 120 ticks.
3054 if (adapter->link_speed != SPEED_1000) {
3059 if (q_vector->rx_ring && q_vector->rx_ring->total_packets) {
3060 struct igb_ring *ring = q_vector->rx_ring;
3061 avg_wire_size = ring->total_bytes / ring->total_packets;
3064 if (q_vector->tx_ring && q_vector->tx_ring->total_packets) {
3065 struct igb_ring *ring = q_vector->tx_ring;
3066 avg_wire_size = max_t(u32, avg_wire_size,
3067 (ring->total_bytes /
3068 ring->total_packets));
3071 /* if avg_wire_size isn't set no work was done */
3075 /* Add 24 bytes to size to account for CRC, preamble, and gap */
3076 avg_wire_size += 24;
3078 /* Don't starve jumbo frames */
3079 avg_wire_size = min(avg_wire_size, 3000);
3081 /* Give a little boost to mid-size frames */
3082 if ((avg_wire_size > 300) && (avg_wire_size < 1200))
3083 new_val = avg_wire_size / 3;
3085 new_val = avg_wire_size / 2;
3088 if (new_val != q_vector->itr_val) {
3089 q_vector->itr_val = new_val;
3090 q_vector->set_itr = 1;
3093 if (q_vector->rx_ring) {
3094 q_vector->rx_ring->total_bytes = 0;
3095 q_vector->rx_ring->total_packets = 0;
3097 if (q_vector->tx_ring) {
3098 q_vector->tx_ring->total_bytes = 0;
3099 q_vector->tx_ring->total_packets = 0;
3104 * igb_update_itr - update the dynamic ITR value based on statistics
3105 * Stores a new ITR value based on packets and byte
3106 * counts during the last interrupt. The advantage of per interrupt
3107 * computation is faster updates and more accurate ITR for the current
3108 * traffic pattern. Constants in this function were computed
3109 * based on theoretical maximum wire speed and thresholds were set based
3110 * on testing data as well as attempting to minimize response time
3111 * while increasing bulk throughput.
3112 * this functionality is controlled by the InterruptThrottleRate module
3113 * parameter (see igb_param.c)
3114 * NOTE: These calculations are only valid when operating in a single-
3115 * queue environment.
3116 * @adapter: pointer to adapter
3117 * @itr_setting: current q_vector->itr_val
3118 * @packets: the number of packets during this measurement interval
3119 * @bytes: the number of bytes during this measurement interval
3121 static unsigned int igb_update_itr(struct igb_adapter *adapter, u16 itr_setting,
3122 int packets, int bytes)
3124 unsigned int retval = itr_setting;
3127 goto update_itr_done;
3129 switch (itr_setting) {
3130 case lowest_latency:
3131 /* handle TSO and jumbo frames */
3132 if (bytes/packets > 8000)
3133 retval = bulk_latency;
3134 else if ((packets < 5) && (bytes > 512))
3135 retval = low_latency;
3137 case low_latency: /* 50 usec aka 20000 ints/s */
3138 if (bytes > 10000) {
3139 /* this if handles the TSO accounting */
3140 if (bytes/packets > 8000) {
3141 retval = bulk_latency;
3142 } else if ((packets < 10) || ((bytes/packets) > 1200)) {
3143 retval = bulk_latency;
3144 } else if ((packets > 35)) {
3145 retval = lowest_latency;
3147 } else if (bytes/packets > 2000) {
3148 retval = bulk_latency;
3149 } else if (packets <= 2 && bytes < 512) {
3150 retval = lowest_latency;
3153 case bulk_latency: /* 250 usec aka 4000 ints/s */
3154 if (bytes > 25000) {
3156 retval = low_latency;
3157 } else if (bytes < 1500) {
3158 retval = low_latency;
3167 static void igb_set_itr(struct igb_adapter *adapter)
3169 struct igb_q_vector *q_vector = adapter->q_vector[0];
3171 u32 new_itr = q_vector->itr_val;
3173 /* for non-gigabit speeds, just fix the interrupt rate at 4000 */
3174 if (adapter->link_speed != SPEED_1000) {
3180 adapter->rx_itr = igb_update_itr(adapter,
3182 adapter->rx_ring->total_packets,
3183 adapter->rx_ring->total_bytes);
3185 adapter->tx_itr = igb_update_itr(adapter,
3187 adapter->tx_ring->total_packets,
3188 adapter->tx_ring->total_bytes);
3189 current_itr = max(adapter->rx_itr, adapter->tx_itr);
3191 /* conservative mode (itr 3) eliminates the lowest_latency setting */
3192 if (adapter->rx_itr_setting == 3 && current_itr == lowest_latency)
3193 current_itr = low_latency;
3195 switch (current_itr) {
3196 /* counts and packets in update_itr are dependent on these numbers */
3197 case lowest_latency:
3198 new_itr = 56; /* aka 70,000 ints/sec */
3201 new_itr = 196; /* aka 20,000 ints/sec */
3204 new_itr = 980; /* aka 4,000 ints/sec */
3211 adapter->rx_ring->total_bytes = 0;
3212 adapter->rx_ring->total_packets = 0;
3213 adapter->tx_ring->total_bytes = 0;
3214 adapter->tx_ring->total_packets = 0;
3216 if (new_itr != q_vector->itr_val) {
3217 /* this attempts to bias the interrupt rate towards Bulk
3218 * by adding intermediate steps when interrupt rate is
3220 new_itr = new_itr > q_vector->itr_val ?
3221 max((new_itr * q_vector->itr_val) /
3222 (new_itr + (q_vector->itr_val >> 2)),
3225 /* Don't write the value here; it resets the adapter's
3226 * internal timer, and causes us to delay far longer than
3227 * we should between interrupts. Instead, we write the ITR
3228 * value at the beginning of the next interrupt so the timing
3229 * ends up being correct.
3231 q_vector->itr_val = new_itr;
3232 q_vector->set_itr = 1;
3238 #define IGB_TX_FLAGS_CSUM 0x00000001
3239 #define IGB_TX_FLAGS_VLAN 0x00000002
3240 #define IGB_TX_FLAGS_TSO 0x00000004
3241 #define IGB_TX_FLAGS_IPV4 0x00000008
3242 #define IGB_TX_FLAGS_TSTAMP 0x00000010
3243 #define IGB_TX_FLAGS_VLAN_MASK 0xffff0000
3244 #define IGB_TX_FLAGS_VLAN_SHIFT 16
3246 static inline int igb_tso_adv(struct igb_ring *tx_ring,
3247 struct sk_buff *skb, u32 tx_flags, u8 *hdr_len)
3249 struct e1000_adv_tx_context_desc *context_desc;
3252 struct igb_buffer *buffer_info;
3253 u32 info = 0, tu_cmd = 0;
3254 u32 mss_l4len_idx, l4len;
3257 if (skb_header_cloned(skb)) {
3258 err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
3263 l4len = tcp_hdrlen(skb);
3266 if (skb->protocol == htons(ETH_P_IP)) {
3267 struct iphdr *iph = ip_hdr(skb);
3270 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
3274 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
3275 ipv6_hdr(skb)->payload_len = 0;
3276 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
3277 &ipv6_hdr(skb)->daddr,
3281 i = tx_ring->next_to_use;
3283 buffer_info = &tx_ring->buffer_info[i];
3284 context_desc = E1000_TX_CTXTDESC_ADV(*tx_ring, i);
3285 /* VLAN MACLEN IPLEN */
3286 if (tx_flags & IGB_TX_FLAGS_VLAN)
3287 info |= (tx_flags & IGB_TX_FLAGS_VLAN_MASK);
3288 info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
3289 *hdr_len += skb_network_offset(skb);
3290 info |= skb_network_header_len(skb);
3291 *hdr_len += skb_network_header_len(skb);
3292 context_desc->vlan_macip_lens = cpu_to_le32(info);
3294 /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
3295 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
3297 if (skb->protocol == htons(ETH_P_IP))
3298 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
3299 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
3301 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
3304 mss_l4len_idx = (skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT);
3305 mss_l4len_idx |= (l4len << E1000_ADVTXD_L4LEN_SHIFT);
3307 /* For 82575, context index must be unique per ring. */
3308 if (tx_ring->flags & IGB_RING_FLAG_TX_CTX_IDX)
3309 mss_l4len_idx |= tx_ring->reg_idx << 4;
3311 context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
3312 context_desc->seqnum_seed = 0;
3314 buffer_info->time_stamp = jiffies;
3315 buffer_info->next_to_watch = i;
3316 buffer_info->dma = 0;
3318 if (i == tx_ring->count)
3321 tx_ring->next_to_use = i;
3326 static inline bool igb_tx_csum_adv(struct igb_ring *tx_ring,
3327 struct sk_buff *skb, u32 tx_flags)
3329 struct e1000_adv_tx_context_desc *context_desc;
3330 struct pci_dev *pdev = tx_ring->pdev;
3331 struct igb_buffer *buffer_info;
3332 u32 info = 0, tu_cmd = 0;
3335 if ((skb->ip_summed == CHECKSUM_PARTIAL) ||
3336 (tx_flags & IGB_TX_FLAGS_VLAN)) {
3337 i = tx_ring->next_to_use;
3338 buffer_info = &tx_ring->buffer_info[i];
3339 context_desc = E1000_TX_CTXTDESC_ADV(*tx_ring, i);
3341 if (tx_flags & IGB_TX_FLAGS_VLAN)
3342 info |= (tx_flags & IGB_TX_FLAGS_VLAN_MASK);
3343 info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
3344 if (skb->ip_summed == CHECKSUM_PARTIAL)
3345 info |= skb_network_header_len(skb);
3347 context_desc->vlan_macip_lens = cpu_to_le32(info);
3349 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
3351 if (skb->ip_summed == CHECKSUM_PARTIAL) {
3354 if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) {
3355 const struct vlan_ethhdr *vhdr =
3356 (const struct vlan_ethhdr*)skb->data;
3358 protocol = vhdr->h_vlan_encapsulated_proto;
3360 protocol = skb->protocol;
3364 case cpu_to_be16(ETH_P_IP):
3365 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
3366 if (ip_hdr(skb)->protocol == IPPROTO_TCP)
3367 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
3368 else if (ip_hdr(skb)->protocol == IPPROTO_SCTP)
3369 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_SCTP;
3371 case cpu_to_be16(ETH_P_IPV6):
3372 /* XXX what about other V6 headers?? */
3373 if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
3374 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
3375 else if (ipv6_hdr(skb)->nexthdr == IPPROTO_SCTP)
3376 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_SCTP;
3379 if (unlikely(net_ratelimit()))
3380 dev_warn(&pdev->dev,
3381 "partial checksum but proto=%x!\n",
3387 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
3388 context_desc->seqnum_seed = 0;
3389 if (tx_ring->flags & IGB_RING_FLAG_TX_CTX_IDX)
3390 context_desc->mss_l4len_idx =
3391 cpu_to_le32(tx_ring->reg_idx << 4);
3393 buffer_info->time_stamp = jiffies;
3394 buffer_info->next_to_watch = i;
3395 buffer_info->dma = 0;
3398 if (i == tx_ring->count)
3400 tx_ring->next_to_use = i;
3407 #define IGB_MAX_TXD_PWR 16
3408 #define IGB_MAX_DATA_PER_TXD (1<<IGB_MAX_TXD_PWR)
3410 static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
3413 struct igb_buffer *buffer_info;
3414 struct pci_dev *pdev = tx_ring->pdev;
3415 unsigned int len = skb_headlen(skb);
3416 unsigned int count = 0, i;
3420 i = tx_ring->next_to_use;
3422 if (skb_dma_map(&pdev->dev, skb, DMA_TO_DEVICE)) {
3423 dev_err(&pdev->dev, "TX DMA map failed\n");
3427 map = skb_shinfo(skb)->dma_maps;
3429 buffer_info = &tx_ring->buffer_info[i];
3430 BUG_ON(len >= IGB_MAX_DATA_PER_TXD);
3431 buffer_info->length = len;
3432 /* set time_stamp *before* dma to help avoid a possible race */
3433 buffer_info->time_stamp = jiffies;
3434 buffer_info->next_to_watch = i;
3435 buffer_info->dma = skb_shinfo(skb)->dma_head;
3437 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
3438 struct skb_frag_struct *frag;
3441 if (i == tx_ring->count)
3444 frag = &skb_shinfo(skb)->frags[f];
3447 buffer_info = &tx_ring->buffer_info[i];
3448 BUG_ON(len >= IGB_MAX_DATA_PER_TXD);
3449 buffer_info->length = len;
3450 buffer_info->time_stamp = jiffies;
3451 buffer_info->next_to_watch = i;
3452 buffer_info->dma = map[count];
3456 tx_ring->buffer_info[i].skb = skb;
3457 tx_ring->buffer_info[first].next_to_watch = i;
3462 static inline void igb_tx_queue_adv(struct igb_ring *tx_ring,
3463 int tx_flags, int count, u32 paylen,
3466 union e1000_adv_tx_desc *tx_desc = NULL;
3467 struct igb_buffer *buffer_info;
3468 u32 olinfo_status = 0, cmd_type_len;
3471 cmd_type_len = (E1000_ADVTXD_DTYP_DATA | E1000_ADVTXD_DCMD_IFCS |
3472 E1000_ADVTXD_DCMD_DEXT);
3474 if (tx_flags & IGB_TX_FLAGS_VLAN)
3475 cmd_type_len |= E1000_ADVTXD_DCMD_VLE;
3477 if (tx_flags & IGB_TX_FLAGS_TSTAMP)
3478 cmd_type_len |= E1000_ADVTXD_MAC_TSTAMP;
3480 if (tx_flags & IGB_TX_FLAGS_TSO) {
3481 cmd_type_len |= E1000_ADVTXD_DCMD_TSE;
3483 /* insert tcp checksum */
3484 olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
3486 /* insert ip checksum */
3487 if (tx_flags & IGB_TX_FLAGS_IPV4)
3488 olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
3490 } else if (tx_flags & IGB_TX_FLAGS_CSUM) {
3491 olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
3494 if ((tx_ring->flags & IGB_RING_FLAG_TX_CTX_IDX) &&
3495 (tx_flags & (IGB_TX_FLAGS_CSUM |
3497 IGB_TX_FLAGS_VLAN)))
3498 olinfo_status |= tx_ring->reg_idx << 4;
3500 olinfo_status |= ((paylen - hdr_len) << E1000_ADVTXD_PAYLEN_SHIFT);
3502 i = tx_ring->next_to_use;
3504 buffer_info = &tx_ring->buffer_info[i];
3505 tx_desc = E1000_TX_DESC_ADV(*tx_ring, i);
3506 tx_desc->read.buffer_addr = cpu_to_le64(buffer_info->dma);
3507 tx_desc->read.cmd_type_len =
3508 cpu_to_le32(cmd_type_len | buffer_info->length);
3509 tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
3511 if (i == tx_ring->count)
3515 tx_desc->read.cmd_type_len |= cpu_to_le32(IGB_ADVTXD_DCMD);
3516 /* Force memory writes to complete before letting h/w
3517 * know there are new descriptors to fetch. (Only
3518 * applicable for weak-ordered memory model archs,
3519 * such as IA-64). */
3522 tx_ring->next_to_use = i;
3523 writel(i, tx_ring->tail);
3524 /* we need this if more than one processor can write to our tail
3525 * at a time, it syncronizes IO on IA64/Altix systems */
3529 static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, int size)
3531 struct net_device *netdev = tx_ring->netdev;
3533 netif_stop_subqueue(netdev, tx_ring->queue_index);
3535 /* Herbert's original patch had:
3536 * smp_mb__after_netif_stop_queue();
3537 * but since that doesn't exist yet, just open code it. */
3540 /* We need to check again in a case another CPU has just
3541 * made room available. */
3542 if (igb_desc_unused(tx_ring) < size)
3546 netif_wake_subqueue(netdev, tx_ring->queue_index);
3547 tx_ring->tx_stats.restart_queue++;
3551 static int igb_maybe_stop_tx(struct igb_ring *tx_ring, int size)
3553 if (igb_desc_unused(tx_ring) >= size)
3555 return __igb_maybe_stop_tx(tx_ring, size);
3558 netdev_tx_t igb_xmit_frame_ring_adv(struct sk_buff *skb,
3559 struct igb_ring *tx_ring)
3561 struct igb_adapter *adapter = netdev_priv(tx_ring->netdev);
3563 unsigned int tx_flags = 0;
3567 union skb_shared_tx *shtx = skb_tx(skb);
3569 /* need: 1 descriptor per page,
3570 * + 2 desc gap to keep tail from touching head,
3571 * + 1 desc for skb->data,
3572 * + 1 desc for context descriptor,
3573 * otherwise try next time */
3574 if (igb_maybe_stop_tx(tx_ring, skb_shinfo(skb)->nr_frags + 4)) {
3575 /* this is a hard error */
3576 return NETDEV_TX_BUSY;
3579 if (unlikely(shtx->hardware)) {
3580 shtx->in_progress = 1;
3581 tx_flags |= IGB_TX_FLAGS_TSTAMP;
3584 if (adapter->vlgrp && vlan_tx_tag_present(skb)) {
3585 tx_flags |= IGB_TX_FLAGS_VLAN;
3586 tx_flags |= (vlan_tx_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT);
3589 if (skb->protocol == htons(ETH_P_IP))
3590 tx_flags |= IGB_TX_FLAGS_IPV4;
3592 first = tx_ring->next_to_use;
3593 if (skb_is_gso(skb)) {
3594 tso = igb_tso_adv(tx_ring, skb, tx_flags, &hdr_len);
3596 dev_kfree_skb_any(skb);
3597 return NETDEV_TX_OK;
3602 tx_flags |= IGB_TX_FLAGS_TSO;
3603 else if (igb_tx_csum_adv(tx_ring, skb, tx_flags) &&
3604 (skb->ip_summed == CHECKSUM_PARTIAL))
3605 tx_flags |= IGB_TX_FLAGS_CSUM;
3608 * count reflects descriptors mapped, if 0 then mapping error
3609 * has occured and we need to rewind the descriptor queue
3611 count = igb_tx_map_adv(tx_ring, skb, first);
3614 dev_kfree_skb_any(skb);
3615 tx_ring->buffer_info[first].time_stamp = 0;
3616 tx_ring->next_to_use = first;
3617 return NETDEV_TX_OK;
3620 igb_tx_queue_adv(tx_ring, tx_flags, count, skb->len, hdr_len);
3622 /* Make sure there is space in the ring for the next send. */
3623 igb_maybe_stop_tx(tx_ring, MAX_SKB_FRAGS + 4);
3625 return NETDEV_TX_OK;
3628 static netdev_tx_t igb_xmit_frame_adv(struct sk_buff *skb,
3629 struct net_device *netdev)
3631 struct igb_adapter *adapter = netdev_priv(netdev);
3632 struct igb_ring *tx_ring;
3635 if (test_bit(__IGB_DOWN, &adapter->state)) {
3636 dev_kfree_skb_any(skb);
3637 return NETDEV_TX_OK;
3640 if (skb->len <= 0) {
3641 dev_kfree_skb_any(skb);
3642 return NETDEV_TX_OK;
3645 r_idx = skb->queue_mapping & (IGB_ABS_MAX_TX_QUEUES - 1);
3646 tx_ring = adapter->multi_tx_table[r_idx];
3648 /* This goes back to the question of how to logically map a tx queue
3649 * to a flow. Right now, performance is impacted slightly negatively
3650 * if using multiple tx queues. If the stack breaks away from a
3651 * single qdisc implementation, we can look at this again. */
3652 return igb_xmit_frame_ring_adv(skb, tx_ring);
3656 * igb_tx_timeout - Respond to a Tx Hang
3657 * @netdev: network interface device structure
3659 static void igb_tx_timeout(struct net_device *netdev)
3661 struct igb_adapter *adapter = netdev_priv(netdev);
3662 struct e1000_hw *hw = &adapter->hw;
3664 /* Do the reset outside of interrupt context */
3665 adapter->tx_timeout_count++;
3666 schedule_work(&adapter->reset_task);
3668 (adapter->eims_enable_mask & ~adapter->eims_other));
3671 static void igb_reset_task(struct work_struct *work)
3673 struct igb_adapter *adapter;
3674 adapter = container_of(work, struct igb_adapter, reset_task);
3676 igb_reinit_locked(adapter);
3680 * igb_get_stats - Get System Network Statistics
3681 * @netdev: network interface device structure
3683 * Returns the address of the device statistics structure.
3684 * The statistics are actually updated from the timer callback.
3686 static struct net_device_stats *igb_get_stats(struct net_device *netdev)
3688 /* only return the current stats */
3689 return &netdev->stats;
3693 * igb_change_mtu - Change the Maximum Transfer Unit
3694 * @netdev: network interface device structure
3695 * @new_mtu: new value for maximum frame size
3697 * Returns 0 on success, negative on failure
3699 static int igb_change_mtu(struct net_device *netdev, int new_mtu)
3701 struct igb_adapter *adapter = netdev_priv(netdev);
3702 int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
3703 u32 rx_buffer_len, i;
3705 if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) ||
3706 (max_frame > MAX_JUMBO_FRAME_SIZE)) {
3707 dev_err(&adapter->pdev->dev, "Invalid MTU setting\n");
3711 if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) {
3712 dev_err(&adapter->pdev->dev, "MTU > 9216 not supported.\n");
3716 while (test_and_set_bit(__IGB_RESETTING, &adapter->state))
3719 /* igb_down has a dependency on max_frame_size */
3720 adapter->max_frame_size = max_frame;
3721 /* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
3722 * means we reserve 2 more, this pushes us to allocate from the next
3724 * i.e. RXBUFFER_2048 --> size-4096 slab
3727 if (max_frame <= IGB_RXBUFFER_1024)
3728 rx_buffer_len = IGB_RXBUFFER_1024;
3729 else if (max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE)
3730 rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE;
3732 rx_buffer_len = IGB_RXBUFFER_128;
3734 if (netif_running(netdev))
3737 dev_info(&adapter->pdev->dev, "changing MTU from %d to %d\n",
3738 netdev->mtu, new_mtu);
3739 netdev->mtu = new_mtu;
3741 for (i = 0; i < adapter->num_rx_queues; i++)
3742 adapter->rx_ring[i].rx_buffer_len = rx_buffer_len;
3744 if (netif_running(netdev))
3749 clear_bit(__IGB_RESETTING, &adapter->state);
3755 * igb_update_stats - Update the board statistics counters
3756 * @adapter: board private structure
3759 void igb_update_stats(struct igb_adapter *adapter)
3761 struct net_device *netdev = adapter->netdev;
3762 struct e1000_hw *hw = &adapter->hw;
3763 struct pci_dev *pdev = adapter->pdev;
3766 #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
3769 * Prevent stats update while adapter is being reset, or if the pci
3770 * connection is down.
3772 if (adapter->link_speed == 0)
3774 if (pci_channel_offline(pdev))
3777 adapter->stats.crcerrs += rd32(E1000_CRCERRS);
3778 adapter->stats.gprc += rd32(E1000_GPRC);
3779 adapter->stats.gorc += rd32(E1000_GORCL);
3780 rd32(E1000_GORCH); /* clear GORCL */
3781 adapter->stats.bprc += rd32(E1000_BPRC);
3782 adapter->stats.mprc += rd32(E1000_MPRC);
3783 adapter->stats.roc += rd32(E1000_ROC);
3785 adapter->stats.prc64 += rd32(E1000_PRC64);
3786 adapter->stats.prc127 += rd32(E1000_PRC127);
3787 adapter->stats.prc255 += rd32(E1000_PRC255);
3788 adapter->stats.prc511 += rd32(E1000_PRC511);
3789 adapter->stats.prc1023 += rd32(E1000_PRC1023);
3790 adapter->stats.prc1522 += rd32(E1000_PRC1522);
3791 adapter->stats.symerrs += rd32(E1000_SYMERRS);
3792 adapter->stats.sec += rd32(E1000_SEC);
3794 adapter->stats.mpc += rd32(E1000_MPC);
3795 adapter->stats.scc += rd32(E1000_SCC);
3796 adapter->stats.ecol += rd32(E1000_ECOL);
3797 adapter->stats.mcc += rd32(E1000_MCC);
3798 adapter->stats.latecol += rd32(E1000_LATECOL);
3799 adapter->stats.dc += rd32(E1000_DC);
3800 adapter->stats.rlec += rd32(E1000_RLEC);
3801 adapter->stats.xonrxc += rd32(E1000_XONRXC);
3802 adapter->stats.xontxc += rd32(E1000_XONTXC);
3803 adapter->stats.xoffrxc += rd32(E1000_XOFFRXC);
3804 adapter->stats.xofftxc += rd32(E1000_XOFFTXC);
3805 adapter->stats.fcruc += rd32(E1000_FCRUC);
3806 adapter->stats.gptc += rd32(E1000_GPTC);
3807 adapter->stats.gotc += rd32(E1000_GOTCL);
3808 rd32(E1000_GOTCH); /* clear GOTCL */
3809 adapter->stats.rnbc += rd32(E1000_RNBC);
3810 adapter->stats.ruc += rd32(E1000_RUC);
3811 adapter->stats.rfc += rd32(E1000_RFC);
3812 adapter->stats.rjc += rd32(E1000_RJC);
3813 adapter->stats.tor += rd32(E1000_TORH);
3814 adapter->stats.tot += rd32(E1000_TOTH);
3815 adapter->stats.tpr += rd32(E1000_TPR);
3817 adapter->stats.ptc64 += rd32(E1000_PTC64);
3818 adapter->stats.ptc127 += rd32(E1000_PTC127);
3819 adapter->stats.ptc255 += rd32(E1000_PTC255);
3820 adapter->stats.ptc511 += rd32(E1000_PTC511);
3821 adapter->stats.ptc1023 += rd32(E1000_PTC1023);
3822 adapter->stats.ptc1522 += rd32(E1000_PTC1522);
3824 adapter->stats.mptc += rd32(E1000_MPTC);
3825 adapter->stats.bptc += rd32(E1000_BPTC);
3827 /* used for adaptive IFS */
3829 hw->mac.tx_packet_delta = rd32(E1000_TPT);
3830 adapter->stats.tpt += hw->mac.tx_packet_delta;
3831 hw->mac.collision_delta = rd32(E1000_COLC);
3832 adapter->stats.colc += hw->mac.collision_delta;
3834 adapter->stats.algnerrc += rd32(E1000_ALGNERRC);
3835 adapter->stats.rxerrc += rd32(E1000_RXERRC);
3836 adapter->stats.tncrs += rd32(E1000_TNCRS);
3837 adapter->stats.tsctc += rd32(E1000_TSCTC);
3838 adapter->stats.tsctfc += rd32(E1000_TSCTFC);
3840 adapter->stats.iac += rd32(E1000_IAC);
3841 adapter->stats.icrxoc += rd32(E1000_ICRXOC);
3842 adapter->stats.icrxptc += rd32(E1000_ICRXPTC);
3843 adapter->stats.icrxatc += rd32(E1000_ICRXATC);
3844 adapter->stats.ictxptc += rd32(E1000_ICTXPTC);
3845 adapter->stats.ictxatc += rd32(E1000_ICTXATC);
3846 adapter->stats.ictxqec += rd32(E1000_ICTXQEC);
3847 adapter->stats.ictxqmtc += rd32(E1000_ICTXQMTC);
3848 adapter->stats.icrxdmtc += rd32(E1000_ICRXDMTC);
3850 /* Fill out the OS statistics structure */
3851 netdev->stats.multicast = adapter->stats.mprc;
3852 netdev->stats.collisions = adapter->stats.colc;
3856 if (hw->mac.type != e1000_82575) {
3858 u64 rqdpc_total = 0;
3860 /* Read out drops stats per RX queue. Notice RQDPC (Receive
3861 * Queue Drop Packet Count) stats only gets incremented, if
3862 * the DROP_EN but it set (in the SRRCTL register for that
3863 * queue). If DROP_EN bit is NOT set, then the some what
3864 * equivalent count is stored in RNBC (not per queue basis).
3865 * Also note the drop count is due to lack of available
3868 for (i = 0; i < adapter->num_rx_queues; i++) {
3869 rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0xFFF;
3870 adapter->rx_ring[i].rx_stats.drops += rqdpc_tmp;
3871 rqdpc_total += adapter->rx_ring[i].rx_stats.drops;
3873 netdev->stats.rx_fifo_errors = rqdpc_total;
3876 /* Note RNBC (Receive No Buffers Count) is an not an exact
3877 * drop count as the hardware FIFO might save the day. Thats
3878 * one of the reason for saving it in rx_fifo_errors, as its
3879 * potentially not a true drop.
3881 netdev->stats.rx_fifo_errors += adapter->stats.rnbc;
3883 /* RLEC on some newer hardware can be incorrect so build
3884 * our own version based on RUC and ROC */
3885 netdev->stats.rx_errors = adapter->stats.rxerrc +
3886 adapter->stats.crcerrs + adapter->stats.algnerrc +
3887 adapter->stats.ruc + adapter->stats.roc +
3888 adapter->stats.cexterr;
3889 netdev->stats.rx_length_errors = adapter->stats.ruc +
3891 netdev->stats.rx_crc_errors = adapter->stats.crcerrs;
3892 netdev->stats.rx_frame_errors = adapter->stats.algnerrc;
3893 netdev->stats.rx_missed_errors = adapter->stats.mpc;
3896 netdev->stats.tx_errors = adapter->stats.ecol +
3897 adapter->stats.latecol;
3898 netdev->stats.tx_aborted_errors = adapter->stats.ecol;
3899 netdev->stats.tx_window_errors = adapter->stats.latecol;
3900 netdev->stats.tx_carrier_errors = adapter->stats.tncrs;
3902 /* Tx Dropped needs to be maintained elsewhere */
3905 if (hw->phy.media_type == e1000_media_type_copper) {
3906 if ((adapter->link_speed == SPEED_1000) &&
3907 (!igb_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
3908 phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
3909 adapter->phy_stats.idle_errors += phy_tmp;
3913 /* Management Stats */
3914 adapter->stats.mgptc += rd32(E1000_MGTPTC);
3915 adapter->stats.mgprc += rd32(E1000_MGTPRC);
3916 adapter->stats.mgpdc += rd32(E1000_MGTPDC);
3919 static irqreturn_t igb_msix_other(int irq, void *data)
3921 struct igb_adapter *adapter = data;
3922 struct e1000_hw *hw = &adapter->hw;
3923 u32 icr = rd32(E1000_ICR);
3924 /* reading ICR causes bit 31 of EICR to be cleared */
3926 if (icr & E1000_ICR_DOUTSYNC) {
3927 /* HW is reporting DMA is out of sync */
3928 adapter->stats.doosync++;
3931 /* Check for a mailbox event */
3932 if (icr & E1000_ICR_VMMB)
3933 igb_msg_task(adapter);
3935 if (icr & E1000_ICR_LSC) {
3936 hw->mac.get_link_status = 1;
3937 /* guard against interrupt when we're going down */
3938 if (!test_bit(__IGB_DOWN, &adapter->state))
3939 mod_timer(&adapter->watchdog_timer, jiffies + 1);
3942 wr32(E1000_IMS, E1000_IMS_LSC | E1000_IMS_DOUTSYNC | E1000_IMS_VMMB);
3943 wr32(E1000_EIMS, adapter->eims_other);
3948 static void igb_write_itr(struct igb_q_vector *q_vector)
3950 u32 itr_val = q_vector->itr_val & 0x7FFC;
3952 if (!q_vector->set_itr)
3958 if (q_vector->itr_shift)
3959 itr_val |= itr_val << q_vector->itr_shift;
3961 itr_val |= 0x8000000;
3963 writel(itr_val, q_vector->itr_register);
3964 q_vector->set_itr = 0;
3967 static irqreturn_t igb_msix_ring(int irq, void *data)
3969 struct igb_q_vector *q_vector = data;
3971 /* Write the ITR value calculated from the previous interrupt. */
3972 igb_write_itr(q_vector);
3974 napi_schedule(&q_vector->napi);
3979 #ifdef CONFIG_IGB_DCA
3980 static void igb_update_dca(struct igb_q_vector *q_vector)
3982 struct igb_adapter *adapter = q_vector->adapter;
3983 struct e1000_hw *hw = &adapter->hw;
3984 int cpu = get_cpu();
3986 if (q_vector->cpu == cpu)
3989 if (q_vector->tx_ring) {
3990 int q = q_vector->tx_ring->reg_idx;
3991 u32 dca_txctrl = rd32(E1000_DCA_TXCTRL(q));
3992 if (hw->mac.type == e1000_82575) {
3993 dca_txctrl &= ~E1000_DCA_TXCTRL_CPUID_MASK;
3994 dca_txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
3996 dca_txctrl &= ~E1000_DCA_TXCTRL_CPUID_MASK_82576;
3997 dca_txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu) <<
3998 E1000_DCA_TXCTRL_CPUID_SHIFT;
4000 dca_txctrl |= E1000_DCA_TXCTRL_DESC_DCA_EN;
4001 wr32(E1000_DCA_TXCTRL(q), dca_txctrl);
4003 if (q_vector->rx_ring) {
4004 int q = q_vector->rx_ring->reg_idx;
4005 u32 dca_rxctrl = rd32(E1000_DCA_RXCTRL(q));
4006 if (hw->mac.type == e1000_82575) {
4007 dca_rxctrl &= ~E1000_DCA_RXCTRL_CPUID_MASK;
4008 dca_rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
4010 dca_rxctrl &= ~E1000_DCA_RXCTRL_CPUID_MASK_82576;
4011 dca_rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu) <<
4012 E1000_DCA_RXCTRL_CPUID_SHIFT;
4014 dca_rxctrl |= E1000_DCA_RXCTRL_DESC_DCA_EN;
4015 dca_rxctrl |= E1000_DCA_RXCTRL_HEAD_DCA_EN;
4016 dca_rxctrl |= E1000_DCA_RXCTRL_DATA_DCA_EN;
4017 wr32(E1000_DCA_RXCTRL(q), dca_rxctrl);
4019 q_vector->cpu = cpu;
4024 static void igb_setup_dca(struct igb_adapter *adapter)
4026 struct e1000_hw *hw = &adapter->hw;
4029 if (!(adapter->flags & IGB_FLAG_DCA_ENABLED))
4032 /* Always use CB2 mode, difference is masked in the CB driver. */
4033 wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_CB2);
4035 for (i = 0; i < adapter->num_q_vectors; i++) {
4036 struct igb_q_vector *q_vector = adapter->q_vector[i];
4038 igb_update_dca(q_vector);
4042 static int __igb_notify_dca(struct device *dev, void *data)
4044 struct net_device *netdev = dev_get_drvdata(dev);
4045 struct igb_adapter *adapter = netdev_priv(netdev);
4046 struct e1000_hw *hw = &adapter->hw;
4047 unsigned long event = *(unsigned long *)data;
4050 case DCA_PROVIDER_ADD:
4051 /* if already enabled, don't do it again */
4052 if (adapter->flags & IGB_FLAG_DCA_ENABLED)
4054 /* Always use CB2 mode, difference is masked
4055 * in the CB driver. */
4056 wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_CB2);
4057 if (dca_add_requester(dev) == 0) {
4058 adapter->flags |= IGB_FLAG_DCA_ENABLED;
4059 dev_info(&adapter->pdev->dev, "DCA enabled\n");
4060 igb_setup_dca(adapter);
4063 /* Fall Through since DCA is disabled. */
4064 case DCA_PROVIDER_REMOVE:
4065 if (adapter->flags & IGB_FLAG_DCA_ENABLED) {
4066 /* without this a class_device is left
4067 * hanging around in the sysfs model */
4068 dca_remove_requester(dev);
4069 dev_info(&adapter->pdev->dev, "DCA disabled\n");
4070 adapter->flags &= ~IGB_FLAG_DCA_ENABLED;
4071 wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_DISABLE);
4079 static int igb_notify_dca(struct notifier_block *nb, unsigned long event,
4084 ret_val = driver_for_each_device(&igb_driver.driver, NULL, &event,
4087 return ret_val ? NOTIFY_BAD : NOTIFY_DONE;
4089 #endif /* CONFIG_IGB_DCA */
4091 static void igb_ping_all_vfs(struct igb_adapter *adapter)
4093 struct e1000_hw *hw = &adapter->hw;
4097 for (i = 0 ; i < adapter->vfs_allocated_count; i++) {
4098 ping = E1000_PF_CONTROL_MSG;
4099 if (adapter->vf_data[i].clear_to_send)
4100 ping |= E1000_VT_MSGTYPE_CTS;
4101 igb_write_mbx(hw, &ping, 1, i);
4105 static int igb_set_vf_multicasts(struct igb_adapter *adapter,
4106 u32 *msgbuf, u32 vf)
4108 int n = (msgbuf[0] & E1000_VT_MSGINFO_MASK) >> E1000_VT_MSGINFO_SHIFT;
4109 u16 *hash_list = (u16 *)&msgbuf[1];
4110 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
4113 /* only up to 30 hash values supported */
4117 /* salt away the number of multi cast addresses assigned
4118 * to this VF for later use to restore when the PF multi cast
4121 vf_data->num_vf_mc_hashes = n;
4123 /* VFs are limited to using the MTA hash table for their multicast
4125 for (i = 0; i < n; i++)
4126 vf_data->vf_mc_hashes[i] = hash_list[i];
4128 /* Flush and reset the mta with the new values */
4129 igb_set_rx_mode(adapter->netdev);
4134 static void igb_restore_vf_multicasts(struct igb_adapter *adapter)
4136 struct e1000_hw *hw = &adapter->hw;
4137 struct vf_data_storage *vf_data;
4140 for (i = 0; i < adapter->vfs_allocated_count; i++) {
4141 vf_data = &adapter->vf_data[i];
4142 for (j = 0; j < vf_data->num_vf_mc_hashes; j++)
4143 igb_mta_set(hw, vf_data->vf_mc_hashes[j]);
4147 static void igb_clear_vf_vfta(struct igb_adapter *adapter, u32 vf)
4149 struct e1000_hw *hw = &adapter->hw;
4150 u32 pool_mask, reg, vid;
4153 pool_mask = 1 << (E1000_VLVF_POOLSEL_SHIFT + vf);
4155 /* Find the vlan filter for this id */
4156 for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
4157 reg = rd32(E1000_VLVF(i));
4159 /* remove the vf from the pool */
4162 /* if pool is empty then remove entry from vfta */
4163 if (!(reg & E1000_VLVF_POOLSEL_MASK) &&
4164 (reg & E1000_VLVF_VLANID_ENABLE)) {
4166 vid = reg & E1000_VLVF_VLANID_MASK;
4167 igb_vfta_set(hw, vid, false);
4170 wr32(E1000_VLVF(i), reg);
4173 adapter->vf_data[vf].vlans_enabled = 0;
4176 static s32 igb_vlvf_set(struct igb_adapter *adapter, u32 vid, bool add, u32 vf)
4178 struct e1000_hw *hw = &adapter->hw;
4181 /* It is an error to call this function when VFs are not enabled */
4182 if (!adapter->vfs_allocated_count)
4185 /* Find the vlan filter for this id */
4186 for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
4187 reg = rd32(E1000_VLVF(i));
4188 if ((reg & E1000_VLVF_VLANID_ENABLE) &&
4189 vid == (reg & E1000_VLVF_VLANID_MASK))
4194 if (i == E1000_VLVF_ARRAY_SIZE) {
4195 /* Did not find a matching VLAN ID entry that was
4196 * enabled. Search for a free filter entry, i.e.
4197 * one without the enable bit set
4199 for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
4200 reg = rd32(E1000_VLVF(i));
4201 if (!(reg & E1000_VLVF_VLANID_ENABLE))
4205 if (i < E1000_VLVF_ARRAY_SIZE) {
4206 /* Found an enabled/available entry */
4207 reg |= 1 << (E1000_VLVF_POOLSEL_SHIFT + vf);
4209 /* if !enabled we need to set this up in vfta */
4210 if (!(reg & E1000_VLVF_VLANID_ENABLE)) {
4211 /* add VID to filter table, if bit already set
4212 * PF must have added it outside of table */
4213 if (igb_vfta_set(hw, vid, true))
4214 reg |= 1 << (E1000_VLVF_POOLSEL_SHIFT +
4215 adapter->vfs_allocated_count);
4216 reg |= E1000_VLVF_VLANID_ENABLE;
4218 reg &= ~E1000_VLVF_VLANID_MASK;
4221 wr32(E1000_VLVF(i), reg);
4223 /* do not modify RLPML for PF devices */
4224 if (vf >= adapter->vfs_allocated_count)
4227 if (!adapter->vf_data[vf].vlans_enabled) {
4229 reg = rd32(E1000_VMOLR(vf));
4230 size = reg & E1000_VMOLR_RLPML_MASK;
4232 reg &= ~E1000_VMOLR_RLPML_MASK;
4234 wr32(E1000_VMOLR(vf), reg);
4236 adapter->vf_data[vf].vlans_enabled++;
4241 if (i < E1000_VLVF_ARRAY_SIZE) {
4242 /* remove vf from the pool */
4243 reg &= ~(1 << (E1000_VLVF_POOLSEL_SHIFT + vf));
4244 /* if pool is empty then remove entry from vfta */
4245 if (!(reg & E1000_VLVF_POOLSEL_MASK)) {
4247 igb_vfta_set(hw, vid, false);
4249 wr32(E1000_VLVF(i), reg);
4251 /* do not modify RLPML for PF devices */
4252 if (vf >= adapter->vfs_allocated_count)
4255 adapter->vf_data[vf].vlans_enabled--;
4256 if (!adapter->vf_data[vf].vlans_enabled) {
4258 reg = rd32(E1000_VMOLR(vf));
4259 size = reg & E1000_VMOLR_RLPML_MASK;
4261 reg &= ~E1000_VMOLR_RLPML_MASK;
4263 wr32(E1000_VMOLR(vf), reg);
4271 static int igb_set_vf_vlan(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
4273 int add = (msgbuf[0] & E1000_VT_MSGINFO_MASK) >> E1000_VT_MSGINFO_SHIFT;
4274 int vid = (msgbuf[1] & E1000_VLVF_VLANID_MASK);
4276 return igb_vlvf_set(adapter, vid, add, vf);
4279 static inline void igb_vf_reset_event(struct igb_adapter *adapter, u32 vf)
4281 struct e1000_hw *hw = &adapter->hw;
4283 /* disable mailbox functionality for vf */
4284 adapter->vf_data[vf].clear_to_send = false;
4286 /* reset offloads to defaults */
4287 igb_set_vmolr(hw, vf);
4289 /* reset vlans for device */
4290 igb_clear_vf_vfta(adapter, vf);
4292 /* reset multicast table array for vf */
4293 adapter->vf_data[vf].num_vf_mc_hashes = 0;
4295 /* Flush and reset the mta with the new values */
4296 igb_set_rx_mode(adapter->netdev);
4299 static inline void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf)
4301 struct e1000_hw *hw = &adapter->hw;
4302 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses;
4303 int rar_entry = hw->mac.rar_entry_count - (vf + 1);
4305 u8 *addr = (u8 *)(&msgbuf[1]);
4307 /* process all the same items cleared in a function level reset */
4308 igb_vf_reset_event(adapter, vf);
4310 /* set vf mac address */
4311 igb_rar_set_qsel(adapter, vf_mac, rar_entry, vf);
4313 /* enable transmit and receive for vf */
4314 reg = rd32(E1000_VFTE);
4315 wr32(E1000_VFTE, reg | (1 << vf));
4316 reg = rd32(E1000_VFRE);
4317 wr32(E1000_VFRE, reg | (1 << vf));
4319 /* enable mailbox functionality for vf */
4320 adapter->vf_data[vf].clear_to_send = true;
4322 /* reply to reset with ack and vf mac address */
4323 msgbuf[0] = E1000_VF_RESET | E1000_VT_MSGTYPE_ACK;
4324 memcpy(addr, vf_mac, 6);
4325 igb_write_mbx(hw, msgbuf, 3, vf);
4328 static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf)
4330 unsigned char *addr = (char *)&msg[1];
4333 if (is_valid_ether_addr(addr))
4334 err = igb_set_vf_mac(adapter, vf, addr);
4340 static void igb_rcv_ack_from_vf(struct igb_adapter *adapter, u32 vf)
4342 struct e1000_hw *hw = &adapter->hw;
4343 u32 msg = E1000_VT_MSGTYPE_NACK;
4345 /* if device isn't clear to send it shouldn't be reading either */
4346 if (!adapter->vf_data[vf].clear_to_send)
4347 igb_write_mbx(hw, &msg, 1, vf);
4351 static void igb_msg_task(struct igb_adapter *adapter)
4353 struct e1000_hw *hw = &adapter->hw;
4356 for (vf = 0; vf < adapter->vfs_allocated_count; vf++) {
4357 /* process any reset requests */
4358 if (!igb_check_for_rst(hw, vf)) {
4359 adapter->vf_data[vf].clear_to_send = false;
4360 igb_vf_reset_event(adapter, vf);
4363 /* process any messages pending */
4364 if (!igb_check_for_msg(hw, vf))
4365 igb_rcv_msg_from_vf(adapter, vf);
4367 /* process any acks */
4368 if (!igb_check_for_ack(hw, vf))
4369 igb_rcv_ack_from_vf(adapter, vf);
4374 static int igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
4376 u32 mbx_size = E1000_VFMAILBOX_SIZE;
4377 u32 msgbuf[mbx_size];
4378 struct e1000_hw *hw = &adapter->hw;
4381 retval = igb_read_mbx(hw, msgbuf, mbx_size, vf);
4384 dev_err(&adapter->pdev->dev,
4385 "Error receiving message from VF\n");
4387 /* this is a message we already processed, do nothing */
4388 if (msgbuf[0] & (E1000_VT_MSGTYPE_ACK | E1000_VT_MSGTYPE_NACK))
4392 * until the vf completes a reset it should not be
4393 * allowed to start any configuration.
4396 if (msgbuf[0] == E1000_VF_RESET) {
4397 igb_vf_reset_msg(adapter, vf);
4402 if (!adapter->vf_data[vf].clear_to_send) {
4403 msgbuf[0] |= E1000_VT_MSGTYPE_NACK;
4404 igb_write_mbx(hw, msgbuf, 1, vf);
4408 switch ((msgbuf[0] & 0xFFFF)) {
4409 case E1000_VF_SET_MAC_ADDR:
4410 retval = igb_set_vf_mac_addr(adapter, msgbuf, vf);
4412 case E1000_VF_SET_MULTICAST:
4413 retval = igb_set_vf_multicasts(adapter, msgbuf, vf);
4415 case E1000_VF_SET_LPE:
4416 retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf);
4418 case E1000_VF_SET_VLAN:
4419 retval = igb_set_vf_vlan(adapter, msgbuf, vf);
4422 dev_err(&adapter->pdev->dev, "Unhandled Msg %08x\n", msgbuf[0]);
4427 /* notify the VF of the results of what it sent us */
4429 msgbuf[0] |= E1000_VT_MSGTYPE_NACK;
4431 msgbuf[0] |= E1000_VT_MSGTYPE_ACK;
4433 msgbuf[0] |= E1000_VT_MSGTYPE_CTS;
4435 igb_write_mbx(hw, msgbuf, 1, vf);
4441 * igb_set_uta - Set unicast filter table address
4442 * @adapter: board private structure
4444 * The unicast table address is a register array of 32-bit registers.
4445 * The table is meant to be used in a way similar to how the MTA is used
4446 * however due to certain limitations in the hardware it is necessary to
4447 * set all the hash bits to 1 and use the VMOLR ROPE bit as a promiscous
4448 * enable bit to allow vlan tag stripping when promiscous mode is enabled
4450 static void igb_set_uta(struct igb_adapter *adapter)
4452 struct e1000_hw *hw = &adapter->hw;
4455 /* The UTA table only exists on 82576 hardware and newer */
4456 if (hw->mac.type < e1000_82576)
4459 /* we only need to do this if VMDq is enabled */
4460 if (!adapter->vfs_allocated_count)
4463 for (i = 0; i < hw->mac.uta_reg_count; i++)
4464 array_wr32(E1000_UTA, i, ~0);
4468 * igb_intr_msi - Interrupt Handler
4469 * @irq: interrupt number
4470 * @data: pointer to a network interface device structure
4472 static irqreturn_t igb_intr_msi(int irq, void *data)
4474 struct igb_adapter *adapter = data;
4475 struct igb_q_vector *q_vector = adapter->q_vector[0];
4476 struct e1000_hw *hw = &adapter->hw;
4477 /* read ICR disables interrupts using IAM */
4478 u32 icr = rd32(E1000_ICR);
4480 igb_write_itr(q_vector);
4482 if (icr & E1000_ICR_DOUTSYNC) {
4483 /* HW is reporting DMA is out of sync */
4484 adapter->stats.doosync++;
4487 if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
4488 hw->mac.get_link_status = 1;
4489 if (!test_bit(__IGB_DOWN, &adapter->state))
4490 mod_timer(&adapter->watchdog_timer, jiffies + 1);
4493 napi_schedule(&q_vector->napi);
4499 * igb_intr - Legacy Interrupt Handler
4500 * @irq: interrupt number
4501 * @data: pointer to a network interface device structure
4503 static irqreturn_t igb_intr(int irq, void *data)
4505 struct igb_adapter *adapter = data;
4506 struct igb_q_vector *q_vector = adapter->q_vector[0];
4507 struct e1000_hw *hw = &adapter->hw;
4508 /* Interrupt Auto-Mask...upon reading ICR, interrupts are masked. No
4509 * need for the IMC write */
4510 u32 icr = rd32(E1000_ICR);
4512 return IRQ_NONE; /* Not our interrupt */
4514 igb_write_itr(q_vector);
4516 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
4517 * not set, then the adapter didn't send an interrupt */
4518 if (!(icr & E1000_ICR_INT_ASSERTED))
4521 if (icr & E1000_ICR_DOUTSYNC) {
4522 /* HW is reporting DMA is out of sync */
4523 adapter->stats.doosync++;
4526 if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
4527 hw->mac.get_link_status = 1;
4528 /* guard against interrupt when we're going down */
4529 if (!test_bit(__IGB_DOWN, &adapter->state))
4530 mod_timer(&adapter->watchdog_timer, jiffies + 1);
4533 napi_schedule(&q_vector->napi);
4538 static inline void igb_ring_irq_enable(struct igb_q_vector *q_vector)
4540 struct igb_adapter *adapter = q_vector->adapter;
4541 struct e1000_hw *hw = &adapter->hw;
4543 if ((q_vector->rx_ring && (adapter->rx_itr_setting & 3)) ||
4544 (!q_vector->rx_ring && (adapter->tx_itr_setting & 3))) {
4545 if (!adapter->msix_entries)
4546 igb_set_itr(adapter);
4548 igb_update_ring_itr(q_vector);
4551 if (!test_bit(__IGB_DOWN, &adapter->state)) {
4552 if (adapter->msix_entries)
4553 wr32(E1000_EIMS, q_vector->eims_value);
4555 igb_irq_enable(adapter);
4560 * igb_poll - NAPI Rx polling callback
4561 * @napi: napi polling structure
4562 * @budget: count of how many packets we should handle
4564 static int igb_poll(struct napi_struct *napi, int budget)
4566 struct igb_q_vector *q_vector = container_of(napi,
4567 struct igb_q_vector,
4569 int tx_clean_complete = 1, work_done = 0;
4571 #ifdef CONFIG_IGB_DCA
4572 if (q_vector->adapter->flags & IGB_FLAG_DCA_ENABLED)
4573 igb_update_dca(q_vector);
4575 if (q_vector->tx_ring)
4576 tx_clean_complete = igb_clean_tx_irq(q_vector);
4578 if (q_vector->rx_ring)
4579 igb_clean_rx_irq_adv(q_vector, &work_done, budget);
4581 if (!tx_clean_complete)
4584 /* If not enough Rx work done, exit the polling mode */
4585 if (work_done < budget) {
4586 napi_complete(napi);
4587 igb_ring_irq_enable(q_vector);
4594 * igb_systim_to_hwtstamp - convert system time value to hw timestamp
4595 * @adapter: board private structure
4596 * @shhwtstamps: timestamp structure to update
4597 * @regval: unsigned 64bit system time value.
4599 * We need to convert the system time value stored in the RX/TXSTMP registers
4600 * into a hwtstamp which can be used by the upper level timestamping functions
4602 static void igb_systim_to_hwtstamp(struct igb_adapter *adapter,
4603 struct skb_shared_hwtstamps *shhwtstamps,
4608 ns = timecounter_cyc2time(&adapter->clock, regval);
4609 timecompare_update(&adapter->compare, ns);
4610 memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
4611 shhwtstamps->hwtstamp = ns_to_ktime(ns);
4612 shhwtstamps->syststamp = timecompare_transform(&adapter->compare, ns);
4616 * igb_tx_hwtstamp - utility function which checks for TX time stamp
4617 * @q_vector: pointer to q_vector containing needed info
4618 * @skb: packet that was just sent
4620 * If we were asked to do hardware stamping and such a time stamp is
4621 * available, then it must have been for this skb here because we only
4622 * allow only one such packet into the queue.
4624 static void igb_tx_hwtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb)
4626 struct igb_adapter *adapter = q_vector->adapter;
4627 union skb_shared_tx *shtx = skb_tx(skb);
4628 struct e1000_hw *hw = &adapter->hw;
4629 struct skb_shared_hwtstamps shhwtstamps;
4632 /* if skb does not support hw timestamp or TX stamp not valid exit */
4633 if (likely(!shtx->hardware) ||
4634 !(rd32(E1000_TSYNCTXCTL) & E1000_TSYNCTXCTL_VALID))
4637 regval = rd32(E1000_TXSTMPL);
4638 regval |= (u64)rd32(E1000_TXSTMPH) << 32;
4640 igb_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
4641 skb_tstamp_tx(skb, &shhwtstamps);
4645 * igb_clean_tx_irq - Reclaim resources after transmit completes
4646 * @q_vector: pointer to q_vector containing needed info
4647 * returns true if ring is completely cleaned
4649 static bool igb_clean_tx_irq(struct igb_q_vector *q_vector)
4651 struct igb_adapter *adapter = q_vector->adapter;
4652 struct igb_ring *tx_ring = q_vector->tx_ring;
4653 struct net_device *netdev = tx_ring->netdev;
4654 struct e1000_hw *hw = &adapter->hw;
4655 struct igb_buffer *buffer_info;
4656 struct sk_buff *skb;
4657 union e1000_adv_tx_desc *tx_desc, *eop_desc;
4658 unsigned int total_bytes = 0, total_packets = 0;
4659 unsigned int i, eop, count = 0;
4660 bool cleaned = false;
4662 i = tx_ring->next_to_clean;
4663 eop = tx_ring->buffer_info[i].next_to_watch;
4664 eop_desc = E1000_TX_DESC_ADV(*tx_ring, eop);
4666 while ((eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)) &&
4667 (count < tx_ring->count)) {
4668 for (cleaned = false; !cleaned; count++) {
4669 tx_desc = E1000_TX_DESC_ADV(*tx_ring, i);
4670 buffer_info = &tx_ring->buffer_info[i];
4671 cleaned = (i == eop);
4672 skb = buffer_info->skb;
4675 unsigned int segs, bytecount;
4676 /* gso_segs is currently only valid for tcp */
4677 segs = skb_shinfo(skb)->gso_segs ?: 1;
4678 /* multiply data chunks by size of headers */
4679 bytecount = ((segs - 1) * skb_headlen(skb)) +
4681 total_packets += segs;
4682 total_bytes += bytecount;
4684 igb_tx_hwtstamp(q_vector, skb);
4687 igb_unmap_and_free_tx_resource(tx_ring, buffer_info);
4688 tx_desc->wb.status = 0;
4691 if (i == tx_ring->count)
4694 eop = tx_ring->buffer_info[i].next_to_watch;
4695 eop_desc = E1000_TX_DESC_ADV(*tx_ring, eop);
4698 tx_ring->next_to_clean = i;
4700 if (unlikely(count &&
4701 netif_carrier_ok(netdev) &&
4702 igb_desc_unused(tx_ring) >= IGB_TX_QUEUE_WAKE)) {
4703 /* Make sure that anybody stopping the queue after this
4704 * sees the new next_to_clean.
4707 if (__netif_subqueue_stopped(netdev, tx_ring->queue_index) &&
4708 !(test_bit(__IGB_DOWN, &adapter->state))) {
4709 netif_wake_subqueue(netdev, tx_ring->queue_index);
4710 tx_ring->tx_stats.restart_queue++;
4714 if (tx_ring->detect_tx_hung) {
4715 /* Detect a transmit hang in hardware, this serializes the
4716 * check with the clearing of time_stamp and movement of i */
4717 tx_ring->detect_tx_hung = false;
4718 if (tx_ring->buffer_info[i].time_stamp &&
4719 time_after(jiffies, tx_ring->buffer_info[i].time_stamp +
4720 (adapter->tx_timeout_factor * HZ))
4721 && !(rd32(E1000_STATUS) &
4722 E1000_STATUS_TXOFF)) {
4724 /* detected Tx unit hang */
4725 dev_err(&tx_ring->pdev->dev,
4726 "Detected Tx Unit Hang\n"
4730 " next_to_use <%x>\n"
4731 " next_to_clean <%x>\n"
4732 "buffer_info[next_to_clean]\n"
4733 " time_stamp <%lx>\n"
4734 " next_to_watch <%x>\n"
4736 " desc.status <%x>\n",
4737 tx_ring->queue_index,
4738 readl(tx_ring->head),
4739 readl(tx_ring->tail),
4740 tx_ring->next_to_use,
4741 tx_ring->next_to_clean,
4742 tx_ring->buffer_info[i].time_stamp,
4745 eop_desc->wb.status);
4746 netif_stop_subqueue(netdev, tx_ring->queue_index);
4749 tx_ring->total_bytes += total_bytes;
4750 tx_ring->total_packets += total_packets;
4751 tx_ring->tx_stats.bytes += total_bytes;
4752 tx_ring->tx_stats.packets += total_packets;
4753 netdev->stats.tx_bytes += total_bytes;
4754 netdev->stats.tx_packets += total_packets;
4755 return (count < tx_ring->count);
4759 * igb_receive_skb - helper function to handle rx indications
4760 * @q_vector: structure containing interrupt and ring information
4761 * @skb: packet to send up
4762 * @vlan_tag: vlan tag for packet
4764 static void igb_receive_skb(struct igb_q_vector *q_vector,
4765 struct sk_buff *skb,
4768 struct igb_adapter *adapter = q_vector->adapter;
4771 vlan_gro_receive(&q_vector->napi, adapter->vlgrp,
4774 napi_gro_receive(&q_vector->napi, skb);
4777 static inline void igb_rx_checksum_adv(struct igb_ring *ring,
4778 u32 status_err, struct sk_buff *skb)
4780 skb->ip_summed = CHECKSUM_NONE;
4782 /* Ignore Checksum bit is set or checksum is disabled through ethtool */
4783 if (!(ring->flags & IGB_RING_FLAG_RX_CSUM) ||
4784 (status_err & E1000_RXD_STAT_IXSM))
4787 /* TCP/UDP checksum error bit is set */
4789 (E1000_RXDEXT_STATERR_TCPE | E1000_RXDEXT_STATERR_IPE)) {
4791 * work around errata with sctp packets where the TCPE aka
4792 * L4E bit is set incorrectly on 64 byte (60 byte w/o crc)
4793 * packets, (aka let the stack check the crc32c)
4795 if ((skb->len == 60) &&
4796 (ring->flags & IGB_RING_FLAG_RX_SCTP_CSUM))
4797 ring->rx_stats.csum_err++;
4799 /* let the stack verify checksum errors */
4802 /* It must be a TCP or UDP packet with a valid checksum */
4803 if (status_err & (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_UDPCS))
4804 skb->ip_summed = CHECKSUM_UNNECESSARY;
4806 dev_dbg(&ring->pdev->dev, "cksum success: bits %08X\n", status_err);
4809 static inline void igb_rx_hwtstamp(struct igb_q_vector *q_vector, u32 staterr,
4810 struct sk_buff *skb)
4812 struct igb_adapter *adapter = q_vector->adapter;
4813 struct e1000_hw *hw = &adapter->hw;
4817 * If this bit is set, then the RX registers contain the time stamp. No
4818 * other packet will be time stamped until we read these registers, so
4819 * read the registers to make them available again. Because only one
4820 * packet can be time stamped at a time, we know that the register
4821 * values must belong to this one here and therefore we don't need to
4822 * compare any of the additional attributes stored for it.
4824 * If nothing went wrong, then it should have a skb_shared_tx that we
4825 * can turn into a skb_shared_hwtstamps.
4827 if (likely(!(staterr & E1000_RXDADV_STAT_TS)))
4829 if (!(rd32(E1000_TSYNCRXCTL) & E1000_TSYNCRXCTL_VALID))
4832 regval = rd32(E1000_RXSTMPL);
4833 regval |= (u64)rd32(E1000_RXSTMPH) << 32;
4835 igb_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), regval);
4837 static inline u16 igb_get_hlen(struct igb_ring *rx_ring,
4838 union e1000_adv_rx_desc *rx_desc)
4840 /* HW will not DMA in data larger than the given buffer, even if it
4841 * parses the (NFS, of course) header to be larger. In that case, it
4842 * fills the header buffer and spills the rest into the page.
4844 u16 hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hdr_info) &
4845 E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT;
4846 if (hlen > rx_ring->rx_buffer_len)
4847 hlen = rx_ring->rx_buffer_len;
4851 static bool igb_clean_rx_irq_adv(struct igb_q_vector *q_vector,
4852 int *work_done, int budget)
4854 struct igb_ring *rx_ring = q_vector->rx_ring;
4855 struct net_device *netdev = rx_ring->netdev;
4856 struct pci_dev *pdev = rx_ring->pdev;
4857 union e1000_adv_rx_desc *rx_desc , *next_rxd;
4858 struct igb_buffer *buffer_info , *next_buffer;
4859 struct sk_buff *skb;
4860 bool cleaned = false;
4861 int cleaned_count = 0;
4862 unsigned int total_bytes = 0, total_packets = 0;
4868 i = rx_ring->next_to_clean;
4869 buffer_info = &rx_ring->buffer_info[i];
4870 rx_desc = E1000_RX_DESC_ADV(*rx_ring, i);
4871 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
4873 while (staterr & E1000_RXD_STAT_DD) {
4874 if (*work_done >= budget)
4878 skb = buffer_info->skb;
4879 prefetch(skb->data - NET_IP_ALIGN);
4880 buffer_info->skb = NULL;
4883 if (i == rx_ring->count)
4885 next_rxd = E1000_RX_DESC_ADV(*rx_ring, i);
4887 next_buffer = &rx_ring->buffer_info[i];
4889 length = le16_to_cpu(rx_desc->wb.upper.length);
4893 if (buffer_info->dma) {
4894 pci_unmap_single(pdev, buffer_info->dma,
4895 rx_ring->rx_buffer_len,
4896 PCI_DMA_FROMDEVICE);
4897 buffer_info->dma = 0;
4898 if (rx_ring->rx_buffer_len >= IGB_RXBUFFER_1024) {
4899 skb_put(skb, length);
4902 skb_put(skb, igb_get_hlen(rx_ring, rx_desc));
4906 pci_unmap_page(pdev, buffer_info->page_dma,
4907 PAGE_SIZE / 2, PCI_DMA_FROMDEVICE);
4908 buffer_info->page_dma = 0;
4910 skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags++,
4912 buffer_info->page_offset,
4915 if (page_count(buffer_info->page) != 1)
4916 buffer_info->page = NULL;
4918 get_page(buffer_info->page);
4921 skb->data_len += length;
4923 skb->truesize += length;
4926 if (!(staterr & E1000_RXD_STAT_EOP)) {
4927 buffer_info->skb = next_buffer->skb;
4928 buffer_info->dma = next_buffer->dma;
4929 next_buffer->skb = skb;
4930 next_buffer->dma = 0;
4934 if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
4935 dev_kfree_skb_irq(skb);
4939 igb_rx_hwtstamp(q_vector, staterr, skb);
4940 total_bytes += skb->len;
4943 igb_rx_checksum_adv(rx_ring, staterr, skb);
4945 skb->protocol = eth_type_trans(skb, netdev);
4946 skb_record_rx_queue(skb, rx_ring->queue_index);
4948 vlan_tag = ((staterr & E1000_RXD_STAT_VP) ?
4949 le16_to_cpu(rx_desc->wb.upper.vlan) : 0);
4951 igb_receive_skb(q_vector, skb, vlan_tag);
4954 rx_desc->wb.upper.status_error = 0;
4956 /* return some buffers to hardware, one at a time is too slow */
4957 if (cleaned_count >= IGB_RX_BUFFER_WRITE) {
4958 igb_alloc_rx_buffers_adv(rx_ring, cleaned_count);
4962 /* use prefetched values */
4964 buffer_info = next_buffer;
4965 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
4968 rx_ring->next_to_clean = i;
4969 cleaned_count = igb_desc_unused(rx_ring);
4972 igb_alloc_rx_buffers_adv(rx_ring, cleaned_count);
4974 rx_ring->total_packets += total_packets;
4975 rx_ring->total_bytes += total_bytes;
4976 rx_ring->rx_stats.packets += total_packets;
4977 rx_ring->rx_stats.bytes += total_bytes;
4978 netdev->stats.rx_bytes += total_bytes;
4979 netdev->stats.rx_packets += total_packets;
4984 * igb_alloc_rx_buffers_adv - Replace used receive buffers; packet split
4985 * @adapter: address of board private structure
4987 void igb_alloc_rx_buffers_adv(struct igb_ring *rx_ring, int cleaned_count)
4989 struct net_device *netdev = rx_ring->netdev;
4990 union e1000_adv_rx_desc *rx_desc;
4991 struct igb_buffer *buffer_info;
4992 struct sk_buff *skb;
4996 i = rx_ring->next_to_use;
4997 buffer_info = &rx_ring->buffer_info[i];
4999 bufsz = rx_ring->rx_buffer_len;
5001 while (cleaned_count--) {
5002 rx_desc = E1000_RX_DESC_ADV(*rx_ring, i);
5004 if ((bufsz < IGB_RXBUFFER_1024) && !buffer_info->page_dma) {
5005 if (!buffer_info->page) {
5006 buffer_info->page = alloc_page(GFP_ATOMIC);
5007 if (!buffer_info->page) {
5008 rx_ring->rx_stats.alloc_failed++;
5011 buffer_info->page_offset = 0;
5013 buffer_info->page_offset ^= PAGE_SIZE / 2;
5015 buffer_info->page_dma =
5016 pci_map_page(rx_ring->pdev, buffer_info->page,
5017 buffer_info->page_offset,
5019 PCI_DMA_FROMDEVICE);
5022 if (!buffer_info->skb) {
5023 skb = netdev_alloc_skb_ip_align(netdev, bufsz);
5025 rx_ring->rx_stats.alloc_failed++;
5029 buffer_info->skb = skb;
5030 buffer_info->dma = pci_map_single(rx_ring->pdev,
5033 PCI_DMA_FROMDEVICE);
5035 /* Refresh the desc even if buffer_addrs didn't change because
5036 * each write-back erases this info. */
5037 if (bufsz < IGB_RXBUFFER_1024) {
5038 rx_desc->read.pkt_addr =
5039 cpu_to_le64(buffer_info->page_dma);
5040 rx_desc->read.hdr_addr = cpu_to_le64(buffer_info->dma);
5042 rx_desc->read.pkt_addr =
5043 cpu_to_le64(buffer_info->dma);
5044 rx_desc->read.hdr_addr = 0;
5048 if (i == rx_ring->count)
5050 buffer_info = &rx_ring->buffer_info[i];
5054 if (rx_ring->next_to_use != i) {
5055 rx_ring->next_to_use = i;
5057 i = (rx_ring->count - 1);
5061 /* Force memory writes to complete before letting h/w
5062 * know there are new descriptors to fetch. (Only
5063 * applicable for weak-ordered memory model archs,
5064 * such as IA-64). */
5066 writel(i, rx_ring->tail);
5076 static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
5078 struct igb_adapter *adapter = netdev_priv(netdev);
5079 struct mii_ioctl_data *data = if_mii(ifr);
5081 if (adapter->hw.phy.media_type != e1000_media_type_copper)
5086 data->phy_id = adapter->hw.phy.addr;
5089 if (igb_read_phy_reg(&adapter->hw, data->reg_num & 0x1F,
5101 * igb_hwtstamp_ioctl - control hardware time stamping
5106 * Outgoing time stamping can be enabled and disabled. Play nice and
5107 * disable it when requested, although it shouldn't case any overhead
5108 * when no packet needs it. At most one packet in the queue may be
5109 * marked for time stamping, otherwise it would be impossible to tell
5110 * for sure to which packet the hardware time stamp belongs.
5112 * Incoming time stamping has to be configured via the hardware
5113 * filters. Not all combinations are supported, in particular event
5114 * type has to be specified. Matching the kind of event packet is
5115 * not supported, with the exception of "all V2 events regardless of
5119 static int igb_hwtstamp_ioctl(struct net_device *netdev,
5120 struct ifreq *ifr, int cmd)
5122 struct igb_adapter *adapter = netdev_priv(netdev);
5123 struct e1000_hw *hw = &adapter->hw;
5124 struct hwtstamp_config config;
5125 u32 tsync_tx_ctl = E1000_TSYNCTXCTL_ENABLED;
5126 u32 tsync_rx_ctl = E1000_TSYNCRXCTL_ENABLED;
5127 u32 tsync_rx_cfg = 0;
5132 if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
5135 /* reserved for future extensions */
5139 switch (config.tx_type) {
5140 case HWTSTAMP_TX_OFF:
5142 case HWTSTAMP_TX_ON:
5148 switch (config.rx_filter) {
5149 case HWTSTAMP_FILTER_NONE:
5152 case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
5153 case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
5154 case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
5155 case HWTSTAMP_FILTER_ALL:
5157 * register TSYNCRXCFG must be set, therefore it is not
5158 * possible to time stamp both Sync and Delay_Req messages
5159 * => fall back to time stamping all packets
5161 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_ALL;
5162 config.rx_filter = HWTSTAMP_FILTER_ALL;
5164 case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
5165 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L4_V1;
5166 tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE;
5169 case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
5170 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L4_V1;
5171 tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE;
5174 case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
5175 case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
5176 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L2_L4_V2;
5177 tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V2_SYNC_MESSAGE;
5180 config.rx_filter = HWTSTAMP_FILTER_SOME;
5182 case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
5183 case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
5184 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L2_L4_V2;
5185 tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V2_DELAY_REQ_MESSAGE;
5188 config.rx_filter = HWTSTAMP_FILTER_SOME;
5190 case HWTSTAMP_FILTER_PTP_V2_EVENT:
5191 case HWTSTAMP_FILTER_PTP_V2_SYNC:
5192 case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
5193 tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_EVENT_V2;
5194 config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
5201 if (hw->mac.type == e1000_82575) {
5202 if (tsync_rx_ctl | tsync_tx_ctl)
5207 /* enable/disable TX */
5208 regval = rd32(E1000_TSYNCTXCTL);
5209 regval &= ~E1000_TSYNCTXCTL_ENABLED;
5210 regval |= tsync_tx_ctl;
5211 wr32(E1000_TSYNCTXCTL, regval);
5213 /* enable/disable RX */
5214 regval = rd32(E1000_TSYNCRXCTL);
5215 regval &= ~(E1000_TSYNCRXCTL_ENABLED | E1000_TSYNCRXCTL_TYPE_MASK);
5216 regval |= tsync_rx_ctl;
5217 wr32(E1000_TSYNCRXCTL, regval);
5219 /* define which PTP packets are time stamped */
5220 wr32(E1000_TSYNCRXCFG, tsync_rx_cfg);
5222 /* define ethertype filter for timestamped packets */
5225 (E1000_ETQF_FILTER_ENABLE | /* enable filter */
5226 E1000_ETQF_1588 | /* enable timestamping */
5227 ETH_P_1588)); /* 1588 eth protocol type */
5229 wr32(E1000_ETQF(3), 0);
5231 #define PTP_PORT 319
5232 /* L4 Queue Filter[3]: filter by destination port and protocol */
5234 u32 ftqf = (IPPROTO_UDP /* UDP */
5235 | E1000_FTQF_VF_BP /* VF not compared */
5236 | E1000_FTQF_1588_TIME_STAMP /* Enable Timestamping */
5237 | E1000_FTQF_MASK); /* mask all inputs */
5238 ftqf &= ~E1000_FTQF_MASK_PROTO_BP; /* enable protocol check */
5240 wr32(E1000_IMIR(3), htons(PTP_PORT));
5241 wr32(E1000_IMIREXT(3),
5242 (E1000_IMIREXT_SIZE_BP | E1000_IMIREXT_CTRL_BP));
5243 if (hw->mac.type == e1000_82576) {
5244 /* enable source port check */
5245 wr32(E1000_SPQF(3), htons(PTP_PORT));
5246 ftqf &= ~E1000_FTQF_MASK_SOURCE_PORT_BP;
5248 wr32(E1000_FTQF(3), ftqf);
5250 wr32(E1000_FTQF(3), E1000_FTQF_MASK);
5254 adapter->hwtstamp_config = config;
5256 /* clear TX/RX time stamp registers, just to be sure */
5257 regval = rd32(E1000_TXSTMPH);
5258 regval = rd32(E1000_RXSTMPH);
5260 return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
5270 static int igb_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
5276 return igb_mii_ioctl(netdev, ifr, cmd);
5278 return igb_hwtstamp_ioctl(netdev, ifr, cmd);
5284 s32 igb_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
5286 struct igb_adapter *adapter = hw->back;
5289 cap_offset = pci_find_capability(adapter->pdev, PCI_CAP_ID_EXP);
5291 return -E1000_ERR_CONFIG;
5293 pci_read_config_word(adapter->pdev, cap_offset + reg, value);
5298 s32 igb_write_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
5300 struct igb_adapter *adapter = hw->back;
5303 cap_offset = pci_find_capability(adapter->pdev, PCI_CAP_ID_EXP);
5305 return -E1000_ERR_CONFIG;
5307 pci_write_config_word(adapter->pdev, cap_offset + reg, *value);
5312 static void igb_vlan_rx_register(struct net_device *netdev,
5313 struct vlan_group *grp)
5315 struct igb_adapter *adapter = netdev_priv(netdev);
5316 struct e1000_hw *hw = &adapter->hw;
5319 igb_irq_disable(adapter);
5320 adapter->vlgrp = grp;
5323 /* enable VLAN tag insert/strip */
5324 ctrl = rd32(E1000_CTRL);
5325 ctrl |= E1000_CTRL_VME;
5326 wr32(E1000_CTRL, ctrl);
5328 /* enable VLAN receive filtering */
5329 rctl = rd32(E1000_RCTL);
5330 rctl &= ~E1000_RCTL_CFIEN;
5331 wr32(E1000_RCTL, rctl);
5332 igb_update_mng_vlan(adapter);
5334 /* disable VLAN tag insert/strip */
5335 ctrl = rd32(E1000_CTRL);
5336 ctrl &= ~E1000_CTRL_VME;
5337 wr32(E1000_CTRL, ctrl);
5339 if (adapter->mng_vlan_id != (u16)IGB_MNG_VLAN_NONE) {
5340 igb_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
5341 adapter->mng_vlan_id = IGB_MNG_VLAN_NONE;
5345 igb_rlpml_set(adapter);
5347 if (!test_bit(__IGB_DOWN, &adapter->state))
5348 igb_irq_enable(adapter);
5351 static void igb_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
5353 struct igb_adapter *adapter = netdev_priv(netdev);
5354 struct e1000_hw *hw = &adapter->hw;
5355 int pf_id = adapter->vfs_allocated_count;
5357 if ((hw->mng_cookie.status &
5358 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
5359 (vid == adapter->mng_vlan_id))
5362 /* add vid to vlvf if sr-iov is enabled,
5363 * if that fails add directly to filter table */
5364 if (igb_vlvf_set(adapter, vid, true, pf_id))
5365 igb_vfta_set(hw, vid, true);
5369 static void igb_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
5371 struct igb_adapter *adapter = netdev_priv(netdev);
5372 struct e1000_hw *hw = &adapter->hw;
5373 int pf_id = adapter->vfs_allocated_count;
5375 igb_irq_disable(adapter);
5376 vlan_group_set_device(adapter->vlgrp, vid, NULL);
5378 if (!test_bit(__IGB_DOWN, &adapter->state))
5379 igb_irq_enable(adapter);
5381 if ((adapter->hw.mng_cookie.status &
5382 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) &&
5383 (vid == adapter->mng_vlan_id)) {
5384 /* release control to f/w */
5385 igb_release_hw_control(adapter);
5389 /* remove vid from vlvf if sr-iov is enabled,
5390 * if not in vlvf remove from vfta */
5391 if (igb_vlvf_set(adapter, vid, false, pf_id))
5392 igb_vfta_set(hw, vid, false);
5395 static void igb_restore_vlan(struct igb_adapter *adapter)
5397 igb_vlan_rx_register(adapter->netdev, adapter->vlgrp);
5399 if (adapter->vlgrp) {
5401 for (vid = 0; vid < VLAN_GROUP_ARRAY_LEN; vid++) {
5402 if (!vlan_group_get_device(adapter->vlgrp, vid))
5404 igb_vlan_rx_add_vid(adapter->netdev, vid);
5409 int igb_set_spd_dplx(struct igb_adapter *adapter, u16 spddplx)
5411 struct e1000_mac_info *mac = &adapter->hw.mac;
5416 case SPEED_10 + DUPLEX_HALF:
5417 mac->forced_speed_duplex = ADVERTISE_10_HALF;
5419 case SPEED_10 + DUPLEX_FULL:
5420 mac->forced_speed_duplex = ADVERTISE_10_FULL;
5422 case SPEED_100 + DUPLEX_HALF:
5423 mac->forced_speed_duplex = ADVERTISE_100_HALF;
5425 case SPEED_100 + DUPLEX_FULL:
5426 mac->forced_speed_duplex = ADVERTISE_100_FULL;
5428 case SPEED_1000 + DUPLEX_FULL:
5430 adapter->hw.phy.autoneg_advertised = ADVERTISE_1000_FULL;
5432 case SPEED_1000 + DUPLEX_HALF: /* not supported */
5434 dev_err(&adapter->pdev->dev,
5435 "Unsupported Speed/Duplex configuration\n");
5441 static int __igb_shutdown(struct pci_dev *pdev, bool *enable_wake)
5443 struct net_device *netdev = pci_get_drvdata(pdev);
5444 struct igb_adapter *adapter = netdev_priv(netdev);
5445 struct e1000_hw *hw = &adapter->hw;
5446 u32 ctrl, rctl, status;
5447 u32 wufc = adapter->wol;
5452 netif_device_detach(netdev);
5454 if (netif_running(netdev))
5457 igb_clear_interrupt_scheme(adapter);
5460 retval = pci_save_state(pdev);
5465 status = rd32(E1000_STATUS);
5466 if (status & E1000_STATUS_LU)
5467 wufc &= ~E1000_WUFC_LNKC;
5470 igb_setup_rctl(adapter);
5471 igb_set_rx_mode(netdev);
5473 /* turn on all-multi mode if wake on multicast is enabled */
5474 if (wufc & E1000_WUFC_MC) {
5475 rctl = rd32(E1000_RCTL);
5476 rctl |= E1000_RCTL_MPE;
5477 wr32(E1000_RCTL, rctl);
5480 ctrl = rd32(E1000_CTRL);
5481 /* advertise wake from D3Cold */
5482 #define E1000_CTRL_ADVD3WUC 0x00100000
5483 /* phy power management enable */
5484 #define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000
5485 ctrl |= E1000_CTRL_ADVD3WUC;
5486 wr32(E1000_CTRL, ctrl);
5488 /* Allow time for pending master requests to run */
5489 igb_disable_pcie_master(&adapter->hw);
5491 wr32(E1000_WUC, E1000_WUC_PME_EN);
5492 wr32(E1000_WUFC, wufc);
5495 wr32(E1000_WUFC, 0);
5498 *enable_wake = wufc || adapter->en_mng_pt;
5500 igb_shutdown_serdes_link_82575(hw);
5502 /* Release control of h/w to f/w. If f/w is AMT enabled, this
5503 * would have already happened in close and is redundant. */
5504 igb_release_hw_control(adapter);
5506 pci_disable_device(pdev);
5512 static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
5517 retval = __igb_shutdown(pdev, &wake);
5522 pci_prepare_to_sleep(pdev);
5524 pci_wake_from_d3(pdev, false);
5525 pci_set_power_state(pdev, PCI_D3hot);
5531 static int igb_resume(struct pci_dev *pdev)
5533 struct net_device *netdev = pci_get_drvdata(pdev);
5534 struct igb_adapter *adapter = netdev_priv(netdev);
5535 struct e1000_hw *hw = &adapter->hw;
5538 pci_set_power_state(pdev, PCI_D0);
5539 pci_restore_state(pdev);
5541 err = pci_enable_device_mem(pdev);
5544 "igb: Cannot enable PCI device from suspend\n");
5547 pci_set_master(pdev);
5549 pci_enable_wake(pdev, PCI_D3hot, 0);
5550 pci_enable_wake(pdev, PCI_D3cold, 0);
5552 if (igb_init_interrupt_scheme(adapter)) {
5553 dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
5557 /* e1000_power_up_phy(adapter); */
5561 /* let the f/w know that the h/w is now under the control of the
5563 igb_get_hw_control(adapter);
5565 wr32(E1000_WUS, ~0);
5567 if (netif_running(netdev)) {
5568 err = igb_open(netdev);
5573 netif_device_attach(netdev);
5579 static void igb_shutdown(struct pci_dev *pdev)
5583 __igb_shutdown(pdev, &wake);
5585 if (system_state == SYSTEM_POWER_OFF) {
5586 pci_wake_from_d3(pdev, wake);
5587 pci_set_power_state(pdev, PCI_D3hot);
5591 #ifdef CONFIG_NET_POLL_CONTROLLER
5593 * Polling 'interrupt' - used by things like netconsole to send skbs
5594 * without having to re-enable interrupts. It's not called while
5595 * the interrupt routine is executing.
5597 static void igb_netpoll(struct net_device *netdev)
5599 struct igb_adapter *adapter = netdev_priv(netdev);
5600 struct e1000_hw *hw = &adapter->hw;
5603 if (!adapter->msix_entries) {
5604 struct igb_q_vector *q_vector = adapter->q_vector[0];
5605 igb_irq_disable(adapter);
5606 napi_schedule(&q_vector->napi);
5610 for (i = 0; i < adapter->num_q_vectors; i++) {
5611 struct igb_q_vector *q_vector = adapter->q_vector[i];
5612 wr32(E1000_EIMC, q_vector->eims_value);
5613 napi_schedule(&q_vector->napi);
5616 #endif /* CONFIG_NET_POLL_CONTROLLER */
5619 * igb_io_error_detected - called when PCI error is detected
5620 * @pdev: Pointer to PCI device
5621 * @state: The current pci connection state
5623 * This function is called after a PCI bus error affecting
5624 * this device has been detected.
5626 static pci_ers_result_t igb_io_error_detected(struct pci_dev *pdev,
5627 pci_channel_state_t state)
5629 struct net_device *netdev = pci_get_drvdata(pdev);
5630 struct igb_adapter *adapter = netdev_priv(netdev);
5632 netif_device_detach(netdev);
5634 if (state == pci_channel_io_perm_failure)
5635 return PCI_ERS_RESULT_DISCONNECT;
5637 if (netif_running(netdev))
5639 pci_disable_device(pdev);
5641 /* Request a slot slot reset. */
5642 return PCI_ERS_RESULT_NEED_RESET;
5646 * igb_io_slot_reset - called after the pci bus has been reset.
5647 * @pdev: Pointer to PCI device
5649 * Restart the card from scratch, as if from a cold-boot. Implementation
5650 * resembles the first-half of the igb_resume routine.
5652 static pci_ers_result_t igb_io_slot_reset(struct pci_dev *pdev)
5654 struct net_device *netdev = pci_get_drvdata(pdev);
5655 struct igb_adapter *adapter = netdev_priv(netdev);
5656 struct e1000_hw *hw = &adapter->hw;
5657 pci_ers_result_t result;
5660 if (pci_enable_device_mem(pdev)) {
5662 "Cannot re-enable PCI device after reset.\n");
5663 result = PCI_ERS_RESULT_DISCONNECT;
5665 pci_set_master(pdev);
5666 pci_restore_state(pdev);
5668 pci_enable_wake(pdev, PCI_D3hot, 0);
5669 pci_enable_wake(pdev, PCI_D3cold, 0);
5672 wr32(E1000_WUS, ~0);
5673 result = PCI_ERS_RESULT_RECOVERED;
5676 err = pci_cleanup_aer_uncorrect_error_status(pdev);
5678 dev_err(&pdev->dev, "pci_cleanup_aer_uncorrect_error_status "
5679 "failed 0x%0x\n", err);
5680 /* non-fatal, continue */
5687 * igb_io_resume - called when traffic can start flowing again.
5688 * @pdev: Pointer to PCI device
5690 * This callback is called when the error recovery driver tells us that
5691 * its OK to resume normal operation. Implementation resembles the
5692 * second-half of the igb_resume routine.
5694 static void igb_io_resume(struct pci_dev *pdev)
5696 struct net_device *netdev = pci_get_drvdata(pdev);
5697 struct igb_adapter *adapter = netdev_priv(netdev);
5699 if (netif_running(netdev)) {
5700 if (igb_up(adapter)) {
5701 dev_err(&pdev->dev, "igb_up failed after reset\n");
5706 netif_device_attach(netdev);
5708 /* let the f/w know that the h/w is now under the control of the
5710 igb_get_hw_control(adapter);
5713 static void igb_rar_set_qsel(struct igb_adapter *adapter, u8 *addr, u32 index,
5716 u32 rar_low, rar_high;
5717 struct e1000_hw *hw = &adapter->hw;
5719 /* HW expects these in little endian so we reverse the byte order
5720 * from network order (big endian) to little endian
5722 rar_low = ((u32) addr[0] | ((u32) addr[1] << 8) |
5723 ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
5724 rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
5726 /* Indicate to hardware the Address is Valid. */
5727 rar_high |= E1000_RAH_AV;
5729 if (hw->mac.type == e1000_82575)
5730 rar_high |= E1000_RAH_POOL_1 * qsel;
5732 rar_high |= E1000_RAH_POOL_1 << qsel;
5734 wr32(E1000_RAL(index), rar_low);
5736 wr32(E1000_RAH(index), rar_high);
5740 static int igb_set_vf_mac(struct igb_adapter *adapter,
5741 int vf, unsigned char *mac_addr)
5743 struct e1000_hw *hw = &adapter->hw;
5744 /* VF MAC addresses start at end of receive addresses and moves
5745 * torwards the first, as a result a collision should not be possible */
5746 int rar_entry = hw->mac.rar_entry_count - (vf + 1);
5748 memcpy(adapter->vf_data[vf].vf_mac_addresses, mac_addr, ETH_ALEN);
5750 igb_rar_set_qsel(adapter, mac_addr, rar_entry, vf);
5755 static void igb_vmm_control(struct igb_adapter *adapter)
5757 struct e1000_hw *hw = &adapter->hw;
5760 /* replication is not supported for 82575 */
5761 if (hw->mac.type == e1000_82575)
5764 /* enable replication vlan tag stripping */
5765 reg = rd32(E1000_RPLOLR);
5766 reg |= E1000_RPLOLR_STRVLAN;
5767 wr32(E1000_RPLOLR, reg);
5769 /* notify HW that the MAC is adding vlan tags */
5770 reg = rd32(E1000_DTXCTL);
5771 reg |= E1000_DTXCTL_VLAN_ADDED;
5772 wr32(E1000_DTXCTL, reg);
5774 if (adapter->vfs_allocated_count) {
5775 igb_vmdq_set_loopback_pf(hw, true);
5776 igb_vmdq_set_replication_pf(hw, true);
5778 igb_vmdq_set_loopback_pf(hw, false);
5779 igb_vmdq_set_replication_pf(hw, false);