xref: /openbmc/linux/drivers/net/ethernet/intel/e1000/e1000_main.c (revision 840ef8b7cc584a23c4f9d05352f4dbaf8e56e5ab)
1 /*******************************************************************************
2 
3   Intel PRO/1000 Linux driver
4   Copyright(c) 1999 - 2006 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   Linux NICS <linux.nics@intel.com>
24   e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
25   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
26 
27 *******************************************************************************/
28 
29 #include "e1000.h"
30 #include <net/ip6_checksum.h>
31 #include <linux/io.h>
32 #include <linux/prefetch.h>
33 #include <linux/bitops.h>
34 #include <linux/if_vlan.h>
35 
36 char e1000_driver_name[] = "e1000";
37 static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
38 #define DRV_VERSION "7.3.21-k8-NAPI"
39 const char e1000_driver_version[] = DRV_VERSION;
40 static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
41 
42 /* e1000_pci_tbl - PCI Device ID Table
43  *
44  * Last entry must be all 0s
45  *
46  * Macro expands to...
47  *   {PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)}
48  */
49 static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {
50 	INTEL_E1000_ETHERNET_DEVICE(0x1000),
51 	INTEL_E1000_ETHERNET_DEVICE(0x1001),
52 	INTEL_E1000_ETHERNET_DEVICE(0x1004),
53 	INTEL_E1000_ETHERNET_DEVICE(0x1008),
54 	INTEL_E1000_ETHERNET_DEVICE(0x1009),
55 	INTEL_E1000_ETHERNET_DEVICE(0x100C),
56 	INTEL_E1000_ETHERNET_DEVICE(0x100D),
57 	INTEL_E1000_ETHERNET_DEVICE(0x100E),
58 	INTEL_E1000_ETHERNET_DEVICE(0x100F),
59 	INTEL_E1000_ETHERNET_DEVICE(0x1010),
60 	INTEL_E1000_ETHERNET_DEVICE(0x1011),
61 	INTEL_E1000_ETHERNET_DEVICE(0x1012),
62 	INTEL_E1000_ETHERNET_DEVICE(0x1013),
63 	INTEL_E1000_ETHERNET_DEVICE(0x1014),
64 	INTEL_E1000_ETHERNET_DEVICE(0x1015),
65 	INTEL_E1000_ETHERNET_DEVICE(0x1016),
66 	INTEL_E1000_ETHERNET_DEVICE(0x1017),
67 	INTEL_E1000_ETHERNET_DEVICE(0x1018),
68 	INTEL_E1000_ETHERNET_DEVICE(0x1019),
69 	INTEL_E1000_ETHERNET_DEVICE(0x101A),
70 	INTEL_E1000_ETHERNET_DEVICE(0x101D),
71 	INTEL_E1000_ETHERNET_DEVICE(0x101E),
72 	INTEL_E1000_ETHERNET_DEVICE(0x1026),
73 	INTEL_E1000_ETHERNET_DEVICE(0x1027),
74 	INTEL_E1000_ETHERNET_DEVICE(0x1028),
75 	INTEL_E1000_ETHERNET_DEVICE(0x1075),
76 	INTEL_E1000_ETHERNET_DEVICE(0x1076),
77 	INTEL_E1000_ETHERNET_DEVICE(0x1077),
78 	INTEL_E1000_ETHERNET_DEVICE(0x1078),
79 	INTEL_E1000_ETHERNET_DEVICE(0x1079),
80 	INTEL_E1000_ETHERNET_DEVICE(0x107A),
81 	INTEL_E1000_ETHERNET_DEVICE(0x107B),
82 	INTEL_E1000_ETHERNET_DEVICE(0x107C),
83 	INTEL_E1000_ETHERNET_DEVICE(0x108A),
84 	INTEL_E1000_ETHERNET_DEVICE(0x1099),
85 	INTEL_E1000_ETHERNET_DEVICE(0x10B5),
86 	INTEL_E1000_ETHERNET_DEVICE(0x2E6E),
87 	/* required last entry */
88 	{0,}
89 };
90 
91 MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);
92 
93 int e1000_up(struct e1000_adapter *adapter);
94 void e1000_down(struct e1000_adapter *adapter);
95 void e1000_reinit_locked(struct e1000_adapter *adapter);
96 void e1000_reset(struct e1000_adapter *adapter);
97 int e1000_setup_all_tx_resources(struct e1000_adapter *adapter);
98 int e1000_setup_all_rx_resources(struct e1000_adapter *adapter);
99 void e1000_free_all_tx_resources(struct e1000_adapter *adapter);
100 void e1000_free_all_rx_resources(struct e1000_adapter *adapter);
101 static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
102                              struct e1000_tx_ring *txdr);
103 static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
104                              struct e1000_rx_ring *rxdr);
105 static void e1000_free_tx_resources(struct e1000_adapter *adapter,
106                              struct e1000_tx_ring *tx_ring);
107 static void e1000_free_rx_resources(struct e1000_adapter *adapter,
108                              struct e1000_rx_ring *rx_ring);
109 void e1000_update_stats(struct e1000_adapter *adapter);
110 
111 static int e1000_init_module(void);
112 static void e1000_exit_module(void);
113 static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
114 static void e1000_remove(struct pci_dev *pdev);
115 static int e1000_alloc_queues(struct e1000_adapter *adapter);
116 static int e1000_sw_init(struct e1000_adapter *adapter);
117 static int e1000_open(struct net_device *netdev);
118 static int e1000_close(struct net_device *netdev);
119 static void e1000_configure_tx(struct e1000_adapter *adapter);
120 static void e1000_configure_rx(struct e1000_adapter *adapter);
121 static void e1000_setup_rctl(struct e1000_adapter *adapter);
122 static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter);
123 static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter);
124 static void e1000_clean_tx_ring(struct e1000_adapter *adapter,
125                                 struct e1000_tx_ring *tx_ring);
126 static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
127                                 struct e1000_rx_ring *rx_ring);
128 static void e1000_set_rx_mode(struct net_device *netdev);
129 static void e1000_update_phy_info_task(struct work_struct *work);
130 static void e1000_watchdog(struct work_struct *work);
131 static void e1000_82547_tx_fifo_stall_task(struct work_struct *work);
132 static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
133 				    struct net_device *netdev);
134 static struct net_device_stats * e1000_get_stats(struct net_device *netdev);
135 static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
136 static int e1000_set_mac(struct net_device *netdev, void *p);
137 static irqreturn_t e1000_intr(int irq, void *data);
138 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
139 			       struct e1000_tx_ring *tx_ring);
140 static int e1000_clean(struct napi_struct *napi, int budget);
141 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
142 			       struct e1000_rx_ring *rx_ring,
143 			       int *work_done, int work_to_do);
144 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
145 				     struct e1000_rx_ring *rx_ring,
146 				     int *work_done, int work_to_do);
147 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
148 				   struct e1000_rx_ring *rx_ring,
149 				   int cleaned_count);
150 static void e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
151 					 struct e1000_rx_ring *rx_ring,
152 					 int cleaned_count);
153 static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
154 static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
155 			   int cmd);
156 static void e1000_enter_82542_rst(struct e1000_adapter *adapter);
157 static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
158 static void e1000_tx_timeout(struct net_device *dev);
159 static void e1000_reset_task(struct work_struct *work);
160 static void e1000_smartspeed(struct e1000_adapter *adapter);
161 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
162                                        struct sk_buff *skb);
163 
164 static bool e1000_vlan_used(struct e1000_adapter *adapter);
165 static void e1000_vlan_mode(struct net_device *netdev,
166 			    netdev_features_t features);
167 static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter,
168 				     bool filter_on);
169 static int e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid);
170 static int e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid);
171 static void e1000_restore_vlan(struct e1000_adapter *adapter);
172 
173 #ifdef CONFIG_PM
174 static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);
175 static int e1000_resume(struct pci_dev *pdev);
176 #endif
177 static void e1000_shutdown(struct pci_dev *pdev);
178 
179 #ifdef CONFIG_NET_POLL_CONTROLLER
180 /* for netdump / net console */
181 static void e1000_netpoll (struct net_device *netdev);
182 #endif
183 
184 #define COPYBREAK_DEFAULT 256
185 static unsigned int copybreak __read_mostly = COPYBREAK_DEFAULT;
186 module_param(copybreak, uint, 0644);
187 MODULE_PARM_DESC(copybreak,
188 	"Maximum size of packet that is copied to a new buffer on receive");
189 
190 static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev,
191                      pci_channel_state_t state);
192 static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev);
193 static void e1000_io_resume(struct pci_dev *pdev);
194 
195 static const struct pci_error_handlers e1000_err_handler = {
196 	.error_detected = e1000_io_error_detected,
197 	.slot_reset = e1000_io_slot_reset,
198 	.resume = e1000_io_resume,
199 };
200 
201 static struct pci_driver e1000_driver = {
202 	.name     = e1000_driver_name,
203 	.id_table = e1000_pci_tbl,
204 	.probe    = e1000_probe,
205 	.remove   = e1000_remove,
206 #ifdef CONFIG_PM
207 	/* Power Management Hooks */
208 	.suspend  = e1000_suspend,
209 	.resume   = e1000_resume,
210 #endif
211 	.shutdown = e1000_shutdown,
212 	.err_handler = &e1000_err_handler
213 };
214 
215 MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
216 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
217 MODULE_LICENSE("GPL");
218 MODULE_VERSION(DRV_VERSION);
219 
220 #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
221 static int debug = -1;
222 module_param(debug, int, 0);
223 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
224 
225 /**
226  * e1000_get_hw_dev - return device
227  * used by hardware layer to print debugging information
228  *
229  **/
230 struct net_device *e1000_get_hw_dev(struct e1000_hw *hw)
231 {
232 	struct e1000_adapter *adapter = hw->back;
233 	return adapter->netdev;
234 }
235 
236 /**
237  * e1000_init_module - Driver Registration Routine
238  *
239  * e1000_init_module is the first routine called when the driver is
240  * loaded. All it does is register with the PCI subsystem.
241  **/
242 static int __init e1000_init_module(void)
243 {
244 	int ret;
245 	pr_info("%s - version %s\n", e1000_driver_string, e1000_driver_version);
246 
247 	pr_info("%s\n", e1000_copyright);
248 
249 	ret = pci_register_driver(&e1000_driver);
250 	if (copybreak != COPYBREAK_DEFAULT) {
251 		if (copybreak == 0)
252 			pr_info("copybreak disabled\n");
253 		else
254 			pr_info("copybreak enabled for "
255 				   "packets <= %u bytes\n", copybreak);
256 	}
257 	return ret;
258 }
259 
260 module_init(e1000_init_module);
261 
262 /**
263  * e1000_exit_module - Driver Exit Cleanup Routine
264  *
265  * e1000_exit_module is called just before the driver is removed
266  * from memory.
267  **/
268 static void __exit e1000_exit_module(void)
269 {
270 	pci_unregister_driver(&e1000_driver);
271 }
272 
273 module_exit(e1000_exit_module);
274 
275 static int e1000_request_irq(struct e1000_adapter *adapter)
276 {
277 	struct net_device *netdev = adapter->netdev;
278 	irq_handler_t handler = e1000_intr;
279 	int irq_flags = IRQF_SHARED;
280 	int err;
281 
282 	err = request_irq(adapter->pdev->irq, handler, irq_flags, netdev->name,
283 	                  netdev);
284 	if (err) {
285 		e_err(probe, "Unable to allocate interrupt Error: %d\n", err);
286 	}
287 
288 	return err;
289 }
290 
291 static void e1000_free_irq(struct e1000_adapter *adapter)
292 {
293 	struct net_device *netdev = adapter->netdev;
294 
295 	free_irq(adapter->pdev->irq, netdev);
296 }
297 
298 /**
299  * e1000_irq_disable - Mask off interrupt generation on the NIC
300  * @adapter: board private structure
301  **/
302 static void e1000_irq_disable(struct e1000_adapter *adapter)
303 {
304 	struct e1000_hw *hw = &adapter->hw;
305 
306 	ew32(IMC, ~0);
307 	E1000_WRITE_FLUSH();
308 	synchronize_irq(adapter->pdev->irq);
309 }
310 
311 /**
312  * e1000_irq_enable - Enable default interrupt generation settings
313  * @adapter: board private structure
314  **/
315 static void e1000_irq_enable(struct e1000_adapter *adapter)
316 {
317 	struct e1000_hw *hw = &adapter->hw;
318 
319 	ew32(IMS, IMS_ENABLE_MASK);
320 	E1000_WRITE_FLUSH();
321 }
322 
323 static void e1000_update_mng_vlan(struct e1000_adapter *adapter)
324 {
325 	struct e1000_hw *hw = &adapter->hw;
326 	struct net_device *netdev = adapter->netdev;
327 	u16 vid = hw->mng_cookie.vlan_id;
328 	u16 old_vid = adapter->mng_vlan_id;
329 
330 	if (!e1000_vlan_used(adapter))
331 		return;
332 
333 	if (!test_bit(vid, adapter->active_vlans)) {
334 		if (hw->mng_cookie.status &
335 		    E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT) {
336 			e1000_vlan_rx_add_vid(netdev, vid);
337 			adapter->mng_vlan_id = vid;
338 		} else {
339 			adapter->mng_vlan_id = E1000_MNG_VLAN_NONE;
340 		}
341 		if ((old_vid != (u16)E1000_MNG_VLAN_NONE) &&
342 		    (vid != old_vid) &&
343 		    !test_bit(old_vid, adapter->active_vlans))
344 			e1000_vlan_rx_kill_vid(netdev, old_vid);
345 	} else {
346 		adapter->mng_vlan_id = vid;
347 	}
348 }
349 
350 static void e1000_init_manageability(struct e1000_adapter *adapter)
351 {
352 	struct e1000_hw *hw = &adapter->hw;
353 
354 	if (adapter->en_mng_pt) {
355 		u32 manc = er32(MANC);
356 
357 		/* disable hardware interception of ARP */
358 		manc &= ~(E1000_MANC_ARP_EN);
359 
360 		ew32(MANC, manc);
361 	}
362 }
363 
364 static void e1000_release_manageability(struct e1000_adapter *adapter)
365 {
366 	struct e1000_hw *hw = &adapter->hw;
367 
368 	if (adapter->en_mng_pt) {
369 		u32 manc = er32(MANC);
370 
371 		/* re-enable hardware interception of ARP */
372 		manc |= E1000_MANC_ARP_EN;
373 
374 		ew32(MANC, manc);
375 	}
376 }
377 
378 /**
379  * e1000_configure - configure the hardware for RX and TX
380  * @adapter = private board structure
381  **/
382 static void e1000_configure(struct e1000_adapter *adapter)
383 {
384 	struct net_device *netdev = adapter->netdev;
385 	int i;
386 
387 	e1000_set_rx_mode(netdev);
388 
389 	e1000_restore_vlan(adapter);
390 	e1000_init_manageability(adapter);
391 
392 	e1000_configure_tx(adapter);
393 	e1000_setup_rctl(adapter);
394 	e1000_configure_rx(adapter);
395 	/* call E1000_DESC_UNUSED which always leaves
396 	 * at least 1 descriptor unused to make sure
397 	 * next_to_use != next_to_clean
398 	 */
399 	for (i = 0; i < adapter->num_rx_queues; i++) {
400 		struct e1000_rx_ring *ring = &adapter->rx_ring[i];
401 		adapter->alloc_rx_buf(adapter, ring,
402 				      E1000_DESC_UNUSED(ring));
403 	}
404 }
405 
406 int e1000_up(struct e1000_adapter *adapter)
407 {
408 	struct e1000_hw *hw = &adapter->hw;
409 
410 	/* hardware has been reset, we need to reload some things */
411 	e1000_configure(adapter);
412 
413 	clear_bit(__E1000_DOWN, &adapter->flags);
414 
415 	napi_enable(&adapter->napi);
416 
417 	e1000_irq_enable(adapter);
418 
419 	netif_wake_queue(adapter->netdev);
420 
421 	/* fire a link change interrupt to start the watchdog */
422 	ew32(ICS, E1000_ICS_LSC);
423 	return 0;
424 }
425 
426 /**
427  * e1000_power_up_phy - restore link in case the phy was powered down
428  * @adapter: address of board private structure
429  *
430  * The phy may be powered down to save power and turn off link when the
431  * driver is unloaded and wake on lan is not enabled (among others)
432  * *** this routine MUST be followed by a call to e1000_reset ***
433  **/
434 void e1000_power_up_phy(struct e1000_adapter *adapter)
435 {
436 	struct e1000_hw *hw = &adapter->hw;
437 	u16 mii_reg = 0;
438 
439 	/* Just clear the power down bit to wake the phy back up */
440 	if (hw->media_type == e1000_media_type_copper) {
441 		/* according to the manual, the phy will retain its
442 		 * settings across a power-down/up cycle
443 		 */
444 		e1000_read_phy_reg(hw, PHY_CTRL, &mii_reg);
445 		mii_reg &= ~MII_CR_POWER_DOWN;
446 		e1000_write_phy_reg(hw, PHY_CTRL, mii_reg);
447 	}
448 }
449 
450 static void e1000_power_down_phy(struct e1000_adapter *adapter)
451 {
452 	struct e1000_hw *hw = &adapter->hw;
453 
454 	/* Power down the PHY so no link is implied when interface is down *
455 	 * The PHY cannot be powered down if any of the following is true *
456 	 * (a) WoL is enabled
457 	 * (b) AMT is active
458 	 * (c) SoL/IDER session is active
459 	 */
460 	if (!adapter->wol && hw->mac_type >= e1000_82540 &&
461 	   hw->media_type == e1000_media_type_copper) {
462 		u16 mii_reg = 0;
463 
464 		switch (hw->mac_type) {
465 		case e1000_82540:
466 		case e1000_82545:
467 		case e1000_82545_rev_3:
468 		case e1000_82546:
469 		case e1000_ce4100:
470 		case e1000_82546_rev_3:
471 		case e1000_82541:
472 		case e1000_82541_rev_2:
473 		case e1000_82547:
474 		case e1000_82547_rev_2:
475 			if (er32(MANC) & E1000_MANC_SMBUS_EN)
476 				goto out;
477 			break;
478 		default:
479 			goto out;
480 		}
481 		e1000_read_phy_reg(hw, PHY_CTRL, &mii_reg);
482 		mii_reg |= MII_CR_POWER_DOWN;
483 		e1000_write_phy_reg(hw, PHY_CTRL, mii_reg);
484 		msleep(1);
485 	}
486 out:
487 	return;
488 }
489 
490 static void e1000_down_and_stop(struct e1000_adapter *adapter)
491 {
492 	set_bit(__E1000_DOWN, &adapter->flags);
493 
494 	/* Only kill reset task if adapter is not resetting */
495 	if (!test_bit(__E1000_RESETTING, &adapter->flags))
496 		cancel_work_sync(&adapter->reset_task);
497 
498 	cancel_delayed_work_sync(&adapter->watchdog_task);
499 	cancel_delayed_work_sync(&adapter->phy_info_task);
500 	cancel_delayed_work_sync(&adapter->fifo_stall_task);
501 }
502 
503 void e1000_down(struct e1000_adapter *adapter)
504 {
505 	struct e1000_hw *hw = &adapter->hw;
506 	struct net_device *netdev = adapter->netdev;
507 	u32 rctl, tctl;
508 
509 
510 	/* disable receives in the hardware */
511 	rctl = er32(RCTL);
512 	ew32(RCTL, rctl & ~E1000_RCTL_EN);
513 	/* flush and sleep below */
514 
515 	netif_tx_disable(netdev);
516 
517 	/* disable transmits in the hardware */
518 	tctl = er32(TCTL);
519 	tctl &= ~E1000_TCTL_EN;
520 	ew32(TCTL, tctl);
521 	/* flush both disables and wait for them to finish */
522 	E1000_WRITE_FLUSH();
523 	msleep(10);
524 
525 	napi_disable(&adapter->napi);
526 
527 	e1000_irq_disable(adapter);
528 
529 	/* Setting DOWN must be after irq_disable to prevent
530 	 * a screaming interrupt.  Setting DOWN also prevents
531 	 * tasks from rescheduling.
532 	 */
533 	e1000_down_and_stop(adapter);
534 
535 	adapter->link_speed = 0;
536 	adapter->link_duplex = 0;
537 	netif_carrier_off(netdev);
538 
539 	e1000_reset(adapter);
540 	e1000_clean_all_tx_rings(adapter);
541 	e1000_clean_all_rx_rings(adapter);
542 }
543 
544 static void e1000_reinit_safe(struct e1000_adapter *adapter)
545 {
546 	while (test_and_set_bit(__E1000_RESETTING, &adapter->flags))
547 		msleep(1);
548 	mutex_lock(&adapter->mutex);
549 	e1000_down(adapter);
550 	e1000_up(adapter);
551 	mutex_unlock(&adapter->mutex);
552 	clear_bit(__E1000_RESETTING, &adapter->flags);
553 }
554 
555 void e1000_reinit_locked(struct e1000_adapter *adapter)
556 {
557 	/* if rtnl_lock is not held the call path is bogus */
558 	ASSERT_RTNL();
559 	WARN_ON(in_interrupt());
560 	while (test_and_set_bit(__E1000_RESETTING, &adapter->flags))
561 		msleep(1);
562 	e1000_down(adapter);
563 	e1000_up(adapter);
564 	clear_bit(__E1000_RESETTING, &adapter->flags);
565 }
566 
567 void e1000_reset(struct e1000_adapter *adapter)
568 {
569 	struct e1000_hw *hw = &adapter->hw;
570 	u32 pba = 0, tx_space, min_tx_space, min_rx_space;
571 	bool legacy_pba_adjust = false;
572 	u16 hwm;
573 
574 	/* Repartition Pba for greater than 9k mtu
575 	 * To take effect CTRL.RST is required.
576 	 */
577 
578 	switch (hw->mac_type) {
579 	case e1000_82542_rev2_0:
580 	case e1000_82542_rev2_1:
581 	case e1000_82543:
582 	case e1000_82544:
583 	case e1000_82540:
584 	case e1000_82541:
585 	case e1000_82541_rev_2:
586 		legacy_pba_adjust = true;
587 		pba = E1000_PBA_48K;
588 		break;
589 	case e1000_82545:
590 	case e1000_82545_rev_3:
591 	case e1000_82546:
592 	case e1000_ce4100:
593 	case e1000_82546_rev_3:
594 		pba = E1000_PBA_48K;
595 		break;
596 	case e1000_82547:
597 	case e1000_82547_rev_2:
598 		legacy_pba_adjust = true;
599 		pba = E1000_PBA_30K;
600 		break;
601 	case e1000_undefined:
602 	case e1000_num_macs:
603 		break;
604 	}
605 
606 	if (legacy_pba_adjust) {
607 		if (hw->max_frame_size > E1000_RXBUFFER_8192)
608 			pba -= 8; /* allocate more FIFO for Tx */
609 
610 		if (hw->mac_type == e1000_82547) {
611 			adapter->tx_fifo_head = 0;
612 			adapter->tx_head_addr = pba << E1000_TX_HEAD_ADDR_SHIFT;
613 			adapter->tx_fifo_size =
614 				(E1000_PBA_40K - pba) << E1000_PBA_BYTES_SHIFT;
615 			atomic_set(&adapter->tx_fifo_stall, 0);
616 		}
617 	} else if (hw->max_frame_size >  ETH_FRAME_LEN + ETH_FCS_LEN) {
618 		/* adjust PBA for jumbo frames */
619 		ew32(PBA, pba);
620 
621 		/* To maintain wire speed transmits, the Tx FIFO should be
622 		 * large enough to accommodate two full transmit packets,
623 		 * rounded up to the next 1KB and expressed in KB.  Likewise,
624 		 * the Rx FIFO should be large enough to accommodate at least
625 		 * one full receive packet and is similarly rounded up and
626 		 * expressed in KB.
627 		 */
628 		pba = er32(PBA);
629 		/* upper 16 bits has Tx packet buffer allocation size in KB */
630 		tx_space = pba >> 16;
631 		/* lower 16 bits has Rx packet buffer allocation size in KB */
632 		pba &= 0xffff;
633 		/* the Tx fifo also stores 16 bytes of information about the Tx
634 		 * but don't include ethernet FCS because hardware appends it
635 		 */
636 		min_tx_space = (hw->max_frame_size +
637 		                sizeof(struct e1000_tx_desc) -
638 		                ETH_FCS_LEN) * 2;
639 		min_tx_space = ALIGN(min_tx_space, 1024);
640 		min_tx_space >>= 10;
641 		/* software strips receive CRC, so leave room for it */
642 		min_rx_space = hw->max_frame_size;
643 		min_rx_space = ALIGN(min_rx_space, 1024);
644 		min_rx_space >>= 10;
645 
646 		/* If current Tx allocation is less than the min Tx FIFO size,
647 		 * and the min Tx FIFO size is less than the current Rx FIFO
648 		 * allocation, take space away from current Rx allocation
649 		 */
650 		if (tx_space < min_tx_space &&
651 		    ((min_tx_space - tx_space) < pba)) {
652 			pba = pba - (min_tx_space - tx_space);
653 
654 			/* PCI/PCIx hardware has PBA alignment constraints */
655 			switch (hw->mac_type) {
656 			case e1000_82545 ... e1000_82546_rev_3:
657 				pba &= ~(E1000_PBA_8K - 1);
658 				break;
659 			default:
660 				break;
661 			}
662 
663 			/* if short on Rx space, Rx wins and must trump Tx
664 			 * adjustment or use Early Receive if available
665 			 */
666 			if (pba < min_rx_space)
667 				pba = min_rx_space;
668 		}
669 	}
670 
671 	ew32(PBA, pba);
672 
673 	/* flow control settings:
674 	 * The high water mark must be low enough to fit one full frame
675 	 * (or the size used for early receive) above it in the Rx FIFO.
676 	 * Set it to the lower of:
677 	 * - 90% of the Rx FIFO size, and
678 	 * - the full Rx FIFO size minus the early receive size (for parts
679 	 *   with ERT support assuming ERT set to E1000_ERT_2048), or
680 	 * - the full Rx FIFO size minus one full frame
681 	 */
682 	hwm = min(((pba << 10) * 9 / 10),
683 		  ((pba << 10) - hw->max_frame_size));
684 
685 	hw->fc_high_water = hwm & 0xFFF8;	/* 8-byte granularity */
686 	hw->fc_low_water = hw->fc_high_water - 8;
687 	hw->fc_pause_time = E1000_FC_PAUSE_TIME;
688 	hw->fc_send_xon = 1;
689 	hw->fc = hw->original_fc;
690 
691 	/* Allow time for pending master requests to run */
692 	e1000_reset_hw(hw);
693 	if (hw->mac_type >= e1000_82544)
694 		ew32(WUC, 0);
695 
696 	if (e1000_init_hw(hw))
697 		e_dev_err("Hardware Error\n");
698 	e1000_update_mng_vlan(adapter);
699 
700 	/* if (adapter->hwflags & HWFLAGS_PHY_PWR_BIT) { */
701 	if (hw->mac_type >= e1000_82544 &&
702 	    hw->autoneg == 1 &&
703 	    hw->autoneg_advertised == ADVERTISE_1000_FULL) {
704 		u32 ctrl = er32(CTRL);
705 		/* clear phy power management bit if we are in gig only mode,
706 		 * which if enabled will attempt negotiation to 100Mb, which
707 		 * can cause a loss of link at power off or driver unload
708 		 */
709 		ctrl &= ~E1000_CTRL_SWDPIN3;
710 		ew32(CTRL, ctrl);
711 	}
712 
713 	/* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
714 	ew32(VET, ETHERNET_IEEE_VLAN_TYPE);
715 
716 	e1000_reset_adaptive(hw);
717 	e1000_phy_get_info(hw, &adapter->phy_info);
718 
719 	e1000_release_manageability(adapter);
720 }
721 
722 /* Dump the eeprom for users having checksum issues */
723 static void e1000_dump_eeprom(struct e1000_adapter *adapter)
724 {
725 	struct net_device *netdev = adapter->netdev;
726 	struct ethtool_eeprom eeprom;
727 	const struct ethtool_ops *ops = netdev->ethtool_ops;
728 	u8 *data;
729 	int i;
730 	u16 csum_old, csum_new = 0;
731 
732 	eeprom.len = ops->get_eeprom_len(netdev);
733 	eeprom.offset = 0;
734 
735 	data = kmalloc(eeprom.len, GFP_KERNEL);
736 	if (!data)
737 		return;
738 
739 	ops->get_eeprom(netdev, &eeprom, data);
740 
741 	csum_old = (data[EEPROM_CHECKSUM_REG * 2]) +
742 		   (data[EEPROM_CHECKSUM_REG * 2 + 1] << 8);
743 	for (i = 0; i < EEPROM_CHECKSUM_REG * 2; i += 2)
744 		csum_new += data[i] + (data[i + 1] << 8);
745 	csum_new = EEPROM_SUM - csum_new;
746 
747 	pr_err("/*********************/\n");
748 	pr_err("Current EEPROM Checksum : 0x%04x\n", csum_old);
749 	pr_err("Calculated              : 0x%04x\n", csum_new);
750 
751 	pr_err("Offset    Values\n");
752 	pr_err("========  ======\n");
753 	print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 16, 1, data, 128, 0);
754 
755 	pr_err("Include this output when contacting your support provider.\n");
756 	pr_err("This is not a software error! Something bad happened to\n");
757 	pr_err("your hardware or EEPROM image. Ignoring this problem could\n");
758 	pr_err("result in further problems, possibly loss of data,\n");
759 	pr_err("corruption or system hangs!\n");
760 	pr_err("The MAC Address will be reset to 00:00:00:00:00:00,\n");
761 	pr_err("which is invalid and requires you to set the proper MAC\n");
762 	pr_err("address manually before continuing to enable this network\n");
763 	pr_err("device. Please inspect the EEPROM dump and report the\n");
764 	pr_err("issue to your hardware vendor or Intel Customer Support.\n");
765 	pr_err("/*********************/\n");
766 
767 	kfree(data);
768 }
769 
770 /**
771  * e1000_is_need_ioport - determine if an adapter needs ioport resources or not
772  * @pdev: PCI device information struct
773  *
774  * Return true if an adapter needs ioport resources
775  **/
776 static int e1000_is_need_ioport(struct pci_dev *pdev)
777 {
778 	switch (pdev->device) {
779 	case E1000_DEV_ID_82540EM:
780 	case E1000_DEV_ID_82540EM_LOM:
781 	case E1000_DEV_ID_82540EP:
782 	case E1000_DEV_ID_82540EP_LOM:
783 	case E1000_DEV_ID_82540EP_LP:
784 	case E1000_DEV_ID_82541EI:
785 	case E1000_DEV_ID_82541EI_MOBILE:
786 	case E1000_DEV_ID_82541ER:
787 	case E1000_DEV_ID_82541ER_LOM:
788 	case E1000_DEV_ID_82541GI:
789 	case E1000_DEV_ID_82541GI_LF:
790 	case E1000_DEV_ID_82541GI_MOBILE:
791 	case E1000_DEV_ID_82544EI_COPPER:
792 	case E1000_DEV_ID_82544EI_FIBER:
793 	case E1000_DEV_ID_82544GC_COPPER:
794 	case E1000_DEV_ID_82544GC_LOM:
795 	case E1000_DEV_ID_82545EM_COPPER:
796 	case E1000_DEV_ID_82545EM_FIBER:
797 	case E1000_DEV_ID_82546EB_COPPER:
798 	case E1000_DEV_ID_82546EB_FIBER:
799 	case E1000_DEV_ID_82546EB_QUAD_COPPER:
800 		return true;
801 	default:
802 		return false;
803 	}
804 }
805 
806 static netdev_features_t e1000_fix_features(struct net_device *netdev,
807 	netdev_features_t features)
808 {
809 	/* Since there is no support for separate Rx/Tx vlan accel
810 	 * enable/disable make sure Tx flag is always in same state as Rx.
811 	 */
812 	if (features & NETIF_F_HW_VLAN_RX)
813 		features |= NETIF_F_HW_VLAN_TX;
814 	else
815 		features &= ~NETIF_F_HW_VLAN_TX;
816 
817 	return features;
818 }
819 
820 static int e1000_set_features(struct net_device *netdev,
821 	netdev_features_t features)
822 {
823 	struct e1000_adapter *adapter = netdev_priv(netdev);
824 	netdev_features_t changed = features ^ netdev->features;
825 
826 	if (changed & NETIF_F_HW_VLAN_RX)
827 		e1000_vlan_mode(netdev, features);
828 
829 	if (!(changed & (NETIF_F_RXCSUM | NETIF_F_RXALL)))
830 		return 0;
831 
832 	netdev->features = features;
833 	adapter->rx_csum = !!(features & NETIF_F_RXCSUM);
834 
835 	if (netif_running(netdev))
836 		e1000_reinit_locked(adapter);
837 	else
838 		e1000_reset(adapter);
839 
840 	return 0;
841 }
842 
843 static const struct net_device_ops e1000_netdev_ops = {
844 	.ndo_open		= e1000_open,
845 	.ndo_stop		= e1000_close,
846 	.ndo_start_xmit		= e1000_xmit_frame,
847 	.ndo_get_stats		= e1000_get_stats,
848 	.ndo_set_rx_mode	= e1000_set_rx_mode,
849 	.ndo_set_mac_address	= e1000_set_mac,
850 	.ndo_tx_timeout		= e1000_tx_timeout,
851 	.ndo_change_mtu		= e1000_change_mtu,
852 	.ndo_do_ioctl		= e1000_ioctl,
853 	.ndo_validate_addr	= eth_validate_addr,
854 	.ndo_vlan_rx_add_vid	= e1000_vlan_rx_add_vid,
855 	.ndo_vlan_rx_kill_vid	= e1000_vlan_rx_kill_vid,
856 #ifdef CONFIG_NET_POLL_CONTROLLER
857 	.ndo_poll_controller	= e1000_netpoll,
858 #endif
859 	.ndo_fix_features	= e1000_fix_features,
860 	.ndo_set_features	= e1000_set_features,
861 };
862 
863 /**
864  * e1000_init_hw_struct - initialize members of hw struct
865  * @adapter: board private struct
866  * @hw: structure used by e1000_hw.c
867  *
868  * Factors out initialization of the e1000_hw struct to its own function
869  * that can be called very early at init (just after struct allocation).
870  * Fields are initialized based on PCI device information and
871  * OS network device settings (MTU size).
872  * Returns negative error codes if MAC type setup fails.
873  */
874 static int e1000_init_hw_struct(struct e1000_adapter *adapter,
875 				struct e1000_hw *hw)
876 {
877 	struct pci_dev *pdev = adapter->pdev;
878 
879 	/* PCI config space info */
880 	hw->vendor_id = pdev->vendor;
881 	hw->device_id = pdev->device;
882 	hw->subsystem_vendor_id = pdev->subsystem_vendor;
883 	hw->subsystem_id = pdev->subsystem_device;
884 	hw->revision_id = pdev->revision;
885 
886 	pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);
887 
888 	hw->max_frame_size = adapter->netdev->mtu +
889 			     ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
890 	hw->min_frame_size = MINIMUM_ETHERNET_FRAME_SIZE;
891 
892 	/* identify the MAC */
893 	if (e1000_set_mac_type(hw)) {
894 		e_err(probe, "Unknown MAC Type\n");
895 		return -EIO;
896 	}
897 
898 	switch (hw->mac_type) {
899 	default:
900 		break;
901 	case e1000_82541:
902 	case e1000_82547:
903 	case e1000_82541_rev_2:
904 	case e1000_82547_rev_2:
905 		hw->phy_init_script = 1;
906 		break;
907 	}
908 
909 	e1000_set_media_type(hw);
910 	e1000_get_bus_info(hw);
911 
912 	hw->wait_autoneg_complete = false;
913 	hw->tbi_compatibility_en = true;
914 	hw->adaptive_ifs = true;
915 
916 	/* Copper options */
917 
918 	if (hw->media_type == e1000_media_type_copper) {
919 		hw->mdix = AUTO_ALL_MODES;
920 		hw->disable_polarity_correction = false;
921 		hw->master_slave = E1000_MASTER_SLAVE;
922 	}
923 
924 	return 0;
925 }
926 
927 /**
928  * e1000_probe - Device Initialization Routine
929  * @pdev: PCI device information struct
930  * @ent: entry in e1000_pci_tbl
931  *
932  * Returns 0 on success, negative on failure
933  *
934  * e1000_probe initializes an adapter identified by a pci_dev structure.
935  * The OS initialization, configuring of the adapter private structure,
936  * and a hardware reset occur.
937  **/
938 static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
939 {
940 	struct net_device *netdev;
941 	struct e1000_adapter *adapter;
942 	struct e1000_hw *hw;
943 
944 	static int cards_found = 0;
945 	static int global_quad_port_a = 0; /* global ksp3 port a indication */
946 	int i, err, pci_using_dac;
947 	u16 eeprom_data = 0;
948 	u16 tmp = 0;
949 	u16 eeprom_apme_mask = E1000_EEPROM_APME;
950 	int bars, need_ioport;
951 
952 	/* do not allocate ioport bars when not needed */
953 	need_ioport = e1000_is_need_ioport(pdev);
954 	if (need_ioport) {
955 		bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO);
956 		err = pci_enable_device(pdev);
957 	} else {
958 		bars = pci_select_bars(pdev, IORESOURCE_MEM);
959 		err = pci_enable_device_mem(pdev);
960 	}
961 	if (err)
962 		return err;
963 
964 	err = pci_request_selected_regions(pdev, bars, e1000_driver_name);
965 	if (err)
966 		goto err_pci_reg;
967 
968 	pci_set_master(pdev);
969 	err = pci_save_state(pdev);
970 	if (err)
971 		goto err_alloc_etherdev;
972 
973 	err = -ENOMEM;
974 	netdev = alloc_etherdev(sizeof(struct e1000_adapter));
975 	if (!netdev)
976 		goto err_alloc_etherdev;
977 
978 	SET_NETDEV_DEV(netdev, &pdev->dev);
979 
980 	pci_set_drvdata(pdev, netdev);
981 	adapter = netdev_priv(netdev);
982 	adapter->netdev = netdev;
983 	adapter->pdev = pdev;
984 	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
985 	adapter->bars = bars;
986 	adapter->need_ioport = need_ioport;
987 
988 	hw = &adapter->hw;
989 	hw->back = adapter;
990 
991 	err = -EIO;
992 	hw->hw_addr = pci_ioremap_bar(pdev, BAR_0);
993 	if (!hw->hw_addr)
994 		goto err_ioremap;
995 
996 	if (adapter->need_ioport) {
997 		for (i = BAR_1; i <= BAR_5; i++) {
998 			if (pci_resource_len(pdev, i) == 0)
999 				continue;
1000 			if (pci_resource_flags(pdev, i) & IORESOURCE_IO) {
1001 				hw->io_base = pci_resource_start(pdev, i);
1002 				break;
1003 			}
1004 		}
1005 	}
1006 
1007 	/* make ready for any if (hw->...) below */
1008 	err = e1000_init_hw_struct(adapter, hw);
1009 	if (err)
1010 		goto err_sw_init;
1011 
1012 	/* there is a workaround being applied below that limits
1013 	 * 64-bit DMA addresses to 64-bit hardware.  There are some
1014 	 * 32-bit adapters that Tx hang when given 64-bit DMA addresses
1015 	 */
1016 	pci_using_dac = 0;
1017 	if ((hw->bus_type == e1000_bus_type_pcix) &&
1018 	    !dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
1019 		/* according to DMA-API-HOWTO, coherent calls will always
1020 		 * succeed if the set call did
1021 		 */
1022 		dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
1023 		pci_using_dac = 1;
1024 	} else {
1025 		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
1026 		if (err) {
1027 			pr_err("No usable DMA config, aborting\n");
1028 			goto err_dma;
1029 		}
1030 		dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
1031 	}
1032 
1033 	netdev->netdev_ops = &e1000_netdev_ops;
1034 	e1000_set_ethtool_ops(netdev);
1035 	netdev->watchdog_timeo = 5 * HZ;
1036 	netif_napi_add(netdev, &adapter->napi, e1000_clean, 64);
1037 
1038 	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
1039 
1040 	adapter->bd_number = cards_found;
1041 
1042 	/* setup the private structure */
1043 
1044 	err = e1000_sw_init(adapter);
1045 	if (err)
1046 		goto err_sw_init;
1047 
1048 	err = -EIO;
1049 	if (hw->mac_type == e1000_ce4100) {
1050 		hw->ce4100_gbe_mdio_base_virt =
1051 					ioremap(pci_resource_start(pdev, BAR_1),
1052 		                                pci_resource_len(pdev, BAR_1));
1053 
1054 		if (!hw->ce4100_gbe_mdio_base_virt)
1055 			goto err_mdio_ioremap;
1056 	}
1057 
1058 	if (hw->mac_type >= e1000_82543) {
1059 		netdev->hw_features = NETIF_F_SG |
1060 				   NETIF_F_HW_CSUM |
1061 				   NETIF_F_HW_VLAN_RX;
1062 		netdev->features = NETIF_F_HW_VLAN_TX |
1063 				   NETIF_F_HW_VLAN_FILTER;
1064 	}
1065 
1066 	if ((hw->mac_type >= e1000_82544) &&
1067 	   (hw->mac_type != e1000_82547))
1068 		netdev->hw_features |= NETIF_F_TSO;
1069 
1070 	netdev->priv_flags |= IFF_SUPP_NOFCS;
1071 
1072 	netdev->features |= netdev->hw_features;
1073 	netdev->hw_features |= (NETIF_F_RXCSUM |
1074 				NETIF_F_RXALL |
1075 				NETIF_F_RXFCS);
1076 
1077 	if (pci_using_dac) {
1078 		netdev->features |= NETIF_F_HIGHDMA;
1079 		netdev->vlan_features |= NETIF_F_HIGHDMA;
1080 	}
1081 
1082 	netdev->vlan_features |= (NETIF_F_TSO |
1083 				  NETIF_F_HW_CSUM |
1084 				  NETIF_F_SG);
1085 
1086 	netdev->priv_flags |= IFF_UNICAST_FLT;
1087 
1088 	adapter->en_mng_pt = e1000_enable_mng_pass_thru(hw);
1089 
1090 	/* initialize eeprom parameters */
1091 	if (e1000_init_eeprom_params(hw)) {
1092 		e_err(probe, "EEPROM initialization failed\n");
1093 		goto err_eeprom;
1094 	}
1095 
1096 	/* before reading the EEPROM, reset the controller to
1097 	 * put the device in a known good starting state
1098 	 */
1099 
1100 	e1000_reset_hw(hw);
1101 
1102 	/* make sure the EEPROM is good */
1103 	if (e1000_validate_eeprom_checksum(hw) < 0) {
1104 		e_err(probe, "The EEPROM Checksum Is Not Valid\n");
1105 		e1000_dump_eeprom(adapter);
1106 		/* set MAC address to all zeroes to invalidate and temporary
1107 		 * disable this device for the user. This blocks regular
1108 		 * traffic while still permitting ethtool ioctls from reaching
1109 		 * the hardware as well as allowing the user to run the
1110 		 * interface after manually setting a hw addr using
1111 		 * `ip set address`
1112 		 */
1113 		memset(hw->mac_addr, 0, netdev->addr_len);
1114 	} else {
1115 		/* copy the MAC address out of the EEPROM */
1116 		if (e1000_read_mac_addr(hw))
1117 			e_err(probe, "EEPROM Read Error\n");
1118 	}
1119 	/* don't block initalization here due to bad MAC address */
1120 	memcpy(netdev->dev_addr, hw->mac_addr, netdev->addr_len);
1121 
1122 	if (!is_valid_ether_addr(netdev->dev_addr))
1123 		e_err(probe, "Invalid MAC Address\n");
1124 
1125 
1126 	INIT_DELAYED_WORK(&adapter->watchdog_task, e1000_watchdog);
1127 	INIT_DELAYED_WORK(&adapter->fifo_stall_task,
1128 			  e1000_82547_tx_fifo_stall_task);
1129 	INIT_DELAYED_WORK(&adapter->phy_info_task, e1000_update_phy_info_task);
1130 	INIT_WORK(&adapter->reset_task, e1000_reset_task);
1131 
1132 	e1000_check_options(adapter);
1133 
1134 	/* Initial Wake on LAN setting
1135 	 * If APM wake is enabled in the EEPROM,
1136 	 * enable the ACPI Magic Packet filter
1137 	 */
1138 
1139 	switch (hw->mac_type) {
1140 	case e1000_82542_rev2_0:
1141 	case e1000_82542_rev2_1:
1142 	case e1000_82543:
1143 		break;
1144 	case e1000_82544:
1145 		e1000_read_eeprom(hw,
1146 			EEPROM_INIT_CONTROL2_REG, 1, &eeprom_data);
1147 		eeprom_apme_mask = E1000_EEPROM_82544_APM;
1148 		break;
1149 	case e1000_82546:
1150 	case e1000_82546_rev_3:
1151 		if (er32(STATUS) & E1000_STATUS_FUNC_1){
1152 			e1000_read_eeprom(hw,
1153 				EEPROM_INIT_CONTROL3_PORT_B, 1, &eeprom_data);
1154 			break;
1155 		}
1156 		/* Fall Through */
1157 	default:
1158 		e1000_read_eeprom(hw,
1159 			EEPROM_INIT_CONTROL3_PORT_A, 1, &eeprom_data);
1160 		break;
1161 	}
1162 	if (eeprom_data & eeprom_apme_mask)
1163 		adapter->eeprom_wol |= E1000_WUFC_MAG;
1164 
1165 	/* now that we have the eeprom settings, apply the special cases
1166 	 * where the eeprom may be wrong or the board simply won't support
1167 	 * wake on lan on a particular port
1168 	 */
1169 	switch (pdev->device) {
1170 	case E1000_DEV_ID_82546GB_PCIE:
1171 		adapter->eeprom_wol = 0;
1172 		break;
1173 	case E1000_DEV_ID_82546EB_FIBER:
1174 	case E1000_DEV_ID_82546GB_FIBER:
1175 		/* Wake events only supported on port A for dual fiber
1176 		 * regardless of eeprom setting
1177 		 */
1178 		if (er32(STATUS) & E1000_STATUS_FUNC_1)
1179 			adapter->eeprom_wol = 0;
1180 		break;
1181 	case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
1182 		/* if quad port adapter, disable WoL on all but port A */
1183 		if (global_quad_port_a != 0)
1184 			adapter->eeprom_wol = 0;
1185 		else
1186 			adapter->quad_port_a = true;
1187 		/* Reset for multiple quad port adapters */
1188 		if (++global_quad_port_a == 4)
1189 			global_quad_port_a = 0;
1190 		break;
1191 	}
1192 
1193 	/* initialize the wol settings based on the eeprom settings */
1194 	adapter->wol = adapter->eeprom_wol;
1195 	device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
1196 
1197 	/* Auto detect PHY address */
1198 	if (hw->mac_type == e1000_ce4100) {
1199 		for (i = 0; i < 32; i++) {
1200 			hw->phy_addr = i;
1201 			e1000_read_phy_reg(hw, PHY_ID2, &tmp);
1202 			if (tmp == 0 || tmp == 0xFF) {
1203 				if (i == 31)
1204 					goto err_eeprom;
1205 				continue;
1206 			} else
1207 				break;
1208 		}
1209 	}
1210 
1211 	/* reset the hardware with the new settings */
1212 	e1000_reset(adapter);
1213 
1214 	strcpy(netdev->name, "eth%d");
1215 	err = register_netdev(netdev);
1216 	if (err)
1217 		goto err_register;
1218 
1219 	e1000_vlan_filter_on_off(adapter, false);
1220 
1221 	/* print bus type/speed/width info */
1222 	e_info(probe, "(PCI%s:%dMHz:%d-bit) %pM\n",
1223 	       ((hw->bus_type == e1000_bus_type_pcix) ? "-X" : ""),
1224 	       ((hw->bus_speed == e1000_bus_speed_133) ? 133 :
1225 		(hw->bus_speed == e1000_bus_speed_120) ? 120 :
1226 		(hw->bus_speed == e1000_bus_speed_100) ? 100 :
1227 		(hw->bus_speed == e1000_bus_speed_66) ? 66 : 33),
1228 	       ((hw->bus_width == e1000_bus_width_64) ? 64 : 32),
1229 	       netdev->dev_addr);
1230 
1231 	/* carrier off reporting is important to ethtool even BEFORE open */
1232 	netif_carrier_off(netdev);
1233 
1234 	e_info(probe, "Intel(R) PRO/1000 Network Connection\n");
1235 
1236 	cards_found++;
1237 	return 0;
1238 
1239 err_register:
1240 err_eeprom:
1241 	e1000_phy_hw_reset(hw);
1242 
1243 	if (hw->flash_address)
1244 		iounmap(hw->flash_address);
1245 	kfree(adapter->tx_ring);
1246 	kfree(adapter->rx_ring);
1247 err_dma:
1248 err_sw_init:
1249 err_mdio_ioremap:
1250 	iounmap(hw->ce4100_gbe_mdio_base_virt);
1251 	iounmap(hw->hw_addr);
1252 err_ioremap:
1253 	free_netdev(netdev);
1254 err_alloc_etherdev:
1255 	pci_release_selected_regions(pdev, bars);
1256 err_pci_reg:
1257 	pci_disable_device(pdev);
1258 	return err;
1259 }
1260 
1261 /**
1262  * e1000_remove - Device Removal Routine
1263  * @pdev: PCI device information struct
1264  *
1265  * e1000_remove is called by the PCI subsystem to alert the driver
1266  * that it should release a PCI device.  The could be caused by a
1267  * Hot-Plug event, or because the driver is going to be removed from
1268  * memory.
1269  **/
1270 static void e1000_remove(struct pci_dev *pdev)
1271 {
1272 	struct net_device *netdev = pci_get_drvdata(pdev);
1273 	struct e1000_adapter *adapter = netdev_priv(netdev);
1274 	struct e1000_hw *hw = &adapter->hw;
1275 
1276 	e1000_down_and_stop(adapter);
1277 	e1000_release_manageability(adapter);
1278 
1279 	unregister_netdev(netdev);
1280 
1281 	e1000_phy_hw_reset(hw);
1282 
1283 	kfree(adapter->tx_ring);
1284 	kfree(adapter->rx_ring);
1285 
1286 	if (hw->mac_type == e1000_ce4100)
1287 		iounmap(hw->ce4100_gbe_mdio_base_virt);
1288 	iounmap(hw->hw_addr);
1289 	if (hw->flash_address)
1290 		iounmap(hw->flash_address);
1291 	pci_release_selected_regions(pdev, adapter->bars);
1292 
1293 	free_netdev(netdev);
1294 
1295 	pci_disable_device(pdev);
1296 }
1297 
1298 /**
1299  * e1000_sw_init - Initialize general software structures (struct e1000_adapter)
1300  * @adapter: board private structure to initialize
1301  *
1302  * e1000_sw_init initializes the Adapter private data structure.
1303  * e1000_init_hw_struct MUST be called before this function
1304  **/
1305 static int e1000_sw_init(struct e1000_adapter *adapter)
1306 {
1307 	adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE;
1308 
1309 	adapter->num_tx_queues = 1;
1310 	adapter->num_rx_queues = 1;
1311 
1312 	if (e1000_alloc_queues(adapter)) {
1313 		e_err(probe, "Unable to allocate memory for queues\n");
1314 		return -ENOMEM;
1315 	}
1316 
1317 	/* Explicitly disable IRQ since the NIC can be in any state. */
1318 	e1000_irq_disable(adapter);
1319 
1320 	spin_lock_init(&adapter->stats_lock);
1321 	mutex_init(&adapter->mutex);
1322 
1323 	set_bit(__E1000_DOWN, &adapter->flags);
1324 
1325 	return 0;
1326 }
1327 
1328 /**
1329  * e1000_alloc_queues - Allocate memory for all rings
1330  * @adapter: board private structure to initialize
1331  *
1332  * We allocate one ring per queue at run-time since we don't know the
1333  * number of queues at compile-time.
1334  **/
1335 static int e1000_alloc_queues(struct e1000_adapter *adapter)
1336 {
1337 	adapter->tx_ring = kcalloc(adapter->num_tx_queues,
1338 	                           sizeof(struct e1000_tx_ring), GFP_KERNEL);
1339 	if (!adapter->tx_ring)
1340 		return -ENOMEM;
1341 
1342 	adapter->rx_ring = kcalloc(adapter->num_rx_queues,
1343 	                           sizeof(struct e1000_rx_ring), GFP_KERNEL);
1344 	if (!adapter->rx_ring) {
1345 		kfree(adapter->tx_ring);
1346 		return -ENOMEM;
1347 	}
1348 
1349 	return E1000_SUCCESS;
1350 }
1351 
1352 /**
1353  * e1000_open - Called when a network interface is made active
1354  * @netdev: network interface device structure
1355  *
1356  * Returns 0 on success, negative value on failure
1357  *
1358  * The open entry point is called when a network interface is made
1359  * active by the system (IFF_UP).  At this point all resources needed
1360  * for transmit and receive operations are allocated, the interrupt
1361  * handler is registered with the OS, the watchdog task is started,
1362  * and the stack is notified that the interface is ready.
1363  **/
1364 static int e1000_open(struct net_device *netdev)
1365 {
1366 	struct e1000_adapter *adapter = netdev_priv(netdev);
1367 	struct e1000_hw *hw = &adapter->hw;
1368 	int err;
1369 
1370 	/* disallow open during test */
1371 	if (test_bit(__E1000_TESTING, &adapter->flags))
1372 		return -EBUSY;
1373 
1374 	netif_carrier_off(netdev);
1375 
1376 	/* allocate transmit descriptors */
1377 	err = e1000_setup_all_tx_resources(adapter);
1378 	if (err)
1379 		goto err_setup_tx;
1380 
1381 	/* allocate receive descriptors */
1382 	err = e1000_setup_all_rx_resources(adapter);
1383 	if (err)
1384 		goto err_setup_rx;
1385 
1386 	e1000_power_up_phy(adapter);
1387 
1388 	adapter->mng_vlan_id = E1000_MNG_VLAN_NONE;
1389 	if ((hw->mng_cookie.status &
1390 			  E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT)) {
1391 		e1000_update_mng_vlan(adapter);
1392 	}
1393 
1394 	/* before we allocate an interrupt, we must be ready to handle it.
1395 	 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
1396 	 * as soon as we call pci_request_irq, so we have to setup our
1397 	 * clean_rx handler before we do so.
1398 	 */
1399 	e1000_configure(adapter);
1400 
1401 	err = e1000_request_irq(adapter);
1402 	if (err)
1403 		goto err_req_irq;
1404 
1405 	/* From here on the code is the same as e1000_up() */
1406 	clear_bit(__E1000_DOWN, &adapter->flags);
1407 
1408 	napi_enable(&adapter->napi);
1409 
1410 	e1000_irq_enable(adapter);
1411 
1412 	netif_start_queue(netdev);
1413 
1414 	/* fire a link status change interrupt to start the watchdog */
1415 	ew32(ICS, E1000_ICS_LSC);
1416 
1417 	return E1000_SUCCESS;
1418 
1419 err_req_irq:
1420 	e1000_power_down_phy(adapter);
1421 	e1000_free_all_rx_resources(adapter);
1422 err_setup_rx:
1423 	e1000_free_all_tx_resources(adapter);
1424 err_setup_tx:
1425 	e1000_reset(adapter);
1426 
1427 	return err;
1428 }
1429 
1430 /**
1431  * e1000_close - Disables a network interface
1432  * @netdev: network interface device structure
1433  *
1434  * Returns 0, this is not allowed to fail
1435  *
1436  * The close entry point is called when an interface is de-activated
1437  * by the OS.  The hardware is still under the drivers control, but
1438  * needs to be disabled.  A global MAC reset is issued to stop the
1439  * hardware, and all transmit and receive resources are freed.
1440  **/
1441 static int e1000_close(struct net_device *netdev)
1442 {
1443 	struct e1000_adapter *adapter = netdev_priv(netdev);
1444 	struct e1000_hw *hw = &adapter->hw;
1445 
1446 	WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags));
1447 	e1000_down(adapter);
1448 	e1000_power_down_phy(adapter);
1449 	e1000_free_irq(adapter);
1450 
1451 	e1000_free_all_tx_resources(adapter);
1452 	e1000_free_all_rx_resources(adapter);
1453 
1454 	/* kill manageability vlan ID if supported, but not if a vlan with
1455 	 * the same ID is registered on the host OS (let 8021q kill it)
1456 	 */
1457 	if ((hw->mng_cookie.status &
1458 	     E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT) &&
1459 	    !test_bit(adapter->mng_vlan_id, adapter->active_vlans)) {
1460 		e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
1461 	}
1462 
1463 	return 0;
1464 }
1465 
1466 /**
1467  * e1000_check_64k_bound - check that memory doesn't cross 64kB boundary
1468  * @adapter: address of board private structure
1469  * @start: address of beginning of memory
1470  * @len: length of memory
1471  **/
1472 static bool e1000_check_64k_bound(struct e1000_adapter *adapter, void *start,
1473 				  unsigned long len)
1474 {
1475 	struct e1000_hw *hw = &adapter->hw;
1476 	unsigned long begin = (unsigned long)start;
1477 	unsigned long end = begin + len;
1478 
1479 	/* First rev 82545 and 82546 need to not allow any memory
1480 	 * write location to cross 64k boundary due to errata 23
1481 	 */
1482 	if (hw->mac_type == e1000_82545 ||
1483 	    hw->mac_type == e1000_ce4100 ||
1484 	    hw->mac_type == e1000_82546) {
1485 		return ((begin ^ (end - 1)) >> 16) != 0 ? false : true;
1486 	}
1487 
1488 	return true;
1489 }
1490 
1491 /**
1492  * e1000_setup_tx_resources - allocate Tx resources (Descriptors)
1493  * @adapter: board private structure
1494  * @txdr:    tx descriptor ring (for a specific queue) to setup
1495  *
1496  * Return 0 on success, negative on failure
1497  **/
1498 static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
1499 				    struct e1000_tx_ring *txdr)
1500 {
1501 	struct pci_dev *pdev = adapter->pdev;
1502 	int size;
1503 
1504 	size = sizeof(struct e1000_buffer) * txdr->count;
1505 	txdr->buffer_info = vzalloc(size);
1506 	if (!txdr->buffer_info)
1507 		return -ENOMEM;
1508 
1509 	/* round up to nearest 4K */
1510 
1511 	txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
1512 	txdr->size = ALIGN(txdr->size, 4096);
1513 
1514 	txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size, &txdr->dma,
1515 					GFP_KERNEL);
1516 	if (!txdr->desc) {
1517 setup_tx_desc_die:
1518 		vfree(txdr->buffer_info);
1519 		e_err(probe, "Unable to allocate memory for the Tx descriptor "
1520 		      "ring\n");
1521 		return -ENOMEM;
1522 	}
1523 
1524 	/* Fix for errata 23, can't cross 64kB boundary */
1525 	if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {
1526 		void *olddesc = txdr->desc;
1527 		dma_addr_t olddma = txdr->dma;
1528 		e_err(tx_err, "txdr align check failed: %u bytes at %p\n",
1529 		      txdr->size, txdr->desc);
1530 		/* Try again, without freeing the previous */
1531 		txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size,
1532 						&txdr->dma, GFP_KERNEL);
1533 		/* Failed allocation, critical failure */
1534 		if (!txdr->desc) {
1535 			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
1536 					  olddma);
1537 			goto setup_tx_desc_die;
1538 		}
1539 
1540 		if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {
1541 			/* give up */
1542 			dma_free_coherent(&pdev->dev, txdr->size, txdr->desc,
1543 					  txdr->dma);
1544 			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
1545 					  olddma);
1546 			e_err(probe, "Unable to allocate aligned memory "
1547 			      "for the transmit descriptor ring\n");
1548 			vfree(txdr->buffer_info);
1549 			return -ENOMEM;
1550 		} else {
1551 			/* Free old allocation, new allocation was successful */
1552 			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
1553 					  olddma);
1554 		}
1555 	}
1556 	memset(txdr->desc, 0, txdr->size);
1557 
1558 	txdr->next_to_use = 0;
1559 	txdr->next_to_clean = 0;
1560 
1561 	return 0;
1562 }
1563 
1564 /**
1565  * e1000_setup_all_tx_resources - wrapper to allocate Tx resources
1566  * 				  (Descriptors) for all queues
1567  * @adapter: board private structure
1568  *
1569  * Return 0 on success, negative on failure
1570  **/
1571 int e1000_setup_all_tx_resources(struct e1000_adapter *adapter)
1572 {
1573 	int i, err = 0;
1574 
1575 	for (i = 0; i < adapter->num_tx_queues; i++) {
1576 		err = e1000_setup_tx_resources(adapter, &adapter->tx_ring[i]);
1577 		if (err) {
1578 			e_err(probe, "Allocation for Tx Queue %u failed\n", i);
1579 			for (i-- ; i >= 0; i--)
1580 				e1000_free_tx_resources(adapter,
1581 							&adapter->tx_ring[i]);
1582 			break;
1583 		}
1584 	}
1585 
1586 	return err;
1587 }
1588 
1589 /**
1590  * e1000_configure_tx - Configure 8254x Transmit Unit after Reset
1591  * @adapter: board private structure
1592  *
1593  * Configure the Tx unit of the MAC after a reset.
1594  **/
1595 static void e1000_configure_tx(struct e1000_adapter *adapter)
1596 {
1597 	u64 tdba;
1598 	struct e1000_hw *hw = &adapter->hw;
1599 	u32 tdlen, tctl, tipg;
1600 	u32 ipgr1, ipgr2;
1601 
1602 	/* Setup the HW Tx Head and Tail descriptor pointers */
1603 
1604 	switch (adapter->num_tx_queues) {
1605 	case 1:
1606 	default:
1607 		tdba = adapter->tx_ring[0].dma;
1608 		tdlen = adapter->tx_ring[0].count *
1609 			sizeof(struct e1000_tx_desc);
1610 		ew32(TDLEN, tdlen);
1611 		ew32(TDBAH, (tdba >> 32));
1612 		ew32(TDBAL, (tdba & 0x00000000ffffffffULL));
1613 		ew32(TDT, 0);
1614 		ew32(TDH, 0);
1615 		adapter->tx_ring[0].tdh = ((hw->mac_type >= e1000_82543) ?
1616 					   E1000_TDH : E1000_82542_TDH);
1617 		adapter->tx_ring[0].tdt = ((hw->mac_type >= e1000_82543) ?
1618 					   E1000_TDT : E1000_82542_TDT);
1619 		break;
1620 	}
1621 
1622 	/* Set the default values for the Tx Inter Packet Gap timer */
1623 	if ((hw->media_type == e1000_media_type_fiber ||
1624 	     hw->media_type == e1000_media_type_internal_serdes))
1625 		tipg = DEFAULT_82543_TIPG_IPGT_FIBER;
1626 	else
1627 		tipg = DEFAULT_82543_TIPG_IPGT_COPPER;
1628 
1629 	switch (hw->mac_type) {
1630 	case e1000_82542_rev2_0:
1631 	case e1000_82542_rev2_1:
1632 		tipg = DEFAULT_82542_TIPG_IPGT;
1633 		ipgr1 = DEFAULT_82542_TIPG_IPGR1;
1634 		ipgr2 = DEFAULT_82542_TIPG_IPGR2;
1635 		break;
1636 	default:
1637 		ipgr1 = DEFAULT_82543_TIPG_IPGR1;
1638 		ipgr2 = DEFAULT_82543_TIPG_IPGR2;
1639 		break;
1640 	}
1641 	tipg |= ipgr1 << E1000_TIPG_IPGR1_SHIFT;
1642 	tipg |= ipgr2 << E1000_TIPG_IPGR2_SHIFT;
1643 	ew32(TIPG, tipg);
1644 
1645 	/* Set the Tx Interrupt Delay register */
1646 
1647 	ew32(TIDV, adapter->tx_int_delay);
1648 	if (hw->mac_type >= e1000_82540)
1649 		ew32(TADV, adapter->tx_abs_int_delay);
1650 
1651 	/* Program the Transmit Control Register */
1652 
1653 	tctl = er32(TCTL);
1654 	tctl &= ~E1000_TCTL_CT;
1655 	tctl |= E1000_TCTL_PSP | E1000_TCTL_RTLC |
1656 		(E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT);
1657 
1658 	e1000_config_collision_dist(hw);
1659 
1660 	/* Setup Transmit Descriptor Settings for eop descriptor */
1661 	adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS;
1662 
1663 	/* only set IDE if we are delaying interrupts using the timers */
1664 	if (adapter->tx_int_delay)
1665 		adapter->txd_cmd |= E1000_TXD_CMD_IDE;
1666 
1667 	if (hw->mac_type < e1000_82543)
1668 		adapter->txd_cmd |= E1000_TXD_CMD_RPS;
1669 	else
1670 		adapter->txd_cmd |= E1000_TXD_CMD_RS;
1671 
1672 	/* Cache if we're 82544 running in PCI-X because we'll
1673 	 * need this to apply a workaround later in the send path.
1674 	 */
1675 	if (hw->mac_type == e1000_82544 &&
1676 	    hw->bus_type == e1000_bus_type_pcix)
1677 		adapter->pcix_82544 = true;
1678 
1679 	ew32(TCTL, tctl);
1680 
1681 }
1682 
1683 /**
1684  * e1000_setup_rx_resources - allocate Rx resources (Descriptors)
1685  * @adapter: board private structure
1686  * @rxdr:    rx descriptor ring (for a specific queue) to setup
1687  *
1688  * Returns 0 on success, negative on failure
1689  **/
1690 static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
1691 				    struct e1000_rx_ring *rxdr)
1692 {
1693 	struct pci_dev *pdev = adapter->pdev;
1694 	int size, desc_len;
1695 
1696 	size = sizeof(struct e1000_buffer) * rxdr->count;
1697 	rxdr->buffer_info = vzalloc(size);
1698 	if (!rxdr->buffer_info)
1699 		return -ENOMEM;
1700 
1701 	desc_len = sizeof(struct e1000_rx_desc);
1702 
1703 	/* Round up to nearest 4K */
1704 
1705 	rxdr->size = rxdr->count * desc_len;
1706 	rxdr->size = ALIGN(rxdr->size, 4096);
1707 
1708 	rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size, &rxdr->dma,
1709 					GFP_KERNEL);
1710 
1711 	if (!rxdr->desc) {
1712 		e_err(probe, "Unable to allocate memory for the Rx descriptor "
1713 		      "ring\n");
1714 setup_rx_desc_die:
1715 		vfree(rxdr->buffer_info);
1716 		return -ENOMEM;
1717 	}
1718 
1719 	/* Fix for errata 23, can't cross 64kB boundary */
1720 	if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) {
1721 		void *olddesc = rxdr->desc;
1722 		dma_addr_t olddma = rxdr->dma;
1723 		e_err(rx_err, "rxdr align check failed: %u bytes at %p\n",
1724 		      rxdr->size, rxdr->desc);
1725 		/* Try again, without freeing the previous */
1726 		rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size,
1727 						&rxdr->dma, GFP_KERNEL);
1728 		/* Failed allocation, critical failure */
1729 		if (!rxdr->desc) {
1730 			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
1731 					  olddma);
1732 			e_err(probe, "Unable to allocate memory for the Rx "
1733 			      "descriptor ring\n");
1734 			goto setup_rx_desc_die;
1735 		}
1736 
1737 		if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) {
1738 			/* give up */
1739 			dma_free_coherent(&pdev->dev, rxdr->size, rxdr->desc,
1740 					  rxdr->dma);
1741 			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
1742 					  olddma);
1743 			e_err(probe, "Unable to allocate aligned memory for "
1744 			      "the Rx descriptor ring\n");
1745 			goto setup_rx_desc_die;
1746 		} else {
1747 			/* Free old allocation, new allocation was successful */
1748 			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
1749 					  olddma);
1750 		}
1751 	}
1752 	memset(rxdr->desc, 0, rxdr->size);
1753 
1754 	rxdr->next_to_clean = 0;
1755 	rxdr->next_to_use = 0;
1756 	rxdr->rx_skb_top = NULL;
1757 
1758 	return 0;
1759 }
1760 
1761 /**
1762  * e1000_setup_all_rx_resources - wrapper to allocate Rx resources
1763  * 				  (Descriptors) for all queues
1764  * @adapter: board private structure
1765  *
1766  * Return 0 on success, negative on failure
1767  **/
1768 int e1000_setup_all_rx_resources(struct e1000_adapter *adapter)
1769 {
1770 	int i, err = 0;
1771 
1772 	for (i = 0; i < adapter->num_rx_queues; i++) {
1773 		err = e1000_setup_rx_resources(adapter, &adapter->rx_ring[i]);
1774 		if (err) {
1775 			e_err(probe, "Allocation for Rx Queue %u failed\n", i);
1776 			for (i-- ; i >= 0; i--)
1777 				e1000_free_rx_resources(adapter,
1778 							&adapter->rx_ring[i]);
1779 			break;
1780 		}
1781 	}
1782 
1783 	return err;
1784 }
1785 
1786 /**
1787  * e1000_setup_rctl - configure the receive control registers
1788  * @adapter: Board private structure
1789  **/
1790 static void e1000_setup_rctl(struct e1000_adapter *adapter)
1791 {
1792 	struct e1000_hw *hw = &adapter->hw;
1793 	u32 rctl;
1794 
1795 	rctl = er32(RCTL);
1796 
1797 	rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
1798 
1799 	rctl |= E1000_RCTL_BAM | E1000_RCTL_LBM_NO |
1800 		E1000_RCTL_RDMTS_HALF |
1801 		(hw->mc_filter_type << E1000_RCTL_MO_SHIFT);
1802 
1803 	if (hw->tbi_compatibility_on == 1)
1804 		rctl |= E1000_RCTL_SBP;
1805 	else
1806 		rctl &= ~E1000_RCTL_SBP;
1807 
1808 	if (adapter->netdev->mtu <= ETH_DATA_LEN)
1809 		rctl &= ~E1000_RCTL_LPE;
1810 	else
1811 		rctl |= E1000_RCTL_LPE;
1812 
1813 	/* Setup buffer sizes */
1814 	rctl &= ~E1000_RCTL_SZ_4096;
1815 	rctl |= E1000_RCTL_BSEX;
1816 	switch (adapter->rx_buffer_len) {
1817 		case E1000_RXBUFFER_2048:
1818 		default:
1819 			rctl |= E1000_RCTL_SZ_2048;
1820 			rctl &= ~E1000_RCTL_BSEX;
1821 			break;
1822 		case E1000_RXBUFFER_4096:
1823 			rctl |= E1000_RCTL_SZ_4096;
1824 			break;
1825 		case E1000_RXBUFFER_8192:
1826 			rctl |= E1000_RCTL_SZ_8192;
1827 			break;
1828 		case E1000_RXBUFFER_16384:
1829 			rctl |= E1000_RCTL_SZ_16384;
1830 			break;
1831 	}
1832 
1833 	/* This is useful for sniffing bad packets. */
1834 	if (adapter->netdev->features & NETIF_F_RXALL) {
1835 		/* UPE and MPE will be handled by normal PROMISC logic
1836 		 * in e1000e_set_rx_mode
1837 		 */
1838 		rctl |= (E1000_RCTL_SBP | /* Receive bad packets */
1839 			 E1000_RCTL_BAM | /* RX All Bcast Pkts */
1840 			 E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */
1841 
1842 		rctl &= ~(E1000_RCTL_VFE | /* Disable VLAN filter */
1843 			  E1000_RCTL_DPF | /* Allow filtered pause */
1844 			  E1000_RCTL_CFIEN); /* Dis VLAN CFIEN Filter */
1845 		/* Do not mess with E1000_CTRL_VME, it affects transmit as well,
1846 		 * and that breaks VLANs.
1847 		 */
1848 	}
1849 
1850 	ew32(RCTL, rctl);
1851 }
1852 
1853 /**
1854  * e1000_configure_rx - Configure 8254x Receive Unit after Reset
1855  * @adapter: board private structure
1856  *
1857  * Configure the Rx unit of the MAC after a reset.
1858  **/
1859 static void e1000_configure_rx(struct e1000_adapter *adapter)
1860 {
1861 	u64 rdba;
1862 	struct e1000_hw *hw = &adapter->hw;
1863 	u32 rdlen, rctl, rxcsum;
1864 
1865 	if (adapter->netdev->mtu > ETH_DATA_LEN) {
1866 		rdlen = adapter->rx_ring[0].count *
1867 		        sizeof(struct e1000_rx_desc);
1868 		adapter->clean_rx = e1000_clean_jumbo_rx_irq;
1869 		adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers;
1870 	} else {
1871 		rdlen = adapter->rx_ring[0].count *
1872 		        sizeof(struct e1000_rx_desc);
1873 		adapter->clean_rx = e1000_clean_rx_irq;
1874 		adapter->alloc_rx_buf = e1000_alloc_rx_buffers;
1875 	}
1876 
1877 	/* disable receives while setting up the descriptors */
1878 	rctl = er32(RCTL);
1879 	ew32(RCTL, rctl & ~E1000_RCTL_EN);
1880 
1881 	/* set the Receive Delay Timer Register */
1882 	ew32(RDTR, adapter->rx_int_delay);
1883 
1884 	if (hw->mac_type >= e1000_82540) {
1885 		ew32(RADV, adapter->rx_abs_int_delay);
1886 		if (adapter->itr_setting != 0)
1887 			ew32(ITR, 1000000000 / (adapter->itr * 256));
1888 	}
1889 
1890 	/* Setup the HW Rx Head and Tail Descriptor Pointers and
1891 	 * the Base and Length of the Rx Descriptor Ring
1892 	 */
1893 	switch (adapter->num_rx_queues) {
1894 	case 1:
1895 	default:
1896 		rdba = adapter->rx_ring[0].dma;
1897 		ew32(RDLEN, rdlen);
1898 		ew32(RDBAH, (rdba >> 32));
1899 		ew32(RDBAL, (rdba & 0x00000000ffffffffULL));
1900 		ew32(RDT, 0);
1901 		ew32(RDH, 0);
1902 		adapter->rx_ring[0].rdh = ((hw->mac_type >= e1000_82543) ?
1903 					   E1000_RDH : E1000_82542_RDH);
1904 		adapter->rx_ring[0].rdt = ((hw->mac_type >= e1000_82543) ?
1905 					   E1000_RDT : E1000_82542_RDT);
1906 		break;
1907 	}
1908 
1909 	/* Enable 82543 Receive Checksum Offload for TCP and UDP */
1910 	if (hw->mac_type >= e1000_82543) {
1911 		rxcsum = er32(RXCSUM);
1912 		if (adapter->rx_csum)
1913 			rxcsum |= E1000_RXCSUM_TUOFL;
1914 		else
1915 			/* don't need to clear IPPCSE as it defaults to 0 */
1916 			rxcsum &= ~E1000_RXCSUM_TUOFL;
1917 		ew32(RXCSUM, rxcsum);
1918 	}
1919 
1920 	/* Enable Receives */
1921 	ew32(RCTL, rctl | E1000_RCTL_EN);
1922 }
1923 
1924 /**
1925  * e1000_free_tx_resources - Free Tx Resources per Queue
1926  * @adapter: board private structure
1927  * @tx_ring: Tx descriptor ring for a specific queue
1928  *
1929  * Free all transmit software resources
1930  **/
1931 static void e1000_free_tx_resources(struct e1000_adapter *adapter,
1932 				    struct e1000_tx_ring *tx_ring)
1933 {
1934 	struct pci_dev *pdev = adapter->pdev;
1935 
1936 	e1000_clean_tx_ring(adapter, tx_ring);
1937 
1938 	vfree(tx_ring->buffer_info);
1939 	tx_ring->buffer_info = NULL;
1940 
1941 	dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
1942 			  tx_ring->dma);
1943 
1944 	tx_ring->desc = NULL;
1945 }
1946 
1947 /**
1948  * e1000_free_all_tx_resources - Free Tx Resources for All Queues
1949  * @adapter: board private structure
1950  *
1951  * Free all transmit software resources
1952  **/
1953 void e1000_free_all_tx_resources(struct e1000_adapter *adapter)
1954 {
1955 	int i;
1956 
1957 	for (i = 0; i < adapter->num_tx_queues; i++)
1958 		e1000_free_tx_resources(adapter, &adapter->tx_ring[i]);
1959 }
1960 
1961 static void e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,
1962 					     struct e1000_buffer *buffer_info)
1963 {
1964 	if (buffer_info->dma) {
1965 		if (buffer_info->mapped_as_page)
1966 			dma_unmap_page(&adapter->pdev->dev, buffer_info->dma,
1967 				       buffer_info->length, DMA_TO_DEVICE);
1968 		else
1969 			dma_unmap_single(&adapter->pdev->dev, buffer_info->dma,
1970 					 buffer_info->length,
1971 					 DMA_TO_DEVICE);
1972 		buffer_info->dma = 0;
1973 	}
1974 	if (buffer_info->skb) {
1975 		dev_kfree_skb_any(buffer_info->skb);
1976 		buffer_info->skb = NULL;
1977 	}
1978 	buffer_info->time_stamp = 0;
1979 	/* buffer_info must be completely set up in the transmit path */
1980 }
1981 
1982 /**
1983  * e1000_clean_tx_ring - Free Tx Buffers
1984  * @adapter: board private structure
1985  * @tx_ring: ring to be cleaned
1986  **/
1987 static void e1000_clean_tx_ring(struct e1000_adapter *adapter,
1988 				struct e1000_tx_ring *tx_ring)
1989 {
1990 	struct e1000_hw *hw = &adapter->hw;
1991 	struct e1000_buffer *buffer_info;
1992 	unsigned long size;
1993 	unsigned int i;
1994 
1995 	/* Free all the Tx ring sk_buffs */
1996 
1997 	for (i = 0; i < tx_ring->count; i++) {
1998 		buffer_info = &tx_ring->buffer_info[i];
1999 		e1000_unmap_and_free_tx_resource(adapter, buffer_info);
2000 	}
2001 
2002 	netdev_reset_queue(adapter->netdev);
2003 	size = sizeof(struct e1000_buffer) * tx_ring->count;
2004 	memset(tx_ring->buffer_info, 0, size);
2005 
2006 	/* Zero out the descriptor ring */
2007 
2008 	memset(tx_ring->desc, 0, tx_ring->size);
2009 
2010 	tx_ring->next_to_use = 0;
2011 	tx_ring->next_to_clean = 0;
2012 	tx_ring->last_tx_tso = false;
2013 
2014 	writel(0, hw->hw_addr + tx_ring->tdh);
2015 	writel(0, hw->hw_addr + tx_ring->tdt);
2016 }
2017 
2018 /**
2019  * e1000_clean_all_tx_rings - Free Tx Buffers for all queues
2020  * @adapter: board private structure
2021  **/
2022 static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter)
2023 {
2024 	int i;
2025 
2026 	for (i = 0; i < adapter->num_tx_queues; i++)
2027 		e1000_clean_tx_ring(adapter, &adapter->tx_ring[i]);
2028 }
2029 
2030 /**
2031  * e1000_free_rx_resources - Free Rx Resources
2032  * @adapter: board private structure
2033  * @rx_ring: ring to clean the resources from
2034  *
2035  * Free all receive software resources
2036  **/
2037 static void e1000_free_rx_resources(struct e1000_adapter *adapter,
2038 				    struct e1000_rx_ring *rx_ring)
2039 {
2040 	struct pci_dev *pdev = adapter->pdev;
2041 
2042 	e1000_clean_rx_ring(adapter, rx_ring);
2043 
2044 	vfree(rx_ring->buffer_info);
2045 	rx_ring->buffer_info = NULL;
2046 
2047 	dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
2048 			  rx_ring->dma);
2049 
2050 	rx_ring->desc = NULL;
2051 }
2052 
2053 /**
2054  * e1000_free_all_rx_resources - Free Rx Resources for All Queues
2055  * @adapter: board private structure
2056  *
2057  * Free all receive software resources
2058  **/
2059 void e1000_free_all_rx_resources(struct e1000_adapter *adapter)
2060 {
2061 	int i;
2062 
2063 	for (i = 0; i < adapter->num_rx_queues; i++)
2064 		e1000_free_rx_resources(adapter, &adapter->rx_ring[i]);
2065 }
2066 
2067 /**
2068  * e1000_clean_rx_ring - Free Rx Buffers per Queue
2069  * @adapter: board private structure
2070  * @rx_ring: ring to free buffers from
2071  **/
2072 static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
2073 				struct e1000_rx_ring *rx_ring)
2074 {
2075 	struct e1000_hw *hw = &adapter->hw;
2076 	struct e1000_buffer *buffer_info;
2077 	struct pci_dev *pdev = adapter->pdev;
2078 	unsigned long size;
2079 	unsigned int i;
2080 
2081 	/* Free all the Rx ring sk_buffs */
2082 	for (i = 0; i < rx_ring->count; i++) {
2083 		buffer_info = &rx_ring->buffer_info[i];
2084 		if (buffer_info->dma &&
2085 		    adapter->clean_rx == e1000_clean_rx_irq) {
2086 			dma_unmap_single(&pdev->dev, buffer_info->dma,
2087 			                 buffer_info->length,
2088 					 DMA_FROM_DEVICE);
2089 		} else if (buffer_info->dma &&
2090 		           adapter->clean_rx == e1000_clean_jumbo_rx_irq) {
2091 			dma_unmap_page(&pdev->dev, buffer_info->dma,
2092 				       buffer_info->length,
2093 				       DMA_FROM_DEVICE);
2094 		}
2095 
2096 		buffer_info->dma = 0;
2097 		if (buffer_info->page) {
2098 			put_page(buffer_info->page);
2099 			buffer_info->page = NULL;
2100 		}
2101 		if (buffer_info->skb) {
2102 			dev_kfree_skb(buffer_info->skb);
2103 			buffer_info->skb = NULL;
2104 		}
2105 	}
2106 
2107 	/* there also may be some cached data from a chained receive */
2108 	if (rx_ring->rx_skb_top) {
2109 		dev_kfree_skb(rx_ring->rx_skb_top);
2110 		rx_ring->rx_skb_top = NULL;
2111 	}
2112 
2113 	size = sizeof(struct e1000_buffer) * rx_ring->count;
2114 	memset(rx_ring->buffer_info, 0, size);
2115 
2116 	/* Zero out the descriptor ring */
2117 	memset(rx_ring->desc, 0, rx_ring->size);
2118 
2119 	rx_ring->next_to_clean = 0;
2120 	rx_ring->next_to_use = 0;
2121 
2122 	writel(0, hw->hw_addr + rx_ring->rdh);
2123 	writel(0, hw->hw_addr + rx_ring->rdt);
2124 }
2125 
2126 /**
2127  * e1000_clean_all_rx_rings - Free Rx Buffers for all queues
2128  * @adapter: board private structure
2129  **/
2130 static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter)
2131 {
2132 	int i;
2133 
2134 	for (i = 0; i < adapter->num_rx_queues; i++)
2135 		e1000_clean_rx_ring(adapter, &adapter->rx_ring[i]);
2136 }
2137 
2138 /* The 82542 2.0 (revision 2) needs to have the receive unit in reset
2139  * and memory write and invalidate disabled for certain operations
2140  */
2141 static void e1000_enter_82542_rst(struct e1000_adapter *adapter)
2142 {
2143 	struct e1000_hw *hw = &adapter->hw;
2144 	struct net_device *netdev = adapter->netdev;
2145 	u32 rctl;
2146 
2147 	e1000_pci_clear_mwi(hw);
2148 
2149 	rctl = er32(RCTL);
2150 	rctl |= E1000_RCTL_RST;
2151 	ew32(RCTL, rctl);
2152 	E1000_WRITE_FLUSH();
2153 	mdelay(5);
2154 
2155 	if (netif_running(netdev))
2156 		e1000_clean_all_rx_rings(adapter);
2157 }
2158 
2159 static void e1000_leave_82542_rst(struct e1000_adapter *adapter)
2160 {
2161 	struct e1000_hw *hw = &adapter->hw;
2162 	struct net_device *netdev = adapter->netdev;
2163 	u32 rctl;
2164 
2165 	rctl = er32(RCTL);
2166 	rctl &= ~E1000_RCTL_RST;
2167 	ew32(RCTL, rctl);
2168 	E1000_WRITE_FLUSH();
2169 	mdelay(5);
2170 
2171 	if (hw->pci_cmd_word & PCI_COMMAND_INVALIDATE)
2172 		e1000_pci_set_mwi(hw);
2173 
2174 	if (netif_running(netdev)) {
2175 		/* No need to loop, because 82542 supports only 1 queue */
2176 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
2177 		e1000_configure_rx(adapter);
2178 		adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
2179 	}
2180 }
2181 
2182 /**
2183  * e1000_set_mac - Change the Ethernet Address of the NIC
2184  * @netdev: network interface device structure
2185  * @p: pointer to an address structure
2186  *
2187  * Returns 0 on success, negative on failure
2188  **/
2189 static int e1000_set_mac(struct net_device *netdev, void *p)
2190 {
2191 	struct e1000_adapter *adapter = netdev_priv(netdev);
2192 	struct e1000_hw *hw = &adapter->hw;
2193 	struct sockaddr *addr = p;
2194 
2195 	if (!is_valid_ether_addr(addr->sa_data))
2196 		return -EADDRNOTAVAIL;
2197 
2198 	/* 82542 2.0 needs to be in reset to write receive address registers */
2199 
2200 	if (hw->mac_type == e1000_82542_rev2_0)
2201 		e1000_enter_82542_rst(adapter);
2202 
2203 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
2204 	memcpy(hw->mac_addr, addr->sa_data, netdev->addr_len);
2205 
2206 	e1000_rar_set(hw, hw->mac_addr, 0);
2207 
2208 	if (hw->mac_type == e1000_82542_rev2_0)
2209 		e1000_leave_82542_rst(adapter);
2210 
2211 	return 0;
2212 }
2213 
2214 /**
2215  * e1000_set_rx_mode - Secondary Unicast, Multicast and Promiscuous mode set
2216  * @netdev: network interface device structure
2217  *
2218  * The set_rx_mode entry point is called whenever the unicast or multicast
2219  * address lists or the network interface flags are updated. This routine is
2220  * responsible for configuring the hardware for proper unicast, multicast,
2221  * promiscuous mode, and all-multi behavior.
2222  **/
2223 static void e1000_set_rx_mode(struct net_device *netdev)
2224 {
2225 	struct e1000_adapter *adapter = netdev_priv(netdev);
2226 	struct e1000_hw *hw = &adapter->hw;
2227 	struct netdev_hw_addr *ha;
2228 	bool use_uc = false;
2229 	u32 rctl;
2230 	u32 hash_value;
2231 	int i, rar_entries = E1000_RAR_ENTRIES;
2232 	int mta_reg_count = E1000_NUM_MTA_REGISTERS;
2233 	u32 *mcarray = kcalloc(mta_reg_count, sizeof(u32), GFP_ATOMIC);
2234 
2235 	if (!mcarray)
2236 		return;
2237 
2238 	/* Check for Promiscuous and All Multicast modes */
2239 
2240 	rctl = er32(RCTL);
2241 
2242 	if (netdev->flags & IFF_PROMISC) {
2243 		rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
2244 		rctl &= ~E1000_RCTL_VFE;
2245 	} else {
2246 		if (netdev->flags & IFF_ALLMULTI)
2247 			rctl |= E1000_RCTL_MPE;
2248 		else
2249 			rctl &= ~E1000_RCTL_MPE;
2250 		/* Enable VLAN filter if there is a VLAN */
2251 		if (e1000_vlan_used(adapter))
2252 			rctl |= E1000_RCTL_VFE;
2253 	}
2254 
2255 	if (netdev_uc_count(netdev) > rar_entries - 1) {
2256 		rctl |= E1000_RCTL_UPE;
2257 	} else if (!(netdev->flags & IFF_PROMISC)) {
2258 		rctl &= ~E1000_RCTL_UPE;
2259 		use_uc = true;
2260 	}
2261 
2262 	ew32(RCTL, rctl);
2263 
2264 	/* 82542 2.0 needs to be in reset to write receive address registers */
2265 
2266 	if (hw->mac_type == e1000_82542_rev2_0)
2267 		e1000_enter_82542_rst(adapter);
2268 
2269 	/* load the first 14 addresses into the exact filters 1-14. Unicast
2270 	 * addresses take precedence to avoid disabling unicast filtering
2271 	 * when possible.
2272 	 *
2273 	 * RAR 0 is used for the station MAC address
2274 	 * if there are not 14 addresses, go ahead and clear the filters
2275 	 */
2276 	i = 1;
2277 	if (use_uc)
2278 		netdev_for_each_uc_addr(ha, netdev) {
2279 			if (i == rar_entries)
2280 				break;
2281 			e1000_rar_set(hw, ha->addr, i++);
2282 		}
2283 
2284 	netdev_for_each_mc_addr(ha, netdev) {
2285 		if (i == rar_entries) {
2286 			/* load any remaining addresses into the hash table */
2287 			u32 hash_reg, hash_bit, mta;
2288 			hash_value = e1000_hash_mc_addr(hw, ha->addr);
2289 			hash_reg = (hash_value >> 5) & 0x7F;
2290 			hash_bit = hash_value & 0x1F;
2291 			mta = (1 << hash_bit);
2292 			mcarray[hash_reg] |= mta;
2293 		} else {
2294 			e1000_rar_set(hw, ha->addr, i++);
2295 		}
2296 	}
2297 
2298 	for (; i < rar_entries; i++) {
2299 		E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
2300 		E1000_WRITE_FLUSH();
2301 		E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
2302 		E1000_WRITE_FLUSH();
2303 	}
2304 
2305 	/* write the hash table completely, write from bottom to avoid
2306 	 * both stupid write combining chipsets, and flushing each write
2307 	 */
2308 	for (i = mta_reg_count - 1; i >= 0 ; i--) {
2309 		/* If we are on an 82544 has an errata where writing odd
2310 		 * offsets overwrites the previous even offset, but writing
2311 		 * backwards over the range solves the issue by always
2312 		 * writing the odd offset first
2313 		 */
2314 		E1000_WRITE_REG_ARRAY(hw, MTA, i, mcarray[i]);
2315 	}
2316 	E1000_WRITE_FLUSH();
2317 
2318 	if (hw->mac_type == e1000_82542_rev2_0)
2319 		e1000_leave_82542_rst(adapter);
2320 
2321 	kfree(mcarray);
2322 }
2323 
2324 /**
2325  * e1000_update_phy_info_task - get phy info
2326  * @work: work struct contained inside adapter struct
2327  *
2328  * Need to wait a few seconds after link up to get diagnostic information from
2329  * the phy
2330  */
2331 static void e1000_update_phy_info_task(struct work_struct *work)
2332 {
2333 	struct e1000_adapter *adapter = container_of(work,
2334 						     struct e1000_adapter,
2335 						     phy_info_task.work);
2336 	if (test_bit(__E1000_DOWN, &adapter->flags))
2337 		return;
2338 	mutex_lock(&adapter->mutex);
2339 	e1000_phy_get_info(&adapter->hw, &adapter->phy_info);
2340 	mutex_unlock(&adapter->mutex);
2341 }
2342 
2343 /**
2344  * e1000_82547_tx_fifo_stall_task - task to complete work
2345  * @work: work struct contained inside adapter struct
2346  **/
2347 static void e1000_82547_tx_fifo_stall_task(struct work_struct *work)
2348 {
2349 	struct e1000_adapter *adapter = container_of(work,
2350 						     struct e1000_adapter,
2351 						     fifo_stall_task.work);
2352 	struct e1000_hw *hw = &adapter->hw;
2353 	struct net_device *netdev = adapter->netdev;
2354 	u32 tctl;
2355 
2356 	if (test_bit(__E1000_DOWN, &adapter->flags))
2357 		return;
2358 	mutex_lock(&adapter->mutex);
2359 	if (atomic_read(&adapter->tx_fifo_stall)) {
2360 		if ((er32(TDT) == er32(TDH)) &&
2361 		   (er32(TDFT) == er32(TDFH)) &&
2362 		   (er32(TDFTS) == er32(TDFHS))) {
2363 			tctl = er32(TCTL);
2364 			ew32(TCTL, tctl & ~E1000_TCTL_EN);
2365 			ew32(TDFT, adapter->tx_head_addr);
2366 			ew32(TDFH, adapter->tx_head_addr);
2367 			ew32(TDFTS, adapter->tx_head_addr);
2368 			ew32(TDFHS, adapter->tx_head_addr);
2369 			ew32(TCTL, tctl);
2370 			E1000_WRITE_FLUSH();
2371 
2372 			adapter->tx_fifo_head = 0;
2373 			atomic_set(&adapter->tx_fifo_stall, 0);
2374 			netif_wake_queue(netdev);
2375 		} else if (!test_bit(__E1000_DOWN, &adapter->flags)) {
2376 			schedule_delayed_work(&adapter->fifo_stall_task, 1);
2377 		}
2378 	}
2379 	mutex_unlock(&adapter->mutex);
2380 }
2381 
2382 bool e1000_has_link(struct e1000_adapter *adapter)
2383 {
2384 	struct e1000_hw *hw = &adapter->hw;
2385 	bool link_active = false;
2386 
2387 	/* get_link_status is set on LSC (link status) interrupt or rx
2388 	 * sequence error interrupt (except on intel ce4100).
2389 	 * get_link_status will stay false until the
2390 	 * e1000_check_for_link establishes link for copper adapters
2391 	 * ONLY
2392 	 */
2393 	switch (hw->media_type) {
2394 	case e1000_media_type_copper:
2395 		if (hw->mac_type == e1000_ce4100)
2396 			hw->get_link_status = 1;
2397 		if (hw->get_link_status) {
2398 			e1000_check_for_link(hw);
2399 			link_active = !hw->get_link_status;
2400 		} else {
2401 			link_active = true;
2402 		}
2403 		break;
2404 	case e1000_media_type_fiber:
2405 		e1000_check_for_link(hw);
2406 		link_active = !!(er32(STATUS) & E1000_STATUS_LU);
2407 		break;
2408 	case e1000_media_type_internal_serdes:
2409 		e1000_check_for_link(hw);
2410 		link_active = hw->serdes_has_link;
2411 		break;
2412 	default:
2413 		break;
2414 	}
2415 
2416 	return link_active;
2417 }
2418 
2419 /**
2420  * e1000_watchdog - work function
2421  * @work: work struct contained inside adapter struct
2422  **/
2423 static void e1000_watchdog(struct work_struct *work)
2424 {
2425 	struct e1000_adapter *adapter = container_of(work,
2426 						     struct e1000_adapter,
2427 						     watchdog_task.work);
2428 	struct e1000_hw *hw = &adapter->hw;
2429 	struct net_device *netdev = adapter->netdev;
2430 	struct e1000_tx_ring *txdr = adapter->tx_ring;
2431 	u32 link, tctl;
2432 
2433 	if (test_bit(__E1000_DOWN, &adapter->flags))
2434 		return;
2435 
2436 	mutex_lock(&adapter->mutex);
2437 	link = e1000_has_link(adapter);
2438 	if ((netif_carrier_ok(netdev)) && link)
2439 		goto link_up;
2440 
2441 	if (link) {
2442 		if (!netif_carrier_ok(netdev)) {
2443 			u32 ctrl;
2444 			bool txb2b = true;
2445 			/* update snapshot of PHY registers on LSC */
2446 			e1000_get_speed_and_duplex(hw,
2447 						   &adapter->link_speed,
2448 						   &adapter->link_duplex);
2449 
2450 			ctrl = er32(CTRL);
2451 			pr_info("%s NIC Link is Up %d Mbps %s, "
2452 				"Flow Control: %s\n",
2453 				netdev->name,
2454 				adapter->link_speed,
2455 				adapter->link_duplex == FULL_DUPLEX ?
2456 				"Full Duplex" : "Half Duplex",
2457 				((ctrl & E1000_CTRL_TFCE) && (ctrl &
2458 				E1000_CTRL_RFCE)) ? "RX/TX" : ((ctrl &
2459 				E1000_CTRL_RFCE) ? "RX" : ((ctrl &
2460 				E1000_CTRL_TFCE) ? "TX" : "None")));
2461 
2462 			/* adjust timeout factor according to speed/duplex */
2463 			adapter->tx_timeout_factor = 1;
2464 			switch (adapter->link_speed) {
2465 			case SPEED_10:
2466 				txb2b = false;
2467 				adapter->tx_timeout_factor = 16;
2468 				break;
2469 			case SPEED_100:
2470 				txb2b = false;
2471 				/* maybe add some timeout factor ? */
2472 				break;
2473 			}
2474 
2475 			/* enable transmits in the hardware */
2476 			tctl = er32(TCTL);
2477 			tctl |= E1000_TCTL_EN;
2478 			ew32(TCTL, tctl);
2479 
2480 			netif_carrier_on(netdev);
2481 			if (!test_bit(__E1000_DOWN, &adapter->flags))
2482 				schedule_delayed_work(&adapter->phy_info_task,
2483 						      2 * HZ);
2484 			adapter->smartspeed = 0;
2485 		}
2486 	} else {
2487 		if (netif_carrier_ok(netdev)) {
2488 			adapter->link_speed = 0;
2489 			adapter->link_duplex = 0;
2490 			pr_info("%s NIC Link is Down\n",
2491 				netdev->name);
2492 			netif_carrier_off(netdev);
2493 
2494 			if (!test_bit(__E1000_DOWN, &adapter->flags))
2495 				schedule_delayed_work(&adapter->phy_info_task,
2496 						      2 * HZ);
2497 		}
2498 
2499 		e1000_smartspeed(adapter);
2500 	}
2501 
2502 link_up:
2503 	e1000_update_stats(adapter);
2504 
2505 	hw->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old;
2506 	adapter->tpt_old = adapter->stats.tpt;
2507 	hw->collision_delta = adapter->stats.colc - adapter->colc_old;
2508 	adapter->colc_old = adapter->stats.colc;
2509 
2510 	adapter->gorcl = adapter->stats.gorcl - adapter->gorcl_old;
2511 	adapter->gorcl_old = adapter->stats.gorcl;
2512 	adapter->gotcl = adapter->stats.gotcl - adapter->gotcl_old;
2513 	adapter->gotcl_old = adapter->stats.gotcl;
2514 
2515 	e1000_update_adaptive(hw);
2516 
2517 	if (!netif_carrier_ok(netdev)) {
2518 		if (E1000_DESC_UNUSED(txdr) + 1 < txdr->count) {
2519 			/* We've lost link, so the controller stops DMA,
2520 			 * but we've got queued Tx work that's never going
2521 			 * to get done, so reset controller to flush Tx.
2522 			 * (Do the reset outside of interrupt context).
2523 			 */
2524 			adapter->tx_timeout_count++;
2525 			schedule_work(&adapter->reset_task);
2526 			/* exit immediately since reset is imminent */
2527 			goto unlock;
2528 		}
2529 	}
2530 
2531 	/* Simple mode for Interrupt Throttle Rate (ITR) */
2532 	if (hw->mac_type >= e1000_82540 && adapter->itr_setting == 4) {
2533 		/* Symmetric Tx/Rx gets a reduced ITR=2000;
2534 		 * Total asymmetrical Tx or Rx gets ITR=8000;
2535 		 * everyone else is between 2000-8000.
2536 		 */
2537 		u32 goc = (adapter->gotcl + adapter->gorcl) / 10000;
2538 		u32 dif = (adapter->gotcl > adapter->gorcl ?
2539 			    adapter->gotcl - adapter->gorcl :
2540 			    adapter->gorcl - adapter->gotcl) / 10000;
2541 		u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000;
2542 
2543 		ew32(ITR, 1000000000 / (itr * 256));
2544 	}
2545 
2546 	/* Cause software interrupt to ensure rx ring is cleaned */
2547 	ew32(ICS, E1000_ICS_RXDMT0);
2548 
2549 	/* Force detection of hung controller every watchdog period */
2550 	adapter->detect_tx_hung = true;
2551 
2552 	/* Reschedule the task */
2553 	if (!test_bit(__E1000_DOWN, &adapter->flags))
2554 		schedule_delayed_work(&adapter->watchdog_task, 2 * HZ);
2555 
2556 unlock:
2557 	mutex_unlock(&adapter->mutex);
2558 }
2559 
2560 enum latency_range {
2561 	lowest_latency = 0,
2562 	low_latency = 1,
2563 	bulk_latency = 2,
2564 	latency_invalid = 255
2565 };
2566 
2567 /**
2568  * e1000_update_itr - update the dynamic ITR value based on statistics
2569  * @adapter: pointer to adapter
2570  * @itr_setting: current adapter->itr
2571  * @packets: the number of packets during this measurement interval
2572  * @bytes: the number of bytes during this measurement interval
2573  *
2574  *      Stores a new ITR value based on packets and byte
2575  *      counts during the last interrupt.  The advantage of per interrupt
2576  *      computation is faster updates and more accurate ITR for the current
2577  *      traffic pattern.  Constants in this function were computed
2578  *      based on theoretical maximum wire speed and thresholds were set based
2579  *      on testing data as well as attempting to minimize response time
2580  *      while increasing bulk throughput.
2581  *      this functionality is controlled by the InterruptThrottleRate module
2582  *      parameter (see e1000_param.c)
2583  **/
2584 static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
2585 				     u16 itr_setting, int packets, int bytes)
2586 {
2587 	unsigned int retval = itr_setting;
2588 	struct e1000_hw *hw = &adapter->hw;
2589 
2590 	if (unlikely(hw->mac_type < e1000_82540))
2591 		goto update_itr_done;
2592 
2593 	if (packets == 0)
2594 		goto update_itr_done;
2595 
2596 	switch (itr_setting) {
2597 	case lowest_latency:
2598 		/* jumbo frames get bulk treatment*/
2599 		if (bytes/packets > 8000)
2600 			retval = bulk_latency;
2601 		else if ((packets < 5) && (bytes > 512))
2602 			retval = low_latency;
2603 		break;
2604 	case low_latency:  /* 50 usec aka 20000 ints/s */
2605 		if (bytes > 10000) {
2606 			/* jumbo frames need bulk latency setting */
2607 			if (bytes/packets > 8000)
2608 				retval = bulk_latency;
2609 			else if ((packets < 10) || ((bytes/packets) > 1200))
2610 				retval = bulk_latency;
2611 			else if ((packets > 35))
2612 				retval = lowest_latency;
2613 		} else if (bytes/packets > 2000)
2614 			retval = bulk_latency;
2615 		else if (packets <= 2 && bytes < 512)
2616 			retval = lowest_latency;
2617 		break;
2618 	case bulk_latency: /* 250 usec aka 4000 ints/s */
2619 		if (bytes > 25000) {
2620 			if (packets > 35)
2621 				retval = low_latency;
2622 		} else if (bytes < 6000) {
2623 			retval = low_latency;
2624 		}
2625 		break;
2626 	}
2627 
2628 update_itr_done:
2629 	return retval;
2630 }
2631 
2632 static void e1000_set_itr(struct e1000_adapter *adapter)
2633 {
2634 	struct e1000_hw *hw = &adapter->hw;
2635 	u16 current_itr;
2636 	u32 new_itr = adapter->itr;
2637 
2638 	if (unlikely(hw->mac_type < e1000_82540))
2639 		return;
2640 
2641 	/* for non-gigabit speeds, just fix the interrupt rate at 4000 */
2642 	if (unlikely(adapter->link_speed != SPEED_1000)) {
2643 		current_itr = 0;
2644 		new_itr = 4000;
2645 		goto set_itr_now;
2646 	}
2647 
2648 	adapter->tx_itr = e1000_update_itr(adapter, adapter->tx_itr,
2649 					   adapter->total_tx_packets,
2650 					   adapter->total_tx_bytes);
2651 	/* conservative mode (itr 3) eliminates the lowest_latency setting */
2652 	if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency)
2653 		adapter->tx_itr = low_latency;
2654 
2655 	adapter->rx_itr = e1000_update_itr(adapter, adapter->rx_itr,
2656 					   adapter->total_rx_packets,
2657 					   adapter->total_rx_bytes);
2658 	/* conservative mode (itr 3) eliminates the lowest_latency setting */
2659 	if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency)
2660 		adapter->rx_itr = low_latency;
2661 
2662 	current_itr = max(adapter->rx_itr, adapter->tx_itr);
2663 
2664 	switch (current_itr) {
2665 	/* counts and packets in update_itr are dependent on these numbers */
2666 	case lowest_latency:
2667 		new_itr = 70000;
2668 		break;
2669 	case low_latency:
2670 		new_itr = 20000; /* aka hwitr = ~200 */
2671 		break;
2672 	case bulk_latency:
2673 		new_itr = 4000;
2674 		break;
2675 	default:
2676 		break;
2677 	}
2678 
2679 set_itr_now:
2680 	if (new_itr != adapter->itr) {
2681 		/* this attempts to bias the interrupt rate towards Bulk
2682 		 * by adding intermediate steps when interrupt rate is
2683 		 * increasing
2684 		 */
2685 		new_itr = new_itr > adapter->itr ?
2686 			  min(adapter->itr + (new_itr >> 2), new_itr) :
2687 			  new_itr;
2688 		adapter->itr = new_itr;
2689 		ew32(ITR, 1000000000 / (new_itr * 256));
2690 	}
2691 }
2692 
2693 #define E1000_TX_FLAGS_CSUM		0x00000001
2694 #define E1000_TX_FLAGS_VLAN		0x00000002
2695 #define E1000_TX_FLAGS_TSO		0x00000004
2696 #define E1000_TX_FLAGS_IPV4		0x00000008
2697 #define E1000_TX_FLAGS_NO_FCS		0x00000010
2698 #define E1000_TX_FLAGS_VLAN_MASK	0xffff0000
2699 #define E1000_TX_FLAGS_VLAN_SHIFT	16
2700 
2701 static int e1000_tso(struct e1000_adapter *adapter,
2702 		     struct e1000_tx_ring *tx_ring, struct sk_buff *skb)
2703 {
2704 	struct e1000_context_desc *context_desc;
2705 	struct e1000_buffer *buffer_info;
2706 	unsigned int i;
2707 	u32 cmd_length = 0;
2708 	u16 ipcse = 0, tucse, mss;
2709 	u8 ipcss, ipcso, tucss, tucso, hdr_len;
2710 	int err;
2711 
2712 	if (skb_is_gso(skb)) {
2713 		if (skb_header_cloned(skb)) {
2714 			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
2715 			if (err)
2716 				return err;
2717 		}
2718 
2719 		hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
2720 		mss = skb_shinfo(skb)->gso_size;
2721 		if (skb->protocol == htons(ETH_P_IP)) {
2722 			struct iphdr *iph = ip_hdr(skb);
2723 			iph->tot_len = 0;
2724 			iph->check = 0;
2725 			tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
2726 								 iph->daddr, 0,
2727 								 IPPROTO_TCP,
2728 								 0);
2729 			cmd_length = E1000_TXD_CMD_IP;
2730 			ipcse = skb_transport_offset(skb) - 1;
2731 		} else if (skb->protocol == htons(ETH_P_IPV6)) {
2732 			ipv6_hdr(skb)->payload_len = 0;
2733 			tcp_hdr(skb)->check =
2734 				~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
2735 						 &ipv6_hdr(skb)->daddr,
2736 						 0, IPPROTO_TCP, 0);
2737 			ipcse = 0;
2738 		}
2739 		ipcss = skb_network_offset(skb);
2740 		ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data;
2741 		tucss = skb_transport_offset(skb);
2742 		tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data;
2743 		tucse = 0;
2744 
2745 		cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE |
2746 			       E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));
2747 
2748 		i = tx_ring->next_to_use;
2749 		context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
2750 		buffer_info = &tx_ring->buffer_info[i];
2751 
2752 		context_desc->lower_setup.ip_fields.ipcss  = ipcss;
2753 		context_desc->lower_setup.ip_fields.ipcso  = ipcso;
2754 		context_desc->lower_setup.ip_fields.ipcse  = cpu_to_le16(ipcse);
2755 		context_desc->upper_setup.tcp_fields.tucss = tucss;
2756 		context_desc->upper_setup.tcp_fields.tucso = tucso;
2757 		context_desc->upper_setup.tcp_fields.tucse = cpu_to_le16(tucse);
2758 		context_desc->tcp_seg_setup.fields.mss     = cpu_to_le16(mss);
2759 		context_desc->tcp_seg_setup.fields.hdr_len = hdr_len;
2760 		context_desc->cmd_and_length = cpu_to_le32(cmd_length);
2761 
2762 		buffer_info->time_stamp = jiffies;
2763 		buffer_info->next_to_watch = i;
2764 
2765 		if (++i == tx_ring->count) i = 0;
2766 		tx_ring->next_to_use = i;
2767 
2768 		return true;
2769 	}
2770 	return false;
2771 }
2772 
2773 static bool e1000_tx_csum(struct e1000_adapter *adapter,
2774 			  struct e1000_tx_ring *tx_ring, struct sk_buff *skb)
2775 {
2776 	struct e1000_context_desc *context_desc;
2777 	struct e1000_buffer *buffer_info;
2778 	unsigned int i;
2779 	u8 css;
2780 	u32 cmd_len = E1000_TXD_CMD_DEXT;
2781 
2782 	if (skb->ip_summed != CHECKSUM_PARTIAL)
2783 		return false;
2784 
2785 	switch (skb->protocol) {
2786 	case cpu_to_be16(ETH_P_IP):
2787 		if (ip_hdr(skb)->protocol == IPPROTO_TCP)
2788 			cmd_len |= E1000_TXD_CMD_TCP;
2789 		break;
2790 	case cpu_to_be16(ETH_P_IPV6):
2791 		/* XXX not handling all IPV6 headers */
2792 		if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
2793 			cmd_len |= E1000_TXD_CMD_TCP;
2794 		break;
2795 	default:
2796 		if (unlikely(net_ratelimit()))
2797 			e_warn(drv, "checksum_partial proto=%x!\n",
2798 			       skb->protocol);
2799 		break;
2800 	}
2801 
2802 	css = skb_checksum_start_offset(skb);
2803 
2804 	i = tx_ring->next_to_use;
2805 	buffer_info = &tx_ring->buffer_info[i];
2806 	context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
2807 
2808 	context_desc->lower_setup.ip_config = 0;
2809 	context_desc->upper_setup.tcp_fields.tucss = css;
2810 	context_desc->upper_setup.tcp_fields.tucso =
2811 		css + skb->csum_offset;
2812 	context_desc->upper_setup.tcp_fields.tucse = 0;
2813 	context_desc->tcp_seg_setup.data = 0;
2814 	context_desc->cmd_and_length = cpu_to_le32(cmd_len);
2815 
2816 	buffer_info->time_stamp = jiffies;
2817 	buffer_info->next_to_watch = i;
2818 
2819 	if (unlikely(++i == tx_ring->count)) i = 0;
2820 	tx_ring->next_to_use = i;
2821 
2822 	return true;
2823 }
2824 
2825 #define E1000_MAX_TXD_PWR	12
2826 #define E1000_MAX_DATA_PER_TXD	(1<<E1000_MAX_TXD_PWR)
2827 
2828 static int e1000_tx_map(struct e1000_adapter *adapter,
2829 			struct e1000_tx_ring *tx_ring,
2830 			struct sk_buff *skb, unsigned int first,
2831 			unsigned int max_per_txd, unsigned int nr_frags,
2832 			unsigned int mss)
2833 {
2834 	struct e1000_hw *hw = &adapter->hw;
2835 	struct pci_dev *pdev = adapter->pdev;
2836 	struct e1000_buffer *buffer_info;
2837 	unsigned int len = skb_headlen(skb);
2838 	unsigned int offset = 0, size, count = 0, i;
2839 	unsigned int f, bytecount, segs;
2840 
2841 	i = tx_ring->next_to_use;
2842 
2843 	while (len) {
2844 		buffer_info = &tx_ring->buffer_info[i];
2845 		size = min(len, max_per_txd);
2846 		/* Workaround for Controller erratum --
2847 		 * descriptor for non-tso packet in a linear SKB that follows a
2848 		 * tso gets written back prematurely before the data is fully
2849 		 * DMA'd to the controller
2850 		 */
2851 		if (!skb->data_len && tx_ring->last_tx_tso &&
2852 		    !skb_is_gso(skb)) {
2853 			tx_ring->last_tx_tso = false;
2854 			size -= 4;
2855 		}
2856 
2857 		/* Workaround for premature desc write-backs
2858 		 * in TSO mode.  Append 4-byte sentinel desc
2859 		 */
2860 		if (unlikely(mss && !nr_frags && size == len && size > 8))
2861 			size -= 4;
2862 		/* work-around for errata 10 and it applies
2863 		 * to all controllers in PCI-X mode
2864 		 * The fix is to make sure that the first descriptor of a
2865 		 * packet is smaller than 2048 - 16 - 16 (or 2016) bytes
2866 		 */
2867 		if (unlikely((hw->bus_type == e1000_bus_type_pcix) &&
2868 		                (size > 2015) && count == 0))
2869 		        size = 2015;
2870 
2871 		/* Workaround for potential 82544 hang in PCI-X.  Avoid
2872 		 * terminating buffers within evenly-aligned dwords.
2873 		 */
2874 		if (unlikely(adapter->pcix_82544 &&
2875 		   !((unsigned long)(skb->data + offset + size - 1) & 4) &&
2876 		   size > 4))
2877 			size -= 4;
2878 
2879 		buffer_info->length = size;
2880 		/* set time_stamp *before* dma to help avoid a possible race */
2881 		buffer_info->time_stamp = jiffies;
2882 		buffer_info->mapped_as_page = false;
2883 		buffer_info->dma = dma_map_single(&pdev->dev,
2884 						  skb->data + offset,
2885 						  size, DMA_TO_DEVICE);
2886 		if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2887 			goto dma_error;
2888 		buffer_info->next_to_watch = i;
2889 
2890 		len -= size;
2891 		offset += size;
2892 		count++;
2893 		if (len) {
2894 			i++;
2895 			if (unlikely(i == tx_ring->count))
2896 				i = 0;
2897 		}
2898 	}
2899 
2900 	for (f = 0; f < nr_frags; f++) {
2901 		const struct skb_frag_struct *frag;
2902 
2903 		frag = &skb_shinfo(skb)->frags[f];
2904 		len = skb_frag_size(frag);
2905 		offset = 0;
2906 
2907 		while (len) {
2908 			unsigned long bufend;
2909 			i++;
2910 			if (unlikely(i == tx_ring->count))
2911 				i = 0;
2912 
2913 			buffer_info = &tx_ring->buffer_info[i];
2914 			size = min(len, max_per_txd);
2915 			/* Workaround for premature desc write-backs
2916 			 * in TSO mode.  Append 4-byte sentinel desc
2917 			 */
2918 			if (unlikely(mss && f == (nr_frags-1) &&
2919 			    size == len && size > 8))
2920 				size -= 4;
2921 			/* Workaround for potential 82544 hang in PCI-X.
2922 			 * Avoid terminating buffers within evenly-aligned
2923 			 * dwords.
2924 			 */
2925 			bufend = (unsigned long)
2926 				page_to_phys(skb_frag_page(frag));
2927 			bufend += offset + size - 1;
2928 			if (unlikely(adapter->pcix_82544 &&
2929 				     !(bufend & 4) &&
2930 				     size > 4))
2931 				size -= 4;
2932 
2933 			buffer_info->length = size;
2934 			buffer_info->time_stamp = jiffies;
2935 			buffer_info->mapped_as_page = true;
2936 			buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag,
2937 						offset, size, DMA_TO_DEVICE);
2938 			if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2939 				goto dma_error;
2940 			buffer_info->next_to_watch = i;
2941 
2942 			len -= size;
2943 			offset += size;
2944 			count++;
2945 		}
2946 	}
2947 
2948 	segs = skb_shinfo(skb)->gso_segs ?: 1;
2949 	/* multiply data chunks by size of headers */
2950 	bytecount = ((segs - 1) * skb_headlen(skb)) + skb->len;
2951 
2952 	tx_ring->buffer_info[i].skb = skb;
2953 	tx_ring->buffer_info[i].segs = segs;
2954 	tx_ring->buffer_info[i].bytecount = bytecount;
2955 	tx_ring->buffer_info[first].next_to_watch = i;
2956 
2957 	return count;
2958 
2959 dma_error:
2960 	dev_err(&pdev->dev, "TX DMA map failed\n");
2961 	buffer_info->dma = 0;
2962 	if (count)
2963 		count--;
2964 
2965 	while (count--) {
2966 		if (i==0)
2967 			i += tx_ring->count;
2968 		i--;
2969 		buffer_info = &tx_ring->buffer_info[i];
2970 		e1000_unmap_and_free_tx_resource(adapter, buffer_info);
2971 	}
2972 
2973 	return 0;
2974 }
2975 
2976 static void e1000_tx_queue(struct e1000_adapter *adapter,
2977 			   struct e1000_tx_ring *tx_ring, int tx_flags,
2978 			   int count)
2979 {
2980 	struct e1000_hw *hw = &adapter->hw;
2981 	struct e1000_tx_desc *tx_desc = NULL;
2982 	struct e1000_buffer *buffer_info;
2983 	u32 txd_upper = 0, txd_lower = E1000_TXD_CMD_IFCS;
2984 	unsigned int i;
2985 
2986 	if (likely(tx_flags & E1000_TX_FLAGS_TSO)) {
2987 		txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D |
2988 			     E1000_TXD_CMD_TSE;
2989 		txd_upper |= E1000_TXD_POPTS_TXSM << 8;
2990 
2991 		if (likely(tx_flags & E1000_TX_FLAGS_IPV4))
2992 			txd_upper |= E1000_TXD_POPTS_IXSM << 8;
2993 	}
2994 
2995 	if (likely(tx_flags & E1000_TX_FLAGS_CSUM)) {
2996 		txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D;
2997 		txd_upper |= E1000_TXD_POPTS_TXSM << 8;
2998 	}
2999 
3000 	if (unlikely(tx_flags & E1000_TX_FLAGS_VLAN)) {
3001 		txd_lower |= E1000_TXD_CMD_VLE;
3002 		txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK);
3003 	}
3004 
3005 	if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS))
3006 		txd_lower &= ~(E1000_TXD_CMD_IFCS);
3007 
3008 	i = tx_ring->next_to_use;
3009 
3010 	while (count--) {
3011 		buffer_info = &tx_ring->buffer_info[i];
3012 		tx_desc = E1000_TX_DESC(*tx_ring, i);
3013 		tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
3014 		tx_desc->lower.data =
3015 			cpu_to_le32(txd_lower | buffer_info->length);
3016 		tx_desc->upper.data = cpu_to_le32(txd_upper);
3017 		if (unlikely(++i == tx_ring->count)) i = 0;
3018 	}
3019 
3020 	tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd);
3021 
3022 	/* txd_cmd re-enables FCS, so we'll re-disable it here as desired. */
3023 	if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS))
3024 		tx_desc->lower.data &= ~(cpu_to_le32(E1000_TXD_CMD_IFCS));
3025 
3026 	/* Force memory writes to complete before letting h/w
3027 	 * know there are new descriptors to fetch.  (Only
3028 	 * applicable for weak-ordered memory model archs,
3029 	 * such as IA-64).
3030 	 */
3031 	wmb();
3032 
3033 	tx_ring->next_to_use = i;
3034 	writel(i, hw->hw_addr + tx_ring->tdt);
3035 	/* we need this if more than one processor can write to our tail
3036 	 * at a time, it synchronizes IO on IA64/Altix systems
3037 	 */
3038 	mmiowb();
3039 }
3040 
3041 /* 82547 workaround to avoid controller hang in half-duplex environment.
3042  * The workaround is to avoid queuing a large packet that would span
3043  * the internal Tx FIFO ring boundary by notifying the stack to resend
3044  * the packet at a later time.  This gives the Tx FIFO an opportunity to
3045  * flush all packets.  When that occurs, we reset the Tx FIFO pointers
3046  * to the beginning of the Tx FIFO.
3047  */
3048 
3049 #define E1000_FIFO_HDR			0x10
3050 #define E1000_82547_PAD_LEN		0x3E0
3051 
3052 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
3053 				       struct sk_buff *skb)
3054 {
3055 	u32 fifo_space = adapter->tx_fifo_size - adapter->tx_fifo_head;
3056 	u32 skb_fifo_len = skb->len + E1000_FIFO_HDR;
3057 
3058 	skb_fifo_len = ALIGN(skb_fifo_len, E1000_FIFO_HDR);
3059 
3060 	if (adapter->link_duplex != HALF_DUPLEX)
3061 		goto no_fifo_stall_required;
3062 
3063 	if (atomic_read(&adapter->tx_fifo_stall))
3064 		return 1;
3065 
3066 	if (skb_fifo_len >= (E1000_82547_PAD_LEN + fifo_space)) {
3067 		atomic_set(&adapter->tx_fifo_stall, 1);
3068 		return 1;
3069 	}
3070 
3071 no_fifo_stall_required:
3072 	adapter->tx_fifo_head += skb_fifo_len;
3073 	if (adapter->tx_fifo_head >= adapter->tx_fifo_size)
3074 		adapter->tx_fifo_head -= adapter->tx_fifo_size;
3075 	return 0;
3076 }
3077 
3078 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
3079 {
3080 	struct e1000_adapter *adapter = netdev_priv(netdev);
3081 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
3082 
3083 	netif_stop_queue(netdev);
3084 	/* Herbert's original patch had:
3085 	 *  smp_mb__after_netif_stop_queue();
3086 	 * but since that doesn't exist yet, just open code it.
3087 	 */
3088 	smp_mb();
3089 
3090 	/* We need to check again in a case another CPU has just
3091 	 * made room available.
3092 	 */
3093 	if (likely(E1000_DESC_UNUSED(tx_ring) < size))
3094 		return -EBUSY;
3095 
3096 	/* A reprieve! */
3097 	netif_start_queue(netdev);
3098 	++adapter->restart_queue;
3099 	return 0;
3100 }
3101 
3102 static int e1000_maybe_stop_tx(struct net_device *netdev,
3103 			       struct e1000_tx_ring *tx_ring, int size)
3104 {
3105 	if (likely(E1000_DESC_UNUSED(tx_ring) >= size))
3106 		return 0;
3107 	return __e1000_maybe_stop_tx(netdev, size);
3108 }
3109 
3110 #define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1 )
3111 static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
3112 				    struct net_device *netdev)
3113 {
3114 	struct e1000_adapter *adapter = netdev_priv(netdev);
3115 	struct e1000_hw *hw = &adapter->hw;
3116 	struct e1000_tx_ring *tx_ring;
3117 	unsigned int first, max_per_txd = E1000_MAX_DATA_PER_TXD;
3118 	unsigned int max_txd_pwr = E1000_MAX_TXD_PWR;
3119 	unsigned int tx_flags = 0;
3120 	unsigned int len = skb_headlen(skb);
3121 	unsigned int nr_frags;
3122 	unsigned int mss;
3123 	int count = 0;
3124 	int tso;
3125 	unsigned int f;
3126 
3127 	/* This goes back to the question of how to logically map a Tx queue
3128 	 * to a flow.  Right now, performance is impacted slightly negatively
3129 	 * if using multiple Tx queues.  If the stack breaks away from a
3130 	 * single qdisc implementation, we can look at this again.
3131 	 */
3132 	tx_ring = adapter->tx_ring;
3133 
3134 	if (unlikely(skb->len <= 0)) {
3135 		dev_kfree_skb_any(skb);
3136 		return NETDEV_TX_OK;
3137 	}
3138 
3139 	/* On PCI/PCI-X HW, if packet size is less than ETH_ZLEN,
3140 	 * packets may get corrupted during padding by HW.
3141 	 * To WA this issue, pad all small packets manually.
3142 	 */
3143 	if (skb->len < ETH_ZLEN) {
3144 		if (skb_pad(skb, ETH_ZLEN - skb->len))
3145 			return NETDEV_TX_OK;
3146 		skb->len = ETH_ZLEN;
3147 		skb_set_tail_pointer(skb, ETH_ZLEN);
3148 	}
3149 
3150 	mss = skb_shinfo(skb)->gso_size;
3151 	/* The controller does a simple calculation to
3152 	 * make sure there is enough room in the FIFO before
3153 	 * initiating the DMA for each buffer.  The calc is:
3154 	 * 4 = ceil(buffer len/mss).  To make sure we don't
3155 	 * overrun the FIFO, adjust the max buffer len if mss
3156 	 * drops.
3157 	 */
3158 	if (mss) {
3159 		u8 hdr_len;
3160 		max_per_txd = min(mss << 2, max_per_txd);
3161 		max_txd_pwr = fls(max_per_txd) - 1;
3162 
3163 		hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
3164 		if (skb->data_len && hdr_len == len) {
3165 			switch (hw->mac_type) {
3166 				unsigned int pull_size;
3167 			case e1000_82544:
3168 				/* Make sure we have room to chop off 4 bytes,
3169 				 * and that the end alignment will work out to
3170 				 * this hardware's requirements
3171 				 * NOTE: this is a TSO only workaround
3172 				 * if end byte alignment not correct move us
3173 				 * into the next dword
3174 				 */
3175 				if ((unsigned long)(skb_tail_pointer(skb) - 1)
3176 				    & 4)
3177 					break;
3178 				/* fall through */
3179 				pull_size = min((unsigned int)4, skb->data_len);
3180 				if (!__pskb_pull_tail(skb, pull_size)) {
3181 					e_err(drv, "__pskb_pull_tail "
3182 					      "failed.\n");
3183 					dev_kfree_skb_any(skb);
3184 					return NETDEV_TX_OK;
3185 				}
3186 				len = skb_headlen(skb);
3187 				break;
3188 			default:
3189 				/* do nothing */
3190 				break;
3191 			}
3192 		}
3193 	}
3194 
3195 	/* reserve a descriptor for the offload context */
3196 	if ((mss) || (skb->ip_summed == CHECKSUM_PARTIAL))
3197 		count++;
3198 	count++;
3199 
3200 	/* Controller Erratum workaround */
3201 	if (!skb->data_len && tx_ring->last_tx_tso && !skb_is_gso(skb))
3202 		count++;
3203 
3204 	count += TXD_USE_COUNT(len, max_txd_pwr);
3205 
3206 	if (adapter->pcix_82544)
3207 		count++;
3208 
3209 	/* work-around for errata 10 and it applies to all controllers
3210 	 * in PCI-X mode, so add one more descriptor to the count
3211 	 */
3212 	if (unlikely((hw->bus_type == e1000_bus_type_pcix) &&
3213 			(len > 2015)))
3214 		count++;
3215 
3216 	nr_frags = skb_shinfo(skb)->nr_frags;
3217 	for (f = 0; f < nr_frags; f++)
3218 		count += TXD_USE_COUNT(skb_frag_size(&skb_shinfo(skb)->frags[f]),
3219 				       max_txd_pwr);
3220 	if (adapter->pcix_82544)
3221 		count += nr_frags;
3222 
3223 	/* need: count + 2 desc gap to keep tail from touching
3224 	 * head, otherwise try next time
3225 	 */
3226 	if (unlikely(e1000_maybe_stop_tx(netdev, tx_ring, count + 2)))
3227 		return NETDEV_TX_BUSY;
3228 
3229 	if (unlikely((hw->mac_type == e1000_82547) &&
3230 		     (e1000_82547_fifo_workaround(adapter, skb)))) {
3231 		netif_stop_queue(netdev);
3232 		if (!test_bit(__E1000_DOWN, &adapter->flags))
3233 			schedule_delayed_work(&adapter->fifo_stall_task, 1);
3234 		return NETDEV_TX_BUSY;
3235 	}
3236 
3237 	if (vlan_tx_tag_present(skb)) {
3238 		tx_flags |= E1000_TX_FLAGS_VLAN;
3239 		tx_flags |= (vlan_tx_tag_get(skb) << E1000_TX_FLAGS_VLAN_SHIFT);
3240 	}
3241 
3242 	first = tx_ring->next_to_use;
3243 
3244 	tso = e1000_tso(adapter, tx_ring, skb);
3245 	if (tso < 0) {
3246 		dev_kfree_skb_any(skb);
3247 		return NETDEV_TX_OK;
3248 	}
3249 
3250 	if (likely(tso)) {
3251 		if (likely(hw->mac_type != e1000_82544))
3252 			tx_ring->last_tx_tso = true;
3253 		tx_flags |= E1000_TX_FLAGS_TSO;
3254 	} else if (likely(e1000_tx_csum(adapter, tx_ring, skb)))
3255 		tx_flags |= E1000_TX_FLAGS_CSUM;
3256 
3257 	if (likely(skb->protocol == htons(ETH_P_IP)))
3258 		tx_flags |= E1000_TX_FLAGS_IPV4;
3259 
3260 	if (unlikely(skb->no_fcs))
3261 		tx_flags |= E1000_TX_FLAGS_NO_FCS;
3262 
3263 	count = e1000_tx_map(adapter, tx_ring, skb, first, max_per_txd,
3264 			     nr_frags, mss);
3265 
3266 	if (count) {
3267 		netdev_sent_queue(netdev, skb->len);
3268 		skb_tx_timestamp(skb);
3269 
3270 		e1000_tx_queue(adapter, tx_ring, tx_flags, count);
3271 		/* Make sure there is space in the ring for the next send. */
3272 		e1000_maybe_stop_tx(netdev, tx_ring, MAX_SKB_FRAGS + 2);
3273 
3274 	} else {
3275 		dev_kfree_skb_any(skb);
3276 		tx_ring->buffer_info[first].time_stamp = 0;
3277 		tx_ring->next_to_use = first;
3278 	}
3279 
3280 	return NETDEV_TX_OK;
3281 }
3282 
3283 #define NUM_REGS 38 /* 1 based count */
3284 static void e1000_regdump(struct e1000_adapter *adapter)
3285 {
3286 	struct e1000_hw *hw = &adapter->hw;
3287 	u32 regs[NUM_REGS];
3288 	u32 *regs_buff = regs;
3289 	int i = 0;
3290 
3291 	static const char * const reg_name[] = {
3292 		"CTRL",  "STATUS",
3293 		"RCTL", "RDLEN", "RDH", "RDT", "RDTR",
3294 		"TCTL", "TDBAL", "TDBAH", "TDLEN", "TDH", "TDT",
3295 		"TIDV", "TXDCTL", "TADV", "TARC0",
3296 		"TDBAL1", "TDBAH1", "TDLEN1", "TDH1", "TDT1",
3297 		"TXDCTL1", "TARC1",
3298 		"CTRL_EXT", "ERT", "RDBAL", "RDBAH",
3299 		"TDFH", "TDFT", "TDFHS", "TDFTS", "TDFPC",
3300 		"RDFH", "RDFT", "RDFHS", "RDFTS", "RDFPC"
3301 	};
3302 
3303 	regs_buff[0]  = er32(CTRL);
3304 	regs_buff[1]  = er32(STATUS);
3305 
3306 	regs_buff[2]  = er32(RCTL);
3307 	regs_buff[3]  = er32(RDLEN);
3308 	regs_buff[4]  = er32(RDH);
3309 	regs_buff[5]  = er32(RDT);
3310 	regs_buff[6]  = er32(RDTR);
3311 
3312 	regs_buff[7]  = er32(TCTL);
3313 	regs_buff[8]  = er32(TDBAL);
3314 	regs_buff[9]  = er32(TDBAH);
3315 	regs_buff[10] = er32(TDLEN);
3316 	regs_buff[11] = er32(TDH);
3317 	regs_buff[12] = er32(TDT);
3318 	regs_buff[13] = er32(TIDV);
3319 	regs_buff[14] = er32(TXDCTL);
3320 	regs_buff[15] = er32(TADV);
3321 	regs_buff[16] = er32(TARC0);
3322 
3323 	regs_buff[17] = er32(TDBAL1);
3324 	regs_buff[18] = er32(TDBAH1);
3325 	regs_buff[19] = er32(TDLEN1);
3326 	regs_buff[20] = er32(TDH1);
3327 	regs_buff[21] = er32(TDT1);
3328 	regs_buff[22] = er32(TXDCTL1);
3329 	regs_buff[23] = er32(TARC1);
3330 	regs_buff[24] = er32(CTRL_EXT);
3331 	regs_buff[25] = er32(ERT);
3332 	regs_buff[26] = er32(RDBAL0);
3333 	regs_buff[27] = er32(RDBAH0);
3334 	regs_buff[28] = er32(TDFH);
3335 	regs_buff[29] = er32(TDFT);
3336 	regs_buff[30] = er32(TDFHS);
3337 	regs_buff[31] = er32(TDFTS);
3338 	regs_buff[32] = er32(TDFPC);
3339 	regs_buff[33] = er32(RDFH);
3340 	regs_buff[34] = er32(RDFT);
3341 	regs_buff[35] = er32(RDFHS);
3342 	regs_buff[36] = er32(RDFTS);
3343 	regs_buff[37] = er32(RDFPC);
3344 
3345 	pr_info("Register dump\n");
3346 	for (i = 0; i < NUM_REGS; i++)
3347 		pr_info("%-15s  %08x\n", reg_name[i], regs_buff[i]);
3348 }
3349 
3350 /*
3351  * e1000_dump: Print registers, tx ring and rx ring
3352  */
3353 static void e1000_dump(struct e1000_adapter *adapter)
3354 {
3355 	/* this code doesn't handle multiple rings */
3356 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
3357 	struct e1000_rx_ring *rx_ring = adapter->rx_ring;
3358 	int i;
3359 
3360 	if (!netif_msg_hw(adapter))
3361 		return;
3362 
3363 	/* Print Registers */
3364 	e1000_regdump(adapter);
3365 
3366 	/* transmit dump */
3367 	pr_info("TX Desc ring0 dump\n");
3368 
3369 	/* Transmit Descriptor Formats - DEXT[29] is 0 (Legacy) or 1 (Extended)
3370 	 *
3371 	 * Legacy Transmit Descriptor
3372 	 *   +--------------------------------------------------------------+
3373 	 * 0 |         Buffer Address [63:0] (Reserved on Write Back)       |
3374 	 *   +--------------------------------------------------------------+
3375 	 * 8 | Special  |    CSS     | Status |  CMD    |  CSO   |  Length  |
3376 	 *   +--------------------------------------------------------------+
3377 	 *   63       48 47        36 35    32 31     24 23    16 15        0
3378 	 *
3379 	 * Extended Context Descriptor (DTYP=0x0) for TSO or checksum offload
3380 	 *   63      48 47    40 39       32 31             16 15    8 7      0
3381 	 *   +----------------------------------------------------------------+
3382 	 * 0 |  TUCSE  | TUCS0  |   TUCSS   |     IPCSE       | IPCS0 | IPCSS |
3383 	 *   +----------------------------------------------------------------+
3384 	 * 8 |   MSS   | HDRLEN | RSV | STA | TUCMD | DTYP |      PAYLEN      |
3385 	 *   +----------------------------------------------------------------+
3386 	 *   63      48 47    40 39 36 35 32 31   24 23  20 19                0
3387 	 *
3388 	 * Extended Data Descriptor (DTYP=0x1)
3389 	 *   +----------------------------------------------------------------+
3390 	 * 0 |                     Buffer Address [63:0]                      |
3391 	 *   +----------------------------------------------------------------+
3392 	 * 8 | VLAN tag |  POPTS  | Rsvd | Status | Command | DTYP |  DTALEN  |
3393 	 *   +----------------------------------------------------------------+
3394 	 *   63       48 47     40 39  36 35    32 31     24 23  20 19        0
3395 	 */
3396 	pr_info("Tc[desc]     [Ce CoCsIpceCoS] [MssHlRSCm0Plen] [bi->dma       ] leng  ntw timestmp         bi->skb\n");
3397 	pr_info("Td[desc]     [address 63:0  ] [VlaPoRSCm1Dlen] [bi->dma       ] leng  ntw timestmp         bi->skb\n");
3398 
3399 	if (!netif_msg_tx_done(adapter))
3400 		goto rx_ring_summary;
3401 
3402 	for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) {
3403 		struct e1000_tx_desc *tx_desc = E1000_TX_DESC(*tx_ring, i);
3404 		struct e1000_buffer *buffer_info = &tx_ring->buffer_info[i];
3405 		struct my_u { __le64 a; __le64 b; };
3406 		struct my_u *u = (struct my_u *)tx_desc;
3407 		const char *type;
3408 
3409 		if (i == tx_ring->next_to_use && i == tx_ring->next_to_clean)
3410 			type = "NTC/U";
3411 		else if (i == tx_ring->next_to_use)
3412 			type = "NTU";
3413 		else if (i == tx_ring->next_to_clean)
3414 			type = "NTC";
3415 		else
3416 			type = "";
3417 
3418 		pr_info("T%c[0x%03X]    %016llX %016llX %016llX %04X  %3X %016llX %p %s\n",
3419 			((le64_to_cpu(u->b) & (1<<20)) ? 'd' : 'c'), i,
3420 			le64_to_cpu(u->a), le64_to_cpu(u->b),
3421 			(u64)buffer_info->dma, buffer_info->length,
3422 			buffer_info->next_to_watch,
3423 			(u64)buffer_info->time_stamp, buffer_info->skb, type);
3424 	}
3425 
3426 rx_ring_summary:
3427 	/* receive dump */
3428 	pr_info("\nRX Desc ring dump\n");
3429 
3430 	/* Legacy Receive Descriptor Format
3431 	 *
3432 	 * +-----------------------------------------------------+
3433 	 * |                Buffer Address [63:0]                |
3434 	 * +-----------------------------------------------------+
3435 	 * | VLAN Tag | Errors | Status 0 | Packet csum | Length |
3436 	 * +-----------------------------------------------------+
3437 	 * 63       48 47    40 39      32 31         16 15      0
3438 	 */
3439 	pr_info("R[desc]      [address 63:0  ] [vl er S cks ln] [bi->dma       ] [bi->skb]\n");
3440 
3441 	if (!netif_msg_rx_status(adapter))
3442 		goto exit;
3443 
3444 	for (i = 0; rx_ring->desc && (i < rx_ring->count); i++) {
3445 		struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rx_ring, i);
3446 		struct e1000_buffer *buffer_info = &rx_ring->buffer_info[i];
3447 		struct my_u { __le64 a; __le64 b; };
3448 		struct my_u *u = (struct my_u *)rx_desc;
3449 		const char *type;
3450 
3451 		if (i == rx_ring->next_to_use)
3452 			type = "NTU";
3453 		else if (i == rx_ring->next_to_clean)
3454 			type = "NTC";
3455 		else
3456 			type = "";
3457 
3458 		pr_info("R[0x%03X]     %016llX %016llX %016llX %p %s\n",
3459 			i, le64_to_cpu(u->a), le64_to_cpu(u->b),
3460 			(u64)buffer_info->dma, buffer_info->skb, type);
3461 	} /* for */
3462 
3463 	/* dump the descriptor caches */
3464 	/* rx */
3465 	pr_info("Rx descriptor cache in 64bit format\n");
3466 	for (i = 0x6000; i <= 0x63FF ; i += 0x10) {
3467 		pr_info("R%04X: %08X|%08X %08X|%08X\n",
3468 			i,
3469 			readl(adapter->hw.hw_addr + i+4),
3470 			readl(adapter->hw.hw_addr + i),
3471 			readl(adapter->hw.hw_addr + i+12),
3472 			readl(adapter->hw.hw_addr + i+8));
3473 	}
3474 	/* tx */
3475 	pr_info("Tx descriptor cache in 64bit format\n");
3476 	for (i = 0x7000; i <= 0x73FF ; i += 0x10) {
3477 		pr_info("T%04X: %08X|%08X %08X|%08X\n",
3478 			i,
3479 			readl(adapter->hw.hw_addr + i+4),
3480 			readl(adapter->hw.hw_addr + i),
3481 			readl(adapter->hw.hw_addr + i+12),
3482 			readl(adapter->hw.hw_addr + i+8));
3483 	}
3484 exit:
3485 	return;
3486 }
3487 
3488 /**
3489  * e1000_tx_timeout - Respond to a Tx Hang
3490  * @netdev: network interface device structure
3491  **/
3492 static void e1000_tx_timeout(struct net_device *netdev)
3493 {
3494 	struct e1000_adapter *adapter = netdev_priv(netdev);
3495 
3496 	/* Do the reset outside of interrupt context */
3497 	adapter->tx_timeout_count++;
3498 	schedule_work(&adapter->reset_task);
3499 }
3500 
3501 static void e1000_reset_task(struct work_struct *work)
3502 {
3503 	struct e1000_adapter *adapter =
3504 		container_of(work, struct e1000_adapter, reset_task);
3505 
3506 	if (test_bit(__E1000_DOWN, &adapter->flags))
3507 		return;
3508 	e_err(drv, "Reset adapter\n");
3509 	e1000_reinit_safe(adapter);
3510 }
3511 
3512 /**
3513  * e1000_get_stats - Get System Network Statistics
3514  * @netdev: network interface device structure
3515  *
3516  * Returns the address of the device statistics structure.
3517  * The statistics are actually updated from the watchdog.
3518  **/
3519 static struct net_device_stats *e1000_get_stats(struct net_device *netdev)
3520 {
3521 	/* only return the current stats */
3522 	return &netdev->stats;
3523 }
3524 
3525 /**
3526  * e1000_change_mtu - Change the Maximum Transfer Unit
3527  * @netdev: network interface device structure
3528  * @new_mtu: new value for maximum frame size
3529  *
3530  * Returns 0 on success, negative on failure
3531  **/
3532 static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
3533 {
3534 	struct e1000_adapter *adapter = netdev_priv(netdev);
3535 	struct e1000_hw *hw = &adapter->hw;
3536 	int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
3537 
3538 	if ((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) ||
3539 	    (max_frame > MAX_JUMBO_FRAME_SIZE)) {
3540 		e_err(probe, "Invalid MTU setting\n");
3541 		return -EINVAL;
3542 	}
3543 
3544 	/* Adapter-specific max frame size limits. */
3545 	switch (hw->mac_type) {
3546 	case e1000_undefined ... e1000_82542_rev2_1:
3547 		if (max_frame > (ETH_FRAME_LEN + ETH_FCS_LEN)) {
3548 			e_err(probe, "Jumbo Frames not supported.\n");
3549 			return -EINVAL;
3550 		}
3551 		break;
3552 	default:
3553 		/* Capable of supporting up to MAX_JUMBO_FRAME_SIZE limit. */
3554 		break;
3555 	}
3556 
3557 	while (test_and_set_bit(__E1000_RESETTING, &adapter->flags))
3558 		msleep(1);
3559 	/* e1000_down has a dependency on max_frame_size */
3560 	hw->max_frame_size = max_frame;
3561 	if (netif_running(netdev))
3562 		e1000_down(adapter);
3563 
3564 	/* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
3565 	 * means we reserve 2 more, this pushes us to allocate from the next
3566 	 * larger slab size.
3567 	 * i.e. RXBUFFER_2048 --> size-4096 slab
3568 	 * however with the new *_jumbo_rx* routines, jumbo receives will use
3569 	 * fragmented skbs
3570 	 */
3571 
3572 	if (max_frame <= E1000_RXBUFFER_2048)
3573 		adapter->rx_buffer_len = E1000_RXBUFFER_2048;
3574 	else
3575 #if (PAGE_SIZE >= E1000_RXBUFFER_16384)
3576 		adapter->rx_buffer_len = E1000_RXBUFFER_16384;
3577 #elif (PAGE_SIZE >= E1000_RXBUFFER_4096)
3578 		adapter->rx_buffer_len = PAGE_SIZE;
3579 #endif
3580 
3581 	/* adjust allocation if LPE protects us, and we aren't using SBP */
3582 	if (!hw->tbi_compatibility_on &&
3583 	    ((max_frame == (ETH_FRAME_LEN + ETH_FCS_LEN)) ||
3584 	     (max_frame == MAXIMUM_ETHERNET_VLAN_SIZE)))
3585 		adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE;
3586 
3587 	pr_info("%s changing MTU from %d to %d\n",
3588 		netdev->name, netdev->mtu, new_mtu);
3589 	netdev->mtu = new_mtu;
3590 
3591 	if (netif_running(netdev))
3592 		e1000_up(adapter);
3593 	else
3594 		e1000_reset(adapter);
3595 
3596 	clear_bit(__E1000_RESETTING, &adapter->flags);
3597 
3598 	return 0;
3599 }
3600 
3601 /**
3602  * e1000_update_stats - Update the board statistics counters
3603  * @adapter: board private structure
3604  **/
3605 void e1000_update_stats(struct e1000_adapter *adapter)
3606 {
3607 	struct net_device *netdev = adapter->netdev;
3608 	struct e1000_hw *hw = &adapter->hw;
3609 	struct pci_dev *pdev = adapter->pdev;
3610 	unsigned long flags;
3611 	u16 phy_tmp;
3612 
3613 #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
3614 
3615 	/* Prevent stats update while adapter is being reset, or if the pci
3616 	 * connection is down.
3617 	 */
3618 	if (adapter->link_speed == 0)
3619 		return;
3620 	if (pci_channel_offline(pdev))
3621 		return;
3622 
3623 	spin_lock_irqsave(&adapter->stats_lock, flags);
3624 
3625 	/* these counters are modified from e1000_tbi_adjust_stats,
3626 	 * called from the interrupt context, so they must only
3627 	 * be written while holding adapter->stats_lock
3628 	 */
3629 
3630 	adapter->stats.crcerrs += er32(CRCERRS);
3631 	adapter->stats.gprc += er32(GPRC);
3632 	adapter->stats.gorcl += er32(GORCL);
3633 	adapter->stats.gorch += er32(GORCH);
3634 	adapter->stats.bprc += er32(BPRC);
3635 	adapter->stats.mprc += er32(MPRC);
3636 	adapter->stats.roc += er32(ROC);
3637 
3638 	adapter->stats.prc64 += er32(PRC64);
3639 	adapter->stats.prc127 += er32(PRC127);
3640 	adapter->stats.prc255 += er32(PRC255);
3641 	adapter->stats.prc511 += er32(PRC511);
3642 	adapter->stats.prc1023 += er32(PRC1023);
3643 	adapter->stats.prc1522 += er32(PRC1522);
3644 
3645 	adapter->stats.symerrs += er32(SYMERRS);
3646 	adapter->stats.mpc += er32(MPC);
3647 	adapter->stats.scc += er32(SCC);
3648 	adapter->stats.ecol += er32(ECOL);
3649 	adapter->stats.mcc += er32(MCC);
3650 	adapter->stats.latecol += er32(LATECOL);
3651 	adapter->stats.dc += er32(DC);
3652 	adapter->stats.sec += er32(SEC);
3653 	adapter->stats.rlec += er32(RLEC);
3654 	adapter->stats.xonrxc += er32(XONRXC);
3655 	adapter->stats.xontxc += er32(XONTXC);
3656 	adapter->stats.xoffrxc += er32(XOFFRXC);
3657 	adapter->stats.xofftxc += er32(XOFFTXC);
3658 	adapter->stats.fcruc += er32(FCRUC);
3659 	adapter->stats.gptc += er32(GPTC);
3660 	adapter->stats.gotcl += er32(GOTCL);
3661 	adapter->stats.gotch += er32(GOTCH);
3662 	adapter->stats.rnbc += er32(RNBC);
3663 	adapter->stats.ruc += er32(RUC);
3664 	adapter->stats.rfc += er32(RFC);
3665 	adapter->stats.rjc += er32(RJC);
3666 	adapter->stats.torl += er32(TORL);
3667 	adapter->stats.torh += er32(TORH);
3668 	adapter->stats.totl += er32(TOTL);
3669 	adapter->stats.toth += er32(TOTH);
3670 	adapter->stats.tpr += er32(TPR);
3671 
3672 	adapter->stats.ptc64 += er32(PTC64);
3673 	adapter->stats.ptc127 += er32(PTC127);
3674 	adapter->stats.ptc255 += er32(PTC255);
3675 	adapter->stats.ptc511 += er32(PTC511);
3676 	adapter->stats.ptc1023 += er32(PTC1023);
3677 	adapter->stats.ptc1522 += er32(PTC1522);
3678 
3679 	adapter->stats.mptc += er32(MPTC);
3680 	adapter->stats.bptc += er32(BPTC);
3681 
3682 	/* used for adaptive IFS */
3683 
3684 	hw->tx_packet_delta = er32(TPT);
3685 	adapter->stats.tpt += hw->tx_packet_delta;
3686 	hw->collision_delta = er32(COLC);
3687 	adapter->stats.colc += hw->collision_delta;
3688 
3689 	if (hw->mac_type >= e1000_82543) {
3690 		adapter->stats.algnerrc += er32(ALGNERRC);
3691 		adapter->stats.rxerrc += er32(RXERRC);
3692 		adapter->stats.tncrs += er32(TNCRS);
3693 		adapter->stats.cexterr += er32(CEXTERR);
3694 		adapter->stats.tsctc += er32(TSCTC);
3695 		adapter->stats.tsctfc += er32(TSCTFC);
3696 	}
3697 
3698 	/* Fill out the OS statistics structure */
3699 	netdev->stats.multicast = adapter->stats.mprc;
3700 	netdev->stats.collisions = adapter->stats.colc;
3701 
3702 	/* Rx Errors */
3703 
3704 	/* RLEC on some newer hardware can be incorrect so build
3705 	 * our own version based on RUC and ROC
3706 	 */
3707 	netdev->stats.rx_errors = adapter->stats.rxerrc +
3708 		adapter->stats.crcerrs + adapter->stats.algnerrc +
3709 		adapter->stats.ruc + adapter->stats.roc +
3710 		adapter->stats.cexterr;
3711 	adapter->stats.rlerrc = adapter->stats.ruc + adapter->stats.roc;
3712 	netdev->stats.rx_length_errors = adapter->stats.rlerrc;
3713 	netdev->stats.rx_crc_errors = adapter->stats.crcerrs;
3714 	netdev->stats.rx_frame_errors = adapter->stats.algnerrc;
3715 	netdev->stats.rx_missed_errors = adapter->stats.mpc;
3716 
3717 	/* Tx Errors */
3718 	adapter->stats.txerrc = adapter->stats.ecol + adapter->stats.latecol;
3719 	netdev->stats.tx_errors = adapter->stats.txerrc;
3720 	netdev->stats.tx_aborted_errors = adapter->stats.ecol;
3721 	netdev->stats.tx_window_errors = adapter->stats.latecol;
3722 	netdev->stats.tx_carrier_errors = adapter->stats.tncrs;
3723 	if (hw->bad_tx_carr_stats_fd &&
3724 	    adapter->link_duplex == FULL_DUPLEX) {
3725 		netdev->stats.tx_carrier_errors = 0;
3726 		adapter->stats.tncrs = 0;
3727 	}
3728 
3729 	/* Tx Dropped needs to be maintained elsewhere */
3730 
3731 	/* Phy Stats */
3732 	if (hw->media_type == e1000_media_type_copper) {
3733 		if ((adapter->link_speed == SPEED_1000) &&
3734 		   (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
3735 			phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
3736 			adapter->phy_stats.idle_errors += phy_tmp;
3737 		}
3738 
3739 		if ((hw->mac_type <= e1000_82546) &&
3740 		   (hw->phy_type == e1000_phy_m88) &&
3741 		   !e1000_read_phy_reg(hw, M88E1000_RX_ERR_CNTR, &phy_tmp))
3742 			adapter->phy_stats.receive_errors += phy_tmp;
3743 	}
3744 
3745 	/* Management Stats */
3746 	if (hw->has_smbus) {
3747 		adapter->stats.mgptc += er32(MGTPTC);
3748 		adapter->stats.mgprc += er32(MGTPRC);
3749 		adapter->stats.mgpdc += er32(MGTPDC);
3750 	}
3751 
3752 	spin_unlock_irqrestore(&adapter->stats_lock, flags);
3753 }
3754 
3755 /**
3756  * e1000_intr - Interrupt Handler
3757  * @irq: interrupt number
3758  * @data: pointer to a network interface device structure
3759  **/
3760 static irqreturn_t e1000_intr(int irq, void *data)
3761 {
3762 	struct net_device *netdev = data;
3763 	struct e1000_adapter *adapter = netdev_priv(netdev);
3764 	struct e1000_hw *hw = &adapter->hw;
3765 	u32 icr = er32(ICR);
3766 
3767 	if (unlikely((!icr)))
3768 		return IRQ_NONE;  /* Not our interrupt */
3769 
3770 	/* we might have caused the interrupt, but the above
3771 	 * read cleared it, and just in case the driver is
3772 	 * down there is nothing to do so return handled
3773 	 */
3774 	if (unlikely(test_bit(__E1000_DOWN, &adapter->flags)))
3775 		return IRQ_HANDLED;
3776 
3777 	if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) {
3778 		hw->get_link_status = 1;
3779 		/* guard against interrupt when we're going down */
3780 		if (!test_bit(__E1000_DOWN, &adapter->flags))
3781 			schedule_delayed_work(&adapter->watchdog_task, 1);
3782 	}
3783 
3784 	/* disable interrupts, without the synchronize_irq bit */
3785 	ew32(IMC, ~0);
3786 	E1000_WRITE_FLUSH();
3787 
3788 	if (likely(napi_schedule_prep(&adapter->napi))) {
3789 		adapter->total_tx_bytes = 0;
3790 		adapter->total_tx_packets = 0;
3791 		adapter->total_rx_bytes = 0;
3792 		adapter->total_rx_packets = 0;
3793 		__napi_schedule(&adapter->napi);
3794 	} else {
3795 		/* this really should not happen! if it does it is basically a
3796 		 * bug, but not a hard error, so enable ints and continue
3797 		 */
3798 		if (!test_bit(__E1000_DOWN, &adapter->flags))
3799 			e1000_irq_enable(adapter);
3800 	}
3801 
3802 	return IRQ_HANDLED;
3803 }
3804 
3805 /**
3806  * e1000_clean - NAPI Rx polling callback
3807  * @adapter: board private structure
3808  **/
3809 static int e1000_clean(struct napi_struct *napi, int budget)
3810 {
3811 	struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter,
3812 						     napi);
3813 	int tx_clean_complete = 0, work_done = 0;
3814 
3815 	tx_clean_complete = e1000_clean_tx_irq(adapter, &adapter->tx_ring[0]);
3816 
3817 	adapter->clean_rx(adapter, &adapter->rx_ring[0], &work_done, budget);
3818 
3819 	if (!tx_clean_complete)
3820 		work_done = budget;
3821 
3822 	/* If budget not fully consumed, exit the polling mode */
3823 	if (work_done < budget) {
3824 		if (likely(adapter->itr_setting & 3))
3825 			e1000_set_itr(adapter);
3826 		napi_complete(napi);
3827 		if (!test_bit(__E1000_DOWN, &adapter->flags))
3828 			e1000_irq_enable(adapter);
3829 	}
3830 
3831 	return work_done;
3832 }
3833 
3834 /**
3835  * e1000_clean_tx_irq - Reclaim resources after transmit completes
3836  * @adapter: board private structure
3837  **/
3838 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
3839 			       struct e1000_tx_ring *tx_ring)
3840 {
3841 	struct e1000_hw *hw = &adapter->hw;
3842 	struct net_device *netdev = adapter->netdev;
3843 	struct e1000_tx_desc *tx_desc, *eop_desc;
3844 	struct e1000_buffer *buffer_info;
3845 	unsigned int i, eop;
3846 	unsigned int count = 0;
3847 	unsigned int total_tx_bytes=0, total_tx_packets=0;
3848 	unsigned int bytes_compl = 0, pkts_compl = 0;
3849 
3850 	i = tx_ring->next_to_clean;
3851 	eop = tx_ring->buffer_info[i].next_to_watch;
3852 	eop_desc = E1000_TX_DESC(*tx_ring, eop);
3853 
3854 	while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) &&
3855 	       (count < tx_ring->count)) {
3856 		bool cleaned = false;
3857 		rmb();	/* read buffer_info after eop_desc */
3858 		for ( ; !cleaned; count++) {
3859 			tx_desc = E1000_TX_DESC(*tx_ring, i);
3860 			buffer_info = &tx_ring->buffer_info[i];
3861 			cleaned = (i == eop);
3862 
3863 			if (cleaned) {
3864 				total_tx_packets += buffer_info->segs;
3865 				total_tx_bytes += buffer_info->bytecount;
3866 				if (buffer_info->skb) {
3867 					bytes_compl += buffer_info->skb->len;
3868 					pkts_compl++;
3869 				}
3870 
3871 			}
3872 			e1000_unmap_and_free_tx_resource(adapter, buffer_info);
3873 			tx_desc->upper.data = 0;
3874 
3875 			if (unlikely(++i == tx_ring->count)) i = 0;
3876 		}
3877 
3878 		eop = tx_ring->buffer_info[i].next_to_watch;
3879 		eop_desc = E1000_TX_DESC(*tx_ring, eop);
3880 	}
3881 
3882 	tx_ring->next_to_clean = i;
3883 
3884 	netdev_completed_queue(netdev, pkts_compl, bytes_compl);
3885 
3886 #define TX_WAKE_THRESHOLD 32
3887 	if (unlikely(count && netif_carrier_ok(netdev) &&
3888 		     E1000_DESC_UNUSED(tx_ring) >= TX_WAKE_THRESHOLD)) {
3889 		/* Make sure that anybody stopping the queue after this
3890 		 * sees the new next_to_clean.
3891 		 */
3892 		smp_mb();
3893 
3894 		if (netif_queue_stopped(netdev) &&
3895 		    !(test_bit(__E1000_DOWN, &adapter->flags))) {
3896 			netif_wake_queue(netdev);
3897 			++adapter->restart_queue;
3898 		}
3899 	}
3900 
3901 	if (adapter->detect_tx_hung) {
3902 		/* Detect a transmit hang in hardware, this serializes the
3903 		 * check with the clearing of time_stamp and movement of i
3904 		 */
3905 		adapter->detect_tx_hung = false;
3906 		if (tx_ring->buffer_info[eop].time_stamp &&
3907 		    time_after(jiffies, tx_ring->buffer_info[eop].time_stamp +
3908 			       (adapter->tx_timeout_factor * HZ)) &&
3909 		    !(er32(STATUS) & E1000_STATUS_TXOFF)) {
3910 
3911 			/* detected Tx unit hang */
3912 			e_err(drv, "Detected Tx Unit Hang\n"
3913 			      "  Tx Queue             <%lu>\n"
3914 			      "  TDH                  <%x>\n"
3915 			      "  TDT                  <%x>\n"
3916 			      "  next_to_use          <%x>\n"
3917 			      "  next_to_clean        <%x>\n"
3918 			      "buffer_info[next_to_clean]\n"
3919 			      "  time_stamp           <%lx>\n"
3920 			      "  next_to_watch        <%x>\n"
3921 			      "  jiffies              <%lx>\n"
3922 			      "  next_to_watch.status <%x>\n",
3923 				(unsigned long)((tx_ring - adapter->tx_ring) /
3924 					sizeof(struct e1000_tx_ring)),
3925 				readl(hw->hw_addr + tx_ring->tdh),
3926 				readl(hw->hw_addr + tx_ring->tdt),
3927 				tx_ring->next_to_use,
3928 				tx_ring->next_to_clean,
3929 				tx_ring->buffer_info[eop].time_stamp,
3930 				eop,
3931 				jiffies,
3932 				eop_desc->upper.fields.status);
3933 			e1000_dump(adapter);
3934 			netif_stop_queue(netdev);
3935 		}
3936 	}
3937 	adapter->total_tx_bytes += total_tx_bytes;
3938 	adapter->total_tx_packets += total_tx_packets;
3939 	netdev->stats.tx_bytes += total_tx_bytes;
3940 	netdev->stats.tx_packets += total_tx_packets;
3941 	return count < tx_ring->count;
3942 }
3943 
3944 /**
3945  * e1000_rx_checksum - Receive Checksum Offload for 82543
3946  * @adapter:     board private structure
3947  * @status_err:  receive descriptor status and error fields
3948  * @csum:        receive descriptor csum field
3949  * @sk_buff:     socket buffer with received data
3950  **/
3951 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err,
3952 			      u32 csum, struct sk_buff *skb)
3953 {
3954 	struct e1000_hw *hw = &adapter->hw;
3955 	u16 status = (u16)status_err;
3956 	u8 errors = (u8)(status_err >> 24);
3957 
3958 	skb_checksum_none_assert(skb);
3959 
3960 	/* 82543 or newer only */
3961 	if (unlikely(hw->mac_type < e1000_82543)) return;
3962 	/* Ignore Checksum bit is set */
3963 	if (unlikely(status & E1000_RXD_STAT_IXSM)) return;
3964 	/* TCP/UDP checksum error bit is set */
3965 	if (unlikely(errors & E1000_RXD_ERR_TCPE)) {
3966 		/* let the stack verify checksum errors */
3967 		adapter->hw_csum_err++;
3968 		return;
3969 	}
3970 	/* TCP/UDP Checksum has not been calculated */
3971 	if (!(status & E1000_RXD_STAT_TCPCS))
3972 		return;
3973 
3974 	/* It must be a TCP or UDP packet with a valid checksum */
3975 	if (likely(status & E1000_RXD_STAT_TCPCS)) {
3976 		/* TCP checksum is good */
3977 		skb->ip_summed = CHECKSUM_UNNECESSARY;
3978 	}
3979 	adapter->hw_csum_good++;
3980 }
3981 
3982 /**
3983  * e1000_consume_page - helper function
3984  **/
3985 static void e1000_consume_page(struct e1000_buffer *bi, struct sk_buff *skb,
3986 			       u16 length)
3987 {
3988 	bi->page = NULL;
3989 	skb->len += length;
3990 	skb->data_len += length;
3991 	skb->truesize += PAGE_SIZE;
3992 }
3993 
3994 /**
3995  * e1000_receive_skb - helper function to handle rx indications
3996  * @adapter: board private structure
3997  * @status: descriptor status field as written by hardware
3998  * @vlan: descriptor vlan field as written by hardware (no le/be conversion)
3999  * @skb: pointer to sk_buff to be indicated to stack
4000  */
4001 static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status,
4002 			      __le16 vlan, struct sk_buff *skb)
4003 {
4004 	skb->protocol = eth_type_trans(skb, adapter->netdev);
4005 
4006 	if (status & E1000_RXD_STAT_VP) {
4007 		u16 vid = le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK;
4008 
4009 		__vlan_hwaccel_put_tag(skb, vid);
4010 	}
4011 	napi_gro_receive(&adapter->napi, skb);
4012 }
4013 
4014 /**
4015  * e1000_clean_jumbo_rx_irq - Send received data up the network stack; legacy
4016  * @adapter: board private structure
4017  * @rx_ring: ring to clean
4018  * @work_done: amount of napi work completed this call
4019  * @work_to_do: max amount of work allowed for this call to do
4020  *
4021  * the return value indicates whether actual cleaning was done, there
4022  * is no guarantee that everything was cleaned
4023  */
4024 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
4025 				     struct e1000_rx_ring *rx_ring,
4026 				     int *work_done, int work_to_do)
4027 {
4028 	struct e1000_hw *hw = &adapter->hw;
4029 	struct net_device *netdev = adapter->netdev;
4030 	struct pci_dev *pdev = adapter->pdev;
4031 	struct e1000_rx_desc *rx_desc, *next_rxd;
4032 	struct e1000_buffer *buffer_info, *next_buffer;
4033 	unsigned long irq_flags;
4034 	u32 length;
4035 	unsigned int i;
4036 	int cleaned_count = 0;
4037 	bool cleaned = false;
4038 	unsigned int total_rx_bytes=0, total_rx_packets=0;
4039 
4040 	i = rx_ring->next_to_clean;
4041 	rx_desc = E1000_RX_DESC(*rx_ring, i);
4042 	buffer_info = &rx_ring->buffer_info[i];
4043 
4044 	while (rx_desc->status & E1000_RXD_STAT_DD) {
4045 		struct sk_buff *skb;
4046 		u8 status;
4047 
4048 		if (*work_done >= work_to_do)
4049 			break;
4050 		(*work_done)++;
4051 		rmb(); /* read descriptor and rx_buffer_info after status DD */
4052 
4053 		status = rx_desc->status;
4054 		skb = buffer_info->skb;
4055 		buffer_info->skb = NULL;
4056 
4057 		if (++i == rx_ring->count) i = 0;
4058 		next_rxd = E1000_RX_DESC(*rx_ring, i);
4059 		prefetch(next_rxd);
4060 
4061 		next_buffer = &rx_ring->buffer_info[i];
4062 
4063 		cleaned = true;
4064 		cleaned_count++;
4065 		dma_unmap_page(&pdev->dev, buffer_info->dma,
4066 			       buffer_info->length, DMA_FROM_DEVICE);
4067 		buffer_info->dma = 0;
4068 
4069 		length = le16_to_cpu(rx_desc->length);
4070 
4071 		/* errors is only valid for DD + EOP descriptors */
4072 		if (unlikely((status & E1000_RXD_STAT_EOP) &&
4073 		    (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK))) {
4074 			u8 *mapped;
4075 			u8 last_byte;
4076 
4077 			mapped = page_address(buffer_info->page);
4078 			last_byte = *(mapped + length - 1);
4079 			if (TBI_ACCEPT(hw, status, rx_desc->errors, length,
4080 				       last_byte)) {
4081 				spin_lock_irqsave(&adapter->stats_lock,
4082 						  irq_flags);
4083 				e1000_tbi_adjust_stats(hw, &adapter->stats,
4084 						       length, mapped);
4085 				spin_unlock_irqrestore(&adapter->stats_lock,
4086 						       irq_flags);
4087 				length--;
4088 			} else {
4089 				if (netdev->features & NETIF_F_RXALL)
4090 					goto process_skb;
4091 				/* recycle both page and skb */
4092 				buffer_info->skb = skb;
4093 				/* an error means any chain goes out the window
4094 				 * too
4095 				 */
4096 				if (rx_ring->rx_skb_top)
4097 					dev_kfree_skb(rx_ring->rx_skb_top);
4098 				rx_ring->rx_skb_top = NULL;
4099 				goto next_desc;
4100 			}
4101 		}
4102 
4103 #define rxtop rx_ring->rx_skb_top
4104 process_skb:
4105 		if (!(status & E1000_RXD_STAT_EOP)) {
4106 			/* this descriptor is only the beginning (or middle) */
4107 			if (!rxtop) {
4108 				/* this is the beginning of a chain */
4109 				rxtop = skb;
4110 				skb_fill_page_desc(rxtop, 0, buffer_info->page,
4111 						   0, length);
4112 			} else {
4113 				/* this is the middle of a chain */
4114 				skb_fill_page_desc(rxtop,
4115 				    skb_shinfo(rxtop)->nr_frags,
4116 				    buffer_info->page, 0, length);
4117 				/* re-use the skb, only consumed the page */
4118 				buffer_info->skb = skb;
4119 			}
4120 			e1000_consume_page(buffer_info, rxtop, length);
4121 			goto next_desc;
4122 		} else {
4123 			if (rxtop) {
4124 				/* end of the chain */
4125 				skb_fill_page_desc(rxtop,
4126 				    skb_shinfo(rxtop)->nr_frags,
4127 				    buffer_info->page, 0, length);
4128 				/* re-use the current skb, we only consumed the
4129 				 * page
4130 				 */
4131 				buffer_info->skb = skb;
4132 				skb = rxtop;
4133 				rxtop = NULL;
4134 				e1000_consume_page(buffer_info, skb, length);
4135 			} else {
4136 				/* no chain, got EOP, this buf is the packet
4137 				 * copybreak to save the put_page/alloc_page
4138 				 */
4139 				if (length <= copybreak &&
4140 				    skb_tailroom(skb) >= length) {
4141 					u8 *vaddr;
4142 					vaddr = kmap_atomic(buffer_info->page);
4143 					memcpy(skb_tail_pointer(skb), vaddr,
4144 					       length);
4145 					kunmap_atomic(vaddr);
4146 					/* re-use the page, so don't erase
4147 					 * buffer_info->page
4148 					 */
4149 					skb_put(skb, length);
4150 				} else {
4151 					skb_fill_page_desc(skb, 0,
4152 							   buffer_info->page, 0,
4153 							   length);
4154 					e1000_consume_page(buffer_info, skb,
4155 							   length);
4156 				}
4157 			}
4158 		}
4159 
4160 		/* Receive Checksum Offload XXX recompute due to CRC strip? */
4161 		e1000_rx_checksum(adapter,
4162 				  (u32)(status) |
4163 				  ((u32)(rx_desc->errors) << 24),
4164 				  le16_to_cpu(rx_desc->csum), skb);
4165 
4166 		total_rx_bytes += (skb->len - 4); /* don't count FCS */
4167 		if (likely(!(netdev->features & NETIF_F_RXFCS)))
4168 			pskb_trim(skb, skb->len - 4);
4169 		total_rx_packets++;
4170 
4171 		/* eth type trans needs skb->data to point to something */
4172 		if (!pskb_may_pull(skb, ETH_HLEN)) {
4173 			e_err(drv, "pskb_may_pull failed.\n");
4174 			dev_kfree_skb(skb);
4175 			goto next_desc;
4176 		}
4177 
4178 		e1000_receive_skb(adapter, status, rx_desc->special, skb);
4179 
4180 next_desc:
4181 		rx_desc->status = 0;
4182 
4183 		/* return some buffers to hardware, one at a time is too slow */
4184 		if (unlikely(cleaned_count >= E1000_RX_BUFFER_WRITE)) {
4185 			adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count);
4186 			cleaned_count = 0;
4187 		}
4188 
4189 		/* use prefetched values */
4190 		rx_desc = next_rxd;
4191 		buffer_info = next_buffer;
4192 	}
4193 	rx_ring->next_to_clean = i;
4194 
4195 	cleaned_count = E1000_DESC_UNUSED(rx_ring);
4196 	if (cleaned_count)
4197 		adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count);
4198 
4199 	adapter->total_rx_packets += total_rx_packets;
4200 	adapter->total_rx_bytes += total_rx_bytes;
4201 	netdev->stats.rx_bytes += total_rx_bytes;
4202 	netdev->stats.rx_packets += total_rx_packets;
4203 	return cleaned;
4204 }
4205 
4206 /* this should improve performance for small packets with large amounts
4207  * of reassembly being done in the stack
4208  */
4209 static void e1000_check_copybreak(struct net_device *netdev,
4210 				 struct e1000_buffer *buffer_info,
4211 				 u32 length, struct sk_buff **skb)
4212 {
4213 	struct sk_buff *new_skb;
4214 
4215 	if (length > copybreak)
4216 		return;
4217 
4218 	new_skb = netdev_alloc_skb_ip_align(netdev, length);
4219 	if (!new_skb)
4220 		return;
4221 
4222 	skb_copy_to_linear_data_offset(new_skb, -NET_IP_ALIGN,
4223 				       (*skb)->data - NET_IP_ALIGN,
4224 				       length + NET_IP_ALIGN);
4225 	/* save the skb in buffer_info as good */
4226 	buffer_info->skb = *skb;
4227 	*skb = new_skb;
4228 }
4229 
4230 /**
4231  * e1000_clean_rx_irq - Send received data up the network stack; legacy
4232  * @adapter: board private structure
4233  * @rx_ring: ring to clean
4234  * @work_done: amount of napi work completed this call
4235  * @work_to_do: max amount of work allowed for this call to do
4236  */
4237 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
4238 			       struct e1000_rx_ring *rx_ring,
4239 			       int *work_done, int work_to_do)
4240 {
4241 	struct e1000_hw *hw = &adapter->hw;
4242 	struct net_device *netdev = adapter->netdev;
4243 	struct pci_dev *pdev = adapter->pdev;
4244 	struct e1000_rx_desc *rx_desc, *next_rxd;
4245 	struct e1000_buffer *buffer_info, *next_buffer;
4246 	unsigned long flags;
4247 	u32 length;
4248 	unsigned int i;
4249 	int cleaned_count = 0;
4250 	bool cleaned = false;
4251 	unsigned int total_rx_bytes=0, total_rx_packets=0;
4252 
4253 	i = rx_ring->next_to_clean;
4254 	rx_desc = E1000_RX_DESC(*rx_ring, i);
4255 	buffer_info = &rx_ring->buffer_info[i];
4256 
4257 	while (rx_desc->status & E1000_RXD_STAT_DD) {
4258 		struct sk_buff *skb;
4259 		u8 status;
4260 
4261 		if (*work_done >= work_to_do)
4262 			break;
4263 		(*work_done)++;
4264 		rmb(); /* read descriptor and rx_buffer_info after status DD */
4265 
4266 		status = rx_desc->status;
4267 		skb = buffer_info->skb;
4268 		buffer_info->skb = NULL;
4269 
4270 		prefetch(skb->data - NET_IP_ALIGN);
4271 
4272 		if (++i == rx_ring->count) i = 0;
4273 		next_rxd = E1000_RX_DESC(*rx_ring, i);
4274 		prefetch(next_rxd);
4275 
4276 		next_buffer = &rx_ring->buffer_info[i];
4277 
4278 		cleaned = true;
4279 		cleaned_count++;
4280 		dma_unmap_single(&pdev->dev, buffer_info->dma,
4281 				 buffer_info->length, DMA_FROM_DEVICE);
4282 		buffer_info->dma = 0;
4283 
4284 		length = le16_to_cpu(rx_desc->length);
4285 		/* !EOP means multiple descriptors were used to store a single
4286 		 * packet, if thats the case we need to toss it.  In fact, we
4287 		 * to toss every packet with the EOP bit clear and the next
4288 		 * frame that _does_ have the EOP bit set, as it is by
4289 		 * definition only a frame fragment
4290 		 */
4291 		if (unlikely(!(status & E1000_RXD_STAT_EOP)))
4292 			adapter->discarding = true;
4293 
4294 		if (adapter->discarding) {
4295 			/* All receives must fit into a single buffer */
4296 			e_dbg("Receive packet consumed multiple buffers\n");
4297 			/* recycle */
4298 			buffer_info->skb = skb;
4299 			if (status & E1000_RXD_STAT_EOP)
4300 				adapter->discarding = false;
4301 			goto next_desc;
4302 		}
4303 
4304 		if (unlikely(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)) {
4305 			u8 last_byte = *(skb->data + length - 1);
4306 			if (TBI_ACCEPT(hw, status, rx_desc->errors, length,
4307 				       last_byte)) {
4308 				spin_lock_irqsave(&adapter->stats_lock, flags);
4309 				e1000_tbi_adjust_stats(hw, &adapter->stats,
4310 						       length, skb->data);
4311 				spin_unlock_irqrestore(&adapter->stats_lock,
4312 						       flags);
4313 				length--;
4314 			} else {
4315 				if (netdev->features & NETIF_F_RXALL)
4316 					goto process_skb;
4317 				/* recycle */
4318 				buffer_info->skb = skb;
4319 				goto next_desc;
4320 			}
4321 		}
4322 
4323 process_skb:
4324 		total_rx_bytes += (length - 4); /* don't count FCS */
4325 		total_rx_packets++;
4326 
4327 		if (likely(!(netdev->features & NETIF_F_RXFCS)))
4328 			/* adjust length to remove Ethernet CRC, this must be
4329 			 * done after the TBI_ACCEPT workaround above
4330 			 */
4331 			length -= 4;
4332 
4333 		e1000_check_copybreak(netdev, buffer_info, length, &skb);
4334 
4335 		skb_put(skb, length);
4336 
4337 		/* Receive Checksum Offload */
4338 		e1000_rx_checksum(adapter,
4339 				  (u32)(status) |
4340 				  ((u32)(rx_desc->errors) << 24),
4341 				  le16_to_cpu(rx_desc->csum), skb);
4342 
4343 		e1000_receive_skb(adapter, status, rx_desc->special, skb);
4344 
4345 next_desc:
4346 		rx_desc->status = 0;
4347 
4348 		/* return some buffers to hardware, one at a time is too slow */
4349 		if (unlikely(cleaned_count >= E1000_RX_BUFFER_WRITE)) {
4350 			adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count);
4351 			cleaned_count = 0;
4352 		}
4353 
4354 		/* use prefetched values */
4355 		rx_desc = next_rxd;
4356 		buffer_info = next_buffer;
4357 	}
4358 	rx_ring->next_to_clean = i;
4359 
4360 	cleaned_count = E1000_DESC_UNUSED(rx_ring);
4361 	if (cleaned_count)
4362 		adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count);
4363 
4364 	adapter->total_rx_packets += total_rx_packets;
4365 	adapter->total_rx_bytes += total_rx_bytes;
4366 	netdev->stats.rx_bytes += total_rx_bytes;
4367 	netdev->stats.rx_packets += total_rx_packets;
4368 	return cleaned;
4369 }
4370 
4371 /**
4372  * e1000_alloc_jumbo_rx_buffers - Replace used jumbo receive buffers
4373  * @adapter: address of board private structure
4374  * @rx_ring: pointer to receive ring structure
4375  * @cleaned_count: number of buffers to allocate this pass
4376  **/
4377 static void
4378 e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
4379 			     struct e1000_rx_ring *rx_ring, int cleaned_count)
4380 {
4381 	struct net_device *netdev = adapter->netdev;
4382 	struct pci_dev *pdev = adapter->pdev;
4383 	struct e1000_rx_desc *rx_desc;
4384 	struct e1000_buffer *buffer_info;
4385 	struct sk_buff *skb;
4386 	unsigned int i;
4387 	unsigned int bufsz = 256 - 16 /*for skb_reserve */ ;
4388 
4389 	i = rx_ring->next_to_use;
4390 	buffer_info = &rx_ring->buffer_info[i];
4391 
4392 	while (cleaned_count--) {
4393 		skb = buffer_info->skb;
4394 		if (skb) {
4395 			skb_trim(skb, 0);
4396 			goto check_page;
4397 		}
4398 
4399 		skb = netdev_alloc_skb_ip_align(netdev, bufsz);
4400 		if (unlikely(!skb)) {
4401 			/* Better luck next round */
4402 			adapter->alloc_rx_buff_failed++;
4403 			break;
4404 		}
4405 
4406 		buffer_info->skb = skb;
4407 		buffer_info->length = adapter->rx_buffer_len;
4408 check_page:
4409 		/* allocate a new page if necessary */
4410 		if (!buffer_info->page) {
4411 			buffer_info->page = alloc_page(GFP_ATOMIC);
4412 			if (unlikely(!buffer_info->page)) {
4413 				adapter->alloc_rx_buff_failed++;
4414 				break;
4415 			}
4416 		}
4417 
4418 		if (!buffer_info->dma) {
4419 			buffer_info->dma = dma_map_page(&pdev->dev,
4420 							buffer_info->page, 0,
4421 							buffer_info->length,
4422 							DMA_FROM_DEVICE);
4423 			if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {
4424 				put_page(buffer_info->page);
4425 				dev_kfree_skb(skb);
4426 				buffer_info->page = NULL;
4427 				buffer_info->skb = NULL;
4428 				buffer_info->dma = 0;
4429 				adapter->alloc_rx_buff_failed++;
4430 				break; /* while !buffer_info->skb */
4431 			}
4432 		}
4433 
4434 		rx_desc = E1000_RX_DESC(*rx_ring, i);
4435 		rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
4436 
4437 		if (unlikely(++i == rx_ring->count))
4438 			i = 0;
4439 		buffer_info = &rx_ring->buffer_info[i];
4440 	}
4441 
4442 	if (likely(rx_ring->next_to_use != i)) {
4443 		rx_ring->next_to_use = i;
4444 		if (unlikely(i-- == 0))
4445 			i = (rx_ring->count - 1);
4446 
4447 		/* Force memory writes to complete before letting h/w
4448 		 * know there are new descriptors to fetch.  (Only
4449 		 * applicable for weak-ordered memory model archs,
4450 		 * such as IA-64).
4451 		 */
4452 		wmb();
4453 		writel(i, adapter->hw.hw_addr + rx_ring->rdt);
4454 	}
4455 }
4456 
4457 /**
4458  * e1000_alloc_rx_buffers - Replace used receive buffers; legacy & extended
4459  * @adapter: address of board private structure
4460  **/
4461 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
4462 				   struct e1000_rx_ring *rx_ring,
4463 				   int cleaned_count)
4464 {
4465 	struct e1000_hw *hw = &adapter->hw;
4466 	struct net_device *netdev = adapter->netdev;
4467 	struct pci_dev *pdev = adapter->pdev;
4468 	struct e1000_rx_desc *rx_desc;
4469 	struct e1000_buffer *buffer_info;
4470 	struct sk_buff *skb;
4471 	unsigned int i;
4472 	unsigned int bufsz = adapter->rx_buffer_len;
4473 
4474 	i = rx_ring->next_to_use;
4475 	buffer_info = &rx_ring->buffer_info[i];
4476 
4477 	while (cleaned_count--) {
4478 		skb = buffer_info->skb;
4479 		if (skb) {
4480 			skb_trim(skb, 0);
4481 			goto map_skb;
4482 		}
4483 
4484 		skb = netdev_alloc_skb_ip_align(netdev, bufsz);
4485 		if (unlikely(!skb)) {
4486 			/* Better luck next round */
4487 			adapter->alloc_rx_buff_failed++;
4488 			break;
4489 		}
4490 
4491 		/* Fix for errata 23, can't cross 64kB boundary */
4492 		if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
4493 			struct sk_buff *oldskb = skb;
4494 			e_err(rx_err, "skb align check failed: %u bytes at "
4495 			      "%p\n", bufsz, skb->data);
4496 			/* Try again, without freeing the previous */
4497 			skb = netdev_alloc_skb_ip_align(netdev, bufsz);
4498 			/* Failed allocation, critical failure */
4499 			if (!skb) {
4500 				dev_kfree_skb(oldskb);
4501 				adapter->alloc_rx_buff_failed++;
4502 				break;
4503 			}
4504 
4505 			if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
4506 				/* give up */
4507 				dev_kfree_skb(skb);
4508 				dev_kfree_skb(oldskb);
4509 				adapter->alloc_rx_buff_failed++;
4510 				break; /* while !buffer_info->skb */
4511 			}
4512 
4513 			/* Use new allocation */
4514 			dev_kfree_skb(oldskb);
4515 		}
4516 		buffer_info->skb = skb;
4517 		buffer_info->length = adapter->rx_buffer_len;
4518 map_skb:
4519 		buffer_info->dma = dma_map_single(&pdev->dev,
4520 						  skb->data,
4521 						  buffer_info->length,
4522 						  DMA_FROM_DEVICE);
4523 		if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {
4524 			dev_kfree_skb(skb);
4525 			buffer_info->skb = NULL;
4526 			buffer_info->dma = 0;
4527 			adapter->alloc_rx_buff_failed++;
4528 			break; /* while !buffer_info->skb */
4529 		}
4530 
4531 		/* XXX if it was allocated cleanly it will never map to a
4532 		 * boundary crossing
4533 		 */
4534 
4535 		/* Fix for errata 23, can't cross 64kB boundary */
4536 		if (!e1000_check_64k_bound(adapter,
4537 					(void *)(unsigned long)buffer_info->dma,
4538 					adapter->rx_buffer_len)) {
4539 			e_err(rx_err, "dma align check failed: %u bytes at "
4540 			      "%p\n", adapter->rx_buffer_len,
4541 			      (void *)(unsigned long)buffer_info->dma);
4542 			dev_kfree_skb(skb);
4543 			buffer_info->skb = NULL;
4544 
4545 			dma_unmap_single(&pdev->dev, buffer_info->dma,
4546 					 adapter->rx_buffer_len,
4547 					 DMA_FROM_DEVICE);
4548 			buffer_info->dma = 0;
4549 
4550 			adapter->alloc_rx_buff_failed++;
4551 			break; /* while !buffer_info->skb */
4552 		}
4553 		rx_desc = E1000_RX_DESC(*rx_ring, i);
4554 		rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
4555 
4556 		if (unlikely(++i == rx_ring->count))
4557 			i = 0;
4558 		buffer_info = &rx_ring->buffer_info[i];
4559 	}
4560 
4561 	if (likely(rx_ring->next_to_use != i)) {
4562 		rx_ring->next_to_use = i;
4563 		if (unlikely(i-- == 0))
4564 			i = (rx_ring->count - 1);
4565 
4566 		/* Force memory writes to complete before letting h/w
4567 		 * know there are new descriptors to fetch.  (Only
4568 		 * applicable for weak-ordered memory model archs,
4569 		 * such as IA-64).
4570 		 */
4571 		wmb();
4572 		writel(i, hw->hw_addr + rx_ring->rdt);
4573 	}
4574 }
4575 
4576 /**
4577  * e1000_smartspeed - Workaround for SmartSpeed on 82541 and 82547 controllers.
4578  * @adapter:
4579  **/
4580 static void e1000_smartspeed(struct e1000_adapter *adapter)
4581 {
4582 	struct e1000_hw *hw = &adapter->hw;
4583 	u16 phy_status;
4584 	u16 phy_ctrl;
4585 
4586 	if ((hw->phy_type != e1000_phy_igp) || !hw->autoneg ||
4587 	   !(hw->autoneg_advertised & ADVERTISE_1000_FULL))
4588 		return;
4589 
4590 	if (adapter->smartspeed == 0) {
4591 		/* If Master/Slave config fault is asserted twice,
4592 		 * we assume back-to-back
4593 		 */
4594 		e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_status);
4595 		if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) return;
4596 		e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_status);
4597 		if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) return;
4598 		e1000_read_phy_reg(hw, PHY_1000T_CTRL, &phy_ctrl);
4599 		if (phy_ctrl & CR_1000T_MS_ENABLE) {
4600 			phy_ctrl &= ~CR_1000T_MS_ENABLE;
4601 			e1000_write_phy_reg(hw, PHY_1000T_CTRL,
4602 					    phy_ctrl);
4603 			adapter->smartspeed++;
4604 			if (!e1000_phy_setup_autoneg(hw) &&
4605 			   !e1000_read_phy_reg(hw, PHY_CTRL,
4606 					       &phy_ctrl)) {
4607 				phy_ctrl |= (MII_CR_AUTO_NEG_EN |
4608 					     MII_CR_RESTART_AUTO_NEG);
4609 				e1000_write_phy_reg(hw, PHY_CTRL,
4610 						    phy_ctrl);
4611 			}
4612 		}
4613 		return;
4614 	} else if (adapter->smartspeed == E1000_SMARTSPEED_DOWNSHIFT) {
4615 		/* If still no link, perhaps using 2/3 pair cable */
4616 		e1000_read_phy_reg(hw, PHY_1000T_CTRL, &phy_ctrl);
4617 		phy_ctrl |= CR_1000T_MS_ENABLE;
4618 		e1000_write_phy_reg(hw, PHY_1000T_CTRL, phy_ctrl);
4619 		if (!e1000_phy_setup_autoneg(hw) &&
4620 		   !e1000_read_phy_reg(hw, PHY_CTRL, &phy_ctrl)) {
4621 			phy_ctrl |= (MII_CR_AUTO_NEG_EN |
4622 				     MII_CR_RESTART_AUTO_NEG);
4623 			e1000_write_phy_reg(hw, PHY_CTRL, phy_ctrl);
4624 		}
4625 	}
4626 	/* Restart process after E1000_SMARTSPEED_MAX iterations */
4627 	if (adapter->smartspeed++ == E1000_SMARTSPEED_MAX)
4628 		adapter->smartspeed = 0;
4629 }
4630 
4631 /**
4632  * e1000_ioctl -
4633  * @netdev:
4634  * @ifreq:
4635  * @cmd:
4636  **/
4637 static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
4638 {
4639 	switch (cmd) {
4640 	case SIOCGMIIPHY:
4641 	case SIOCGMIIREG:
4642 	case SIOCSMIIREG:
4643 		return e1000_mii_ioctl(netdev, ifr, cmd);
4644 	default:
4645 		return -EOPNOTSUPP;
4646 	}
4647 }
4648 
4649 /**
4650  * e1000_mii_ioctl -
4651  * @netdev:
4652  * @ifreq:
4653  * @cmd:
4654  **/
4655 static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
4656 			   int cmd)
4657 {
4658 	struct e1000_adapter *adapter = netdev_priv(netdev);
4659 	struct e1000_hw *hw = &adapter->hw;
4660 	struct mii_ioctl_data *data = if_mii(ifr);
4661 	int retval;
4662 	u16 mii_reg;
4663 	unsigned long flags;
4664 
4665 	if (hw->media_type != e1000_media_type_copper)
4666 		return -EOPNOTSUPP;
4667 
4668 	switch (cmd) {
4669 	case SIOCGMIIPHY:
4670 		data->phy_id = hw->phy_addr;
4671 		break;
4672 	case SIOCGMIIREG:
4673 		spin_lock_irqsave(&adapter->stats_lock, flags);
4674 		if (e1000_read_phy_reg(hw, data->reg_num & 0x1F,
4675 				   &data->val_out)) {
4676 			spin_unlock_irqrestore(&adapter->stats_lock, flags);
4677 			return -EIO;
4678 		}
4679 		spin_unlock_irqrestore(&adapter->stats_lock, flags);
4680 		break;
4681 	case SIOCSMIIREG:
4682 		if (data->reg_num & ~(0x1F))
4683 			return -EFAULT;
4684 		mii_reg = data->val_in;
4685 		spin_lock_irqsave(&adapter->stats_lock, flags);
4686 		if (e1000_write_phy_reg(hw, data->reg_num,
4687 					mii_reg)) {
4688 			spin_unlock_irqrestore(&adapter->stats_lock, flags);
4689 			return -EIO;
4690 		}
4691 		spin_unlock_irqrestore(&adapter->stats_lock, flags);
4692 		if (hw->media_type == e1000_media_type_copper) {
4693 			switch (data->reg_num) {
4694 			case PHY_CTRL:
4695 				if (mii_reg & MII_CR_POWER_DOWN)
4696 					break;
4697 				if (mii_reg & MII_CR_AUTO_NEG_EN) {
4698 					hw->autoneg = 1;
4699 					hw->autoneg_advertised = 0x2F;
4700 				} else {
4701 					u32 speed;
4702 					if (mii_reg & 0x40)
4703 						speed = SPEED_1000;
4704 					else if (mii_reg & 0x2000)
4705 						speed = SPEED_100;
4706 					else
4707 						speed = SPEED_10;
4708 					retval = e1000_set_spd_dplx(
4709 						adapter, speed,
4710 						((mii_reg & 0x100)
4711 						 ? DUPLEX_FULL :
4712 						 DUPLEX_HALF));
4713 					if (retval)
4714 						return retval;
4715 				}
4716 				if (netif_running(adapter->netdev))
4717 					e1000_reinit_locked(adapter);
4718 				else
4719 					e1000_reset(adapter);
4720 				break;
4721 			case M88E1000_PHY_SPEC_CTRL:
4722 			case M88E1000_EXT_PHY_SPEC_CTRL:
4723 				if (e1000_phy_reset(hw))
4724 					return -EIO;
4725 				break;
4726 			}
4727 		} else {
4728 			switch (data->reg_num) {
4729 			case PHY_CTRL:
4730 				if (mii_reg & MII_CR_POWER_DOWN)
4731 					break;
4732 				if (netif_running(adapter->netdev))
4733 					e1000_reinit_locked(adapter);
4734 				else
4735 					e1000_reset(adapter);
4736 				break;
4737 			}
4738 		}
4739 		break;
4740 	default:
4741 		return -EOPNOTSUPP;
4742 	}
4743 	return E1000_SUCCESS;
4744 }
4745 
4746 void e1000_pci_set_mwi(struct e1000_hw *hw)
4747 {
4748 	struct e1000_adapter *adapter = hw->back;
4749 	int ret_val = pci_set_mwi(adapter->pdev);
4750 
4751 	if (ret_val)
4752 		e_err(probe, "Error in setting MWI\n");
4753 }
4754 
4755 void e1000_pci_clear_mwi(struct e1000_hw *hw)
4756 {
4757 	struct e1000_adapter *adapter = hw->back;
4758 
4759 	pci_clear_mwi(adapter->pdev);
4760 }
4761 
4762 int e1000_pcix_get_mmrbc(struct e1000_hw *hw)
4763 {
4764 	struct e1000_adapter *adapter = hw->back;
4765 	return pcix_get_mmrbc(adapter->pdev);
4766 }
4767 
4768 void e1000_pcix_set_mmrbc(struct e1000_hw *hw, int mmrbc)
4769 {
4770 	struct e1000_adapter *adapter = hw->back;
4771 	pcix_set_mmrbc(adapter->pdev, mmrbc);
4772 }
4773 
4774 void e1000_io_write(struct e1000_hw *hw, unsigned long port, u32 value)
4775 {
4776 	outl(value, port);
4777 }
4778 
4779 static bool e1000_vlan_used(struct e1000_adapter *adapter)
4780 {
4781 	u16 vid;
4782 
4783 	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
4784 		return true;
4785 	return false;
4786 }
4787 
4788 static void __e1000_vlan_mode(struct e1000_adapter *adapter,
4789 			      netdev_features_t features)
4790 {
4791 	struct e1000_hw *hw = &adapter->hw;
4792 	u32 ctrl;
4793 
4794 	ctrl = er32(CTRL);
4795 	if (features & NETIF_F_HW_VLAN_RX) {
4796 		/* enable VLAN tag insert/strip */
4797 		ctrl |= E1000_CTRL_VME;
4798 	} else {
4799 		/* disable VLAN tag insert/strip */
4800 		ctrl &= ~E1000_CTRL_VME;
4801 	}
4802 	ew32(CTRL, ctrl);
4803 }
4804 static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter,
4805 				     bool filter_on)
4806 {
4807 	struct e1000_hw *hw = &adapter->hw;
4808 	u32 rctl;
4809 
4810 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4811 		e1000_irq_disable(adapter);
4812 
4813 	__e1000_vlan_mode(adapter, adapter->netdev->features);
4814 	if (filter_on) {
4815 		/* enable VLAN receive filtering */
4816 		rctl = er32(RCTL);
4817 		rctl &= ~E1000_RCTL_CFIEN;
4818 		if (!(adapter->netdev->flags & IFF_PROMISC))
4819 			rctl |= E1000_RCTL_VFE;
4820 		ew32(RCTL, rctl);
4821 		e1000_update_mng_vlan(adapter);
4822 	} else {
4823 		/* disable VLAN receive filtering */
4824 		rctl = er32(RCTL);
4825 		rctl &= ~E1000_RCTL_VFE;
4826 		ew32(RCTL, rctl);
4827 	}
4828 
4829 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4830 		e1000_irq_enable(adapter);
4831 }
4832 
4833 static void e1000_vlan_mode(struct net_device *netdev,
4834 			    netdev_features_t features)
4835 {
4836 	struct e1000_adapter *adapter = netdev_priv(netdev);
4837 
4838 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4839 		e1000_irq_disable(adapter);
4840 
4841 	__e1000_vlan_mode(adapter, features);
4842 
4843 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4844 		e1000_irq_enable(adapter);
4845 }
4846 
4847 static int e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
4848 {
4849 	struct e1000_adapter *adapter = netdev_priv(netdev);
4850 	struct e1000_hw *hw = &adapter->hw;
4851 	u32 vfta, index;
4852 
4853 	if ((hw->mng_cookie.status &
4854 	     E1000_MNG_DHCP_COOKIE_STATUS_VLAN_SUPPORT) &&
4855 	    (vid == adapter->mng_vlan_id))
4856 		return 0;
4857 
4858 	if (!e1000_vlan_used(adapter))
4859 		e1000_vlan_filter_on_off(adapter, true);
4860 
4861 	/* add VID to filter table */
4862 	index = (vid >> 5) & 0x7F;
4863 	vfta = E1000_READ_REG_ARRAY(hw, VFTA, index);
4864 	vfta |= (1 << (vid & 0x1F));
4865 	e1000_write_vfta(hw, index, vfta);
4866 
4867 	set_bit(vid, adapter->active_vlans);
4868 
4869 	return 0;
4870 }
4871 
4872 static int e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
4873 {
4874 	struct e1000_adapter *adapter = netdev_priv(netdev);
4875 	struct e1000_hw *hw = &adapter->hw;
4876 	u32 vfta, index;
4877 
4878 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4879 		e1000_irq_disable(adapter);
4880 	if (!test_bit(__E1000_DOWN, &adapter->flags))
4881 		e1000_irq_enable(adapter);
4882 
4883 	/* remove VID from filter table */
4884 	index = (vid >> 5) & 0x7F;
4885 	vfta = E1000_READ_REG_ARRAY(hw, VFTA, index);
4886 	vfta &= ~(1 << (vid & 0x1F));
4887 	e1000_write_vfta(hw, index, vfta);
4888 
4889 	clear_bit(vid, adapter->active_vlans);
4890 
4891 	if (!e1000_vlan_used(adapter))
4892 		e1000_vlan_filter_on_off(adapter, false);
4893 
4894 	return 0;
4895 }
4896 
4897 static void e1000_restore_vlan(struct e1000_adapter *adapter)
4898 {
4899 	u16 vid;
4900 
4901 	if (!e1000_vlan_used(adapter))
4902 		return;
4903 
4904 	e1000_vlan_filter_on_off(adapter, true);
4905 	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
4906 		e1000_vlan_rx_add_vid(adapter->netdev, vid);
4907 }
4908 
4909 int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx)
4910 {
4911 	struct e1000_hw *hw = &adapter->hw;
4912 
4913 	hw->autoneg = 0;
4914 
4915 	/* Make sure dplx is at most 1 bit and lsb of speed is not set
4916 	 * for the switch() below to work
4917 	 */
4918 	if ((spd & 1) || (dplx & ~1))
4919 		goto err_inval;
4920 
4921 	/* Fiber NICs only allow 1000 gbps Full duplex */
4922 	if ((hw->media_type == e1000_media_type_fiber) &&
4923 	    spd != SPEED_1000 &&
4924 	    dplx != DUPLEX_FULL)
4925 		goto err_inval;
4926 
4927 	switch (spd + dplx) {
4928 	case SPEED_10 + DUPLEX_HALF:
4929 		hw->forced_speed_duplex = e1000_10_half;
4930 		break;
4931 	case SPEED_10 + DUPLEX_FULL:
4932 		hw->forced_speed_duplex = e1000_10_full;
4933 		break;
4934 	case SPEED_100 + DUPLEX_HALF:
4935 		hw->forced_speed_duplex = e1000_100_half;
4936 		break;
4937 	case SPEED_100 + DUPLEX_FULL:
4938 		hw->forced_speed_duplex = e1000_100_full;
4939 		break;
4940 	case SPEED_1000 + DUPLEX_FULL:
4941 		hw->autoneg = 1;
4942 		hw->autoneg_advertised = ADVERTISE_1000_FULL;
4943 		break;
4944 	case SPEED_1000 + DUPLEX_HALF: /* not supported */
4945 	default:
4946 		goto err_inval;
4947 	}
4948 
4949 	/* clear MDI, MDI(-X) override is only allowed when autoneg enabled */
4950 	hw->mdix = AUTO_ALL_MODES;
4951 
4952 	return 0;
4953 
4954 err_inval:
4955 	e_err(probe, "Unsupported Speed/Duplex configuration\n");
4956 	return -EINVAL;
4957 }
4958 
4959 static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
4960 {
4961 	struct net_device *netdev = pci_get_drvdata(pdev);
4962 	struct e1000_adapter *adapter = netdev_priv(netdev);
4963 	struct e1000_hw *hw = &adapter->hw;
4964 	u32 ctrl, ctrl_ext, rctl, status;
4965 	u32 wufc = adapter->wol;
4966 #ifdef CONFIG_PM
4967 	int retval = 0;
4968 #endif
4969 
4970 	netif_device_detach(netdev);
4971 
4972 	if (netif_running(netdev)) {
4973 		WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags));
4974 		e1000_down(adapter);
4975 	}
4976 
4977 #ifdef CONFIG_PM
4978 	retval = pci_save_state(pdev);
4979 	if (retval)
4980 		return retval;
4981 #endif
4982 
4983 	status = er32(STATUS);
4984 	if (status & E1000_STATUS_LU)
4985 		wufc &= ~E1000_WUFC_LNKC;
4986 
4987 	if (wufc) {
4988 		e1000_setup_rctl(adapter);
4989 		e1000_set_rx_mode(netdev);
4990 
4991 		rctl = er32(RCTL);
4992 
4993 		/* turn on all-multi mode if wake on multicast is enabled */
4994 		if (wufc & E1000_WUFC_MC)
4995 			rctl |= E1000_RCTL_MPE;
4996 
4997 		/* enable receives in the hardware */
4998 		ew32(RCTL, rctl | E1000_RCTL_EN);
4999 
5000 		if (hw->mac_type >= e1000_82540) {
5001 			ctrl = er32(CTRL);
5002 			/* advertise wake from D3Cold */
5003 			#define E1000_CTRL_ADVD3WUC 0x00100000
5004 			/* phy power management enable */
5005 			#define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000
5006 			ctrl |= E1000_CTRL_ADVD3WUC |
5007 				E1000_CTRL_EN_PHY_PWR_MGMT;
5008 			ew32(CTRL, ctrl);
5009 		}
5010 
5011 		if (hw->media_type == e1000_media_type_fiber ||
5012 		    hw->media_type == e1000_media_type_internal_serdes) {
5013 			/* keep the laser running in D3 */
5014 			ctrl_ext = er32(CTRL_EXT);
5015 			ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA;
5016 			ew32(CTRL_EXT, ctrl_ext);
5017 		}
5018 
5019 		ew32(WUC, E1000_WUC_PME_EN);
5020 		ew32(WUFC, wufc);
5021 	} else {
5022 		ew32(WUC, 0);
5023 		ew32(WUFC, 0);
5024 	}
5025 
5026 	e1000_release_manageability(adapter);
5027 
5028 	*enable_wake = !!wufc;
5029 
5030 	/* make sure adapter isn't asleep if manageability is enabled */
5031 	if (adapter->en_mng_pt)
5032 		*enable_wake = true;
5033 
5034 	if (netif_running(netdev))
5035 		e1000_free_irq(adapter);
5036 
5037 	pci_disable_device(pdev);
5038 
5039 	return 0;
5040 }
5041 
5042 #ifdef CONFIG_PM
5043 static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
5044 {
5045 	int retval;
5046 	bool wake;
5047 
5048 	retval = __e1000_shutdown(pdev, &wake);
5049 	if (retval)
5050 		return retval;
5051 
5052 	if (wake) {
5053 		pci_prepare_to_sleep(pdev);
5054 	} else {
5055 		pci_wake_from_d3(pdev, false);
5056 		pci_set_power_state(pdev, PCI_D3hot);
5057 	}
5058 
5059 	return 0;
5060 }
5061 
5062 static int e1000_resume(struct pci_dev *pdev)
5063 {
5064 	struct net_device *netdev = pci_get_drvdata(pdev);
5065 	struct e1000_adapter *adapter = netdev_priv(netdev);
5066 	struct e1000_hw *hw = &adapter->hw;
5067 	u32 err;
5068 
5069 	pci_set_power_state(pdev, PCI_D0);
5070 	pci_restore_state(pdev);
5071 	pci_save_state(pdev);
5072 
5073 	if (adapter->need_ioport)
5074 		err = pci_enable_device(pdev);
5075 	else
5076 		err = pci_enable_device_mem(pdev);
5077 	if (err) {
5078 		pr_err("Cannot enable PCI device from suspend\n");
5079 		return err;
5080 	}
5081 	pci_set_master(pdev);
5082 
5083 	pci_enable_wake(pdev, PCI_D3hot, 0);
5084 	pci_enable_wake(pdev, PCI_D3cold, 0);
5085 
5086 	if (netif_running(netdev)) {
5087 		err = e1000_request_irq(adapter);
5088 		if (err)
5089 			return err;
5090 	}
5091 
5092 	e1000_power_up_phy(adapter);
5093 	e1000_reset(adapter);
5094 	ew32(WUS, ~0);
5095 
5096 	e1000_init_manageability(adapter);
5097 
5098 	if (netif_running(netdev))
5099 		e1000_up(adapter);
5100 
5101 	netif_device_attach(netdev);
5102 
5103 	return 0;
5104 }
5105 #endif
5106 
5107 static void e1000_shutdown(struct pci_dev *pdev)
5108 {
5109 	bool wake;
5110 
5111 	__e1000_shutdown(pdev, &wake);
5112 
5113 	if (system_state == SYSTEM_POWER_OFF) {
5114 		pci_wake_from_d3(pdev, wake);
5115 		pci_set_power_state(pdev, PCI_D3hot);
5116 	}
5117 }
5118 
5119 #ifdef CONFIG_NET_POLL_CONTROLLER
5120 /* Polling 'interrupt' - used by things like netconsole to send skbs
5121  * without having to re-enable interrupts. It's not called while
5122  * the interrupt routine is executing.
5123  */
5124 static void e1000_netpoll(struct net_device *netdev)
5125 {
5126 	struct e1000_adapter *adapter = netdev_priv(netdev);
5127 
5128 	disable_irq(adapter->pdev->irq);
5129 	e1000_intr(adapter->pdev->irq, netdev);
5130 	enable_irq(adapter->pdev->irq);
5131 }
5132 #endif
5133 
5134 /**
5135  * e1000_io_error_detected - called when PCI error is detected
5136  * @pdev: Pointer to PCI device
5137  * @state: The current pci connection state
5138  *
5139  * This function is called after a PCI bus error affecting
5140  * this device has been detected.
5141  */
5142 static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev,
5143 						pci_channel_state_t state)
5144 {
5145 	struct net_device *netdev = pci_get_drvdata(pdev);
5146 	struct e1000_adapter *adapter = netdev_priv(netdev);
5147 
5148 	netif_device_detach(netdev);
5149 
5150 	if (state == pci_channel_io_perm_failure)
5151 		return PCI_ERS_RESULT_DISCONNECT;
5152 
5153 	if (netif_running(netdev))
5154 		e1000_down(adapter);
5155 	pci_disable_device(pdev);
5156 
5157 	/* Request a slot slot reset. */
5158 	return PCI_ERS_RESULT_NEED_RESET;
5159 }
5160 
5161 /**
5162  * e1000_io_slot_reset - called after the pci bus has been reset.
5163  * @pdev: Pointer to PCI device
5164  *
5165  * Restart the card from scratch, as if from a cold-boot. Implementation
5166  * resembles the first-half of the e1000_resume routine.
5167  */
5168 static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev)
5169 {
5170 	struct net_device *netdev = pci_get_drvdata(pdev);
5171 	struct e1000_adapter *adapter = netdev_priv(netdev);
5172 	struct e1000_hw *hw = &adapter->hw;
5173 	int err;
5174 
5175 	if (adapter->need_ioport)
5176 		err = pci_enable_device(pdev);
5177 	else
5178 		err = pci_enable_device_mem(pdev);
5179 	if (err) {
5180 		pr_err("Cannot re-enable PCI device after reset.\n");
5181 		return PCI_ERS_RESULT_DISCONNECT;
5182 	}
5183 	pci_set_master(pdev);
5184 
5185 	pci_enable_wake(pdev, PCI_D3hot, 0);
5186 	pci_enable_wake(pdev, PCI_D3cold, 0);
5187 
5188 	e1000_reset(adapter);
5189 	ew32(WUS, ~0);
5190 
5191 	return PCI_ERS_RESULT_RECOVERED;
5192 }
5193 
5194 /**
5195  * e1000_io_resume - called when traffic can start flowing again.
5196  * @pdev: Pointer to PCI device
5197  *
5198  * This callback is called when the error recovery driver tells us that
5199  * its OK to resume normal operation. Implementation resembles the
5200  * second-half of the e1000_resume routine.
5201  */
5202 static void e1000_io_resume(struct pci_dev *pdev)
5203 {
5204 	struct net_device *netdev = pci_get_drvdata(pdev);
5205 	struct e1000_adapter *adapter = netdev_priv(netdev);
5206 
5207 	e1000_init_manageability(adapter);
5208 
5209 	if (netif_running(netdev)) {
5210 		if (e1000_up(adapter)) {
5211 			pr_info("can't bring device back up after reset\n");
5212 			return;
5213 		}
5214 	}
5215 
5216 	netif_device_attach(netdev);
5217 }
5218 
5219 /* e1000_main.c */
5220