xref: /linux/drivers/net/ethernet/intel/igb/igb_main.c (revision f2ee442115c9b6219083c019939a9cc0c9abb2f8)
1 /*******************************************************************************
2 
3   Intel(R) Gigabit Ethernet Linux driver
4   Copyright(c) 2007-2011 Intel Corporation.
5 
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.
9 
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
13   more details.
14 
15   You should have received a copy of the GNU General Public License along with
16   this program; if not, write to the Free Software Foundation, Inc.,
17   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18 
19   The full GNU General Public License is included in this distribution in
20   the file called "COPYING".
21 
22   Contact Information:
23   e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25 
26 *******************************************************************************/
27 
28 #include <linux/module.h>
29 #include <linux/types.h>
30 #include <linux/init.h>
31 #include <linux/bitops.h>
32 #include <linux/vmalloc.h>
33 #include <linux/pagemap.h>
34 #include <linux/netdevice.h>
35 #include <linux/ipv6.h>
36 #include <linux/slab.h>
37 #include <net/checksum.h>
38 #include <net/ip6_checksum.h>
39 #include <linux/net_tstamp.h>
40 #include <linux/mii.h>
41 #include <linux/ethtool.h>
42 #include <linux/if.h>
43 #include <linux/if_vlan.h>
44 #include <linux/pci.h>
45 #include <linux/pci-aspm.h>
46 #include <linux/delay.h>
47 #include <linux/interrupt.h>
48 #include <linux/ip.h>
49 #include <linux/tcp.h>
50 #include <linux/sctp.h>
51 #include <linux/if_ether.h>
52 #include <linux/aer.h>
53 #include <linux/prefetch.h>
54 #ifdef CONFIG_IGB_DCA
55 #include <linux/dca.h>
56 #endif
57 #include "igb.h"
58 
59 #define MAJ 3
60 #define MIN 2
61 #define BUILD 10
62 #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \
63 __stringify(BUILD) "-k"
64 char igb_driver_name[] = "igb";
65 char igb_driver_version[] = DRV_VERSION;
66 static const char igb_driver_string[] =
67 				"Intel(R) Gigabit Ethernet Network Driver";
68 static const char igb_copyright[] = "Copyright (c) 2007-2011 Intel Corporation.";
69 
70 static const struct e1000_info *igb_info_tbl[] = {
71 	[board_82575] = &e1000_82575_info,
72 };
73 
74 static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = {
75 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_COPPER), board_82575 },
76 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_FIBER), board_82575 },
77 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_SERDES), board_82575 },
78 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_SGMII), board_82575 },
79 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER), board_82575 },
80 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_FIBER), board_82575 },
81 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_QUAD_FIBER), board_82575 },
82 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SERDES), board_82575 },
83 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SGMII), board_82575 },
84 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER_DUAL), board_82575 },
85 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_DH89XXCC_SGMII), board_82575 },
86 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_DH89XXCC_SERDES), board_82575 },
87 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_DH89XXCC_BACKPLANE), board_82575 },
88 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_DH89XXCC_SFP), board_82575 },
89 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576), board_82575 },
90 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS), board_82575 },
91 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS_SERDES), board_82575 },
92 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_FIBER), board_82575 },
93 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES), board_82575 },
94 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES_QUAD), board_82575 },
95 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_QUAD_COPPER_ET2), board_82575 },
96 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_QUAD_COPPER), board_82575 },
97 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_COPPER), board_82575 },
98 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_FIBER_SERDES), board_82575 },
99 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575GB_QUAD_COPPER), board_82575 },
100 	/* required last entry */
101 	{0, }
102 };
103 
104 MODULE_DEVICE_TABLE(pci, igb_pci_tbl);
105 
106 void igb_reset(struct igb_adapter *);
107 static int igb_setup_all_tx_resources(struct igb_adapter *);
108 static int igb_setup_all_rx_resources(struct igb_adapter *);
109 static void igb_free_all_tx_resources(struct igb_adapter *);
110 static void igb_free_all_rx_resources(struct igb_adapter *);
111 static void igb_setup_mrqc(struct igb_adapter *);
112 static int igb_probe(struct pci_dev *, const struct pci_device_id *);
113 static void __devexit igb_remove(struct pci_dev *pdev);
114 static void igb_init_hw_timer(struct igb_adapter *adapter);
115 static int igb_sw_init(struct igb_adapter *);
116 static int igb_open(struct net_device *);
117 static int igb_close(struct net_device *);
118 static void igb_configure_tx(struct igb_adapter *);
119 static void igb_configure_rx(struct igb_adapter *);
120 static void igb_clean_all_tx_rings(struct igb_adapter *);
121 static void igb_clean_all_rx_rings(struct igb_adapter *);
122 static void igb_clean_tx_ring(struct igb_ring *);
123 static void igb_clean_rx_ring(struct igb_ring *);
124 static void igb_set_rx_mode(struct net_device *);
125 static void igb_update_phy_info(unsigned long);
126 static void igb_watchdog(unsigned long);
127 static void igb_watchdog_task(struct work_struct *);
128 static netdev_tx_t igb_xmit_frame(struct sk_buff *skb, struct net_device *);
129 static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *dev,
130 						 struct rtnl_link_stats64 *stats);
131 static int igb_change_mtu(struct net_device *, int);
132 static int igb_set_mac(struct net_device *, void *);
133 static void igb_set_uta(struct igb_adapter *adapter);
134 static irqreturn_t igb_intr(int irq, void *);
135 static irqreturn_t igb_intr_msi(int irq, void *);
136 static irqreturn_t igb_msix_other(int irq, void *);
137 static irqreturn_t igb_msix_ring(int irq, void *);
138 #ifdef CONFIG_IGB_DCA
139 static void igb_update_dca(struct igb_q_vector *);
140 static void igb_setup_dca(struct igb_adapter *);
141 #endif /* CONFIG_IGB_DCA */
142 static int igb_poll(struct napi_struct *, int);
143 static bool igb_clean_tx_irq(struct igb_q_vector *);
144 static bool igb_clean_rx_irq(struct igb_q_vector *, int);
145 static int igb_ioctl(struct net_device *, struct ifreq *, int cmd);
146 static void igb_tx_timeout(struct net_device *);
147 static void igb_reset_task(struct work_struct *);
148 static void igb_vlan_mode(struct net_device *netdev, u32 features);
149 static void igb_vlan_rx_add_vid(struct net_device *, u16);
150 static void igb_vlan_rx_kill_vid(struct net_device *, u16);
151 static void igb_restore_vlan(struct igb_adapter *);
152 static void igb_rar_set_qsel(struct igb_adapter *, u8 *, u32 , u8);
153 static void igb_ping_all_vfs(struct igb_adapter *);
154 static void igb_msg_task(struct igb_adapter *);
155 static void igb_vmm_control(struct igb_adapter *);
156 static int igb_set_vf_mac(struct igb_adapter *, int, unsigned char *);
157 static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
158 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac);
159 static int igb_ndo_set_vf_vlan(struct net_device *netdev,
160 			       int vf, u16 vlan, u8 qos);
161 static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int tx_rate);
162 static int igb_ndo_get_vf_config(struct net_device *netdev, int vf,
163 				 struct ifla_vf_info *ivi);
164 static void igb_check_vf_rate_limit(struct igb_adapter *);
165 
166 #ifdef CONFIG_PCI_IOV
167 static int igb_vf_configure(struct igb_adapter *adapter, int vf);
168 static int igb_find_enabled_vfs(struct igb_adapter *adapter);
169 static int igb_check_vf_assignment(struct igb_adapter *adapter);
170 #endif
171 
172 #ifdef CONFIG_PM
173 static int igb_suspend(struct pci_dev *, pm_message_t);
174 static int igb_resume(struct pci_dev *);
175 #endif
176 static void igb_shutdown(struct pci_dev *);
177 #ifdef CONFIG_IGB_DCA
178 static int igb_notify_dca(struct notifier_block *, unsigned long, void *);
179 static struct notifier_block dca_notifier = {
180 	.notifier_call	= igb_notify_dca,
181 	.next		= NULL,
182 	.priority	= 0
183 };
184 #endif
185 #ifdef CONFIG_NET_POLL_CONTROLLER
186 /* for netdump / net console */
187 static void igb_netpoll(struct net_device *);
188 #endif
189 #ifdef CONFIG_PCI_IOV
190 static unsigned int max_vfs = 0;
191 module_param(max_vfs, uint, 0);
192 MODULE_PARM_DESC(max_vfs, "Maximum number of virtual functions to allocate "
193                  "per physical function");
194 #endif /* CONFIG_PCI_IOV */
195 
196 static pci_ers_result_t igb_io_error_detected(struct pci_dev *,
197 		     pci_channel_state_t);
198 static pci_ers_result_t igb_io_slot_reset(struct pci_dev *);
199 static void igb_io_resume(struct pci_dev *);
200 
201 static struct pci_error_handlers igb_err_handler = {
202 	.error_detected = igb_io_error_detected,
203 	.slot_reset = igb_io_slot_reset,
204 	.resume = igb_io_resume,
205 };
206 
207 static void igb_init_dmac(struct igb_adapter *adapter, u32 pba);
208 
209 static struct pci_driver igb_driver = {
210 	.name     = igb_driver_name,
211 	.id_table = igb_pci_tbl,
212 	.probe    = igb_probe,
213 	.remove   = __devexit_p(igb_remove),
214 #ifdef CONFIG_PM
215 	/* Power Management Hooks */
216 	.suspend  = igb_suspend,
217 	.resume   = igb_resume,
218 #endif
219 	.shutdown = igb_shutdown,
220 	.err_handler = &igb_err_handler
221 };
222 
223 MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>");
224 MODULE_DESCRIPTION("Intel(R) Gigabit Ethernet Network Driver");
225 MODULE_LICENSE("GPL");
226 MODULE_VERSION(DRV_VERSION);
227 
228 struct igb_reg_info {
229 	u32 ofs;
230 	char *name;
231 };
232 
233 static const struct igb_reg_info igb_reg_info_tbl[] = {
234 
235 	/* General Registers */
236 	{E1000_CTRL, "CTRL"},
237 	{E1000_STATUS, "STATUS"},
238 	{E1000_CTRL_EXT, "CTRL_EXT"},
239 
240 	/* Interrupt Registers */
241 	{E1000_ICR, "ICR"},
242 
243 	/* RX Registers */
244 	{E1000_RCTL, "RCTL"},
245 	{E1000_RDLEN(0), "RDLEN"},
246 	{E1000_RDH(0), "RDH"},
247 	{E1000_RDT(0), "RDT"},
248 	{E1000_RXDCTL(0), "RXDCTL"},
249 	{E1000_RDBAL(0), "RDBAL"},
250 	{E1000_RDBAH(0), "RDBAH"},
251 
252 	/* TX Registers */
253 	{E1000_TCTL, "TCTL"},
254 	{E1000_TDBAL(0), "TDBAL"},
255 	{E1000_TDBAH(0), "TDBAH"},
256 	{E1000_TDLEN(0), "TDLEN"},
257 	{E1000_TDH(0), "TDH"},
258 	{E1000_TDT(0), "TDT"},
259 	{E1000_TXDCTL(0), "TXDCTL"},
260 	{E1000_TDFH, "TDFH"},
261 	{E1000_TDFT, "TDFT"},
262 	{E1000_TDFHS, "TDFHS"},
263 	{E1000_TDFPC, "TDFPC"},
264 
265 	/* List Terminator */
266 	{}
267 };
268 
269 /*
270  * igb_regdump - register printout routine
271  */
272 static void igb_regdump(struct e1000_hw *hw, struct igb_reg_info *reginfo)
273 {
274 	int n = 0;
275 	char rname[16];
276 	u32 regs[8];
277 
278 	switch (reginfo->ofs) {
279 	case E1000_RDLEN(0):
280 		for (n = 0; n < 4; n++)
281 			regs[n] = rd32(E1000_RDLEN(n));
282 		break;
283 	case E1000_RDH(0):
284 		for (n = 0; n < 4; n++)
285 			regs[n] = rd32(E1000_RDH(n));
286 		break;
287 	case E1000_RDT(0):
288 		for (n = 0; n < 4; n++)
289 			regs[n] = rd32(E1000_RDT(n));
290 		break;
291 	case E1000_RXDCTL(0):
292 		for (n = 0; n < 4; n++)
293 			regs[n] = rd32(E1000_RXDCTL(n));
294 		break;
295 	case E1000_RDBAL(0):
296 		for (n = 0; n < 4; n++)
297 			regs[n] = rd32(E1000_RDBAL(n));
298 		break;
299 	case E1000_RDBAH(0):
300 		for (n = 0; n < 4; n++)
301 			regs[n] = rd32(E1000_RDBAH(n));
302 		break;
303 	case E1000_TDBAL(0):
304 		for (n = 0; n < 4; n++)
305 			regs[n] = rd32(E1000_RDBAL(n));
306 		break;
307 	case E1000_TDBAH(0):
308 		for (n = 0; n < 4; n++)
309 			regs[n] = rd32(E1000_TDBAH(n));
310 		break;
311 	case E1000_TDLEN(0):
312 		for (n = 0; n < 4; n++)
313 			regs[n] = rd32(E1000_TDLEN(n));
314 		break;
315 	case E1000_TDH(0):
316 		for (n = 0; n < 4; n++)
317 			regs[n] = rd32(E1000_TDH(n));
318 		break;
319 	case E1000_TDT(0):
320 		for (n = 0; n < 4; n++)
321 			regs[n] = rd32(E1000_TDT(n));
322 		break;
323 	case E1000_TXDCTL(0):
324 		for (n = 0; n < 4; n++)
325 			regs[n] = rd32(E1000_TXDCTL(n));
326 		break;
327 	default:
328 		printk(KERN_INFO "%-15s %08x\n",
329 			reginfo->name, rd32(reginfo->ofs));
330 		return;
331 	}
332 
333 	snprintf(rname, 16, "%s%s", reginfo->name, "[0-3]");
334 	printk(KERN_INFO "%-15s ", rname);
335 	for (n = 0; n < 4; n++)
336 		printk(KERN_CONT "%08x ", regs[n]);
337 	printk(KERN_CONT "\n");
338 }
339 
340 /*
341  * igb_dump - Print registers, tx-rings and rx-rings
342  */
343 static void igb_dump(struct igb_adapter *adapter)
344 {
345 	struct net_device *netdev = adapter->netdev;
346 	struct e1000_hw *hw = &adapter->hw;
347 	struct igb_reg_info *reginfo;
348 	struct igb_ring *tx_ring;
349 	union e1000_adv_tx_desc *tx_desc;
350 	struct my_u0 { u64 a; u64 b; } *u0;
351 	struct igb_ring *rx_ring;
352 	union e1000_adv_rx_desc *rx_desc;
353 	u32 staterr;
354 	u16 i, n;
355 
356 	if (!netif_msg_hw(adapter))
357 		return;
358 
359 	/* Print netdevice Info */
360 	if (netdev) {
361 		dev_info(&adapter->pdev->dev, "Net device Info\n");
362 		printk(KERN_INFO "Device Name     state            "
363 			"trans_start      last_rx\n");
364 		printk(KERN_INFO "%-15s %016lX %016lX %016lX\n",
365 		netdev->name,
366 		netdev->state,
367 		netdev->trans_start,
368 		netdev->last_rx);
369 	}
370 
371 	/* Print Registers */
372 	dev_info(&adapter->pdev->dev, "Register Dump\n");
373 	printk(KERN_INFO " Register Name   Value\n");
374 	for (reginfo = (struct igb_reg_info *)igb_reg_info_tbl;
375 	     reginfo->name; reginfo++) {
376 		igb_regdump(hw, reginfo);
377 	}
378 
379 	/* Print TX Ring Summary */
380 	if (!netdev || !netif_running(netdev))
381 		goto exit;
382 
383 	dev_info(&adapter->pdev->dev, "TX Rings Summary\n");
384 	printk(KERN_INFO "Queue [NTU] [NTC] [bi(ntc)->dma  ]"
385 		" leng ntw timestamp\n");
386 	for (n = 0; n < adapter->num_tx_queues; n++) {
387 		struct igb_tx_buffer *buffer_info;
388 		tx_ring = adapter->tx_ring[n];
389 		buffer_info = &tx_ring->tx_buffer_info[tx_ring->next_to_clean];
390 		printk(KERN_INFO " %5d %5X %5X %016llX %04X %p %016llX\n",
391 			   n, tx_ring->next_to_use, tx_ring->next_to_clean,
392 			   (u64)buffer_info->dma,
393 			   buffer_info->length,
394 			   buffer_info->next_to_watch,
395 			   (u64)buffer_info->time_stamp);
396 	}
397 
398 	/* Print TX Rings */
399 	if (!netif_msg_tx_done(adapter))
400 		goto rx_ring_summary;
401 
402 	dev_info(&adapter->pdev->dev, "TX Rings Dump\n");
403 
404 	/* Transmit Descriptor Formats
405 	 *
406 	 * Advanced Transmit Descriptor
407 	 *   +--------------------------------------------------------------+
408 	 * 0 |         Buffer Address [63:0]                                |
409 	 *   +--------------------------------------------------------------+
410 	 * 8 | PAYLEN  | PORTS  |CC|IDX | STA | DCMD  |DTYP|MAC|RSV| DTALEN |
411 	 *   +--------------------------------------------------------------+
412 	 *   63      46 45    40 39 38 36 35 32 31   24             15       0
413 	 */
414 
415 	for (n = 0; n < adapter->num_tx_queues; n++) {
416 		tx_ring = adapter->tx_ring[n];
417 		printk(KERN_INFO "------------------------------------\n");
418 		printk(KERN_INFO "TX QUEUE INDEX = %d\n", tx_ring->queue_index);
419 		printk(KERN_INFO "------------------------------------\n");
420 		printk(KERN_INFO "T [desc]     [address 63:0  ] "
421 			"[PlPOCIStDDM Ln] [bi->dma       ] "
422 			"leng  ntw timestamp        bi->skb\n");
423 
424 		for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) {
425 			struct igb_tx_buffer *buffer_info;
426 			tx_desc = IGB_TX_DESC(tx_ring, i);
427 			buffer_info = &tx_ring->tx_buffer_info[i];
428 			u0 = (struct my_u0 *)tx_desc;
429 			printk(KERN_INFO "T [0x%03X]    %016llX %016llX %016llX"
430 				" %04X  %p %016llX %p", i,
431 				le64_to_cpu(u0->a),
432 				le64_to_cpu(u0->b),
433 				(u64)buffer_info->dma,
434 				buffer_info->length,
435 				buffer_info->next_to_watch,
436 				(u64)buffer_info->time_stamp,
437 				buffer_info->skb);
438 			if (i == tx_ring->next_to_use &&
439 				i == tx_ring->next_to_clean)
440 				printk(KERN_CONT " NTC/U\n");
441 			else if (i == tx_ring->next_to_use)
442 				printk(KERN_CONT " NTU\n");
443 			else if (i == tx_ring->next_to_clean)
444 				printk(KERN_CONT " NTC\n");
445 			else
446 				printk(KERN_CONT "\n");
447 
448 			if (netif_msg_pktdata(adapter) && buffer_info->dma != 0)
449 				print_hex_dump(KERN_INFO, "",
450 					DUMP_PREFIX_ADDRESS,
451 					16, 1, phys_to_virt(buffer_info->dma),
452 					buffer_info->length, true);
453 		}
454 	}
455 
456 	/* Print RX Rings Summary */
457 rx_ring_summary:
458 	dev_info(&adapter->pdev->dev, "RX Rings Summary\n");
459 	printk(KERN_INFO "Queue [NTU] [NTC]\n");
460 	for (n = 0; n < adapter->num_rx_queues; n++) {
461 		rx_ring = adapter->rx_ring[n];
462 		printk(KERN_INFO " %5d %5X %5X\n", n,
463 			   rx_ring->next_to_use, rx_ring->next_to_clean);
464 	}
465 
466 	/* Print RX Rings */
467 	if (!netif_msg_rx_status(adapter))
468 		goto exit;
469 
470 	dev_info(&adapter->pdev->dev, "RX Rings Dump\n");
471 
472 	/* Advanced Receive Descriptor (Read) Format
473 	 *    63                                           1        0
474 	 *    +-----------------------------------------------------+
475 	 *  0 |       Packet Buffer Address [63:1]           |A0/NSE|
476 	 *    +----------------------------------------------+------+
477 	 *  8 |       Header Buffer Address [63:1]           |  DD  |
478 	 *    +-----------------------------------------------------+
479 	 *
480 	 *
481 	 * Advanced Receive Descriptor (Write-Back) Format
482 	 *
483 	 *   63       48 47    32 31  30      21 20 17 16   4 3     0
484 	 *   +------------------------------------------------------+
485 	 * 0 | Packet     IP     |SPH| HDR_LEN   | RSV|Packet|  RSS |
486 	 *   | Checksum   Ident  |   |           |    | Type | Type |
487 	 *   +------------------------------------------------------+
488 	 * 8 | VLAN Tag | Length | Extended Error | Extended Status |
489 	 *   +------------------------------------------------------+
490 	 *   63       48 47    32 31            20 19               0
491 	 */
492 
493 	for (n = 0; n < adapter->num_rx_queues; n++) {
494 		rx_ring = adapter->rx_ring[n];
495 		printk(KERN_INFO "------------------------------------\n");
496 		printk(KERN_INFO "RX QUEUE INDEX = %d\n", rx_ring->queue_index);
497 		printk(KERN_INFO "------------------------------------\n");
498 		printk(KERN_INFO "R  [desc]      [ PktBuf     A0] "
499 			"[  HeadBuf   DD] [bi->dma       ] [bi->skb] "
500 			"<-- Adv Rx Read format\n");
501 		printk(KERN_INFO "RWB[desc]      [PcsmIpSHl PtRs] "
502 			"[vl er S cks ln] ---------------- [bi->skb] "
503 			"<-- Adv Rx Write-Back format\n");
504 
505 		for (i = 0; i < rx_ring->count; i++) {
506 			struct igb_rx_buffer *buffer_info;
507 			buffer_info = &rx_ring->rx_buffer_info[i];
508 			rx_desc = IGB_RX_DESC(rx_ring, i);
509 			u0 = (struct my_u0 *)rx_desc;
510 			staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
511 			if (staterr & E1000_RXD_STAT_DD) {
512 				/* Descriptor Done */
513 				printk(KERN_INFO "RWB[0x%03X]     %016llX "
514 					"%016llX ---------------- %p", i,
515 					le64_to_cpu(u0->a),
516 					le64_to_cpu(u0->b),
517 					buffer_info->skb);
518 			} else {
519 				printk(KERN_INFO "R  [0x%03X]     %016llX "
520 					"%016llX %016llX %p", i,
521 					le64_to_cpu(u0->a),
522 					le64_to_cpu(u0->b),
523 					(u64)buffer_info->dma,
524 					buffer_info->skb);
525 
526 				if (netif_msg_pktdata(adapter)) {
527 					print_hex_dump(KERN_INFO, "",
528 						DUMP_PREFIX_ADDRESS,
529 						16, 1,
530 						phys_to_virt(buffer_info->dma),
531 						IGB_RX_HDR_LEN, true);
532 					print_hex_dump(KERN_INFO, "",
533 					  DUMP_PREFIX_ADDRESS,
534 					  16, 1,
535 					  phys_to_virt(
536 					    buffer_info->page_dma +
537 					    buffer_info->page_offset),
538 					  PAGE_SIZE/2, true);
539 				}
540 			}
541 
542 			if (i == rx_ring->next_to_use)
543 				printk(KERN_CONT " NTU\n");
544 			else if (i == rx_ring->next_to_clean)
545 				printk(KERN_CONT " NTC\n");
546 			else
547 				printk(KERN_CONT "\n");
548 
549 		}
550 	}
551 
552 exit:
553 	return;
554 }
555 
556 
557 /**
558  * igb_read_clock - read raw cycle counter (to be used by time counter)
559  */
560 static cycle_t igb_read_clock(const struct cyclecounter *tc)
561 {
562 	struct igb_adapter *adapter =
563 		container_of(tc, struct igb_adapter, cycles);
564 	struct e1000_hw *hw = &adapter->hw;
565 	u64 stamp = 0;
566 	int shift = 0;
567 
568 	/*
569 	 * The timestamp latches on lowest register read. For the 82580
570 	 * the lowest register is SYSTIMR instead of SYSTIML.  However we never
571 	 * adjusted TIMINCA so SYSTIMR will just read as all 0s so ignore it.
572 	 */
573 	if (hw->mac.type >= e1000_82580) {
574 		stamp = rd32(E1000_SYSTIMR) >> 8;
575 		shift = IGB_82580_TSYNC_SHIFT;
576 	}
577 
578 	stamp |= (u64)rd32(E1000_SYSTIML) << shift;
579 	stamp |= (u64)rd32(E1000_SYSTIMH) << (shift + 32);
580 	return stamp;
581 }
582 
583 /**
584  * igb_get_hw_dev - return device
585  * used by hardware layer to print debugging information
586  **/
587 struct net_device *igb_get_hw_dev(struct e1000_hw *hw)
588 {
589 	struct igb_adapter *adapter = hw->back;
590 	return adapter->netdev;
591 }
592 
593 /**
594  * igb_init_module - Driver Registration Routine
595  *
596  * igb_init_module is the first routine called when the driver is
597  * loaded. All it does is register with the PCI subsystem.
598  **/
599 static int __init igb_init_module(void)
600 {
601 	int ret;
602 	printk(KERN_INFO "%s - version %s\n",
603 	       igb_driver_string, igb_driver_version);
604 
605 	printk(KERN_INFO "%s\n", igb_copyright);
606 
607 #ifdef CONFIG_IGB_DCA
608 	dca_register_notify(&dca_notifier);
609 #endif
610 	ret = pci_register_driver(&igb_driver);
611 	return ret;
612 }
613 
614 module_init(igb_init_module);
615 
616 /**
617  * igb_exit_module - Driver Exit Cleanup Routine
618  *
619  * igb_exit_module is called just before the driver is removed
620  * from memory.
621  **/
622 static void __exit igb_exit_module(void)
623 {
624 #ifdef CONFIG_IGB_DCA
625 	dca_unregister_notify(&dca_notifier);
626 #endif
627 	pci_unregister_driver(&igb_driver);
628 }
629 
630 module_exit(igb_exit_module);
631 
632 #define Q_IDX_82576(i) (((i & 0x1) << 3) + (i >> 1))
633 /**
634  * igb_cache_ring_register - Descriptor ring to register mapping
635  * @adapter: board private structure to initialize
636  *
637  * Once we know the feature-set enabled for the device, we'll cache
638  * the register offset the descriptor ring is assigned to.
639  **/
640 static void igb_cache_ring_register(struct igb_adapter *adapter)
641 {
642 	int i = 0, j = 0;
643 	u32 rbase_offset = adapter->vfs_allocated_count;
644 
645 	switch (adapter->hw.mac.type) {
646 	case e1000_82576:
647 		/* The queues are allocated for virtualization such that VF 0
648 		 * is allocated queues 0 and 8, VF 1 queues 1 and 9, etc.
649 		 * In order to avoid collision we start at the first free queue
650 		 * and continue consuming queues in the same sequence
651 		 */
652 		if (adapter->vfs_allocated_count) {
653 			for (; i < adapter->rss_queues; i++)
654 				adapter->rx_ring[i]->reg_idx = rbase_offset +
655 				                               Q_IDX_82576(i);
656 		}
657 	case e1000_82575:
658 	case e1000_82580:
659 	case e1000_i350:
660 	default:
661 		for (; i < adapter->num_rx_queues; i++)
662 			adapter->rx_ring[i]->reg_idx = rbase_offset + i;
663 		for (; j < adapter->num_tx_queues; j++)
664 			adapter->tx_ring[j]->reg_idx = rbase_offset + j;
665 		break;
666 	}
667 }
668 
669 static void igb_free_queues(struct igb_adapter *adapter)
670 {
671 	int i;
672 
673 	for (i = 0; i < adapter->num_tx_queues; i++) {
674 		kfree(adapter->tx_ring[i]);
675 		adapter->tx_ring[i] = NULL;
676 	}
677 	for (i = 0; i < adapter->num_rx_queues; i++) {
678 		kfree(adapter->rx_ring[i]);
679 		adapter->rx_ring[i] = NULL;
680 	}
681 	adapter->num_rx_queues = 0;
682 	adapter->num_tx_queues = 0;
683 }
684 
685 /**
686  * igb_alloc_queues - Allocate memory for all rings
687  * @adapter: board private structure to initialize
688  *
689  * We allocate one ring per queue at run-time since we don't know the
690  * number of queues at compile-time.
691  **/
692 static int igb_alloc_queues(struct igb_adapter *adapter)
693 {
694 	struct igb_ring *ring;
695 	int i;
696 	int orig_node = adapter->node;
697 
698 	for (i = 0; i < adapter->num_tx_queues; i++) {
699 		if (orig_node == -1) {
700 			int cur_node = next_online_node(adapter->node);
701 			if (cur_node == MAX_NUMNODES)
702 				cur_node = first_online_node;
703 			adapter->node = cur_node;
704 		}
705 		ring = kzalloc_node(sizeof(struct igb_ring), GFP_KERNEL,
706 				    adapter->node);
707 		if (!ring)
708 			ring = kzalloc(sizeof(struct igb_ring), GFP_KERNEL);
709 		if (!ring)
710 			goto err;
711 		ring->count = adapter->tx_ring_count;
712 		ring->queue_index = i;
713 		ring->dev = &adapter->pdev->dev;
714 		ring->netdev = adapter->netdev;
715 		ring->numa_node = adapter->node;
716 		/* For 82575, context index must be unique per ring. */
717 		if (adapter->hw.mac.type == e1000_82575)
718 			set_bit(IGB_RING_FLAG_TX_CTX_IDX, &ring->flags);
719 		adapter->tx_ring[i] = ring;
720 	}
721 	/* Restore the adapter's original node */
722 	adapter->node = orig_node;
723 
724 	for (i = 0; i < adapter->num_rx_queues; i++) {
725 		if (orig_node == -1) {
726 			int cur_node = next_online_node(adapter->node);
727 			if (cur_node == MAX_NUMNODES)
728 				cur_node = first_online_node;
729 			adapter->node = cur_node;
730 		}
731 		ring = kzalloc_node(sizeof(struct igb_ring), GFP_KERNEL,
732 				    adapter->node);
733 		if (!ring)
734 			ring = kzalloc(sizeof(struct igb_ring), GFP_KERNEL);
735 		if (!ring)
736 			goto err;
737 		ring->count = adapter->rx_ring_count;
738 		ring->queue_index = i;
739 		ring->dev = &adapter->pdev->dev;
740 		ring->netdev = adapter->netdev;
741 		ring->numa_node = adapter->node;
742 		/* set flag indicating ring supports SCTP checksum offload */
743 		if (adapter->hw.mac.type >= e1000_82576)
744 			set_bit(IGB_RING_FLAG_RX_SCTP_CSUM, &ring->flags);
745 
746 		/* On i350, loopback VLAN packets have the tag byte-swapped. */
747 		if (adapter->hw.mac.type == e1000_i350)
748 			set_bit(IGB_RING_FLAG_RX_LB_VLAN_BSWAP, &ring->flags);
749 
750 		adapter->rx_ring[i] = ring;
751 	}
752 	/* Restore the adapter's original node */
753 	adapter->node = orig_node;
754 
755 	igb_cache_ring_register(adapter);
756 
757 	return 0;
758 
759 err:
760 	/* Restore the adapter's original node */
761 	adapter->node = orig_node;
762 	igb_free_queues(adapter);
763 
764 	return -ENOMEM;
765 }
766 
767 /**
768  *  igb_write_ivar - configure ivar for given MSI-X vector
769  *  @hw: pointer to the HW structure
770  *  @msix_vector: vector number we are allocating to a given ring
771  *  @index: row index of IVAR register to write within IVAR table
772  *  @offset: column offset of in IVAR, should be multiple of 8
773  *
774  *  This function is intended to handle the writing of the IVAR register
775  *  for adapters 82576 and newer.  The IVAR table consists of 2 columns,
776  *  each containing an cause allocation for an Rx and Tx ring, and a
777  *  variable number of rows depending on the number of queues supported.
778  **/
779 static void igb_write_ivar(struct e1000_hw *hw, int msix_vector,
780 			   int index, int offset)
781 {
782 	u32 ivar = array_rd32(E1000_IVAR0, index);
783 
784 	/* clear any bits that are currently set */
785 	ivar &= ~((u32)0xFF << offset);
786 
787 	/* write vector and valid bit */
788 	ivar |= (msix_vector | E1000_IVAR_VALID) << offset;
789 
790 	array_wr32(E1000_IVAR0, index, ivar);
791 }
792 
793 #define IGB_N0_QUEUE -1
794 static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)
795 {
796 	struct igb_adapter *adapter = q_vector->adapter;
797 	struct e1000_hw *hw = &adapter->hw;
798 	int rx_queue = IGB_N0_QUEUE;
799 	int tx_queue = IGB_N0_QUEUE;
800 	u32 msixbm = 0;
801 
802 	if (q_vector->rx.ring)
803 		rx_queue = q_vector->rx.ring->reg_idx;
804 	if (q_vector->tx.ring)
805 		tx_queue = q_vector->tx.ring->reg_idx;
806 
807 	switch (hw->mac.type) {
808 	case e1000_82575:
809 		/* The 82575 assigns vectors using a bitmask, which matches the
810 		   bitmask for the EICR/EIMS/EIMC registers.  To assign one
811 		   or more queues to a vector, we write the appropriate bits
812 		   into the MSIXBM register for that vector. */
813 		if (rx_queue > IGB_N0_QUEUE)
814 			msixbm = E1000_EICR_RX_QUEUE0 << rx_queue;
815 		if (tx_queue > IGB_N0_QUEUE)
816 			msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue;
817 		if (!adapter->msix_entries && msix_vector == 0)
818 			msixbm |= E1000_EIMS_OTHER;
819 		array_wr32(E1000_MSIXBM(0), msix_vector, msixbm);
820 		q_vector->eims_value = msixbm;
821 		break;
822 	case e1000_82576:
823 		/*
824 		 * 82576 uses a table that essentially consists of 2 columns
825 		 * with 8 rows.  The ordering is column-major so we use the
826 		 * lower 3 bits as the row index, and the 4th bit as the
827 		 * column offset.
828 		 */
829 		if (rx_queue > IGB_N0_QUEUE)
830 			igb_write_ivar(hw, msix_vector,
831 				       rx_queue & 0x7,
832 				       (rx_queue & 0x8) << 1);
833 		if (tx_queue > IGB_N0_QUEUE)
834 			igb_write_ivar(hw, msix_vector,
835 				       tx_queue & 0x7,
836 				       ((tx_queue & 0x8) << 1) + 8);
837 		q_vector->eims_value = 1 << msix_vector;
838 		break;
839 	case e1000_82580:
840 	case e1000_i350:
841 		/*
842 		 * On 82580 and newer adapters the scheme is similar to 82576
843 		 * however instead of ordering column-major we have things
844 		 * ordered row-major.  So we traverse the table by using
845 		 * bit 0 as the column offset, and the remaining bits as the
846 		 * row index.
847 		 */
848 		if (rx_queue > IGB_N0_QUEUE)
849 			igb_write_ivar(hw, msix_vector,
850 				       rx_queue >> 1,
851 				       (rx_queue & 0x1) << 4);
852 		if (tx_queue > IGB_N0_QUEUE)
853 			igb_write_ivar(hw, msix_vector,
854 				       tx_queue >> 1,
855 				       ((tx_queue & 0x1) << 4) + 8);
856 		q_vector->eims_value = 1 << msix_vector;
857 		break;
858 	default:
859 		BUG();
860 		break;
861 	}
862 
863 	/* add q_vector eims value to global eims_enable_mask */
864 	adapter->eims_enable_mask |= q_vector->eims_value;
865 
866 	/* configure q_vector to set itr on first interrupt */
867 	q_vector->set_itr = 1;
868 }
869 
870 /**
871  * igb_configure_msix - Configure MSI-X hardware
872  *
873  * igb_configure_msix sets up the hardware to properly
874  * generate MSI-X interrupts.
875  **/
876 static void igb_configure_msix(struct igb_adapter *adapter)
877 {
878 	u32 tmp;
879 	int i, vector = 0;
880 	struct e1000_hw *hw = &adapter->hw;
881 
882 	adapter->eims_enable_mask = 0;
883 
884 	/* set vector for other causes, i.e. link changes */
885 	switch (hw->mac.type) {
886 	case e1000_82575:
887 		tmp = rd32(E1000_CTRL_EXT);
888 		/* enable MSI-X PBA support*/
889 		tmp |= E1000_CTRL_EXT_PBA_CLR;
890 
891 		/* Auto-Mask interrupts upon ICR read. */
892 		tmp |= E1000_CTRL_EXT_EIAME;
893 		tmp |= E1000_CTRL_EXT_IRCA;
894 
895 		wr32(E1000_CTRL_EXT, tmp);
896 
897 		/* enable msix_other interrupt */
898 		array_wr32(E1000_MSIXBM(0), vector++,
899 		                      E1000_EIMS_OTHER);
900 		adapter->eims_other = E1000_EIMS_OTHER;
901 
902 		break;
903 
904 	case e1000_82576:
905 	case e1000_82580:
906 	case e1000_i350:
907 		/* Turn on MSI-X capability first, or our settings
908 		 * won't stick.  And it will take days to debug. */
909 		wr32(E1000_GPIE, E1000_GPIE_MSIX_MODE |
910 		                E1000_GPIE_PBA | E1000_GPIE_EIAME |
911 		                E1000_GPIE_NSICR);
912 
913 		/* enable msix_other interrupt */
914 		adapter->eims_other = 1 << vector;
915 		tmp = (vector++ | E1000_IVAR_VALID) << 8;
916 
917 		wr32(E1000_IVAR_MISC, tmp);
918 		break;
919 	default:
920 		/* do nothing, since nothing else supports MSI-X */
921 		break;
922 	} /* switch (hw->mac.type) */
923 
924 	adapter->eims_enable_mask |= adapter->eims_other;
925 
926 	for (i = 0; i < adapter->num_q_vectors; i++)
927 		igb_assign_vector(adapter->q_vector[i], vector++);
928 
929 	wrfl();
930 }
931 
932 /**
933  * igb_request_msix - Initialize MSI-X interrupts
934  *
935  * igb_request_msix allocates MSI-X vectors and requests interrupts from the
936  * kernel.
937  **/
938 static int igb_request_msix(struct igb_adapter *adapter)
939 {
940 	struct net_device *netdev = adapter->netdev;
941 	struct e1000_hw *hw = &adapter->hw;
942 	int i, err = 0, vector = 0;
943 
944 	err = request_irq(adapter->msix_entries[vector].vector,
945 	                  igb_msix_other, 0, netdev->name, adapter);
946 	if (err)
947 		goto out;
948 	vector++;
949 
950 	for (i = 0; i < adapter->num_q_vectors; i++) {
951 		struct igb_q_vector *q_vector = adapter->q_vector[i];
952 
953 		q_vector->itr_register = hw->hw_addr + E1000_EITR(vector);
954 
955 		if (q_vector->rx.ring && q_vector->tx.ring)
956 			sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,
957 				q_vector->rx.ring->queue_index);
958 		else if (q_vector->tx.ring)
959 			sprintf(q_vector->name, "%s-tx-%u", netdev->name,
960 				q_vector->tx.ring->queue_index);
961 		else if (q_vector->rx.ring)
962 			sprintf(q_vector->name, "%s-rx-%u", netdev->name,
963 				q_vector->rx.ring->queue_index);
964 		else
965 			sprintf(q_vector->name, "%s-unused", netdev->name);
966 
967 		err = request_irq(adapter->msix_entries[vector].vector,
968 		                  igb_msix_ring, 0, q_vector->name,
969 		                  q_vector);
970 		if (err)
971 			goto out;
972 		vector++;
973 	}
974 
975 	igb_configure_msix(adapter);
976 	return 0;
977 out:
978 	return err;
979 }
980 
981 static void igb_reset_interrupt_capability(struct igb_adapter *adapter)
982 {
983 	if (adapter->msix_entries) {
984 		pci_disable_msix(adapter->pdev);
985 		kfree(adapter->msix_entries);
986 		adapter->msix_entries = NULL;
987 	} else if (adapter->flags & IGB_FLAG_HAS_MSI) {
988 		pci_disable_msi(adapter->pdev);
989 	}
990 }
991 
992 /**
993  * igb_free_q_vectors - Free memory allocated for interrupt vectors
994  * @adapter: board private structure to initialize
995  *
996  * This function frees the memory allocated to the q_vectors.  In addition if
997  * NAPI is enabled it will delete any references to the NAPI struct prior
998  * to freeing the q_vector.
999  **/
1000 static void igb_free_q_vectors(struct igb_adapter *adapter)
1001 {
1002 	int v_idx;
1003 
1004 	for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) {
1005 		struct igb_q_vector *q_vector = adapter->q_vector[v_idx];
1006 		adapter->q_vector[v_idx] = NULL;
1007 		if (!q_vector)
1008 			continue;
1009 		netif_napi_del(&q_vector->napi);
1010 		kfree(q_vector);
1011 	}
1012 	adapter->num_q_vectors = 0;
1013 }
1014 
1015 /**
1016  * igb_clear_interrupt_scheme - reset the device to a state of no interrupts
1017  *
1018  * This function resets the device so that it has 0 rx queues, tx queues, and
1019  * MSI-X interrupts allocated.
1020  */
1021 static void igb_clear_interrupt_scheme(struct igb_adapter *adapter)
1022 {
1023 	igb_free_queues(adapter);
1024 	igb_free_q_vectors(adapter);
1025 	igb_reset_interrupt_capability(adapter);
1026 }
1027 
1028 /**
1029  * igb_set_interrupt_capability - set MSI or MSI-X if supported
1030  *
1031  * Attempt to configure interrupts using the best available
1032  * capabilities of the hardware and kernel.
1033  **/
1034 static int igb_set_interrupt_capability(struct igb_adapter *adapter)
1035 {
1036 	int err;
1037 	int numvecs, i;
1038 
1039 	/* Number of supported queues. */
1040 	adapter->num_rx_queues = adapter->rss_queues;
1041 	if (adapter->vfs_allocated_count)
1042 		adapter->num_tx_queues = 1;
1043 	else
1044 		adapter->num_tx_queues = adapter->rss_queues;
1045 
1046 	/* start with one vector for every rx queue */
1047 	numvecs = adapter->num_rx_queues;
1048 
1049 	/* if tx handler is separate add 1 for every tx queue */
1050 	if (!(adapter->flags & IGB_FLAG_QUEUE_PAIRS))
1051 		numvecs += adapter->num_tx_queues;
1052 
1053 	/* store the number of vectors reserved for queues */
1054 	adapter->num_q_vectors = numvecs;
1055 
1056 	/* add 1 vector for link status interrupts */
1057 	numvecs++;
1058 	adapter->msix_entries = kcalloc(numvecs, sizeof(struct msix_entry),
1059 					GFP_KERNEL);
1060 	if (!adapter->msix_entries)
1061 		goto msi_only;
1062 
1063 	for (i = 0; i < numvecs; i++)
1064 		adapter->msix_entries[i].entry = i;
1065 
1066 	err = pci_enable_msix(adapter->pdev,
1067 			      adapter->msix_entries,
1068 			      numvecs);
1069 	if (err == 0)
1070 		goto out;
1071 
1072 	igb_reset_interrupt_capability(adapter);
1073 
1074 	/* If we can't do MSI-X, try MSI */
1075 msi_only:
1076 #ifdef CONFIG_PCI_IOV
1077 	/* disable SR-IOV for non MSI-X configurations */
1078 	if (adapter->vf_data) {
1079 		struct e1000_hw *hw = &adapter->hw;
1080 		/* disable iov and allow time for transactions to clear */
1081 		pci_disable_sriov(adapter->pdev);
1082 		msleep(500);
1083 
1084 		kfree(adapter->vf_data);
1085 		adapter->vf_data = NULL;
1086 		wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
1087 		wrfl();
1088 		msleep(100);
1089 		dev_info(&adapter->pdev->dev, "IOV Disabled\n");
1090 	}
1091 #endif
1092 	adapter->vfs_allocated_count = 0;
1093 	adapter->rss_queues = 1;
1094 	adapter->flags |= IGB_FLAG_QUEUE_PAIRS;
1095 	adapter->num_rx_queues = 1;
1096 	adapter->num_tx_queues = 1;
1097 	adapter->num_q_vectors = 1;
1098 	if (!pci_enable_msi(adapter->pdev))
1099 		adapter->flags |= IGB_FLAG_HAS_MSI;
1100 out:
1101 	/* Notify the stack of the (possibly) reduced queue counts. */
1102 	netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues);
1103 	return netif_set_real_num_rx_queues(adapter->netdev,
1104 					    adapter->num_rx_queues);
1105 }
1106 
1107 /**
1108  * igb_alloc_q_vectors - Allocate memory for interrupt vectors
1109  * @adapter: board private structure to initialize
1110  *
1111  * We allocate one q_vector per queue interrupt.  If allocation fails we
1112  * return -ENOMEM.
1113  **/
1114 static int igb_alloc_q_vectors(struct igb_adapter *adapter)
1115 {
1116 	struct igb_q_vector *q_vector;
1117 	struct e1000_hw *hw = &adapter->hw;
1118 	int v_idx;
1119 	int orig_node = adapter->node;
1120 
1121 	for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) {
1122 		if ((adapter->num_q_vectors == (adapter->num_rx_queues +
1123 						adapter->num_tx_queues)) &&
1124 		    (adapter->num_rx_queues == v_idx))
1125 			adapter->node = orig_node;
1126 		if (orig_node == -1) {
1127 			int cur_node = next_online_node(adapter->node);
1128 			if (cur_node == MAX_NUMNODES)
1129 				cur_node = first_online_node;
1130 			adapter->node = cur_node;
1131 		}
1132 		q_vector = kzalloc_node(sizeof(struct igb_q_vector), GFP_KERNEL,
1133 					adapter->node);
1134 		if (!q_vector)
1135 			q_vector = kzalloc(sizeof(struct igb_q_vector),
1136 					   GFP_KERNEL);
1137 		if (!q_vector)
1138 			goto err_out;
1139 		q_vector->adapter = adapter;
1140 		q_vector->itr_register = hw->hw_addr + E1000_EITR(0);
1141 		q_vector->itr_val = IGB_START_ITR;
1142 		netif_napi_add(adapter->netdev, &q_vector->napi, igb_poll, 64);
1143 		adapter->q_vector[v_idx] = q_vector;
1144 	}
1145 	/* Restore the adapter's original node */
1146 	adapter->node = orig_node;
1147 
1148 	return 0;
1149 
1150 err_out:
1151 	/* Restore the adapter's original node */
1152 	adapter->node = orig_node;
1153 	igb_free_q_vectors(adapter);
1154 	return -ENOMEM;
1155 }
1156 
1157 static void igb_map_rx_ring_to_vector(struct igb_adapter *adapter,
1158                                       int ring_idx, int v_idx)
1159 {
1160 	struct igb_q_vector *q_vector = adapter->q_vector[v_idx];
1161 
1162 	q_vector->rx.ring = adapter->rx_ring[ring_idx];
1163 	q_vector->rx.ring->q_vector = q_vector;
1164 	q_vector->rx.count++;
1165 	q_vector->itr_val = adapter->rx_itr_setting;
1166 	if (q_vector->itr_val && q_vector->itr_val <= 3)
1167 		q_vector->itr_val = IGB_START_ITR;
1168 }
1169 
1170 static void igb_map_tx_ring_to_vector(struct igb_adapter *adapter,
1171                                       int ring_idx, int v_idx)
1172 {
1173 	struct igb_q_vector *q_vector = adapter->q_vector[v_idx];
1174 
1175 	q_vector->tx.ring = adapter->tx_ring[ring_idx];
1176 	q_vector->tx.ring->q_vector = q_vector;
1177 	q_vector->tx.count++;
1178 	q_vector->itr_val = adapter->tx_itr_setting;
1179 	q_vector->tx.work_limit = adapter->tx_work_limit;
1180 	if (q_vector->itr_val && q_vector->itr_val <= 3)
1181 		q_vector->itr_val = IGB_START_ITR;
1182 }
1183 
1184 /**
1185  * igb_map_ring_to_vector - maps allocated queues to vectors
1186  *
1187  * This function maps the recently allocated queues to vectors.
1188  **/
1189 static int igb_map_ring_to_vector(struct igb_adapter *adapter)
1190 {
1191 	int i;
1192 	int v_idx = 0;
1193 
1194 	if ((adapter->num_q_vectors < adapter->num_rx_queues) ||
1195 	    (adapter->num_q_vectors < adapter->num_tx_queues))
1196 		return -ENOMEM;
1197 
1198 	if (adapter->num_q_vectors >=
1199 	    (adapter->num_rx_queues + adapter->num_tx_queues)) {
1200 		for (i = 0; i < adapter->num_rx_queues; i++)
1201 			igb_map_rx_ring_to_vector(adapter, i, v_idx++);
1202 		for (i = 0; i < adapter->num_tx_queues; i++)
1203 			igb_map_tx_ring_to_vector(adapter, i, v_idx++);
1204 	} else {
1205 		for (i = 0; i < adapter->num_rx_queues; i++) {
1206 			if (i < adapter->num_tx_queues)
1207 				igb_map_tx_ring_to_vector(adapter, i, v_idx);
1208 			igb_map_rx_ring_to_vector(adapter, i, v_idx++);
1209 		}
1210 		for (; i < adapter->num_tx_queues; i++)
1211 			igb_map_tx_ring_to_vector(adapter, i, v_idx++);
1212 	}
1213 	return 0;
1214 }
1215 
1216 /**
1217  * igb_init_interrupt_scheme - initialize interrupts, allocate queues/vectors
1218  *
1219  * This function initializes the interrupts and allocates all of the queues.
1220  **/
1221 static int igb_init_interrupt_scheme(struct igb_adapter *adapter)
1222 {
1223 	struct pci_dev *pdev = adapter->pdev;
1224 	int err;
1225 
1226 	err = igb_set_interrupt_capability(adapter);
1227 	if (err)
1228 		return err;
1229 
1230 	err = igb_alloc_q_vectors(adapter);
1231 	if (err) {
1232 		dev_err(&pdev->dev, "Unable to allocate memory for vectors\n");
1233 		goto err_alloc_q_vectors;
1234 	}
1235 
1236 	err = igb_alloc_queues(adapter);
1237 	if (err) {
1238 		dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
1239 		goto err_alloc_queues;
1240 	}
1241 
1242 	err = igb_map_ring_to_vector(adapter);
1243 	if (err) {
1244 		dev_err(&pdev->dev, "Invalid q_vector to ring mapping\n");
1245 		goto err_map_queues;
1246 	}
1247 
1248 
1249 	return 0;
1250 err_map_queues:
1251 	igb_free_queues(adapter);
1252 err_alloc_queues:
1253 	igb_free_q_vectors(adapter);
1254 err_alloc_q_vectors:
1255 	igb_reset_interrupt_capability(adapter);
1256 	return err;
1257 }
1258 
1259 /**
1260  * igb_request_irq - initialize interrupts
1261  *
1262  * Attempts to configure interrupts using the best available
1263  * capabilities of the hardware and kernel.
1264  **/
1265 static int igb_request_irq(struct igb_adapter *adapter)
1266 {
1267 	struct net_device *netdev = adapter->netdev;
1268 	struct pci_dev *pdev = adapter->pdev;
1269 	int err = 0;
1270 
1271 	if (adapter->msix_entries) {
1272 		err = igb_request_msix(adapter);
1273 		if (!err)
1274 			goto request_done;
1275 		/* fall back to MSI */
1276 		igb_clear_interrupt_scheme(adapter);
1277 		if (!pci_enable_msi(pdev))
1278 			adapter->flags |= IGB_FLAG_HAS_MSI;
1279 		igb_free_all_tx_resources(adapter);
1280 		igb_free_all_rx_resources(adapter);
1281 		adapter->num_tx_queues = 1;
1282 		adapter->num_rx_queues = 1;
1283 		adapter->num_q_vectors = 1;
1284 		err = igb_alloc_q_vectors(adapter);
1285 		if (err) {
1286 			dev_err(&pdev->dev,
1287 			        "Unable to allocate memory for vectors\n");
1288 			goto request_done;
1289 		}
1290 		err = igb_alloc_queues(adapter);
1291 		if (err) {
1292 			dev_err(&pdev->dev,
1293 			        "Unable to allocate memory for queues\n");
1294 			igb_free_q_vectors(adapter);
1295 			goto request_done;
1296 		}
1297 		igb_setup_all_tx_resources(adapter);
1298 		igb_setup_all_rx_resources(adapter);
1299 	}
1300 
1301 	igb_assign_vector(adapter->q_vector[0], 0);
1302 
1303 	if (adapter->flags & IGB_FLAG_HAS_MSI) {
1304 		err = request_irq(pdev->irq, igb_intr_msi, 0,
1305 				  netdev->name, adapter);
1306 		if (!err)
1307 			goto request_done;
1308 
1309 		/* fall back to legacy interrupts */
1310 		igb_reset_interrupt_capability(adapter);
1311 		adapter->flags &= ~IGB_FLAG_HAS_MSI;
1312 	}
1313 
1314 	err = request_irq(pdev->irq, igb_intr, IRQF_SHARED,
1315 			  netdev->name, adapter);
1316 
1317 	if (err)
1318 		dev_err(&pdev->dev, "Error %d getting interrupt\n",
1319 			err);
1320 
1321 request_done:
1322 	return err;
1323 }
1324 
1325 static void igb_free_irq(struct igb_adapter *adapter)
1326 {
1327 	if (adapter->msix_entries) {
1328 		int vector = 0, i;
1329 
1330 		free_irq(adapter->msix_entries[vector++].vector, adapter);
1331 
1332 		for (i = 0; i < adapter->num_q_vectors; i++)
1333 			free_irq(adapter->msix_entries[vector++].vector,
1334 				 adapter->q_vector[i]);
1335 	} else {
1336 		free_irq(adapter->pdev->irq, adapter);
1337 	}
1338 }
1339 
1340 /**
1341  * igb_irq_disable - Mask off interrupt generation on the NIC
1342  * @adapter: board private structure
1343  **/
1344 static void igb_irq_disable(struct igb_adapter *adapter)
1345 {
1346 	struct e1000_hw *hw = &adapter->hw;
1347 
1348 	/*
1349 	 * we need to be careful when disabling interrupts.  The VFs are also
1350 	 * mapped into these registers and so clearing the bits can cause
1351 	 * issues on the VF drivers so we only need to clear what we set
1352 	 */
1353 	if (adapter->msix_entries) {
1354 		u32 regval = rd32(E1000_EIAM);
1355 		wr32(E1000_EIAM, regval & ~adapter->eims_enable_mask);
1356 		wr32(E1000_EIMC, adapter->eims_enable_mask);
1357 		regval = rd32(E1000_EIAC);
1358 		wr32(E1000_EIAC, regval & ~adapter->eims_enable_mask);
1359 	}
1360 
1361 	wr32(E1000_IAM, 0);
1362 	wr32(E1000_IMC, ~0);
1363 	wrfl();
1364 	if (adapter->msix_entries) {
1365 		int i;
1366 		for (i = 0; i < adapter->num_q_vectors; i++)
1367 			synchronize_irq(adapter->msix_entries[i].vector);
1368 	} else {
1369 		synchronize_irq(adapter->pdev->irq);
1370 	}
1371 }
1372 
1373 /**
1374  * igb_irq_enable - Enable default interrupt generation settings
1375  * @adapter: board private structure
1376  **/
1377 static void igb_irq_enable(struct igb_adapter *adapter)
1378 {
1379 	struct e1000_hw *hw = &adapter->hw;
1380 
1381 	if (adapter->msix_entries) {
1382 		u32 ims = E1000_IMS_LSC | E1000_IMS_DOUTSYNC | E1000_IMS_DRSTA;
1383 		u32 regval = rd32(E1000_EIAC);
1384 		wr32(E1000_EIAC, regval | adapter->eims_enable_mask);
1385 		regval = rd32(E1000_EIAM);
1386 		wr32(E1000_EIAM, regval | adapter->eims_enable_mask);
1387 		wr32(E1000_EIMS, adapter->eims_enable_mask);
1388 		if (adapter->vfs_allocated_count) {
1389 			wr32(E1000_MBVFIMR, 0xFF);
1390 			ims |= E1000_IMS_VMMB;
1391 		}
1392 		wr32(E1000_IMS, ims);
1393 	} else {
1394 		wr32(E1000_IMS, IMS_ENABLE_MASK |
1395 				E1000_IMS_DRSTA);
1396 		wr32(E1000_IAM, IMS_ENABLE_MASK |
1397 				E1000_IMS_DRSTA);
1398 	}
1399 }
1400 
1401 static void igb_update_mng_vlan(struct igb_adapter *adapter)
1402 {
1403 	struct e1000_hw *hw = &adapter->hw;
1404 	u16 vid = adapter->hw.mng_cookie.vlan_id;
1405 	u16 old_vid = adapter->mng_vlan_id;
1406 
1407 	if (hw->mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) {
1408 		/* add VID to filter table */
1409 		igb_vfta_set(hw, vid, true);
1410 		adapter->mng_vlan_id = vid;
1411 	} else {
1412 		adapter->mng_vlan_id = IGB_MNG_VLAN_NONE;
1413 	}
1414 
1415 	if ((old_vid != (u16)IGB_MNG_VLAN_NONE) &&
1416 	    (vid != old_vid) &&
1417 	    !test_bit(old_vid, adapter->active_vlans)) {
1418 		/* remove VID from filter table */
1419 		igb_vfta_set(hw, old_vid, false);
1420 	}
1421 }
1422 
1423 /**
1424  * igb_release_hw_control - release control of the h/w to f/w
1425  * @adapter: address of board private structure
1426  *
1427  * igb_release_hw_control resets CTRL_EXT:DRV_LOAD bit.
1428  * For ASF and Pass Through versions of f/w this means that the
1429  * driver is no longer loaded.
1430  *
1431  **/
1432 static void igb_release_hw_control(struct igb_adapter *adapter)
1433 {
1434 	struct e1000_hw *hw = &adapter->hw;
1435 	u32 ctrl_ext;
1436 
1437 	/* Let firmware take over control of h/w */
1438 	ctrl_ext = rd32(E1000_CTRL_EXT);
1439 	wr32(E1000_CTRL_EXT,
1440 			ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD);
1441 }
1442 
1443 /**
1444  * igb_get_hw_control - get control of the h/w from f/w
1445  * @adapter: address of board private structure
1446  *
1447  * igb_get_hw_control sets CTRL_EXT:DRV_LOAD bit.
1448  * For ASF and Pass Through versions of f/w this means that
1449  * the driver is loaded.
1450  *
1451  **/
1452 static void igb_get_hw_control(struct igb_adapter *adapter)
1453 {
1454 	struct e1000_hw *hw = &adapter->hw;
1455 	u32 ctrl_ext;
1456 
1457 	/* Let firmware know the driver has taken over */
1458 	ctrl_ext = rd32(E1000_CTRL_EXT);
1459 	wr32(E1000_CTRL_EXT,
1460 			ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
1461 }
1462 
1463 /**
1464  * igb_configure - configure the hardware for RX and TX
1465  * @adapter: private board structure
1466  **/
1467 static void igb_configure(struct igb_adapter *adapter)
1468 {
1469 	struct net_device *netdev = adapter->netdev;
1470 	int i;
1471 
1472 	igb_get_hw_control(adapter);
1473 	igb_set_rx_mode(netdev);
1474 
1475 	igb_restore_vlan(adapter);
1476 
1477 	igb_setup_tctl(adapter);
1478 	igb_setup_mrqc(adapter);
1479 	igb_setup_rctl(adapter);
1480 
1481 	igb_configure_tx(adapter);
1482 	igb_configure_rx(adapter);
1483 
1484 	igb_rx_fifo_flush_82575(&adapter->hw);
1485 
1486 	/* call igb_desc_unused which always leaves
1487 	 * at least 1 descriptor unused to make sure
1488 	 * next_to_use != next_to_clean */
1489 	for (i = 0; i < adapter->num_rx_queues; i++) {
1490 		struct igb_ring *ring = adapter->rx_ring[i];
1491 		igb_alloc_rx_buffers(ring, igb_desc_unused(ring));
1492 	}
1493 }
1494 
1495 /**
1496  * igb_power_up_link - Power up the phy/serdes link
1497  * @adapter: address of board private structure
1498  **/
1499 void igb_power_up_link(struct igb_adapter *adapter)
1500 {
1501 	if (adapter->hw.phy.media_type == e1000_media_type_copper)
1502 		igb_power_up_phy_copper(&adapter->hw);
1503 	else
1504 		igb_power_up_serdes_link_82575(&adapter->hw);
1505 }
1506 
1507 /**
1508  * igb_power_down_link - Power down the phy/serdes link
1509  * @adapter: address of board private structure
1510  */
1511 static void igb_power_down_link(struct igb_adapter *adapter)
1512 {
1513 	if (adapter->hw.phy.media_type == e1000_media_type_copper)
1514 		igb_power_down_phy_copper_82575(&adapter->hw);
1515 	else
1516 		igb_shutdown_serdes_link_82575(&adapter->hw);
1517 }
1518 
1519 /**
1520  * igb_up - Open the interface and prepare it to handle traffic
1521  * @adapter: board private structure
1522  **/
1523 int igb_up(struct igb_adapter *adapter)
1524 {
1525 	struct e1000_hw *hw = &adapter->hw;
1526 	int i;
1527 
1528 	/* hardware has been reset, we need to reload some things */
1529 	igb_configure(adapter);
1530 
1531 	clear_bit(__IGB_DOWN, &adapter->state);
1532 
1533 	for (i = 0; i < adapter->num_q_vectors; i++)
1534 		napi_enable(&(adapter->q_vector[i]->napi));
1535 
1536 	if (adapter->msix_entries)
1537 		igb_configure_msix(adapter);
1538 	else
1539 		igb_assign_vector(adapter->q_vector[0], 0);
1540 
1541 	/* Clear any pending interrupts. */
1542 	rd32(E1000_ICR);
1543 	igb_irq_enable(adapter);
1544 
1545 	/* notify VFs that reset has been completed */
1546 	if (adapter->vfs_allocated_count) {
1547 		u32 reg_data = rd32(E1000_CTRL_EXT);
1548 		reg_data |= E1000_CTRL_EXT_PFRSTD;
1549 		wr32(E1000_CTRL_EXT, reg_data);
1550 	}
1551 
1552 	netif_tx_start_all_queues(adapter->netdev);
1553 
1554 	/* start the watchdog. */
1555 	hw->mac.get_link_status = 1;
1556 	schedule_work(&adapter->watchdog_task);
1557 
1558 	return 0;
1559 }
1560 
1561 void igb_down(struct igb_adapter *adapter)
1562 {
1563 	struct net_device *netdev = adapter->netdev;
1564 	struct e1000_hw *hw = &adapter->hw;
1565 	u32 tctl, rctl;
1566 	int i;
1567 
1568 	/* signal that we're down so the interrupt handler does not
1569 	 * reschedule our watchdog timer */
1570 	set_bit(__IGB_DOWN, &adapter->state);
1571 
1572 	/* disable receives in the hardware */
1573 	rctl = rd32(E1000_RCTL);
1574 	wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN);
1575 	/* flush and sleep below */
1576 
1577 	netif_tx_stop_all_queues(netdev);
1578 
1579 	/* disable transmits in the hardware */
1580 	tctl = rd32(E1000_TCTL);
1581 	tctl &= ~E1000_TCTL_EN;
1582 	wr32(E1000_TCTL, tctl);
1583 	/* flush both disables and wait for them to finish */
1584 	wrfl();
1585 	msleep(10);
1586 
1587 	for (i = 0; i < adapter->num_q_vectors; i++)
1588 		napi_disable(&(adapter->q_vector[i]->napi));
1589 
1590 	igb_irq_disable(adapter);
1591 
1592 	del_timer_sync(&adapter->watchdog_timer);
1593 	del_timer_sync(&adapter->phy_info_timer);
1594 
1595 	netif_carrier_off(netdev);
1596 
1597 	/* record the stats before reset*/
1598 	spin_lock(&adapter->stats64_lock);
1599 	igb_update_stats(adapter, &adapter->stats64);
1600 	spin_unlock(&adapter->stats64_lock);
1601 
1602 	adapter->link_speed = 0;
1603 	adapter->link_duplex = 0;
1604 
1605 	if (!pci_channel_offline(adapter->pdev))
1606 		igb_reset(adapter);
1607 	igb_clean_all_tx_rings(adapter);
1608 	igb_clean_all_rx_rings(adapter);
1609 #ifdef CONFIG_IGB_DCA
1610 
1611 	/* since we reset the hardware DCA settings were cleared */
1612 	igb_setup_dca(adapter);
1613 #endif
1614 }
1615 
1616 void igb_reinit_locked(struct igb_adapter *adapter)
1617 {
1618 	WARN_ON(in_interrupt());
1619 	while (test_and_set_bit(__IGB_RESETTING, &adapter->state))
1620 		msleep(1);
1621 	igb_down(adapter);
1622 	igb_up(adapter);
1623 	clear_bit(__IGB_RESETTING, &adapter->state);
1624 }
1625 
1626 void igb_reset(struct igb_adapter *adapter)
1627 {
1628 	struct pci_dev *pdev = adapter->pdev;
1629 	struct e1000_hw *hw = &adapter->hw;
1630 	struct e1000_mac_info *mac = &hw->mac;
1631 	struct e1000_fc_info *fc = &hw->fc;
1632 	u32 pba = 0, tx_space, min_tx_space, min_rx_space;
1633 	u16 hwm;
1634 
1635 	/* Repartition Pba for greater than 9k mtu
1636 	 * To take effect CTRL.RST is required.
1637 	 */
1638 	switch (mac->type) {
1639 	case e1000_i350:
1640 	case e1000_82580:
1641 		pba = rd32(E1000_RXPBS);
1642 		pba = igb_rxpbs_adjust_82580(pba);
1643 		break;
1644 	case e1000_82576:
1645 		pba = rd32(E1000_RXPBS);
1646 		pba &= E1000_RXPBS_SIZE_MASK_82576;
1647 		break;
1648 	case e1000_82575:
1649 	default:
1650 		pba = E1000_PBA_34K;
1651 		break;
1652 	}
1653 
1654 	if ((adapter->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN) &&
1655 	    (mac->type < e1000_82576)) {
1656 		/* adjust PBA for jumbo frames */
1657 		wr32(E1000_PBA, pba);
1658 
1659 		/* To maintain wire speed transmits, the Tx FIFO should be
1660 		 * large enough to accommodate two full transmit packets,
1661 		 * rounded up to the next 1KB and expressed in KB.  Likewise,
1662 		 * the Rx FIFO should be large enough to accommodate at least
1663 		 * one full receive packet and is similarly rounded up and
1664 		 * expressed in KB. */
1665 		pba = rd32(E1000_PBA);
1666 		/* upper 16 bits has Tx packet buffer allocation size in KB */
1667 		tx_space = pba >> 16;
1668 		/* lower 16 bits has Rx packet buffer allocation size in KB */
1669 		pba &= 0xffff;
1670 		/* the tx fifo also stores 16 bytes of information about the tx
1671 		 * but don't include ethernet FCS because hardware appends it */
1672 		min_tx_space = (adapter->max_frame_size +
1673 				sizeof(union e1000_adv_tx_desc) -
1674 				ETH_FCS_LEN) * 2;
1675 		min_tx_space = ALIGN(min_tx_space, 1024);
1676 		min_tx_space >>= 10;
1677 		/* software strips receive CRC, so leave room for it */
1678 		min_rx_space = adapter->max_frame_size;
1679 		min_rx_space = ALIGN(min_rx_space, 1024);
1680 		min_rx_space >>= 10;
1681 
1682 		/* If current Tx allocation is less than the min Tx FIFO size,
1683 		 * and the min Tx FIFO size is less than the current Rx FIFO
1684 		 * allocation, take space away from current Rx allocation */
1685 		if (tx_space < min_tx_space &&
1686 		    ((min_tx_space - tx_space) < pba)) {
1687 			pba = pba - (min_tx_space - tx_space);
1688 
1689 			/* if short on rx space, rx wins and must trump tx
1690 			 * adjustment */
1691 			if (pba < min_rx_space)
1692 				pba = min_rx_space;
1693 		}
1694 		wr32(E1000_PBA, pba);
1695 	}
1696 
1697 	/* flow control settings */
1698 	/* The high water mark must be low enough to fit one full frame
1699 	 * (or the size used for early receive) above it in the Rx FIFO.
1700 	 * Set it to the lower of:
1701 	 * - 90% of the Rx FIFO size, or
1702 	 * - the full Rx FIFO size minus one full frame */
1703 	hwm = min(((pba << 10) * 9 / 10),
1704 			((pba << 10) - 2 * adapter->max_frame_size));
1705 
1706 	fc->high_water = hwm & 0xFFF0;	/* 16-byte granularity */
1707 	fc->low_water = fc->high_water - 16;
1708 	fc->pause_time = 0xFFFF;
1709 	fc->send_xon = 1;
1710 	fc->current_mode = fc->requested_mode;
1711 
1712 	/* disable receive for all VFs and wait one second */
1713 	if (adapter->vfs_allocated_count) {
1714 		int i;
1715 		for (i = 0 ; i < adapter->vfs_allocated_count; i++)
1716 			adapter->vf_data[i].flags &= IGB_VF_FLAG_PF_SET_MAC;
1717 
1718 		/* ping all the active vfs to let them know we are going down */
1719 		igb_ping_all_vfs(adapter);
1720 
1721 		/* disable transmits and receives */
1722 		wr32(E1000_VFRE, 0);
1723 		wr32(E1000_VFTE, 0);
1724 	}
1725 
1726 	/* Allow time for pending master requests to run */
1727 	hw->mac.ops.reset_hw(hw);
1728 	wr32(E1000_WUC, 0);
1729 
1730 	if (hw->mac.ops.init_hw(hw))
1731 		dev_err(&pdev->dev, "Hardware Error\n");
1732 
1733 	igb_init_dmac(adapter, pba);
1734 	if (!netif_running(adapter->netdev))
1735 		igb_power_down_link(adapter);
1736 
1737 	igb_update_mng_vlan(adapter);
1738 
1739 	/* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
1740 	wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE);
1741 
1742 	igb_get_phy_info(hw);
1743 }
1744 
1745 static u32 igb_fix_features(struct net_device *netdev, u32 features)
1746 {
1747 	/*
1748 	 * Since there is no support for separate rx/tx vlan accel
1749 	 * enable/disable make sure tx flag is always in same state as rx.
1750 	 */
1751 	if (features & NETIF_F_HW_VLAN_RX)
1752 		features |= NETIF_F_HW_VLAN_TX;
1753 	else
1754 		features &= ~NETIF_F_HW_VLAN_TX;
1755 
1756 	return features;
1757 }
1758 
1759 static int igb_set_features(struct net_device *netdev, u32 features)
1760 {
1761 	u32 changed = netdev->features ^ features;
1762 
1763 	if (changed & NETIF_F_HW_VLAN_RX)
1764 		igb_vlan_mode(netdev, features);
1765 
1766 	return 0;
1767 }
1768 
1769 static const struct net_device_ops igb_netdev_ops = {
1770 	.ndo_open		= igb_open,
1771 	.ndo_stop		= igb_close,
1772 	.ndo_start_xmit		= igb_xmit_frame,
1773 	.ndo_get_stats64	= igb_get_stats64,
1774 	.ndo_set_rx_mode	= igb_set_rx_mode,
1775 	.ndo_set_mac_address	= igb_set_mac,
1776 	.ndo_change_mtu		= igb_change_mtu,
1777 	.ndo_do_ioctl		= igb_ioctl,
1778 	.ndo_tx_timeout		= igb_tx_timeout,
1779 	.ndo_validate_addr	= eth_validate_addr,
1780 	.ndo_vlan_rx_add_vid	= igb_vlan_rx_add_vid,
1781 	.ndo_vlan_rx_kill_vid	= igb_vlan_rx_kill_vid,
1782 	.ndo_set_vf_mac		= igb_ndo_set_vf_mac,
1783 	.ndo_set_vf_vlan	= igb_ndo_set_vf_vlan,
1784 	.ndo_set_vf_tx_rate	= igb_ndo_set_vf_bw,
1785 	.ndo_get_vf_config	= igb_ndo_get_vf_config,
1786 #ifdef CONFIG_NET_POLL_CONTROLLER
1787 	.ndo_poll_controller	= igb_netpoll,
1788 #endif
1789 	.ndo_fix_features	= igb_fix_features,
1790 	.ndo_set_features	= igb_set_features,
1791 };
1792 
1793 /**
1794  * igb_probe - Device Initialization Routine
1795  * @pdev: PCI device information struct
1796  * @ent: entry in igb_pci_tbl
1797  *
1798  * Returns 0 on success, negative on failure
1799  *
1800  * igb_probe initializes an adapter identified by a pci_dev structure.
1801  * The OS initialization, configuring of the adapter private structure,
1802  * and a hardware reset occur.
1803  **/
1804 static int __devinit igb_probe(struct pci_dev *pdev,
1805 			       const struct pci_device_id *ent)
1806 {
1807 	struct net_device *netdev;
1808 	struct igb_adapter *adapter;
1809 	struct e1000_hw *hw;
1810 	u16 eeprom_data = 0;
1811 	s32 ret_val;
1812 	static int global_quad_port_a; /* global quad port a indication */
1813 	const struct e1000_info *ei = igb_info_tbl[ent->driver_data];
1814 	unsigned long mmio_start, mmio_len;
1815 	int err, pci_using_dac;
1816 	u16 eeprom_apme_mask = IGB_EEPROM_APME;
1817 	u8 part_str[E1000_PBANUM_LENGTH];
1818 
1819 	/* Catch broken hardware that put the wrong VF device ID in
1820 	 * the PCIe SR-IOV capability.
1821 	 */
1822 	if (pdev->is_virtfn) {
1823 		WARN(1, KERN_ERR "%s (%hx:%hx) should not be a VF!\n",
1824 		     pci_name(pdev), pdev->vendor, pdev->device);
1825 		return -EINVAL;
1826 	}
1827 
1828 	err = pci_enable_device_mem(pdev);
1829 	if (err)
1830 		return err;
1831 
1832 	pci_using_dac = 0;
1833 	err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
1834 	if (!err) {
1835 		err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
1836 		if (!err)
1837 			pci_using_dac = 1;
1838 	} else {
1839 		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
1840 		if (err) {
1841 			err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
1842 			if (err) {
1843 				dev_err(&pdev->dev, "No usable DMA "
1844 					"configuration, aborting\n");
1845 				goto err_dma;
1846 			}
1847 		}
1848 	}
1849 
1850 	err = pci_request_selected_regions(pdev, pci_select_bars(pdev,
1851 	                                   IORESOURCE_MEM),
1852 	                                   igb_driver_name);
1853 	if (err)
1854 		goto err_pci_reg;
1855 
1856 	pci_enable_pcie_error_reporting(pdev);
1857 
1858 	pci_set_master(pdev);
1859 	pci_save_state(pdev);
1860 
1861 	err = -ENOMEM;
1862 	netdev = alloc_etherdev_mq(sizeof(struct igb_adapter),
1863 				   IGB_MAX_TX_QUEUES);
1864 	if (!netdev)
1865 		goto err_alloc_etherdev;
1866 
1867 	SET_NETDEV_DEV(netdev, &pdev->dev);
1868 
1869 	pci_set_drvdata(pdev, netdev);
1870 	adapter = netdev_priv(netdev);
1871 	adapter->netdev = netdev;
1872 	adapter->pdev = pdev;
1873 	hw = &adapter->hw;
1874 	hw->back = adapter;
1875 	adapter->msg_enable = NETIF_MSG_DRV | NETIF_MSG_PROBE;
1876 
1877 	mmio_start = pci_resource_start(pdev, 0);
1878 	mmio_len = pci_resource_len(pdev, 0);
1879 
1880 	err = -EIO;
1881 	hw->hw_addr = ioremap(mmio_start, mmio_len);
1882 	if (!hw->hw_addr)
1883 		goto err_ioremap;
1884 
1885 	netdev->netdev_ops = &igb_netdev_ops;
1886 	igb_set_ethtool_ops(netdev);
1887 	netdev->watchdog_timeo = 5 * HZ;
1888 
1889 	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
1890 
1891 	netdev->mem_start = mmio_start;
1892 	netdev->mem_end = mmio_start + mmio_len;
1893 
1894 	/* PCI config space info */
1895 	hw->vendor_id = pdev->vendor;
1896 	hw->device_id = pdev->device;
1897 	hw->revision_id = pdev->revision;
1898 	hw->subsystem_vendor_id = pdev->subsystem_vendor;
1899 	hw->subsystem_device_id = pdev->subsystem_device;
1900 
1901 	/* Copy the default MAC, PHY and NVM function pointers */
1902 	memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
1903 	memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
1904 	memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
1905 	/* Initialize skew-specific constants */
1906 	err = ei->get_invariants(hw);
1907 	if (err)
1908 		goto err_sw_init;
1909 
1910 	/* setup the private structure */
1911 	err = igb_sw_init(adapter);
1912 	if (err)
1913 		goto err_sw_init;
1914 
1915 	igb_get_bus_info_pcie(hw);
1916 
1917 	hw->phy.autoneg_wait_to_complete = false;
1918 
1919 	/* Copper options */
1920 	if (hw->phy.media_type == e1000_media_type_copper) {
1921 		hw->phy.mdix = AUTO_ALL_MODES;
1922 		hw->phy.disable_polarity_correction = false;
1923 		hw->phy.ms_type = e1000_ms_hw_default;
1924 	}
1925 
1926 	if (igb_check_reset_block(hw))
1927 		dev_info(&pdev->dev,
1928 			"PHY reset is blocked due to SOL/IDER session.\n");
1929 
1930 	/*
1931 	 * features is initialized to 0 in allocation, it might have bits
1932 	 * set by igb_sw_init so we should use an or instead of an
1933 	 * assignment.
1934 	 */
1935 	netdev->features |= NETIF_F_SG |
1936 			    NETIF_F_IP_CSUM |
1937 			    NETIF_F_IPV6_CSUM |
1938 			    NETIF_F_TSO |
1939 			    NETIF_F_TSO6 |
1940 			    NETIF_F_RXHASH |
1941 			    NETIF_F_RXCSUM |
1942 			    NETIF_F_HW_VLAN_RX |
1943 			    NETIF_F_HW_VLAN_TX;
1944 
1945 	/* copy netdev features into list of user selectable features */
1946 	netdev->hw_features |= netdev->features;
1947 
1948 	/* set this bit last since it cannot be part of hw_features */
1949 	netdev->features |= NETIF_F_HW_VLAN_FILTER;
1950 
1951 	netdev->vlan_features |= NETIF_F_TSO |
1952 				 NETIF_F_TSO6 |
1953 				 NETIF_F_IP_CSUM |
1954 				 NETIF_F_IPV6_CSUM |
1955 				 NETIF_F_SG;
1956 
1957 	if (pci_using_dac) {
1958 		netdev->features |= NETIF_F_HIGHDMA;
1959 		netdev->vlan_features |= NETIF_F_HIGHDMA;
1960 	}
1961 
1962 	if (hw->mac.type >= e1000_82576) {
1963 		netdev->hw_features |= NETIF_F_SCTP_CSUM;
1964 		netdev->features |= NETIF_F_SCTP_CSUM;
1965 	}
1966 
1967 	netdev->priv_flags |= IFF_UNICAST_FLT;
1968 
1969 	adapter->en_mng_pt = igb_enable_mng_pass_thru(hw);
1970 
1971 	/* before reading the NVM, reset the controller to put the device in a
1972 	 * known good starting state */
1973 	hw->mac.ops.reset_hw(hw);
1974 
1975 	/* make sure the NVM is good */
1976 	if (hw->nvm.ops.validate(hw) < 0) {
1977 		dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n");
1978 		err = -EIO;
1979 		goto err_eeprom;
1980 	}
1981 
1982 	/* copy the MAC address out of the NVM */
1983 	if (hw->mac.ops.read_mac_addr(hw))
1984 		dev_err(&pdev->dev, "NVM Read Error\n");
1985 
1986 	memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len);
1987 	memcpy(netdev->perm_addr, hw->mac.addr, netdev->addr_len);
1988 
1989 	if (!is_valid_ether_addr(netdev->perm_addr)) {
1990 		dev_err(&pdev->dev, "Invalid MAC Address\n");
1991 		err = -EIO;
1992 		goto err_eeprom;
1993 	}
1994 
1995 	setup_timer(&adapter->watchdog_timer, igb_watchdog,
1996 	            (unsigned long) adapter);
1997 	setup_timer(&adapter->phy_info_timer, igb_update_phy_info,
1998 	            (unsigned long) adapter);
1999 
2000 	INIT_WORK(&adapter->reset_task, igb_reset_task);
2001 	INIT_WORK(&adapter->watchdog_task, igb_watchdog_task);
2002 
2003 	/* Initialize link properties that are user-changeable */
2004 	adapter->fc_autoneg = true;
2005 	hw->mac.autoneg = true;
2006 	hw->phy.autoneg_advertised = 0x2f;
2007 
2008 	hw->fc.requested_mode = e1000_fc_default;
2009 	hw->fc.current_mode = e1000_fc_default;
2010 
2011 	igb_validate_mdi_setting(hw);
2012 
2013 	/* Initial Wake on LAN setting If APM wake is enabled in the EEPROM,
2014 	 * enable the ACPI Magic Packet filter
2015 	 */
2016 
2017 	if (hw->bus.func == 0)
2018 		hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_A, 1, &eeprom_data);
2019 	else if (hw->mac.type >= e1000_82580)
2020 		hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_A +
2021 		                 NVM_82580_LAN_FUNC_OFFSET(hw->bus.func), 1,
2022 		                 &eeprom_data);
2023 	else if (hw->bus.func == 1)
2024 		hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_B, 1, &eeprom_data);
2025 
2026 	if (eeprom_data & eeprom_apme_mask)
2027 		adapter->eeprom_wol |= E1000_WUFC_MAG;
2028 
2029 	/* now that we have the eeprom settings, apply the special cases where
2030 	 * the eeprom may be wrong or the board simply won't support wake on
2031 	 * lan on a particular port */
2032 	switch (pdev->device) {
2033 	case E1000_DEV_ID_82575GB_QUAD_COPPER:
2034 		adapter->eeprom_wol = 0;
2035 		break;
2036 	case E1000_DEV_ID_82575EB_FIBER_SERDES:
2037 	case E1000_DEV_ID_82576_FIBER:
2038 	case E1000_DEV_ID_82576_SERDES:
2039 		/* Wake events only supported on port A for dual fiber
2040 		 * regardless of eeprom setting */
2041 		if (rd32(E1000_STATUS) & E1000_STATUS_FUNC_1)
2042 			adapter->eeprom_wol = 0;
2043 		break;
2044 	case E1000_DEV_ID_82576_QUAD_COPPER:
2045 	case E1000_DEV_ID_82576_QUAD_COPPER_ET2:
2046 		/* if quad port adapter, disable WoL on all but port A */
2047 		if (global_quad_port_a != 0)
2048 			adapter->eeprom_wol = 0;
2049 		else
2050 			adapter->flags |= IGB_FLAG_QUAD_PORT_A;
2051 		/* Reset for multiple quad port adapters */
2052 		if (++global_quad_port_a == 4)
2053 			global_quad_port_a = 0;
2054 		break;
2055 	}
2056 
2057 	/* initialize the wol settings based on the eeprom settings */
2058 	adapter->wol = adapter->eeprom_wol;
2059 	device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
2060 
2061 	/* reset the hardware with the new settings */
2062 	igb_reset(adapter);
2063 
2064 	/* let the f/w know that the h/w is now under the control of the
2065 	 * driver. */
2066 	igb_get_hw_control(adapter);
2067 
2068 	strcpy(netdev->name, "eth%d");
2069 	err = register_netdev(netdev);
2070 	if (err)
2071 		goto err_register;
2072 
2073 	/* carrier off reporting is important to ethtool even BEFORE open */
2074 	netif_carrier_off(netdev);
2075 
2076 #ifdef CONFIG_IGB_DCA
2077 	if (dca_add_requester(&pdev->dev) == 0) {
2078 		adapter->flags |= IGB_FLAG_DCA_ENABLED;
2079 		dev_info(&pdev->dev, "DCA enabled\n");
2080 		igb_setup_dca(adapter);
2081 	}
2082 
2083 #endif
2084 	/* do hw tstamp init after resetting */
2085 	igb_init_hw_timer(adapter);
2086 
2087 	dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n");
2088 	/* print bus type/speed/width info */
2089 	dev_info(&pdev->dev, "%s: (PCIe:%s:%s) %pM\n",
2090 		 netdev->name,
2091 		 ((hw->bus.speed == e1000_bus_speed_2500) ? "2.5Gb/s" :
2092 		  (hw->bus.speed == e1000_bus_speed_5000) ? "5.0Gb/s" :
2093 		                                            "unknown"),
2094 		 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
2095 		  (hw->bus.width == e1000_bus_width_pcie_x2) ? "Width x2" :
2096 		  (hw->bus.width == e1000_bus_width_pcie_x1) ? "Width x1" :
2097 		   "unknown"),
2098 		 netdev->dev_addr);
2099 
2100 	ret_val = igb_read_part_string(hw, part_str, E1000_PBANUM_LENGTH);
2101 	if (ret_val)
2102 		strcpy(part_str, "Unknown");
2103 	dev_info(&pdev->dev, "%s: PBA No: %s\n", netdev->name, part_str);
2104 	dev_info(&pdev->dev,
2105 		"Using %s interrupts. %d rx queue(s), %d tx queue(s)\n",
2106 		adapter->msix_entries ? "MSI-X" :
2107 		(adapter->flags & IGB_FLAG_HAS_MSI) ? "MSI" : "legacy",
2108 		adapter->num_rx_queues, adapter->num_tx_queues);
2109 	switch (hw->mac.type) {
2110 	case e1000_i350:
2111 		igb_set_eee_i350(hw);
2112 		break;
2113 	default:
2114 		break;
2115 	}
2116 	return 0;
2117 
2118 err_register:
2119 	igb_release_hw_control(adapter);
2120 err_eeprom:
2121 	if (!igb_check_reset_block(hw))
2122 		igb_reset_phy(hw);
2123 
2124 	if (hw->flash_address)
2125 		iounmap(hw->flash_address);
2126 err_sw_init:
2127 	igb_clear_interrupt_scheme(adapter);
2128 	iounmap(hw->hw_addr);
2129 err_ioremap:
2130 	free_netdev(netdev);
2131 err_alloc_etherdev:
2132 	pci_release_selected_regions(pdev,
2133 	                             pci_select_bars(pdev, IORESOURCE_MEM));
2134 err_pci_reg:
2135 err_dma:
2136 	pci_disable_device(pdev);
2137 	return err;
2138 }
2139 
2140 /**
2141  * igb_remove - Device Removal Routine
2142  * @pdev: PCI device information struct
2143  *
2144  * igb_remove is called by the PCI subsystem to alert the driver
2145  * that it should release a PCI device.  The could be caused by a
2146  * Hot-Plug event, or because the driver is going to be removed from
2147  * memory.
2148  **/
2149 static void __devexit igb_remove(struct pci_dev *pdev)
2150 {
2151 	struct net_device *netdev = pci_get_drvdata(pdev);
2152 	struct igb_adapter *adapter = netdev_priv(netdev);
2153 	struct e1000_hw *hw = &adapter->hw;
2154 
2155 	/*
2156 	 * The watchdog timer may be rescheduled, so explicitly
2157 	 * disable watchdog from being rescheduled.
2158 	 */
2159 	set_bit(__IGB_DOWN, &adapter->state);
2160 	del_timer_sync(&adapter->watchdog_timer);
2161 	del_timer_sync(&adapter->phy_info_timer);
2162 
2163 	cancel_work_sync(&adapter->reset_task);
2164 	cancel_work_sync(&adapter->watchdog_task);
2165 
2166 #ifdef CONFIG_IGB_DCA
2167 	if (adapter->flags & IGB_FLAG_DCA_ENABLED) {
2168 		dev_info(&pdev->dev, "DCA disabled\n");
2169 		dca_remove_requester(&pdev->dev);
2170 		adapter->flags &= ~IGB_FLAG_DCA_ENABLED;
2171 		wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_DISABLE);
2172 	}
2173 #endif
2174 
2175 	/* Release control of h/w to f/w.  If f/w is AMT enabled, this
2176 	 * would have already happened in close and is redundant. */
2177 	igb_release_hw_control(adapter);
2178 
2179 	unregister_netdev(netdev);
2180 
2181 	igb_clear_interrupt_scheme(adapter);
2182 
2183 #ifdef CONFIG_PCI_IOV
2184 	/* reclaim resources allocated to VFs */
2185 	if (adapter->vf_data) {
2186 		/* disable iov and allow time for transactions to clear */
2187 		if (!igb_check_vf_assignment(adapter)) {
2188 			pci_disable_sriov(pdev);
2189 			msleep(500);
2190 		} else {
2191 			dev_info(&pdev->dev, "VF(s) assigned to guests!\n");
2192 		}
2193 
2194 		kfree(adapter->vf_data);
2195 		adapter->vf_data = NULL;
2196 		wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
2197 		wrfl();
2198 		msleep(100);
2199 		dev_info(&pdev->dev, "IOV Disabled\n");
2200 	}
2201 #endif
2202 
2203 	iounmap(hw->hw_addr);
2204 	if (hw->flash_address)
2205 		iounmap(hw->flash_address);
2206 	pci_release_selected_regions(pdev,
2207 	                             pci_select_bars(pdev, IORESOURCE_MEM));
2208 
2209 	kfree(adapter->shadow_vfta);
2210 	free_netdev(netdev);
2211 
2212 	pci_disable_pcie_error_reporting(pdev);
2213 
2214 	pci_disable_device(pdev);
2215 }
2216 
2217 /**
2218  * igb_probe_vfs - Initialize vf data storage and add VFs to pci config space
2219  * @adapter: board private structure to initialize
2220  *
2221  * This function initializes the vf specific data storage and then attempts to
2222  * allocate the VFs.  The reason for ordering it this way is because it is much
2223  * mor expensive time wise to disable SR-IOV than it is to allocate and free
2224  * the memory for the VFs.
2225  **/
2226 static void __devinit igb_probe_vfs(struct igb_adapter * adapter)
2227 {
2228 #ifdef CONFIG_PCI_IOV
2229 	struct pci_dev *pdev = adapter->pdev;
2230 	int old_vfs = igb_find_enabled_vfs(adapter);
2231 	int i;
2232 
2233 	if (old_vfs) {
2234 		dev_info(&pdev->dev, "%d pre-allocated VFs found - override "
2235 			 "max_vfs setting of %d\n", old_vfs, max_vfs);
2236 		adapter->vfs_allocated_count = old_vfs;
2237 	}
2238 
2239 	if (!adapter->vfs_allocated_count)
2240 		return;
2241 
2242 	adapter->vf_data = kcalloc(adapter->vfs_allocated_count,
2243 				sizeof(struct vf_data_storage), GFP_KERNEL);
2244 	/* if allocation failed then we do not support SR-IOV */
2245 	if (!adapter->vf_data) {
2246 		adapter->vfs_allocated_count = 0;
2247 		dev_err(&pdev->dev, "Unable to allocate memory for VF "
2248 			"Data Storage\n");
2249 		goto out;
2250 	}
2251 
2252 	if (!old_vfs) {
2253 		if (pci_enable_sriov(pdev, adapter->vfs_allocated_count))
2254 			goto err_out;
2255 	}
2256 	dev_info(&pdev->dev, "%d VFs allocated\n",
2257 		 adapter->vfs_allocated_count);
2258 	for (i = 0; i < adapter->vfs_allocated_count; i++)
2259 		igb_vf_configure(adapter, i);
2260 
2261 	/* DMA Coalescing is not supported in IOV mode. */
2262 	adapter->flags &= ~IGB_FLAG_DMAC;
2263 	goto out;
2264 err_out:
2265 	kfree(adapter->vf_data);
2266 	adapter->vf_data = NULL;
2267 	adapter->vfs_allocated_count = 0;
2268 out:
2269 	return;
2270 #endif /* CONFIG_PCI_IOV */
2271 }
2272 
2273 /**
2274  * igb_init_hw_timer - Initialize hardware timer used with IEEE 1588 timestamp
2275  * @adapter: board private structure to initialize
2276  *
2277  * igb_init_hw_timer initializes the function pointer and values for the hw
2278  * timer found in hardware.
2279  **/
2280 static void igb_init_hw_timer(struct igb_adapter *adapter)
2281 {
2282 	struct e1000_hw *hw = &adapter->hw;
2283 
2284 	switch (hw->mac.type) {
2285 	case e1000_i350:
2286 	case e1000_82580:
2287 		memset(&adapter->cycles, 0, sizeof(adapter->cycles));
2288 		adapter->cycles.read = igb_read_clock;
2289 		adapter->cycles.mask = CLOCKSOURCE_MASK(64);
2290 		adapter->cycles.mult = 1;
2291 		/*
2292 		 * The 82580 timesync updates the system timer every 8ns by 8ns
2293 		 * and the value cannot be shifted.  Instead we need to shift
2294 		 * the registers to generate a 64bit timer value.  As a result
2295 		 * SYSTIMR/L/H, TXSTMPL/H, RXSTMPL/H all have to be shifted by
2296 		 * 24 in order to generate a larger value for synchronization.
2297 		 */
2298 		adapter->cycles.shift = IGB_82580_TSYNC_SHIFT;
2299 		/* disable system timer temporarily by setting bit 31 */
2300 		wr32(E1000_TSAUXC, 0x80000000);
2301 		wrfl();
2302 
2303 		/* Set registers so that rollover occurs soon to test this. */
2304 		wr32(E1000_SYSTIMR, 0x00000000);
2305 		wr32(E1000_SYSTIML, 0x80000000);
2306 		wr32(E1000_SYSTIMH, 0x000000FF);
2307 		wrfl();
2308 
2309 		/* enable system timer by clearing bit 31 */
2310 		wr32(E1000_TSAUXC, 0x0);
2311 		wrfl();
2312 
2313 		timecounter_init(&adapter->clock,
2314 				 &adapter->cycles,
2315 				 ktime_to_ns(ktime_get_real()));
2316 		/*
2317 		 * Synchronize our NIC clock against system wall clock. NIC
2318 		 * time stamp reading requires ~3us per sample, each sample
2319 		 * was pretty stable even under load => only require 10
2320 		 * samples for each offset comparison.
2321 		 */
2322 		memset(&adapter->compare, 0, sizeof(adapter->compare));
2323 		adapter->compare.source = &adapter->clock;
2324 		adapter->compare.target = ktime_get_real;
2325 		adapter->compare.num_samples = 10;
2326 		timecompare_update(&adapter->compare, 0);
2327 		break;
2328 	case e1000_82576:
2329 		/*
2330 		 * Initialize hardware timer: we keep it running just in case
2331 		 * that some program needs it later on.
2332 		 */
2333 		memset(&adapter->cycles, 0, sizeof(adapter->cycles));
2334 		adapter->cycles.read = igb_read_clock;
2335 		adapter->cycles.mask = CLOCKSOURCE_MASK(64);
2336 		adapter->cycles.mult = 1;
2337 		/**
2338 		 * Scale the NIC clock cycle by a large factor so that
2339 		 * relatively small clock corrections can be added or
2340 		 * subtracted at each clock tick. The drawbacks of a large
2341 		 * factor are a) that the clock register overflows more quickly
2342 		 * (not such a big deal) and b) that the increment per tick has
2343 		 * to fit into 24 bits.  As a result we need to use a shift of
2344 		 * 19 so we can fit a value of 16 into the TIMINCA register.
2345 		 */
2346 		adapter->cycles.shift = IGB_82576_TSYNC_SHIFT;
2347 		wr32(E1000_TIMINCA,
2348 		                (1 << E1000_TIMINCA_16NS_SHIFT) |
2349 		                (16 << IGB_82576_TSYNC_SHIFT));
2350 
2351 		/* Set registers so that rollover occurs soon to test this. */
2352 		wr32(E1000_SYSTIML, 0x00000000);
2353 		wr32(E1000_SYSTIMH, 0xFF800000);
2354 		wrfl();
2355 
2356 		timecounter_init(&adapter->clock,
2357 				 &adapter->cycles,
2358 				 ktime_to_ns(ktime_get_real()));
2359 		/*
2360 		 * Synchronize our NIC clock against system wall clock. NIC
2361 		 * time stamp reading requires ~3us per sample, each sample
2362 		 * was pretty stable even under load => only require 10
2363 		 * samples for each offset comparison.
2364 		 */
2365 		memset(&adapter->compare, 0, sizeof(adapter->compare));
2366 		adapter->compare.source = &adapter->clock;
2367 		adapter->compare.target = ktime_get_real;
2368 		adapter->compare.num_samples = 10;
2369 		timecompare_update(&adapter->compare, 0);
2370 		break;
2371 	case e1000_82575:
2372 		/* 82575 does not support timesync */
2373 	default:
2374 		break;
2375 	}
2376 
2377 }
2378 
2379 /**
2380  * igb_sw_init - Initialize general software structures (struct igb_adapter)
2381  * @adapter: board private structure to initialize
2382  *
2383  * igb_sw_init initializes the Adapter private data structure.
2384  * Fields are initialized based on PCI device information and
2385  * OS network device settings (MTU size).
2386  **/
2387 static int __devinit igb_sw_init(struct igb_adapter *adapter)
2388 {
2389 	struct e1000_hw *hw = &adapter->hw;
2390 	struct net_device *netdev = adapter->netdev;
2391 	struct pci_dev *pdev = adapter->pdev;
2392 
2393 	pci_read_config_word(pdev, PCI_COMMAND, &hw->bus.pci_cmd_word);
2394 
2395 	/* set default ring sizes */
2396 	adapter->tx_ring_count = IGB_DEFAULT_TXD;
2397 	adapter->rx_ring_count = IGB_DEFAULT_RXD;
2398 
2399 	/* set default ITR values */
2400 	adapter->rx_itr_setting = IGB_DEFAULT_ITR;
2401 	adapter->tx_itr_setting = IGB_DEFAULT_ITR;
2402 
2403 	/* set default work limits */
2404 	adapter->tx_work_limit = IGB_DEFAULT_TX_WORK;
2405 
2406 	adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN +
2407 				  VLAN_HLEN;
2408 	adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
2409 
2410 	adapter->node = -1;
2411 
2412 	spin_lock_init(&adapter->stats64_lock);
2413 #ifdef CONFIG_PCI_IOV
2414 	switch (hw->mac.type) {
2415 	case e1000_82576:
2416 	case e1000_i350:
2417 		if (max_vfs > 7) {
2418 			dev_warn(&pdev->dev,
2419 				 "Maximum of 7 VFs per PF, using max\n");
2420 			adapter->vfs_allocated_count = 7;
2421 		} else
2422 			adapter->vfs_allocated_count = max_vfs;
2423 		break;
2424 	default:
2425 		break;
2426 	}
2427 #endif /* CONFIG_PCI_IOV */
2428 	adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES, num_online_cpus());
2429 	/* i350 cannot do RSS and SR-IOV at the same time */
2430 	if (hw->mac.type == e1000_i350 && adapter->vfs_allocated_count)
2431 		adapter->rss_queues = 1;
2432 
2433 	/*
2434 	 * if rss_queues > 4 or vfs are going to be allocated with rss_queues
2435 	 * then we should combine the queues into a queue pair in order to
2436 	 * conserve interrupts due to limited supply
2437 	 */
2438 	if ((adapter->rss_queues > 4) ||
2439 	    ((adapter->rss_queues > 1) && (adapter->vfs_allocated_count > 6)))
2440 		adapter->flags |= IGB_FLAG_QUEUE_PAIRS;
2441 
2442 	/* Setup and initialize a copy of the hw vlan table array */
2443 	adapter->shadow_vfta = kzalloc(sizeof(u32) *
2444 				E1000_VLAN_FILTER_TBL_SIZE,
2445 				GFP_ATOMIC);
2446 
2447 	/* This call may decrease the number of queues */
2448 	if (igb_init_interrupt_scheme(adapter)) {
2449 		dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
2450 		return -ENOMEM;
2451 	}
2452 
2453 	igb_probe_vfs(adapter);
2454 
2455 	/* Explicitly disable IRQ since the NIC can be in any state. */
2456 	igb_irq_disable(adapter);
2457 
2458 	if (hw->mac.type == e1000_i350)
2459 		adapter->flags &= ~IGB_FLAG_DMAC;
2460 
2461 	set_bit(__IGB_DOWN, &adapter->state);
2462 	return 0;
2463 }
2464 
2465 /**
2466  * igb_open - Called when a network interface is made active
2467  * @netdev: network interface device structure
2468  *
2469  * Returns 0 on success, negative value on failure
2470  *
2471  * The open entry point is called when a network interface is made
2472  * active by the system (IFF_UP).  At this point all resources needed
2473  * for transmit and receive operations are allocated, the interrupt
2474  * handler is registered with the OS, the watchdog timer is started,
2475  * and the stack is notified that the interface is ready.
2476  **/
2477 static int igb_open(struct net_device *netdev)
2478 {
2479 	struct igb_adapter *adapter = netdev_priv(netdev);
2480 	struct e1000_hw *hw = &adapter->hw;
2481 	int err;
2482 	int i;
2483 
2484 	/* disallow open during test */
2485 	if (test_bit(__IGB_TESTING, &adapter->state))
2486 		return -EBUSY;
2487 
2488 	netif_carrier_off(netdev);
2489 
2490 	/* allocate transmit descriptors */
2491 	err = igb_setup_all_tx_resources(adapter);
2492 	if (err)
2493 		goto err_setup_tx;
2494 
2495 	/* allocate receive descriptors */
2496 	err = igb_setup_all_rx_resources(adapter);
2497 	if (err)
2498 		goto err_setup_rx;
2499 
2500 	igb_power_up_link(adapter);
2501 
2502 	/* before we allocate an interrupt, we must be ready to handle it.
2503 	 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
2504 	 * as soon as we call pci_request_irq, so we have to setup our
2505 	 * clean_rx handler before we do so.  */
2506 	igb_configure(adapter);
2507 
2508 	err = igb_request_irq(adapter);
2509 	if (err)
2510 		goto err_req_irq;
2511 
2512 	/* From here on the code is the same as igb_up() */
2513 	clear_bit(__IGB_DOWN, &adapter->state);
2514 
2515 	for (i = 0; i < adapter->num_q_vectors; i++)
2516 		napi_enable(&(adapter->q_vector[i]->napi));
2517 
2518 	/* Clear any pending interrupts. */
2519 	rd32(E1000_ICR);
2520 
2521 	igb_irq_enable(adapter);
2522 
2523 	/* notify VFs that reset has been completed */
2524 	if (adapter->vfs_allocated_count) {
2525 		u32 reg_data = rd32(E1000_CTRL_EXT);
2526 		reg_data |= E1000_CTRL_EXT_PFRSTD;
2527 		wr32(E1000_CTRL_EXT, reg_data);
2528 	}
2529 
2530 	netif_tx_start_all_queues(netdev);
2531 
2532 	/* start the watchdog. */
2533 	hw->mac.get_link_status = 1;
2534 	schedule_work(&adapter->watchdog_task);
2535 
2536 	return 0;
2537 
2538 err_req_irq:
2539 	igb_release_hw_control(adapter);
2540 	igb_power_down_link(adapter);
2541 	igb_free_all_rx_resources(adapter);
2542 err_setup_rx:
2543 	igb_free_all_tx_resources(adapter);
2544 err_setup_tx:
2545 	igb_reset(adapter);
2546 
2547 	return err;
2548 }
2549 
2550 /**
2551  * igb_close - Disables a network interface
2552  * @netdev: network interface device structure
2553  *
2554  * Returns 0, this is not allowed to fail
2555  *
2556  * The close entry point is called when an interface is de-activated
2557  * by the OS.  The hardware is still under the driver's control, but
2558  * needs to be disabled.  A global MAC reset is issued to stop the
2559  * hardware, and all transmit and receive resources are freed.
2560  **/
2561 static int igb_close(struct net_device *netdev)
2562 {
2563 	struct igb_adapter *adapter = netdev_priv(netdev);
2564 
2565 	WARN_ON(test_bit(__IGB_RESETTING, &adapter->state));
2566 	igb_down(adapter);
2567 
2568 	igb_free_irq(adapter);
2569 
2570 	igb_free_all_tx_resources(adapter);
2571 	igb_free_all_rx_resources(adapter);
2572 
2573 	return 0;
2574 }
2575 
2576 /**
2577  * igb_setup_tx_resources - allocate Tx resources (Descriptors)
2578  * @tx_ring: tx descriptor ring (for a specific queue) to setup
2579  *
2580  * Return 0 on success, negative on failure
2581  **/
2582 int igb_setup_tx_resources(struct igb_ring *tx_ring)
2583 {
2584 	struct device *dev = tx_ring->dev;
2585 	int orig_node = dev_to_node(dev);
2586 	int size;
2587 
2588 	size = sizeof(struct igb_tx_buffer) * tx_ring->count;
2589 	tx_ring->tx_buffer_info = vzalloc_node(size, tx_ring->numa_node);
2590 	if (!tx_ring->tx_buffer_info)
2591 		tx_ring->tx_buffer_info = vzalloc(size);
2592 	if (!tx_ring->tx_buffer_info)
2593 		goto err;
2594 
2595 	/* round up to nearest 4K */
2596 	tx_ring->size = tx_ring->count * sizeof(union e1000_adv_tx_desc);
2597 	tx_ring->size = ALIGN(tx_ring->size, 4096);
2598 
2599 	set_dev_node(dev, tx_ring->numa_node);
2600 	tx_ring->desc = dma_alloc_coherent(dev,
2601 					   tx_ring->size,
2602 					   &tx_ring->dma,
2603 					   GFP_KERNEL);
2604 	set_dev_node(dev, orig_node);
2605 	if (!tx_ring->desc)
2606 		tx_ring->desc = dma_alloc_coherent(dev,
2607 						   tx_ring->size,
2608 						   &tx_ring->dma,
2609 						   GFP_KERNEL);
2610 
2611 	if (!tx_ring->desc)
2612 		goto err;
2613 
2614 	tx_ring->next_to_use = 0;
2615 	tx_ring->next_to_clean = 0;
2616 
2617 	return 0;
2618 
2619 err:
2620 	vfree(tx_ring->tx_buffer_info);
2621 	dev_err(dev,
2622 		"Unable to allocate memory for the transmit descriptor ring\n");
2623 	return -ENOMEM;
2624 }
2625 
2626 /**
2627  * igb_setup_all_tx_resources - wrapper to allocate Tx resources
2628  *				  (Descriptors) for all queues
2629  * @adapter: board private structure
2630  *
2631  * Return 0 on success, negative on failure
2632  **/
2633 static int igb_setup_all_tx_resources(struct igb_adapter *adapter)
2634 {
2635 	struct pci_dev *pdev = adapter->pdev;
2636 	int i, err = 0;
2637 
2638 	for (i = 0; i < adapter->num_tx_queues; i++) {
2639 		err = igb_setup_tx_resources(adapter->tx_ring[i]);
2640 		if (err) {
2641 			dev_err(&pdev->dev,
2642 				"Allocation for Tx Queue %u failed\n", i);
2643 			for (i--; i >= 0; i--)
2644 				igb_free_tx_resources(adapter->tx_ring[i]);
2645 			break;
2646 		}
2647 	}
2648 
2649 	return err;
2650 }
2651 
2652 /**
2653  * igb_setup_tctl - configure the transmit control registers
2654  * @adapter: Board private structure
2655  **/
2656 void igb_setup_tctl(struct igb_adapter *adapter)
2657 {
2658 	struct e1000_hw *hw = &adapter->hw;
2659 	u32 tctl;
2660 
2661 	/* disable queue 0 which is enabled by default on 82575 and 82576 */
2662 	wr32(E1000_TXDCTL(0), 0);
2663 
2664 	/* Program the Transmit Control Register */
2665 	tctl = rd32(E1000_TCTL);
2666 	tctl &= ~E1000_TCTL_CT;
2667 	tctl |= E1000_TCTL_PSP | E1000_TCTL_RTLC |
2668 		(E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT);
2669 
2670 	igb_config_collision_dist(hw);
2671 
2672 	/* Enable transmits */
2673 	tctl |= E1000_TCTL_EN;
2674 
2675 	wr32(E1000_TCTL, tctl);
2676 }
2677 
2678 /**
2679  * igb_configure_tx_ring - Configure transmit ring after Reset
2680  * @adapter: board private structure
2681  * @ring: tx ring to configure
2682  *
2683  * Configure a transmit ring after a reset.
2684  **/
2685 void igb_configure_tx_ring(struct igb_adapter *adapter,
2686                            struct igb_ring *ring)
2687 {
2688 	struct e1000_hw *hw = &adapter->hw;
2689 	u32 txdctl = 0;
2690 	u64 tdba = ring->dma;
2691 	int reg_idx = ring->reg_idx;
2692 
2693 	/* disable the queue */
2694 	wr32(E1000_TXDCTL(reg_idx), 0);
2695 	wrfl();
2696 	mdelay(10);
2697 
2698 	wr32(E1000_TDLEN(reg_idx),
2699 	                ring->count * sizeof(union e1000_adv_tx_desc));
2700 	wr32(E1000_TDBAL(reg_idx),
2701 	                tdba & 0x00000000ffffffffULL);
2702 	wr32(E1000_TDBAH(reg_idx), tdba >> 32);
2703 
2704 	ring->tail = hw->hw_addr + E1000_TDT(reg_idx);
2705 	wr32(E1000_TDH(reg_idx), 0);
2706 	writel(0, ring->tail);
2707 
2708 	txdctl |= IGB_TX_PTHRESH;
2709 	txdctl |= IGB_TX_HTHRESH << 8;
2710 	txdctl |= IGB_TX_WTHRESH << 16;
2711 
2712 	txdctl |= E1000_TXDCTL_QUEUE_ENABLE;
2713 	wr32(E1000_TXDCTL(reg_idx), txdctl);
2714 }
2715 
2716 /**
2717  * igb_configure_tx - Configure transmit Unit after Reset
2718  * @adapter: board private structure
2719  *
2720  * Configure the Tx unit of the MAC after a reset.
2721  **/
2722 static void igb_configure_tx(struct igb_adapter *adapter)
2723 {
2724 	int i;
2725 
2726 	for (i = 0; i < adapter->num_tx_queues; i++)
2727 		igb_configure_tx_ring(adapter, adapter->tx_ring[i]);
2728 }
2729 
2730 /**
2731  * igb_setup_rx_resources - allocate Rx resources (Descriptors)
2732  * @rx_ring:    rx descriptor ring (for a specific queue) to setup
2733  *
2734  * Returns 0 on success, negative on failure
2735  **/
2736 int igb_setup_rx_resources(struct igb_ring *rx_ring)
2737 {
2738 	struct device *dev = rx_ring->dev;
2739 	int orig_node = dev_to_node(dev);
2740 	int size, desc_len;
2741 
2742 	size = sizeof(struct igb_rx_buffer) * rx_ring->count;
2743 	rx_ring->rx_buffer_info = vzalloc_node(size, rx_ring->numa_node);
2744 	if (!rx_ring->rx_buffer_info)
2745 		rx_ring->rx_buffer_info = vzalloc(size);
2746 	if (!rx_ring->rx_buffer_info)
2747 		goto err;
2748 
2749 	desc_len = sizeof(union e1000_adv_rx_desc);
2750 
2751 	/* Round up to nearest 4K */
2752 	rx_ring->size = rx_ring->count * desc_len;
2753 	rx_ring->size = ALIGN(rx_ring->size, 4096);
2754 
2755 	set_dev_node(dev, rx_ring->numa_node);
2756 	rx_ring->desc = dma_alloc_coherent(dev,
2757 					   rx_ring->size,
2758 					   &rx_ring->dma,
2759 					   GFP_KERNEL);
2760 	set_dev_node(dev, orig_node);
2761 	if (!rx_ring->desc)
2762 		rx_ring->desc = dma_alloc_coherent(dev,
2763 						   rx_ring->size,
2764 						   &rx_ring->dma,
2765 						   GFP_KERNEL);
2766 
2767 	if (!rx_ring->desc)
2768 		goto err;
2769 
2770 	rx_ring->next_to_clean = 0;
2771 	rx_ring->next_to_use = 0;
2772 
2773 	return 0;
2774 
2775 err:
2776 	vfree(rx_ring->rx_buffer_info);
2777 	rx_ring->rx_buffer_info = NULL;
2778 	dev_err(dev, "Unable to allocate memory for the receive descriptor"
2779 		" ring\n");
2780 	return -ENOMEM;
2781 }
2782 
2783 /**
2784  * igb_setup_all_rx_resources - wrapper to allocate Rx resources
2785  *				  (Descriptors) for all queues
2786  * @adapter: board private structure
2787  *
2788  * Return 0 on success, negative on failure
2789  **/
2790 static int igb_setup_all_rx_resources(struct igb_adapter *adapter)
2791 {
2792 	struct pci_dev *pdev = adapter->pdev;
2793 	int i, err = 0;
2794 
2795 	for (i = 0; i < adapter->num_rx_queues; i++) {
2796 		err = igb_setup_rx_resources(adapter->rx_ring[i]);
2797 		if (err) {
2798 			dev_err(&pdev->dev,
2799 				"Allocation for Rx Queue %u failed\n", i);
2800 			for (i--; i >= 0; i--)
2801 				igb_free_rx_resources(adapter->rx_ring[i]);
2802 			break;
2803 		}
2804 	}
2805 
2806 	return err;
2807 }
2808 
2809 /**
2810  * igb_setup_mrqc - configure the multiple receive queue control registers
2811  * @adapter: Board private structure
2812  **/
2813 static void igb_setup_mrqc(struct igb_adapter *adapter)
2814 {
2815 	struct e1000_hw *hw = &adapter->hw;
2816 	u32 mrqc, rxcsum;
2817 	u32 j, num_rx_queues, shift = 0, shift2 = 0;
2818 	union e1000_reta {
2819 		u32 dword;
2820 		u8  bytes[4];
2821 	} reta;
2822 	static const u8 rsshash[40] = {
2823 		0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2, 0x41, 0x67,
2824 		0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0, 0xd0, 0xca, 0x2b, 0xcb,
2825 		0xae, 0x7b, 0x30, 0xb4,	0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30,
2826 		0xf2, 0x0c, 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa };
2827 
2828 	/* Fill out hash function seeds */
2829 	for (j = 0; j < 10; j++) {
2830 		u32 rsskey = rsshash[(j * 4)];
2831 		rsskey |= rsshash[(j * 4) + 1] << 8;
2832 		rsskey |= rsshash[(j * 4) + 2] << 16;
2833 		rsskey |= rsshash[(j * 4) + 3] << 24;
2834 		array_wr32(E1000_RSSRK(0), j, rsskey);
2835 	}
2836 
2837 	num_rx_queues = adapter->rss_queues;
2838 
2839 	if (adapter->vfs_allocated_count) {
2840 		/* 82575 and 82576 supports 2 RSS queues for VMDq */
2841 		switch (hw->mac.type) {
2842 		case e1000_i350:
2843 		case e1000_82580:
2844 			num_rx_queues = 1;
2845 			shift = 0;
2846 			break;
2847 		case e1000_82576:
2848 			shift = 3;
2849 			num_rx_queues = 2;
2850 			break;
2851 		case e1000_82575:
2852 			shift = 2;
2853 			shift2 = 6;
2854 		default:
2855 			break;
2856 		}
2857 	} else {
2858 		if (hw->mac.type == e1000_82575)
2859 			shift = 6;
2860 	}
2861 
2862 	for (j = 0; j < (32 * 4); j++) {
2863 		reta.bytes[j & 3] = (j % num_rx_queues) << shift;
2864 		if (shift2)
2865 			reta.bytes[j & 3] |= num_rx_queues << shift2;
2866 		if ((j & 3) == 3)
2867 			wr32(E1000_RETA(j >> 2), reta.dword);
2868 	}
2869 
2870 	/*
2871 	 * Disable raw packet checksumming so that RSS hash is placed in
2872 	 * descriptor on writeback.  No need to enable TCP/UDP/IP checksum
2873 	 * offloads as they are enabled by default
2874 	 */
2875 	rxcsum = rd32(E1000_RXCSUM);
2876 	rxcsum |= E1000_RXCSUM_PCSD;
2877 
2878 	if (adapter->hw.mac.type >= e1000_82576)
2879 		/* Enable Receive Checksum Offload for SCTP */
2880 		rxcsum |= E1000_RXCSUM_CRCOFL;
2881 
2882 	/* Don't need to set TUOFL or IPOFL, they default to 1 */
2883 	wr32(E1000_RXCSUM, rxcsum);
2884 
2885 	/* If VMDq is enabled then we set the appropriate mode for that, else
2886 	 * we default to RSS so that an RSS hash is calculated per packet even
2887 	 * if we are only using one queue */
2888 	if (adapter->vfs_allocated_count) {
2889 		if (hw->mac.type > e1000_82575) {
2890 			/* Set the default pool for the PF's first queue */
2891 			u32 vtctl = rd32(E1000_VT_CTL);
2892 			vtctl &= ~(E1000_VT_CTL_DEFAULT_POOL_MASK |
2893 				   E1000_VT_CTL_DISABLE_DEF_POOL);
2894 			vtctl |= adapter->vfs_allocated_count <<
2895 				E1000_VT_CTL_DEFAULT_POOL_SHIFT;
2896 			wr32(E1000_VT_CTL, vtctl);
2897 		}
2898 		if (adapter->rss_queues > 1)
2899 			mrqc = E1000_MRQC_ENABLE_VMDQ_RSS_2Q;
2900 		else
2901 			mrqc = E1000_MRQC_ENABLE_VMDQ;
2902 	} else {
2903 		mrqc = E1000_MRQC_ENABLE_RSS_4Q;
2904 	}
2905 	igb_vmm_control(adapter);
2906 
2907 	/*
2908 	 * Generate RSS hash based on TCP port numbers and/or
2909 	 * IPv4/v6 src and dst addresses since UDP cannot be
2910 	 * hashed reliably due to IP fragmentation
2911 	 */
2912 	mrqc |= E1000_MRQC_RSS_FIELD_IPV4 |
2913 		E1000_MRQC_RSS_FIELD_IPV4_TCP |
2914 		E1000_MRQC_RSS_FIELD_IPV6 |
2915 		E1000_MRQC_RSS_FIELD_IPV6_TCP |
2916 		E1000_MRQC_RSS_FIELD_IPV6_TCP_EX;
2917 
2918 	wr32(E1000_MRQC, mrqc);
2919 }
2920 
2921 /**
2922  * igb_setup_rctl - configure the receive control registers
2923  * @adapter: Board private structure
2924  **/
2925 void igb_setup_rctl(struct igb_adapter *adapter)
2926 {
2927 	struct e1000_hw *hw = &adapter->hw;
2928 	u32 rctl;
2929 
2930 	rctl = rd32(E1000_RCTL);
2931 
2932 	rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
2933 	rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
2934 
2935 	rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_RDMTS_HALF |
2936 		(hw->mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
2937 
2938 	/*
2939 	 * enable stripping of CRC. It's unlikely this will break BMC
2940 	 * redirection as it did with e1000. Newer features require
2941 	 * that the HW strips the CRC.
2942 	 */
2943 	rctl |= E1000_RCTL_SECRC;
2944 
2945 	/* disable store bad packets and clear size bits. */
2946 	rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_SZ_256);
2947 
2948 	/* enable LPE to prevent packets larger than max_frame_size */
2949 	rctl |= E1000_RCTL_LPE;
2950 
2951 	/* disable queue 0 to prevent tail write w/o re-config */
2952 	wr32(E1000_RXDCTL(0), 0);
2953 
2954 	/* Attention!!!  For SR-IOV PF driver operations you must enable
2955 	 * queue drop for all VF and PF queues to prevent head of line blocking
2956 	 * if an un-trusted VF does not provide descriptors to hardware.
2957 	 */
2958 	if (adapter->vfs_allocated_count) {
2959 		/* set all queue drop enable bits */
2960 		wr32(E1000_QDE, ALL_QUEUES);
2961 	}
2962 
2963 	wr32(E1000_RCTL, rctl);
2964 }
2965 
2966 static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
2967                                    int vfn)
2968 {
2969 	struct e1000_hw *hw = &adapter->hw;
2970 	u32 vmolr;
2971 
2972 	/* if it isn't the PF check to see if VFs are enabled and
2973 	 * increase the size to support vlan tags */
2974 	if (vfn < adapter->vfs_allocated_count &&
2975 	    adapter->vf_data[vfn].vlans_enabled)
2976 		size += VLAN_TAG_SIZE;
2977 
2978 	vmolr = rd32(E1000_VMOLR(vfn));
2979 	vmolr &= ~E1000_VMOLR_RLPML_MASK;
2980 	vmolr |= size | E1000_VMOLR_LPE;
2981 	wr32(E1000_VMOLR(vfn), vmolr);
2982 
2983 	return 0;
2984 }
2985 
2986 /**
2987  * igb_rlpml_set - set maximum receive packet size
2988  * @adapter: board private structure
2989  *
2990  * Configure maximum receivable packet size.
2991  **/
2992 static void igb_rlpml_set(struct igb_adapter *adapter)
2993 {
2994 	u32 max_frame_size = adapter->max_frame_size;
2995 	struct e1000_hw *hw = &adapter->hw;
2996 	u16 pf_id = adapter->vfs_allocated_count;
2997 
2998 	if (pf_id) {
2999 		igb_set_vf_rlpml(adapter, max_frame_size, pf_id);
3000 		/*
3001 		 * If we're in VMDQ or SR-IOV mode, then set global RLPML
3002 		 * to our max jumbo frame size, in case we need to enable
3003 		 * jumbo frames on one of the rings later.
3004 		 * This will not pass over-length frames into the default
3005 		 * queue because it's gated by the VMOLR.RLPML.
3006 		 */
3007 		max_frame_size = MAX_JUMBO_FRAME_SIZE;
3008 	}
3009 
3010 	wr32(E1000_RLPML, max_frame_size);
3011 }
3012 
3013 static inline void igb_set_vmolr(struct igb_adapter *adapter,
3014 				 int vfn, bool aupe)
3015 {
3016 	struct e1000_hw *hw = &adapter->hw;
3017 	u32 vmolr;
3018 
3019 	/*
3020 	 * This register exists only on 82576 and newer so if we are older then
3021 	 * we should exit and do nothing
3022 	 */
3023 	if (hw->mac.type < e1000_82576)
3024 		return;
3025 
3026 	vmolr = rd32(E1000_VMOLR(vfn));
3027 	vmolr |= E1000_VMOLR_STRVLAN;      /* Strip vlan tags */
3028 	if (aupe)
3029 		vmolr |= E1000_VMOLR_AUPE;        /* Accept untagged packets */
3030 	else
3031 		vmolr &= ~(E1000_VMOLR_AUPE); /* Tagged packets ONLY */
3032 
3033 	/* clear all bits that might not be set */
3034 	vmolr &= ~(E1000_VMOLR_BAM | E1000_VMOLR_RSSE);
3035 
3036 	if (adapter->rss_queues > 1 && vfn == adapter->vfs_allocated_count)
3037 		vmolr |= E1000_VMOLR_RSSE; /* enable RSS */
3038 	/*
3039 	 * for VMDq only allow the VFs and pool 0 to accept broadcast and
3040 	 * multicast packets
3041 	 */
3042 	if (vfn <= adapter->vfs_allocated_count)
3043 		vmolr |= E1000_VMOLR_BAM;	   /* Accept broadcast */
3044 
3045 	wr32(E1000_VMOLR(vfn), vmolr);
3046 }
3047 
3048 /**
3049  * igb_configure_rx_ring - Configure a receive ring after Reset
3050  * @adapter: board private structure
3051  * @ring: receive ring to be configured
3052  *
3053  * Configure the Rx unit of the MAC after a reset.
3054  **/
3055 void igb_configure_rx_ring(struct igb_adapter *adapter,
3056                            struct igb_ring *ring)
3057 {
3058 	struct e1000_hw *hw = &adapter->hw;
3059 	u64 rdba = ring->dma;
3060 	int reg_idx = ring->reg_idx;
3061 	u32 srrctl = 0, rxdctl = 0;
3062 
3063 	/* disable the queue */
3064 	wr32(E1000_RXDCTL(reg_idx), 0);
3065 
3066 	/* Set DMA base address registers */
3067 	wr32(E1000_RDBAL(reg_idx),
3068 	     rdba & 0x00000000ffffffffULL);
3069 	wr32(E1000_RDBAH(reg_idx), rdba >> 32);
3070 	wr32(E1000_RDLEN(reg_idx),
3071 	               ring->count * sizeof(union e1000_adv_rx_desc));
3072 
3073 	/* initialize head and tail */
3074 	ring->tail = hw->hw_addr + E1000_RDT(reg_idx);
3075 	wr32(E1000_RDH(reg_idx), 0);
3076 	writel(0, ring->tail);
3077 
3078 	/* set descriptor configuration */
3079 	srrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;
3080 #if (PAGE_SIZE / 2) > IGB_RXBUFFER_16384
3081 	srrctl |= IGB_RXBUFFER_16384 >> E1000_SRRCTL_BSIZEPKT_SHIFT;
3082 #else
3083 	srrctl |= (PAGE_SIZE / 2) >> E1000_SRRCTL_BSIZEPKT_SHIFT;
3084 #endif
3085 	srrctl |= E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
3086 	if (hw->mac.type >= e1000_82580)
3087 		srrctl |= E1000_SRRCTL_TIMESTAMP;
3088 	/* Only set Drop Enable if we are supporting multiple queues */
3089 	if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1)
3090 		srrctl |= E1000_SRRCTL_DROP_EN;
3091 
3092 	wr32(E1000_SRRCTL(reg_idx), srrctl);
3093 
3094 	/* set filtering for VMDQ pools */
3095 	igb_set_vmolr(adapter, reg_idx & 0x7, true);
3096 
3097 	rxdctl |= IGB_RX_PTHRESH;
3098 	rxdctl |= IGB_RX_HTHRESH << 8;
3099 	rxdctl |= IGB_RX_WTHRESH << 16;
3100 
3101 	/* enable receive descriptor fetching */
3102 	rxdctl |= E1000_RXDCTL_QUEUE_ENABLE;
3103 	wr32(E1000_RXDCTL(reg_idx), rxdctl);
3104 }
3105 
3106 /**
3107  * igb_configure_rx - Configure receive Unit after Reset
3108  * @adapter: board private structure
3109  *
3110  * Configure the Rx unit of the MAC after a reset.
3111  **/
3112 static void igb_configure_rx(struct igb_adapter *adapter)
3113 {
3114 	int i;
3115 
3116 	/* set UTA to appropriate mode */
3117 	igb_set_uta(adapter);
3118 
3119 	/* set the correct pool for the PF default MAC address in entry 0 */
3120 	igb_rar_set_qsel(adapter, adapter->hw.mac.addr, 0,
3121 	                 adapter->vfs_allocated_count);
3122 
3123 	/* Setup the HW Rx Head and Tail Descriptor Pointers and
3124 	 * the Base and Length of the Rx Descriptor Ring */
3125 	for (i = 0; i < adapter->num_rx_queues; i++)
3126 		igb_configure_rx_ring(adapter, adapter->rx_ring[i]);
3127 }
3128 
3129 /**
3130  * igb_free_tx_resources - Free Tx Resources per Queue
3131  * @tx_ring: Tx descriptor ring for a specific queue
3132  *
3133  * Free all transmit software resources
3134  **/
3135 void igb_free_tx_resources(struct igb_ring *tx_ring)
3136 {
3137 	igb_clean_tx_ring(tx_ring);
3138 
3139 	vfree(tx_ring->tx_buffer_info);
3140 	tx_ring->tx_buffer_info = NULL;
3141 
3142 	/* if not set, then don't free */
3143 	if (!tx_ring->desc)
3144 		return;
3145 
3146 	dma_free_coherent(tx_ring->dev, tx_ring->size,
3147 			  tx_ring->desc, tx_ring->dma);
3148 
3149 	tx_ring->desc = NULL;
3150 }
3151 
3152 /**
3153  * igb_free_all_tx_resources - Free Tx Resources for All Queues
3154  * @adapter: board private structure
3155  *
3156  * Free all transmit software resources
3157  **/
3158 static void igb_free_all_tx_resources(struct igb_adapter *adapter)
3159 {
3160 	int i;
3161 
3162 	for (i = 0; i < adapter->num_tx_queues; i++)
3163 		igb_free_tx_resources(adapter->tx_ring[i]);
3164 }
3165 
3166 void igb_unmap_and_free_tx_resource(struct igb_ring *ring,
3167 				    struct igb_tx_buffer *tx_buffer)
3168 {
3169 	if (tx_buffer->skb) {
3170 		dev_kfree_skb_any(tx_buffer->skb);
3171 		if (tx_buffer->dma)
3172 			dma_unmap_single(ring->dev,
3173 					 tx_buffer->dma,
3174 					 tx_buffer->length,
3175 					 DMA_TO_DEVICE);
3176 	} else if (tx_buffer->dma) {
3177 		dma_unmap_page(ring->dev,
3178 			       tx_buffer->dma,
3179 			       tx_buffer->length,
3180 			       DMA_TO_DEVICE);
3181 	}
3182 	tx_buffer->next_to_watch = NULL;
3183 	tx_buffer->skb = NULL;
3184 	tx_buffer->dma = 0;
3185 	/* buffer_info must be completely set up in the transmit path */
3186 }
3187 
3188 /**
3189  * igb_clean_tx_ring - Free Tx Buffers
3190  * @tx_ring: ring to be cleaned
3191  **/
3192 static void igb_clean_tx_ring(struct igb_ring *tx_ring)
3193 {
3194 	struct igb_tx_buffer *buffer_info;
3195 	unsigned long size;
3196 	u16 i;
3197 
3198 	if (!tx_ring->tx_buffer_info)
3199 		return;
3200 	/* Free all the Tx ring sk_buffs */
3201 
3202 	for (i = 0; i < tx_ring->count; i++) {
3203 		buffer_info = &tx_ring->tx_buffer_info[i];
3204 		igb_unmap_and_free_tx_resource(tx_ring, buffer_info);
3205 	}
3206 
3207 	size = sizeof(struct igb_tx_buffer) * tx_ring->count;
3208 	memset(tx_ring->tx_buffer_info, 0, size);
3209 
3210 	/* Zero out the descriptor ring */
3211 	memset(tx_ring->desc, 0, tx_ring->size);
3212 
3213 	tx_ring->next_to_use = 0;
3214 	tx_ring->next_to_clean = 0;
3215 }
3216 
3217 /**
3218  * igb_clean_all_tx_rings - Free Tx Buffers for all queues
3219  * @adapter: board private structure
3220  **/
3221 static void igb_clean_all_tx_rings(struct igb_adapter *adapter)
3222 {
3223 	int i;
3224 
3225 	for (i = 0; i < adapter->num_tx_queues; i++)
3226 		igb_clean_tx_ring(adapter->tx_ring[i]);
3227 }
3228 
3229 /**
3230  * igb_free_rx_resources - Free Rx Resources
3231  * @rx_ring: ring to clean the resources from
3232  *
3233  * Free all receive software resources
3234  **/
3235 void igb_free_rx_resources(struct igb_ring *rx_ring)
3236 {
3237 	igb_clean_rx_ring(rx_ring);
3238 
3239 	vfree(rx_ring->rx_buffer_info);
3240 	rx_ring->rx_buffer_info = NULL;
3241 
3242 	/* if not set, then don't free */
3243 	if (!rx_ring->desc)
3244 		return;
3245 
3246 	dma_free_coherent(rx_ring->dev, rx_ring->size,
3247 			  rx_ring->desc, rx_ring->dma);
3248 
3249 	rx_ring->desc = NULL;
3250 }
3251 
3252 /**
3253  * igb_free_all_rx_resources - Free Rx Resources for All Queues
3254  * @adapter: board private structure
3255  *
3256  * Free all receive software resources
3257  **/
3258 static void igb_free_all_rx_resources(struct igb_adapter *adapter)
3259 {
3260 	int i;
3261 
3262 	for (i = 0; i < adapter->num_rx_queues; i++)
3263 		igb_free_rx_resources(adapter->rx_ring[i]);
3264 }
3265 
3266 /**
3267  * igb_clean_rx_ring - Free Rx Buffers per Queue
3268  * @rx_ring: ring to free buffers from
3269  **/
3270 static void igb_clean_rx_ring(struct igb_ring *rx_ring)
3271 {
3272 	unsigned long size;
3273 	u16 i;
3274 
3275 	if (!rx_ring->rx_buffer_info)
3276 		return;
3277 
3278 	/* Free all the Rx ring sk_buffs */
3279 	for (i = 0; i < rx_ring->count; i++) {
3280 		struct igb_rx_buffer *buffer_info = &rx_ring->rx_buffer_info[i];
3281 		if (buffer_info->dma) {
3282 			dma_unmap_single(rx_ring->dev,
3283 			                 buffer_info->dma,
3284 					 IGB_RX_HDR_LEN,
3285 					 DMA_FROM_DEVICE);
3286 			buffer_info->dma = 0;
3287 		}
3288 
3289 		if (buffer_info->skb) {
3290 			dev_kfree_skb(buffer_info->skb);
3291 			buffer_info->skb = NULL;
3292 		}
3293 		if (buffer_info->page_dma) {
3294 			dma_unmap_page(rx_ring->dev,
3295 			               buffer_info->page_dma,
3296 				       PAGE_SIZE / 2,
3297 				       DMA_FROM_DEVICE);
3298 			buffer_info->page_dma = 0;
3299 		}
3300 		if (buffer_info->page) {
3301 			put_page(buffer_info->page);
3302 			buffer_info->page = NULL;
3303 			buffer_info->page_offset = 0;
3304 		}
3305 	}
3306 
3307 	size = sizeof(struct igb_rx_buffer) * rx_ring->count;
3308 	memset(rx_ring->rx_buffer_info, 0, size);
3309 
3310 	/* Zero out the descriptor ring */
3311 	memset(rx_ring->desc, 0, rx_ring->size);
3312 
3313 	rx_ring->next_to_clean = 0;
3314 	rx_ring->next_to_use = 0;
3315 }
3316 
3317 /**
3318  * igb_clean_all_rx_rings - Free Rx Buffers for all queues
3319  * @adapter: board private structure
3320  **/
3321 static void igb_clean_all_rx_rings(struct igb_adapter *adapter)
3322 {
3323 	int i;
3324 
3325 	for (i = 0; i < adapter->num_rx_queues; i++)
3326 		igb_clean_rx_ring(adapter->rx_ring[i]);
3327 }
3328 
3329 /**
3330  * igb_set_mac - Change the Ethernet Address of the NIC
3331  * @netdev: network interface device structure
3332  * @p: pointer to an address structure
3333  *
3334  * Returns 0 on success, negative on failure
3335  **/
3336 static int igb_set_mac(struct net_device *netdev, void *p)
3337 {
3338 	struct igb_adapter *adapter = netdev_priv(netdev);
3339 	struct e1000_hw *hw = &adapter->hw;
3340 	struct sockaddr *addr = p;
3341 
3342 	if (!is_valid_ether_addr(addr->sa_data))
3343 		return -EADDRNOTAVAIL;
3344 
3345 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
3346 	memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
3347 
3348 	/* set the correct pool for the new PF MAC address in entry 0 */
3349 	igb_rar_set_qsel(adapter, hw->mac.addr, 0,
3350 	                 adapter->vfs_allocated_count);
3351 
3352 	return 0;
3353 }
3354 
3355 /**
3356  * igb_write_mc_addr_list - write multicast addresses to MTA
3357  * @netdev: network interface device structure
3358  *
3359  * Writes multicast address list to the MTA hash table.
3360  * Returns: -ENOMEM on failure
3361  *                0 on no addresses written
3362  *                X on writing X addresses to MTA
3363  **/
3364 static int igb_write_mc_addr_list(struct net_device *netdev)
3365 {
3366 	struct igb_adapter *adapter = netdev_priv(netdev);
3367 	struct e1000_hw *hw = &adapter->hw;
3368 	struct netdev_hw_addr *ha;
3369 	u8  *mta_list;
3370 	int i;
3371 
3372 	if (netdev_mc_empty(netdev)) {
3373 		/* nothing to program, so clear mc list */
3374 		igb_update_mc_addr_list(hw, NULL, 0);
3375 		igb_restore_vf_multicasts(adapter);
3376 		return 0;
3377 	}
3378 
3379 	mta_list = kzalloc(netdev_mc_count(netdev) * 6, GFP_ATOMIC);
3380 	if (!mta_list)
3381 		return -ENOMEM;
3382 
3383 	/* The shared function expects a packed array of only addresses. */
3384 	i = 0;
3385 	netdev_for_each_mc_addr(ha, netdev)
3386 		memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
3387 
3388 	igb_update_mc_addr_list(hw, mta_list, i);
3389 	kfree(mta_list);
3390 
3391 	return netdev_mc_count(netdev);
3392 }
3393 
3394 /**
3395  * igb_write_uc_addr_list - write unicast addresses to RAR table
3396  * @netdev: network interface device structure
3397  *
3398  * Writes unicast address list to the RAR table.
3399  * Returns: -ENOMEM on failure/insufficient address space
3400  *                0 on no addresses written
3401  *                X on writing X addresses to the RAR table
3402  **/
3403 static int igb_write_uc_addr_list(struct net_device *netdev)
3404 {
3405 	struct igb_adapter *adapter = netdev_priv(netdev);
3406 	struct e1000_hw *hw = &adapter->hw;
3407 	unsigned int vfn = adapter->vfs_allocated_count;
3408 	unsigned int rar_entries = hw->mac.rar_entry_count - (vfn + 1);
3409 	int count = 0;
3410 
3411 	/* return ENOMEM indicating insufficient memory for addresses */
3412 	if (netdev_uc_count(netdev) > rar_entries)
3413 		return -ENOMEM;
3414 
3415 	if (!netdev_uc_empty(netdev) && rar_entries) {
3416 		struct netdev_hw_addr *ha;
3417 
3418 		netdev_for_each_uc_addr(ha, netdev) {
3419 			if (!rar_entries)
3420 				break;
3421 			igb_rar_set_qsel(adapter, ha->addr,
3422 			                 rar_entries--,
3423 			                 vfn);
3424 			count++;
3425 		}
3426 	}
3427 	/* write the addresses in reverse order to avoid write combining */
3428 	for (; rar_entries > 0 ; rar_entries--) {
3429 		wr32(E1000_RAH(rar_entries), 0);
3430 		wr32(E1000_RAL(rar_entries), 0);
3431 	}
3432 	wrfl();
3433 
3434 	return count;
3435 }
3436 
3437 /**
3438  * igb_set_rx_mode - Secondary Unicast, Multicast and Promiscuous mode set
3439  * @netdev: network interface device structure
3440  *
3441  * The set_rx_mode entry point is called whenever the unicast or multicast
3442  * address lists or the network interface flags are updated.  This routine is
3443  * responsible for configuring the hardware for proper unicast, multicast,
3444  * promiscuous mode, and all-multi behavior.
3445  **/
3446 static void igb_set_rx_mode(struct net_device *netdev)
3447 {
3448 	struct igb_adapter *adapter = netdev_priv(netdev);
3449 	struct e1000_hw *hw = &adapter->hw;
3450 	unsigned int vfn = adapter->vfs_allocated_count;
3451 	u32 rctl, vmolr = 0;
3452 	int count;
3453 
3454 	/* Check for Promiscuous and All Multicast modes */
3455 	rctl = rd32(E1000_RCTL);
3456 
3457 	/* clear the effected bits */
3458 	rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE | E1000_RCTL_VFE);
3459 
3460 	if (netdev->flags & IFF_PROMISC) {
3461 		rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
3462 		vmolr |= (E1000_VMOLR_ROPE | E1000_VMOLR_MPME);
3463 	} else {
3464 		if (netdev->flags & IFF_ALLMULTI) {
3465 			rctl |= E1000_RCTL_MPE;
3466 			vmolr |= E1000_VMOLR_MPME;
3467 		} else {
3468 			/*
3469 			 * Write addresses to the MTA, if the attempt fails
3470 			 * then we should just turn on promiscuous mode so
3471 			 * that we can at least receive multicast traffic
3472 			 */
3473 			count = igb_write_mc_addr_list(netdev);
3474 			if (count < 0) {
3475 				rctl |= E1000_RCTL_MPE;
3476 				vmolr |= E1000_VMOLR_MPME;
3477 			} else if (count) {
3478 				vmolr |= E1000_VMOLR_ROMPE;
3479 			}
3480 		}
3481 		/*
3482 		 * Write addresses to available RAR registers, if there is not
3483 		 * sufficient space to store all the addresses then enable
3484 		 * unicast promiscuous mode
3485 		 */
3486 		count = igb_write_uc_addr_list(netdev);
3487 		if (count < 0) {
3488 			rctl |= E1000_RCTL_UPE;
3489 			vmolr |= E1000_VMOLR_ROPE;
3490 		}
3491 		rctl |= E1000_RCTL_VFE;
3492 	}
3493 	wr32(E1000_RCTL, rctl);
3494 
3495 	/*
3496 	 * In order to support SR-IOV and eventually VMDq it is necessary to set
3497 	 * the VMOLR to enable the appropriate modes.  Without this workaround
3498 	 * we will have issues with VLAN tag stripping not being done for frames
3499 	 * that are only arriving because we are the default pool
3500 	 */
3501 	if (hw->mac.type < e1000_82576)
3502 		return;
3503 
3504 	vmolr |= rd32(E1000_VMOLR(vfn)) &
3505 	         ~(E1000_VMOLR_ROPE | E1000_VMOLR_MPME | E1000_VMOLR_ROMPE);
3506 	wr32(E1000_VMOLR(vfn), vmolr);
3507 	igb_restore_vf_multicasts(adapter);
3508 }
3509 
3510 static void igb_check_wvbr(struct igb_adapter *adapter)
3511 {
3512 	struct e1000_hw *hw = &adapter->hw;
3513 	u32 wvbr = 0;
3514 
3515 	switch (hw->mac.type) {
3516 	case e1000_82576:
3517 	case e1000_i350:
3518 		if (!(wvbr = rd32(E1000_WVBR)))
3519 			return;
3520 		break;
3521 	default:
3522 		break;
3523 	}
3524 
3525 	adapter->wvbr |= wvbr;
3526 }
3527 
3528 #define IGB_STAGGERED_QUEUE_OFFSET 8
3529 
3530 static void igb_spoof_check(struct igb_adapter *adapter)
3531 {
3532 	int j;
3533 
3534 	if (!adapter->wvbr)
3535 		return;
3536 
3537 	for(j = 0; j < adapter->vfs_allocated_count; j++) {
3538 		if (adapter->wvbr & (1 << j) ||
3539 		    adapter->wvbr & (1 << (j + IGB_STAGGERED_QUEUE_OFFSET))) {
3540 			dev_warn(&adapter->pdev->dev,
3541 				"Spoof event(s) detected on VF %d\n", j);
3542 			adapter->wvbr &=
3543 				~((1 << j) |
3544 				  (1 << (j + IGB_STAGGERED_QUEUE_OFFSET)));
3545 		}
3546 	}
3547 }
3548 
3549 /* Need to wait a few seconds after link up to get diagnostic information from
3550  * the phy */
3551 static void igb_update_phy_info(unsigned long data)
3552 {
3553 	struct igb_adapter *adapter = (struct igb_adapter *) data;
3554 	igb_get_phy_info(&adapter->hw);
3555 }
3556 
3557 /**
3558  * igb_has_link - check shared code for link and determine up/down
3559  * @adapter: pointer to driver private info
3560  **/
3561 bool igb_has_link(struct igb_adapter *adapter)
3562 {
3563 	struct e1000_hw *hw = &adapter->hw;
3564 	bool link_active = false;
3565 	s32 ret_val = 0;
3566 
3567 	/* get_link_status is set on LSC (link status) interrupt or
3568 	 * rx sequence error interrupt.  get_link_status will stay
3569 	 * false until the e1000_check_for_link establishes link
3570 	 * for copper adapters ONLY
3571 	 */
3572 	switch (hw->phy.media_type) {
3573 	case e1000_media_type_copper:
3574 		if (hw->mac.get_link_status) {
3575 			ret_val = hw->mac.ops.check_for_link(hw);
3576 			link_active = !hw->mac.get_link_status;
3577 		} else {
3578 			link_active = true;
3579 		}
3580 		break;
3581 	case e1000_media_type_internal_serdes:
3582 		ret_val = hw->mac.ops.check_for_link(hw);
3583 		link_active = hw->mac.serdes_has_link;
3584 		break;
3585 	default:
3586 	case e1000_media_type_unknown:
3587 		break;
3588 	}
3589 
3590 	return link_active;
3591 }
3592 
3593 static bool igb_thermal_sensor_event(struct e1000_hw *hw, u32 event)
3594 {
3595 	bool ret = false;
3596 	u32 ctrl_ext, thstat;
3597 
3598 	/* check for thermal sensor event on i350, copper only */
3599 	if (hw->mac.type == e1000_i350) {
3600 		thstat = rd32(E1000_THSTAT);
3601 		ctrl_ext = rd32(E1000_CTRL_EXT);
3602 
3603 		if ((hw->phy.media_type == e1000_media_type_copper) &&
3604 		    !(ctrl_ext & E1000_CTRL_EXT_LINK_MODE_SGMII)) {
3605 			ret = !!(thstat & event);
3606 		}
3607 	}
3608 
3609 	return ret;
3610 }
3611 
3612 /**
3613  * igb_watchdog - Timer Call-back
3614  * @data: pointer to adapter cast into an unsigned long
3615  **/
3616 static void igb_watchdog(unsigned long data)
3617 {
3618 	struct igb_adapter *adapter = (struct igb_adapter *)data;
3619 	/* Do the rest outside of interrupt context */
3620 	schedule_work(&adapter->watchdog_task);
3621 }
3622 
3623 static void igb_watchdog_task(struct work_struct *work)
3624 {
3625 	struct igb_adapter *adapter = container_of(work,
3626 	                                           struct igb_adapter,
3627                                                    watchdog_task);
3628 	struct e1000_hw *hw = &adapter->hw;
3629 	struct net_device *netdev = adapter->netdev;
3630 	u32 link;
3631 	int i;
3632 
3633 	link = igb_has_link(adapter);
3634 	if (link) {
3635 		if (!netif_carrier_ok(netdev)) {
3636 			u32 ctrl;
3637 			hw->mac.ops.get_speed_and_duplex(hw,
3638 			                                 &adapter->link_speed,
3639 			                                 &adapter->link_duplex);
3640 
3641 			ctrl = rd32(E1000_CTRL);
3642 			/* Links status message must follow this format */
3643 			printk(KERN_INFO "igb: %s NIC Link is Up %d Mbps %s, "
3644 				 "Flow Control: %s\n",
3645 			       netdev->name,
3646 			       adapter->link_speed,
3647 			       adapter->link_duplex == FULL_DUPLEX ?
3648 				 "Full Duplex" : "Half Duplex",
3649 			       ((ctrl & E1000_CTRL_TFCE) &&
3650 			        (ctrl & E1000_CTRL_RFCE)) ? "RX/TX" :
3651 			       ((ctrl & E1000_CTRL_RFCE) ?  "RX" :
3652 			       ((ctrl & E1000_CTRL_TFCE) ?  "TX" : "None")));
3653 
3654 			/* check for thermal sensor event */
3655 			if (igb_thermal_sensor_event(hw, E1000_THSTAT_LINK_THROTTLE)) {
3656 				printk(KERN_INFO "igb: %s The network adapter "
3657 						 "link speed was downshifted "
3658 						 "because it overheated.\n",
3659 						 netdev->name);
3660 			}
3661 
3662 			/* adjust timeout factor according to speed/duplex */
3663 			adapter->tx_timeout_factor = 1;
3664 			switch (adapter->link_speed) {
3665 			case SPEED_10:
3666 				adapter->tx_timeout_factor = 14;
3667 				break;
3668 			case SPEED_100:
3669 				/* maybe add some timeout factor ? */
3670 				break;
3671 			}
3672 
3673 			netif_carrier_on(netdev);
3674 
3675 			igb_ping_all_vfs(adapter);
3676 			igb_check_vf_rate_limit(adapter);
3677 
3678 			/* link state has changed, schedule phy info update */
3679 			if (!test_bit(__IGB_DOWN, &adapter->state))
3680 				mod_timer(&adapter->phy_info_timer,
3681 					  round_jiffies(jiffies + 2 * HZ));
3682 		}
3683 	} else {
3684 		if (netif_carrier_ok(netdev)) {
3685 			adapter->link_speed = 0;
3686 			adapter->link_duplex = 0;
3687 
3688 			/* check for thermal sensor event */
3689 			if (igb_thermal_sensor_event(hw, E1000_THSTAT_PWR_DOWN)) {
3690 				printk(KERN_ERR "igb: %s The network adapter "
3691 						"was stopped because it "
3692 						"overheated.\n",
3693 						netdev->name);
3694 			}
3695 
3696 			/* Links status message must follow this format */
3697 			printk(KERN_INFO "igb: %s NIC Link is Down\n",
3698 			       netdev->name);
3699 			netif_carrier_off(netdev);
3700 
3701 			igb_ping_all_vfs(adapter);
3702 
3703 			/* link state has changed, schedule phy info update */
3704 			if (!test_bit(__IGB_DOWN, &adapter->state))
3705 				mod_timer(&adapter->phy_info_timer,
3706 					  round_jiffies(jiffies + 2 * HZ));
3707 		}
3708 	}
3709 
3710 	spin_lock(&adapter->stats64_lock);
3711 	igb_update_stats(adapter, &adapter->stats64);
3712 	spin_unlock(&adapter->stats64_lock);
3713 
3714 	for (i = 0; i < adapter->num_tx_queues; i++) {
3715 		struct igb_ring *tx_ring = adapter->tx_ring[i];
3716 		if (!netif_carrier_ok(netdev)) {
3717 			/* We've lost link, so the controller stops DMA,
3718 			 * but we've got queued Tx work that's never going
3719 			 * to get done, so reset controller to flush Tx.
3720 			 * (Do the reset outside of interrupt context). */
3721 			if (igb_desc_unused(tx_ring) + 1 < tx_ring->count) {
3722 				adapter->tx_timeout_count++;
3723 				schedule_work(&adapter->reset_task);
3724 				/* return immediately since reset is imminent */
3725 				return;
3726 			}
3727 		}
3728 
3729 		/* Force detection of hung controller every watchdog period */
3730 		set_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags);
3731 	}
3732 
3733 	/* Cause software interrupt to ensure rx ring is cleaned */
3734 	if (adapter->msix_entries) {
3735 		u32 eics = 0;
3736 		for (i = 0; i < adapter->num_q_vectors; i++)
3737 			eics |= adapter->q_vector[i]->eims_value;
3738 		wr32(E1000_EICS, eics);
3739 	} else {
3740 		wr32(E1000_ICS, E1000_ICS_RXDMT0);
3741 	}
3742 
3743 	igb_spoof_check(adapter);
3744 
3745 	/* Reset the timer */
3746 	if (!test_bit(__IGB_DOWN, &adapter->state))
3747 		mod_timer(&adapter->watchdog_timer,
3748 			  round_jiffies(jiffies + 2 * HZ));
3749 }
3750 
3751 enum latency_range {
3752 	lowest_latency = 0,
3753 	low_latency = 1,
3754 	bulk_latency = 2,
3755 	latency_invalid = 255
3756 };
3757 
3758 /**
3759  * igb_update_ring_itr - update the dynamic ITR value based on packet size
3760  *
3761  *      Stores a new ITR value based on strictly on packet size.  This
3762  *      algorithm is less sophisticated than that used in igb_update_itr,
3763  *      due to the difficulty of synchronizing statistics across multiple
3764  *      receive rings.  The divisors and thresholds used by this function
3765  *      were determined based on theoretical maximum wire speed and testing
3766  *      data, in order to minimize response time while increasing bulk
3767  *      throughput.
3768  *      This functionality is controlled by the InterruptThrottleRate module
3769  *      parameter (see igb_param.c)
3770  *      NOTE:  This function is called only when operating in a multiqueue
3771  *             receive environment.
3772  * @q_vector: pointer to q_vector
3773  **/
3774 static void igb_update_ring_itr(struct igb_q_vector *q_vector)
3775 {
3776 	int new_val = q_vector->itr_val;
3777 	int avg_wire_size = 0;
3778 	struct igb_adapter *adapter = q_vector->adapter;
3779 	unsigned int packets;
3780 
3781 	/* For non-gigabit speeds, just fix the interrupt rate at 4000
3782 	 * ints/sec - ITR timer value of 120 ticks.
3783 	 */
3784 	if (adapter->link_speed != SPEED_1000) {
3785 		new_val = IGB_4K_ITR;
3786 		goto set_itr_val;
3787 	}
3788 
3789 	packets = q_vector->rx.total_packets;
3790 	if (packets)
3791 		avg_wire_size = q_vector->rx.total_bytes / packets;
3792 
3793 	packets = q_vector->tx.total_packets;
3794 	if (packets)
3795 		avg_wire_size = max_t(u32, avg_wire_size,
3796 				      q_vector->tx.total_bytes / packets);
3797 
3798 	/* if avg_wire_size isn't set no work was done */
3799 	if (!avg_wire_size)
3800 		goto clear_counts;
3801 
3802 	/* Add 24 bytes to size to account for CRC, preamble, and gap */
3803 	avg_wire_size += 24;
3804 
3805 	/* Don't starve jumbo frames */
3806 	avg_wire_size = min(avg_wire_size, 3000);
3807 
3808 	/* Give a little boost to mid-size frames */
3809 	if ((avg_wire_size > 300) && (avg_wire_size < 1200))
3810 		new_val = avg_wire_size / 3;
3811 	else
3812 		new_val = avg_wire_size / 2;
3813 
3814 	/* conservative mode (itr 3) eliminates the lowest_latency setting */
3815 	if (new_val < IGB_20K_ITR &&
3816 	    ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||
3817 	     (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))
3818 		new_val = IGB_20K_ITR;
3819 
3820 set_itr_val:
3821 	if (new_val != q_vector->itr_val) {
3822 		q_vector->itr_val = new_val;
3823 		q_vector->set_itr = 1;
3824 	}
3825 clear_counts:
3826 	q_vector->rx.total_bytes = 0;
3827 	q_vector->rx.total_packets = 0;
3828 	q_vector->tx.total_bytes = 0;
3829 	q_vector->tx.total_packets = 0;
3830 }
3831 
3832 /**
3833  * igb_update_itr - update the dynamic ITR value based on statistics
3834  *      Stores a new ITR value based on packets and byte
3835  *      counts during the last interrupt.  The advantage of per interrupt
3836  *      computation is faster updates and more accurate ITR for the current
3837  *      traffic pattern.  Constants in this function were computed
3838  *      based on theoretical maximum wire speed and thresholds were set based
3839  *      on testing data as well as attempting to minimize response time
3840  *      while increasing bulk throughput.
3841  *      this functionality is controlled by the InterruptThrottleRate module
3842  *      parameter (see igb_param.c)
3843  *      NOTE:  These calculations are only valid when operating in a single-
3844  *             queue environment.
3845  * @q_vector: pointer to q_vector
3846  * @ring_container: ring info to update the itr for
3847  **/
3848 static void igb_update_itr(struct igb_q_vector *q_vector,
3849 			   struct igb_ring_container *ring_container)
3850 {
3851 	unsigned int packets = ring_container->total_packets;
3852 	unsigned int bytes = ring_container->total_bytes;
3853 	u8 itrval = ring_container->itr;
3854 
3855 	/* no packets, exit with status unchanged */
3856 	if (packets == 0)
3857 		return;
3858 
3859 	switch (itrval) {
3860 	case lowest_latency:
3861 		/* handle TSO and jumbo frames */
3862 		if (bytes/packets > 8000)
3863 			itrval = bulk_latency;
3864 		else if ((packets < 5) && (bytes > 512))
3865 			itrval = low_latency;
3866 		break;
3867 	case low_latency:  /* 50 usec aka 20000 ints/s */
3868 		if (bytes > 10000) {
3869 			/* this if handles the TSO accounting */
3870 			if (bytes/packets > 8000) {
3871 				itrval = bulk_latency;
3872 			} else if ((packets < 10) || ((bytes/packets) > 1200)) {
3873 				itrval = bulk_latency;
3874 			} else if ((packets > 35)) {
3875 				itrval = lowest_latency;
3876 			}
3877 		} else if (bytes/packets > 2000) {
3878 			itrval = bulk_latency;
3879 		} else if (packets <= 2 && bytes < 512) {
3880 			itrval = lowest_latency;
3881 		}
3882 		break;
3883 	case bulk_latency: /* 250 usec aka 4000 ints/s */
3884 		if (bytes > 25000) {
3885 			if (packets > 35)
3886 				itrval = low_latency;
3887 		} else if (bytes < 1500) {
3888 			itrval = low_latency;
3889 		}
3890 		break;
3891 	}
3892 
3893 	/* clear work counters since we have the values we need */
3894 	ring_container->total_bytes = 0;
3895 	ring_container->total_packets = 0;
3896 
3897 	/* write updated itr to ring container */
3898 	ring_container->itr = itrval;
3899 }
3900 
3901 static void igb_set_itr(struct igb_q_vector *q_vector)
3902 {
3903 	struct igb_adapter *adapter = q_vector->adapter;
3904 	u32 new_itr = q_vector->itr_val;
3905 	u8 current_itr = 0;
3906 
3907 	/* for non-gigabit speeds, just fix the interrupt rate at 4000 */
3908 	if (adapter->link_speed != SPEED_1000) {
3909 		current_itr = 0;
3910 		new_itr = IGB_4K_ITR;
3911 		goto set_itr_now;
3912 	}
3913 
3914 	igb_update_itr(q_vector, &q_vector->tx);
3915 	igb_update_itr(q_vector, &q_vector->rx);
3916 
3917 	current_itr = max(q_vector->rx.itr, q_vector->tx.itr);
3918 
3919 	/* conservative mode (itr 3) eliminates the lowest_latency setting */
3920 	if (current_itr == lowest_latency &&
3921 	    ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||
3922 	     (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))
3923 		current_itr = low_latency;
3924 
3925 	switch (current_itr) {
3926 	/* counts and packets in update_itr are dependent on these numbers */
3927 	case lowest_latency:
3928 		new_itr = IGB_70K_ITR; /* 70,000 ints/sec */
3929 		break;
3930 	case low_latency:
3931 		new_itr = IGB_20K_ITR; /* 20,000 ints/sec */
3932 		break;
3933 	case bulk_latency:
3934 		new_itr = IGB_4K_ITR;  /* 4,000 ints/sec */
3935 		break;
3936 	default:
3937 		break;
3938 	}
3939 
3940 set_itr_now:
3941 	if (new_itr != q_vector->itr_val) {
3942 		/* this attempts to bias the interrupt rate towards Bulk
3943 		 * by adding intermediate steps when interrupt rate is
3944 		 * increasing */
3945 		new_itr = new_itr > q_vector->itr_val ?
3946 		             max((new_itr * q_vector->itr_val) /
3947 		                 (new_itr + (q_vector->itr_val >> 2)),
3948 				 new_itr) :
3949 			     new_itr;
3950 		/* Don't write the value here; it resets the adapter's
3951 		 * internal timer, and causes us to delay far longer than
3952 		 * we should between interrupts.  Instead, we write the ITR
3953 		 * value at the beginning of the next interrupt so the timing
3954 		 * ends up being correct.
3955 		 */
3956 		q_vector->itr_val = new_itr;
3957 		q_vector->set_itr = 1;
3958 	}
3959 }
3960 
3961 void igb_tx_ctxtdesc(struct igb_ring *tx_ring, u32 vlan_macip_lens,
3962 		     u32 type_tucmd, u32 mss_l4len_idx)
3963 {
3964 	struct e1000_adv_tx_context_desc *context_desc;
3965 	u16 i = tx_ring->next_to_use;
3966 
3967 	context_desc = IGB_TX_CTXTDESC(tx_ring, i);
3968 
3969 	i++;
3970 	tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;
3971 
3972 	/* set bits to identify this as an advanced context descriptor */
3973 	type_tucmd |= E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT;
3974 
3975 	/* For 82575, context index must be unique per ring. */
3976 	if (test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))
3977 		mss_l4len_idx |= tx_ring->reg_idx << 4;
3978 
3979 	context_desc->vlan_macip_lens	= cpu_to_le32(vlan_macip_lens);
3980 	context_desc->seqnum_seed	= 0;
3981 	context_desc->type_tucmd_mlhl	= cpu_to_le32(type_tucmd);
3982 	context_desc->mss_l4len_idx	= cpu_to_le32(mss_l4len_idx);
3983 }
3984 
3985 static int igb_tso(struct igb_ring *tx_ring,
3986 		   struct igb_tx_buffer *first,
3987 		   u8 *hdr_len)
3988 {
3989 	struct sk_buff *skb = first->skb;
3990 	u32 vlan_macip_lens, type_tucmd;
3991 	u32 mss_l4len_idx, l4len;
3992 
3993 	if (!skb_is_gso(skb))
3994 		return 0;
3995 
3996 	if (skb_header_cloned(skb)) {
3997 		int err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
3998 		if (err)
3999 			return err;
4000 	}
4001 
4002 	/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
4003 	type_tucmd = E1000_ADVTXD_TUCMD_L4T_TCP;
4004 
4005 	if (first->protocol == __constant_htons(ETH_P_IP)) {
4006 		struct iphdr *iph = ip_hdr(skb);
4007 		iph->tot_len = 0;
4008 		iph->check = 0;
4009 		tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
4010 							 iph->daddr, 0,
4011 							 IPPROTO_TCP,
4012 							 0);
4013 		type_tucmd |= E1000_ADVTXD_TUCMD_IPV4;
4014 		first->tx_flags |= IGB_TX_FLAGS_TSO |
4015 				   IGB_TX_FLAGS_CSUM |
4016 				   IGB_TX_FLAGS_IPV4;
4017 	} else if (skb_is_gso_v6(skb)) {
4018 		ipv6_hdr(skb)->payload_len = 0;
4019 		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
4020 						       &ipv6_hdr(skb)->daddr,
4021 						       0, IPPROTO_TCP, 0);
4022 		first->tx_flags |= IGB_TX_FLAGS_TSO |
4023 				   IGB_TX_FLAGS_CSUM;
4024 	}
4025 
4026 	/* compute header lengths */
4027 	l4len = tcp_hdrlen(skb);
4028 	*hdr_len = skb_transport_offset(skb) + l4len;
4029 
4030 	/* update gso size and bytecount with header size */
4031 	first->gso_segs = skb_shinfo(skb)->gso_segs;
4032 	first->bytecount += (first->gso_segs - 1) * *hdr_len;
4033 
4034 	/* MSS L4LEN IDX */
4035 	mss_l4len_idx = l4len << E1000_ADVTXD_L4LEN_SHIFT;
4036 	mss_l4len_idx |= skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT;
4037 
4038 	/* VLAN MACLEN IPLEN */
4039 	vlan_macip_lens = skb_network_header_len(skb);
4040 	vlan_macip_lens |= skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT;
4041 	vlan_macip_lens |= first->tx_flags & IGB_TX_FLAGS_VLAN_MASK;
4042 
4043 	igb_tx_ctxtdesc(tx_ring, vlan_macip_lens, type_tucmd, mss_l4len_idx);
4044 
4045 	return 1;
4046 }
4047 
4048 static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
4049 {
4050 	struct sk_buff *skb = first->skb;
4051 	u32 vlan_macip_lens = 0;
4052 	u32 mss_l4len_idx = 0;
4053 	u32 type_tucmd = 0;
4054 
4055 	if (skb->ip_summed != CHECKSUM_PARTIAL) {
4056 		if (!(first->tx_flags & IGB_TX_FLAGS_VLAN))
4057 			return;
4058 	} else {
4059 		u8 l4_hdr = 0;
4060 		switch (first->protocol) {
4061 		case __constant_htons(ETH_P_IP):
4062 			vlan_macip_lens |= skb_network_header_len(skb);
4063 			type_tucmd |= E1000_ADVTXD_TUCMD_IPV4;
4064 			l4_hdr = ip_hdr(skb)->protocol;
4065 			break;
4066 		case __constant_htons(ETH_P_IPV6):
4067 			vlan_macip_lens |= skb_network_header_len(skb);
4068 			l4_hdr = ipv6_hdr(skb)->nexthdr;
4069 			break;
4070 		default:
4071 			if (unlikely(net_ratelimit())) {
4072 				dev_warn(tx_ring->dev,
4073 				 "partial checksum but proto=%x!\n",
4074 				 first->protocol);
4075 			}
4076 			break;
4077 		}
4078 
4079 		switch (l4_hdr) {
4080 		case IPPROTO_TCP:
4081 			type_tucmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
4082 			mss_l4len_idx = tcp_hdrlen(skb) <<
4083 					E1000_ADVTXD_L4LEN_SHIFT;
4084 			break;
4085 		case IPPROTO_SCTP:
4086 			type_tucmd |= E1000_ADVTXD_TUCMD_L4T_SCTP;
4087 			mss_l4len_idx = sizeof(struct sctphdr) <<
4088 					E1000_ADVTXD_L4LEN_SHIFT;
4089 			break;
4090 		case IPPROTO_UDP:
4091 			mss_l4len_idx = sizeof(struct udphdr) <<
4092 					E1000_ADVTXD_L4LEN_SHIFT;
4093 			break;
4094 		default:
4095 			if (unlikely(net_ratelimit())) {
4096 				dev_warn(tx_ring->dev,
4097 				 "partial checksum but l4 proto=%x!\n",
4098 				 l4_hdr);
4099 			}
4100 			break;
4101 		}
4102 
4103 		/* update TX checksum flag */
4104 		first->tx_flags |= IGB_TX_FLAGS_CSUM;
4105 	}
4106 
4107 	vlan_macip_lens |= skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT;
4108 	vlan_macip_lens |= first->tx_flags & IGB_TX_FLAGS_VLAN_MASK;
4109 
4110 	igb_tx_ctxtdesc(tx_ring, vlan_macip_lens, type_tucmd, mss_l4len_idx);
4111 }
4112 
4113 static __le32 igb_tx_cmd_type(u32 tx_flags)
4114 {
4115 	/* set type for advanced descriptor with frame checksum insertion */
4116 	__le32 cmd_type = cpu_to_le32(E1000_ADVTXD_DTYP_DATA |
4117 				      E1000_ADVTXD_DCMD_IFCS |
4118 				      E1000_ADVTXD_DCMD_DEXT);
4119 
4120 	/* set HW vlan bit if vlan is present */
4121 	if (tx_flags & IGB_TX_FLAGS_VLAN)
4122 		cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_VLE);
4123 
4124 	/* set timestamp bit if present */
4125 	if (tx_flags & IGB_TX_FLAGS_TSTAMP)
4126 		cmd_type |= cpu_to_le32(E1000_ADVTXD_MAC_TSTAMP);
4127 
4128 	/* set segmentation bits for TSO */
4129 	if (tx_flags & IGB_TX_FLAGS_TSO)
4130 		cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_TSE);
4131 
4132 	return cmd_type;
4133 }
4134 
4135 static void igb_tx_olinfo_status(struct igb_ring *tx_ring,
4136 				 union e1000_adv_tx_desc *tx_desc,
4137 				 u32 tx_flags, unsigned int paylen)
4138 {
4139 	u32 olinfo_status = paylen << E1000_ADVTXD_PAYLEN_SHIFT;
4140 
4141 	/* 82575 requires a unique index per ring if any offload is enabled */
4142 	if ((tx_flags & (IGB_TX_FLAGS_CSUM | IGB_TX_FLAGS_VLAN)) &&
4143 	    test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))
4144 		olinfo_status |= tx_ring->reg_idx << 4;
4145 
4146 	/* insert L4 checksum */
4147 	if (tx_flags & IGB_TX_FLAGS_CSUM) {
4148 		olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
4149 
4150 		/* insert IPv4 checksum */
4151 		if (tx_flags & IGB_TX_FLAGS_IPV4)
4152 			olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
4153 	}
4154 
4155 	tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
4156 }
4157 
4158 /*
4159  * The largest size we can write to the descriptor is 65535.  In order to
4160  * maintain a power of two alignment we have to limit ourselves to 32K.
4161  */
4162 #define IGB_MAX_TXD_PWR	15
4163 #define IGB_MAX_DATA_PER_TXD	(1<<IGB_MAX_TXD_PWR)
4164 
4165 static void igb_tx_map(struct igb_ring *tx_ring,
4166 		       struct igb_tx_buffer *first,
4167 		       const u8 hdr_len)
4168 {
4169 	struct sk_buff *skb = first->skb;
4170 	struct igb_tx_buffer *tx_buffer_info;
4171 	union e1000_adv_tx_desc *tx_desc;
4172 	dma_addr_t dma;
4173 	struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0];
4174 	unsigned int data_len = skb->data_len;
4175 	unsigned int size = skb_headlen(skb);
4176 	unsigned int paylen = skb->len - hdr_len;
4177 	__le32 cmd_type;
4178 	u32 tx_flags = first->tx_flags;
4179 	u16 i = tx_ring->next_to_use;
4180 
4181 	tx_desc = IGB_TX_DESC(tx_ring, i);
4182 
4183 	igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, paylen);
4184 	cmd_type = igb_tx_cmd_type(tx_flags);
4185 
4186 	dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
4187 	if (dma_mapping_error(tx_ring->dev, dma))
4188 		goto dma_error;
4189 
4190 	/* record length, and DMA address */
4191 	first->length = size;
4192 	first->dma = dma;
4193 	tx_desc->read.buffer_addr = cpu_to_le64(dma);
4194 
4195 	for (;;) {
4196 		while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {
4197 			tx_desc->read.cmd_type_len =
4198 				cmd_type | cpu_to_le32(IGB_MAX_DATA_PER_TXD);
4199 
4200 			i++;
4201 			tx_desc++;
4202 			if (i == tx_ring->count) {
4203 				tx_desc = IGB_TX_DESC(tx_ring, 0);
4204 				i = 0;
4205 			}
4206 
4207 			dma += IGB_MAX_DATA_PER_TXD;
4208 			size -= IGB_MAX_DATA_PER_TXD;
4209 
4210 			tx_desc->read.olinfo_status = 0;
4211 			tx_desc->read.buffer_addr = cpu_to_le64(dma);
4212 		}
4213 
4214 		if (likely(!data_len))
4215 			break;
4216 
4217 		tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);
4218 
4219 		i++;
4220 		tx_desc++;
4221 		if (i == tx_ring->count) {
4222 			tx_desc = IGB_TX_DESC(tx_ring, 0);
4223 			i = 0;
4224 		}
4225 
4226 		size = skb_frag_size(frag);
4227 		data_len -= size;
4228 
4229 		dma = skb_frag_dma_map(tx_ring->dev, frag, 0,
4230 				   size, DMA_TO_DEVICE);
4231 		if (dma_mapping_error(tx_ring->dev, dma))
4232 			goto dma_error;
4233 
4234 		tx_buffer_info = &tx_ring->tx_buffer_info[i];
4235 		tx_buffer_info->length = size;
4236 		tx_buffer_info->dma = dma;
4237 
4238 		tx_desc->read.olinfo_status = 0;
4239 		tx_desc->read.buffer_addr = cpu_to_le64(dma);
4240 
4241 		frag++;
4242 	}
4243 
4244 	/* write last descriptor with RS and EOP bits */
4245 	cmd_type |= cpu_to_le32(size) | cpu_to_le32(IGB_TXD_DCMD);
4246 	tx_desc->read.cmd_type_len = cmd_type;
4247 
4248 	/* set the timestamp */
4249 	first->time_stamp = jiffies;
4250 
4251 	/*
4252 	 * Force memory writes to complete before letting h/w know there
4253 	 * are new descriptors to fetch.  (Only applicable for weak-ordered
4254 	 * memory model archs, such as IA-64).
4255 	 *
4256 	 * We also need this memory barrier to make certain all of the
4257 	 * status bits have been updated before next_to_watch is written.
4258 	 */
4259 	wmb();
4260 
4261 	/* set next_to_watch value indicating a packet is present */
4262 	first->next_to_watch = tx_desc;
4263 
4264 	i++;
4265 	if (i == tx_ring->count)
4266 		i = 0;
4267 
4268 	tx_ring->next_to_use = i;
4269 
4270 	writel(i, tx_ring->tail);
4271 
4272 	/* we need this if more than one processor can write to our tail
4273 	 * at a time, it syncronizes IO on IA64/Altix systems */
4274 	mmiowb();
4275 
4276 	return;
4277 
4278 dma_error:
4279 	dev_err(tx_ring->dev, "TX DMA map failed\n");
4280 
4281 	/* clear dma mappings for failed tx_buffer_info map */
4282 	for (;;) {
4283 		tx_buffer_info = &tx_ring->tx_buffer_info[i];
4284 		igb_unmap_and_free_tx_resource(tx_ring, tx_buffer_info);
4285 		if (tx_buffer_info == first)
4286 			break;
4287 		if (i == 0)
4288 			i = tx_ring->count;
4289 		i--;
4290 	}
4291 
4292 	tx_ring->next_to_use = i;
4293 }
4294 
4295 static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size)
4296 {
4297 	struct net_device *netdev = tx_ring->netdev;
4298 
4299 	netif_stop_subqueue(netdev, tx_ring->queue_index);
4300 
4301 	/* Herbert's original patch had:
4302 	 *  smp_mb__after_netif_stop_queue();
4303 	 * but since that doesn't exist yet, just open code it. */
4304 	smp_mb();
4305 
4306 	/* We need to check again in a case another CPU has just
4307 	 * made room available. */
4308 	if (igb_desc_unused(tx_ring) < size)
4309 		return -EBUSY;
4310 
4311 	/* A reprieve! */
4312 	netif_wake_subqueue(netdev, tx_ring->queue_index);
4313 
4314 	u64_stats_update_begin(&tx_ring->tx_syncp2);
4315 	tx_ring->tx_stats.restart_queue2++;
4316 	u64_stats_update_end(&tx_ring->tx_syncp2);
4317 
4318 	return 0;
4319 }
4320 
4321 static inline int igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size)
4322 {
4323 	if (igb_desc_unused(tx_ring) >= size)
4324 		return 0;
4325 	return __igb_maybe_stop_tx(tx_ring, size);
4326 }
4327 
4328 netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
4329 				struct igb_ring *tx_ring)
4330 {
4331 	struct igb_tx_buffer *first;
4332 	int tso;
4333 	u32 tx_flags = 0;
4334 	__be16 protocol = vlan_get_protocol(skb);
4335 	u8 hdr_len = 0;
4336 
4337 	/* need: 1 descriptor per page,
4338 	 *       + 2 desc gap to keep tail from touching head,
4339 	 *       + 1 desc for skb->data,
4340 	 *       + 1 desc for context descriptor,
4341 	 * otherwise try next time */
4342 	if (igb_maybe_stop_tx(tx_ring, skb_shinfo(skb)->nr_frags + 4)) {
4343 		/* this is a hard error */
4344 		return NETDEV_TX_BUSY;
4345 	}
4346 
4347 	/* record the location of the first descriptor for this packet */
4348 	first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
4349 	first->skb = skb;
4350 	first->bytecount = skb->len;
4351 	first->gso_segs = 1;
4352 
4353 	if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {
4354 		skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
4355 		tx_flags |= IGB_TX_FLAGS_TSTAMP;
4356 	}
4357 
4358 	if (vlan_tx_tag_present(skb)) {
4359 		tx_flags |= IGB_TX_FLAGS_VLAN;
4360 		tx_flags |= (vlan_tx_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT);
4361 	}
4362 
4363 	/* record initial flags and protocol */
4364 	first->tx_flags = tx_flags;
4365 	first->protocol = protocol;
4366 
4367 	tso = igb_tso(tx_ring, first, &hdr_len);
4368 	if (tso < 0)
4369 		goto out_drop;
4370 	else if (!tso)
4371 		igb_tx_csum(tx_ring, first);
4372 
4373 	igb_tx_map(tx_ring, first, hdr_len);
4374 
4375 	/* Make sure there is space in the ring for the next send. */
4376 	igb_maybe_stop_tx(tx_ring, MAX_SKB_FRAGS + 4);
4377 
4378 	return NETDEV_TX_OK;
4379 
4380 out_drop:
4381 	igb_unmap_and_free_tx_resource(tx_ring, first);
4382 
4383 	return NETDEV_TX_OK;
4384 }
4385 
4386 static inline struct igb_ring *igb_tx_queue_mapping(struct igb_adapter *adapter,
4387 						    struct sk_buff *skb)
4388 {
4389 	unsigned int r_idx = skb->queue_mapping;
4390 
4391 	if (r_idx >= adapter->num_tx_queues)
4392 		r_idx = r_idx % adapter->num_tx_queues;
4393 
4394 	return adapter->tx_ring[r_idx];
4395 }
4396 
4397 static netdev_tx_t igb_xmit_frame(struct sk_buff *skb,
4398 				  struct net_device *netdev)
4399 {
4400 	struct igb_adapter *adapter = netdev_priv(netdev);
4401 
4402 	if (test_bit(__IGB_DOWN, &adapter->state)) {
4403 		dev_kfree_skb_any(skb);
4404 		return NETDEV_TX_OK;
4405 	}
4406 
4407 	if (skb->len <= 0) {
4408 		dev_kfree_skb_any(skb);
4409 		return NETDEV_TX_OK;
4410 	}
4411 
4412 	/*
4413 	 * The minimum packet size with TCTL.PSP set is 17 so pad the skb
4414 	 * in order to meet this minimum size requirement.
4415 	 */
4416 	if (skb->len < 17) {
4417 		if (skb_padto(skb, 17))
4418 			return NETDEV_TX_OK;
4419 		skb->len = 17;
4420 	}
4421 
4422 	return igb_xmit_frame_ring(skb, igb_tx_queue_mapping(adapter, skb));
4423 }
4424 
4425 /**
4426  * igb_tx_timeout - Respond to a Tx Hang
4427  * @netdev: network interface device structure
4428  **/
4429 static void igb_tx_timeout(struct net_device *netdev)
4430 {
4431 	struct igb_adapter *adapter = netdev_priv(netdev);
4432 	struct e1000_hw *hw = &adapter->hw;
4433 
4434 	/* Do the reset outside of interrupt context */
4435 	adapter->tx_timeout_count++;
4436 
4437 	if (hw->mac.type >= e1000_82580)
4438 		hw->dev_spec._82575.global_device_reset = true;
4439 
4440 	schedule_work(&adapter->reset_task);
4441 	wr32(E1000_EICS,
4442 	     (adapter->eims_enable_mask & ~adapter->eims_other));
4443 }
4444 
4445 static void igb_reset_task(struct work_struct *work)
4446 {
4447 	struct igb_adapter *adapter;
4448 	adapter = container_of(work, struct igb_adapter, reset_task);
4449 
4450 	igb_dump(adapter);
4451 	netdev_err(adapter->netdev, "Reset adapter\n");
4452 	igb_reinit_locked(adapter);
4453 }
4454 
4455 /**
4456  * igb_get_stats64 - Get System Network Statistics
4457  * @netdev: network interface device structure
4458  * @stats: rtnl_link_stats64 pointer
4459  *
4460  **/
4461 static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *netdev,
4462 						 struct rtnl_link_stats64 *stats)
4463 {
4464 	struct igb_adapter *adapter = netdev_priv(netdev);
4465 
4466 	spin_lock(&adapter->stats64_lock);
4467 	igb_update_stats(adapter, &adapter->stats64);
4468 	memcpy(stats, &adapter->stats64, sizeof(*stats));
4469 	spin_unlock(&adapter->stats64_lock);
4470 
4471 	return stats;
4472 }
4473 
4474 /**
4475  * igb_change_mtu - Change the Maximum Transfer Unit
4476  * @netdev: network interface device structure
4477  * @new_mtu: new value for maximum frame size
4478  *
4479  * Returns 0 on success, negative on failure
4480  **/
4481 static int igb_change_mtu(struct net_device *netdev, int new_mtu)
4482 {
4483 	struct igb_adapter *adapter = netdev_priv(netdev);
4484 	struct pci_dev *pdev = adapter->pdev;
4485 	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
4486 
4487 	if ((new_mtu < 68) || (max_frame > MAX_JUMBO_FRAME_SIZE)) {
4488 		dev_err(&pdev->dev, "Invalid MTU setting\n");
4489 		return -EINVAL;
4490 	}
4491 
4492 #define MAX_STD_JUMBO_FRAME_SIZE 9238
4493 	if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) {
4494 		dev_err(&pdev->dev, "MTU > 9216 not supported.\n");
4495 		return -EINVAL;
4496 	}
4497 
4498 	while (test_and_set_bit(__IGB_RESETTING, &adapter->state))
4499 		msleep(1);
4500 
4501 	/* igb_down has a dependency on max_frame_size */
4502 	adapter->max_frame_size = max_frame;
4503 
4504 	if (netif_running(netdev))
4505 		igb_down(adapter);
4506 
4507 	dev_info(&pdev->dev, "changing MTU from %d to %d\n",
4508 		 netdev->mtu, new_mtu);
4509 	netdev->mtu = new_mtu;
4510 
4511 	if (netif_running(netdev))
4512 		igb_up(adapter);
4513 	else
4514 		igb_reset(adapter);
4515 
4516 	clear_bit(__IGB_RESETTING, &adapter->state);
4517 
4518 	return 0;
4519 }
4520 
4521 /**
4522  * igb_update_stats - Update the board statistics counters
4523  * @adapter: board private structure
4524  **/
4525 
4526 void igb_update_stats(struct igb_adapter *adapter,
4527 		      struct rtnl_link_stats64 *net_stats)
4528 {
4529 	struct e1000_hw *hw = &adapter->hw;
4530 	struct pci_dev *pdev = adapter->pdev;
4531 	u32 reg, mpc;
4532 	u16 phy_tmp;
4533 	int i;
4534 	u64 bytes, packets;
4535 	unsigned int start;
4536 	u64 _bytes, _packets;
4537 
4538 #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
4539 
4540 	/*
4541 	 * Prevent stats update while adapter is being reset, or if the pci
4542 	 * connection is down.
4543 	 */
4544 	if (adapter->link_speed == 0)
4545 		return;
4546 	if (pci_channel_offline(pdev))
4547 		return;
4548 
4549 	bytes = 0;
4550 	packets = 0;
4551 	for (i = 0; i < adapter->num_rx_queues; i++) {
4552 		u32 rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0x0FFF;
4553 		struct igb_ring *ring = adapter->rx_ring[i];
4554 
4555 		ring->rx_stats.drops += rqdpc_tmp;
4556 		net_stats->rx_fifo_errors += rqdpc_tmp;
4557 
4558 		do {
4559 			start = u64_stats_fetch_begin_bh(&ring->rx_syncp);
4560 			_bytes = ring->rx_stats.bytes;
4561 			_packets = ring->rx_stats.packets;
4562 		} while (u64_stats_fetch_retry_bh(&ring->rx_syncp, start));
4563 		bytes += _bytes;
4564 		packets += _packets;
4565 	}
4566 
4567 	net_stats->rx_bytes = bytes;
4568 	net_stats->rx_packets = packets;
4569 
4570 	bytes = 0;
4571 	packets = 0;
4572 	for (i = 0; i < adapter->num_tx_queues; i++) {
4573 		struct igb_ring *ring = adapter->tx_ring[i];
4574 		do {
4575 			start = u64_stats_fetch_begin_bh(&ring->tx_syncp);
4576 			_bytes = ring->tx_stats.bytes;
4577 			_packets = ring->tx_stats.packets;
4578 		} while (u64_stats_fetch_retry_bh(&ring->tx_syncp, start));
4579 		bytes += _bytes;
4580 		packets += _packets;
4581 	}
4582 	net_stats->tx_bytes = bytes;
4583 	net_stats->tx_packets = packets;
4584 
4585 	/* read stats registers */
4586 	adapter->stats.crcerrs += rd32(E1000_CRCERRS);
4587 	adapter->stats.gprc += rd32(E1000_GPRC);
4588 	adapter->stats.gorc += rd32(E1000_GORCL);
4589 	rd32(E1000_GORCH); /* clear GORCL */
4590 	adapter->stats.bprc += rd32(E1000_BPRC);
4591 	adapter->stats.mprc += rd32(E1000_MPRC);
4592 	adapter->stats.roc += rd32(E1000_ROC);
4593 
4594 	adapter->stats.prc64 += rd32(E1000_PRC64);
4595 	adapter->stats.prc127 += rd32(E1000_PRC127);
4596 	adapter->stats.prc255 += rd32(E1000_PRC255);
4597 	adapter->stats.prc511 += rd32(E1000_PRC511);
4598 	adapter->stats.prc1023 += rd32(E1000_PRC1023);
4599 	adapter->stats.prc1522 += rd32(E1000_PRC1522);
4600 	adapter->stats.symerrs += rd32(E1000_SYMERRS);
4601 	adapter->stats.sec += rd32(E1000_SEC);
4602 
4603 	mpc = rd32(E1000_MPC);
4604 	adapter->stats.mpc += mpc;
4605 	net_stats->rx_fifo_errors += mpc;
4606 	adapter->stats.scc += rd32(E1000_SCC);
4607 	adapter->stats.ecol += rd32(E1000_ECOL);
4608 	adapter->stats.mcc += rd32(E1000_MCC);
4609 	adapter->stats.latecol += rd32(E1000_LATECOL);
4610 	adapter->stats.dc += rd32(E1000_DC);
4611 	adapter->stats.rlec += rd32(E1000_RLEC);
4612 	adapter->stats.xonrxc += rd32(E1000_XONRXC);
4613 	adapter->stats.xontxc += rd32(E1000_XONTXC);
4614 	adapter->stats.xoffrxc += rd32(E1000_XOFFRXC);
4615 	adapter->stats.xofftxc += rd32(E1000_XOFFTXC);
4616 	adapter->stats.fcruc += rd32(E1000_FCRUC);
4617 	adapter->stats.gptc += rd32(E1000_GPTC);
4618 	adapter->stats.gotc += rd32(E1000_GOTCL);
4619 	rd32(E1000_GOTCH); /* clear GOTCL */
4620 	adapter->stats.rnbc += rd32(E1000_RNBC);
4621 	adapter->stats.ruc += rd32(E1000_RUC);
4622 	adapter->stats.rfc += rd32(E1000_RFC);
4623 	adapter->stats.rjc += rd32(E1000_RJC);
4624 	adapter->stats.tor += rd32(E1000_TORH);
4625 	adapter->stats.tot += rd32(E1000_TOTH);
4626 	adapter->stats.tpr += rd32(E1000_TPR);
4627 
4628 	adapter->stats.ptc64 += rd32(E1000_PTC64);
4629 	adapter->stats.ptc127 += rd32(E1000_PTC127);
4630 	adapter->stats.ptc255 += rd32(E1000_PTC255);
4631 	adapter->stats.ptc511 += rd32(E1000_PTC511);
4632 	adapter->stats.ptc1023 += rd32(E1000_PTC1023);
4633 	adapter->stats.ptc1522 += rd32(E1000_PTC1522);
4634 
4635 	adapter->stats.mptc += rd32(E1000_MPTC);
4636 	adapter->stats.bptc += rd32(E1000_BPTC);
4637 
4638 	adapter->stats.tpt += rd32(E1000_TPT);
4639 	adapter->stats.colc += rd32(E1000_COLC);
4640 
4641 	adapter->stats.algnerrc += rd32(E1000_ALGNERRC);
4642 	/* read internal phy specific stats */
4643 	reg = rd32(E1000_CTRL_EXT);
4644 	if (!(reg & E1000_CTRL_EXT_LINK_MODE_MASK)) {
4645 		adapter->stats.rxerrc += rd32(E1000_RXERRC);
4646 		adapter->stats.tncrs += rd32(E1000_TNCRS);
4647 	}
4648 
4649 	adapter->stats.tsctc += rd32(E1000_TSCTC);
4650 	adapter->stats.tsctfc += rd32(E1000_TSCTFC);
4651 
4652 	adapter->stats.iac += rd32(E1000_IAC);
4653 	adapter->stats.icrxoc += rd32(E1000_ICRXOC);
4654 	adapter->stats.icrxptc += rd32(E1000_ICRXPTC);
4655 	adapter->stats.icrxatc += rd32(E1000_ICRXATC);
4656 	adapter->stats.ictxptc += rd32(E1000_ICTXPTC);
4657 	adapter->stats.ictxatc += rd32(E1000_ICTXATC);
4658 	adapter->stats.ictxqec += rd32(E1000_ICTXQEC);
4659 	adapter->stats.ictxqmtc += rd32(E1000_ICTXQMTC);
4660 	adapter->stats.icrxdmtc += rd32(E1000_ICRXDMTC);
4661 
4662 	/* Fill out the OS statistics structure */
4663 	net_stats->multicast = adapter->stats.mprc;
4664 	net_stats->collisions = adapter->stats.colc;
4665 
4666 	/* Rx Errors */
4667 
4668 	/* RLEC on some newer hardware can be incorrect so build
4669 	 * our own version based on RUC and ROC */
4670 	net_stats->rx_errors = adapter->stats.rxerrc +
4671 		adapter->stats.crcerrs + adapter->stats.algnerrc +
4672 		adapter->stats.ruc + adapter->stats.roc +
4673 		adapter->stats.cexterr;
4674 	net_stats->rx_length_errors = adapter->stats.ruc +
4675 				      adapter->stats.roc;
4676 	net_stats->rx_crc_errors = adapter->stats.crcerrs;
4677 	net_stats->rx_frame_errors = adapter->stats.algnerrc;
4678 	net_stats->rx_missed_errors = adapter->stats.mpc;
4679 
4680 	/* Tx Errors */
4681 	net_stats->tx_errors = adapter->stats.ecol +
4682 			       adapter->stats.latecol;
4683 	net_stats->tx_aborted_errors = adapter->stats.ecol;
4684 	net_stats->tx_window_errors = adapter->stats.latecol;
4685 	net_stats->tx_carrier_errors = adapter->stats.tncrs;
4686 
4687 	/* Tx Dropped needs to be maintained elsewhere */
4688 
4689 	/* Phy Stats */
4690 	if (hw->phy.media_type == e1000_media_type_copper) {
4691 		if ((adapter->link_speed == SPEED_1000) &&
4692 		   (!igb_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
4693 			phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
4694 			adapter->phy_stats.idle_errors += phy_tmp;
4695 		}
4696 	}
4697 
4698 	/* Management Stats */
4699 	adapter->stats.mgptc += rd32(E1000_MGTPTC);
4700 	adapter->stats.mgprc += rd32(E1000_MGTPRC);
4701 	adapter->stats.mgpdc += rd32(E1000_MGTPDC);
4702 
4703 	/* OS2BMC Stats */
4704 	reg = rd32(E1000_MANC);
4705 	if (reg & E1000_MANC_EN_BMC2OS) {
4706 		adapter->stats.o2bgptc += rd32(E1000_O2BGPTC);
4707 		adapter->stats.o2bspc += rd32(E1000_O2BSPC);
4708 		adapter->stats.b2ospc += rd32(E1000_B2OSPC);
4709 		adapter->stats.b2ogprc += rd32(E1000_B2OGPRC);
4710 	}
4711 }
4712 
4713 static irqreturn_t igb_msix_other(int irq, void *data)
4714 {
4715 	struct igb_adapter *adapter = data;
4716 	struct e1000_hw *hw = &adapter->hw;
4717 	u32 icr = rd32(E1000_ICR);
4718 	/* reading ICR causes bit 31 of EICR to be cleared */
4719 
4720 	if (icr & E1000_ICR_DRSTA)
4721 		schedule_work(&adapter->reset_task);
4722 
4723 	if (icr & E1000_ICR_DOUTSYNC) {
4724 		/* HW is reporting DMA is out of sync */
4725 		adapter->stats.doosync++;
4726 		/* The DMA Out of Sync is also indication of a spoof event
4727 		 * in IOV mode. Check the Wrong VM Behavior register to
4728 		 * see if it is really a spoof event. */
4729 		igb_check_wvbr(adapter);
4730 	}
4731 
4732 	/* Check for a mailbox event */
4733 	if (icr & E1000_ICR_VMMB)
4734 		igb_msg_task(adapter);
4735 
4736 	if (icr & E1000_ICR_LSC) {
4737 		hw->mac.get_link_status = 1;
4738 		/* guard against interrupt when we're going down */
4739 		if (!test_bit(__IGB_DOWN, &adapter->state))
4740 			mod_timer(&adapter->watchdog_timer, jiffies + 1);
4741 	}
4742 
4743 	wr32(E1000_EIMS, adapter->eims_other);
4744 
4745 	return IRQ_HANDLED;
4746 }
4747 
4748 static void igb_write_itr(struct igb_q_vector *q_vector)
4749 {
4750 	struct igb_adapter *adapter = q_vector->adapter;
4751 	u32 itr_val = q_vector->itr_val & 0x7FFC;
4752 
4753 	if (!q_vector->set_itr)
4754 		return;
4755 
4756 	if (!itr_val)
4757 		itr_val = 0x4;
4758 
4759 	if (adapter->hw.mac.type == e1000_82575)
4760 		itr_val |= itr_val << 16;
4761 	else
4762 		itr_val |= E1000_EITR_CNT_IGNR;
4763 
4764 	writel(itr_val, q_vector->itr_register);
4765 	q_vector->set_itr = 0;
4766 }
4767 
4768 static irqreturn_t igb_msix_ring(int irq, void *data)
4769 {
4770 	struct igb_q_vector *q_vector = data;
4771 
4772 	/* Write the ITR value calculated from the previous interrupt. */
4773 	igb_write_itr(q_vector);
4774 
4775 	napi_schedule(&q_vector->napi);
4776 
4777 	return IRQ_HANDLED;
4778 }
4779 
4780 #ifdef CONFIG_IGB_DCA
4781 static void igb_update_dca(struct igb_q_vector *q_vector)
4782 {
4783 	struct igb_adapter *adapter = q_vector->adapter;
4784 	struct e1000_hw *hw = &adapter->hw;
4785 	int cpu = get_cpu();
4786 
4787 	if (q_vector->cpu == cpu)
4788 		goto out_no_update;
4789 
4790 	if (q_vector->tx.ring) {
4791 		int q = q_vector->tx.ring->reg_idx;
4792 		u32 dca_txctrl = rd32(E1000_DCA_TXCTRL(q));
4793 		if (hw->mac.type == e1000_82575) {
4794 			dca_txctrl &= ~E1000_DCA_TXCTRL_CPUID_MASK;
4795 			dca_txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
4796 		} else {
4797 			dca_txctrl &= ~E1000_DCA_TXCTRL_CPUID_MASK_82576;
4798 			dca_txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu) <<
4799 			              E1000_DCA_TXCTRL_CPUID_SHIFT;
4800 		}
4801 		dca_txctrl |= E1000_DCA_TXCTRL_DESC_DCA_EN;
4802 		wr32(E1000_DCA_TXCTRL(q), dca_txctrl);
4803 	}
4804 	if (q_vector->rx.ring) {
4805 		int q = q_vector->rx.ring->reg_idx;
4806 		u32 dca_rxctrl = rd32(E1000_DCA_RXCTRL(q));
4807 		if (hw->mac.type == e1000_82575) {
4808 			dca_rxctrl &= ~E1000_DCA_RXCTRL_CPUID_MASK;
4809 			dca_rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
4810 		} else {
4811 			dca_rxctrl &= ~E1000_DCA_RXCTRL_CPUID_MASK_82576;
4812 			dca_rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu) <<
4813 			              E1000_DCA_RXCTRL_CPUID_SHIFT;
4814 		}
4815 		dca_rxctrl |= E1000_DCA_RXCTRL_DESC_DCA_EN;
4816 		dca_rxctrl |= E1000_DCA_RXCTRL_HEAD_DCA_EN;
4817 		dca_rxctrl |= E1000_DCA_RXCTRL_DATA_DCA_EN;
4818 		wr32(E1000_DCA_RXCTRL(q), dca_rxctrl);
4819 	}
4820 	q_vector->cpu = cpu;
4821 out_no_update:
4822 	put_cpu();
4823 }
4824 
4825 static void igb_setup_dca(struct igb_adapter *adapter)
4826 {
4827 	struct e1000_hw *hw = &adapter->hw;
4828 	int i;
4829 
4830 	if (!(adapter->flags & IGB_FLAG_DCA_ENABLED))
4831 		return;
4832 
4833 	/* Always use CB2 mode, difference is masked in the CB driver. */
4834 	wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_CB2);
4835 
4836 	for (i = 0; i < adapter->num_q_vectors; i++) {
4837 		adapter->q_vector[i]->cpu = -1;
4838 		igb_update_dca(adapter->q_vector[i]);
4839 	}
4840 }
4841 
4842 static int __igb_notify_dca(struct device *dev, void *data)
4843 {
4844 	struct net_device *netdev = dev_get_drvdata(dev);
4845 	struct igb_adapter *adapter = netdev_priv(netdev);
4846 	struct pci_dev *pdev = adapter->pdev;
4847 	struct e1000_hw *hw = &adapter->hw;
4848 	unsigned long event = *(unsigned long *)data;
4849 
4850 	switch (event) {
4851 	case DCA_PROVIDER_ADD:
4852 		/* if already enabled, don't do it again */
4853 		if (adapter->flags & IGB_FLAG_DCA_ENABLED)
4854 			break;
4855 		if (dca_add_requester(dev) == 0) {
4856 			adapter->flags |= IGB_FLAG_DCA_ENABLED;
4857 			dev_info(&pdev->dev, "DCA enabled\n");
4858 			igb_setup_dca(adapter);
4859 			break;
4860 		}
4861 		/* Fall Through since DCA is disabled. */
4862 	case DCA_PROVIDER_REMOVE:
4863 		if (adapter->flags & IGB_FLAG_DCA_ENABLED) {
4864 			/* without this a class_device is left
4865 			 * hanging around in the sysfs model */
4866 			dca_remove_requester(dev);
4867 			dev_info(&pdev->dev, "DCA disabled\n");
4868 			adapter->flags &= ~IGB_FLAG_DCA_ENABLED;
4869 			wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_DISABLE);
4870 		}
4871 		break;
4872 	}
4873 
4874 	return 0;
4875 }
4876 
4877 static int igb_notify_dca(struct notifier_block *nb, unsigned long event,
4878                           void *p)
4879 {
4880 	int ret_val;
4881 
4882 	ret_val = driver_for_each_device(&igb_driver.driver, NULL, &event,
4883 	                                 __igb_notify_dca);
4884 
4885 	return ret_val ? NOTIFY_BAD : NOTIFY_DONE;
4886 }
4887 #endif /* CONFIG_IGB_DCA */
4888 
4889 #ifdef CONFIG_PCI_IOV
4890 static int igb_vf_configure(struct igb_adapter *adapter, int vf)
4891 {
4892 	unsigned char mac_addr[ETH_ALEN];
4893 	struct pci_dev *pdev = adapter->pdev;
4894 	struct e1000_hw *hw = &adapter->hw;
4895 	struct pci_dev *pvfdev;
4896 	unsigned int device_id;
4897 	u16 thisvf_devfn;
4898 
4899 	random_ether_addr(mac_addr);
4900 	igb_set_vf_mac(adapter, vf, mac_addr);
4901 
4902 	switch (adapter->hw.mac.type) {
4903 	case e1000_82576:
4904 		device_id = IGB_82576_VF_DEV_ID;
4905 		/* VF Stride for 82576 is 2 */
4906 		thisvf_devfn = (pdev->devfn + 0x80 + (vf << 1)) |
4907 			(pdev->devfn & 1);
4908 		break;
4909 	case e1000_i350:
4910 		device_id = IGB_I350_VF_DEV_ID;
4911 		/* VF Stride for I350 is 4 */
4912 		thisvf_devfn = (pdev->devfn + 0x80 + (vf << 2)) |
4913 				(pdev->devfn & 3);
4914 		break;
4915 	default:
4916 		device_id = 0;
4917 		thisvf_devfn = 0;
4918 		break;
4919 	}
4920 
4921 	pvfdev = pci_get_device(hw->vendor_id, device_id, NULL);
4922 	while (pvfdev) {
4923 		if (pvfdev->devfn == thisvf_devfn)
4924 			break;
4925 		pvfdev = pci_get_device(hw->vendor_id,
4926 					device_id, pvfdev);
4927 	}
4928 
4929 	if (pvfdev)
4930 		adapter->vf_data[vf].vfdev = pvfdev;
4931 	else
4932 		dev_err(&pdev->dev,
4933 			"Couldn't find pci dev ptr for VF %4.4x\n",
4934 			thisvf_devfn);
4935 	return pvfdev != NULL;
4936 }
4937 
4938 static int igb_find_enabled_vfs(struct igb_adapter *adapter)
4939 {
4940 	struct e1000_hw *hw = &adapter->hw;
4941 	struct pci_dev *pdev = adapter->pdev;
4942 	struct pci_dev *pvfdev;
4943 	u16 vf_devfn = 0;
4944 	u16 vf_stride;
4945 	unsigned int device_id;
4946 	int vfs_found = 0;
4947 
4948 	switch (adapter->hw.mac.type) {
4949 	case e1000_82576:
4950 		device_id = IGB_82576_VF_DEV_ID;
4951 		/* VF Stride for 82576 is 2 */
4952 		vf_stride = 2;
4953 		break;
4954 	case e1000_i350:
4955 		device_id = IGB_I350_VF_DEV_ID;
4956 		/* VF Stride for I350 is 4 */
4957 		vf_stride = 4;
4958 		break;
4959 	default:
4960 		device_id = 0;
4961 		vf_stride = 0;
4962 		break;
4963 	}
4964 
4965 	vf_devfn = pdev->devfn + 0x80;
4966 	pvfdev = pci_get_device(hw->vendor_id, device_id, NULL);
4967 	while (pvfdev) {
4968 		if (pvfdev->devfn == vf_devfn)
4969 			vfs_found++;
4970 		vf_devfn += vf_stride;
4971 		pvfdev = pci_get_device(hw->vendor_id,
4972 					device_id, pvfdev);
4973 	}
4974 
4975 	return vfs_found;
4976 }
4977 
4978 static int igb_check_vf_assignment(struct igb_adapter *adapter)
4979 {
4980 	int i;
4981 	for (i = 0; i < adapter->vfs_allocated_count; i++) {
4982 		if (adapter->vf_data[i].vfdev) {
4983 			if (adapter->vf_data[i].vfdev->dev_flags &
4984 			    PCI_DEV_FLAGS_ASSIGNED)
4985 				return true;
4986 		}
4987 	}
4988 	return false;
4989 }
4990 
4991 #endif
4992 static void igb_ping_all_vfs(struct igb_adapter *adapter)
4993 {
4994 	struct e1000_hw *hw = &adapter->hw;
4995 	u32 ping;
4996 	int i;
4997 
4998 	for (i = 0 ; i < adapter->vfs_allocated_count; i++) {
4999 		ping = E1000_PF_CONTROL_MSG;
5000 		if (adapter->vf_data[i].flags & IGB_VF_FLAG_CTS)
5001 			ping |= E1000_VT_MSGTYPE_CTS;
5002 		igb_write_mbx(hw, &ping, 1, i);
5003 	}
5004 }
5005 
5006 static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
5007 {
5008 	struct e1000_hw *hw = &adapter->hw;
5009 	u32 vmolr = rd32(E1000_VMOLR(vf));
5010 	struct vf_data_storage *vf_data = &adapter->vf_data[vf];
5011 
5012 	vf_data->flags &= ~(IGB_VF_FLAG_UNI_PROMISC |
5013 	                    IGB_VF_FLAG_MULTI_PROMISC);
5014 	vmolr &= ~(E1000_VMOLR_ROPE | E1000_VMOLR_ROMPE | E1000_VMOLR_MPME);
5015 
5016 	if (*msgbuf & E1000_VF_SET_PROMISC_MULTICAST) {
5017 		vmolr |= E1000_VMOLR_MPME;
5018 		vf_data->flags |= IGB_VF_FLAG_MULTI_PROMISC;
5019 		*msgbuf &= ~E1000_VF_SET_PROMISC_MULTICAST;
5020 	} else {
5021 		/*
5022 		 * if we have hashes and we are clearing a multicast promisc
5023 		 * flag we need to write the hashes to the MTA as this step
5024 		 * was previously skipped
5025 		 */
5026 		if (vf_data->num_vf_mc_hashes > 30) {
5027 			vmolr |= E1000_VMOLR_MPME;
5028 		} else if (vf_data->num_vf_mc_hashes) {
5029 			int j;
5030 			vmolr |= E1000_VMOLR_ROMPE;
5031 			for (j = 0; j < vf_data->num_vf_mc_hashes; j++)
5032 				igb_mta_set(hw, vf_data->vf_mc_hashes[j]);
5033 		}
5034 	}
5035 
5036 	wr32(E1000_VMOLR(vf), vmolr);
5037 
5038 	/* there are flags left unprocessed, likely not supported */
5039 	if (*msgbuf & E1000_VT_MSGINFO_MASK)
5040 		return -EINVAL;
5041 
5042 	return 0;
5043 
5044 }
5045 
5046 static int igb_set_vf_multicasts(struct igb_adapter *adapter,
5047 				  u32 *msgbuf, u32 vf)
5048 {
5049 	int n = (msgbuf[0] & E1000_VT_MSGINFO_MASK) >> E1000_VT_MSGINFO_SHIFT;
5050 	u16 *hash_list = (u16 *)&msgbuf[1];
5051 	struct vf_data_storage *vf_data = &adapter->vf_data[vf];
5052 	int i;
5053 
5054 	/* salt away the number of multicast addresses assigned
5055 	 * to this VF for later use to restore when the PF multi cast
5056 	 * list changes
5057 	 */
5058 	vf_data->num_vf_mc_hashes = n;
5059 
5060 	/* only up to 30 hash values supported */
5061 	if (n > 30)
5062 		n = 30;
5063 
5064 	/* store the hashes for later use */
5065 	for (i = 0; i < n; i++)
5066 		vf_data->vf_mc_hashes[i] = hash_list[i];
5067 
5068 	/* Flush and reset the mta with the new values */
5069 	igb_set_rx_mode(adapter->netdev);
5070 
5071 	return 0;
5072 }
5073 
5074 static void igb_restore_vf_multicasts(struct igb_adapter *adapter)
5075 {
5076 	struct e1000_hw *hw = &adapter->hw;
5077 	struct vf_data_storage *vf_data;
5078 	int i, j;
5079 
5080 	for (i = 0; i < adapter->vfs_allocated_count; i++) {
5081 		u32 vmolr = rd32(E1000_VMOLR(i));
5082 		vmolr &= ~(E1000_VMOLR_ROMPE | E1000_VMOLR_MPME);
5083 
5084 		vf_data = &adapter->vf_data[i];
5085 
5086 		if ((vf_data->num_vf_mc_hashes > 30) ||
5087 		    (vf_data->flags & IGB_VF_FLAG_MULTI_PROMISC)) {
5088 			vmolr |= E1000_VMOLR_MPME;
5089 		} else if (vf_data->num_vf_mc_hashes) {
5090 			vmolr |= E1000_VMOLR_ROMPE;
5091 			for (j = 0; j < vf_data->num_vf_mc_hashes; j++)
5092 				igb_mta_set(hw, vf_data->vf_mc_hashes[j]);
5093 		}
5094 		wr32(E1000_VMOLR(i), vmolr);
5095 	}
5096 }
5097 
5098 static void igb_clear_vf_vfta(struct igb_adapter *adapter, u32 vf)
5099 {
5100 	struct e1000_hw *hw = &adapter->hw;
5101 	u32 pool_mask, reg, vid;
5102 	int i;
5103 
5104 	pool_mask = 1 << (E1000_VLVF_POOLSEL_SHIFT + vf);
5105 
5106 	/* Find the vlan filter for this id */
5107 	for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
5108 		reg = rd32(E1000_VLVF(i));
5109 
5110 		/* remove the vf from the pool */
5111 		reg &= ~pool_mask;
5112 
5113 		/* if pool is empty then remove entry from vfta */
5114 		if (!(reg & E1000_VLVF_POOLSEL_MASK) &&
5115 		    (reg & E1000_VLVF_VLANID_ENABLE)) {
5116 			reg = 0;
5117 			vid = reg & E1000_VLVF_VLANID_MASK;
5118 			igb_vfta_set(hw, vid, false);
5119 		}
5120 
5121 		wr32(E1000_VLVF(i), reg);
5122 	}
5123 
5124 	adapter->vf_data[vf].vlans_enabled = 0;
5125 }
5126 
5127 static s32 igb_vlvf_set(struct igb_adapter *adapter, u32 vid, bool add, u32 vf)
5128 {
5129 	struct e1000_hw *hw = &adapter->hw;
5130 	u32 reg, i;
5131 
5132 	/* The vlvf table only exists on 82576 hardware and newer */
5133 	if (hw->mac.type < e1000_82576)
5134 		return -1;
5135 
5136 	/* we only need to do this if VMDq is enabled */
5137 	if (!adapter->vfs_allocated_count)
5138 		return -1;
5139 
5140 	/* Find the vlan filter for this id */
5141 	for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
5142 		reg = rd32(E1000_VLVF(i));
5143 		if ((reg & E1000_VLVF_VLANID_ENABLE) &&
5144 		    vid == (reg & E1000_VLVF_VLANID_MASK))
5145 			break;
5146 	}
5147 
5148 	if (add) {
5149 		if (i == E1000_VLVF_ARRAY_SIZE) {
5150 			/* Did not find a matching VLAN ID entry that was
5151 			 * enabled.  Search for a free filter entry, i.e.
5152 			 * one without the enable bit set
5153 			 */
5154 			for (i = 0; i < E1000_VLVF_ARRAY_SIZE; i++) {
5155 				reg = rd32(E1000_VLVF(i));
5156 				if (!(reg & E1000_VLVF_VLANID_ENABLE))
5157 					break;
5158 			}
5159 		}
5160 		if (i < E1000_VLVF_ARRAY_SIZE) {
5161 			/* Found an enabled/available entry */
5162 			reg |= 1 << (E1000_VLVF_POOLSEL_SHIFT + vf);
5163 
5164 			/* if !enabled we need to set this up in vfta */
5165 			if (!(reg & E1000_VLVF_VLANID_ENABLE)) {
5166 				/* add VID to filter table */
5167 				igb_vfta_set(hw, vid, true);
5168 				reg |= E1000_VLVF_VLANID_ENABLE;
5169 			}
5170 			reg &= ~E1000_VLVF_VLANID_MASK;
5171 			reg |= vid;
5172 			wr32(E1000_VLVF(i), reg);
5173 
5174 			/* do not modify RLPML for PF devices */
5175 			if (vf >= adapter->vfs_allocated_count)
5176 				return 0;
5177 
5178 			if (!adapter->vf_data[vf].vlans_enabled) {
5179 				u32 size;
5180 				reg = rd32(E1000_VMOLR(vf));
5181 				size = reg & E1000_VMOLR_RLPML_MASK;
5182 				size += 4;
5183 				reg &= ~E1000_VMOLR_RLPML_MASK;
5184 				reg |= size;
5185 				wr32(E1000_VMOLR(vf), reg);
5186 			}
5187 
5188 			adapter->vf_data[vf].vlans_enabled++;
5189 		}
5190 	} else {
5191 		if (i < E1000_VLVF_ARRAY_SIZE) {
5192 			/* remove vf from the pool */
5193 			reg &= ~(1 << (E1000_VLVF_POOLSEL_SHIFT + vf));
5194 			/* if pool is empty then remove entry from vfta */
5195 			if (!(reg & E1000_VLVF_POOLSEL_MASK)) {
5196 				reg = 0;
5197 				igb_vfta_set(hw, vid, false);
5198 			}
5199 			wr32(E1000_VLVF(i), reg);
5200 
5201 			/* do not modify RLPML for PF devices */
5202 			if (vf >= adapter->vfs_allocated_count)
5203 				return 0;
5204 
5205 			adapter->vf_data[vf].vlans_enabled--;
5206 			if (!adapter->vf_data[vf].vlans_enabled) {
5207 				u32 size;
5208 				reg = rd32(E1000_VMOLR(vf));
5209 				size = reg & E1000_VMOLR_RLPML_MASK;
5210 				size -= 4;
5211 				reg &= ~E1000_VMOLR_RLPML_MASK;
5212 				reg |= size;
5213 				wr32(E1000_VMOLR(vf), reg);
5214 			}
5215 		}
5216 	}
5217 	return 0;
5218 }
5219 
5220 static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf)
5221 {
5222 	struct e1000_hw *hw = &adapter->hw;
5223 
5224 	if (vid)
5225 		wr32(E1000_VMVIR(vf), (vid | E1000_VMVIR_VLANA_DEFAULT));
5226 	else
5227 		wr32(E1000_VMVIR(vf), 0);
5228 }
5229 
5230 static int igb_ndo_set_vf_vlan(struct net_device *netdev,
5231 			       int vf, u16 vlan, u8 qos)
5232 {
5233 	int err = 0;
5234 	struct igb_adapter *adapter = netdev_priv(netdev);
5235 
5236 	if ((vf >= adapter->vfs_allocated_count) || (vlan > 4095) || (qos > 7))
5237 		return -EINVAL;
5238 	if (vlan || qos) {
5239 		err = igb_vlvf_set(adapter, vlan, !!vlan, vf);
5240 		if (err)
5241 			goto out;
5242 		igb_set_vmvir(adapter, vlan | (qos << VLAN_PRIO_SHIFT), vf);
5243 		igb_set_vmolr(adapter, vf, !vlan);
5244 		adapter->vf_data[vf].pf_vlan = vlan;
5245 		adapter->vf_data[vf].pf_qos = qos;
5246 		dev_info(&adapter->pdev->dev,
5247 			 "Setting VLAN %d, QOS 0x%x on VF %d\n", vlan, qos, vf);
5248 		if (test_bit(__IGB_DOWN, &adapter->state)) {
5249 			dev_warn(&adapter->pdev->dev,
5250 				 "The VF VLAN has been set,"
5251 				 " but the PF device is not up.\n");
5252 			dev_warn(&adapter->pdev->dev,
5253 				 "Bring the PF device up before"
5254 				 " attempting to use the VF device.\n");
5255 		}
5256 	} else {
5257 		igb_vlvf_set(adapter, adapter->vf_data[vf].pf_vlan,
5258 				   false, vf);
5259 		igb_set_vmvir(adapter, vlan, vf);
5260 		igb_set_vmolr(adapter, vf, true);
5261 		adapter->vf_data[vf].pf_vlan = 0;
5262 		adapter->vf_data[vf].pf_qos = 0;
5263        }
5264 out:
5265        return err;
5266 }
5267 
5268 static int igb_set_vf_vlan(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
5269 {
5270 	int add = (msgbuf[0] & E1000_VT_MSGINFO_MASK) >> E1000_VT_MSGINFO_SHIFT;
5271 	int vid = (msgbuf[1] & E1000_VLVF_VLANID_MASK);
5272 
5273 	return igb_vlvf_set(adapter, vid, add, vf);
5274 }
5275 
5276 static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf)
5277 {
5278 	/* clear flags - except flag that indicates PF has set the MAC */
5279 	adapter->vf_data[vf].flags &= IGB_VF_FLAG_PF_SET_MAC;
5280 	adapter->vf_data[vf].last_nack = jiffies;
5281 
5282 	/* reset offloads to defaults */
5283 	igb_set_vmolr(adapter, vf, true);
5284 
5285 	/* reset vlans for device */
5286 	igb_clear_vf_vfta(adapter, vf);
5287 	if (adapter->vf_data[vf].pf_vlan)
5288 		igb_ndo_set_vf_vlan(adapter->netdev, vf,
5289 				    adapter->vf_data[vf].pf_vlan,
5290 				    adapter->vf_data[vf].pf_qos);
5291 	else
5292 		igb_clear_vf_vfta(adapter, vf);
5293 
5294 	/* reset multicast table array for vf */
5295 	adapter->vf_data[vf].num_vf_mc_hashes = 0;
5296 
5297 	/* Flush and reset the mta with the new values */
5298 	igb_set_rx_mode(adapter->netdev);
5299 }
5300 
5301 static void igb_vf_reset_event(struct igb_adapter *adapter, u32 vf)
5302 {
5303 	unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses;
5304 
5305 	/* generate a new mac address as we were hotplug removed/added */
5306 	if (!(adapter->vf_data[vf].flags & IGB_VF_FLAG_PF_SET_MAC))
5307 		random_ether_addr(vf_mac);
5308 
5309 	/* process remaining reset events */
5310 	igb_vf_reset(adapter, vf);
5311 }
5312 
5313 static void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf)
5314 {
5315 	struct e1000_hw *hw = &adapter->hw;
5316 	unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses;
5317 	int rar_entry = hw->mac.rar_entry_count - (vf + 1);
5318 	u32 reg, msgbuf[3];
5319 	u8 *addr = (u8 *)(&msgbuf[1]);
5320 
5321 	/* process all the same items cleared in a function level reset */
5322 	igb_vf_reset(adapter, vf);
5323 
5324 	/* set vf mac address */
5325 	igb_rar_set_qsel(adapter, vf_mac, rar_entry, vf);
5326 
5327 	/* enable transmit and receive for vf */
5328 	reg = rd32(E1000_VFTE);
5329 	wr32(E1000_VFTE, reg | (1 << vf));
5330 	reg = rd32(E1000_VFRE);
5331 	wr32(E1000_VFRE, reg | (1 << vf));
5332 
5333 	adapter->vf_data[vf].flags |= IGB_VF_FLAG_CTS;
5334 
5335 	/* reply to reset with ack and vf mac address */
5336 	msgbuf[0] = E1000_VF_RESET | E1000_VT_MSGTYPE_ACK;
5337 	memcpy(addr, vf_mac, 6);
5338 	igb_write_mbx(hw, msgbuf, 3, vf);
5339 }
5340 
5341 static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf)
5342 {
5343 	/*
5344 	 * The VF MAC Address is stored in a packed array of bytes
5345 	 * starting at the second 32 bit word of the msg array
5346 	 */
5347 	unsigned char *addr = (char *)&msg[1];
5348 	int err = -1;
5349 
5350 	if (is_valid_ether_addr(addr))
5351 		err = igb_set_vf_mac(adapter, vf, addr);
5352 
5353 	return err;
5354 }
5355 
5356 static void igb_rcv_ack_from_vf(struct igb_adapter *adapter, u32 vf)
5357 {
5358 	struct e1000_hw *hw = &adapter->hw;
5359 	struct vf_data_storage *vf_data = &adapter->vf_data[vf];
5360 	u32 msg = E1000_VT_MSGTYPE_NACK;
5361 
5362 	/* if device isn't clear to send it shouldn't be reading either */
5363 	if (!(vf_data->flags & IGB_VF_FLAG_CTS) &&
5364 	    time_after(jiffies, vf_data->last_nack + (2 * HZ))) {
5365 		igb_write_mbx(hw, &msg, 1, vf);
5366 		vf_data->last_nack = jiffies;
5367 	}
5368 }
5369 
5370 static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
5371 {
5372 	struct pci_dev *pdev = adapter->pdev;
5373 	u32 msgbuf[E1000_VFMAILBOX_SIZE];
5374 	struct e1000_hw *hw = &adapter->hw;
5375 	struct vf_data_storage *vf_data = &adapter->vf_data[vf];
5376 	s32 retval;
5377 
5378 	retval = igb_read_mbx(hw, msgbuf, E1000_VFMAILBOX_SIZE, vf);
5379 
5380 	if (retval) {
5381 		/* if receive failed revoke VF CTS stats and restart init */
5382 		dev_err(&pdev->dev, "Error receiving message from VF\n");
5383 		vf_data->flags &= ~IGB_VF_FLAG_CTS;
5384 		if (!time_after(jiffies, vf_data->last_nack + (2 * HZ)))
5385 			return;
5386 		goto out;
5387 	}
5388 
5389 	/* this is a message we already processed, do nothing */
5390 	if (msgbuf[0] & (E1000_VT_MSGTYPE_ACK | E1000_VT_MSGTYPE_NACK))
5391 		return;
5392 
5393 	/*
5394 	 * until the vf completes a reset it should not be
5395 	 * allowed to start any configuration.
5396 	 */
5397 
5398 	if (msgbuf[0] == E1000_VF_RESET) {
5399 		igb_vf_reset_msg(adapter, vf);
5400 		return;
5401 	}
5402 
5403 	if (!(vf_data->flags & IGB_VF_FLAG_CTS)) {
5404 		if (!time_after(jiffies, vf_data->last_nack + (2 * HZ)))
5405 			return;
5406 		retval = -1;
5407 		goto out;
5408 	}
5409 
5410 	switch ((msgbuf[0] & 0xFFFF)) {
5411 	case E1000_VF_SET_MAC_ADDR:
5412 		retval = -EINVAL;
5413 		if (!(vf_data->flags & IGB_VF_FLAG_PF_SET_MAC))
5414 			retval = igb_set_vf_mac_addr(adapter, msgbuf, vf);
5415 		else
5416 			dev_warn(&pdev->dev,
5417 				 "VF %d attempted to override administratively "
5418 				 "set MAC address\nReload the VF driver to "
5419 				 "resume operations\n", vf);
5420 		break;
5421 	case E1000_VF_SET_PROMISC:
5422 		retval = igb_set_vf_promisc(adapter, msgbuf, vf);
5423 		break;
5424 	case E1000_VF_SET_MULTICAST:
5425 		retval = igb_set_vf_multicasts(adapter, msgbuf, vf);
5426 		break;
5427 	case E1000_VF_SET_LPE:
5428 		retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf);
5429 		break;
5430 	case E1000_VF_SET_VLAN:
5431 		retval = -1;
5432 		if (vf_data->pf_vlan)
5433 			dev_warn(&pdev->dev,
5434 				 "VF %d attempted to override administratively "
5435 				 "set VLAN tag\nReload the VF driver to "
5436 				 "resume operations\n", vf);
5437 		else
5438 			retval = igb_set_vf_vlan(adapter, msgbuf, vf);
5439 		break;
5440 	default:
5441 		dev_err(&pdev->dev, "Unhandled Msg %08x\n", msgbuf[0]);
5442 		retval = -1;
5443 		break;
5444 	}
5445 
5446 	msgbuf[0] |= E1000_VT_MSGTYPE_CTS;
5447 out:
5448 	/* notify the VF of the results of what it sent us */
5449 	if (retval)
5450 		msgbuf[0] |= E1000_VT_MSGTYPE_NACK;
5451 	else
5452 		msgbuf[0] |= E1000_VT_MSGTYPE_ACK;
5453 
5454 	igb_write_mbx(hw, msgbuf, 1, vf);
5455 }
5456 
5457 static void igb_msg_task(struct igb_adapter *adapter)
5458 {
5459 	struct e1000_hw *hw = &adapter->hw;
5460 	u32 vf;
5461 
5462 	for (vf = 0; vf < adapter->vfs_allocated_count; vf++) {
5463 		/* process any reset requests */
5464 		if (!igb_check_for_rst(hw, vf))
5465 			igb_vf_reset_event(adapter, vf);
5466 
5467 		/* process any messages pending */
5468 		if (!igb_check_for_msg(hw, vf))
5469 			igb_rcv_msg_from_vf(adapter, vf);
5470 
5471 		/* process any acks */
5472 		if (!igb_check_for_ack(hw, vf))
5473 			igb_rcv_ack_from_vf(adapter, vf);
5474 	}
5475 }
5476 
5477 /**
5478  *  igb_set_uta - Set unicast filter table address
5479  *  @adapter: board private structure
5480  *
5481  *  The unicast table address is a register array of 32-bit registers.
5482  *  The table is meant to be used in a way similar to how the MTA is used
5483  *  however due to certain limitations in the hardware it is necessary to
5484  *  set all the hash bits to 1 and use the VMOLR ROPE bit as a promiscuous
5485  *  enable bit to allow vlan tag stripping when promiscuous mode is enabled
5486  **/
5487 static void igb_set_uta(struct igb_adapter *adapter)
5488 {
5489 	struct e1000_hw *hw = &adapter->hw;
5490 	int i;
5491 
5492 	/* The UTA table only exists on 82576 hardware and newer */
5493 	if (hw->mac.type < e1000_82576)
5494 		return;
5495 
5496 	/* we only need to do this if VMDq is enabled */
5497 	if (!adapter->vfs_allocated_count)
5498 		return;
5499 
5500 	for (i = 0; i < hw->mac.uta_reg_count; i++)
5501 		array_wr32(E1000_UTA, i, ~0);
5502 }
5503 
5504 /**
5505  * igb_intr_msi - Interrupt Handler
5506  * @irq: interrupt number
5507  * @data: pointer to a network interface device structure
5508  **/
5509 static irqreturn_t igb_intr_msi(int irq, void *data)
5510 {
5511 	struct igb_adapter *adapter = data;
5512 	struct igb_q_vector *q_vector = adapter->q_vector[0];
5513 	struct e1000_hw *hw = &adapter->hw;
5514 	/* read ICR disables interrupts using IAM */
5515 	u32 icr = rd32(E1000_ICR);
5516 
5517 	igb_write_itr(q_vector);
5518 
5519 	if (icr & E1000_ICR_DRSTA)
5520 		schedule_work(&adapter->reset_task);
5521 
5522 	if (icr & E1000_ICR_DOUTSYNC) {
5523 		/* HW is reporting DMA is out of sync */
5524 		adapter->stats.doosync++;
5525 	}
5526 
5527 	if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
5528 		hw->mac.get_link_status = 1;
5529 		if (!test_bit(__IGB_DOWN, &adapter->state))
5530 			mod_timer(&adapter->watchdog_timer, jiffies + 1);
5531 	}
5532 
5533 	napi_schedule(&q_vector->napi);
5534 
5535 	return IRQ_HANDLED;
5536 }
5537 
5538 /**
5539  * igb_intr - Legacy Interrupt Handler
5540  * @irq: interrupt number
5541  * @data: pointer to a network interface device structure
5542  **/
5543 static irqreturn_t igb_intr(int irq, void *data)
5544 {
5545 	struct igb_adapter *adapter = data;
5546 	struct igb_q_vector *q_vector = adapter->q_vector[0];
5547 	struct e1000_hw *hw = &adapter->hw;
5548 	/* Interrupt Auto-Mask...upon reading ICR, interrupts are masked.  No
5549 	 * need for the IMC write */
5550 	u32 icr = rd32(E1000_ICR);
5551 
5552 	/* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
5553 	 * not set, then the adapter didn't send an interrupt */
5554 	if (!(icr & E1000_ICR_INT_ASSERTED))
5555 		return IRQ_NONE;
5556 
5557 	igb_write_itr(q_vector);
5558 
5559 	if (icr & E1000_ICR_DRSTA)
5560 		schedule_work(&adapter->reset_task);
5561 
5562 	if (icr & E1000_ICR_DOUTSYNC) {
5563 		/* HW is reporting DMA is out of sync */
5564 		adapter->stats.doosync++;
5565 	}
5566 
5567 	if (icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
5568 		hw->mac.get_link_status = 1;
5569 		/* guard against interrupt when we're going down */
5570 		if (!test_bit(__IGB_DOWN, &adapter->state))
5571 			mod_timer(&adapter->watchdog_timer, jiffies + 1);
5572 	}
5573 
5574 	napi_schedule(&q_vector->napi);
5575 
5576 	return IRQ_HANDLED;
5577 }
5578 
5579 void igb_ring_irq_enable(struct igb_q_vector *q_vector)
5580 {
5581 	struct igb_adapter *adapter = q_vector->adapter;
5582 	struct e1000_hw *hw = &adapter->hw;
5583 
5584 	if ((q_vector->rx.ring && (adapter->rx_itr_setting & 3)) ||
5585 	    (!q_vector->rx.ring && (adapter->tx_itr_setting & 3))) {
5586 		if ((adapter->num_q_vectors == 1) && !adapter->vf_data)
5587 			igb_set_itr(q_vector);
5588 		else
5589 			igb_update_ring_itr(q_vector);
5590 	}
5591 
5592 	if (!test_bit(__IGB_DOWN, &adapter->state)) {
5593 		if (adapter->msix_entries)
5594 			wr32(E1000_EIMS, q_vector->eims_value);
5595 		else
5596 			igb_irq_enable(adapter);
5597 	}
5598 }
5599 
5600 /**
5601  * igb_poll - NAPI Rx polling callback
5602  * @napi: napi polling structure
5603  * @budget: count of how many packets we should handle
5604  **/
5605 static int igb_poll(struct napi_struct *napi, int budget)
5606 {
5607 	struct igb_q_vector *q_vector = container_of(napi,
5608 	                                             struct igb_q_vector,
5609 	                                             napi);
5610 	bool clean_complete = true;
5611 
5612 #ifdef CONFIG_IGB_DCA
5613 	if (q_vector->adapter->flags & IGB_FLAG_DCA_ENABLED)
5614 		igb_update_dca(q_vector);
5615 #endif
5616 	if (q_vector->tx.ring)
5617 		clean_complete = igb_clean_tx_irq(q_vector);
5618 
5619 	if (q_vector->rx.ring)
5620 		clean_complete &= igb_clean_rx_irq(q_vector, budget);
5621 
5622 	/* If all work not completed, return budget and keep polling */
5623 	if (!clean_complete)
5624 		return budget;
5625 
5626 	/* If not enough Rx work done, exit the polling mode */
5627 	napi_complete(napi);
5628 	igb_ring_irq_enable(q_vector);
5629 
5630 	return 0;
5631 }
5632 
5633 /**
5634  * igb_systim_to_hwtstamp - convert system time value to hw timestamp
5635  * @adapter: board private structure
5636  * @shhwtstamps: timestamp structure to update
5637  * @regval: unsigned 64bit system time value.
5638  *
5639  * We need to convert the system time value stored in the RX/TXSTMP registers
5640  * into a hwtstamp which can be used by the upper level timestamping functions
5641  */
5642 static void igb_systim_to_hwtstamp(struct igb_adapter *adapter,
5643                                    struct skb_shared_hwtstamps *shhwtstamps,
5644                                    u64 regval)
5645 {
5646 	u64 ns;
5647 
5648 	/*
5649 	 * The 82580 starts with 1ns at bit 0 in RX/TXSTMPL, shift this up to
5650 	 * 24 to match clock shift we setup earlier.
5651 	 */
5652 	if (adapter->hw.mac.type >= e1000_82580)
5653 		regval <<= IGB_82580_TSYNC_SHIFT;
5654 
5655 	ns = timecounter_cyc2time(&adapter->clock, regval);
5656 	timecompare_update(&adapter->compare, ns);
5657 	memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
5658 	shhwtstamps->hwtstamp = ns_to_ktime(ns);
5659 	shhwtstamps->syststamp = timecompare_transform(&adapter->compare, ns);
5660 }
5661 
5662 /**
5663  * igb_tx_hwtstamp - utility function which checks for TX time stamp
5664  * @q_vector: pointer to q_vector containing needed info
5665  * @buffer: pointer to igb_tx_buffer structure
5666  *
5667  * If we were asked to do hardware stamping and such a time stamp is
5668  * available, then it must have been for this skb here because we only
5669  * allow only one such packet into the queue.
5670  */
5671 static void igb_tx_hwtstamp(struct igb_q_vector *q_vector,
5672 			    struct igb_tx_buffer *buffer_info)
5673 {
5674 	struct igb_adapter *adapter = q_vector->adapter;
5675 	struct e1000_hw *hw = &adapter->hw;
5676 	struct skb_shared_hwtstamps shhwtstamps;
5677 	u64 regval;
5678 
5679 	/* if skb does not support hw timestamp or TX stamp not valid exit */
5680 	if (likely(!(buffer_info->tx_flags & IGB_TX_FLAGS_TSTAMP)) ||
5681 	    !(rd32(E1000_TSYNCTXCTL) & E1000_TSYNCTXCTL_VALID))
5682 		return;
5683 
5684 	regval = rd32(E1000_TXSTMPL);
5685 	regval |= (u64)rd32(E1000_TXSTMPH) << 32;
5686 
5687 	igb_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
5688 	skb_tstamp_tx(buffer_info->skb, &shhwtstamps);
5689 }
5690 
5691 /**
5692  * igb_clean_tx_irq - Reclaim resources after transmit completes
5693  * @q_vector: pointer to q_vector containing needed info
5694  * returns true if ring is completely cleaned
5695  **/
5696 static bool igb_clean_tx_irq(struct igb_q_vector *q_vector)
5697 {
5698 	struct igb_adapter *adapter = q_vector->adapter;
5699 	struct igb_ring *tx_ring = q_vector->tx.ring;
5700 	struct igb_tx_buffer *tx_buffer;
5701 	union e1000_adv_tx_desc *tx_desc, *eop_desc;
5702 	unsigned int total_bytes = 0, total_packets = 0;
5703 	unsigned int budget = q_vector->tx.work_limit;
5704 	unsigned int i = tx_ring->next_to_clean;
5705 
5706 	if (test_bit(__IGB_DOWN, &adapter->state))
5707 		return true;
5708 
5709 	tx_buffer = &tx_ring->tx_buffer_info[i];
5710 	tx_desc = IGB_TX_DESC(tx_ring, i);
5711 	i -= tx_ring->count;
5712 
5713 	for (; budget; budget--) {
5714 		eop_desc = tx_buffer->next_to_watch;
5715 
5716 		/* prevent any other reads prior to eop_desc */
5717 		rmb();
5718 
5719 		/* if next_to_watch is not set then there is no work pending */
5720 		if (!eop_desc)
5721 			break;
5722 
5723 		/* if DD is not set pending work has not been completed */
5724 		if (!(eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)))
5725 			break;
5726 
5727 		/* clear next_to_watch to prevent false hangs */
5728 		tx_buffer->next_to_watch = NULL;
5729 
5730 		/* update the statistics for this packet */
5731 		total_bytes += tx_buffer->bytecount;
5732 		total_packets += tx_buffer->gso_segs;
5733 
5734 		/* retrieve hardware timestamp */
5735 		igb_tx_hwtstamp(q_vector, tx_buffer);
5736 
5737 		/* free the skb */
5738 		dev_kfree_skb_any(tx_buffer->skb);
5739 		tx_buffer->skb = NULL;
5740 
5741 		/* unmap skb header data */
5742 		dma_unmap_single(tx_ring->dev,
5743 				 tx_buffer->dma,
5744 				 tx_buffer->length,
5745 				 DMA_TO_DEVICE);
5746 
5747 		/* clear last DMA location and unmap remaining buffers */
5748 		while (tx_desc != eop_desc) {
5749 			tx_buffer->dma = 0;
5750 
5751 			tx_buffer++;
5752 			tx_desc++;
5753 			i++;
5754 			if (unlikely(!i)) {
5755 				i -= tx_ring->count;
5756 				tx_buffer = tx_ring->tx_buffer_info;
5757 				tx_desc = IGB_TX_DESC(tx_ring, 0);
5758 			}
5759 
5760 			/* unmap any remaining paged data */
5761 			if (tx_buffer->dma) {
5762 				dma_unmap_page(tx_ring->dev,
5763 					       tx_buffer->dma,
5764 					       tx_buffer->length,
5765 					       DMA_TO_DEVICE);
5766 			}
5767 		}
5768 
5769 		/* clear last DMA location */
5770 		tx_buffer->dma = 0;
5771 
5772 		/* move us one more past the eop_desc for start of next pkt */
5773 		tx_buffer++;
5774 		tx_desc++;
5775 		i++;
5776 		if (unlikely(!i)) {
5777 			i -= tx_ring->count;
5778 			tx_buffer = tx_ring->tx_buffer_info;
5779 			tx_desc = IGB_TX_DESC(tx_ring, 0);
5780 		}
5781 	}
5782 
5783 	i += tx_ring->count;
5784 	tx_ring->next_to_clean = i;
5785 	u64_stats_update_begin(&tx_ring->tx_syncp);
5786 	tx_ring->tx_stats.bytes += total_bytes;
5787 	tx_ring->tx_stats.packets += total_packets;
5788 	u64_stats_update_end(&tx_ring->tx_syncp);
5789 	q_vector->tx.total_bytes += total_bytes;
5790 	q_vector->tx.total_packets += total_packets;
5791 
5792 	if (test_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags)) {
5793 		struct e1000_hw *hw = &adapter->hw;
5794 
5795 		eop_desc = tx_buffer->next_to_watch;
5796 
5797 		/* Detect a transmit hang in hardware, this serializes the
5798 		 * check with the clearing of time_stamp and movement of i */
5799 		clear_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags);
5800 		if (eop_desc &&
5801 		    time_after(jiffies, tx_buffer->time_stamp +
5802 			       (adapter->tx_timeout_factor * HZ)) &&
5803 		    !(rd32(E1000_STATUS) & E1000_STATUS_TXOFF)) {
5804 
5805 			/* detected Tx unit hang */
5806 			dev_err(tx_ring->dev,
5807 				"Detected Tx Unit Hang\n"
5808 				"  Tx Queue             <%d>\n"
5809 				"  TDH                  <%x>\n"
5810 				"  TDT                  <%x>\n"
5811 				"  next_to_use          <%x>\n"
5812 				"  next_to_clean        <%x>\n"
5813 				"buffer_info[next_to_clean]\n"
5814 				"  time_stamp           <%lx>\n"
5815 				"  next_to_watch        <%p>\n"
5816 				"  jiffies              <%lx>\n"
5817 				"  desc.status          <%x>\n",
5818 				tx_ring->queue_index,
5819 				rd32(E1000_TDH(tx_ring->reg_idx)),
5820 				readl(tx_ring->tail),
5821 				tx_ring->next_to_use,
5822 				tx_ring->next_to_clean,
5823 				tx_buffer->time_stamp,
5824 				eop_desc,
5825 				jiffies,
5826 				eop_desc->wb.status);
5827 			netif_stop_subqueue(tx_ring->netdev,
5828 					    tx_ring->queue_index);
5829 
5830 			/* we are about to reset, no point in enabling stuff */
5831 			return true;
5832 		}
5833 	}
5834 
5835 	if (unlikely(total_packets &&
5836 		     netif_carrier_ok(tx_ring->netdev) &&
5837 		     igb_desc_unused(tx_ring) >= IGB_TX_QUEUE_WAKE)) {
5838 		/* Make sure that anybody stopping the queue after this
5839 		 * sees the new next_to_clean.
5840 		 */
5841 		smp_mb();
5842 		if (__netif_subqueue_stopped(tx_ring->netdev,
5843 					     tx_ring->queue_index) &&
5844 		    !(test_bit(__IGB_DOWN, &adapter->state))) {
5845 			netif_wake_subqueue(tx_ring->netdev,
5846 					    tx_ring->queue_index);
5847 
5848 			u64_stats_update_begin(&tx_ring->tx_syncp);
5849 			tx_ring->tx_stats.restart_queue++;
5850 			u64_stats_update_end(&tx_ring->tx_syncp);
5851 		}
5852 	}
5853 
5854 	return !!budget;
5855 }
5856 
5857 static inline void igb_rx_checksum(struct igb_ring *ring,
5858 				   union e1000_adv_rx_desc *rx_desc,
5859 				   struct sk_buff *skb)
5860 {
5861 	skb_checksum_none_assert(skb);
5862 
5863 	/* Ignore Checksum bit is set */
5864 	if (igb_test_staterr(rx_desc, E1000_RXD_STAT_IXSM))
5865 		return;
5866 
5867 	/* Rx checksum disabled via ethtool */
5868 	if (!(ring->netdev->features & NETIF_F_RXCSUM))
5869 		return;
5870 
5871 	/* TCP/UDP checksum error bit is set */
5872 	if (igb_test_staterr(rx_desc,
5873 			     E1000_RXDEXT_STATERR_TCPE |
5874 			     E1000_RXDEXT_STATERR_IPE)) {
5875 		/*
5876 		 * work around errata with sctp packets where the TCPE aka
5877 		 * L4E bit is set incorrectly on 64 byte (60 byte w/o crc)
5878 		 * packets, (aka let the stack check the crc32c)
5879 		 */
5880 		if (!((skb->len == 60) &&
5881 		      test_bit(IGB_RING_FLAG_RX_SCTP_CSUM, &ring->flags))) {
5882 			u64_stats_update_begin(&ring->rx_syncp);
5883 			ring->rx_stats.csum_err++;
5884 			u64_stats_update_end(&ring->rx_syncp);
5885 		}
5886 		/* let the stack verify checksum errors */
5887 		return;
5888 	}
5889 	/* It must be a TCP or UDP packet with a valid checksum */
5890 	if (igb_test_staterr(rx_desc, E1000_RXD_STAT_TCPCS |
5891 				      E1000_RXD_STAT_UDPCS))
5892 		skb->ip_summed = CHECKSUM_UNNECESSARY;
5893 
5894 	dev_dbg(ring->dev, "cksum success: bits %08X\n",
5895 		le32_to_cpu(rx_desc->wb.upper.status_error));
5896 }
5897 
5898 static inline void igb_rx_hash(struct igb_ring *ring,
5899 			       union e1000_adv_rx_desc *rx_desc,
5900 			       struct sk_buff *skb)
5901 {
5902 	if (ring->netdev->features & NETIF_F_RXHASH)
5903 		skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss);
5904 }
5905 
5906 static void igb_rx_hwtstamp(struct igb_q_vector *q_vector,
5907 			    union e1000_adv_rx_desc *rx_desc,
5908 			    struct sk_buff *skb)
5909 {
5910 	struct igb_adapter *adapter = q_vector->adapter;
5911 	struct e1000_hw *hw = &adapter->hw;
5912 	u64 regval;
5913 
5914 	if (!igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP |
5915 				       E1000_RXDADV_STAT_TS))
5916 		return;
5917 
5918 	/*
5919 	 * If this bit is set, then the RX registers contain the time stamp. No
5920 	 * other packet will be time stamped until we read these registers, so
5921 	 * read the registers to make them available again. Because only one
5922 	 * packet can be time stamped at a time, we know that the register
5923 	 * values must belong to this one here and therefore we don't need to
5924 	 * compare any of the additional attributes stored for it.
5925 	 *
5926 	 * If nothing went wrong, then it should have a shared tx_flags that we
5927 	 * can turn into a skb_shared_hwtstamps.
5928 	 */
5929 	if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) {
5930 		u32 *stamp = (u32 *)skb->data;
5931 		regval = le32_to_cpu(*(stamp + 2));
5932 		regval |= (u64)le32_to_cpu(*(stamp + 3)) << 32;
5933 		skb_pull(skb, IGB_TS_HDR_LEN);
5934 	} else {
5935 		if(!(rd32(E1000_TSYNCRXCTL) & E1000_TSYNCRXCTL_VALID))
5936 			return;
5937 
5938 		regval = rd32(E1000_RXSTMPL);
5939 		regval |= (u64)rd32(E1000_RXSTMPH) << 32;
5940 	}
5941 
5942 	igb_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), regval);
5943 }
5944 
5945 static void igb_rx_vlan(struct igb_ring *ring,
5946 			union e1000_adv_rx_desc *rx_desc,
5947 			struct sk_buff *skb)
5948 {
5949 	if (igb_test_staterr(rx_desc, E1000_RXD_STAT_VP)) {
5950 		u16 vid;
5951 		if (igb_test_staterr(rx_desc, E1000_RXDEXT_STATERR_LB) &&
5952 		    test_bit(IGB_RING_FLAG_RX_LB_VLAN_BSWAP, &ring->flags))
5953 			vid = be16_to_cpu(rx_desc->wb.upper.vlan);
5954 		else
5955 			vid = le16_to_cpu(rx_desc->wb.upper.vlan);
5956 
5957 		__vlan_hwaccel_put_tag(skb, vid);
5958 	}
5959 }
5960 
5961 static inline u16 igb_get_hlen(union e1000_adv_rx_desc *rx_desc)
5962 {
5963 	/* HW will not DMA in data larger than the given buffer, even if it
5964 	 * parses the (NFS, of course) header to be larger.  In that case, it
5965 	 * fills the header buffer and spills the rest into the page.
5966 	 */
5967 	u16 hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hdr_info) &
5968 	           E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT;
5969 	if (hlen > IGB_RX_HDR_LEN)
5970 		hlen = IGB_RX_HDR_LEN;
5971 	return hlen;
5972 }
5973 
5974 static bool igb_clean_rx_irq(struct igb_q_vector *q_vector, int budget)
5975 {
5976 	struct igb_ring *rx_ring = q_vector->rx.ring;
5977 	union e1000_adv_rx_desc *rx_desc;
5978 	const int current_node = numa_node_id();
5979 	unsigned int total_bytes = 0, total_packets = 0;
5980 	u16 cleaned_count = igb_desc_unused(rx_ring);
5981 	u16 i = rx_ring->next_to_clean;
5982 
5983 	rx_desc = IGB_RX_DESC(rx_ring, i);
5984 
5985 	while (igb_test_staterr(rx_desc, E1000_RXD_STAT_DD)) {
5986 		struct igb_rx_buffer *buffer_info = &rx_ring->rx_buffer_info[i];
5987 		struct sk_buff *skb = buffer_info->skb;
5988 		union e1000_adv_rx_desc *next_rxd;
5989 
5990 		buffer_info->skb = NULL;
5991 		prefetch(skb->data);
5992 
5993 		i++;
5994 		if (i == rx_ring->count)
5995 			i = 0;
5996 
5997 		next_rxd = IGB_RX_DESC(rx_ring, i);
5998 		prefetch(next_rxd);
5999 
6000 		/*
6001 		 * This memory barrier is needed to keep us from reading
6002 		 * any other fields out of the rx_desc until we know the
6003 		 * RXD_STAT_DD bit is set
6004 		 */
6005 		rmb();
6006 
6007 		if (!skb_is_nonlinear(skb)) {
6008 			__skb_put(skb, igb_get_hlen(rx_desc));
6009 			dma_unmap_single(rx_ring->dev, buffer_info->dma,
6010 					 IGB_RX_HDR_LEN,
6011 					 DMA_FROM_DEVICE);
6012 			buffer_info->dma = 0;
6013 		}
6014 
6015 		if (rx_desc->wb.upper.length) {
6016 			u16 length = le16_to_cpu(rx_desc->wb.upper.length);
6017 
6018 			skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,
6019 						buffer_info->page,
6020 						buffer_info->page_offset,
6021 						length);
6022 
6023 			skb->len += length;
6024 			skb->data_len += length;
6025 			skb->truesize += PAGE_SIZE / 2;
6026 
6027 			if ((page_count(buffer_info->page) != 1) ||
6028 			    (page_to_nid(buffer_info->page) != current_node))
6029 				buffer_info->page = NULL;
6030 			else
6031 				get_page(buffer_info->page);
6032 
6033 			dma_unmap_page(rx_ring->dev, buffer_info->page_dma,
6034 				       PAGE_SIZE / 2, DMA_FROM_DEVICE);
6035 			buffer_info->page_dma = 0;
6036 		}
6037 
6038 		if (!igb_test_staterr(rx_desc, E1000_RXD_STAT_EOP)) {
6039 			struct igb_rx_buffer *next_buffer;
6040 			next_buffer = &rx_ring->rx_buffer_info[i];
6041 			buffer_info->skb = next_buffer->skb;
6042 			buffer_info->dma = next_buffer->dma;
6043 			next_buffer->skb = skb;
6044 			next_buffer->dma = 0;
6045 			goto next_desc;
6046 		}
6047 
6048 		if (igb_test_staterr(rx_desc,
6049 				     E1000_RXDEXT_ERR_FRAME_ERR_MASK)) {
6050 			dev_kfree_skb_any(skb);
6051 			goto next_desc;
6052 		}
6053 
6054 		igb_rx_hwtstamp(q_vector, rx_desc, skb);
6055 		igb_rx_hash(rx_ring, rx_desc, skb);
6056 		igb_rx_checksum(rx_ring, rx_desc, skb);
6057 		igb_rx_vlan(rx_ring, rx_desc, skb);
6058 
6059 		total_bytes += skb->len;
6060 		total_packets++;
6061 
6062 		skb->protocol = eth_type_trans(skb, rx_ring->netdev);
6063 
6064 		napi_gro_receive(&q_vector->napi, skb);
6065 
6066 		budget--;
6067 next_desc:
6068 		if (!budget)
6069 			break;
6070 
6071 		cleaned_count++;
6072 		/* return some buffers to hardware, one at a time is too slow */
6073 		if (cleaned_count >= IGB_RX_BUFFER_WRITE) {
6074 			igb_alloc_rx_buffers(rx_ring, cleaned_count);
6075 			cleaned_count = 0;
6076 		}
6077 
6078 		/* use prefetched values */
6079 		rx_desc = next_rxd;
6080 	}
6081 
6082 	rx_ring->next_to_clean = i;
6083 	u64_stats_update_begin(&rx_ring->rx_syncp);
6084 	rx_ring->rx_stats.packets += total_packets;
6085 	rx_ring->rx_stats.bytes += total_bytes;
6086 	u64_stats_update_end(&rx_ring->rx_syncp);
6087 	q_vector->rx.total_packets += total_packets;
6088 	q_vector->rx.total_bytes += total_bytes;
6089 
6090 	if (cleaned_count)
6091 		igb_alloc_rx_buffers(rx_ring, cleaned_count);
6092 
6093 	return !!budget;
6094 }
6095 
6096 static bool igb_alloc_mapped_skb(struct igb_ring *rx_ring,
6097 				 struct igb_rx_buffer *bi)
6098 {
6099 	struct sk_buff *skb = bi->skb;
6100 	dma_addr_t dma = bi->dma;
6101 
6102 	if (dma)
6103 		return true;
6104 
6105 	if (likely(!skb)) {
6106 		skb = netdev_alloc_skb_ip_align(rx_ring->netdev,
6107 						IGB_RX_HDR_LEN);
6108 		bi->skb = skb;
6109 		if (!skb) {
6110 			rx_ring->rx_stats.alloc_failed++;
6111 			return false;
6112 		}
6113 
6114 		/* initialize skb for ring */
6115 		skb_record_rx_queue(skb, rx_ring->queue_index);
6116 	}
6117 
6118 	dma = dma_map_single(rx_ring->dev, skb->data,
6119 			     IGB_RX_HDR_LEN, DMA_FROM_DEVICE);
6120 
6121 	if (dma_mapping_error(rx_ring->dev, dma)) {
6122 		rx_ring->rx_stats.alloc_failed++;
6123 		return false;
6124 	}
6125 
6126 	bi->dma = dma;
6127 	return true;
6128 }
6129 
6130 static bool igb_alloc_mapped_page(struct igb_ring *rx_ring,
6131 				  struct igb_rx_buffer *bi)
6132 {
6133 	struct page *page = bi->page;
6134 	dma_addr_t page_dma = bi->page_dma;
6135 	unsigned int page_offset = bi->page_offset ^ (PAGE_SIZE / 2);
6136 
6137 	if (page_dma)
6138 		return true;
6139 
6140 	if (!page) {
6141 		page = netdev_alloc_page(rx_ring->netdev);
6142 		bi->page = page;
6143 		if (unlikely(!page)) {
6144 			rx_ring->rx_stats.alloc_failed++;
6145 			return false;
6146 		}
6147 	}
6148 
6149 	page_dma = dma_map_page(rx_ring->dev, page,
6150 				page_offset, PAGE_SIZE / 2,
6151 				DMA_FROM_DEVICE);
6152 
6153 	if (dma_mapping_error(rx_ring->dev, page_dma)) {
6154 		rx_ring->rx_stats.alloc_failed++;
6155 		return false;
6156 	}
6157 
6158 	bi->page_dma = page_dma;
6159 	bi->page_offset = page_offset;
6160 	return true;
6161 }
6162 
6163 /**
6164  * igb_alloc_rx_buffers - Replace used receive buffers; packet split
6165  * @adapter: address of board private structure
6166  **/
6167 void igb_alloc_rx_buffers(struct igb_ring *rx_ring, u16 cleaned_count)
6168 {
6169 	union e1000_adv_rx_desc *rx_desc;
6170 	struct igb_rx_buffer *bi;
6171 	u16 i = rx_ring->next_to_use;
6172 
6173 	rx_desc = IGB_RX_DESC(rx_ring, i);
6174 	bi = &rx_ring->rx_buffer_info[i];
6175 	i -= rx_ring->count;
6176 
6177 	while (cleaned_count--) {
6178 		if (!igb_alloc_mapped_skb(rx_ring, bi))
6179 			break;
6180 
6181 		/* Refresh the desc even if buffer_addrs didn't change
6182 		 * because each write-back erases this info. */
6183 		rx_desc->read.hdr_addr = cpu_to_le64(bi->dma);
6184 
6185 		if (!igb_alloc_mapped_page(rx_ring, bi))
6186 			break;
6187 
6188 		rx_desc->read.pkt_addr = cpu_to_le64(bi->page_dma);
6189 
6190 		rx_desc++;
6191 		bi++;
6192 		i++;
6193 		if (unlikely(!i)) {
6194 			rx_desc = IGB_RX_DESC(rx_ring, 0);
6195 			bi = rx_ring->rx_buffer_info;
6196 			i -= rx_ring->count;
6197 		}
6198 
6199 		/* clear the hdr_addr for the next_to_use descriptor */
6200 		rx_desc->read.hdr_addr = 0;
6201 	}
6202 
6203 	i += rx_ring->count;
6204 
6205 	if (rx_ring->next_to_use != i) {
6206 		rx_ring->next_to_use = i;
6207 
6208 		/* Force memory writes to complete before letting h/w
6209 		 * know there are new descriptors to fetch.  (Only
6210 		 * applicable for weak-ordered memory model archs,
6211 		 * such as IA-64). */
6212 		wmb();
6213 		writel(i, rx_ring->tail);
6214 	}
6215 }
6216 
6217 /**
6218  * igb_mii_ioctl -
6219  * @netdev:
6220  * @ifreq:
6221  * @cmd:
6222  **/
6223 static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
6224 {
6225 	struct igb_adapter *adapter = netdev_priv(netdev);
6226 	struct mii_ioctl_data *data = if_mii(ifr);
6227 
6228 	if (adapter->hw.phy.media_type != e1000_media_type_copper)
6229 		return -EOPNOTSUPP;
6230 
6231 	switch (cmd) {
6232 	case SIOCGMIIPHY:
6233 		data->phy_id = adapter->hw.phy.addr;
6234 		break;
6235 	case SIOCGMIIREG:
6236 		if (igb_read_phy_reg(&adapter->hw, data->reg_num & 0x1F,
6237 		                     &data->val_out))
6238 			return -EIO;
6239 		break;
6240 	case SIOCSMIIREG:
6241 	default:
6242 		return -EOPNOTSUPP;
6243 	}
6244 	return 0;
6245 }
6246 
6247 /**
6248  * igb_hwtstamp_ioctl - control hardware time stamping
6249  * @netdev:
6250  * @ifreq:
6251  * @cmd:
6252  *
6253  * Outgoing time stamping can be enabled and disabled. Play nice and
6254  * disable it when requested, although it shouldn't case any overhead
6255  * when no packet needs it. At most one packet in the queue may be
6256  * marked for time stamping, otherwise it would be impossible to tell
6257  * for sure to which packet the hardware time stamp belongs.
6258  *
6259  * Incoming time stamping has to be configured via the hardware
6260  * filters. Not all combinations are supported, in particular event
6261  * type has to be specified. Matching the kind of event packet is
6262  * not supported, with the exception of "all V2 events regardless of
6263  * level 2 or 4".
6264  *
6265  **/
6266 static int igb_hwtstamp_ioctl(struct net_device *netdev,
6267 			      struct ifreq *ifr, int cmd)
6268 {
6269 	struct igb_adapter *adapter = netdev_priv(netdev);
6270 	struct e1000_hw *hw = &adapter->hw;
6271 	struct hwtstamp_config config;
6272 	u32 tsync_tx_ctl = E1000_TSYNCTXCTL_ENABLED;
6273 	u32 tsync_rx_ctl = E1000_TSYNCRXCTL_ENABLED;
6274 	u32 tsync_rx_cfg = 0;
6275 	bool is_l4 = false;
6276 	bool is_l2 = false;
6277 	u32 regval;
6278 
6279 	if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
6280 		return -EFAULT;
6281 
6282 	/* reserved for future extensions */
6283 	if (config.flags)
6284 		return -EINVAL;
6285 
6286 	switch (config.tx_type) {
6287 	case HWTSTAMP_TX_OFF:
6288 		tsync_tx_ctl = 0;
6289 	case HWTSTAMP_TX_ON:
6290 		break;
6291 	default:
6292 		return -ERANGE;
6293 	}
6294 
6295 	switch (config.rx_filter) {
6296 	case HWTSTAMP_FILTER_NONE:
6297 		tsync_rx_ctl = 0;
6298 		break;
6299 	case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
6300 	case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
6301 	case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
6302 	case HWTSTAMP_FILTER_ALL:
6303 		/*
6304 		 * register TSYNCRXCFG must be set, therefore it is not
6305 		 * possible to time stamp both Sync and Delay_Req messages
6306 		 * => fall back to time stamping all packets
6307 		 */
6308 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_ALL;
6309 		config.rx_filter = HWTSTAMP_FILTER_ALL;
6310 		break;
6311 	case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
6312 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L4_V1;
6313 		tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE;
6314 		is_l4 = true;
6315 		break;
6316 	case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
6317 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L4_V1;
6318 		tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE;
6319 		is_l4 = true;
6320 		break;
6321 	case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
6322 	case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
6323 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L2_L4_V2;
6324 		tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V2_SYNC_MESSAGE;
6325 		is_l2 = true;
6326 		is_l4 = true;
6327 		config.rx_filter = HWTSTAMP_FILTER_SOME;
6328 		break;
6329 	case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
6330 	case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
6331 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_L2_L4_V2;
6332 		tsync_rx_cfg = E1000_TSYNCRXCFG_PTP_V2_DELAY_REQ_MESSAGE;
6333 		is_l2 = true;
6334 		is_l4 = true;
6335 		config.rx_filter = HWTSTAMP_FILTER_SOME;
6336 		break;
6337 	case HWTSTAMP_FILTER_PTP_V2_EVENT:
6338 	case HWTSTAMP_FILTER_PTP_V2_SYNC:
6339 	case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
6340 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_EVENT_V2;
6341 		config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
6342 		is_l2 = true;
6343 		is_l4 = true;
6344 		break;
6345 	default:
6346 		return -ERANGE;
6347 	}
6348 
6349 	if (hw->mac.type == e1000_82575) {
6350 		if (tsync_rx_ctl | tsync_tx_ctl)
6351 			return -EINVAL;
6352 		return 0;
6353 	}
6354 
6355 	/*
6356 	 * Per-packet timestamping only works if all packets are
6357 	 * timestamped, so enable timestamping in all packets as
6358 	 * long as one rx filter was configured.
6359 	 */
6360 	if ((hw->mac.type >= e1000_82580) && tsync_rx_ctl) {
6361 		tsync_rx_ctl = E1000_TSYNCRXCTL_ENABLED;
6362 		tsync_rx_ctl |= E1000_TSYNCRXCTL_TYPE_ALL;
6363 	}
6364 
6365 	/* enable/disable TX */
6366 	regval = rd32(E1000_TSYNCTXCTL);
6367 	regval &= ~E1000_TSYNCTXCTL_ENABLED;
6368 	regval |= tsync_tx_ctl;
6369 	wr32(E1000_TSYNCTXCTL, regval);
6370 
6371 	/* enable/disable RX */
6372 	regval = rd32(E1000_TSYNCRXCTL);
6373 	regval &= ~(E1000_TSYNCRXCTL_ENABLED | E1000_TSYNCRXCTL_TYPE_MASK);
6374 	regval |= tsync_rx_ctl;
6375 	wr32(E1000_TSYNCRXCTL, regval);
6376 
6377 	/* define which PTP packets are time stamped */
6378 	wr32(E1000_TSYNCRXCFG, tsync_rx_cfg);
6379 
6380 	/* define ethertype filter for timestamped packets */
6381 	if (is_l2)
6382 		wr32(E1000_ETQF(3),
6383 		                (E1000_ETQF_FILTER_ENABLE | /* enable filter */
6384 		                 E1000_ETQF_1588 | /* enable timestamping */
6385 		                 ETH_P_1588));     /* 1588 eth protocol type */
6386 	else
6387 		wr32(E1000_ETQF(3), 0);
6388 
6389 #define PTP_PORT 319
6390 	/* L4 Queue Filter[3]: filter by destination port and protocol */
6391 	if (is_l4) {
6392 		u32 ftqf = (IPPROTO_UDP /* UDP */
6393 			| E1000_FTQF_VF_BP /* VF not compared */
6394 			| E1000_FTQF_1588_TIME_STAMP /* Enable Timestamping */
6395 			| E1000_FTQF_MASK); /* mask all inputs */
6396 		ftqf &= ~E1000_FTQF_MASK_PROTO_BP; /* enable protocol check */
6397 
6398 		wr32(E1000_IMIR(3), htons(PTP_PORT));
6399 		wr32(E1000_IMIREXT(3),
6400 		     (E1000_IMIREXT_SIZE_BP | E1000_IMIREXT_CTRL_BP));
6401 		if (hw->mac.type == e1000_82576) {
6402 			/* enable source port check */
6403 			wr32(E1000_SPQF(3), htons(PTP_PORT));
6404 			ftqf &= ~E1000_FTQF_MASK_SOURCE_PORT_BP;
6405 		}
6406 		wr32(E1000_FTQF(3), ftqf);
6407 	} else {
6408 		wr32(E1000_FTQF(3), E1000_FTQF_MASK);
6409 	}
6410 	wrfl();
6411 
6412 	adapter->hwtstamp_config = config;
6413 
6414 	/* clear TX/RX time stamp registers, just to be sure */
6415 	regval = rd32(E1000_TXSTMPH);
6416 	regval = rd32(E1000_RXSTMPH);
6417 
6418 	return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
6419 		-EFAULT : 0;
6420 }
6421 
6422 /**
6423  * igb_ioctl -
6424  * @netdev:
6425  * @ifreq:
6426  * @cmd:
6427  **/
6428 static int igb_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
6429 {
6430 	switch (cmd) {
6431 	case SIOCGMIIPHY:
6432 	case SIOCGMIIREG:
6433 	case SIOCSMIIREG:
6434 		return igb_mii_ioctl(netdev, ifr, cmd);
6435 	case SIOCSHWTSTAMP:
6436 		return igb_hwtstamp_ioctl(netdev, ifr, cmd);
6437 	default:
6438 		return -EOPNOTSUPP;
6439 	}
6440 }
6441 
6442 s32 igb_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
6443 {
6444 	struct igb_adapter *adapter = hw->back;
6445 	u16 cap_offset;
6446 
6447 	cap_offset = adapter->pdev->pcie_cap;
6448 	if (!cap_offset)
6449 		return -E1000_ERR_CONFIG;
6450 
6451 	pci_read_config_word(adapter->pdev, cap_offset + reg, value);
6452 
6453 	return 0;
6454 }
6455 
6456 s32 igb_write_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
6457 {
6458 	struct igb_adapter *adapter = hw->back;
6459 	u16 cap_offset;
6460 
6461 	cap_offset = adapter->pdev->pcie_cap;
6462 	if (!cap_offset)
6463 		return -E1000_ERR_CONFIG;
6464 
6465 	pci_write_config_word(adapter->pdev, cap_offset + reg, *value);
6466 
6467 	return 0;
6468 }
6469 
6470 static void igb_vlan_mode(struct net_device *netdev, u32 features)
6471 {
6472 	struct igb_adapter *adapter = netdev_priv(netdev);
6473 	struct e1000_hw *hw = &adapter->hw;
6474 	u32 ctrl, rctl;
6475 	bool enable = !!(features & NETIF_F_HW_VLAN_RX);
6476 
6477 	if (enable) {
6478 		/* enable VLAN tag insert/strip */
6479 		ctrl = rd32(E1000_CTRL);
6480 		ctrl |= E1000_CTRL_VME;
6481 		wr32(E1000_CTRL, ctrl);
6482 
6483 		/* Disable CFI check */
6484 		rctl = rd32(E1000_RCTL);
6485 		rctl &= ~E1000_RCTL_CFIEN;
6486 		wr32(E1000_RCTL, rctl);
6487 	} else {
6488 		/* disable VLAN tag insert/strip */
6489 		ctrl = rd32(E1000_CTRL);
6490 		ctrl &= ~E1000_CTRL_VME;
6491 		wr32(E1000_CTRL, ctrl);
6492 	}
6493 
6494 	igb_rlpml_set(adapter);
6495 }
6496 
6497 static void igb_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
6498 {
6499 	struct igb_adapter *adapter = netdev_priv(netdev);
6500 	struct e1000_hw *hw = &adapter->hw;
6501 	int pf_id = adapter->vfs_allocated_count;
6502 
6503 	/* attempt to add filter to vlvf array */
6504 	igb_vlvf_set(adapter, vid, true, pf_id);
6505 
6506 	/* add the filter since PF can receive vlans w/o entry in vlvf */
6507 	igb_vfta_set(hw, vid, true);
6508 
6509 	set_bit(vid, adapter->active_vlans);
6510 }
6511 
6512 static void igb_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
6513 {
6514 	struct igb_adapter *adapter = netdev_priv(netdev);
6515 	struct e1000_hw *hw = &adapter->hw;
6516 	int pf_id = adapter->vfs_allocated_count;
6517 	s32 err;
6518 
6519 	/* remove vlan from VLVF table array */
6520 	err = igb_vlvf_set(adapter, vid, false, pf_id);
6521 
6522 	/* if vid was not present in VLVF just remove it from table */
6523 	if (err)
6524 		igb_vfta_set(hw, vid, false);
6525 
6526 	clear_bit(vid, adapter->active_vlans);
6527 }
6528 
6529 static void igb_restore_vlan(struct igb_adapter *adapter)
6530 {
6531 	u16 vid;
6532 
6533 	igb_vlan_mode(adapter->netdev, adapter->netdev->features);
6534 
6535 	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
6536 		igb_vlan_rx_add_vid(adapter->netdev, vid);
6537 }
6538 
6539 int igb_set_spd_dplx(struct igb_adapter *adapter, u32 spd, u8 dplx)
6540 {
6541 	struct pci_dev *pdev = adapter->pdev;
6542 	struct e1000_mac_info *mac = &adapter->hw.mac;
6543 
6544 	mac->autoneg = 0;
6545 
6546 	/* Make sure dplx is at most 1 bit and lsb of speed is not set
6547 	 * for the switch() below to work */
6548 	if ((spd & 1) || (dplx & ~1))
6549 		goto err_inval;
6550 
6551 	/* Fiber NIC's only allow 1000 Gbps Full duplex */
6552 	if ((adapter->hw.phy.media_type == e1000_media_type_internal_serdes) &&
6553 	    spd != SPEED_1000 &&
6554 	    dplx != DUPLEX_FULL)
6555 		goto err_inval;
6556 
6557 	switch (spd + dplx) {
6558 	case SPEED_10 + DUPLEX_HALF:
6559 		mac->forced_speed_duplex = ADVERTISE_10_HALF;
6560 		break;
6561 	case SPEED_10 + DUPLEX_FULL:
6562 		mac->forced_speed_duplex = ADVERTISE_10_FULL;
6563 		break;
6564 	case SPEED_100 + DUPLEX_HALF:
6565 		mac->forced_speed_duplex = ADVERTISE_100_HALF;
6566 		break;
6567 	case SPEED_100 + DUPLEX_FULL:
6568 		mac->forced_speed_duplex = ADVERTISE_100_FULL;
6569 		break;
6570 	case SPEED_1000 + DUPLEX_FULL:
6571 		mac->autoneg = 1;
6572 		adapter->hw.phy.autoneg_advertised = ADVERTISE_1000_FULL;
6573 		break;
6574 	case SPEED_1000 + DUPLEX_HALF: /* not supported */
6575 	default:
6576 		goto err_inval;
6577 	}
6578 	return 0;
6579 
6580 err_inval:
6581 	dev_err(&pdev->dev, "Unsupported Speed/Duplex configuration\n");
6582 	return -EINVAL;
6583 }
6584 
6585 static int __igb_shutdown(struct pci_dev *pdev, bool *enable_wake)
6586 {
6587 	struct net_device *netdev = pci_get_drvdata(pdev);
6588 	struct igb_adapter *adapter = netdev_priv(netdev);
6589 	struct e1000_hw *hw = &adapter->hw;
6590 	u32 ctrl, rctl, status;
6591 	u32 wufc = adapter->wol;
6592 #ifdef CONFIG_PM
6593 	int retval = 0;
6594 #endif
6595 
6596 	netif_device_detach(netdev);
6597 
6598 	if (netif_running(netdev))
6599 		igb_close(netdev);
6600 
6601 	igb_clear_interrupt_scheme(adapter);
6602 
6603 #ifdef CONFIG_PM
6604 	retval = pci_save_state(pdev);
6605 	if (retval)
6606 		return retval;
6607 #endif
6608 
6609 	status = rd32(E1000_STATUS);
6610 	if (status & E1000_STATUS_LU)
6611 		wufc &= ~E1000_WUFC_LNKC;
6612 
6613 	if (wufc) {
6614 		igb_setup_rctl(adapter);
6615 		igb_set_rx_mode(netdev);
6616 
6617 		/* turn on all-multi mode if wake on multicast is enabled */
6618 		if (wufc & E1000_WUFC_MC) {
6619 			rctl = rd32(E1000_RCTL);
6620 			rctl |= E1000_RCTL_MPE;
6621 			wr32(E1000_RCTL, rctl);
6622 		}
6623 
6624 		ctrl = rd32(E1000_CTRL);
6625 		/* advertise wake from D3Cold */
6626 		#define E1000_CTRL_ADVD3WUC 0x00100000
6627 		/* phy power management enable */
6628 		#define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000
6629 		ctrl |= E1000_CTRL_ADVD3WUC;
6630 		wr32(E1000_CTRL, ctrl);
6631 
6632 		/* Allow time for pending master requests to run */
6633 		igb_disable_pcie_master(hw);
6634 
6635 		wr32(E1000_WUC, E1000_WUC_PME_EN);
6636 		wr32(E1000_WUFC, wufc);
6637 	} else {
6638 		wr32(E1000_WUC, 0);
6639 		wr32(E1000_WUFC, 0);
6640 	}
6641 
6642 	*enable_wake = wufc || adapter->en_mng_pt;
6643 	if (!*enable_wake)
6644 		igb_power_down_link(adapter);
6645 	else
6646 		igb_power_up_link(adapter);
6647 
6648 	/* Release control of h/w to f/w.  If f/w is AMT enabled, this
6649 	 * would have already happened in close and is redundant. */
6650 	igb_release_hw_control(adapter);
6651 
6652 	pci_disable_device(pdev);
6653 
6654 	return 0;
6655 }
6656 
6657 #ifdef CONFIG_PM
6658 static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
6659 {
6660 	int retval;
6661 	bool wake;
6662 
6663 	retval = __igb_shutdown(pdev, &wake);
6664 	if (retval)
6665 		return retval;
6666 
6667 	if (wake) {
6668 		pci_prepare_to_sleep(pdev);
6669 	} else {
6670 		pci_wake_from_d3(pdev, false);
6671 		pci_set_power_state(pdev, PCI_D3hot);
6672 	}
6673 
6674 	return 0;
6675 }
6676 
6677 static int igb_resume(struct pci_dev *pdev)
6678 {
6679 	struct net_device *netdev = pci_get_drvdata(pdev);
6680 	struct igb_adapter *adapter = netdev_priv(netdev);
6681 	struct e1000_hw *hw = &adapter->hw;
6682 	u32 err;
6683 
6684 	pci_set_power_state(pdev, PCI_D0);
6685 	pci_restore_state(pdev);
6686 	pci_save_state(pdev);
6687 
6688 	err = pci_enable_device_mem(pdev);
6689 	if (err) {
6690 		dev_err(&pdev->dev,
6691 			"igb: Cannot enable PCI device from suspend\n");
6692 		return err;
6693 	}
6694 	pci_set_master(pdev);
6695 
6696 	pci_enable_wake(pdev, PCI_D3hot, 0);
6697 	pci_enable_wake(pdev, PCI_D3cold, 0);
6698 
6699 	if (igb_init_interrupt_scheme(adapter)) {
6700 		dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
6701 		return -ENOMEM;
6702 	}
6703 
6704 	igb_reset(adapter);
6705 
6706 	/* let the f/w know that the h/w is now under the control of the
6707 	 * driver. */
6708 	igb_get_hw_control(adapter);
6709 
6710 	wr32(E1000_WUS, ~0);
6711 
6712 	if (netif_running(netdev)) {
6713 		err = igb_open(netdev);
6714 		if (err)
6715 			return err;
6716 	}
6717 
6718 	netif_device_attach(netdev);
6719 
6720 	return 0;
6721 }
6722 #endif
6723 
6724 static void igb_shutdown(struct pci_dev *pdev)
6725 {
6726 	bool wake;
6727 
6728 	__igb_shutdown(pdev, &wake);
6729 
6730 	if (system_state == SYSTEM_POWER_OFF) {
6731 		pci_wake_from_d3(pdev, wake);
6732 		pci_set_power_state(pdev, PCI_D3hot);
6733 	}
6734 }
6735 
6736 #ifdef CONFIG_NET_POLL_CONTROLLER
6737 /*
6738  * Polling 'interrupt' - used by things like netconsole to send skbs
6739  * without having to re-enable interrupts. It's not called while
6740  * the interrupt routine is executing.
6741  */
6742 static void igb_netpoll(struct net_device *netdev)
6743 {
6744 	struct igb_adapter *adapter = netdev_priv(netdev);
6745 	struct e1000_hw *hw = &adapter->hw;
6746 	struct igb_q_vector *q_vector;
6747 	int i;
6748 
6749 	for (i = 0; i < adapter->num_q_vectors; i++) {
6750 		q_vector = adapter->q_vector[i];
6751 		if (adapter->msix_entries)
6752 			wr32(E1000_EIMC, q_vector->eims_value);
6753 		else
6754 			igb_irq_disable(adapter);
6755 		napi_schedule(&q_vector->napi);
6756 	}
6757 }
6758 #endif /* CONFIG_NET_POLL_CONTROLLER */
6759 
6760 /**
6761  * igb_io_error_detected - called when PCI error is detected
6762  * @pdev: Pointer to PCI device
6763  * @state: The current pci connection state
6764  *
6765  * This function is called after a PCI bus error affecting
6766  * this device has been detected.
6767  */
6768 static pci_ers_result_t igb_io_error_detected(struct pci_dev *pdev,
6769 					      pci_channel_state_t state)
6770 {
6771 	struct net_device *netdev = pci_get_drvdata(pdev);
6772 	struct igb_adapter *adapter = netdev_priv(netdev);
6773 
6774 	netif_device_detach(netdev);
6775 
6776 	if (state == pci_channel_io_perm_failure)
6777 		return PCI_ERS_RESULT_DISCONNECT;
6778 
6779 	if (netif_running(netdev))
6780 		igb_down(adapter);
6781 	pci_disable_device(pdev);
6782 
6783 	/* Request a slot slot reset. */
6784 	return PCI_ERS_RESULT_NEED_RESET;
6785 }
6786 
6787 /**
6788  * igb_io_slot_reset - called after the pci bus has been reset.
6789  * @pdev: Pointer to PCI device
6790  *
6791  * Restart the card from scratch, as if from a cold-boot. Implementation
6792  * resembles the first-half of the igb_resume routine.
6793  */
6794 static pci_ers_result_t igb_io_slot_reset(struct pci_dev *pdev)
6795 {
6796 	struct net_device *netdev = pci_get_drvdata(pdev);
6797 	struct igb_adapter *adapter = netdev_priv(netdev);
6798 	struct e1000_hw *hw = &adapter->hw;
6799 	pci_ers_result_t result;
6800 	int err;
6801 
6802 	if (pci_enable_device_mem(pdev)) {
6803 		dev_err(&pdev->dev,
6804 			"Cannot re-enable PCI device after reset.\n");
6805 		result = PCI_ERS_RESULT_DISCONNECT;
6806 	} else {
6807 		pci_set_master(pdev);
6808 		pci_restore_state(pdev);
6809 		pci_save_state(pdev);
6810 
6811 		pci_enable_wake(pdev, PCI_D3hot, 0);
6812 		pci_enable_wake(pdev, PCI_D3cold, 0);
6813 
6814 		igb_reset(adapter);
6815 		wr32(E1000_WUS, ~0);
6816 		result = PCI_ERS_RESULT_RECOVERED;
6817 	}
6818 
6819 	err = pci_cleanup_aer_uncorrect_error_status(pdev);
6820 	if (err) {
6821 		dev_err(&pdev->dev, "pci_cleanup_aer_uncorrect_error_status "
6822 		        "failed 0x%0x\n", err);
6823 		/* non-fatal, continue */
6824 	}
6825 
6826 	return result;
6827 }
6828 
6829 /**
6830  * igb_io_resume - called when traffic can start flowing again.
6831  * @pdev: Pointer to PCI device
6832  *
6833  * This callback is called when the error recovery driver tells us that
6834  * its OK to resume normal operation. Implementation resembles the
6835  * second-half of the igb_resume routine.
6836  */
6837 static void igb_io_resume(struct pci_dev *pdev)
6838 {
6839 	struct net_device *netdev = pci_get_drvdata(pdev);
6840 	struct igb_adapter *adapter = netdev_priv(netdev);
6841 
6842 	if (netif_running(netdev)) {
6843 		if (igb_up(adapter)) {
6844 			dev_err(&pdev->dev, "igb_up failed after reset\n");
6845 			return;
6846 		}
6847 	}
6848 
6849 	netif_device_attach(netdev);
6850 
6851 	/* let the f/w know that the h/w is now under the control of the
6852 	 * driver. */
6853 	igb_get_hw_control(adapter);
6854 }
6855 
6856 static void igb_rar_set_qsel(struct igb_adapter *adapter, u8 *addr, u32 index,
6857                              u8 qsel)
6858 {
6859 	u32 rar_low, rar_high;
6860 	struct e1000_hw *hw = &adapter->hw;
6861 
6862 	/* HW expects these in little endian so we reverse the byte order
6863 	 * from network order (big endian) to little endian
6864 	 */
6865 	rar_low = ((u32) addr[0] | ((u32) addr[1] << 8) |
6866 	          ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
6867 	rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
6868 
6869 	/* Indicate to hardware the Address is Valid. */
6870 	rar_high |= E1000_RAH_AV;
6871 
6872 	if (hw->mac.type == e1000_82575)
6873 		rar_high |= E1000_RAH_POOL_1 * qsel;
6874 	else
6875 		rar_high |= E1000_RAH_POOL_1 << qsel;
6876 
6877 	wr32(E1000_RAL(index), rar_low);
6878 	wrfl();
6879 	wr32(E1000_RAH(index), rar_high);
6880 	wrfl();
6881 }
6882 
6883 static int igb_set_vf_mac(struct igb_adapter *adapter,
6884                           int vf, unsigned char *mac_addr)
6885 {
6886 	struct e1000_hw *hw = &adapter->hw;
6887 	/* VF MAC addresses start at end of receive addresses and moves
6888 	 * torwards the first, as a result a collision should not be possible */
6889 	int rar_entry = hw->mac.rar_entry_count - (vf + 1);
6890 
6891 	memcpy(adapter->vf_data[vf].vf_mac_addresses, mac_addr, ETH_ALEN);
6892 
6893 	igb_rar_set_qsel(adapter, mac_addr, rar_entry, vf);
6894 
6895 	return 0;
6896 }
6897 
6898 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
6899 {
6900 	struct igb_adapter *adapter = netdev_priv(netdev);
6901 	if (!is_valid_ether_addr(mac) || (vf >= adapter->vfs_allocated_count))
6902 		return -EINVAL;
6903 	adapter->vf_data[vf].flags |= IGB_VF_FLAG_PF_SET_MAC;
6904 	dev_info(&adapter->pdev->dev, "setting MAC %pM on VF %d\n", mac, vf);
6905 	dev_info(&adapter->pdev->dev, "Reload the VF driver to make this"
6906 				      " change effective.");
6907 	if (test_bit(__IGB_DOWN, &adapter->state)) {
6908 		dev_warn(&adapter->pdev->dev, "The VF MAC address has been set,"
6909 			 " but the PF device is not up.\n");
6910 		dev_warn(&adapter->pdev->dev, "Bring the PF device up before"
6911 			 " attempting to use the VF device.\n");
6912 	}
6913 	return igb_set_vf_mac(adapter, vf, mac);
6914 }
6915 
6916 static int igb_link_mbps(int internal_link_speed)
6917 {
6918 	switch (internal_link_speed) {
6919 	case SPEED_100:
6920 		return 100;
6921 	case SPEED_1000:
6922 		return 1000;
6923 	default:
6924 		return 0;
6925 	}
6926 }
6927 
6928 static void igb_set_vf_rate_limit(struct e1000_hw *hw, int vf, int tx_rate,
6929 				  int link_speed)
6930 {
6931 	int rf_dec, rf_int;
6932 	u32 bcnrc_val;
6933 
6934 	if (tx_rate != 0) {
6935 		/* Calculate the rate factor values to set */
6936 		rf_int = link_speed / tx_rate;
6937 		rf_dec = (link_speed - (rf_int * tx_rate));
6938 		rf_dec = (rf_dec * (1<<E1000_RTTBCNRC_RF_INT_SHIFT)) / tx_rate;
6939 
6940 		bcnrc_val = E1000_RTTBCNRC_RS_ENA;
6941 		bcnrc_val |= ((rf_int<<E1000_RTTBCNRC_RF_INT_SHIFT) &
6942 		               E1000_RTTBCNRC_RF_INT_MASK);
6943 		bcnrc_val |= (rf_dec & E1000_RTTBCNRC_RF_DEC_MASK);
6944 	} else {
6945 		bcnrc_val = 0;
6946 	}
6947 
6948 	wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */
6949 	wr32(E1000_RTTBCNRC, bcnrc_val);
6950 }
6951 
6952 static void igb_check_vf_rate_limit(struct igb_adapter *adapter)
6953 {
6954 	int actual_link_speed, i;
6955 	bool reset_rate = false;
6956 
6957 	/* VF TX rate limit was not set or not supported */
6958 	if ((adapter->vf_rate_link_speed == 0) ||
6959 	    (adapter->hw.mac.type != e1000_82576))
6960 		return;
6961 
6962 	actual_link_speed = igb_link_mbps(adapter->link_speed);
6963 	if (actual_link_speed != adapter->vf_rate_link_speed) {
6964 		reset_rate = true;
6965 		adapter->vf_rate_link_speed = 0;
6966 		dev_info(&adapter->pdev->dev,
6967 		         "Link speed has been changed. VF Transmit "
6968 		         "rate is disabled\n");
6969 	}
6970 
6971 	for (i = 0; i < adapter->vfs_allocated_count; i++) {
6972 		if (reset_rate)
6973 			adapter->vf_data[i].tx_rate = 0;
6974 
6975 		igb_set_vf_rate_limit(&adapter->hw, i,
6976 		                      adapter->vf_data[i].tx_rate,
6977 		                      actual_link_speed);
6978 	}
6979 }
6980 
6981 static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int tx_rate)
6982 {
6983 	struct igb_adapter *adapter = netdev_priv(netdev);
6984 	struct e1000_hw *hw = &adapter->hw;
6985 	int actual_link_speed;
6986 
6987 	if (hw->mac.type != e1000_82576)
6988 		return -EOPNOTSUPP;
6989 
6990 	actual_link_speed = igb_link_mbps(adapter->link_speed);
6991 	if ((vf >= adapter->vfs_allocated_count) ||
6992 	    (!(rd32(E1000_STATUS) & E1000_STATUS_LU)) ||
6993 	    (tx_rate < 0) || (tx_rate > actual_link_speed))
6994 		return -EINVAL;
6995 
6996 	adapter->vf_rate_link_speed = actual_link_speed;
6997 	adapter->vf_data[vf].tx_rate = (u16)tx_rate;
6998 	igb_set_vf_rate_limit(hw, vf, tx_rate, actual_link_speed);
6999 
7000 	return 0;
7001 }
7002 
7003 static int igb_ndo_get_vf_config(struct net_device *netdev,
7004 				 int vf, struct ifla_vf_info *ivi)
7005 {
7006 	struct igb_adapter *adapter = netdev_priv(netdev);
7007 	if (vf >= adapter->vfs_allocated_count)
7008 		return -EINVAL;
7009 	ivi->vf = vf;
7010 	memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN);
7011 	ivi->tx_rate = adapter->vf_data[vf].tx_rate;
7012 	ivi->vlan = adapter->vf_data[vf].pf_vlan;
7013 	ivi->qos = adapter->vf_data[vf].pf_qos;
7014 	return 0;
7015 }
7016 
7017 static void igb_vmm_control(struct igb_adapter *adapter)
7018 {
7019 	struct e1000_hw *hw = &adapter->hw;
7020 	u32 reg;
7021 
7022 	switch (hw->mac.type) {
7023 	case e1000_82575:
7024 	default:
7025 		/* replication is not supported for 82575 */
7026 		return;
7027 	case e1000_82576:
7028 		/* notify HW that the MAC is adding vlan tags */
7029 		reg = rd32(E1000_DTXCTL);
7030 		reg |= E1000_DTXCTL_VLAN_ADDED;
7031 		wr32(E1000_DTXCTL, reg);
7032 	case e1000_82580:
7033 		/* enable replication vlan tag stripping */
7034 		reg = rd32(E1000_RPLOLR);
7035 		reg |= E1000_RPLOLR_STRVLAN;
7036 		wr32(E1000_RPLOLR, reg);
7037 	case e1000_i350:
7038 		/* none of the above registers are supported by i350 */
7039 		break;
7040 	}
7041 
7042 	if (adapter->vfs_allocated_count) {
7043 		igb_vmdq_set_loopback_pf(hw, true);
7044 		igb_vmdq_set_replication_pf(hw, true);
7045 		igb_vmdq_set_anti_spoofing_pf(hw, true,
7046 						adapter->vfs_allocated_count);
7047 	} else {
7048 		igb_vmdq_set_loopback_pf(hw, false);
7049 		igb_vmdq_set_replication_pf(hw, false);
7050 	}
7051 }
7052 
7053 static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)
7054 {
7055 	struct e1000_hw *hw = &adapter->hw;
7056 	u32 dmac_thr;
7057 	u16 hwm;
7058 
7059 	if (hw->mac.type > e1000_82580) {
7060 		if (adapter->flags & IGB_FLAG_DMAC) {
7061 			u32 reg;
7062 
7063 			/* force threshold to 0. */
7064 			wr32(E1000_DMCTXTH, 0);
7065 
7066 			/*
7067 			 * DMA Coalescing high water mark needs to be higher
7068 			 * than the RX threshold. set hwm to PBA -  2 * max
7069 			 * frame size
7070 			 */
7071 			hwm = pba - (2 * adapter->max_frame_size);
7072 			reg = rd32(E1000_DMACR);
7073 			reg &= ~E1000_DMACR_DMACTHR_MASK;
7074 			dmac_thr = pba - 4;
7075 
7076 			reg |= ((dmac_thr << E1000_DMACR_DMACTHR_SHIFT)
7077 				& E1000_DMACR_DMACTHR_MASK);
7078 
7079 			/* transition to L0x or L1 if available..*/
7080 			reg |= (E1000_DMACR_DMAC_EN | E1000_DMACR_DMAC_LX_MASK);
7081 
7082 			/* watchdog timer= +-1000 usec in 32usec intervals */
7083 			reg |= (1000 >> 5);
7084 			wr32(E1000_DMACR, reg);
7085 
7086 			/*
7087 			 * no lower threshold to disable
7088 			 * coalescing(smart fifb)-UTRESH=0
7089 			 */
7090 			wr32(E1000_DMCRTRH, 0);
7091 			wr32(E1000_FCRTC, hwm);
7092 
7093 			reg = (IGB_DMCTLX_DCFLUSH_DIS | 0x4);
7094 
7095 			wr32(E1000_DMCTLX, reg);
7096 
7097 			/*
7098 			 * free space in tx packet buffer to wake from
7099 			 * DMA coal
7100 			 */
7101 			wr32(E1000_DMCTXTH, (IGB_MIN_TXPBSIZE -
7102 			     (IGB_TX_BUF_4096 + adapter->max_frame_size)) >> 6);
7103 
7104 			/*
7105 			 * make low power state decision controlled
7106 			 * by DMA coal
7107 			 */
7108 			reg = rd32(E1000_PCIEMISC);
7109 			reg &= ~E1000_PCIEMISC_LX_DECISION;
7110 			wr32(E1000_PCIEMISC, reg);
7111 		} /* endif adapter->dmac is not disabled */
7112 	} else if (hw->mac.type == e1000_82580) {
7113 		u32 reg = rd32(E1000_PCIEMISC);
7114 		wr32(E1000_PCIEMISC, reg & ~E1000_PCIEMISC_LX_DECISION);
7115 		wr32(E1000_DMACR, 0);
7116 	}
7117 }
7118 
7119 /* igb_main.c */
7120