aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/intel/e1000e/80003es2lan.c66
-rw-r--r--drivers/net/ethernet/intel/e1000e/82571.c115
-rw-r--r--drivers/net/ethernet/intel/e1000e/defines.h27
-rw-r--r--drivers/net/ethernet/intel/e1000e/e1000.h17
-rw-r--r--drivers/net/ethernet/intel/e1000e/ethtool.c69
-rw-r--r--drivers/net/ethernet/intel/e1000e/hw.h6
-rw-r--r--drivers/net/ethernet/intel/e1000e/ich8lan.c243
-rw-r--r--drivers/net/ethernet/intel/e1000e/mac.c135
-rw-r--r--drivers/net/ethernet/intel/e1000e/manage.c9
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c313
-rw-r--r--drivers/net/ethernet/intel/e1000e/nvm.c15
-rw-r--r--drivers/net/ethernet/intel/e1000e/param.c50
-rw-r--r--drivers/net/ethernet/intel/e1000e/phy.c141
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_82575.c49
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_defines.h7
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_i210.c275
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_i210.h6
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_mac.c124
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_nvm.c28
-rw-r--r--drivers/net/ethernet/intel/igb/igb.h2
-rw-r--r--drivers/net/ethernet/intel/igb/igb_ethtool.c14
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c83
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c13
-rw-r--r--drivers/net/ethernet/myricom/Kconfig1
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c275
25 files changed, 897 insertions, 1186 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/80003es2lan.c b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
index 4dd18a1f45d2..e73c2c355993 100644
--- a/drivers/net/ethernet/intel/e1000e/80003es2lan.c
+++ b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
@@ -26,8 +26,7 @@
26 26
27*******************************************************************************/ 27*******************************************************************************/
28 28
29/* 29/* 80003ES2LAN Gigabit Ethernet Controller (Copper)
30 * 80003ES2LAN Gigabit Ethernet Controller (Copper)
31 * 80003ES2LAN Gigabit Ethernet Controller (Serdes) 30 * 80003ES2LAN Gigabit Ethernet Controller (Serdes)
32 */ 31 */
33 32
@@ -80,7 +79,8 @@
80 1 = 50-80M 79 1 = 50-80M
81 2 = 80-110M 80 2 = 80-110M
82 3 = 110-140M 81 3 = 110-140M
83 4 = >140M */ 82 4 = >140M
83 */
84 84
85/* Kumeran Mode Control Register (Page 193, Register 16) */ 85/* Kumeran Mode Control Register (Page 193, Register 16) */
86#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800 86#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800
@@ -95,8 +95,7 @@
95/* In-Band Control Register (Page 194, Register 18) */ 95/* In-Band Control Register (Page 194, Register 18) */
96#define GG82563_ICR_DIS_PADDING 0x0010 /* Disable Padding */ 96#define GG82563_ICR_DIS_PADDING 0x0010 /* Disable Padding */
97 97
98/* 98/* A table for the GG82563 cable length where the range is defined
99 * A table for the GG82563 cable length where the range is defined
100 * with a lower bound at "index" and the upper bound at 99 * with a lower bound at "index" and the upper bound at
101 * "index + 5". 100 * "index + 5".
102 */ 101 */
@@ -183,8 +182,7 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
183 size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >> 182 size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
184 E1000_EECD_SIZE_EX_SHIFT); 183 E1000_EECD_SIZE_EX_SHIFT);
185 184
186 /* 185 /* Added to a constant, "size" becomes the left-shift value
187 * Added to a constant, "size" becomes the left-shift value
188 * for setting word_size. 186 * for setting word_size.
189 */ 187 */
190 size += NVM_WORD_SIZE_BASE_SHIFT; 188 size += NVM_WORD_SIZE_BASE_SHIFT;
@@ -375,8 +373,7 @@ static s32 e1000_acquire_swfw_sync_80003es2lan(struct e1000_hw *hw, u16 mask)
375 if (!(swfw_sync & (fwmask | swmask))) 373 if (!(swfw_sync & (fwmask | swmask)))
376 break; 374 break;
377 375
378 /* 376 /* Firmware currently using resource (fwmask)
379 * Firmware currently using resource (fwmask)
380 * or other software thread using resource (swmask) 377 * or other software thread using resource (swmask)
381 */ 378 */
382 e1000e_put_hw_semaphore(hw); 379 e1000e_put_hw_semaphore(hw);
@@ -442,8 +439,7 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
442 if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) { 439 if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {
443 page_select = GG82563_PHY_PAGE_SELECT; 440 page_select = GG82563_PHY_PAGE_SELECT;
444 } else { 441 } else {
445 /* 442 /* Use Alternative Page Select register to access
446 * Use Alternative Page Select register to access
447 * registers 30 and 31 443 * registers 30 and 31
448 */ 444 */
449 page_select = GG82563_PHY_PAGE_SELECT_ALT; 445 page_select = GG82563_PHY_PAGE_SELECT_ALT;
@@ -457,8 +453,7 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
457 } 453 }
458 454
459 if (hw->dev_spec.e80003es2lan.mdic_wa_enable) { 455 if (hw->dev_spec.e80003es2lan.mdic_wa_enable) {
460 /* 456 /* The "ready" bit in the MDIC register may be incorrectly set
461 * The "ready" bit in the MDIC register may be incorrectly set
462 * before the device has completed the "Page Select" MDI 457 * before the device has completed the "Page Select" MDI
463 * transaction. So we wait 200us after each MDI command... 458 * transaction. So we wait 200us after each MDI command...
464 */ 459 */
@@ -513,8 +508,7 @@ static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
513 if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) { 508 if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {
514 page_select = GG82563_PHY_PAGE_SELECT; 509 page_select = GG82563_PHY_PAGE_SELECT;
515 } else { 510 } else {
516 /* 511 /* Use Alternative Page Select register to access
517 * Use Alternative Page Select register to access
518 * registers 30 and 31 512 * registers 30 and 31
519 */ 513 */
520 page_select = GG82563_PHY_PAGE_SELECT_ALT; 514 page_select = GG82563_PHY_PAGE_SELECT_ALT;
@@ -528,8 +522,7 @@ static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
528 } 522 }
529 523
530 if (hw->dev_spec.e80003es2lan.mdic_wa_enable) { 524 if (hw->dev_spec.e80003es2lan.mdic_wa_enable) {
531 /* 525 /* The "ready" bit in the MDIC register may be incorrectly set
532 * The "ready" bit in the MDIC register may be incorrectly set
533 * before the device has completed the "Page Select" MDI 526 * before the device has completed the "Page Select" MDI
534 * transaction. So we wait 200us after each MDI command... 527 * transaction. So we wait 200us after each MDI command...
535 */ 528 */
@@ -618,8 +611,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
618 u16 phy_data; 611 u16 phy_data;
619 bool link; 612 bool link;
620 613
621 /* 614 /* Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI
622 * Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI
623 * forced whenever speed and duplex are forced. 615 * forced whenever speed and duplex are forced.
624 */ 616 */
625 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); 617 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
@@ -657,8 +649,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
657 return ret_val; 649 return ret_val;
658 650
659 if (!link) { 651 if (!link) {
660 /* 652 /* We didn't get link.
661 * We didn't get link.
662 * Reset the DSP and cross our fingers. 653 * Reset the DSP and cross our fingers.
663 */ 654 */
664 ret_val = e1000e_phy_reset_dsp(hw); 655 ret_val = e1000e_phy_reset_dsp(hw);
@@ -677,8 +668,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
677 if (ret_val) 668 if (ret_val)
678 return ret_val; 669 return ret_val;
679 670
680 /* 671 /* Resetting the phy means we need to verify the TX_CLK corresponds
681 * Resetting the phy means we need to verify the TX_CLK corresponds
682 * to the link speed. 10Mbps -> 2.5MHz, else 25MHz. 672 * to the link speed. 10Mbps -> 2.5MHz, else 25MHz.
683 */ 673 */
684 phy_data &= ~GG82563_MSCR_TX_CLK_MASK; 674 phy_data &= ~GG82563_MSCR_TX_CLK_MASK;
@@ -687,8 +677,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
687 else 677 else
688 phy_data |= GG82563_MSCR_TX_CLK_100MBPS_25; 678 phy_data |= GG82563_MSCR_TX_CLK_100MBPS_25;
689 679
690 /* 680 /* In addition, we must re-enable CRS on Tx for both half and full
691 * In addition, we must re-enable CRS on Tx for both half and full
692 * duplex. 681 * duplex.
693 */ 682 */
694 phy_data |= GG82563_MSCR_ASSERT_CRS_ON_TX; 683 phy_data |= GG82563_MSCR_ASSERT_CRS_ON_TX;
@@ -766,8 +755,7 @@ static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw)
766 s32 ret_val; 755 s32 ret_val;
767 u16 kum_reg_data; 756 u16 kum_reg_data;
768 757
769 /* 758 /* Prevent the PCI-E bus from sticking if there is no TLP connection
770 * Prevent the PCI-E bus from sticking if there is no TLP connection
771 * on the last TLP read/write transaction when MAC is reset. 759 * on the last TLP read/write transaction when MAC is reset.
772 */ 760 */
773 ret_val = e1000e_disable_pcie_master(hw); 761 ret_val = e1000e_disable_pcie_master(hw);
@@ -899,8 +887,7 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)
899 hw->dev_spec.e80003es2lan.mdic_wa_enable = false; 887 hw->dev_spec.e80003es2lan.mdic_wa_enable = false;
900 } 888 }
901 889
902 /* 890 /* Clear all of the statistics registers (clear on read). It is
903 * Clear all of the statistics registers (clear on read). It is
904 * important that we do this after we have tried to establish link 891 * important that we do this after we have tried to establish link
905 * because the symbol error count will increment wildly if there 892 * because the symbol error count will increment wildly if there
906 * is no link. 893 * is no link.
@@ -945,8 +932,7 @@ static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw)
945 reg |= (1 << 28); 932 reg |= (1 << 28);
946 ew32(TARC(1), reg); 933 ew32(TARC(1), reg);
947 934
948 /* 935 /* Disable IPv6 extension header parsing because some malformed
949 * Disable IPv6 extension header parsing because some malformed
950 * IPv6 headers can hang the Rx. 936 * IPv6 headers can hang the Rx.
951 */ 937 */
952 reg = er32(RFCTL); 938 reg = er32(RFCTL);
@@ -979,8 +965,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
979 if (ret_val) 965 if (ret_val)
980 return ret_val; 966 return ret_val;
981 967
982 /* 968 /* Options:
983 * Options:
984 * MDI/MDI-X = 0 (default) 969 * MDI/MDI-X = 0 (default)
985 * 0 - Auto for all speeds 970 * 0 - Auto for all speeds
986 * 1 - MDI mode 971 * 1 - MDI mode
@@ -1006,8 +991,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
1006 break; 991 break;
1007 } 992 }
1008 993
1009 /* 994 /* Options:
1010 * Options:
1011 * disable_polarity_correction = 0 (default) 995 * disable_polarity_correction = 0 (default)
1012 * Automatic Correction for Reversed Cable Polarity 996 * Automatic Correction for Reversed Cable Polarity
1013 * 0 - Disabled 997 * 0 - Disabled
@@ -1065,8 +1049,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
1065 if (ret_val) 1049 if (ret_val)
1066 return ret_val; 1050 return ret_val;
1067 1051
1068 /* 1052 /* Do not init these registers when the HW is in IAMT mode, since the
1069 * Do not init these registers when the HW is in IAMT mode, since the
1070 * firmware will have already initialized them. We only initialize 1053 * firmware will have already initialized them. We only initialize
1071 * them if the HW is not in IAMT mode. 1054 * them if the HW is not in IAMT mode.
1072 */ 1055 */
@@ -1087,8 +1070,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
1087 return ret_val; 1070 return ret_val;
1088 } 1071 }
1089 1072
1090 /* 1073 /* Workaround: Disable padding in Kumeran interface in the MAC
1091 * Workaround: Disable padding in Kumeran interface in the MAC
1092 * and in the PHY to avoid CRC errors. 1074 * and in the PHY to avoid CRC errors.
1093 */ 1075 */
1094 ret_val = e1e_rphy(hw, GG82563_PHY_INBAND_CTRL, &data); 1076 ret_val = e1e_rphy(hw, GG82563_PHY_INBAND_CTRL, &data);
@@ -1121,8 +1103,7 @@ static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw)
1121 ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX); 1103 ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
1122 ew32(CTRL, ctrl); 1104 ew32(CTRL, ctrl);
1123 1105
1124 /* 1106 /* Set the mac to wait the maximum time between each
1125 * Set the mac to wait the maximum time between each
1126 * iteration and increase the max iterations when 1107 * iteration and increase the max iterations when
1127 * polling the phy; this fixes erroneous timeouts at 10Mbps. 1108 * polling the phy; this fixes erroneous timeouts at 10Mbps.
1128 */ 1109 */
@@ -1352,8 +1333,7 @@ static s32 e1000_read_mac_addr_80003es2lan(struct e1000_hw *hw)
1352{ 1333{
1353 s32 ret_val = 0; 1334 s32 ret_val = 0;
1354 1335
1355 /* 1336 /* If there's an alternate MAC address place it in RAR0
1356 * If there's an alternate MAC address place it in RAR0
1357 * so that it will override the Si installed default perm 1337 * so that it will override the Si installed default perm
1358 * address. 1338 * address.
1359 */ 1339 */
diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
index c98586408005..c77d010d5c59 100644
--- a/drivers/net/ethernet/intel/e1000e/82571.c
+++ b/drivers/net/ethernet/intel/e1000e/82571.c
@@ -26,8 +26,7 @@
26 26
27*******************************************************************************/ 27*******************************************************************************/
28 28
29/* 29/* 82571EB Gigabit Ethernet Controller
30 * 82571EB Gigabit Ethernet Controller
31 * 82571EB Gigabit Ethernet Controller (Copper) 30 * 82571EB Gigabit Ethernet Controller (Copper)
32 * 82571EB Gigabit Ethernet Controller (Fiber) 31 * 82571EB Gigabit Ethernet Controller (Fiber)
33 * 82571EB Dual Port Gigabit Mezzanine Adapter 32 * 82571EB Dual Port Gigabit Mezzanine Adapter
@@ -191,8 +190,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
191 if (((eecd >> 15) & 0x3) == 0x3) { 190 if (((eecd >> 15) & 0x3) == 0x3) {
192 nvm->type = e1000_nvm_flash_hw; 191 nvm->type = e1000_nvm_flash_hw;
193 nvm->word_size = 2048; 192 nvm->word_size = 2048;
194 /* 193 /* Autonomous Flash update bit must be cleared due
195 * Autonomous Flash update bit must be cleared due
196 * to Flash update issue. 194 * to Flash update issue.
197 */ 195 */
198 eecd &= ~E1000_EECD_AUPDEN; 196 eecd &= ~E1000_EECD_AUPDEN;
@@ -204,8 +202,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
204 nvm->type = e1000_nvm_eeprom_spi; 202 nvm->type = e1000_nvm_eeprom_spi;
205 size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >> 203 size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
206 E1000_EECD_SIZE_EX_SHIFT); 204 E1000_EECD_SIZE_EX_SHIFT);
207 /* 205 /* Added to a constant, "size" becomes the left-shift value
208 * Added to a constant, "size" becomes the left-shift value
209 * for setting word_size. 206 * for setting word_size.
210 */ 207 */
211 size += NVM_WORD_SIZE_BASE_SHIFT; 208 size += NVM_WORD_SIZE_BASE_SHIFT;
@@ -291,8 +288,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
291 288
292 /* FWSM register */ 289 /* FWSM register */
293 mac->has_fwsm = true; 290 mac->has_fwsm = true;
294 /* 291 /* ARC supported; valid only if manageability features are
295 * ARC supported; valid only if manageability features are
296 * enabled. 292 * enabled.
297 */ 293 */
298 mac->arc_subsystem_valid = !!(er32(FWSM) & 294 mac->arc_subsystem_valid = !!(er32(FWSM) &
@@ -314,8 +310,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
314 break; 310 break;
315 } 311 }
316 312
317 /* 313 /* Ensure that the inter-port SWSM.SMBI lock bit is clear before
318 * Ensure that the inter-port SWSM.SMBI lock bit is clear before
319 * first NVM or PHY access. This should be done for single-port 314 * first NVM or PHY access. This should be done for single-port
320 * devices, and for one port only on dual-port devices so that 315 * devices, and for one port only on dual-port devices so that
321 * for those devices we can still use the SMBI lock to synchronize 316 * for those devices we can still use the SMBI lock to synchronize
@@ -352,11 +347,8 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
352 ew32(SWSM, swsm & ~E1000_SWSM_SMBI); 347 ew32(SWSM, swsm & ~E1000_SWSM_SMBI);
353 } 348 }
354 349
355 /* 350 /* Initialize device specific counter of SMBI acquisition timeouts. */
356 * Initialize device specific counter of SMBI acquisition 351 hw->dev_spec.e82571.smb_counter = 0;
357 * timeouts.
358 */
359 hw->dev_spec.e82571.smb_counter = 0;
360 352
361 return 0; 353 return 0;
362} 354}
@@ -445,8 +437,7 @@ static s32 e1000_get_phy_id_82571(struct e1000_hw *hw)
445 switch (hw->mac.type) { 437 switch (hw->mac.type) {
446 case e1000_82571: 438 case e1000_82571:
447 case e1000_82572: 439 case e1000_82572:
448 /* 440 /* The 82571 firmware may still be configuring the PHY.
449 * The 82571 firmware may still be configuring the PHY.
450 * In this case, we cannot access the PHY until the 441 * In this case, we cannot access the PHY until the
451 * configuration is done. So we explicitly set the 442 * configuration is done. So we explicitly set the
452 * PHY ID. 443 * PHY ID.
@@ -492,8 +483,7 @@ static s32 e1000_get_hw_semaphore_82571(struct e1000_hw *hw)
492 s32 fw_timeout = hw->nvm.word_size + 1; 483 s32 fw_timeout = hw->nvm.word_size + 1;
493 s32 i = 0; 484 s32 i = 0;
494 485
495 /* 486 /* If we have timedout 3 times on trying to acquire
496 * If we have timedout 3 times on trying to acquire
497 * the inter-port SMBI semaphore, there is old code 487 * the inter-port SMBI semaphore, there is old code
498 * operating on the other port, and it is not 488 * operating on the other port, and it is not
499 * releasing SMBI. Modify the number of times that 489 * releasing SMBI. Modify the number of times that
@@ -787,8 +777,7 @@ static s32 e1000_update_nvm_checksum_82571(struct e1000_hw *hw)
787 if (ret_val) 777 if (ret_val)
788 return ret_val; 778 return ret_val;
789 779
790 /* 780 /* If our nvm is an EEPROM, then we're done
791 * If our nvm is an EEPROM, then we're done
792 * otherwise, commit the checksum to the flash NVM. 781 * otherwise, commit the checksum to the flash NVM.
793 */ 782 */
794 if (hw->nvm.type != e1000_nvm_flash_hw) 783 if (hw->nvm.type != e1000_nvm_flash_hw)
@@ -806,8 +795,7 @@ static s32 e1000_update_nvm_checksum_82571(struct e1000_hw *hw)
806 795
807 /* Reset the firmware if using STM opcode. */ 796 /* Reset the firmware if using STM opcode. */
808 if ((er32(FLOP) & 0xFF00) == E1000_STM_OPCODE) { 797 if ((er32(FLOP) & 0xFF00) == E1000_STM_OPCODE) {
809 /* 798 /* The enabling of and the actual reset must be done
810 * The enabling of and the actual reset must be done
811 * in two write cycles. 799 * in two write cycles.
812 */ 800 */
813 ew32(HICR, E1000_HICR_FW_RESET_ENABLE); 801 ew32(HICR, E1000_HICR_FW_RESET_ENABLE);
@@ -867,8 +855,7 @@ static s32 e1000_write_nvm_eewr_82571(struct e1000_hw *hw, u16 offset,
867 u32 i, eewr = 0; 855 u32 i, eewr = 0;
868 s32 ret_val = 0; 856 s32 ret_val = 0;
869 857
870 /* 858 /* A check for invalid values: offset too large, too many words,
871 * A check for invalid values: offset too large, too many words,
872 * and not enough words. 859 * and not enough words.
873 */ 860 */
874 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) || 861 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) ||
@@ -957,8 +944,7 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active)
957 } else { 944 } else {
958 data &= ~IGP02E1000_PM_D0_LPLU; 945 data &= ~IGP02E1000_PM_D0_LPLU;
959 ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data); 946 ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data);
960 /* 947 /* LPLU and SmartSpeed are mutually exclusive. LPLU is used
961 * LPLU and SmartSpeed are mutually exclusive. LPLU is used
962 * during Dx states where the power conservation is most 948 * during Dx states where the power conservation is most
963 * important. During driver activity we should enable 949 * important. During driver activity we should enable
964 * SmartSpeed, so performance is maintained. 950 * SmartSpeed, so performance is maintained.
@@ -1002,8 +988,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
1002 u32 ctrl, ctrl_ext, eecd, tctl; 988 u32 ctrl, ctrl_ext, eecd, tctl;
1003 s32 ret_val; 989 s32 ret_val;
1004 990
1005 /* 991 /* Prevent the PCI-E bus from sticking if there is no TLP connection
1006 * Prevent the PCI-E bus from sticking if there is no TLP connection
1007 * on the last TLP read/write transaction when MAC is reset. 992 * on the last TLP read/write transaction when MAC is reset.
1008 */ 993 */
1009 ret_val = e1000e_disable_pcie_master(hw); 994 ret_val = e1000e_disable_pcie_master(hw);
@@ -1021,8 +1006,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
1021 1006
1022 usleep_range(10000, 20000); 1007 usleep_range(10000, 20000);
1023 1008
1024 /* 1009 /* Must acquire the MDIO ownership before MAC reset.
1025 * Must acquire the MDIO ownership before MAC reset.
1026 * Ownership defaults to firmware after a reset. 1010 * Ownership defaults to firmware after a reset.
1027 */ 1011 */
1028 switch (hw->mac.type) { 1012 switch (hw->mac.type) {
@@ -1067,8 +1051,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
1067 /* We don't want to continue accessing MAC registers. */ 1051 /* We don't want to continue accessing MAC registers. */
1068 return ret_val; 1052 return ret_val;
1069 1053
1070 /* 1054 /* Phy configuration from NVM just starts after EECD_AUTO_RD is set.
1071 * Phy configuration from NVM just starts after EECD_AUTO_RD is set.
1072 * Need to wait for Phy configuration completion before accessing 1055 * Need to wait for Phy configuration completion before accessing
1073 * NVM and Phy. 1056 * NVM and Phy.
1074 */ 1057 */
@@ -1076,8 +1059,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
1076 switch (hw->mac.type) { 1059 switch (hw->mac.type) {
1077 case e1000_82571: 1060 case e1000_82571:
1078 case e1000_82572: 1061 case e1000_82572:
1079 /* 1062 /* REQ and GNT bits need to be cleared when using AUTO_RD
1080 * REQ and GNT bits need to be cleared when using AUTO_RD
1081 * to access the EEPROM. 1063 * to access the EEPROM.
1082 */ 1064 */
1083 eecd = er32(EECD); 1065 eecd = er32(EECD);
@@ -1138,8 +1120,7 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)
1138 e_dbg("Initializing the IEEE VLAN\n"); 1120 e_dbg("Initializing the IEEE VLAN\n");
1139 mac->ops.clear_vfta(hw); 1121 mac->ops.clear_vfta(hw);
1140 1122
1141 /* Setup the receive address. */ 1123 /* Setup the receive address.
1142 /*
1143 * If, however, a locally administered address was assigned to the 1124 * If, however, a locally administered address was assigned to the
1144 * 82571, we must reserve a RAR for it to work around an issue where 1125 * 82571, we must reserve a RAR for it to work around an issue where
1145 * resetting one port will reload the MAC on the other port. 1126 * resetting one port will reload the MAC on the other port.
@@ -1183,8 +1164,7 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)
1183 break; 1164 break;
1184 } 1165 }
1185 1166
1186 /* 1167 /* Clear all of the statistics registers (clear on read). It is
1187 * Clear all of the statistics registers (clear on read). It is
1188 * important that we do this after we have tried to establish link 1168 * important that we do this after we have tried to establish link
1189 * because the symbol error count will increment wildly if there 1169 * because the symbol error count will increment wildly if there
1190 * is no link. 1170 * is no link.
@@ -1281,8 +1261,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
1281 ew32(PBA_ECC, reg); 1261 ew32(PBA_ECC, reg);
1282 } 1262 }
1283 1263
1284 /* 1264 /* Workaround for hardware errata.
1285 * Workaround for hardware errata.
1286 * Ensure that DMA Dynamic Clock gating is disabled on 82571 and 82572 1265 * Ensure that DMA Dynamic Clock gating is disabled on 82571 and 82572
1287 */ 1266 */
1288 if ((hw->mac.type == e1000_82571) || (hw->mac.type == e1000_82572)) { 1267 if ((hw->mac.type == e1000_82571) || (hw->mac.type == e1000_82572)) {
@@ -1291,8 +1270,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
1291 ew32(CTRL_EXT, reg); 1270 ew32(CTRL_EXT, reg);
1292 } 1271 }
1293 1272
1294 /* 1273 /* Disable IPv6 extension header parsing because some malformed
1295 * Disable IPv6 extension header parsing because some malformed
1296 * IPv6 headers can hang the Rx. 1274 * IPv6 headers can hang the Rx.
1297 */ 1275 */
1298 if (hw->mac.type <= e1000_82573) { 1276 if (hw->mac.type <= e1000_82573) {
@@ -1309,8 +1287,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
1309 reg |= (1 << 22); 1287 reg |= (1 << 22);
1310 ew32(GCR, reg); 1288 ew32(GCR, reg);
1311 1289
1312 /* 1290 /* Workaround for hardware errata.
1313 * Workaround for hardware errata.
1314 * apply workaround for hardware errata documented in errata 1291 * apply workaround for hardware errata documented in errata
1315 * docs Fixes issue where some error prone or unreliable PCIe 1292 * docs Fixes issue where some error prone or unreliable PCIe
1316 * completions are occurring, particularly with ASPM enabled. 1293 * completions are occurring, particularly with ASPM enabled.
@@ -1344,8 +1321,7 @@ static void e1000_clear_vfta_82571(struct e1000_hw *hw)
1344 case e1000_82574: 1321 case e1000_82574:
1345 case e1000_82583: 1322 case e1000_82583:
1346 if (hw->mng_cookie.vlan_id != 0) { 1323 if (hw->mng_cookie.vlan_id != 0) {
1347 /* 1324 /* The VFTA is a 4096b bit-field, each identifying
1348 * The VFTA is a 4096b bit-field, each identifying
1349 * a single VLAN ID. The following operations 1325 * a single VLAN ID. The following operations
1350 * determine which 32b entry (i.e. offset) into the 1326 * determine which 32b entry (i.e. offset) into the
1351 * array we want to set the VLAN ID (i.e. bit) of 1327 * array we want to set the VLAN ID (i.e. bit) of
@@ -1362,8 +1338,7 @@ static void e1000_clear_vfta_82571(struct e1000_hw *hw)
1362 break; 1338 break;
1363 } 1339 }
1364 for (offset = 0; offset < E1000_VLAN_FILTER_TBL_SIZE; offset++) { 1340 for (offset = 0; offset < E1000_VLAN_FILTER_TBL_SIZE; offset++) {
1365 /* 1341 /* If the offset we want to clear is the same offset of the
1366 * If the offset we want to clear is the same offset of the
1367 * manageability VLAN ID, then clear all bits except that of 1342 * manageability VLAN ID, then clear all bits except that of
1368 * the manageability unit. 1343 * the manageability unit.
1369 */ 1344 */
@@ -1401,8 +1376,7 @@ static s32 e1000_led_on_82574(struct e1000_hw *hw)
1401 1376
1402 ctrl = hw->mac.ledctl_mode2; 1377 ctrl = hw->mac.ledctl_mode2;
1403 if (!(E1000_STATUS_LU & er32(STATUS))) { 1378 if (!(E1000_STATUS_LU & er32(STATUS))) {
1404 /* 1379 /* If no link, then turn LED on by setting the invert bit
1405 * If no link, then turn LED on by setting the invert bit
1406 * for each LED that's "on" (0x0E) in ledctl_mode2. 1380 * for each LED that's "on" (0x0E) in ledctl_mode2.
1407 */ 1381 */
1408 for (i = 0; i < 4; i++) 1382 for (i = 0; i < 4; i++)
@@ -1427,8 +1401,7 @@ bool e1000_check_phy_82574(struct e1000_hw *hw)
1427 u16 receive_errors = 0; 1401 u16 receive_errors = 0;
1428 s32 ret_val = 0; 1402 s32 ret_val = 0;
1429 1403
1430 /* 1404 /* Read PHY Receive Error counter first, if its is max - all F's then
1431 * Read PHY Receive Error counter first, if its is max - all F's then
1432 * read the Base1000T status register If both are max then PHY is hung. 1405 * read the Base1000T status register If both are max then PHY is hung.
1433 */ 1406 */
1434 ret_val = e1e_rphy(hw, E1000_RECEIVE_ERROR_COUNTER, &receive_errors); 1407 ret_val = e1e_rphy(hw, E1000_RECEIVE_ERROR_COUNTER, &receive_errors);
@@ -1458,8 +1431,7 @@ bool e1000_check_phy_82574(struct e1000_hw *hw)
1458 **/ 1431 **/
1459static s32 e1000_setup_link_82571(struct e1000_hw *hw) 1432static s32 e1000_setup_link_82571(struct e1000_hw *hw)
1460{ 1433{
1461 /* 1434 /* 82573 does not have a word in the NVM to determine
1462 * 82573 does not have a word in the NVM to determine
1463 * the default flow control setting, so we explicitly 1435 * the default flow control setting, so we explicitly
1464 * set it to full. 1436 * set it to full.
1465 */ 1437 */
@@ -1526,8 +1498,7 @@ static s32 e1000_setup_fiber_serdes_link_82571(struct e1000_hw *hw)
1526 switch (hw->mac.type) { 1498 switch (hw->mac.type) {
1527 case e1000_82571: 1499 case e1000_82571:
1528 case e1000_82572: 1500 case e1000_82572:
1529 /* 1501 /* If SerDes loopback mode is entered, there is no form
1530 * If SerDes loopback mode is entered, there is no form
1531 * of reset to take the adapter out of that mode. So we 1502 * of reset to take the adapter out of that mode. So we
1532 * have to explicitly take the adapter out of loopback 1503 * have to explicitly take the adapter out of loopback
1533 * mode. This prevents drivers from twiddling their thumbs 1504 * mode. This prevents drivers from twiddling their thumbs
@@ -1584,8 +1555,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1584 switch (mac->serdes_link_state) { 1555 switch (mac->serdes_link_state) {
1585 case e1000_serdes_link_autoneg_complete: 1556 case e1000_serdes_link_autoneg_complete:
1586 if (!(status & E1000_STATUS_LU)) { 1557 if (!(status & E1000_STATUS_LU)) {
1587 /* 1558 /* We have lost link, retry autoneg before
1588 * We have lost link, retry autoneg before
1589 * reporting link failure 1559 * reporting link failure
1590 */ 1560 */
1591 mac->serdes_link_state = 1561 mac->serdes_link_state =
@@ -1598,8 +1568,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1598 break; 1568 break;
1599 1569
1600 case e1000_serdes_link_forced_up: 1570 case e1000_serdes_link_forced_up:
1601 /* 1571 /* If we are receiving /C/ ordered sets, re-enable
1602 * If we are receiving /C/ ordered sets, re-enable
1603 * auto-negotiation in the TXCW register and disable 1572 * auto-negotiation in the TXCW register and disable
1604 * forced link in the Device Control register in an 1573 * forced link in the Device Control register in an
1605 * attempt to auto-negotiate with our link partner. 1574 * attempt to auto-negotiate with our link partner.
@@ -1619,8 +1588,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1619 1588
1620 case e1000_serdes_link_autoneg_progress: 1589 case e1000_serdes_link_autoneg_progress:
1621 if (rxcw & E1000_RXCW_C) { 1590 if (rxcw & E1000_RXCW_C) {
1622 /* 1591 /* We received /C/ ordered sets, meaning the
1623 * We received /C/ ordered sets, meaning the
1624 * link partner has autonegotiated, and we can 1592 * link partner has autonegotiated, and we can
1625 * trust the Link Up (LU) status bit. 1593 * trust the Link Up (LU) status bit.
1626 */ 1594 */
@@ -1636,8 +1604,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1636 e_dbg("AN_PROG -> DOWN\n"); 1604 e_dbg("AN_PROG -> DOWN\n");
1637 } 1605 }
1638 } else { 1606 } else {
1639 /* 1607 /* The link partner did not autoneg.
1640 * The link partner did not autoneg.
1641 * Force link up and full duplex, and change 1608 * Force link up and full duplex, and change
1642 * state to forced. 1609 * state to forced.
1643 */ 1610 */
@@ -1660,8 +1627,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1660 1627
1661 case e1000_serdes_link_down: 1628 case e1000_serdes_link_down:
1662 default: 1629 default:
1663 /* 1630 /* The link was down but the receiver has now gained
1664 * The link was down but the receiver has now gained
1665 * valid sync, so lets see if we can bring the link 1631 * valid sync, so lets see if we can bring the link
1666 * up. 1632 * up.
1667 */ 1633 */
@@ -1679,8 +1645,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1679 mac->serdes_link_state = e1000_serdes_link_down; 1645 mac->serdes_link_state = e1000_serdes_link_down;
1680 e_dbg("ANYSTATE -> DOWN\n"); 1646 e_dbg("ANYSTATE -> DOWN\n");
1681 } else { 1647 } else {
1682 /* 1648 /* Check several times, if SYNCH bit and CONFIG
1683 * Check several times, if SYNCH bit and CONFIG
1684 * bit both are consistently 1 then simply ignore 1649 * bit both are consistently 1 then simply ignore
1685 * the IV bit and restart Autoneg 1650 * the IV bit and restart Autoneg
1686 */ 1651 */
@@ -1780,8 +1745,7 @@ void e1000e_set_laa_state_82571(struct e1000_hw *hw, bool state)
1780 1745
1781 /* If workaround is activated... */ 1746 /* If workaround is activated... */
1782 if (state) 1747 if (state)
1783 /* 1748 /* Hold a copy of the LAA in RAR[14] This is done so that
1784 * Hold a copy of the LAA in RAR[14] This is done so that
1785 * between the time RAR[0] gets clobbered and the time it 1749 * between the time RAR[0] gets clobbered and the time it
1786 * gets fixed, the actual LAA is in one of the RARs and no 1750 * gets fixed, the actual LAA is in one of the RARs and no
1787 * incoming packets directed to this port are dropped. 1751 * incoming packets directed to this port are dropped.
@@ -1810,8 +1774,7 @@ static s32 e1000_fix_nvm_checksum_82571(struct e1000_hw *hw)
1810 if (nvm->type != e1000_nvm_flash_hw) 1774 if (nvm->type != e1000_nvm_flash_hw)
1811 return 0; 1775 return 0;
1812 1776
1813 /* 1777 /* Check bit 4 of word 10h. If it is 0, firmware is done updating
1814 * Check bit 4 of word 10h. If it is 0, firmware is done updating
1815 * 10h-12h. Checksum may need to be fixed. 1778 * 10h-12h. Checksum may need to be fixed.
1816 */ 1779 */
1817 ret_val = e1000_read_nvm(hw, 0x10, 1, &data); 1780 ret_val = e1000_read_nvm(hw, 0x10, 1, &data);
@@ -1819,8 +1782,7 @@ static s32 e1000_fix_nvm_checksum_82571(struct e1000_hw *hw)
1819 return ret_val; 1782 return ret_val;
1820 1783
1821 if (!(data & 0x10)) { 1784 if (!(data & 0x10)) {
1822 /* 1785 /* Read 0x23 and check bit 15. This bit is a 1
1823 * Read 0x23 and check bit 15. This bit is a 1
1824 * when the checksum has already been fixed. If 1786 * when the checksum has already been fixed. If
1825 * the checksum is still wrong and this bit is a 1787 * the checksum is still wrong and this bit is a
1826 * 1, we need to return bad checksum. Otherwise, 1788 * 1, we need to return bad checksum. Otherwise,
@@ -1852,8 +1814,7 @@ static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw)
1852 if (hw->mac.type == e1000_82571) { 1814 if (hw->mac.type == e1000_82571) {
1853 s32 ret_val = 0; 1815 s32 ret_val = 0;
1854 1816
1855 /* 1817 /* If there's an alternate MAC address place it in RAR0
1856 * If there's an alternate MAC address place it in RAR0
1857 * so that it will override the Si installed default perm 1818 * so that it will override the Si installed default perm
1858 * address. 1819 * address.
1859 */ 1820 */
diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index 76edbc1be33b..02a12b69555f 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -185,8 +185,7 @@
185#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */ 185#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */
186#define E1000_RCTL_SECRC 0x04000000 /* Strip Ethernet CRC */ 186#define E1000_RCTL_SECRC 0x04000000 /* Strip Ethernet CRC */
187 187
188/* 188/* Use byte values for the following shift parameters
189 * Use byte values for the following shift parameters
190 * Usage: 189 * Usage:
191 * psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) & 190 * psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) &
192 * E1000_PSRCTL_BSIZE0_MASK) | 191 * E1000_PSRCTL_BSIZE0_MASK) |
@@ -242,8 +241,7 @@
242#define E1000_CTRL_VME 0x40000000 /* IEEE VLAN mode enable */ 241#define E1000_CTRL_VME 0x40000000 /* IEEE VLAN mode enable */
243#define E1000_CTRL_PHY_RST 0x80000000 /* PHY Reset */ 242#define E1000_CTRL_PHY_RST 0x80000000 /* PHY Reset */
244 243
245/* 244/* Bit definitions for the Management Data IO (MDIO) and Management Data
246 * Bit definitions for the Management Data IO (MDIO) and Management Data
247 * Clock (MDC) pins in the Device Control Register. 245 * Clock (MDC) pins in the Device Control Register.
248 */ 246 */
249 247
@@ -424,8 +422,7 @@
424#define E1000_PBA_ECC_STAT_CLR 0x00000002 /* Clear ECC error counter */ 422#define E1000_PBA_ECC_STAT_CLR 0x00000002 /* Clear ECC error counter */
425#define E1000_PBA_ECC_INT_EN 0x00000004 /* Enable ICR bit 5 for ECC */ 423#define E1000_PBA_ECC_INT_EN 0x00000004 /* Enable ICR bit 5 for ECC */
426 424
427/* 425/* This defines the bits that are set in the Interrupt Mask
428 * This defines the bits that are set in the Interrupt Mask
429 * Set/Read Register. Each bit is documented below: 426 * Set/Read Register. Each bit is documented below:
430 * o RXT0 = Receiver Timer Interrupt (ring 0) 427 * o RXT0 = Receiver Timer Interrupt (ring 0)
431 * o TXDW = Transmit Descriptor Written Back 428 * o TXDW = Transmit Descriptor Written Back
@@ -475,8 +472,7 @@
475/* 802.1q VLAN Packet Size */ 472/* 802.1q VLAN Packet Size */
476#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */ 473#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */
477 474
478/* Receive Address */ 475/* Receive Address
479/*
480 * Number of high/low register pairs in the RAR. The RAR (Receive Address 476 * Number of high/low register pairs in the RAR. The RAR (Receive Address
481 * Registers) holds the directed and multicast addresses that we monitor. 477 * Registers) holds the directed and multicast addresses that we monitor.
482 * Technically, we have 16 spots. However, we reserve one of these spots 478 * Technically, we have 16 spots. However, we reserve one of these spots
@@ -723,8 +719,7 @@
723#define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */ 719#define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */
724#define MAX_PHY_MULTI_PAGE_REG 0xF 720#define MAX_PHY_MULTI_PAGE_REG 0xF
725 721
726/* Bit definitions for valid PHY IDs. */ 722/* Bit definitions for valid PHY IDs.
727/*
728 * I = Integrated 723 * I = Integrated
729 * E = External 724 * E = External
730 */ 725 */
@@ -762,8 +757,7 @@
762#define M88E1000_PSCR_AUTO_X_1000T 0x0040 757#define M88E1000_PSCR_AUTO_X_1000T 0x0040
763/* Auto crossover enabled all speeds */ 758/* Auto crossover enabled all speeds */
764#define M88E1000_PSCR_AUTO_X_MODE 0x0060 759#define M88E1000_PSCR_AUTO_X_MODE 0x0060
765/* 760/* 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold)
766 * 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold)
767 * 0=Normal 10BASE-T Rx Threshold 761 * 0=Normal 10BASE-T Rx Threshold
768 */ 762 */
769#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800 /* 1=Assert CRS on Transmit */ 763#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800 /* 1=Assert CRS on Transmit */
@@ -779,14 +773,12 @@
779 773
780#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7 774#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
781 775
782/* 776/* Number of times we will attempt to autonegotiate before downshifting if we
783 * Number of times we will attempt to autonegotiate before downshifting if we
784 * are the master 777 * are the master
785 */ 778 */
786#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00 779#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
787#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000 780#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000
788/* 781/* Number of times we will attempt to autonegotiate before downshifting if we
789 * Number of times we will attempt to autonegotiate before downshifting if we
790 * are the slave 782 * are the slave
791 */ 783 */
792#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300 784#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300
@@ -808,8 +800,7 @@
808#define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \ 800#define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \
809 ((reg) & MAX_PHY_REG_ADDRESS)) 801 ((reg) & MAX_PHY_REG_ADDRESS))
810 802
811/* 803/* Bits...
812 * Bits...
813 * 15-5: page 804 * 15-5: page
814 * 4-0: register offset 805 * 4-0: register offset
815 */ 806 */
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index 04668b47a1df..6782a2eea1bc 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -161,8 +161,7 @@ struct e1000_info;
161/* Time to wait before putting the device into D3 if there's no link (in ms). */ 161/* Time to wait before putting the device into D3 if there's no link (in ms). */
162#define LINK_TIMEOUT 100 162#define LINK_TIMEOUT 100
163 163
164/* 164/* Count for polling __E1000_RESET condition every 10-20msec.
165 * Count for polling __E1000_RESET condition every 10-20msec.
166 * Experimentation has shown the reset can take approximately 210msec. 165 * Experimentation has shown the reset can take approximately 210msec.
167 */ 166 */
168#define E1000_CHECK_RESET_COUNT 25 167#define E1000_CHECK_RESET_COUNT 25
@@ -172,8 +171,7 @@ struct e1000_info;
172#define BURST_RDTR 0x20 171#define BURST_RDTR 0x20
173#define BURST_RADV 0x20 172#define BURST_RADV 0x20
174 173
175/* 174/* in the case of WTHRESH, it appears at least the 82571/2 hardware
176 * in the case of WTHRESH, it appears at least the 82571/2 hardware
177 * writes back 4 descriptors when WTHRESH=5, and 3 descriptors when 175 * writes back 4 descriptors when WTHRESH=5, and 3 descriptors when
178 * WTHRESH=4, so a setting of 5 gives the most efficient bus 176 * WTHRESH=4, so a setting of 5 gives the most efficient bus
179 * utilization but to avoid possible Tx stalls, set it to 1 177 * utilization but to avoid possible Tx stalls, set it to 1
@@ -214,8 +212,7 @@ struct e1000_ps_page {
214 u64 dma; /* must be u64 - written to hw */ 212 u64 dma; /* must be u64 - written to hw */
215}; 213};
216 214
217/* 215/* wrappers around a pointer to a socket buffer,
218 * wrappers around a pointer to a socket buffer,
219 * so a DMA handle can be stored along with the buffer 216 * so a DMA handle can be stored along with the buffer
220 */ 217 */
221struct e1000_buffer { 218struct e1000_buffer {
@@ -305,9 +302,7 @@ struct e1000_adapter {
305 u16 tx_itr; 302 u16 tx_itr;
306 u16 rx_itr; 303 u16 rx_itr;
307 304
308 /* 305 /* Tx */
309 * Tx
310 */
311 struct e1000_ring *tx_ring /* One per active queue */ 306 struct e1000_ring *tx_ring /* One per active queue */
312 ____cacheline_aligned_in_smp; 307 ____cacheline_aligned_in_smp;
313 u32 tx_fifo_limit; 308 u32 tx_fifo_limit;
@@ -340,9 +335,7 @@ struct e1000_adapter {
340 u32 tx_fifo_size; 335 u32 tx_fifo_size;
341 u32 tx_dma_failed; 336 u32 tx_dma_failed;
342 337
343 /* 338 /* Rx */
344 * Rx
345 */
346 bool (*clean_rx) (struct e1000_ring *ring, int *work_done, 339 bool (*clean_rx) (struct e1000_ring *ring, int *work_done,
347 int work_to_do) ____cacheline_aligned_in_smp; 340 int work_to_do) ____cacheline_aligned_in_smp;
348 void (*alloc_rx_buf) (struct e1000_ring *ring, int cleaned_count, 341 void (*alloc_rx_buf) (struct e1000_ring *ring, int cleaned_count,
diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
index c11ac2756667..f95bc6ee1c22 100644
--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
@@ -214,7 +214,8 @@ static int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx)
214 mac->autoneg = 0; 214 mac->autoneg = 0;
215 215
216 /* Make sure dplx is at most 1 bit and lsb of speed is not set 216 /* Make sure dplx is at most 1 bit and lsb of speed is not set
217 * for the switch() below to work */ 217 * for the switch() below to work
218 */
218 if ((spd & 1) || (dplx & ~1)) 219 if ((spd & 1) || (dplx & ~1))
219 goto err_inval; 220 goto err_inval;
220 221
@@ -263,8 +264,7 @@ static int e1000_set_settings(struct net_device *netdev,
263 struct e1000_adapter *adapter = netdev_priv(netdev); 264 struct e1000_adapter *adapter = netdev_priv(netdev);
264 struct e1000_hw *hw = &adapter->hw; 265 struct e1000_hw *hw = &adapter->hw;
265 266
266 /* 267 /* When SoL/IDER sessions are active, autoneg/speed/duplex
267 * When SoL/IDER sessions are active, autoneg/speed/duplex
268 * cannot be changed 268 * cannot be changed
269 */ 269 */
270 if (hw->phy.ops.check_reset_block && 270 if (hw->phy.ops.check_reset_block &&
@@ -273,8 +273,7 @@ static int e1000_set_settings(struct net_device *netdev,
273 return -EINVAL; 273 return -EINVAL;
274 } 274 }
275 275
276 /* 276 /* MDI setting is only allowed when autoneg enabled because
277 * MDI setting is only allowed when autoneg enabled because
278 * some hardware doesn't allow MDI setting when speed or 277 * some hardware doesn't allow MDI setting when speed or
279 * duplex is forced. 278 * duplex is forced.
280 */ 279 */
@@ -316,8 +315,7 @@ static int e1000_set_settings(struct net_device *netdev,
316 315
317 /* MDI-X => 2; MDI => 1; Auto => 3 */ 316 /* MDI-X => 2; MDI => 1; Auto => 3 */
318 if (ecmd->eth_tp_mdix_ctrl) { 317 if (ecmd->eth_tp_mdix_ctrl) {
319 /* 318 /* fix up the value for auto (3 => 0) as zero is mapped
320 * fix up the value for auto (3 => 0) as zero is mapped
321 * internally to auto 319 * internally to auto
322 */ 320 */
323 if (ecmd->eth_tp_mdix_ctrl == ETH_TP_MDI_AUTO) 321 if (ecmd->eth_tp_mdix_ctrl == ETH_TP_MDI_AUTO)
@@ -454,8 +452,8 @@ static void e1000_get_regs(struct net_device *netdev,
454 regs_buff[12] = adapter->hw.phy.type; /* PHY type (IGP=1, M88=0) */ 452 regs_buff[12] = adapter->hw.phy.type; /* PHY type (IGP=1, M88=0) */
455 453
456 /* ethtool doesn't use anything past this point, so all this 454 /* ethtool doesn't use anything past this point, so all this
457 * code is likely legacy junk for apps that may or may not 455 * code is likely legacy junk for apps that may or may not exist
458 * exist */ 456 */
459 if (hw->phy.type == e1000_phy_m88) { 457 if (hw->phy.type == e1000_phy_m88) {
460 e1e_rphy(hw, M88E1000_PHY_SPEC_STATUS, &phy_data); 458 e1e_rphy(hw, M88E1000_PHY_SPEC_STATUS, &phy_data);
461 regs_buff[13] = (u32)phy_data; /* cable length */ 459 regs_buff[13] = (u32)phy_data; /* cable length */
@@ -598,8 +596,7 @@ static int e1000_set_eeprom(struct net_device *netdev,
598 if (ret_val) 596 if (ret_val)
599 goto out; 597 goto out;
600 598
601 /* 599 /* Update the checksum over the first part of the EEPROM if needed
602 * Update the checksum over the first part of the EEPROM if needed
603 * and flush shadow RAM for applicable controllers 600 * and flush shadow RAM for applicable controllers
604 */ 601 */
605 if ((first_word <= NVM_CHECKSUM_REG) || 602 if ((first_word <= NVM_CHECKSUM_REG) ||
@@ -623,8 +620,7 @@ static void e1000_get_drvinfo(struct net_device *netdev,
623 strlcpy(drvinfo->version, e1000e_driver_version, 620 strlcpy(drvinfo->version, e1000e_driver_version,
624 sizeof(drvinfo->version)); 621 sizeof(drvinfo->version));
625 622
626 /* 623 /* EEPROM image version # is reported as firmware version # for
627 * EEPROM image version # is reported as firmware version # for
628 * PCI-E controllers 624 * PCI-E controllers
629 */ 625 */
630 snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), 626 snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
@@ -708,8 +704,7 @@ static int e1000_set_ringparam(struct net_device *netdev,
708 704
709 e1000e_down(adapter); 705 e1000e_down(adapter);
710 706
711 /* 707 /* We can't just free everything and then setup again, because the
712 * We can't just free everything and then setup again, because the
713 * ISRs in MSI-X mode get passed pointers to the Tx and Rx ring 708 * ISRs in MSI-X mode get passed pointers to the Tx and Rx ring
714 * structs. First, attempt to allocate new resources... 709 * structs. First, attempt to allocate new resources...
715 */ 710 */
@@ -813,8 +808,7 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
813 u32 mask; 808 u32 mask;
814 u32 wlock_mac = 0; 809 u32 wlock_mac = 0;
815 810
816 /* 811 /* The status register is Read Only, so a write should fail.
817 * The status register is Read Only, so a write should fail.
818 * Some bits that get toggled are ignored. 812 * Some bits that get toggled are ignored.
819 */ 813 */
820 switch (mac->type) { 814 switch (mac->type) {
@@ -996,8 +990,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
996 } 990 }
997 991
998 if (!shared_int) { 992 if (!shared_int) {
999 /* 993 /* Disable the interrupt to be reported in
1000 * Disable the interrupt to be reported in
1001 * the cause register and then force the same 994 * the cause register and then force the same
1002 * interrupt and see if one gets posted. If 995 * interrupt and see if one gets posted. If
1003 * an interrupt was posted to the bus, the 996 * an interrupt was posted to the bus, the
@@ -1015,8 +1008,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
1015 } 1008 }
1016 } 1009 }
1017 1010
1018 /* 1011 /* Enable the interrupt to be reported in
1019 * Enable the interrupt to be reported in
1020 * the cause register and then force the same 1012 * the cause register and then force the same
1021 * interrupt and see if one gets posted. If 1013 * interrupt and see if one gets posted. If
1022 * an interrupt was not posted to the bus, the 1014 * an interrupt was not posted to the bus, the
@@ -1034,8 +1026,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
1034 } 1026 }
1035 1027
1036 if (!shared_int) { 1028 if (!shared_int) {
1037 /* 1029 /* Disable the other interrupts to be reported in
1038 * Disable the other interrupts to be reported in
1039 * the cause register and then force the other 1030 * the cause register and then force the other
1040 * interrupts and see if any get posted. If 1031 * interrupts and see if any get posted. If
1041 * an interrupt was posted to the bus, the 1032 * an interrupt was posted to the bus, the
@@ -1378,8 +1369,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
1378 hw->phy.type == e1000_phy_m88) { 1369 hw->phy.type == e1000_phy_m88) {
1379 ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */ 1370 ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */
1380 } else { 1371 } else {
1381 /* 1372 /* Set the ILOS bit on the fiber Nic if half duplex link is
1382 * Set the ILOS bit on the fiber Nic if half duplex link is
1383 * detected. 1373 * detected.
1384 */ 1374 */
1385 if ((er32(STATUS) & E1000_STATUS_FD) == 0) 1375 if ((er32(STATUS) & E1000_STATUS_FD) == 0)
@@ -1388,8 +1378,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
1388 1378
1389 ew32(CTRL, ctrl_reg); 1379 ew32(CTRL, ctrl_reg);
1390 1380
1391 /* 1381 /* Disable the receiver on the PHY so when a cable is plugged in, the
1392 * Disable the receiver on the PHY so when a cable is plugged in, the
1393 * PHY does not begin to autoneg when a cable is reconnected to the NIC. 1382 * PHY does not begin to autoneg when a cable is reconnected to the NIC.
1394 */ 1383 */
1395 if (hw->phy.type == e1000_phy_m88) 1384 if (hw->phy.type == e1000_phy_m88)
@@ -1408,8 +1397,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)
1408 1397
1409 /* special requirements for 82571/82572 fiber adapters */ 1398 /* special requirements for 82571/82572 fiber adapters */
1410 1399
1411 /* 1400 /* jump through hoops to make sure link is up because serdes
1412 * jump through hoops to make sure link is up because serdes
1413 * link is hardwired up 1401 * link is hardwired up
1414 */ 1402 */
1415 ctrl |= E1000_CTRL_SLU; 1403 ctrl |= E1000_CTRL_SLU;
@@ -1429,8 +1417,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)
1429 ew32(CTRL, ctrl); 1417 ew32(CTRL, ctrl);
1430 } 1418 }
1431 1419
1432 /* 1420 /* special write to serdes control register to enable SerDes analog
1433 * special write to serdes control register to enable SerDes analog
1434 * loopback 1421 * loopback
1435 */ 1422 */
1436#define E1000_SERDES_LB_ON 0x410 1423#define E1000_SERDES_LB_ON 0x410
@@ -1448,8 +1435,7 @@ static int e1000_set_es2lan_mac_loopback(struct e1000_adapter *adapter)
1448 u32 ctrlext = er32(CTRL_EXT); 1435 u32 ctrlext = er32(CTRL_EXT);
1449 u32 ctrl = er32(CTRL); 1436 u32 ctrl = er32(CTRL);
1450 1437
1451 /* 1438 /* save CTRL_EXT to restore later, reuse an empty variable (unused
1452 * save CTRL_EXT to restore later, reuse an empty variable (unused
1453 * on mac_type 80003es2lan) 1439 * on mac_type 80003es2lan)
1454 */ 1440 */
1455 adapter->tx_fifo_head = ctrlext; 1441 adapter->tx_fifo_head = ctrlext;
@@ -1585,8 +1571,7 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)
1585 1571
1586 ew32(RDT(0), rx_ring->count - 1); 1572 ew32(RDT(0), rx_ring->count - 1);
1587 1573
1588 /* 1574 /* Calculate the loop count based on the largest descriptor ring
1589 * Calculate the loop count based on the largest descriptor ring
1590 * The idea is to wrap the largest ring a number of times using 64 1575 * The idea is to wrap the largest ring a number of times using 64
1591 * send/receive pairs during each loop 1576 * send/receive pairs during each loop
1592 */ 1577 */
@@ -1627,8 +1612,7 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)
1627 l++; 1612 l++;
1628 if (l == rx_ring->count) 1613 if (l == rx_ring->count)
1629 l = 0; 1614 l = 0;
1630 /* 1615 /* time + 20 msecs (200 msecs on 2.4) is more than
1631 * time + 20 msecs (200 msecs on 2.4) is more than
1632 * enough time to complete the receives, if it's 1616 * enough time to complete the receives, if it's
1633 * exceeded, break and error off 1617 * exceeded, break and error off
1634 */ 1618 */
@@ -1649,10 +1633,7 @@ static int e1000_loopback_test(struct e1000_adapter *adapter, u64 *data)
1649{ 1633{
1650 struct e1000_hw *hw = &adapter->hw; 1634 struct e1000_hw *hw = &adapter->hw;
1651 1635
1652 /* 1636 /* PHY loopback cannot be performed if SoL/IDER sessions are active */
1653 * PHY loopback cannot be performed if SoL/IDER
1654 * sessions are active
1655 */
1656 if (hw->phy.ops.check_reset_block && 1637 if (hw->phy.ops.check_reset_block &&
1657 hw->phy.ops.check_reset_block(hw)) { 1638 hw->phy.ops.check_reset_block(hw)) {
1658 e_err("Cannot do PHY loopback test when SoL/IDER is active.\n"); 1639 e_err("Cannot do PHY loopback test when SoL/IDER is active.\n");
@@ -1686,8 +1667,7 @@ static int e1000_link_test(struct e1000_adapter *adapter, u64 *data)
1686 int i = 0; 1667 int i = 0;
1687 hw->mac.serdes_has_link = false; 1668 hw->mac.serdes_has_link = false;
1688 1669
1689 /* 1670 /* On some blade server designs, link establishment
1690 * On some blade server designs, link establishment
1691 * could take as long as 2-3 minutes 1671 * could take as long as 2-3 minutes
1692 */ 1672 */
1693 do { 1673 do {
@@ -1701,8 +1681,7 @@ static int e1000_link_test(struct e1000_adapter *adapter, u64 *data)
1701 } else { 1681 } else {
1702 hw->mac.ops.check_for_link(hw); 1682 hw->mac.ops.check_for_link(hw);
1703 if (hw->mac.autoneg) 1683 if (hw->mac.autoneg)
1704 /* 1684 /* On some Phy/switch combinations, link establishment
1705 * On some Phy/switch combinations, link establishment
1706 * can take a few seconds more than expected. 1685 * can take a few seconds more than expected.
1707 */ 1686 */
1708 msleep(5000); 1687 msleep(5000);
diff --git a/drivers/net/ethernet/intel/e1000e/hw.h b/drivers/net/ethernet/intel/e1000e/hw.h
index d37bfd96c987..cf217777586c 100644
--- a/drivers/net/ethernet/intel/e1000e/hw.h
+++ b/drivers/net/ethernet/intel/e1000e/hw.h
@@ -85,8 +85,7 @@ enum e1e_registers {
85 E1000_FCRTL = 0x02160, /* Flow Control Receive Threshold Low - RW */ 85 E1000_FCRTL = 0x02160, /* Flow Control Receive Threshold Low - RW */
86 E1000_FCRTH = 0x02168, /* Flow Control Receive Threshold High - RW */ 86 E1000_FCRTH = 0x02168, /* Flow Control Receive Threshold High - RW */
87 E1000_PSRCTL = 0x02170, /* Packet Split Receive Control - RW */ 87 E1000_PSRCTL = 0x02170, /* Packet Split Receive Control - RW */
88/* 88/* Convenience macros
89 * Convenience macros
90 * 89 *
91 * Note: "_n" is the queue number of the register to be written to. 90 * Note: "_n" is the queue number of the register to be written to.
92 * 91 *
@@ -800,8 +799,7 @@ struct e1000_mac_operations {
800 s32 (*read_mac_addr)(struct e1000_hw *); 799 s32 (*read_mac_addr)(struct e1000_hw *);
801}; 800};
802 801
803/* 802/* When to use various PHY register access functions:
804 * When to use various PHY register access functions:
805 * 803 *
806 * Func Caller 804 * Func Caller
807 * Function Does Does When to use 805 * Function Does Does When to use
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index e3a7b07df629..976336547607 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -26,8 +26,7 @@
26 26
27*******************************************************************************/ 27*******************************************************************************/
28 28
29/* 29/* 82562G 10/100 Network Connection
30 * 82562G 10/100 Network Connection
31 * 82562G-2 10/100 Network Connection 30 * 82562G-2 10/100 Network Connection
32 * 82562GT 10/100 Network Connection 31 * 82562GT 10/100 Network Connection
33 * 82562GT-2 10/100 Network Connection 32 * 82562GT-2 10/100 Network Connection
@@ -354,8 +353,7 @@ static bool e1000_phy_is_accessible_pchlan(struct e1000_hw *hw)
354 return true; 353 return true;
355 } 354 }
356 355
357 /* 356 /* In case the PHY needs to be in mdio slow mode,
358 * In case the PHY needs to be in mdio slow mode,
359 * set slow mode and try to get the PHY id again. 357 * set slow mode and try to get the PHY id again.
360 */ 358 */
361 hw->phy.ops.release(hw); 359 hw->phy.ops.release(hw);
@@ -386,8 +384,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
386 return ret_val; 384 return ret_val;
387 } 385 }
388 386
389 /* 387 /* The MAC-PHY interconnect may be in SMBus mode. If the PHY is
390 * The MAC-PHY interconnect may be in SMBus mode. If the PHY is
391 * inaccessible and resetting the PHY is not blocked, toggle the 388 * inaccessible and resetting the PHY is not blocked, toggle the
392 * LANPHYPC Value bit to force the interconnect to PCIe mode. 389 * LANPHYPC Value bit to force the interconnect to PCIe mode.
393 */ 390 */
@@ -396,8 +393,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
396 if (e1000_phy_is_accessible_pchlan(hw)) 393 if (e1000_phy_is_accessible_pchlan(hw))
397 break; 394 break;
398 395
399 /* 396 /* Before toggling LANPHYPC, see if PHY is accessible by
400 * Before toggling LANPHYPC, see if PHY is accessible by
401 * forcing MAC to SMBus mode first. 397 * forcing MAC to SMBus mode first.
402 */ 398 */
403 mac_reg = er32(CTRL_EXT); 399 mac_reg = er32(CTRL_EXT);
@@ -406,8 +402,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
406 402
407 /* fall-through */ 403 /* fall-through */
408 case e1000_pch2lan: 404 case e1000_pch2lan:
409 /* 405 /* Gate automatic PHY configuration by hardware on
410 * Gate automatic PHY configuration by hardware on
411 * non-managed 82579 406 * non-managed 82579
412 */ 407 */
413 if ((hw->mac.type == e1000_pch2lan) && 408 if ((hw->mac.type == e1000_pch2lan) &&
@@ -474,8 +469,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
474 469
475 hw->phy.ops.release(hw); 470 hw->phy.ops.release(hw);
476 471
477 /* 472 /* Reset the PHY before any access to it. Doing so, ensures
478 * Reset the PHY before any access to it. Doing so, ensures
479 * that the PHY is in a known good state before we read/write 473 * that the PHY is in a known good state before we read/write
480 * PHY registers. The generic reset is sufficient here, 474 * PHY registers. The generic reset is sufficient here,
481 * because we haven't determined the PHY type yet. 475 * because we haven't determined the PHY type yet.
@@ -536,8 +530,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
536 /* fall-through */ 530 /* fall-through */
537 case e1000_pch2lan: 531 case e1000_pch2lan:
538 case e1000_pch_lpt: 532 case e1000_pch_lpt:
539 /* 533 /* In case the PHY needs to be in mdio slow mode,
540 * In case the PHY needs to be in mdio slow mode,
541 * set slow mode and try to get the PHY id again. 534 * set slow mode and try to get the PHY id again.
542 */ 535 */
543 ret_val = e1000_set_mdio_slow_mode_hv(hw); 536 ret_val = e1000_set_mdio_slow_mode_hv(hw);
@@ -593,8 +586,7 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
593 phy->ops.power_up = e1000_power_up_phy_copper; 586 phy->ops.power_up = e1000_power_up_phy_copper;
594 phy->ops.power_down = e1000_power_down_phy_copper_ich8lan; 587 phy->ops.power_down = e1000_power_down_phy_copper_ich8lan;
595 588
596 /* 589 /* We may need to do this twice - once for IGP and if that fails,
597 * We may need to do this twice - once for IGP and if that fails,
598 * we'll set BM func pointers and try again 590 * we'll set BM func pointers and try again
599 */ 591 */
600 ret_val = e1000e_determine_phy_address(hw); 592 ret_val = e1000e_determine_phy_address(hw);
@@ -679,8 +671,7 @@ static s32 e1000_init_nvm_params_ich8lan(struct e1000_hw *hw)
679 671
680 gfpreg = er32flash(ICH_FLASH_GFPREG); 672 gfpreg = er32flash(ICH_FLASH_GFPREG);
681 673
682 /* 674 /* sector_X_addr is a "sector"-aligned address (4096 bytes)
683 * sector_X_addr is a "sector"-aligned address (4096 bytes)
684 * Add 1 to sector_end_addr since this sector is included in 675 * Add 1 to sector_end_addr since this sector is included in
685 * the overall size. 676 * the overall size.
686 */ 677 */
@@ -690,8 +681,7 @@ static s32 e1000_init_nvm_params_ich8lan(struct e1000_hw *hw)
690 /* flash_base_addr is byte-aligned */ 681 /* flash_base_addr is byte-aligned */
691 nvm->flash_base_addr = sector_base_addr << FLASH_SECTOR_ADDR_SHIFT; 682 nvm->flash_base_addr = sector_base_addr << FLASH_SECTOR_ADDR_SHIFT;
692 683
693 /* 684 /* find total size of the NVM, then cut in half since the total
694 * find total size of the NVM, then cut in half since the total
695 * size represents two separate NVM banks. 685 * size represents two separate NVM banks.
696 */ 686 */
697 nvm->flash_bank_size = (sector_end_addr - sector_base_addr) 687 nvm->flash_bank_size = (sector_end_addr - sector_base_addr)
@@ -788,8 +778,7 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)
788 if (mac->type == e1000_ich8lan) 778 if (mac->type == e1000_ich8lan)
789 e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw, true); 779 e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw, true);
790 780
791 /* 781 /* Gate automatic PHY configuration by hardware on managed
792 * Gate automatic PHY configuration by hardware on managed
793 * 82579 and i217 782 * 82579 and i217
794 */ 783 */
795 if ((mac->type == e1000_pch2lan || mac->type == e1000_pch_lpt) && 784 if ((mac->type == e1000_pch2lan || mac->type == e1000_pch_lpt) &&
@@ -840,8 +829,7 @@ static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)
840 goto release; 829 goto release;
841 e1e_rphy_locked(hw, I82579_EMI_DATA, &dev_spec->eee_lp_ability); 830 e1e_rphy_locked(hw, I82579_EMI_DATA, &dev_spec->eee_lp_ability);
842 831
843 /* 832 /* EEE is not supported in 100Half, so ignore partner's EEE
844 * EEE is not supported in 100Half, so ignore partner's EEE
845 * in 100 ability if full-duplex is not advertised. 833 * in 100 ability if full-duplex is not advertised.
846 */ 834 */
847 e1e_rphy_locked(hw, PHY_LP_ABILITY, &phy_reg); 835 e1e_rphy_locked(hw, PHY_LP_ABILITY, &phy_reg);
@@ -869,8 +857,7 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
869 bool link; 857 bool link;
870 u16 phy_reg; 858 u16 phy_reg;
871 859
872 /* 860 /* We only want to go out to the PHY registers to see if Auto-Neg
873 * We only want to go out to the PHY registers to see if Auto-Neg
874 * has completed and/or if our link status has changed. The 861 * has completed and/or if our link status has changed. The
875 * get_link_status flag is set upon receiving a Link Status 862 * get_link_status flag is set upon receiving a Link Status
876 * Change or Rx Sequence Error interrupt. 863 * Change or Rx Sequence Error interrupt.
@@ -878,8 +865,7 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
878 if (!mac->get_link_status) 865 if (!mac->get_link_status)
879 return 0; 866 return 0;
880 867
881 /* 868 /* First we want to see if the MII Status Register reports
882 * First we want to see if the MII Status Register reports
883 * link. If so, then we want to get the current speed/duplex 869 * link. If so, then we want to get the current speed/duplex
884 * of the PHY. 870 * of the PHY.
885 */ 871 */
@@ -914,8 +900,7 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
914 return ret_val; 900 return ret_val;
915 } 901 }
916 902
917 /* 903 /* Workaround for PCHx parts in half-duplex:
918 * Workaround for PCHx parts in half-duplex:
919 * Set the number of preambles removed from the packet 904 * Set the number of preambles removed from the packet
920 * when it is passed from the PHY to the MAC to prevent 905 * when it is passed from the PHY to the MAC to prevent
921 * the MAC from misinterpreting the packet type. 906 * the MAC from misinterpreting the packet type.
@@ -932,8 +917,7 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
932 break; 917 break;
933 } 918 }
934 919
935 /* 920 /* Check if there was DownShift, must be checked
936 * Check if there was DownShift, must be checked
937 * immediately after link-up 921 * immediately after link-up
938 */ 922 */
939 e1000e_check_downshift(hw); 923 e1000e_check_downshift(hw);
@@ -943,22 +927,19 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
943 if (ret_val) 927 if (ret_val)
944 return ret_val; 928 return ret_val;
945 929
946 /* 930 /* If we are forcing speed/duplex, then we simply return since
947 * If we are forcing speed/duplex, then we simply return since
948 * we have already determined whether we have link or not. 931 * we have already determined whether we have link or not.
949 */ 932 */
950 if (!mac->autoneg) 933 if (!mac->autoneg)
951 return -E1000_ERR_CONFIG; 934 return -E1000_ERR_CONFIG;
952 935
953 /* 936 /* Auto-Neg is enabled. Auto Speed Detection takes care
954 * Auto-Neg is enabled. Auto Speed Detection takes care
955 * of MAC speed/duplex configuration. So we only need to 937 * of MAC speed/duplex configuration. So we only need to
956 * configure Collision Distance in the MAC. 938 * configure Collision Distance in the MAC.
957 */ 939 */
958 mac->ops.config_collision_dist(hw); 940 mac->ops.config_collision_dist(hw);
959 941
960 /* 942 /* Configure Flow Control now that Auto-Neg has completed.
961 * Configure Flow Control now that Auto-Neg has completed.
962 * First, we need to restore the desired flow control 943 * First, we need to restore the desired flow control
963 * settings because we may have had to re-autoneg with a 944 * settings because we may have had to re-autoneg with a
964 * different link partner. 945 * different link partner.
@@ -1000,8 +981,7 @@ static s32 e1000_get_variants_ich8lan(struct e1000_adapter *adapter)
1000 if (rc) 981 if (rc)
1001 return rc; 982 return rc;
1002 983
1003 /* 984 /* Disable Jumbo Frame support on parts with Intel 10/100 PHY or
1004 * Disable Jumbo Frame support on parts with Intel 10/100 PHY or
1005 * on parts with MACsec enabled in NVM (reflected in CTRL_EXT). 985 * on parts with MACsec enabled in NVM (reflected in CTRL_EXT).
1006 */ 986 */
1007 if ((adapter->hw.phy.type == e1000_phy_ife) || 987 if ((adapter->hw.phy.type == e1000_phy_ife) ||
@@ -1191,8 +1171,7 @@ static void e1000_rar_set_pch2lan(struct e1000_hw *hw, u8 *addr, u32 index)
1191{ 1171{
1192 u32 rar_low, rar_high; 1172 u32 rar_low, rar_high;
1193 1173
1194 /* 1174 /* HW expects these in little endian so we reverse the byte order
1195 * HW expects these in little endian so we reverse the byte order
1196 * from network order (big endian) to little endian 1175 * from network order (big endian) to little endian
1197 */ 1176 */
1198 rar_low = ((u32)addr[0] | 1177 rar_low = ((u32)addr[0] |
@@ -1256,8 +1235,7 @@ static void e1000_rar_set_pch_lpt(struct e1000_hw *hw, u8 *addr, u32 index)
1256 u32 rar_low, rar_high; 1235 u32 rar_low, rar_high;
1257 u32 wlock_mac; 1236 u32 wlock_mac;
1258 1237
1259 /* 1238 /* HW expects these in little endian so we reverse the byte order
1260 * HW expects these in little endian so we reverse the byte order
1261 * from network order (big endian) to little endian 1239 * from network order (big endian) to little endian
1262 */ 1240 */
1263 rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) | 1241 rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) |
@@ -1277,8 +1255,7 @@ static void e1000_rar_set_pch_lpt(struct e1000_hw *hw, u8 *addr, u32 index)
1277 return; 1255 return;
1278 } 1256 }
1279 1257
1280 /* 1258 /* The manageability engine (ME) can lock certain SHRAR registers that
1281 * The manageability engine (ME) can lock certain SHRAR registers that
1282 * it is using - those registers are unavailable for use. 1259 * it is using - those registers are unavailable for use.
1283 */ 1260 */
1284 if (index < hw->mac.rar_entry_count) { 1261 if (index < hw->mac.rar_entry_count) {
@@ -1387,8 +1364,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
1387 s32 ret_val = 0; 1364 s32 ret_val = 0;
1388 u16 word_addr, reg_data, reg_addr, phy_page = 0; 1365 u16 word_addr, reg_data, reg_addr, phy_page = 0;
1389 1366
1390 /* 1367 /* Initialize the PHY from the NVM on ICH platforms. This
1391 * Initialize the PHY from the NVM on ICH platforms. This
1392 * is needed due to an issue where the NVM configuration is 1368 * is needed due to an issue where the NVM configuration is
1393 * not properly autoloaded after power transitions. 1369 * not properly autoloaded after power transitions.
1394 * Therefore, after each PHY reset, we will load the 1370 * Therefore, after each PHY reset, we will load the
@@ -1422,8 +1398,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
1422 if (!(data & sw_cfg_mask)) 1398 if (!(data & sw_cfg_mask))
1423 goto release; 1399 goto release;
1424 1400
1425 /* 1401 /* Make sure HW does not configure LCD from PHY
1426 * Make sure HW does not configure LCD from PHY
1427 * extended configuration before SW configuration 1402 * extended configuration before SW configuration
1428 */ 1403 */
1429 data = er32(EXTCNF_CTRL); 1404 data = er32(EXTCNF_CTRL);
@@ -1443,8 +1418,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
1443 if (((hw->mac.type == e1000_pchlan) && 1418 if (((hw->mac.type == e1000_pchlan) &&
1444 !(data & E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE)) || 1419 !(data & E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE)) ||
1445 (hw->mac.type > e1000_pchlan)) { 1420 (hw->mac.type > e1000_pchlan)) {
1446 /* 1421 /* HW configures the SMBus address and LEDs when the
1447 * HW configures the SMBus address and LEDs when the
1448 * OEM and LCD Write Enable bits are set in the NVM. 1422 * OEM and LCD Write Enable bits are set in the NVM.
1449 * When both NVM bits are cleared, SW will configure 1423 * When both NVM bits are cleared, SW will configure
1450 * them instead. 1424 * them instead.
@@ -1748,8 +1722,7 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
1748 } 1722 }
1749 1723
1750 if (hw->phy.type == e1000_phy_82578) { 1724 if (hw->phy.type == e1000_phy_82578) {
1751 /* 1725 /* Return registers to default by doing a soft reset then
1752 * Return registers to default by doing a soft reset then
1753 * writing 0x3140 to the control register. 1726 * writing 0x3140 to the control register.
1754 */ 1727 */
1755 if (hw->phy.revision < 2) { 1728 if (hw->phy.revision < 2) {
@@ -1769,8 +1742,7 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
1769 if (ret_val) 1742 if (ret_val)
1770 return ret_val; 1743 return ret_val;
1771 1744
1772 /* 1745 /* Configure the K1 Si workaround during phy reset assuming there is
1773 * Configure the K1 Si workaround during phy reset assuming there is
1774 * link so that it disables K1 if link is in 1Gbps. 1746 * link so that it disables K1 if link is in 1Gbps.
1775 */ 1747 */
1776 ret_val = e1000_k1_gig_workaround_hv(hw, true); 1748 ret_val = e1000_k1_gig_workaround_hv(hw, true);
@@ -1853,8 +1825,7 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)
1853 return ret_val; 1825 return ret_val;
1854 1826
1855 if (enable) { 1827 if (enable) {
1856 /* 1828 /* Write Rx addresses (rar_entry_count for RAL/H, +4 for
1857 * Write Rx addresses (rar_entry_count for RAL/H, +4 for
1858 * SHRAL/H) and initial CRC values to the MAC 1829 * SHRAL/H) and initial CRC values to the MAC
1859 */ 1830 */
1860 for (i = 0; i < (hw->mac.rar_entry_count + 4); i++) { 1831 for (i = 0; i < (hw->mac.rar_entry_count + 4); i++) {
@@ -2131,8 +2102,7 @@ static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw)
2131 udelay(100); 2102 udelay(100);
2132 } while ((!data) && --loop); 2103 } while ((!data) && --loop);
2133 2104
2134 /* 2105 /* If basic configuration is incomplete before the above loop
2135 * If basic configuration is incomplete before the above loop
2136 * count reaches 0, loading the configuration from NVM will 2106 * count reaches 0, loading the configuration from NVM will
2137 * leave the PHY in a bad state possibly resulting in no link. 2107 * leave the PHY in a bad state possibly resulting in no link.
2138 */ 2108 */
@@ -2299,8 +2269,7 @@ static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
2299 if (phy->type != e1000_phy_igp_3) 2269 if (phy->type != e1000_phy_igp_3)
2300 return 0; 2270 return 0;
2301 2271
2302 /* 2272 /* Call gig speed drop workaround on LPLU before accessing
2303 * Call gig speed drop workaround on LPLU before accessing
2304 * any PHY registers 2273 * any PHY registers
2305 */ 2274 */
2306 if (hw->mac.type == e1000_ich8lan) 2275 if (hw->mac.type == e1000_ich8lan)
@@ -2319,8 +2288,7 @@ static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
2319 if (phy->type != e1000_phy_igp_3) 2288 if (phy->type != e1000_phy_igp_3)
2320 return 0; 2289 return 0;
2321 2290
2322 /* 2291 /* LPLU and SmartSpeed are mutually exclusive. LPLU is used
2323 * LPLU and SmartSpeed are mutually exclusive. LPLU is used
2324 * during Dx states where the power conservation is most 2292 * during Dx states where the power conservation is most
2325 * important. During driver activity we should enable 2293 * important. During driver activity we should enable
2326 * SmartSpeed, so performance is maintained. 2294 * SmartSpeed, so performance is maintained.
@@ -2382,8 +2350,7 @@ static s32 e1000_set_d3_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
2382 if (phy->type != e1000_phy_igp_3) 2350 if (phy->type != e1000_phy_igp_3)
2383 return 0; 2351 return 0;
2384 2352
2385 /* 2353 /* LPLU and SmartSpeed are mutually exclusive. LPLU is used
2386 * LPLU and SmartSpeed are mutually exclusive. LPLU is used
2387 * during Dx states where the power conservation is most 2354 * during Dx states where the power conservation is most
2388 * important. During driver activity we should enable 2355 * important. During driver activity we should enable
2389 * SmartSpeed, so performance is maintained. 2356 * SmartSpeed, so performance is maintained.
@@ -2420,8 +2387,7 @@ static s32 e1000_set_d3_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
2420 if (phy->type != e1000_phy_igp_3) 2387 if (phy->type != e1000_phy_igp_3)
2421 return 0; 2388 return 0;
2422 2389
2423 /* 2390 /* Call gig speed drop workaround on LPLU before accessing
2424 * Call gig speed drop workaround on LPLU before accessing
2425 * any PHY registers 2391 * any PHY registers
2426 */ 2392 */
2427 if (hw->mac.type == e1000_ich8lan) 2393 if (hw->mac.type == e1000_ich8lan)
@@ -2589,8 +2555,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
2589 2555
2590 ew16flash(ICH_FLASH_HSFSTS, hsfsts.regval); 2556 ew16flash(ICH_FLASH_HSFSTS, hsfsts.regval);
2591 2557
2592 /* 2558 /* Either we should have a hardware SPI cycle in progress
2593 * Either we should have a hardware SPI cycle in progress
2594 * bit to check against, in order to start a new cycle or 2559 * bit to check against, in order to start a new cycle or
2595 * FDONE bit should be changed in the hardware so that it 2560 * FDONE bit should be changed in the hardware so that it
2596 * is 1 after hardware reset, which can then be used as an 2561 * is 1 after hardware reset, which can then be used as an
@@ -2599,8 +2564,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
2599 */ 2564 */
2600 2565
2601 if (!hsfsts.hsf_status.flcinprog) { 2566 if (!hsfsts.hsf_status.flcinprog) {
2602 /* 2567 /* There is no cycle running at present,
2603 * There is no cycle running at present,
2604 * so we can start a cycle. 2568 * so we can start a cycle.
2605 * Begin by setting Flash Cycle Done. 2569 * Begin by setting Flash Cycle Done.
2606 */ 2570 */
@@ -2610,8 +2574,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
2610 } else { 2574 } else {
2611 s32 i; 2575 s32 i;
2612 2576
2613 /* 2577 /* Otherwise poll for sometime so the current
2614 * Otherwise poll for sometime so the current
2615 * cycle has a chance to end before giving up. 2578 * cycle has a chance to end before giving up.
2616 */ 2579 */
2617 for (i = 0; i < ICH_FLASH_READ_COMMAND_TIMEOUT; i++) { 2580 for (i = 0; i < ICH_FLASH_READ_COMMAND_TIMEOUT; i++) {
@@ -2623,8 +2586,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
2623 udelay(1); 2586 udelay(1);
2624 } 2587 }
2625 if (!ret_val) { 2588 if (!ret_val) {
2626 /* 2589 /* Successful in waiting for previous cycle to timeout,
2627 * Successful in waiting for previous cycle to timeout,
2628 * now set the Flash Cycle Done. 2590 * now set the Flash Cycle Done.
2629 */ 2591 */
2630 hsfsts.hsf_status.flcdone = 1; 2592 hsfsts.hsf_status.flcdone = 1;
@@ -2753,8 +2715,7 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
2753 ret_val = e1000_flash_cycle_ich8lan(hw, 2715 ret_val = e1000_flash_cycle_ich8lan(hw,
2754 ICH_FLASH_READ_COMMAND_TIMEOUT); 2716 ICH_FLASH_READ_COMMAND_TIMEOUT);
2755 2717
2756 /* 2718 /* Check if FCERR is set to 1, if set to 1, clear it
2757 * Check if FCERR is set to 1, if set to 1, clear it
2758 * and try the whole sequence a few more times, else 2719 * and try the whole sequence a few more times, else
2759 * read in (shift in) the Flash Data0, the order is 2720 * read in (shift in) the Flash Data0, the order is
2760 * least significant byte first msb to lsb 2721 * least significant byte first msb to lsb
@@ -2767,8 +2728,7 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
2767 *data = (u16)(flash_data & 0x0000FFFF); 2728 *data = (u16)(flash_data & 0x0000FFFF);
2768 break; 2729 break;
2769 } else { 2730 } else {
2770 /* 2731 /* If we've gotten here, then things are probably
2771 * If we've gotten here, then things are probably
2772 * completely hosed, but if the error condition is 2732 * completely hosed, but if the error condition is
2773 * detected, it won't hurt to give it another try... 2733 * detected, it won't hurt to give it another try...
2774 * ICH_FLASH_CYCLE_REPEAT_COUNT times. 2734 * ICH_FLASH_CYCLE_REPEAT_COUNT times.
@@ -2849,8 +2809,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2849 2809
2850 nvm->ops.acquire(hw); 2810 nvm->ops.acquire(hw);
2851 2811
2852 /* 2812 /* We're writing to the opposite bank so if we're on bank 1,
2853 * We're writing to the opposite bank so if we're on bank 1,
2854 * write to bank 0 etc. We also need to erase the segment that 2813 * write to bank 0 etc. We also need to erase the segment that
2855 * is going to be written 2814 * is going to be written
2856 */ 2815 */
@@ -2875,8 +2834,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2875 } 2834 }
2876 2835
2877 for (i = 0; i < E1000_ICH8_SHADOW_RAM_WORDS; i++) { 2836 for (i = 0; i < E1000_ICH8_SHADOW_RAM_WORDS; i++) {
2878 /* 2837 /* Determine whether to write the value stored
2879 * Determine whether to write the value stored
2880 * in the other NVM bank or a modified value stored 2838 * in the other NVM bank or a modified value stored
2881 * in the shadow RAM 2839 * in the shadow RAM
2882 */ 2840 */
@@ -2890,8 +2848,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2890 break; 2848 break;
2891 } 2849 }
2892 2850
2893 /* 2851 /* If the word is 0x13, then make sure the signature bits
2894 * If the word is 0x13, then make sure the signature bits
2895 * (15:14) are 11b until the commit has completed. 2852 * (15:14) are 11b until the commit has completed.
2896 * This will allow us to write 10b which indicates the 2853 * This will allow us to write 10b which indicates the
2897 * signature is valid. We want to do this after the write 2854 * signature is valid. We want to do this after the write
@@ -2920,8 +2877,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2920 break; 2877 break;
2921 } 2878 }
2922 2879
2923 /* 2880 /* Don't bother writing the segment valid bits if sector
2924 * Don't bother writing the segment valid bits if sector
2925 * programming failed. 2881 * programming failed.
2926 */ 2882 */
2927 if (ret_val) { 2883 if (ret_val) {
@@ -2930,8 +2886,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2930 goto release; 2886 goto release;
2931 } 2887 }
2932 2888
2933 /* 2889 /* Finally validate the new segment by setting bit 15:14
2934 * Finally validate the new segment by setting bit 15:14
2935 * to 10b in word 0x13 , this can be done without an 2890 * to 10b in word 0x13 , this can be done without an
2936 * erase as well since these bits are 11 to start with 2891 * erase as well since these bits are 11 to start with
2937 * and we need to change bit 14 to 0b 2892 * and we need to change bit 14 to 0b
@@ -2948,8 +2903,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2948 if (ret_val) 2903 if (ret_val)
2949 goto release; 2904 goto release;
2950 2905
2951 /* 2906 /* And invalidate the previously valid segment by setting
2952 * And invalidate the previously valid segment by setting
2953 * its signature word (0x13) high_byte to 0b. This can be 2907 * its signature word (0x13) high_byte to 0b. This can be
2954 * done without an erase because flash erase sets all bits 2908 * done without an erase because flash erase sets all bits
2955 * to 1's. We can write 1's to 0's without an erase 2909 * to 1's. We can write 1's to 0's without an erase
@@ -2968,8 +2922,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
2968release: 2922release:
2969 nvm->ops.release(hw); 2923 nvm->ops.release(hw);
2970 2924
2971 /* 2925 /* Reload the EEPROM, or else modifications will not appear
2972 * Reload the EEPROM, or else modifications will not appear
2973 * until after the next adapter reset. 2926 * until after the next adapter reset.
2974 */ 2927 */
2975 if (!ret_val) { 2928 if (!ret_val) {
@@ -2997,8 +2950,7 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)
2997 s32 ret_val; 2950 s32 ret_val;
2998 u16 data; 2951 u16 data;
2999 2952
3000 /* 2953 /* Read 0x19 and check bit 6. If this bit is 0, the checksum
3001 * Read 0x19 and check bit 6. If this bit is 0, the checksum
3002 * needs to be fixed. This bit is an indication that the NVM 2954 * needs to be fixed. This bit is an indication that the NVM
3003 * was prepared by OEM software and did not calculate the 2955 * was prepared by OEM software and did not calculate the
3004 * checksum...a likely scenario. 2956 * checksum...a likely scenario.
@@ -3048,8 +3000,7 @@ void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw)
3048 pr0.range.wpe = true; 3000 pr0.range.wpe = true;
3049 ew32flash(ICH_FLASH_PR0, pr0.regval); 3001 ew32flash(ICH_FLASH_PR0, pr0.regval);
3050 3002
3051 /* 3003 /* Lock down a subset of GbE Flash Control Registers, e.g.
3052 * Lock down a subset of GbE Flash Control Registers, e.g.
3053 * PR0 to prevent the write-protection from being lifted. 3004 * PR0 to prevent the write-protection from being lifted.
3054 * Once FLOCKDN is set, the registers protected by it cannot 3005 * Once FLOCKDN is set, the registers protected by it cannot
3055 * be written until FLOCKDN is cleared by a hardware reset. 3006 * be written until FLOCKDN is cleared by a hardware reset.
@@ -3109,8 +3060,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
3109 3060
3110 ew32flash(ICH_FLASH_FDATA0, flash_data); 3061 ew32flash(ICH_FLASH_FDATA0, flash_data);
3111 3062
3112 /* 3063 /* check if FCERR is set to 1 , if set to 1, clear it
3113 * check if FCERR is set to 1 , if set to 1, clear it
3114 * and try the whole sequence a few more times else done 3064 * and try the whole sequence a few more times else done
3115 */ 3065 */
3116 ret_val = e1000_flash_cycle_ich8lan(hw, 3066 ret_val = e1000_flash_cycle_ich8lan(hw,
@@ -3118,8 +3068,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
3118 if (!ret_val) 3068 if (!ret_val)
3119 break; 3069 break;
3120 3070
3121 /* 3071 /* If we're here, then things are most likely
3122 * If we're here, then things are most likely
3123 * completely hosed, but if the error condition 3072 * completely hosed, but if the error condition
3124 * is detected, it won't hurt to give it another 3073 * is detected, it won't hurt to give it another
3125 * try...ICH_FLASH_CYCLE_REPEAT_COUNT times. 3074 * try...ICH_FLASH_CYCLE_REPEAT_COUNT times.
@@ -3207,8 +3156,7 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)
3207 3156
3208 hsfsts.regval = er16flash(ICH_FLASH_HSFSTS); 3157 hsfsts.regval = er16flash(ICH_FLASH_HSFSTS);
3209 3158
3210 /* 3159 /* Determine HW Sector size: Read BERASE bits of hw flash status
3211 * Determine HW Sector size: Read BERASE bits of hw flash status
3212 * register 3160 * register
3213 * 00: The Hw sector is 256 bytes, hence we need to erase 16 3161 * 00: The Hw sector is 256 bytes, hence we need to erase 16
3214 * consecutive sectors. The start index for the nth Hw sector 3162 * consecutive sectors. The start index for the nth Hw sector
@@ -3253,16 +3201,14 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)
3253 if (ret_val) 3201 if (ret_val)
3254 return ret_val; 3202 return ret_val;
3255 3203
3256 /* 3204 /* Write a value 11 (block Erase) in Flash
3257 * Write a value 11 (block Erase) in Flash
3258 * Cycle field in hw flash control 3205 * Cycle field in hw flash control
3259 */ 3206 */
3260 hsflctl.regval = er16flash(ICH_FLASH_HSFCTL); 3207 hsflctl.regval = er16flash(ICH_FLASH_HSFCTL);
3261 hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_ERASE; 3208 hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_ERASE;
3262 ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval); 3209 ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval);
3263 3210
3264 /* 3211 /* Write the last 24 bits of an index within the
3265 * Write the last 24 bits of an index within the
3266 * block into Flash Linear address field in Flash 3212 * block into Flash Linear address field in Flash
3267 * Address. 3213 * Address.
3268 */ 3214 */
@@ -3274,8 +3220,7 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)
3274 if (!ret_val) 3220 if (!ret_val)
3275 break; 3221 break;
3276 3222
3277 /* 3223 /* Check if FCERR is set to 1. If 1,
3278 * Check if FCERR is set to 1. If 1,
3279 * clear it and try the whole sequence 3224 * clear it and try the whole sequence
3280 * a few more times else Done 3225 * a few more times else Done
3281 */ 3226 */
@@ -3403,8 +3348,7 @@ static s32 e1000_get_bus_info_ich8lan(struct e1000_hw *hw)
3403 3348
3404 ret_val = e1000e_get_bus_info_pcie(hw); 3349 ret_val = e1000e_get_bus_info_pcie(hw);
3405 3350
3406 /* 3351 /* ICH devices are "PCI Express"-ish. They have
3407 * ICH devices are "PCI Express"-ish. They have
3408 * a configuration space, but do not contain 3352 * a configuration space, but do not contain
3409 * PCI Express Capability registers, so bus width 3353 * PCI Express Capability registers, so bus width
3410 * must be hardcoded. 3354 * must be hardcoded.
@@ -3429,8 +3373,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
3429 u32 ctrl, reg; 3373 u32 ctrl, reg;
3430 s32 ret_val; 3374 s32 ret_val;
3431 3375
3432 /* 3376 /* Prevent the PCI-E bus from sticking if there is no TLP connection
3433 * Prevent the PCI-E bus from sticking if there is no TLP connection
3434 * on the last TLP read/write transaction when MAC is reset. 3377 * on the last TLP read/write transaction when MAC is reset.
3435 */ 3378 */
3436 ret_val = e1000e_disable_pcie_master(hw); 3379 ret_val = e1000e_disable_pcie_master(hw);
@@ -3440,8 +3383,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
3440 e_dbg("Masking off all interrupts\n"); 3383 e_dbg("Masking off all interrupts\n");
3441 ew32(IMC, 0xffffffff); 3384 ew32(IMC, 0xffffffff);
3442 3385
3443 /* 3386 /* Disable the Transmit and Receive units. Then delay to allow
3444 * Disable the Transmit and Receive units. Then delay to allow
3445 * any pending transactions to complete before we hit the MAC 3387 * any pending transactions to complete before we hit the MAC
3446 * with the global reset. 3388 * with the global reset.
3447 */ 3389 */
@@ -3474,15 +3416,13 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
3474 ctrl = er32(CTRL); 3416 ctrl = er32(CTRL);
3475 3417
3476 if (!hw->phy.ops.check_reset_block(hw)) { 3418 if (!hw->phy.ops.check_reset_block(hw)) {
3477 /* 3419 /* Full-chip reset requires MAC and PHY reset at the same
3478 * Full-chip reset requires MAC and PHY reset at the same
3479 * time to make sure the interface between MAC and the 3420 * time to make sure the interface between MAC and the
3480 * external PHY is reset. 3421 * external PHY is reset.
3481 */ 3422 */
3482 ctrl |= E1000_CTRL_PHY_RST; 3423 ctrl |= E1000_CTRL_PHY_RST;
3483 3424
3484 /* 3425 /* Gate automatic PHY configuration by hardware on
3485 * Gate automatic PHY configuration by hardware on
3486 * non-managed 82579 3426 * non-managed 82579
3487 */ 3427 */
3488 if ((hw->mac.type == e1000_pch2lan) && 3428 if ((hw->mac.type == e1000_pch2lan) &&
@@ -3516,8 +3456,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
3516 return ret_val; 3456 return ret_val;
3517 } 3457 }
3518 3458
3519 /* 3459 /* For PCH, this write will make sure that any noise
3520 * For PCH, this write will make sure that any noise
3521 * will be detected as a CRC error and be dropped rather than show up 3460 * will be detected as a CRC error and be dropped rather than show up
3522 * as a bad packet to the DMA engine. 3461 * as a bad packet to the DMA engine.
3523 */ 3462 */
@@ -3569,8 +3508,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
3569 for (i = 0; i < mac->mta_reg_count; i++) 3508 for (i = 0; i < mac->mta_reg_count; i++)
3570 E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0); 3509 E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0);
3571 3510
3572 /* 3511 /* The 82578 Rx buffer will stall if wakeup is enabled in host and
3573 * The 82578 Rx buffer will stall if wakeup is enabled in host and
3574 * the ME. Disable wakeup by clearing the host wakeup bit. 3512 * the ME. Disable wakeup by clearing the host wakeup bit.
3575 * Reset the phy after disabling host wakeup to reset the Rx buffer. 3513 * Reset the phy after disabling host wakeup to reset the Rx buffer.
3576 */ 3514 */
@@ -3600,8 +3538,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
3600 E1000_TXDCTL_MAX_TX_DESC_PREFETCH; 3538 E1000_TXDCTL_MAX_TX_DESC_PREFETCH;
3601 ew32(TXDCTL(1), txdctl); 3539 ew32(TXDCTL(1), txdctl);
3602 3540
3603 /* 3541 /* ICH8 has opposite polarity of no_snoop bits.
3604 * ICH8 has opposite polarity of no_snoop bits.
3605 * By default, we should use snoop behavior. 3542 * By default, we should use snoop behavior.
3606 */ 3543 */
3607 if (mac->type == e1000_ich8lan) 3544 if (mac->type == e1000_ich8lan)
@@ -3614,8 +3551,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
3614 ctrl_ext |= E1000_CTRL_EXT_RO_DIS; 3551 ctrl_ext |= E1000_CTRL_EXT_RO_DIS;
3615 ew32(CTRL_EXT, ctrl_ext); 3552 ew32(CTRL_EXT, ctrl_ext);
3616 3553
3617 /* 3554 /* Clear all of the statistics registers (clear on read). It is
3618 * Clear all of the statistics registers (clear on read). It is
3619 * important that we do this after we have tried to establish link 3555 * important that we do this after we have tried to establish link
3620 * because the symbol error count will increment wildly if there 3556 * because the symbol error count will increment wildly if there
3621 * is no link. 3557 * is no link.
@@ -3676,15 +3612,13 @@ static void e1000_initialize_hw_bits_ich8lan(struct e1000_hw *hw)
3676 ew32(STATUS, reg); 3612 ew32(STATUS, reg);
3677 } 3613 }
3678 3614
3679 /* 3615 /* work-around descriptor data corruption issue during nfs v2 udp
3680 * work-around descriptor data corruption issue during nfs v2 udp
3681 * traffic, just disable the nfs filtering capability 3616 * traffic, just disable the nfs filtering capability
3682 */ 3617 */
3683 reg = er32(RFCTL); 3618 reg = er32(RFCTL);
3684 reg |= (E1000_RFCTL_NFSW_DIS | E1000_RFCTL_NFSR_DIS); 3619 reg |= (E1000_RFCTL_NFSW_DIS | E1000_RFCTL_NFSR_DIS);
3685 3620
3686 /* 3621 /* Disable IPv6 extension header parsing because some malformed
3687 * Disable IPv6 extension header parsing because some malformed
3688 * IPv6 headers can hang the Rx. 3622 * IPv6 headers can hang the Rx.
3689 */ 3623 */
3690 if (hw->mac.type == e1000_ich8lan) 3624 if (hw->mac.type == e1000_ich8lan)
@@ -3709,8 +3643,7 @@ static s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)
3709 if (hw->phy.ops.check_reset_block(hw)) 3643 if (hw->phy.ops.check_reset_block(hw))
3710 return 0; 3644 return 0;
3711 3645
3712 /* 3646 /* ICH parts do not have a word in the NVM to determine
3713 * ICH parts do not have a word in the NVM to determine
3714 * the default flow control setting, so we explicitly 3647 * the default flow control setting, so we explicitly
3715 * set it to full. 3648 * set it to full.
3716 */ 3649 */
@@ -3722,8 +3655,7 @@ static s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)
3722 hw->fc.requested_mode = e1000_fc_full; 3655 hw->fc.requested_mode = e1000_fc_full;
3723 } 3656 }
3724 3657
3725 /* 3658 /* Save off the requested flow control mode for use later. Depending
3726 * Save off the requested flow control mode for use later. Depending
3727 * on the link partner's capabilities, we may or may not use this mode. 3659 * on the link partner's capabilities, we may or may not use this mode.
3728 */ 3660 */
3729 hw->fc.current_mode = hw->fc.requested_mode; 3661 hw->fc.current_mode = hw->fc.requested_mode;
@@ -3771,8 +3703,7 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)
3771 ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX); 3703 ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
3772 ew32(CTRL, ctrl); 3704 ew32(CTRL, ctrl);
3773 3705
3774 /* 3706 /* Set the mac to wait the maximum time between each iteration
3775 * Set the mac to wait the maximum time between each iteration
3776 * and increase the max iterations when polling the phy; 3707 * and increase the max iterations when polling the phy;
3777 * this fixes erroneous timeouts at 10Mbps. 3708 * this fixes erroneous timeouts at 10Mbps.
3778 */ 3709 */
@@ -3892,8 +3823,7 @@ static s32 e1000_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw)
3892 if (!dev_spec->kmrn_lock_loss_workaround_enabled) 3823 if (!dev_spec->kmrn_lock_loss_workaround_enabled)
3893 return 0; 3824 return 0;
3894 3825
3895 /* 3826 /* Make sure link is up before proceeding. If not just return.
3896 * Make sure link is up before proceeding. If not just return.
3897 * Attempting this while link is negotiating fouled up link 3827 * Attempting this while link is negotiating fouled up link
3898 * stability 3828 * stability
3899 */ 3829 */
@@ -3925,8 +3855,7 @@ static s32 e1000_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw)
3925 E1000_PHY_CTRL_NOND0A_GBE_DISABLE); 3855 E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
3926 ew32(PHY_CTRL, phy_ctrl); 3856 ew32(PHY_CTRL, phy_ctrl);
3927 3857
3928 /* 3858 /* Call gig speed drop workaround on Gig disable before accessing
3929 * Call gig speed drop workaround on Gig disable before accessing
3930 * any PHY registers 3859 * any PHY registers
3931 */ 3860 */
3932 e1000e_gig_downshift_workaround_ich8lan(hw); 3861 e1000e_gig_downshift_workaround_ich8lan(hw);
@@ -3983,8 +3912,7 @@ void e1000e_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw)
3983 E1000_PHY_CTRL_NOND0A_GBE_DISABLE); 3912 E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
3984 ew32(PHY_CTRL, reg); 3913 ew32(PHY_CTRL, reg);
3985 3914
3986 /* 3915 /* Call gig speed drop workaround on Gig disable before
3987 * Call gig speed drop workaround on Gig disable before
3988 * accessing any PHY registers 3916 * accessing any PHY registers
3989 */ 3917 */
3990 if (hw->mac.type == e1000_ich8lan) 3918 if (hw->mac.type == e1000_ich8lan)
@@ -4078,8 +4006,7 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
4078 goto release; 4006 goto release;
4079 e1e_rphy_locked(hw, I82579_EMI_DATA, &eee_advert); 4007 e1e_rphy_locked(hw, I82579_EMI_DATA, &eee_advert);
4080 4008
4081 /* 4009 /* Disable LPLU if both link partners support 100BaseT
4082 * Disable LPLU if both link partners support 100BaseT
4083 * EEE and 100Full is advertised on both ends of the 4010 * EEE and 100Full is advertised on both ends of the
4084 * link. 4011 * link.
4085 */ 4012 */
@@ -4091,8 +4018,7 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
4091 E1000_PHY_CTRL_NOND0A_LPLU); 4018 E1000_PHY_CTRL_NOND0A_LPLU);
4092 } 4019 }
4093 4020
4094 /* 4021 /* For i217 Intel Rapid Start Technology support,
4095 * For i217 Intel Rapid Start Technology support,
4096 * when the system is going into Sx and no manageability engine 4022 * when the system is going into Sx and no manageability engine
4097 * is present, the driver must configure proxy to reset only on 4023 * is present, the driver must configure proxy to reset only on
4098 * power good. LPI (Low Power Idle) state must also reset only 4024 * power good. LPI (Low Power Idle) state must also reset only
@@ -4106,8 +4032,7 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
4106 phy_reg |= I217_PROXY_CTRL_AUTO_DISABLE; 4032 phy_reg |= I217_PROXY_CTRL_AUTO_DISABLE;
4107 e1e_wphy_locked(hw, I217_PROXY_CTRL, phy_reg); 4033 e1e_wphy_locked(hw, I217_PROXY_CTRL, phy_reg);
4108 4034
4109 /* 4035 /* Set bit enable LPI (EEE) to reset only on
4110 * Set bit enable LPI (EEE) to reset only on
4111 * power good. 4036 * power good.
4112 */ 4037 */
4113 e1e_rphy_locked(hw, I217_SxCTRL, &phy_reg); 4038 e1e_rphy_locked(hw, I217_SxCTRL, &phy_reg);
@@ -4120,8 +4045,7 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
4120 e1e_wphy_locked(hw, I217_MEMPWR, phy_reg); 4045 e1e_wphy_locked(hw, I217_MEMPWR, phy_reg);
4121 } 4046 }
4122 4047
4123 /* 4048 /* Enable MTA to reset for Intel Rapid Start Technology
4124 * Enable MTA to reset for Intel Rapid Start Technology
4125 * Support 4049 * Support
4126 */ 4050 */
4127 e1e_rphy_locked(hw, I217_CGFREG, &phy_reg); 4051 e1e_rphy_locked(hw, I217_CGFREG, &phy_reg);
@@ -4175,8 +4099,7 @@ void e1000_resume_workarounds_pchlan(struct e1000_hw *hw)
4175 return; 4099 return;
4176 } 4100 }
4177 4101
4178 /* 4102 /* For i217 Intel Rapid Start Technology support when the system
4179 * For i217 Intel Rapid Start Technology support when the system
4180 * is transitioning from Sx and no manageability engine is present 4103 * is transitioning from Sx and no manageability engine is present
4181 * configure SMBus to restore on reset, disable proxy, and enable 4104 * configure SMBus to restore on reset, disable proxy, and enable
4182 * the reset on MTA (Multicast table array). 4105 * the reset on MTA (Multicast table array).
@@ -4191,8 +4114,7 @@ void e1000_resume_workarounds_pchlan(struct e1000_hw *hw)
4191 } 4114 }
4192 4115
4193 if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) { 4116 if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) {
4194 /* 4117 /* Restore clear on SMB if no manageability engine
4195 * Restore clear on SMB if no manageability engine
4196 * is present 4118 * is present
4197 */ 4119 */
4198 ret_val = e1e_rphy_locked(hw, I217_MEMPWR, &phy_reg); 4120 ret_val = e1e_rphy_locked(hw, I217_MEMPWR, &phy_reg);
@@ -4298,8 +4220,7 @@ static s32 e1000_led_on_pchlan(struct e1000_hw *hw)
4298 u16 data = (u16)hw->mac.ledctl_mode2; 4220 u16 data = (u16)hw->mac.ledctl_mode2;
4299 u32 i, led; 4221 u32 i, led;
4300 4222
4301 /* 4223 /* If no link, then turn LED on by setting the invert bit
4302 * If no link, then turn LED on by setting the invert bit
4303 * for each LED that's mode is "link_up" in ledctl_mode2. 4224 * for each LED that's mode is "link_up" in ledctl_mode2.
4304 */ 4225 */
4305 if (!(er32(STATUS) & E1000_STATUS_LU)) { 4226 if (!(er32(STATUS) & E1000_STATUS_LU)) {
@@ -4329,8 +4250,7 @@ static s32 e1000_led_off_pchlan(struct e1000_hw *hw)
4329 u16 data = (u16)hw->mac.ledctl_mode1; 4250 u16 data = (u16)hw->mac.ledctl_mode1;
4330 u32 i, led; 4251 u32 i, led;
4331 4252
4332 /* 4253 /* If no link, then turn LED off by clearing the invert bit
4333 * If no link, then turn LED off by clearing the invert bit
4334 * for each LED that's mode is "link_up" in ledctl_mode1. 4254 * for each LED that's mode is "link_up" in ledctl_mode1.
4335 */ 4255 */
4336 if (!(er32(STATUS) & E1000_STATUS_LU)) { 4256 if (!(er32(STATUS) & E1000_STATUS_LU)) {
@@ -4375,8 +4295,7 @@ static s32 e1000_get_cfg_done_ich8lan(struct e1000_hw *hw)
4375 } else { 4295 } else {
4376 ret_val = e1000e_get_auto_rd_done(hw); 4296 ret_val = e1000e_get_auto_rd_done(hw);
4377 if (ret_val) { 4297 if (ret_val) {
4378 /* 4298 /* When auto config read does not complete, do not
4379 * When auto config read does not complete, do not
4380 * return with an error. This can happen in situations 4299 * return with an error. This can happen in situations
4381 * where there is no eeprom and prevents getting link. 4300 * where there is no eeprom and prevents getting link.
4382 */ 4301 */
diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c
index a13439928488..54d9dafaf126 100644
--- a/drivers/net/ethernet/intel/e1000e/mac.c
+++ b/drivers/net/ethernet/intel/e1000e/mac.c
@@ -73,8 +73,7 @@ void e1000_set_lan_id_multi_port_pcie(struct e1000_hw *hw)
73 struct e1000_bus_info *bus = &hw->bus; 73 struct e1000_bus_info *bus = &hw->bus;
74 u32 reg; 74 u32 reg;
75 75
76 /* 76 /* The status register reports the correct function number
77 * The status register reports the correct function number
78 * for the device regardless of function swap state. 77 * for the device regardless of function swap state.
79 */ 78 */
80 reg = er32(STATUS); 79 reg = er32(STATUS);
@@ -210,8 +209,7 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
210 return 0; 209 return 0;
211 } 210 }
212 211
213 /* 212 /* We have a valid alternate MAC address, and we want to treat it the
214 * We have a valid alternate MAC address, and we want to treat it the
215 * same as the normal permanent MAC address stored by the HW into the 213 * same as the normal permanent MAC address stored by the HW into the
216 * RAR. Do this by mapping this address into RAR0. 214 * RAR. Do this by mapping this address into RAR0.
217 */ 215 */
@@ -233,8 +231,7 @@ void e1000e_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)
233{ 231{
234 u32 rar_low, rar_high; 232 u32 rar_low, rar_high;
235 233
236 /* 234 /* HW expects these in little endian so we reverse the byte order
237 * HW expects these in little endian so we reverse the byte order
238 * from network order (big endian) to little endian 235 * from network order (big endian) to little endian
239 */ 236 */
240 rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) | 237 rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) |
@@ -246,8 +243,7 @@ void e1000e_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)
246 if (rar_low || rar_high) 243 if (rar_low || rar_high)
247 rar_high |= E1000_RAH_AV; 244 rar_high |= E1000_RAH_AV;
248 245
249 /* 246 /* Some bridges will combine consecutive 32-bit writes into
250 * Some bridges will combine consecutive 32-bit writes into
251 * a single burst write, which will malfunction on some parts. 247 * a single burst write, which will malfunction on some parts.
252 * The flushes avoid this. 248 * The flushes avoid this.
253 */ 249 */
@@ -273,15 +269,13 @@ static u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr)
273 /* Register count multiplied by bits per register */ 269 /* Register count multiplied by bits per register */
274 hash_mask = (hw->mac.mta_reg_count * 32) - 1; 270 hash_mask = (hw->mac.mta_reg_count * 32) - 1;
275 271
276 /* 272 /* For a mc_filter_type of 0, bit_shift is the number of left-shifts
277 * For a mc_filter_type of 0, bit_shift is the number of left-shifts
278 * where 0xFF would still fall within the hash mask. 273 * where 0xFF would still fall within the hash mask.
279 */ 274 */
280 while (hash_mask >> bit_shift != 0xFF) 275 while (hash_mask >> bit_shift != 0xFF)
281 bit_shift++; 276 bit_shift++;
282 277
283 /* 278 /* The portion of the address that is used for the hash table
284 * The portion of the address that is used for the hash table
285 * is determined by the mc_filter_type setting. 279 * is determined by the mc_filter_type setting.
286 * The algorithm is such that there is a total of 8 bits of shifting. 280 * The algorithm is such that there is a total of 8 bits of shifting.
287 * The bit_shift for a mc_filter_type of 0 represents the number of 281 * The bit_shift for a mc_filter_type of 0 represents the number of
@@ -423,8 +417,7 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)
423 s32 ret_val; 417 s32 ret_val;
424 bool link; 418 bool link;
425 419
426 /* 420 /* We only want to go out to the PHY registers to see if Auto-Neg
427 * We only want to go out to the PHY registers to see if Auto-Neg
428 * has completed and/or if our link status has changed. The 421 * has completed and/or if our link status has changed. The
429 * get_link_status flag is set upon receiving a Link Status 422 * get_link_status flag is set upon receiving a Link Status
430 * Change or Rx Sequence Error interrupt. 423 * Change or Rx Sequence Error interrupt.
@@ -432,8 +425,7 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)
432 if (!mac->get_link_status) 425 if (!mac->get_link_status)
433 return 0; 426 return 0;
434 427
435 /* 428 /* First we want to see if the MII Status Register reports
436 * First we want to see if the MII Status Register reports
437 * link. If so, then we want to get the current speed/duplex 429 * link. If so, then we want to get the current speed/duplex
438 * of the PHY. 430 * of the PHY.
439 */ 431 */
@@ -446,28 +438,24 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)
446 438
447 mac->get_link_status = false; 439 mac->get_link_status = false;
448 440
449 /* 441 /* Check if there was DownShift, must be checked
450 * Check if there was DownShift, must be checked
451 * immediately after link-up 442 * immediately after link-up
452 */ 443 */
453 e1000e_check_downshift(hw); 444 e1000e_check_downshift(hw);
454 445
455 /* 446 /* If we are forcing speed/duplex, then we simply return since
456 * If we are forcing speed/duplex, then we simply return since
457 * we have already determined whether we have link or not. 447 * we have already determined whether we have link or not.
458 */ 448 */
459 if (!mac->autoneg) 449 if (!mac->autoneg)
460 return -E1000_ERR_CONFIG; 450 return -E1000_ERR_CONFIG;
461 451
462 /* 452 /* Auto-Neg is enabled. Auto Speed Detection takes care
463 * Auto-Neg is enabled. Auto Speed Detection takes care
464 * of MAC speed/duplex configuration. So we only need to 453 * of MAC speed/duplex configuration. So we only need to
465 * configure Collision Distance in the MAC. 454 * configure Collision Distance in the MAC.
466 */ 455 */
467 mac->ops.config_collision_dist(hw); 456 mac->ops.config_collision_dist(hw);
468 457
469 /* 458 /* Configure Flow Control now that Auto-Neg has completed.
470 * Configure Flow Control now that Auto-Neg has completed.
471 * First, we need to restore the desired flow control 459 * First, we need to restore the desired flow control
472 * settings because we may have had to re-autoneg with a 460 * settings because we may have had to re-autoneg with a
473 * different link partner. 461 * different link partner.
@@ -498,8 +486,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)
498 status = er32(STATUS); 486 status = er32(STATUS);
499 rxcw = er32(RXCW); 487 rxcw = er32(RXCW);
500 488
501 /* 489 /* If we don't have link (auto-negotiation failed or link partner
502 * If we don't have link (auto-negotiation failed or link partner
503 * cannot auto-negotiate), the cable is plugged in (we have signal), 490 * cannot auto-negotiate), the cable is plugged in (we have signal),
504 * and our link partner is not trying to auto-negotiate with us (we 491 * and our link partner is not trying to auto-negotiate with us (we
505 * are receiving idles or data), we need to force link up. We also 492 * are receiving idles or data), we need to force link up. We also
@@ -530,8 +517,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)
530 return ret_val; 517 return ret_val;
531 } 518 }
532 } else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) { 519 } else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) {
533 /* 520 /* If we are forcing link and we are receiving /C/ ordered
534 * If we are forcing link and we are receiving /C/ ordered
535 * sets, re-enable auto-negotiation in the TXCW register 521 * sets, re-enable auto-negotiation in the TXCW register
536 * and disable forced link in the Device Control register 522 * and disable forced link in the Device Control register
537 * in an attempt to auto-negotiate with our link partner. 523 * in an attempt to auto-negotiate with our link partner.
@@ -565,8 +551,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
565 status = er32(STATUS); 551 status = er32(STATUS);
566 rxcw = er32(RXCW); 552 rxcw = er32(RXCW);
567 553
568 /* 554 /* If we don't have link (auto-negotiation failed or link partner
569 * If we don't have link (auto-negotiation failed or link partner
570 * cannot auto-negotiate), and our link partner is not trying to 555 * cannot auto-negotiate), and our link partner is not trying to
571 * auto-negotiate with us (we are receiving idles or data), 556 * auto-negotiate with us (we are receiving idles or data),
572 * we need to force link up. We also need to give auto-negotiation 557 * we need to force link up. We also need to give auto-negotiation
@@ -595,8 +580,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
595 return ret_val; 580 return ret_val;
596 } 581 }
597 } else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) { 582 } else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) {
598 /* 583 /* If we are forcing link and we are receiving /C/ ordered
599 * If we are forcing link and we are receiving /C/ ordered
600 * sets, re-enable auto-negotiation in the TXCW register 584 * sets, re-enable auto-negotiation in the TXCW register
601 * and disable forced link in the Device Control register 585 * and disable forced link in the Device Control register
602 * in an attempt to auto-negotiate with our link partner. 586 * in an attempt to auto-negotiate with our link partner.
@@ -607,8 +591,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
607 591
608 mac->serdes_has_link = true; 592 mac->serdes_has_link = true;
609 } else if (!(E1000_TXCW_ANE & er32(TXCW))) { 593 } else if (!(E1000_TXCW_ANE & er32(TXCW))) {
610 /* 594 /* If we force link for non-auto-negotiation switch, check
611 * If we force link for non-auto-negotiation switch, check
612 * link status based on MAC synchronization for internal 595 * link status based on MAC synchronization for internal
613 * serdes media type. 596 * serdes media type.
614 */ 597 */
@@ -665,8 +648,7 @@ static s32 e1000_set_default_fc_generic(struct e1000_hw *hw)
665 s32 ret_val; 648 s32 ret_val;
666 u16 nvm_data; 649 u16 nvm_data;
667 650
668 /* 651 /* Read and store word 0x0F of the EEPROM. This word contains bits
669 * Read and store word 0x0F of the EEPROM. This word contains bits
670 * that determine the hardware's default PAUSE (flow control) mode, 652 * that determine the hardware's default PAUSE (flow control) mode,
671 * a bit that determines whether the HW defaults to enabling or 653 * a bit that determines whether the HW defaults to enabling or
672 * disabling auto-negotiation, and the direction of the 654 * disabling auto-negotiation, and the direction of the
@@ -705,15 +687,13 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)
705{ 687{
706 s32 ret_val; 688 s32 ret_val;
707 689
708 /* 690 /* In the case of the phy reset being blocked, we already have a link.
709 * In the case of the phy reset being blocked, we already have a link.
710 * We do not need to set it up again. 691 * We do not need to set it up again.
711 */ 692 */
712 if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw)) 693 if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw))
713 return 0; 694 return 0;
714 695
715 /* 696 /* If requested flow control is set to default, set flow control
716 * If requested flow control is set to default, set flow control
717 * based on the EEPROM flow control settings. 697 * based on the EEPROM flow control settings.
718 */ 698 */
719 if (hw->fc.requested_mode == e1000_fc_default) { 699 if (hw->fc.requested_mode == e1000_fc_default) {
@@ -722,8 +702,7 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)
722 return ret_val; 702 return ret_val;
723 } 703 }
724 704
725 /* 705 /* Save off the requested flow control mode for use later. Depending
726 * Save off the requested flow control mode for use later. Depending
727 * on the link partner's capabilities, we may or may not use this mode. 706 * on the link partner's capabilities, we may or may not use this mode.
728 */ 707 */
729 hw->fc.current_mode = hw->fc.requested_mode; 708 hw->fc.current_mode = hw->fc.requested_mode;
@@ -735,8 +714,7 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)
735 if (ret_val) 714 if (ret_val)
736 return ret_val; 715 return ret_val;
737 716
738 /* 717 /* Initialize the flow control address, type, and PAUSE timer
739 * Initialize the flow control address, type, and PAUSE timer
740 * registers to their default values. This is done even if flow 718 * registers to their default values. This is done even if flow
741 * control is disabled, because it does not hurt anything to 719 * control is disabled, because it does not hurt anything to
742 * initialize these registers. 720 * initialize these registers.
@@ -763,8 +741,7 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)
763 struct e1000_mac_info *mac = &hw->mac; 741 struct e1000_mac_info *mac = &hw->mac;
764 u32 txcw; 742 u32 txcw;
765 743
766 /* 744 /* Check for a software override of the flow control settings, and
767 * Check for a software override of the flow control settings, and
768 * setup the device accordingly. If auto-negotiation is enabled, then 745 * setup the device accordingly. If auto-negotiation is enabled, then
769 * software will have to set the "PAUSE" bits to the correct value in 746 * software will have to set the "PAUSE" bits to the correct value in
770 * the Transmit Config Word Register (TXCW) and re-start auto- 747 * the Transmit Config Word Register (TXCW) and re-start auto-
@@ -786,8 +763,7 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)
786 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD); 763 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD);
787 break; 764 break;
788 case e1000_fc_rx_pause: 765 case e1000_fc_rx_pause:
789 /* 766 /* Rx Flow control is enabled and Tx Flow control is disabled
790 * Rx Flow control is enabled and Tx Flow control is disabled
791 * by a software over-ride. Since there really isn't a way to 767 * by a software over-ride. Since there really isn't a way to
792 * advertise that we are capable of Rx Pause ONLY, we will 768 * advertise that we are capable of Rx Pause ONLY, we will
793 * advertise that we support both symmetric and asymmetric Rx 769 * advertise that we support both symmetric and asymmetric Rx
@@ -797,15 +773,13 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)
797 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK); 773 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK);
798 break; 774 break;
799 case e1000_fc_tx_pause: 775 case e1000_fc_tx_pause:
800 /* 776 /* Tx Flow control is enabled, and Rx Flow control is disabled,
801 * Tx Flow control is enabled, and Rx Flow control is disabled,
802 * by a software over-ride. 777 * by a software over-ride.
803 */ 778 */
804 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_ASM_DIR); 779 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_ASM_DIR);
805 break; 780 break;
806 case e1000_fc_full: 781 case e1000_fc_full:
807 /* 782 /* Flow control (both Rx and Tx) is enabled by a software
808 * Flow control (both Rx and Tx) is enabled by a software
809 * over-ride. 783 * over-ride.
810 */ 784 */
811 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK); 785 txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK);
@@ -835,8 +809,7 @@ static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw)
835 u32 i, status; 809 u32 i, status;
836 s32 ret_val; 810 s32 ret_val;
837 811
838 /* 812 /* If we have a signal (the cable is plugged in, or assumed true for
839 * If we have a signal (the cable is plugged in, or assumed true for
840 * serdes media) then poll for a "Link-Up" indication in the Device 813 * serdes media) then poll for a "Link-Up" indication in the Device
841 * Status Register. Time-out if a link isn't seen in 500 milliseconds 814 * Status Register. Time-out if a link isn't seen in 500 milliseconds
842 * seconds (Auto-negotiation should complete in less than 500 815 * seconds (Auto-negotiation should complete in less than 500
@@ -851,8 +824,7 @@ static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw)
851 if (i == FIBER_LINK_UP_LIMIT) { 824 if (i == FIBER_LINK_UP_LIMIT) {
852 e_dbg("Never got a valid link from auto-neg!!!\n"); 825 e_dbg("Never got a valid link from auto-neg!!!\n");
853 mac->autoneg_failed = true; 826 mac->autoneg_failed = true;
854 /* 827 /* AutoNeg failed to achieve a link, so we'll call
855 * AutoNeg failed to achieve a link, so we'll call
856 * mac->check_for_link. This routine will force the 828 * mac->check_for_link. This routine will force the
857 * link up if we detect a signal. This will allow us to 829 * link up if we detect a signal. This will allow us to
858 * communicate with non-autonegotiating link partners. 830 * communicate with non-autonegotiating link partners.
@@ -894,8 +866,7 @@ s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw)
894 if (ret_val) 866 if (ret_val)
895 return ret_val; 867 return ret_val;
896 868
897 /* 869 /* Since auto-negotiation is enabled, take the link out of reset (the
898 * Since auto-negotiation is enabled, take the link out of reset (the
899 * link will be in reset, because we previously reset the chip). This 870 * link will be in reset, because we previously reset the chip). This
900 * will restart auto-negotiation. If auto-negotiation is successful 871 * will restart auto-negotiation. If auto-negotiation is successful
901 * then the link-up status bit will be set and the flow control enable 872 * then the link-up status bit will be set and the flow control enable
@@ -907,8 +878,7 @@ s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw)
907 e1e_flush(); 878 e1e_flush();
908 usleep_range(1000, 2000); 879 usleep_range(1000, 2000);
909 880
910 /* 881 /* For these adapters, the SW definable pin 1 is set when the optics
911 * For these adapters, the SW definable pin 1 is set when the optics
912 * detect a signal. If we have a signal, then poll for a "Link-Up" 882 * detect a signal. If we have a signal, then poll for a "Link-Up"
913 * indication. 883 * indication.
914 */ 884 */
@@ -954,16 +924,14 @@ s32 e1000e_set_fc_watermarks(struct e1000_hw *hw)
954{ 924{
955 u32 fcrtl = 0, fcrth = 0; 925 u32 fcrtl = 0, fcrth = 0;
956 926
957 /* 927 /* Set the flow control receive threshold registers. Normally,
958 * Set the flow control receive threshold registers. Normally,
959 * these registers will be set to a default threshold that may be 928 * these registers will be set to a default threshold that may be
960 * adjusted later by the driver's runtime code. However, if the 929 * adjusted later by the driver's runtime code. However, if the
961 * ability to transmit pause frames is not enabled, then these 930 * ability to transmit pause frames is not enabled, then these
962 * registers will be set to 0. 931 * registers will be set to 0.
963 */ 932 */
964 if (hw->fc.current_mode & e1000_fc_tx_pause) { 933 if (hw->fc.current_mode & e1000_fc_tx_pause) {
965 /* 934 /* We need to set up the Receive Threshold high and low water
966 * We need to set up the Receive Threshold high and low water
967 * marks as well as (optionally) enabling the transmission of 935 * marks as well as (optionally) enabling the transmission of
968 * XON frames. 936 * XON frames.
969 */ 937 */
@@ -995,8 +963,7 @@ s32 e1000e_force_mac_fc(struct e1000_hw *hw)
995 963
996 ctrl = er32(CTRL); 964 ctrl = er32(CTRL);
997 965
998 /* 966 /* Because we didn't get link via the internal auto-negotiation
999 * Because we didn't get link via the internal auto-negotiation
1000 * mechanism (we either forced link or we got link via PHY 967 * mechanism (we either forced link or we got link via PHY
1001 * auto-neg), we have to manually enable/disable transmit an 968 * auto-neg), we have to manually enable/disable transmit an
1002 * receive flow control. 969 * receive flow control.
@@ -1057,8 +1024,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1057 u16 mii_status_reg, mii_nway_adv_reg, mii_nway_lp_ability_reg; 1024 u16 mii_status_reg, mii_nway_adv_reg, mii_nway_lp_ability_reg;
1058 u16 speed, duplex; 1025 u16 speed, duplex;
1059 1026
1060 /* 1027 /* Check for the case where we have fiber media and auto-neg failed
1061 * Check for the case where we have fiber media and auto-neg failed
1062 * so we had to force link. In this case, we need to force the 1028 * so we had to force link. In this case, we need to force the
1063 * configuration of the MAC to match the "fc" parameter. 1029 * configuration of the MAC to match the "fc" parameter.
1064 */ 1030 */
@@ -1076,15 +1042,13 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1076 return ret_val; 1042 return ret_val;
1077 } 1043 }
1078 1044
1079 /* 1045 /* Check for the case where we have copper media and auto-neg is
1080 * Check for the case where we have copper media and auto-neg is
1081 * enabled. In this case, we need to check and see if Auto-Neg 1046 * enabled. In this case, we need to check and see if Auto-Neg
1082 * has completed, and if so, how the PHY and link partner has 1047 * has completed, and if so, how the PHY and link partner has
1083 * flow control configured. 1048 * flow control configured.
1084 */ 1049 */
1085 if ((hw->phy.media_type == e1000_media_type_copper) && mac->autoneg) { 1050 if ((hw->phy.media_type == e1000_media_type_copper) && mac->autoneg) {
1086 /* 1051 /* Read the MII Status Register and check to see if AutoNeg
1087 * Read the MII Status Register and check to see if AutoNeg
1088 * has completed. We read this twice because this reg has 1052 * has completed. We read this twice because this reg has
1089 * some "sticky" (latched) bits. 1053 * some "sticky" (latched) bits.
1090 */ 1054 */
@@ -1100,8 +1064,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1100 return ret_val; 1064 return ret_val;
1101 } 1065 }
1102 1066
1103 /* 1067 /* The AutoNeg process has completed, so we now need to
1104 * The AutoNeg process has completed, so we now need to
1105 * read both the Auto Negotiation Advertisement 1068 * read both the Auto Negotiation Advertisement
1106 * Register (Address 4) and the Auto_Negotiation Base 1069 * Register (Address 4) and the Auto_Negotiation Base
1107 * Page Ability Register (Address 5) to determine how 1070 * Page Ability Register (Address 5) to determine how
@@ -1115,8 +1078,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1115 if (ret_val) 1078 if (ret_val)
1116 return ret_val; 1079 return ret_val;
1117 1080
1118 /* 1081 /* Two bits in the Auto Negotiation Advertisement Register
1119 * Two bits in the Auto Negotiation Advertisement Register
1120 * (Address 4) and two bits in the Auto Negotiation Base 1082 * (Address 4) and two bits in the Auto Negotiation Base
1121 * Page Ability Register (Address 5) determine flow control 1083 * Page Ability Register (Address 5) determine flow control
1122 * for both the PHY and the link partner. The following 1084 * for both the PHY and the link partner. The following
@@ -1151,8 +1113,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1151 */ 1113 */
1152 if ((mii_nway_adv_reg & NWAY_AR_PAUSE) && 1114 if ((mii_nway_adv_reg & NWAY_AR_PAUSE) &&
1153 (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE)) { 1115 (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE)) {
1154 /* 1116 /* Now we need to check if the user selected Rx ONLY
1155 * Now we need to check if the user selected Rx ONLY
1156 * of pause frames. In this case, we had to advertise 1117 * of pause frames. In this case, we had to advertise
1157 * FULL flow control because we could not advertise Rx 1118 * FULL flow control because we could not advertise Rx
1158 * ONLY. Hence, we must now check to see if we need to 1119 * ONLY. Hence, we must now check to see if we need to
@@ -1166,8 +1127,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1166 e_dbg("Flow Control = Rx PAUSE frames only.\n"); 1127 e_dbg("Flow Control = Rx PAUSE frames only.\n");
1167 } 1128 }
1168 } 1129 }
1169 /* 1130 /* For receiving PAUSE frames ONLY.
1170 * For receiving PAUSE frames ONLY.
1171 * 1131 *
1172 * LOCAL DEVICE | LINK PARTNER 1132 * LOCAL DEVICE | LINK PARTNER
1173 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result 1133 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result
@@ -1181,8 +1141,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1181 hw->fc.current_mode = e1000_fc_tx_pause; 1141 hw->fc.current_mode = e1000_fc_tx_pause;
1182 e_dbg("Flow Control = Tx PAUSE frames only.\n"); 1142 e_dbg("Flow Control = Tx PAUSE frames only.\n");
1183 } 1143 }
1184 /* 1144 /* For transmitting PAUSE frames ONLY.
1185 * For transmitting PAUSE frames ONLY.
1186 * 1145 *
1187 * LOCAL DEVICE | LINK PARTNER 1146 * LOCAL DEVICE | LINK PARTNER
1188 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result 1147 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result
@@ -1196,16 +1155,14 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1196 hw->fc.current_mode = e1000_fc_rx_pause; 1155 hw->fc.current_mode = e1000_fc_rx_pause;
1197 e_dbg("Flow Control = Rx PAUSE frames only.\n"); 1156 e_dbg("Flow Control = Rx PAUSE frames only.\n");
1198 } else { 1157 } else {
1199 /* 1158 /* Per the IEEE spec, at this point flow control
1200 * Per the IEEE spec, at this point flow control
1201 * should be disabled. 1159 * should be disabled.
1202 */ 1160 */
1203 hw->fc.current_mode = e1000_fc_none; 1161 hw->fc.current_mode = e1000_fc_none;
1204 e_dbg("Flow Control = NONE.\n"); 1162 e_dbg("Flow Control = NONE.\n");
1205 } 1163 }
1206 1164
1207 /* 1165 /* Now we need to do one last check... If we auto-
1208 * Now we need to do one last check... If we auto-
1209 * negotiated to HALF DUPLEX, flow control should not be 1166 * negotiated to HALF DUPLEX, flow control should not be
1210 * enabled per IEEE 802.3 spec. 1167 * enabled per IEEE 802.3 spec.
1211 */ 1168 */
@@ -1218,8 +1175,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
1218 if (duplex == HALF_DUPLEX) 1175 if (duplex == HALF_DUPLEX)
1219 hw->fc.current_mode = e1000_fc_none; 1176 hw->fc.current_mode = e1000_fc_none;
1220 1177
1221 /* 1178 /* Now we call a subroutine to actually force the MAC
1222 * Now we call a subroutine to actually force the MAC
1223 * controller to use the correct flow control settings. 1179 * controller to use the correct flow control settings.
1224 */ 1180 */
1225 ret_val = e1000e_force_mac_fc(hw); 1181 ret_val = e1000e_force_mac_fc(hw);
@@ -1520,8 +1476,7 @@ s32 e1000e_blink_led_generic(struct e1000_hw *hw)
1520 ledctl_blink = E1000_LEDCTL_LED0_BLINK | 1476 ledctl_blink = E1000_LEDCTL_LED0_BLINK |
1521 (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT); 1477 (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT);
1522 } else { 1478 } else {
1523 /* 1479 /* set the blink bit for each LED that's "on" (0x0E)
1524 * set the blink bit for each LED that's "on" (0x0E)
1525 * in ledctl_mode2 1480 * in ledctl_mode2
1526 */ 1481 */
1527 ledctl_blink = hw->mac.ledctl_mode2; 1482 ledctl_blink = hw->mac.ledctl_mode2;
diff --git a/drivers/net/ethernet/intel/e1000e/manage.c b/drivers/net/ethernet/intel/e1000e/manage.c
index bacc950fc684..6dc47beb3adc 100644
--- a/drivers/net/ethernet/intel/e1000e/manage.c
+++ b/drivers/net/ethernet/intel/e1000e/manage.c
@@ -143,8 +143,7 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
143 return hw->mac.tx_pkt_filtering; 143 return hw->mac.tx_pkt_filtering;
144 } 144 }
145 145
146 /* 146 /* If we can't read from the host interface for whatever
147 * If we can't read from the host interface for whatever
148 * reason, disable filtering. 147 * reason, disable filtering.
149 */ 148 */
150 ret_val = e1000_mng_enable_host_if(hw); 149 ret_val = e1000_mng_enable_host_if(hw);
@@ -163,8 +162,7 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
163 hdr->checksum = 0; 162 hdr->checksum = 0;
164 csum = e1000_calculate_checksum((u8 *)hdr, 163 csum = e1000_calculate_checksum((u8 *)hdr,
165 E1000_MNG_DHCP_COOKIE_LENGTH); 164 E1000_MNG_DHCP_COOKIE_LENGTH);
166 /* 165 /* If either the checksums or signature don't match, then
167 * If either the checksums or signature don't match, then
168 * the cookie area isn't considered valid, in which case we 166 * the cookie area isn't considered valid, in which case we
169 * take the safe route of assuming Tx filtering is enabled. 167 * take the safe route of assuming Tx filtering is enabled.
170 */ 168 */
@@ -252,8 +250,7 @@ static s32 e1000_mng_host_if_write(struct e1000_hw *hw, u8 *buffer,
252 /* Calculate length in DWORDs */ 250 /* Calculate length in DWORDs */
253 length >>= 2; 251 length >>= 2;
254 252
255 /* 253 /* The device driver writes the relevant command block into the
256 * The device driver writes the relevant command block into the
257 * ram area. 254 * ram area.
258 */ 255 */
259 for (i = 0; i < length; i++) { 256 for (i = 0; i < length; i++) {
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index dadb13be479a..6d06ed4e34b1 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -146,9 +146,11 @@ static const struct e1000_reg_info e1000_reg_info_tbl[] = {
146 {0, NULL} 146 {0, NULL}
147}; 147};
148 148
149/* 149/**
150 * e1000_regdump - register printout routine 150 * e1000_regdump - register printout routine
151 */ 151 * @hw: pointer to the HW structure
152 * @reginfo: pointer to the register info table
153 **/
152static void e1000_regdump(struct e1000_hw *hw, struct e1000_reg_info *reginfo) 154static void e1000_regdump(struct e1000_hw *hw, struct e1000_reg_info *reginfo)
153{ 155{
154 int n = 0; 156 int n = 0;
@@ -196,9 +198,10 @@ static void e1000e_dump_ps_pages(struct e1000_adapter *adapter,
196 } 198 }
197} 199}
198 200
199/* 201/**
200 * e1000e_dump - Print registers, Tx-ring and Rx-ring 202 * e1000e_dump - Print registers, Tx-ring and Rx-ring
201 */ 203 * @adapter: board private structure
204 **/
202static void e1000e_dump(struct e1000_adapter *adapter) 205static void e1000e_dump(struct e1000_adapter *adapter)
203{ 206{
204 struct net_device *netdev = adapter->netdev; 207 struct net_device *netdev = adapter->netdev;
@@ -623,8 +626,7 @@ map_skb:
623 rx_desc->read.buffer_addr = cpu_to_le64(buffer_info->dma); 626 rx_desc->read.buffer_addr = cpu_to_le64(buffer_info->dma);
624 627
625 if (unlikely(!(i & (E1000_RX_BUFFER_WRITE - 1)))) { 628 if (unlikely(!(i & (E1000_RX_BUFFER_WRITE - 1)))) {
626 /* 629 /* Force memory writes to complete before letting h/w
627 * Force memory writes to complete before letting h/w
628 * know there are new descriptors to fetch. (Only 630 * know there are new descriptors to fetch. (Only
629 * applicable for weak-ordered memory model archs, 631 * applicable for weak-ordered memory model archs,
630 * such as IA-64). 632 * such as IA-64).
@@ -692,8 +694,7 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_ring *rx_ring,
692 goto no_buffers; 694 goto no_buffers;
693 } 695 }
694 } 696 }
695 /* 697 /* Refresh the desc even if buffer_addrs
696 * Refresh the desc even if buffer_addrs
697 * didn't change because each write-back 698 * didn't change because each write-back
698 * erases this info. 699 * erases this info.
699 */ 700 */
@@ -726,8 +727,7 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_ring *rx_ring,
726 rx_desc->read.buffer_addr[0] = cpu_to_le64(buffer_info->dma); 727 rx_desc->read.buffer_addr[0] = cpu_to_le64(buffer_info->dma);
727 728
728 if (unlikely(!(i & (E1000_RX_BUFFER_WRITE - 1)))) { 729 if (unlikely(!(i & (E1000_RX_BUFFER_WRITE - 1)))) {
729 /* 730 /* Force memory writes to complete before letting h/w
730 * Force memory writes to complete before letting h/w
731 * know there are new descriptors to fetch. (Only 731 * know there are new descriptors to fetch. (Only
732 * applicable for weak-ordered memory model archs, 732 * applicable for weak-ordered memory model archs,
733 * such as IA-64). 733 * such as IA-64).
@@ -817,7 +817,8 @@ check_page:
817 /* Force memory writes to complete before letting h/w 817 /* Force memory writes to complete before letting h/w
818 * know there are new descriptors to fetch. (Only 818 * know there are new descriptors to fetch. (Only
819 * applicable for weak-ordered memory model archs, 819 * applicable for weak-ordered memory model archs,
820 * such as IA-64). */ 820 * such as IA-64).
821 */
821 wmb(); 822 wmb();
822 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) 823 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA)
823 e1000e_update_rdt_wa(rx_ring, i); 824 e1000e_update_rdt_wa(rx_ring, i);
@@ -891,8 +892,7 @@ static bool e1000_clean_rx_irq(struct e1000_ring *rx_ring, int *work_done,
891 892
892 length = le16_to_cpu(rx_desc->wb.upper.length); 893 length = le16_to_cpu(rx_desc->wb.upper.length);
893 894
894 /* 895 /* !EOP means multiple descriptors were used to store a single
895 * !EOP means multiple descriptors were used to store a single
896 * packet, if that's the case we need to toss it. In fact, we 896 * packet, if that's the case we need to toss it. In fact, we
897 * need to toss every packet with the EOP bit clear and the 897 * need to toss every packet with the EOP bit clear and the
898 * next frame that _does_ have the EOP bit set, as it is by 898 * next frame that _does_ have the EOP bit set, as it is by
@@ -933,8 +933,7 @@ static bool e1000_clean_rx_irq(struct e1000_ring *rx_ring, int *work_done,
933 total_rx_bytes += length; 933 total_rx_bytes += length;
934 total_rx_packets++; 934 total_rx_packets++;
935 935
936 /* 936 /* code added for copybreak, this should improve
937 * code added for copybreak, this should improve
938 * performance for small packets with large amounts 937 * performance for small packets with large amounts
939 * of reassembly being done in the stack 938 * of reassembly being done in the stack
940 */ 939 */
@@ -1032,15 +1031,13 @@ static void e1000_print_hw_hang(struct work_struct *work)
1032 1031
1033 if (!adapter->tx_hang_recheck && 1032 if (!adapter->tx_hang_recheck &&
1034 (adapter->flags2 & FLAG2_DMA_BURST)) { 1033 (adapter->flags2 & FLAG2_DMA_BURST)) {
1035 /* 1034 /* May be block on write-back, flush and detect again
1036 * May be block on write-back, flush and detect again
1037 * flush pending descriptor writebacks to memory 1035 * flush pending descriptor writebacks to memory
1038 */ 1036 */
1039 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); 1037 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD);
1040 /* execute the writes immediately */ 1038 /* execute the writes immediately */
1041 e1e_flush(); 1039 e1e_flush();
1042 /* 1040 /* Due to rare timing issues, write to TIDV again to ensure
1043 * Due to rare timing issues, write to TIDV again to ensure
1044 * the write is successful 1041 * the write is successful
1045 */ 1042 */
1046 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); 1043 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD);
@@ -1169,8 +1166,7 @@ static bool e1000_clean_tx_irq(struct e1000_ring *tx_ring)
1169 } 1166 }
1170 1167
1171 if (adapter->detect_tx_hung) { 1168 if (adapter->detect_tx_hung) {
1172 /* 1169 /* Detect a transmit hang in hardware, this serializes the
1173 * Detect a transmit hang in hardware, this serializes the
1174 * check with the clearing of time_stamp and movement of i 1170 * check with the clearing of time_stamp and movement of i
1175 */ 1171 */
1176 adapter->detect_tx_hung = false; 1172 adapter->detect_tx_hung = false;
@@ -1270,14 +1266,12 @@ static bool e1000_clean_rx_irq_ps(struct e1000_ring *rx_ring, int *work_done,
1270 skb_put(skb, length); 1266 skb_put(skb, length);
1271 1267
1272 { 1268 {
1273 /* 1269 /* this looks ugly, but it seems compiler issues make
1274 * this looks ugly, but it seems compiler issues make
1275 * it more efficient than reusing j 1270 * it more efficient than reusing j
1276 */ 1271 */
1277 int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]); 1272 int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]);
1278 1273
1279 /* 1274 /* page alloc/put takes too long and effects small
1280 * page alloc/put takes too long and effects small
1281 * packet throughput, so unsplit small packets and 1275 * packet throughput, so unsplit small packets and
1282 * save the alloc/put only valid in softirq (napi) 1276 * save the alloc/put only valid in softirq (napi)
1283 * context to call kmap_* 1277 * context to call kmap_*
@@ -1288,8 +1282,7 @@ static bool e1000_clean_rx_irq_ps(struct e1000_ring *rx_ring, int *work_done,
1288 1282
1289 ps_page = &buffer_info->ps_pages[0]; 1283 ps_page = &buffer_info->ps_pages[0];
1290 1284
1291 /* 1285 /* there is no documentation about how to call
1292 * there is no documentation about how to call
1293 * kmap_atomic, so we can't hold the mapping 1286 * kmap_atomic, so we can't hold the mapping
1294 * very long 1287 * very long
1295 */ 1288 */
@@ -1486,14 +1479,16 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,
1486 skb_shinfo(rxtop)->nr_frags, 1479 skb_shinfo(rxtop)->nr_frags,
1487 buffer_info->page, 0, length); 1480 buffer_info->page, 0, length);
1488 /* re-use the current skb, we only consumed the 1481 /* re-use the current skb, we only consumed the
1489 * page */ 1482 * page
1483 */
1490 buffer_info->skb = skb; 1484 buffer_info->skb = skb;
1491 skb = rxtop; 1485 skb = rxtop;
1492 rxtop = NULL; 1486 rxtop = NULL;
1493 e1000_consume_page(buffer_info, skb, length); 1487 e1000_consume_page(buffer_info, skb, length);
1494 } else { 1488 } else {
1495 /* no chain, got EOP, this buf is the packet 1489 /* no chain, got EOP, this buf is the packet
1496 * copybreak to save the put_page/alloc_page */ 1490 * copybreak to save the put_page/alloc_page
1491 */
1497 if (length <= copybreak && 1492 if (length <= copybreak &&
1498 skb_tailroom(skb) >= length) { 1493 skb_tailroom(skb) >= length) {
1499 u8 *vaddr; 1494 u8 *vaddr;
@@ -1502,7 +1497,8 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,
1502 length); 1497 length);
1503 kunmap_atomic(vaddr); 1498 kunmap_atomic(vaddr);
1504 /* re-use the page, so don't erase 1499 /* re-use the page, so don't erase
1505 * buffer_info->page */ 1500 * buffer_info->page
1501 */
1506 skb_put(skb, length); 1502 skb_put(skb, length);
1507 } else { 1503 } else {
1508 skb_fill_page_desc(skb, 0, 1504 skb_fill_page_desc(skb, 0,
@@ -1656,22 +1652,17 @@ static irqreturn_t e1000_intr_msi(int irq, void *data)
1656 struct e1000_hw *hw = &adapter->hw; 1652 struct e1000_hw *hw = &adapter->hw;
1657 u32 icr = er32(ICR); 1653 u32 icr = er32(ICR);
1658 1654
1659 /* 1655 /* read ICR disables interrupts using IAM */
1660 * read ICR disables interrupts using IAM
1661 */
1662
1663 if (icr & E1000_ICR_LSC) { 1656 if (icr & E1000_ICR_LSC) {
1664 hw->mac.get_link_status = true; 1657 hw->mac.get_link_status = true;
1665 /* 1658 /* ICH8 workaround-- Call gig speed drop workaround on cable
1666 * ICH8 workaround-- Call gig speed drop workaround on cable
1667 * disconnect (LSC) before accessing any PHY registers 1659 * disconnect (LSC) before accessing any PHY registers
1668 */ 1660 */
1669 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && 1661 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) &&
1670 (!(er32(STATUS) & E1000_STATUS_LU))) 1662 (!(er32(STATUS) & E1000_STATUS_LU)))
1671 schedule_work(&adapter->downshift_task); 1663 schedule_work(&adapter->downshift_task);
1672 1664
1673 /* 1665 /* 80003ES2LAN workaround-- For packet buffer work-around on
1674 * 80003ES2LAN workaround-- For packet buffer work-around on
1675 * link down event; disable receives here in the ISR and reset 1666 * link down event; disable receives here in the ISR and reset
1676 * adapter in watchdog 1667 * adapter in watchdog
1677 */ 1668 */
@@ -1713,31 +1704,27 @@ static irqreturn_t e1000_intr(int irq, void *data)
1713 if (!icr || test_bit(__E1000_DOWN, &adapter->state)) 1704 if (!icr || test_bit(__E1000_DOWN, &adapter->state))
1714 return IRQ_NONE; /* Not our interrupt */ 1705 return IRQ_NONE; /* Not our interrupt */
1715 1706
1716 /* 1707 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
1717 * IMS will not auto-mask if INT_ASSERTED is not set, and if it is
1718 * not set, then the adapter didn't send an interrupt 1708 * not set, then the adapter didn't send an interrupt
1719 */ 1709 */
1720 if (!(icr & E1000_ICR_INT_ASSERTED)) 1710 if (!(icr & E1000_ICR_INT_ASSERTED))
1721 return IRQ_NONE; 1711 return IRQ_NONE;
1722 1712
1723 /* 1713 /* Interrupt Auto-Mask...upon reading ICR,
1724 * Interrupt Auto-Mask...upon reading ICR,
1725 * interrupts are masked. No need for the 1714 * interrupts are masked. No need for the
1726 * IMC write 1715 * IMC write
1727 */ 1716 */
1728 1717
1729 if (icr & E1000_ICR_LSC) { 1718 if (icr & E1000_ICR_LSC) {
1730 hw->mac.get_link_status = true; 1719 hw->mac.get_link_status = true;
1731 /* 1720 /* ICH8 workaround-- Call gig speed drop workaround on cable
1732 * ICH8 workaround-- Call gig speed drop workaround on cable
1733 * disconnect (LSC) before accessing any PHY registers 1721 * disconnect (LSC) before accessing any PHY registers
1734 */ 1722 */
1735 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && 1723 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) &&
1736 (!(er32(STATUS) & E1000_STATUS_LU))) 1724 (!(er32(STATUS) & E1000_STATUS_LU)))
1737 schedule_work(&adapter->downshift_task); 1725 schedule_work(&adapter->downshift_task);
1738 1726
1739 /* 1727 /* 80003ES2LAN workaround--
1740 * 80003ES2LAN workaround--
1741 * For packet buffer work-around on link down event; 1728 * For packet buffer work-around on link down event;
1742 * disable receives here in the ISR and 1729 * disable receives here in the ISR and
1743 * reset adapter in watchdog 1730 * reset adapter in watchdog
@@ -2469,8 +2456,7 @@ static void e1000_set_itr(struct e1000_adapter *adapter)
2469 2456
2470set_itr_now: 2457set_itr_now:
2471 if (new_itr != adapter->itr) { 2458 if (new_itr != adapter->itr) {
2472 /* 2459 /* this attempts to bias the interrupt rate towards Bulk
2473 * this attempts to bias the interrupt rate towards Bulk
2474 * by adding intermediate steps when interrupt rate is 2460 * by adding intermediate steps when interrupt rate is
2475 * increasing 2461 * increasing
2476 */ 2462 */
@@ -2740,8 +2726,7 @@ static void e1000_init_manageability_pt(struct e1000_adapter *adapter)
2740 2726
2741 manc = er32(MANC); 2727 manc = er32(MANC);
2742 2728
2743 /* 2729 /* enable receiving management packets to the host. this will probably
2744 * enable receiving management packets to the host. this will probably
2745 * generate destination unreachable messages from the host OS, but 2730 * generate destination unreachable messages from the host OS, but
2746 * the packets will be handled on SMBUS 2731 * the packets will be handled on SMBUS
2747 */ 2732 */
@@ -2754,8 +2739,7 @@ static void e1000_init_manageability_pt(struct e1000_adapter *adapter)
2754 break; 2739 break;
2755 case e1000_82574: 2740 case e1000_82574:
2756 case e1000_82583: 2741 case e1000_82583:
2757 /* 2742 /* Check if IPMI pass-through decision filter already exists;
2758 * Check if IPMI pass-through decision filter already exists;
2759 * if so, enable it. 2743 * if so, enable it.
2760 */ 2744 */
2761 for (i = 0, j = 0; i < 8; i++) { 2745 for (i = 0, j = 0; i < 8; i++) {
@@ -2827,8 +2811,7 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
2827 u32 txdctl = er32(TXDCTL(0)); 2811 u32 txdctl = er32(TXDCTL(0));
2828 txdctl &= ~(E1000_TXDCTL_PTHRESH | E1000_TXDCTL_HTHRESH | 2812 txdctl &= ~(E1000_TXDCTL_PTHRESH | E1000_TXDCTL_HTHRESH |
2829 E1000_TXDCTL_WTHRESH); 2813 E1000_TXDCTL_WTHRESH);
2830 /* 2814 /* set up some performance related parameters to encourage the
2831 * set up some performance related parameters to encourage the
2832 * hardware to use the bus more efficiently in bursts, depends 2815 * hardware to use the bus more efficiently in bursts, depends
2833 * on the tx_int_delay to be enabled, 2816 * on the tx_int_delay to be enabled,
2834 * wthresh = 1 ==> burst write is disabled to avoid Tx stalls 2817 * wthresh = 1 ==> burst write is disabled to avoid Tx stalls
@@ -2845,8 +2828,7 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
2845 2828
2846 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) { 2829 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) {
2847 tarc = er32(TARC(0)); 2830 tarc = er32(TARC(0));
2848 /* 2831 /* set the speed mode bit, we'll clear it if we're not at
2849 * set the speed mode bit, we'll clear it if we're not at
2850 * gigabit link later 2832 * gigabit link later
2851 */ 2833 */
2852#define SPEED_MODE_BIT (1 << 21) 2834#define SPEED_MODE_BIT (1 << 21)
@@ -2967,8 +2949,7 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
2967 rfctl |= E1000_RFCTL_EXTEN; 2949 rfctl |= E1000_RFCTL_EXTEN;
2968 ew32(RFCTL, rfctl); 2950 ew32(RFCTL, rfctl);
2969 2951
2970 /* 2952 /* 82571 and greater support packet-split where the protocol
2971 * 82571 and greater support packet-split where the protocol
2972 * header is placed in skb->data and the packet data is 2953 * header is placed in skb->data and the packet data is
2973 * placed in pages hanging off of skb_shinfo(skb)->nr_frags. 2954 * placed in pages hanging off of skb_shinfo(skb)->nr_frags.
2974 * In the case of a non-split, skb->data is linearly filled, 2955 * In the case of a non-split, skb->data is linearly filled,
@@ -3016,7 +2997,8 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
3016 /* This is useful for sniffing bad packets. */ 2997 /* This is useful for sniffing bad packets. */
3017 if (adapter->netdev->features & NETIF_F_RXALL) { 2998 if (adapter->netdev->features & NETIF_F_RXALL) {
3018 /* UPE and MPE will be handled by normal PROMISC logic 2999 /* UPE and MPE will be handled by normal PROMISC logic
3019 * in e1000e_set_rx_mode */ 3000 * in e1000e_set_rx_mode
3001 */
3020 rctl |= (E1000_RCTL_SBP | /* Receive bad packets */ 3002 rctl |= (E1000_RCTL_SBP | /* Receive bad packets */
3021 E1000_RCTL_BAM | /* RX All Bcast Pkts */ 3003 E1000_RCTL_BAM | /* RX All Bcast Pkts */
3022 E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */ 3004 E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */
@@ -3071,8 +3053,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
3071 usleep_range(10000, 20000); 3053 usleep_range(10000, 20000);
3072 3054
3073 if (adapter->flags2 & FLAG2_DMA_BURST) { 3055 if (adapter->flags2 & FLAG2_DMA_BURST) {
3074 /* 3056 /* set the writeback threshold (only takes effect if the RDTR
3075 * set the writeback threshold (only takes effect if the RDTR
3076 * is set). set GRAN=1 and write back up to 0x4 worth, and 3057 * is set). set GRAN=1 and write back up to 0x4 worth, and
3077 * enable prefetching of 0x20 Rx descriptors 3058 * enable prefetching of 0x20 Rx descriptors
3078 * granularity = 01 3059 * granularity = 01
@@ -3083,8 +3064,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
3083 ew32(RXDCTL(0), E1000_RXDCTL_DMA_BURST_ENABLE); 3064 ew32(RXDCTL(0), E1000_RXDCTL_DMA_BURST_ENABLE);
3084 ew32(RXDCTL(1), E1000_RXDCTL_DMA_BURST_ENABLE); 3065 ew32(RXDCTL(1), E1000_RXDCTL_DMA_BURST_ENABLE);
3085 3066
3086 /* 3067 /* override the delay timers for enabling bursting, only if
3087 * override the delay timers for enabling bursting, only if
3088 * the value was not set by the user via module options 3068 * the value was not set by the user via module options
3089 */ 3069 */
3090 if (adapter->rx_int_delay == DEFAULT_RDTR) 3070 if (adapter->rx_int_delay == DEFAULT_RDTR)
@@ -3108,8 +3088,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
3108 ew32(CTRL_EXT, ctrl_ext); 3088 ew32(CTRL_EXT, ctrl_ext);
3109 e1e_flush(); 3089 e1e_flush();
3110 3090
3111 /* 3091 /* Setup the HW Rx Head and Tail Descriptor Pointers and
3112 * Setup the HW Rx Head and Tail Descriptor Pointers and
3113 * the Base and Length of the Rx Descriptor Ring 3092 * the Base and Length of the Rx Descriptor Ring
3114 */ 3093 */
3115 rdba = rx_ring->dma; 3094 rdba = rx_ring->dma;
@@ -3130,8 +3109,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
3130 ew32(RXCSUM, rxcsum); 3109 ew32(RXCSUM, rxcsum);
3131 3110
3132 if (adapter->hw.mac.type == e1000_pch2lan) { 3111 if (adapter->hw.mac.type == e1000_pch2lan) {
3133 /* 3112 /* With jumbo frames, excessive C-state transition
3134 * With jumbo frames, excessive C-state transition
3135 * latencies result in dropped transactions. 3113 * latencies result in dropped transactions.
3136 */ 3114 */
3137 if (adapter->netdev->mtu > ETH_DATA_LEN) { 3115 if (adapter->netdev->mtu > ETH_DATA_LEN) {
@@ -3216,8 +3194,7 @@ static int e1000e_write_uc_addr_list(struct net_device *netdev)
3216 if (!netdev_uc_empty(netdev) && rar_entries) { 3194 if (!netdev_uc_empty(netdev) && rar_entries) {
3217 struct netdev_hw_addr *ha; 3195 struct netdev_hw_addr *ha;
3218 3196
3219 /* 3197 /* write the addresses in reverse order to avoid write
3220 * write the addresses in reverse order to avoid write
3221 * combining 3198 * combining
3222 */ 3199 */
3223 netdev_for_each_uc_addr(ha, netdev) { 3200 netdev_for_each_uc_addr(ha, netdev) {
@@ -3269,8 +3246,7 @@ static void e1000e_set_rx_mode(struct net_device *netdev)
3269 if (netdev->flags & IFF_ALLMULTI) { 3246 if (netdev->flags & IFF_ALLMULTI) {
3270 rctl |= E1000_RCTL_MPE; 3247 rctl |= E1000_RCTL_MPE;
3271 } else { 3248 } else {
3272 /* 3249 /* Write addresses to the MTA, if the attempt fails
3273 * Write addresses to the MTA, if the attempt fails
3274 * then we should just turn on promiscuous mode so 3250 * then we should just turn on promiscuous mode so
3275 * that we can at least receive multicast traffic 3251 * that we can at least receive multicast traffic
3276 */ 3252 */
@@ -3279,8 +3255,7 @@ static void e1000e_set_rx_mode(struct net_device *netdev)
3279 rctl |= E1000_RCTL_MPE; 3255 rctl |= E1000_RCTL_MPE;
3280 } 3256 }
3281 e1000e_vlan_filter_enable(adapter); 3257 e1000e_vlan_filter_enable(adapter);
3282 /* 3258 /* Write addresses to available RAR registers, if there is not
3283 * Write addresses to available RAR registers, if there is not
3284 * sufficient space to store all the addresses then enable 3259 * sufficient space to store all the addresses then enable
3285 * unicast promiscuous mode 3260 * unicast promiscuous mode
3286 */ 3261 */
@@ -3315,8 +3290,7 @@ static void e1000e_setup_rss_hash(struct e1000_adapter *adapter)
3315 for (i = 0; i < 32; i++) 3290 for (i = 0; i < 32; i++)
3316 ew32(RETA(i), 0); 3291 ew32(RETA(i), 0);
3317 3292
3318 /* 3293 /* Disable raw packet checksumming so that RSS hash is placed in
3319 * Disable raw packet checksumming so that RSS hash is placed in
3320 * descriptor on writeback. 3294 * descriptor on writeback.
3321 */ 3295 */
3322 rxcsum = er32(RXCSUM); 3296 rxcsum = er32(RXCSUM);
@@ -3408,8 +3382,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3408 ew32(PBA, pba); 3382 ew32(PBA, pba);
3409 3383
3410 if (adapter->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN) { 3384 if (adapter->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN) {
3411 /* 3385 /* To maintain wire speed transmits, the Tx FIFO should be
3412 * To maintain wire speed transmits, the Tx FIFO should be
3413 * large enough to accommodate two full transmit packets, 3386 * large enough to accommodate two full transmit packets,
3414 * rounded up to the next 1KB and expressed in KB. Likewise, 3387 * rounded up to the next 1KB and expressed in KB. Likewise,
3415 * the Rx FIFO should be large enough to accommodate at least 3388 * the Rx FIFO should be large enough to accommodate at least
@@ -3421,8 +3394,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3421 tx_space = pba >> 16; 3394 tx_space = pba >> 16;
3422 /* lower 16 bits has Rx packet buffer allocation size in KB */ 3395 /* lower 16 bits has Rx packet buffer allocation size in KB */
3423 pba &= 0xffff; 3396 pba &= 0xffff;
3424 /* 3397 /* the Tx fifo also stores 16 bytes of information about the Tx
3425 * the Tx fifo also stores 16 bytes of information about the Tx
3426 * but don't include ethernet FCS because hardware appends it 3398 * but don't include ethernet FCS because hardware appends it
3427 */ 3399 */
3428 min_tx_space = (adapter->max_frame_size + 3400 min_tx_space = (adapter->max_frame_size +
@@ -3435,8 +3407,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3435 min_rx_space = ALIGN(min_rx_space, 1024); 3407 min_rx_space = ALIGN(min_rx_space, 1024);
3436 min_rx_space >>= 10; 3408 min_rx_space >>= 10;
3437 3409
3438 /* 3410 /* If current Tx allocation is less than the min Tx FIFO size,
3439 * If current Tx allocation is less than the min Tx FIFO size,
3440 * and the min Tx FIFO size is less than the current Rx FIFO 3411 * and the min Tx FIFO size is less than the current Rx FIFO
3441 * allocation, take space away from current Rx allocation 3412 * allocation, take space away from current Rx allocation
3442 */ 3413 */
@@ -3444,8 +3415,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3444 ((min_tx_space - tx_space) < pba)) { 3415 ((min_tx_space - tx_space) < pba)) {
3445 pba -= min_tx_space - tx_space; 3416 pba -= min_tx_space - tx_space;
3446 3417
3447 /* 3418 /* if short on Rx space, Rx wins and must trump Tx
3448 * if short on Rx space, Rx wins and must trump Tx
3449 * adjustment 3419 * adjustment
3450 */ 3420 */
3451 if (pba < min_rx_space) 3421 if (pba < min_rx_space)
@@ -3455,8 +3425,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3455 ew32(PBA, pba); 3425 ew32(PBA, pba);
3456 } 3426 }
3457 3427
3458 /* 3428 /* flow control settings
3459 * flow control settings
3460 * 3429 *
3461 * The high water mark must be low enough to fit one full frame 3430 * The high water mark must be low enough to fit one full frame
3462 * (or the size used for early receive) above it in the Rx FIFO. 3431 * (or the size used for early receive) above it in the Rx FIFO.
@@ -3490,8 +3459,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3490 fc->low_water = fc->high_water - 8; 3459 fc->low_water = fc->high_water - 8;
3491 break; 3460 break;
3492 case e1000_pchlan: 3461 case e1000_pchlan:
3493 /* 3462 /* Workaround PCH LOM adapter hangs with certain network
3494 * Workaround PCH LOM adapter hangs with certain network
3495 * loads. If hangs persist, try disabling Tx flow control. 3463 * loads. If hangs persist, try disabling Tx flow control.
3496 */ 3464 */
3497 if (adapter->netdev->mtu > ETH_DATA_LEN) { 3465 if (adapter->netdev->mtu > ETH_DATA_LEN) {
@@ -3516,8 +3484,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3516 break; 3484 break;
3517 } 3485 }
3518 3486
3519 /* 3487 /* Alignment of Tx data is on an arbitrary byte boundary with the
3520 * Alignment of Tx data is on an arbitrary byte boundary with the
3521 * maximum size per Tx descriptor limited only to the transmit 3488 * maximum size per Tx descriptor limited only to the transmit
3522 * allocation of the packet buffer minus 96 bytes with an upper 3489 * allocation of the packet buffer minus 96 bytes with an upper
3523 * limit of 24KB due to receive synchronization limitations. 3490 * limit of 24KB due to receive synchronization limitations.
@@ -3525,8 +3492,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3525 adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, 3492 adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96,
3526 24 << 10); 3493 24 << 10);
3527 3494
3528 /* 3495 /* Disable Adaptive Interrupt Moderation if 2 full packets cannot
3529 * Disable Adaptive Interrupt Moderation if 2 full packets cannot
3530 * fit in receive buffer. 3496 * fit in receive buffer.
3531 */ 3497 */
3532 if (adapter->itr_setting & 0x3) { 3498 if (adapter->itr_setting & 0x3) {
@@ -3549,8 +3515,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3549 /* Allow time for pending master requests to run */ 3515 /* Allow time for pending master requests to run */
3550 mac->ops.reset_hw(hw); 3516 mac->ops.reset_hw(hw);
3551 3517
3552 /* 3518 /* For parts with AMT enabled, let the firmware know
3553 * For parts with AMT enabled, let the firmware know
3554 * that the network interface is in control 3519 * that the network interface is in control
3555 */ 3520 */
3556 if (adapter->flags & FLAG_HAS_AMT) 3521 if (adapter->flags & FLAG_HAS_AMT)
@@ -3579,8 +3544,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3579 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) && 3544 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) &&
3580 !(adapter->flags & FLAG_SMART_POWER_DOWN)) { 3545 !(adapter->flags & FLAG_SMART_POWER_DOWN)) {
3581 u16 phy_data = 0; 3546 u16 phy_data = 0;
3582 /* 3547 /* speed up time to link by disabling smart power down, ignore
3583 * speed up time to link by disabling smart power down, ignore
3584 * the return value of this function because there is nothing 3548 * the return value of this function because there is nothing
3585 * different we would do if it failed 3549 * different we would do if it failed
3586 */ 3550 */
@@ -3628,8 +3592,7 @@ static void e1000e_flush_descriptors(struct e1000_adapter *adapter)
3628 /* execute the writes immediately */ 3592 /* execute the writes immediately */
3629 e1e_flush(); 3593 e1e_flush();
3630 3594
3631 /* 3595 /* due to rare timing issues, write to TIDV/RDTR again to ensure the
3632 * due to rare timing issues, write to TIDV/RDTR again to ensure the
3633 * write is successful 3596 * write is successful
3634 */ 3597 */
3635 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); 3598 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD);
@@ -3647,8 +3610,7 @@ void e1000e_down(struct e1000_adapter *adapter)
3647 struct e1000_hw *hw = &adapter->hw; 3610 struct e1000_hw *hw = &adapter->hw;
3648 u32 tctl, rctl; 3611 u32 tctl, rctl;
3649 3612
3650 /* 3613 /* signal that we're down so the interrupt handler does not
3651 * signal that we're down so the interrupt handler does not
3652 * reschedule our watchdog timer 3614 * reschedule our watchdog timer
3653 */ 3615 */
3654 set_bit(__E1000_DOWN, &adapter->state); 3616 set_bit(__E1000_DOWN, &adapter->state);
@@ -3691,8 +3653,7 @@ void e1000e_down(struct e1000_adapter *adapter)
3691 if (!pci_channel_offline(adapter->pdev)) 3653 if (!pci_channel_offline(adapter->pdev))
3692 e1000e_reset(adapter); 3654 e1000e_reset(adapter);
3693 3655
3694 /* 3656 /* TODO: for power management, we could drop the link and
3695 * TODO: for power management, we could drop the link and
3696 * pci_disable_device here. 3657 * pci_disable_device here.
3697 */ 3658 */
3698} 3659}
@@ -3755,8 +3716,7 @@ static irqreturn_t e1000_intr_msi_test(int irq, void *data)
3755 e_dbg("icr is %08X\n", icr); 3716 e_dbg("icr is %08X\n", icr);
3756 if (icr & E1000_ICR_RXSEQ) { 3717 if (icr & E1000_ICR_RXSEQ) {
3757 adapter->flags &= ~FLAG_MSI_TEST_FAILED; 3718 adapter->flags &= ~FLAG_MSI_TEST_FAILED;
3758 /* 3719 /* Force memory writes to complete before acknowledging the
3759 * Force memory writes to complete before acknowledging the
3760 * interrupt is handled. 3720 * interrupt is handled.
3761 */ 3721 */
3762 wmb(); 3722 wmb();
@@ -3786,7 +3746,8 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
3786 e1000e_reset_interrupt_capability(adapter); 3746 e1000e_reset_interrupt_capability(adapter);
3787 3747
3788 /* Assume that the test fails, if it succeeds then the test 3748 /* Assume that the test fails, if it succeeds then the test
3789 * MSI irq handler will unset this flag */ 3749 * MSI irq handler will unset this flag
3750 */
3790 adapter->flags |= FLAG_MSI_TEST_FAILED; 3751 adapter->flags |= FLAG_MSI_TEST_FAILED;
3791 3752
3792 err = pci_enable_msi(adapter->pdev); 3753 err = pci_enable_msi(adapter->pdev);
@@ -3800,8 +3761,7 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
3800 goto msi_test_failed; 3761 goto msi_test_failed;
3801 } 3762 }
3802 3763
3803 /* 3764 /* Force memory writes to complete before enabling and firing an
3804 * Force memory writes to complete before enabling and firing an
3805 * interrupt. 3765 * interrupt.
3806 */ 3766 */
3807 wmb(); 3767 wmb();
@@ -3901,8 +3861,7 @@ static int e1000_open(struct net_device *netdev)
3901 if (err) 3861 if (err)
3902 goto err_setup_rx; 3862 goto err_setup_rx;
3903 3863
3904 /* 3864 /* If AMT is enabled, let the firmware know that the network
3905 * If AMT is enabled, let the firmware know that the network
3906 * interface is now open and reset the part to a known state. 3865 * interface is now open and reset the part to a known state.
3907 */ 3866 */
3908 if (adapter->flags & FLAG_HAS_AMT) { 3867 if (adapter->flags & FLAG_HAS_AMT) {
@@ -3923,8 +3882,7 @@ static int e1000_open(struct net_device *netdev)
3923 PM_QOS_CPU_DMA_LATENCY, 3882 PM_QOS_CPU_DMA_LATENCY,
3924 PM_QOS_DEFAULT_VALUE); 3883 PM_QOS_DEFAULT_VALUE);
3925 3884
3926 /* 3885 /* before we allocate an interrupt, we must be ready to handle it.
3927 * before we allocate an interrupt, we must be ready to handle it.
3928 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt 3886 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
3929 * as soon as we call pci_request_irq, so we have to setup our 3887 * as soon as we call pci_request_irq, so we have to setup our
3930 * clean_rx handler before we do so. 3888 * clean_rx handler before we do so.
@@ -3935,8 +3893,7 @@ static int e1000_open(struct net_device *netdev)
3935 if (err) 3893 if (err)
3936 goto err_req_irq; 3894 goto err_req_irq;
3937 3895
3938 /* 3896 /* Work around PCIe errata with MSI interrupts causing some chipsets to
3939 * Work around PCIe errata with MSI interrupts causing some chipsets to
3940 * ignore e1000e MSI messages, which means we need to test our MSI 3897 * ignore e1000e MSI messages, which means we need to test our MSI
3941 * interrupt now 3898 * interrupt now
3942 */ 3899 */
@@ -4017,16 +3974,14 @@ static int e1000_close(struct net_device *netdev)
4017 e1000e_free_tx_resources(adapter->tx_ring); 3974 e1000e_free_tx_resources(adapter->tx_ring);
4018 e1000e_free_rx_resources(adapter->rx_ring); 3975 e1000e_free_rx_resources(adapter->rx_ring);
4019 3976
4020 /* 3977 /* kill manageability vlan ID if supported, but not if a vlan with
4021 * kill manageability vlan ID if supported, but not if a vlan with
4022 * the same ID is registered on the host OS (let 8021q kill it) 3978 * the same ID is registered on the host OS (let 8021q kill it)
4023 */ 3979 */
4024 if (adapter->hw.mng_cookie.status & 3980 if (adapter->hw.mng_cookie.status &
4025 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) 3981 E1000_MNG_DHCP_COOKIE_STATUS_VLAN)
4026 e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id); 3982 e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
4027 3983
4028 /* 3984 /* If AMT is enabled, let the firmware know that the network
4029 * If AMT is enabled, let the firmware know that the network
4030 * interface is now closed 3985 * interface is now closed
4031 */ 3986 */
4032 if ((adapter->flags & FLAG_HAS_AMT) && 3987 if ((adapter->flags & FLAG_HAS_AMT) &&
@@ -4065,8 +4020,7 @@ static int e1000_set_mac(struct net_device *netdev, void *p)
4065 /* activate the work around */ 4020 /* activate the work around */
4066 e1000e_set_laa_state_82571(&adapter->hw, 1); 4021 e1000e_set_laa_state_82571(&adapter->hw, 1);
4067 4022
4068 /* 4023 /* Hold a copy of the LAA in RAR[14] This is done so that
4069 * Hold a copy of the LAA in RAR[14] This is done so that
4070 * between the time RAR[0] gets clobbered and the time it 4024 * between the time RAR[0] gets clobbered and the time it
4071 * gets fixed (in e1000_watchdog), the actual LAA is in one 4025 * gets fixed (in e1000_watchdog), the actual LAA is in one
4072 * of the RARs and no incoming packets directed to this port 4026 * of the RARs and no incoming packets directed to this port
@@ -4099,10 +4053,13 @@ static void e1000e_update_phy_task(struct work_struct *work)
4099 e1000_get_phy_info(&adapter->hw); 4053 e1000_get_phy_info(&adapter->hw);
4100} 4054}
4101 4055
4102/* 4056/**
4057 * e1000_update_phy_info - timre call-back to update PHY info
4058 * @data: pointer to adapter cast into an unsigned long
4059 *
4103 * Need to wait a few seconds after link up to get diagnostic information from 4060 * Need to wait a few seconds after link up to get diagnostic information from
4104 * the phy 4061 * the phy
4105 */ 4062 **/
4106static void e1000_update_phy_info(unsigned long data) 4063static void e1000_update_phy_info(unsigned long data)
4107{ 4064{
4108 struct e1000_adapter *adapter = (struct e1000_adapter *) data; 4065 struct e1000_adapter *adapter = (struct e1000_adapter *) data;
@@ -4129,8 +4086,7 @@ static void e1000e_update_phy_stats(struct e1000_adapter *adapter)
4129 if (ret_val) 4086 if (ret_val)
4130 return; 4087 return;
4131 4088
4132 /* 4089 /* A page set is expensive so check if already on desired page.
4133 * A page set is expensive so check if already on desired page.
4134 * If not, set to the page with the PHY status registers. 4090 * If not, set to the page with the PHY status registers.
4135 */ 4091 */
4136 hw->phy.addr = 1; 4092 hw->phy.addr = 1;
@@ -4201,8 +4157,7 @@ static void e1000e_update_stats(struct e1000_adapter *adapter)
4201 struct e1000_hw *hw = &adapter->hw; 4157 struct e1000_hw *hw = &adapter->hw;
4202 struct pci_dev *pdev = adapter->pdev; 4158 struct pci_dev *pdev = adapter->pdev;
4203 4159
4204 /* 4160 /* Prevent stats update while adapter is being reset, or if the pci
4205 * Prevent stats update while adapter is being reset, or if the pci
4206 * connection is down. 4161 * connection is down.
4207 */ 4162 */
4208 if (adapter->link_speed == 0) 4163 if (adapter->link_speed == 0)
@@ -4270,8 +4225,7 @@ static void e1000e_update_stats(struct e1000_adapter *adapter)
4270 4225
4271 /* Rx Errors */ 4226 /* Rx Errors */
4272 4227
4273 /* 4228 /* RLEC on some newer hardware can be incorrect so build
4274 * RLEC on some newer hardware can be incorrect so build
4275 * our own version based on RUC and ROC 4229 * our own version based on RUC and ROC
4276 */ 4230 */
4277 netdev->stats.rx_errors = adapter->stats.rxerrc + 4231 netdev->stats.rx_errors = adapter->stats.rxerrc +
@@ -4323,8 +4277,7 @@ static void e1000_phy_read_status(struct e1000_adapter *adapter)
4323 if (ret_val) 4277 if (ret_val)
4324 e_warn("Error reading PHY register\n"); 4278 e_warn("Error reading PHY register\n");
4325 } else { 4279 } else {
4326 /* 4280 /* Do not read PHY registers if link is not up
4327 * Do not read PHY registers if link is not up
4328 * Set values to typical power-on defaults 4281 * Set values to typical power-on defaults
4329 */ 4282 */
4330 phy->bmcr = (BMCR_SPEED1000 | BMCR_ANENABLE | BMCR_FULLDPLX); 4283 phy->bmcr = (BMCR_SPEED1000 | BMCR_ANENABLE | BMCR_FULLDPLX);
@@ -4362,8 +4315,7 @@ static bool e1000e_has_link(struct e1000_adapter *adapter)
4362 bool link_active = false; 4315 bool link_active = false;
4363 s32 ret_val = 0; 4316 s32 ret_val = 0;
4364 4317
4365 /* 4318 /* get_link_status is set on LSC (link status) interrupt or
4366 * get_link_status is set on LSC (link status) interrupt or
4367 * Rx sequence error interrupt. get_link_status will stay 4319 * Rx sequence error interrupt. get_link_status will stay
4368 * false until the check_for_link establishes link 4320 * false until the check_for_link establishes link
4369 * for copper adapters ONLY 4321 * for copper adapters ONLY
@@ -4415,8 +4367,7 @@ static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter)
4415{ 4367{
4416 struct e1000_hw *hw = &adapter->hw; 4368 struct e1000_hw *hw = &adapter->hw;
4417 4369
4418 /* 4370 /* With 82574 controllers, PHY needs to be checked periodically
4419 * With 82574 controllers, PHY needs to be checked periodically
4420 * for hung state and reset, if two calls return true 4371 * for hung state and reset, if two calls return true
4421 */ 4372 */
4422 if (e1000_check_phy_82574(hw)) 4373 if (e1000_check_phy_82574(hw))
@@ -4484,8 +4435,7 @@ static void e1000_watchdog_task(struct work_struct *work)
4484 &adapter->link_speed, 4435 &adapter->link_speed,
4485 &adapter->link_duplex); 4436 &adapter->link_duplex);
4486 e1000_print_link_info(adapter); 4437 e1000_print_link_info(adapter);
4487 /* 4438 /* On supported PHYs, check for duplex mismatch only
4488 * On supported PHYs, check for duplex mismatch only
4489 * if link has autonegotiated at 10/100 half 4439 * if link has autonegotiated at 10/100 half
4490 */ 4440 */
4491 if ((hw->phy.type == e1000_phy_igp_3 || 4441 if ((hw->phy.type == e1000_phy_igp_3 ||
@@ -4515,8 +4465,7 @@ static void e1000_watchdog_task(struct work_struct *work)
4515 break; 4465 break;
4516 } 4466 }
4517 4467
4518 /* 4468 /* workaround: re-program speed mode bit after
4519 * workaround: re-program speed mode bit after
4520 * link-up event 4469 * link-up event
4521 */ 4470 */
4522 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) && 4471 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) &&
@@ -4527,8 +4476,7 @@ static void e1000_watchdog_task(struct work_struct *work)
4527 ew32(TARC(0), tarc0); 4476 ew32(TARC(0), tarc0);
4528 } 4477 }
4529 4478
4530 /* 4479 /* disable TSO for pcie and 10/100 speeds, to avoid
4531 * disable TSO for pcie and 10/100 speeds, to avoid
4532 * some hardware issues 4480 * some hardware issues
4533 */ 4481 */
4534 if (!(adapter->flags & FLAG_TSO_FORCE)) { 4482 if (!(adapter->flags & FLAG_TSO_FORCE)) {
@@ -4549,16 +4497,14 @@ static void e1000_watchdog_task(struct work_struct *work)
4549 } 4497 }
4550 } 4498 }
4551 4499
4552 /* 4500 /* enable transmits in the hardware, need to do this
4553 * enable transmits in the hardware, need to do this
4554 * after setting TARC(0) 4501 * after setting TARC(0)
4555 */ 4502 */
4556 tctl = er32(TCTL); 4503 tctl = er32(TCTL);
4557 tctl |= E1000_TCTL_EN; 4504 tctl |= E1000_TCTL_EN;
4558 ew32(TCTL, tctl); 4505 ew32(TCTL, tctl);
4559 4506
4560 /* 4507 /* Perform any post-link-up configuration before
4561 * Perform any post-link-up configuration before
4562 * reporting link up. 4508 * reporting link up.
4563 */ 4509 */
4564 if (phy->ops.cfg_on_link_up) 4510 if (phy->ops.cfg_on_link_up)
@@ -4609,8 +4555,7 @@ link_up:
4609 4555
4610 if (!netif_carrier_ok(netdev) && 4556 if (!netif_carrier_ok(netdev) &&
4611 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)) { 4557 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)) {
4612 /* 4558 /* We've lost link, so the controller stops DMA,
4613 * We've lost link, so the controller stops DMA,
4614 * but we've got queued Tx work that's never going 4559 * but we've got queued Tx work that's never going
4615 * to get done, so reset controller to flush Tx. 4560 * to get done, so reset controller to flush Tx.
4616 * (Do the reset outside of interrupt context). 4561 * (Do the reset outside of interrupt context).
@@ -4622,8 +4567,7 @@ link_up:
4622 4567
4623 /* Simple mode for Interrupt Throttle Rate (ITR) */ 4568 /* Simple mode for Interrupt Throttle Rate (ITR) */
4624 if (adapter->itr_setting == 4) { 4569 if (adapter->itr_setting == 4) {
4625 /* 4570 /* Symmetric Tx/Rx gets a reduced ITR=2000;
4626 * Symmetric Tx/Rx gets a reduced ITR=2000;
4627 * Total asymmetrical Tx or Rx gets ITR=8000; 4571 * Total asymmetrical Tx or Rx gets ITR=8000;
4628 * everyone else is between 2000-8000. 4572 * everyone else is between 2000-8000.
4629 */ 4573 */
@@ -4648,8 +4592,7 @@ link_up:
4648 /* Force detection of hung controller every watchdog period */ 4592 /* Force detection of hung controller every watchdog period */
4649 adapter->detect_tx_hung = true; 4593 adapter->detect_tx_hung = true;
4650 4594
4651 /* 4595 /* With 82571 controllers, LAA may be overwritten due to controller
4652 * With 82571 controllers, LAA may be overwritten due to controller
4653 * reset from the other port. Set the appropriate LAA in RAR[0] 4596 * reset from the other port. Set the appropriate LAA in RAR[0]
4654 */ 4597 */
4655 if (e1000e_get_laa_state_82571(hw)) 4598 if (e1000e_get_laa_state_82571(hw))
@@ -4948,8 +4891,7 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)
4948 if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS)) 4891 if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS))
4949 tx_desc->lower.data &= ~(cpu_to_le32(E1000_TXD_CMD_IFCS)); 4892 tx_desc->lower.data &= ~(cpu_to_le32(E1000_TXD_CMD_IFCS));
4950 4893
4951 /* 4894 /* Force memory writes to complete before letting h/w
4952 * Force memory writes to complete before letting h/w
4953 * know there are new descriptors to fetch. (Only 4895 * know there are new descriptors to fetch. (Only
4954 * applicable for weak-ordered memory model archs, 4896 * applicable for weak-ordered memory model archs,
4955 * such as IA-64). 4897 * such as IA-64).
@@ -4963,8 +4905,7 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)
4963 else 4905 else
4964 writel(i, tx_ring->tail); 4906 writel(i, tx_ring->tail);
4965 4907
4966 /* 4908 /* we need this if more than one processor can write to our tail
4967 * we need this if more than one processor can write to our tail
4968 * at a time, it synchronizes IO on IA64/Altix systems 4909 * at a time, it synchronizes IO on IA64/Altix systems
4969 */ 4910 */
4970 mmiowb(); 4911 mmiowb();
@@ -5014,15 +4955,13 @@ static int __e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size)
5014 struct e1000_adapter *adapter = tx_ring->adapter; 4955 struct e1000_adapter *adapter = tx_ring->adapter;
5015 4956
5016 netif_stop_queue(adapter->netdev); 4957 netif_stop_queue(adapter->netdev);
5017 /* 4958 /* Herbert's original patch had:
5018 * Herbert's original patch had:
5019 * smp_mb__after_netif_stop_queue(); 4959 * smp_mb__after_netif_stop_queue();
5020 * but since that doesn't exist yet, just open code it. 4960 * but since that doesn't exist yet, just open code it.
5021 */ 4961 */
5022 smp_mb(); 4962 smp_mb();
5023 4963
5024 /* 4964 /* We need to check again in a case another CPU has just
5025 * We need to check again in a case another CPU has just
5026 * made room available. 4965 * made room available.
5027 */ 4966 */
5028 if (e1000_desc_unused(tx_ring) < size) 4967 if (e1000_desc_unused(tx_ring) < size)
@@ -5067,8 +5006,7 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
5067 return NETDEV_TX_OK; 5006 return NETDEV_TX_OK;
5068 } 5007 }
5069 5008
5070 /* 5009 /* The minimum packet size with TCTL.PSP set is 17 bytes so
5071 * The minimum packet size with TCTL.PSP set is 17 bytes so
5072 * pad skb in order to meet this minimum size requirement 5010 * pad skb in order to meet this minimum size requirement
5073 */ 5011 */
5074 if (unlikely(skb->len < 17)) { 5012 if (unlikely(skb->len < 17)) {
@@ -5082,14 +5020,12 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
5082 if (mss) { 5020 if (mss) {
5083 u8 hdr_len; 5021 u8 hdr_len;
5084 5022
5085 /* 5023 /* TSO Workaround for 82571/2/3 Controllers -- if skb->data
5086 * TSO Workaround for 82571/2/3 Controllers -- if skb->data
5087 * points to just header, pull a few bytes of payload from 5024 * points to just header, pull a few bytes of payload from
5088 * frags into skb->data 5025 * frags into skb->data
5089 */ 5026 */
5090 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); 5027 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
5091 /* 5028 /* we do this workaround for ES2LAN, but it is un-necessary,
5092 * we do this workaround for ES2LAN, but it is un-necessary,
5093 * avoiding it could save a lot of cycles 5029 * avoiding it could save a lot of cycles
5094 */ 5030 */
5095 if (skb->data_len && (hdr_len == len)) { 5031 if (skb->data_len && (hdr_len == len)) {
@@ -5120,8 +5056,7 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
5120 if (adapter->hw.mac.tx_pkt_filtering) 5056 if (adapter->hw.mac.tx_pkt_filtering)
5121 e1000_transfer_dhcp_info(adapter, skb); 5057 e1000_transfer_dhcp_info(adapter, skb);
5122 5058
5123 /* 5059 /* need: count + 2 desc gap to keep tail from touching
5124 * need: count + 2 desc gap to keep tail from touching
5125 * head, otherwise try next time 5060 * head, otherwise try next time
5126 */ 5061 */
5127 if (e1000_maybe_stop_tx(tx_ring, count + 2)) 5062 if (e1000_maybe_stop_tx(tx_ring, count + 2))
@@ -5145,8 +5080,7 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
5145 else if (e1000_tx_csum(tx_ring, skb)) 5080 else if (e1000_tx_csum(tx_ring, skb))
5146 tx_flags |= E1000_TX_FLAGS_CSUM; 5081 tx_flags |= E1000_TX_FLAGS_CSUM;
5147 5082
5148 /* 5083 /* Old method was to assume IPv4 packet by default if TSO was enabled.
5149 * Old method was to assume IPv4 packet by default if TSO was enabled.
5150 * 82571 hardware supports TSO capabilities for IPv6 as well... 5084 * 82571 hardware supports TSO capabilities for IPv6 as well...
5151 * no longer assume, we must. 5085 * no longer assume, we must.
5152 */ 5086 */
@@ -5233,8 +5167,7 @@ struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
5233 5167
5234 /* Rx Errors */ 5168 /* Rx Errors */
5235 5169
5236 /* 5170 /* RLEC on some newer hardware can be incorrect so build
5237 * RLEC on some newer hardware can be incorrect so build
5238 * our own version based on RUC and ROC 5171 * our own version based on RUC and ROC
5239 */ 5172 */
5240 stats->rx_errors = adapter->stats.rxerrc + 5173 stats->rx_errors = adapter->stats.rxerrc +
@@ -5303,8 +5236,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
5303 if (netif_running(netdev)) 5236 if (netif_running(netdev))
5304 e1000e_down(adapter); 5237 e1000e_down(adapter);
5305 5238
5306 /* 5239 /* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
5307 * NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
5308 * means we reserve 2 more, this pushes us to allocate from the next 5240 * means we reserve 2 more, this pushes us to allocate from the next
5309 * larger slab size. 5241 * larger slab size.
5310 * i.e. RXBUFFER_2048 --> size-4096 slab 5242 * i.e. RXBUFFER_2048 --> size-4096 slab
@@ -5566,8 +5498,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake,
5566 if (adapter->hw.phy.type == e1000_phy_igp_3) 5498 if (adapter->hw.phy.type == e1000_phy_igp_3)
5567 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); 5499 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);
5568 5500
5569 /* 5501 /* Release control of h/w to f/w. If f/w is AMT enabled, this
5570 * Release control of h/w to f/w. If f/w is AMT enabled, this
5571 * would have already happened in close and is redundant. 5502 * would have already happened in close and is redundant.
5572 */ 5503 */
5573 e1000e_release_hw_control(adapter); 5504 e1000e_release_hw_control(adapter);
@@ -5594,8 +5525,7 @@ static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep,
5594 struct net_device *netdev = pci_get_drvdata(pdev); 5525 struct net_device *netdev = pci_get_drvdata(pdev);
5595 struct e1000_adapter *adapter = netdev_priv(netdev); 5526 struct e1000_adapter *adapter = netdev_priv(netdev);
5596 5527
5597 /* 5528 /* The pci-e switch on some quad port adapters will report a
5598 * The pci-e switch on some quad port adapters will report a
5599 * correctable error when the MAC transitions from D0 to D3. To 5529 * correctable error when the MAC transitions from D0 to D3. To
5600 * prevent this we need to mask off the correctable errors on the 5530 * prevent this we need to mask off the correctable errors on the
5601 * downstream port of the pci-e switch. 5531 * downstream port of the pci-e switch.
@@ -5624,8 +5554,7 @@ static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
5624#else 5554#else
5625static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state) 5555static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
5626{ 5556{
5627 /* 5557 /* Both device and parent should have the same ASPM setting.
5628 * Both device and parent should have the same ASPM setting.
5629 * Disable ASPM in downstream component first and then upstream. 5558 * Disable ASPM in downstream component first and then upstream.
5630 */ 5559 */
5631 pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, state); 5560 pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, state);
@@ -5719,8 +5648,7 @@ static int __e1000_resume(struct pci_dev *pdev)
5719 5648
5720 netif_device_attach(netdev); 5649 netif_device_attach(netdev);
5721 5650
5722 /* 5651 /* If the controller has AMT, do not set DRV_LOAD until the interface
5723 * If the controller has AMT, do not set DRV_LOAD until the interface
5724 * is up. For all other cases, let the f/w know that the h/w is now 5652 * is up. For all other cases, let the f/w know that the h/w is now
5725 * under the control of the driver. 5653 * under the control of the driver.
5726 */ 5654 */
@@ -5848,7 +5776,10 @@ static irqreturn_t e1000_intr_msix(int irq, void *data)
5848 return IRQ_HANDLED; 5776 return IRQ_HANDLED;
5849} 5777}
5850 5778
5851/* 5779/**
5780 * e1000_netpoll
5781 * @netdev: network interface device structure
5782 *
5852 * Polling 'interrupt' - used by things like netconsole to send skbs 5783 * Polling 'interrupt' - used by things like netconsole to send skbs
5853 * without having to re-enable interrupts. It's not called while 5784 * without having to re-enable interrupts. It's not called while
5854 * the interrupt routine is executing. 5785 * the interrupt routine is executing.
@@ -5973,8 +5904,7 @@ static void e1000_io_resume(struct pci_dev *pdev)
5973 5904
5974 netif_device_attach(netdev); 5905 netif_device_attach(netdev);
5975 5906
5976 /* 5907 /* If the controller has AMT, do not set DRV_LOAD until the interface
5977 * If the controller has AMT, do not set DRV_LOAD until the interface
5978 * is up. For all other cases, let the f/w know that the h/w is now 5908 * is up. For all other cases, let the f/w know that the h/w is now
5979 * under the control of the driver. 5909 * under the control of the driver.
5980 */ 5910 */
@@ -6273,14 +6203,12 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
6273 if (e1000e_enable_mng_pass_thru(&adapter->hw)) 6203 if (e1000e_enable_mng_pass_thru(&adapter->hw))
6274 adapter->flags |= FLAG_MNG_PT_ENABLED; 6204 adapter->flags |= FLAG_MNG_PT_ENABLED;
6275 6205
6276 /* 6206 /* before reading the NVM, reset the controller to
6277 * before reading the NVM, reset the controller to
6278 * put the device in a known good starting state 6207 * put the device in a known good starting state
6279 */ 6208 */
6280 adapter->hw.mac.ops.reset_hw(&adapter->hw); 6209 adapter->hw.mac.ops.reset_hw(&adapter->hw);
6281 6210
6282 /* 6211 /* systems with ASPM and others may see the checksum fail on the first
6283 * systems with ASPM and others may see the checksum fail on the first
6284 * attempt. Let's give it a few tries 6212 * attempt. Let's give it a few tries
6285 */ 6213 */
6286 for (i = 0;; i++) { 6214 for (i = 0;; i++) {
@@ -6335,8 +6263,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
6335 adapter->rx_ring->count = E1000_DEFAULT_RXD; 6263 adapter->rx_ring->count = E1000_DEFAULT_RXD;
6336 adapter->tx_ring->count = E1000_DEFAULT_TXD; 6264 adapter->tx_ring->count = E1000_DEFAULT_TXD;
6337 6265
6338 /* 6266 /* Initial Wake on LAN setting - If APM wake is enabled in
6339 * Initial Wake on LAN setting - If APM wake is enabled in
6340 * the EEPROM, enable the ACPI Magic Packet filter 6267 * the EEPROM, enable the ACPI Magic Packet filter
6341 */ 6268 */
6342 if (adapter->flags & FLAG_APME_IN_WUC) { 6269 if (adapter->flags & FLAG_APME_IN_WUC) {
@@ -6360,8 +6287,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
6360 if (eeprom_data & eeprom_apme_mask) 6287 if (eeprom_data & eeprom_apme_mask)
6361 adapter->eeprom_wol |= E1000_WUFC_MAG; 6288 adapter->eeprom_wol |= E1000_WUFC_MAG;
6362 6289
6363 /* 6290 /* now that we have the eeprom settings, apply the special cases
6364 * now that we have the eeprom settings, apply the special cases
6365 * where the eeprom may be wrong or the board simply won't support 6291 * where the eeprom may be wrong or the board simply won't support
6366 * wake on lan on a particular port 6292 * wake on lan on a particular port
6367 */ 6293 */
@@ -6378,8 +6304,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
6378 /* reset the hardware with the new settings */ 6304 /* reset the hardware with the new settings */
6379 e1000e_reset(adapter); 6305 e1000e_reset(adapter);
6380 6306
6381 /* 6307 /* If the controller has AMT, do not set DRV_LOAD until the interface
6382 * If the controller has AMT, do not set DRV_LOAD until the interface
6383 * is up. For all other cases, let the f/w know that the h/w is now 6308 * is up. For all other cases, let the f/w know that the h/w is now
6384 * under the control of the driver. 6309 * under the control of the driver.
6385 */ 6310 */
@@ -6442,8 +6367,7 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
6442 struct e1000_adapter *adapter = netdev_priv(netdev); 6367 struct e1000_adapter *adapter = netdev_priv(netdev);
6443 bool down = test_bit(__E1000_DOWN, &adapter->state); 6368 bool down = test_bit(__E1000_DOWN, &adapter->state);
6444 6369
6445 /* 6370 /* The timers may be rescheduled, so explicitly disable them
6446 * The timers may be rescheduled, so explicitly disable them
6447 * from being rescheduled. 6371 * from being rescheduled.
6448 */ 6372 */
6449 if (!down) 6373 if (!down)
@@ -6468,8 +6392,7 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
6468 if (pci_dev_run_wake(pdev)) 6392 if (pci_dev_run_wake(pdev))
6469 pm_runtime_get_noresume(&pdev->dev); 6393 pm_runtime_get_noresume(&pdev->dev);
6470 6394
6471 /* 6395 /* Release control of h/w to f/w. If f/w is AMT enabled, this
6472 * Release control of h/w to f/w. If f/w is AMT enabled, this
6473 * would have already happened in close and is redundant. 6396 * would have already happened in close and is redundant.
6474 */ 6397 */
6475 e1000e_release_hw_control(adapter); 6398 e1000e_release_hw_control(adapter);
diff --git a/drivers/net/ethernet/intel/e1000e/nvm.c b/drivers/net/ethernet/intel/e1000e/nvm.c
index a969f1af1b4e..b6468804cb2e 100644
--- a/drivers/net/ethernet/intel/e1000e/nvm.c
+++ b/drivers/net/ethernet/intel/e1000e/nvm.c
@@ -279,8 +279,7 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw)
279 e1e_flush(); 279 e1e_flush();
280 udelay(1); 280 udelay(1);
281 281
282 /* 282 /* Read "Status Register" repeatedly until the LSB is cleared.
283 * Read "Status Register" repeatedly until the LSB is cleared.
284 * The EEPROM will signal that the command has been completed 283 * The EEPROM will signal that the command has been completed
285 * by clearing bit 0 of the internal status register. If it's 284 * by clearing bit 0 of the internal status register. If it's
286 * not cleared within 'timeout', then error out. 285 * not cleared within 'timeout', then error out.
@@ -321,8 +320,7 @@ s32 e1000e_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
321 u32 i, eerd = 0; 320 u32 i, eerd = 0;
322 s32 ret_val = 0; 321 s32 ret_val = 0;
323 322
324 /* 323 /* A check for invalid values: offset too large, too many words,
325 * A check for invalid values: offset too large, too many words,
326 * too many words for the offset, and not enough words. 324 * too many words for the offset, and not enough words.
327 */ 325 */
328 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) || 326 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) ||
@@ -364,8 +362,7 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
364 s32 ret_val; 362 s32 ret_val;
365 u16 widx = 0; 363 u16 widx = 0;
366 364
367 /* 365 /* A check for invalid values: offset too large, too many words,
368 * A check for invalid values: offset too large, too many words,
369 * and not enough words. 366 * and not enough words.
370 */ 367 */
371 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) || 368 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) ||
@@ -393,8 +390,7 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
393 390
394 e1000_standby_nvm(hw); 391 e1000_standby_nvm(hw);
395 392
396 /* 393 /* Some SPI eeproms use the 8th address bit embedded in the
397 * Some SPI eeproms use the 8th address bit embedded in the
398 * opcode 394 * opcode
399 */ 395 */
400 if ((nvm->address_bits == 8) && (offset >= 128)) 396 if ((nvm->address_bits == 8) && (offset >= 128))
@@ -461,8 +457,7 @@ s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
461 return ret_val; 457 return ret_val;
462 } 458 }
463 459
464 /* 460 /* if nvm_data is not ptr guard the PBA must be in legacy format which
465 * if nvm_data is not ptr guard the PBA must be in legacy format which
466 * means pba_ptr is actually our second data word for the PBA number 461 * means pba_ptr is actually our second data word for the PBA number
467 * and we can decode it into an ascii string 462 * and we can decode it into an ascii string
468 */ 463 */
diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c
index dfbfa7fd98c3..1fbb31554e4d 100644
--- a/drivers/net/ethernet/intel/e1000e/param.c
+++ b/drivers/net/ethernet/intel/e1000e/param.c
@@ -32,11 +32,9 @@
32 32
33#include "e1000.h" 33#include "e1000.h"
34 34
35/* 35/* This is the only thing that needs to be changed to adjust the
36 * This is the only thing that needs to be changed to adjust the
37 * maximum number of ports that the driver can manage. 36 * maximum number of ports that the driver can manage.
38 */ 37 */
39
40#define E1000_MAX_NIC 32 38#define E1000_MAX_NIC 32
41 39
42#define OPTION_UNSET -1 40#define OPTION_UNSET -1
@@ -49,12 +47,10 @@ module_param(copybreak, uint, 0644);
49MODULE_PARM_DESC(copybreak, 47MODULE_PARM_DESC(copybreak,
50 "Maximum size of packet that is copied to a new buffer on receive"); 48 "Maximum size of packet that is copied to a new buffer on receive");
51 49
52/* 50/* All parameters are treated the same, as an integer array of values.
53 * All parameters are treated the same, as an integer array of values.
54 * This macro just reduces the need to repeat the same declaration code 51 * This macro just reduces the need to repeat the same declaration code
55 * over and over (plus this helps to avoid typo bugs). 52 * over and over (plus this helps to avoid typo bugs).
56 */ 53 */
57
58#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET } 54#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET }
59#define E1000_PARAM(X, desc) \ 55#define E1000_PARAM(X, desc) \
60 static int __devinitdata X[E1000_MAX_NIC+1] \ 56 static int __devinitdata X[E1000_MAX_NIC+1] \
@@ -63,8 +59,7 @@ MODULE_PARM_DESC(copybreak,
63 module_param_array_named(X, X, int, &num_##X, 0); \ 59 module_param_array_named(X, X, int, &num_##X, 0); \
64 MODULE_PARM_DESC(X, desc); 60 MODULE_PARM_DESC(X, desc);
65 61
66/* 62/* Transmit Interrupt Delay in units of 1.024 microseconds
67 * Transmit Interrupt Delay in units of 1.024 microseconds
68 * Tx interrupt delay needs to typically be set to something non-zero 63 * Tx interrupt delay needs to typically be set to something non-zero
69 * 64 *
70 * Valid Range: 0-65535 65 * Valid Range: 0-65535
@@ -74,8 +69,7 @@ E1000_PARAM(TxIntDelay, "Transmit Interrupt Delay");
74#define MAX_TXDELAY 0xFFFF 69#define MAX_TXDELAY 0xFFFF
75#define MIN_TXDELAY 0 70#define MIN_TXDELAY 0
76 71
77/* 72/* Transmit Absolute Interrupt Delay in units of 1.024 microseconds
78 * Transmit Absolute Interrupt Delay in units of 1.024 microseconds
79 * 73 *
80 * Valid Range: 0-65535 74 * Valid Range: 0-65535
81 */ 75 */
@@ -84,8 +78,7 @@ E1000_PARAM(TxAbsIntDelay, "Transmit Absolute Interrupt Delay");
84#define MAX_TXABSDELAY 0xFFFF 78#define MAX_TXABSDELAY 0xFFFF
85#define MIN_TXABSDELAY 0 79#define MIN_TXABSDELAY 0
86 80
87/* 81/* Receive Interrupt Delay in units of 1.024 microseconds
88 * Receive Interrupt Delay in units of 1.024 microseconds
89 * hardware will likely hang if you set this to anything but zero. 82 * hardware will likely hang if you set this to anything but zero.
90 * 83 *
91 * Valid Range: 0-65535 84 * Valid Range: 0-65535
@@ -94,8 +87,7 @@ E1000_PARAM(RxIntDelay, "Receive Interrupt Delay");
94#define MAX_RXDELAY 0xFFFF 87#define MAX_RXDELAY 0xFFFF
95#define MIN_RXDELAY 0 88#define MIN_RXDELAY 0
96 89
97/* 90/* Receive Absolute Interrupt Delay in units of 1.024 microseconds
98 * Receive Absolute Interrupt Delay in units of 1.024 microseconds
99 * 91 *
100 * Valid Range: 0-65535 92 * Valid Range: 0-65535
101 */ 93 */
@@ -103,8 +95,7 @@ E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay");
103#define MAX_RXABSDELAY 0xFFFF 95#define MAX_RXABSDELAY 0xFFFF
104#define MIN_RXABSDELAY 0 96#define MIN_RXABSDELAY 0
105 97
106/* 98/* Interrupt Throttle Rate (interrupts/sec)
107 * Interrupt Throttle Rate (interrupts/sec)
108 * 99 *
109 * Valid Range: 100-100000 or one of: 0=off, 1=dynamic, 3=dynamic conservative 100 * Valid Range: 100-100000 or one of: 0=off, 1=dynamic, 3=dynamic conservative
110 */ 101 */
@@ -113,8 +104,7 @@ E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate");
113#define MAX_ITR 100000 104#define MAX_ITR 100000
114#define MIN_ITR 100 105#define MIN_ITR 100
115 106
116/* 107/* IntMode (Interrupt Mode)
117 * IntMode (Interrupt Mode)
118 * 108 *
119 * Valid Range: varies depending on kernel configuration & hardware support 109 * Valid Range: varies depending on kernel configuration & hardware support
120 * 110 *
@@ -132,8 +122,7 @@ E1000_PARAM(IntMode, "Interrupt Mode");
132#define MAX_INTMODE 2 122#define MAX_INTMODE 2
133#define MIN_INTMODE 0 123#define MIN_INTMODE 0
134 124
135/* 125/* Enable Smart Power Down of the PHY
136 * Enable Smart Power Down of the PHY
137 * 126 *
138 * Valid Range: 0, 1 127 * Valid Range: 0, 1
139 * 128 *
@@ -141,8 +130,7 @@ E1000_PARAM(IntMode, "Interrupt Mode");
141 */ 130 */
142E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down"); 131E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down");
143 132
144/* 133/* Enable Kumeran Lock Loss workaround
145 * Enable Kumeran Lock Loss workaround
146 * 134 *
147 * Valid Range: 0, 1 135 * Valid Range: 0, 1
148 * 136 *
@@ -150,8 +138,7 @@ E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down");
150 */ 138 */
151E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); 139E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround");
152 140
153/* 141/* Write Protect NVM
154 * Write Protect NVM
155 * 142 *
156 * Valid Range: 0, 1 143 * Valid Range: 0, 1
157 * 144 *
@@ -159,8 +146,7 @@ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround");
159 */ 146 */
160E1000_PARAM(WriteProtectNVM, "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]"); 147E1000_PARAM(WriteProtectNVM, "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]");
161 148
162/* 149/* Enable CRC Stripping
163 * Enable CRC Stripping
164 * 150 *
165 * Valid Range: 0, 1 151 * Valid Range: 0, 1
166 * 152 *
@@ -351,8 +337,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter)
351 if (num_InterruptThrottleRate > bd) { 337 if (num_InterruptThrottleRate > bd) {
352 adapter->itr = InterruptThrottleRate[bd]; 338 adapter->itr = InterruptThrottleRate[bd];
353 339
354 /* 340 /* Make sure a message is printed for non-special
355 * Make sure a message is printed for non-special
356 * values. And in case of an invalid option, display 341 * values. And in case of an invalid option, display
357 * warning, use default and go through itr/itr_setting 342 * warning, use default and go through itr/itr_setting
358 * adjustment logic below 343 * adjustment logic below
@@ -361,14 +346,12 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter)
361 e1000_validate_option(&adapter->itr, &opt, adapter)) 346 e1000_validate_option(&adapter->itr, &opt, adapter))
362 adapter->itr = opt.def; 347 adapter->itr = opt.def;
363 } else { 348 } else {
364 /* 349 /* If no option specified, use default value and go
365 * If no option specified, use default value and go
366 * through the logic below to adjust itr/itr_setting 350 * through the logic below to adjust itr/itr_setting
367 */ 351 */
368 adapter->itr = opt.def; 352 adapter->itr = opt.def;
369 353
370 /* 354 /* Make sure a message is printed for non-special
371 * Make sure a message is printed for non-special
372 * default values 355 * default values
373 */ 356 */
374 if (adapter->itr > 4) 357 if (adapter->itr > 4)
@@ -400,8 +383,7 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter)
400 opt.name); 383 opt.name);
401 break; 384 break;
402 default: 385 default:
403 /* 386 /* Save the setting, because the dynamic bits
404 * Save the setting, because the dynamic bits
405 * change itr. 387 * change itr.
406 * 388 *
407 * Clear the lower two bits because 389 * Clear the lower two bits because
diff --git a/drivers/net/ethernet/intel/e1000e/phy.c b/drivers/net/ethernet/intel/e1000e/phy.c
index fc62a3f3a5be..28b38ff37e84 100644
--- a/drivers/net/ethernet/intel/e1000e/phy.c
+++ b/drivers/net/ethernet/intel/e1000e/phy.c
@@ -193,8 +193,7 @@ s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
193 return -E1000_ERR_PARAM; 193 return -E1000_ERR_PARAM;
194 } 194 }
195 195
196 /* 196 /* Set up Op-code, Phy Address, and register offset in the MDI
197 * Set up Op-code, Phy Address, and register offset in the MDI
198 * Control register. The MAC will take care of interfacing with the 197 * Control register. The MAC will take care of interfacing with the
199 * PHY to retrieve the desired data. 198 * PHY to retrieve the desired data.
200 */ 199 */
@@ -204,8 +203,7 @@ s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
204 203
205 ew32(MDIC, mdic); 204 ew32(MDIC, mdic);
206 205
207 /* 206 /* Poll the ready bit to see if the MDI read completed
208 * Poll the ready bit to see if the MDI read completed
209 * Increasing the time out as testing showed failures with 207 * Increasing the time out as testing showed failures with
210 * the lower time out 208 * the lower time out
211 */ 209 */
@@ -225,8 +223,7 @@ s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
225 } 223 }
226 *data = (u16) mdic; 224 *data = (u16) mdic;
227 225
228 /* 226 /* Allow some time after each MDIC transaction to avoid
229 * Allow some time after each MDIC transaction to avoid
230 * reading duplicate data in the next MDIC transaction. 227 * reading duplicate data in the next MDIC transaction.
231 */ 228 */
232 if (hw->mac.type == e1000_pch2lan) 229 if (hw->mac.type == e1000_pch2lan)
@@ -253,8 +250,7 @@ s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
253 return -E1000_ERR_PARAM; 250 return -E1000_ERR_PARAM;
254 } 251 }
255 252
256 /* 253 /* Set up Op-code, Phy Address, and register offset in the MDI
257 * Set up Op-code, Phy Address, and register offset in the MDI
258 * Control register. The MAC will take care of interfacing with the 254 * Control register. The MAC will take care of interfacing with the
259 * PHY to retrieve the desired data. 255 * PHY to retrieve the desired data.
260 */ 256 */
@@ -265,8 +261,7 @@ s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
265 261
266 ew32(MDIC, mdic); 262 ew32(MDIC, mdic);
267 263
268 /* 264 /* Poll the ready bit to see if the MDI read completed
269 * Poll the ready bit to see if the MDI read completed
270 * Increasing the time out as testing showed failures with 265 * Increasing the time out as testing showed failures with
271 * the lower time out 266 * the lower time out
272 */ 267 */
@@ -285,8 +280,7 @@ s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
285 return -E1000_ERR_PHY; 280 return -E1000_ERR_PHY;
286 } 281 }
287 282
288 /* 283 /* Allow some time after each MDIC transaction to avoid
289 * Allow some time after each MDIC transaction to avoid
290 * reading duplicate data in the next MDIC transaction. 284 * reading duplicate data in the next MDIC transaction.
291 */ 285 */
292 if (hw->mac.type == e1000_pch2lan) 286 if (hw->mac.type == e1000_pch2lan)
@@ -708,8 +702,7 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
708 if (ret_val) 702 if (ret_val)
709 return ret_val; 703 return ret_val;
710 phy_data &= ~I82577_PHY_CTRL2_MDIX_CFG_MASK; 704 phy_data &= ~I82577_PHY_CTRL2_MDIX_CFG_MASK;
711 /* 705 /* Options:
712 * Options:
713 * 0 - Auto (default) 706 * 0 - Auto (default)
714 * 1 - MDI mode 707 * 1 - MDI mode
715 * 2 - MDI-X mode 708 * 2 - MDI-X mode
@@ -754,8 +747,7 @@ s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw)
754 if (phy->type != e1000_phy_bm) 747 if (phy->type != e1000_phy_bm)
755 phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; 748 phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
756 749
757 /* 750 /* Options:
758 * Options:
759 * MDI/MDI-X = 0 (default) 751 * MDI/MDI-X = 0 (default)
760 * 0 - Auto for all speeds 752 * 0 - Auto for all speeds
761 * 1 - MDI mode 753 * 1 - MDI mode
@@ -780,8 +772,7 @@ s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw)
780 break; 772 break;
781 } 773 }
782 774
783 /* 775 /* Options:
784 * Options:
785 * disable_polarity_correction = 0 (default) 776 * disable_polarity_correction = 0 (default)
786 * Automatic Correction for Reversed Cable Polarity 777 * Automatic Correction for Reversed Cable Polarity
787 * 0 - Disabled 778 * 0 - Disabled
@@ -818,8 +809,7 @@ s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw)
818 if ((phy->type == e1000_phy_m88) && 809 if ((phy->type == e1000_phy_m88) &&
819 (phy->revision < E1000_REVISION_4) && 810 (phy->revision < E1000_REVISION_4) &&
820 (phy->id != BME1000_E_PHY_ID_R2)) { 811 (phy->id != BME1000_E_PHY_ID_R2)) {
821 /* 812 /* Force TX_CLK in the Extended PHY Specific Control Register
822 * Force TX_CLK in the Extended PHY Specific Control Register
823 * to 25MHz clock. 813 * to 25MHz clock.
824 */ 814 */
825 ret_val = e1e_rphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data); 815 ret_val = e1e_rphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data);
@@ -899,8 +889,7 @@ s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw)
899 return ret_val; 889 return ret_val;
900 } 890 }
901 891
902 /* 892 /* Wait 100ms for MAC to configure PHY from NVM settings, to avoid
903 * Wait 100ms for MAC to configure PHY from NVM settings, to avoid
904 * timeout issues when LFS is enabled. 893 * timeout issues when LFS is enabled.
905 */ 894 */
906 msleep(100); 895 msleep(100);
@@ -936,8 +925,7 @@ s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw)
936 925
937 /* set auto-master slave resolution settings */ 926 /* set auto-master slave resolution settings */
938 if (hw->mac.autoneg) { 927 if (hw->mac.autoneg) {
939 /* 928 /* when autonegotiation advertisement is only 1000Mbps then we
940 * when autonegotiation advertisement is only 1000Mbps then we
941 * should disable SmartSpeed and enable Auto MasterSlave 929 * should disable SmartSpeed and enable Auto MasterSlave
942 * resolution as hardware default. 930 * resolution as hardware default.
943 */ 931 */
@@ -1001,16 +989,14 @@ static s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
1001 return ret_val; 989 return ret_val;
1002 } 990 }
1003 991
1004 /* 992 /* Need to parse both autoneg_advertised and fc and set up
1005 * Need to parse both autoneg_advertised and fc and set up
1006 * the appropriate PHY registers. First we will parse for 993 * the appropriate PHY registers. First we will parse for
1007 * autoneg_advertised software override. Since we can advertise 994 * autoneg_advertised software override. Since we can advertise
1008 * a plethora of combinations, we need to check each bit 995 * a plethora of combinations, we need to check each bit
1009 * individually. 996 * individually.
1010 */ 997 */
1011 998
1012 /* 999 /* First we clear all the 10/100 mb speed bits in the Auto-Neg
1013 * First we clear all the 10/100 mb speed bits in the Auto-Neg
1014 * Advertisement Register (Address 4) and the 1000 mb speed bits in 1000 * Advertisement Register (Address 4) and the 1000 mb speed bits in
1015 * the 1000Base-T Control Register (Address 9). 1001 * the 1000Base-T Control Register (Address 9).
1016 */ 1002 */
@@ -1056,8 +1042,7 @@ static s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
1056 mii_1000t_ctrl_reg |= CR_1000T_FD_CAPS; 1042 mii_1000t_ctrl_reg |= CR_1000T_FD_CAPS;
1057 } 1043 }
1058 1044
1059 /* 1045 /* Check for a software override of the flow control settings, and
1060 * Check for a software override of the flow control settings, and
1061 * setup the PHY advertisement registers accordingly. If 1046 * setup the PHY advertisement registers accordingly. If
1062 * auto-negotiation is enabled, then software will have to set the 1047 * auto-negotiation is enabled, then software will have to set the
1063 * "PAUSE" bits to the correct value in the Auto-Negotiation 1048 * "PAUSE" bits to the correct value in the Auto-Negotiation
@@ -1076,15 +1061,13 @@ static s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
1076 */ 1061 */
1077 switch (hw->fc.current_mode) { 1062 switch (hw->fc.current_mode) {
1078 case e1000_fc_none: 1063 case e1000_fc_none:
1079 /* 1064 /* Flow control (Rx & Tx) is completely disabled by a
1080 * Flow control (Rx & Tx) is completely disabled by a
1081 * software over-ride. 1065 * software over-ride.
1082 */ 1066 */
1083 mii_autoneg_adv_reg &= ~(NWAY_AR_ASM_DIR | NWAY_AR_PAUSE); 1067 mii_autoneg_adv_reg &= ~(NWAY_AR_ASM_DIR | NWAY_AR_PAUSE);
1084 break; 1068 break;
1085 case e1000_fc_rx_pause: 1069 case e1000_fc_rx_pause:
1086 /* 1070 /* Rx Flow control is enabled, and Tx Flow control is
1087 * Rx Flow control is enabled, and Tx Flow control is
1088 * disabled, by a software over-ride. 1071 * disabled, by a software over-ride.
1089 * 1072 *
1090 * Since there really isn't a way to advertise that we are 1073 * Since there really isn't a way to advertise that we are
@@ -1096,16 +1079,14 @@ static s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
1096 mii_autoneg_adv_reg |= (NWAY_AR_ASM_DIR | NWAY_AR_PAUSE); 1079 mii_autoneg_adv_reg |= (NWAY_AR_ASM_DIR | NWAY_AR_PAUSE);
1097 break; 1080 break;
1098 case e1000_fc_tx_pause: 1081 case e1000_fc_tx_pause:
1099 /* 1082 /* Tx Flow control is enabled, and Rx Flow control is
1100 * Tx Flow control is enabled, and Rx Flow control is
1101 * disabled, by a software over-ride. 1083 * disabled, by a software over-ride.
1102 */ 1084 */
1103 mii_autoneg_adv_reg |= NWAY_AR_ASM_DIR; 1085 mii_autoneg_adv_reg |= NWAY_AR_ASM_DIR;
1104 mii_autoneg_adv_reg &= ~NWAY_AR_PAUSE; 1086 mii_autoneg_adv_reg &= ~NWAY_AR_PAUSE;
1105 break; 1087 break;
1106 case e1000_fc_full: 1088 case e1000_fc_full:
1107 /* 1089 /* Flow control (both Rx and Tx) is enabled by a software
1108 * Flow control (both Rx and Tx) is enabled by a software
1109 * over-ride. 1090 * over-ride.
1110 */ 1091 */
1111 mii_autoneg_adv_reg |= (NWAY_AR_ASM_DIR | NWAY_AR_PAUSE); 1092 mii_autoneg_adv_reg |= (NWAY_AR_ASM_DIR | NWAY_AR_PAUSE);
@@ -1142,14 +1123,12 @@ static s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
1142 s32 ret_val; 1123 s32 ret_val;
1143 u16 phy_ctrl; 1124 u16 phy_ctrl;
1144 1125
1145 /* 1126 /* Perform some bounds checking on the autoneg advertisement
1146 * Perform some bounds checking on the autoneg advertisement
1147 * parameter. 1127 * parameter.
1148 */ 1128 */
1149 phy->autoneg_advertised &= phy->autoneg_mask; 1129 phy->autoneg_advertised &= phy->autoneg_mask;
1150 1130
1151 /* 1131 /* If autoneg_advertised is zero, we assume it was not defaulted
1152 * If autoneg_advertised is zero, we assume it was not defaulted
1153 * by the calling code so we set to advertise full capability. 1132 * by the calling code so we set to advertise full capability.
1154 */ 1133 */
1155 if (!phy->autoneg_advertised) 1134 if (!phy->autoneg_advertised)
@@ -1163,8 +1142,7 @@ static s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
1163 } 1142 }
1164 e_dbg("Restarting Auto-Neg\n"); 1143 e_dbg("Restarting Auto-Neg\n");
1165 1144
1166 /* 1145 /* Restart auto-negotiation by setting the Auto Neg Enable bit and
1167 * Restart auto-negotiation by setting the Auto Neg Enable bit and
1168 * the Auto Neg Restart bit in the PHY control register. 1146 * the Auto Neg Restart bit in the PHY control register.
1169 */ 1147 */
1170 ret_val = e1e_rphy(hw, PHY_CONTROL, &phy_ctrl); 1148 ret_val = e1e_rphy(hw, PHY_CONTROL, &phy_ctrl);
@@ -1176,8 +1154,7 @@ static s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
1176 if (ret_val) 1154 if (ret_val)
1177 return ret_val; 1155 return ret_val;
1178 1156
1179 /* 1157 /* Does the user want to wait for Auto-Neg to complete here, or
1180 * Does the user want to wait for Auto-Neg to complete here, or
1181 * check at a later time (for example, callback routine). 1158 * check at a later time (for example, callback routine).
1182 */ 1159 */
1183 if (phy->autoneg_wait_to_complete) { 1160 if (phy->autoneg_wait_to_complete) {
@@ -1208,16 +1185,14 @@ s32 e1000e_setup_copper_link(struct e1000_hw *hw)
1208 bool link; 1185 bool link;
1209 1186
1210 if (hw->mac.autoneg) { 1187 if (hw->mac.autoneg) {
1211 /* 1188 /* Setup autoneg and flow control advertisement and perform
1212 * Setup autoneg and flow control advertisement and perform
1213 * autonegotiation. 1189 * autonegotiation.
1214 */ 1190 */
1215 ret_val = e1000_copper_link_autoneg(hw); 1191 ret_val = e1000_copper_link_autoneg(hw);
1216 if (ret_val) 1192 if (ret_val)
1217 return ret_val; 1193 return ret_val;
1218 } else { 1194 } else {
1219 /* 1195 /* PHY will be set to 10H, 10F, 100H or 100F
1220 * PHY will be set to 10H, 10F, 100H or 100F
1221 * depending on user settings. 1196 * depending on user settings.
1222 */ 1197 */
1223 e_dbg("Forcing Speed and Duplex\n"); 1198 e_dbg("Forcing Speed and Duplex\n");
@@ -1228,8 +1203,7 @@ s32 e1000e_setup_copper_link(struct e1000_hw *hw)
1228 } 1203 }
1229 } 1204 }
1230 1205
1231 /* 1206 /* Check link status. Wait up to 100 microseconds for link to become
1232 * Check link status. Wait up to 100 microseconds for link to become
1233 * valid. 1207 * valid.
1234 */ 1208 */
1235 ret_val = e1000e_phy_has_link_generic(hw, COPPER_LINK_UP_LIMIT, 10, 1209 ret_val = e1000e_phy_has_link_generic(hw, COPPER_LINK_UP_LIMIT, 10,
@@ -1273,8 +1247,7 @@ s32 e1000e_phy_force_speed_duplex_igp(struct e1000_hw *hw)
1273 if (ret_val) 1247 if (ret_val)
1274 return ret_val; 1248 return ret_val;
1275 1249
1276 /* 1250 /* Clear Auto-Crossover to force MDI manually. IGP requires MDI
1277 * Clear Auto-Crossover to force MDI manually. IGP requires MDI
1278 * forced whenever speed and duplex are forced. 1251 * forced whenever speed and duplex are forced.
1279 */ 1252 */
1280 ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data); 1253 ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data);
@@ -1328,8 +1301,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)
1328 u16 phy_data; 1301 u16 phy_data;
1329 bool link; 1302 bool link;
1330 1303
1331 /* 1304 /* Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI
1332 * Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI
1333 * forced whenever speed and duplex are forced. 1305 * forced whenever speed and duplex are forced.
1334 */ 1306 */
1335 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); 1307 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
@@ -1370,8 +1342,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)
1370 if (hw->phy.type != e1000_phy_m88) { 1342 if (hw->phy.type != e1000_phy_m88) {
1371 e_dbg("Link taking longer than expected.\n"); 1343 e_dbg("Link taking longer than expected.\n");
1372 } else { 1344 } else {
1373 /* 1345 /* We didn't get link.
1374 * We didn't get link.
1375 * Reset the DSP and cross our fingers. 1346 * Reset the DSP and cross our fingers.
1376 */ 1347 */
1377 ret_val = e1e_wphy(hw, M88E1000_PHY_PAGE_SELECT, 1348 ret_val = e1e_wphy(hw, M88E1000_PHY_PAGE_SELECT,
@@ -1398,8 +1369,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)
1398 if (ret_val) 1369 if (ret_val)
1399 return ret_val; 1370 return ret_val;
1400 1371
1401 /* 1372 /* Resetting the phy means we need to re-force TX_CLK in the
1402 * Resetting the phy means we need to re-force TX_CLK in the
1403 * Extended PHY Specific Control Register to 25MHz clock from 1373 * Extended PHY Specific Control Register to 25MHz clock from
1404 * the reset value of 2.5MHz. 1374 * the reset value of 2.5MHz.
1405 */ 1375 */
@@ -1408,8 +1378,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)
1408 if (ret_val) 1378 if (ret_val)
1409 return ret_val; 1379 return ret_val;
1410 1380
1411 /* 1381 /* In addition, we must re-enable CRS on Tx for both half and full
1412 * In addition, we must re-enable CRS on Tx for both half and full
1413 * duplex. 1382 * duplex.
1414 */ 1383 */
1415 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); 1384 ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
@@ -1573,8 +1542,7 @@ s32 e1000e_set_d3_lplu_state(struct e1000_hw *hw, bool active)
1573 ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data); 1542 ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data);
1574 if (ret_val) 1543 if (ret_val)
1575 return ret_val; 1544 return ret_val;
1576 /* 1545 /* LPLU and SmartSpeed are mutually exclusive. LPLU is used
1577 * LPLU and SmartSpeed are mutually exclusive. LPLU is used
1578 * during Dx states where the power conservation is most 1546 * during Dx states where the power conservation is most
1579 * important. During driver activity we should enable 1547 * important. During driver activity we should enable
1580 * SmartSpeed, so performance is maintained. 1548 * SmartSpeed, so performance is maintained.
@@ -1702,8 +1670,7 @@ s32 e1000_check_polarity_igp(struct e1000_hw *hw)
1702 s32 ret_val; 1670 s32 ret_val;
1703 u16 data, offset, mask; 1671 u16 data, offset, mask;
1704 1672
1705 /* 1673 /* Polarity is determined based on the speed of
1706 * Polarity is determined based on the speed of
1707 * our connection. 1674 * our connection.
1708 */ 1675 */
1709 ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_STATUS, &data); 1676 ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_STATUS, &data);
@@ -1715,8 +1682,7 @@ s32 e1000_check_polarity_igp(struct e1000_hw *hw)
1715 offset = IGP01E1000_PHY_PCS_INIT_REG; 1682 offset = IGP01E1000_PHY_PCS_INIT_REG;
1716 mask = IGP01E1000_PHY_POLARITY_MASK; 1683 mask = IGP01E1000_PHY_POLARITY_MASK;
1717 } else { 1684 } else {
1718 /* 1685 /* This really only applies to 10Mbps since
1719 * This really only applies to 10Mbps since
1720 * there is no polarity for 100Mbps (always 0). 1686 * there is no polarity for 100Mbps (always 0).
1721 */ 1687 */
1722 offset = IGP01E1000_PHY_PORT_STATUS; 1688 offset = IGP01E1000_PHY_PORT_STATUS;
@@ -1745,8 +1711,7 @@ s32 e1000_check_polarity_ife(struct e1000_hw *hw)
1745 s32 ret_val; 1711 s32 ret_val;
1746 u16 phy_data, offset, mask; 1712 u16 phy_data, offset, mask;
1747 1713
1748 /* 1714 /* Polarity is determined based on the reversal feature being enabled.
1749 * Polarity is determined based on the reversal feature being enabled.
1750 */ 1715 */
1751 if (phy->polarity_correction) { 1716 if (phy->polarity_correction) {
1752 offset = IFE_PHY_EXTENDED_STATUS_CONTROL; 1717 offset = IFE_PHY_EXTENDED_STATUS_CONTROL;
@@ -1791,8 +1756,7 @@ static s32 e1000_wait_autoneg(struct e1000_hw *hw)
1791 msleep(100); 1756 msleep(100);
1792 } 1757 }
1793 1758
1794 /* 1759 /* PHY_AUTO_NEG_TIME expiration doesn't guarantee auto-negotiation
1795 * PHY_AUTO_NEG_TIME expiration doesn't guarantee auto-negotiation
1796 * has completed. 1760 * has completed.
1797 */ 1761 */
1798 return ret_val; 1762 return ret_val;
@@ -1814,15 +1778,13 @@ s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
1814 u16 i, phy_status; 1778 u16 i, phy_status;
1815 1779
1816 for (i = 0; i < iterations; i++) { 1780 for (i = 0; i < iterations; i++) {
1817 /* 1781 /* Some PHYs require the PHY_STATUS register to be read
1818 * Some PHYs require the PHY_STATUS register to be read
1819 * twice due to the link bit being sticky. No harm doing 1782 * twice due to the link bit being sticky. No harm doing
1820 * it across the board. 1783 * it across the board.
1821 */ 1784 */
1822 ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status); 1785 ret_val = e1e_rphy(hw, PHY_STATUS, &phy_status);
1823 if (ret_val) 1786 if (ret_val)
1824 /* 1787 /* If the first read fails, another entity may have
1825 * If the first read fails, another entity may have
1826 * ownership of the resources, wait and try again to 1788 * ownership of the resources, wait and try again to
1827 * see if they have relinquished the resources yet. 1789 * see if they have relinquished the resources yet.
1828 */ 1790 */
@@ -1913,8 +1875,7 @@ s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw)
1913 if (ret_val) 1875 if (ret_val)
1914 return ret_val; 1876 return ret_val;
1915 1877
1916 /* 1878 /* Getting bits 15:9, which represent the combination of
1917 * Getting bits 15:9, which represent the combination of
1918 * coarse and fine gain values. The result is a number 1879 * coarse and fine gain values. The result is a number
1919 * that can be put into the lookup table to obtain the 1880 * that can be put into the lookup table to obtain the
1920 * approximate cable length. 1881 * approximate cable length.
@@ -2285,15 +2246,13 @@ s32 e1000e_phy_init_script_igp3(struct e1000_hw *hw)
2285 e1e_wphy(hw, 0x1796, 0x0008); 2246 e1e_wphy(hw, 0x1796, 0x0008);
2286 /* Change cg_icount + enable integbp for channels BCD */ 2247 /* Change cg_icount + enable integbp for channels BCD */
2287 e1e_wphy(hw, 0x1798, 0xD008); 2248 e1e_wphy(hw, 0x1798, 0xD008);
2288 /* 2249 /* Change cg_icount + enable integbp + change prop_factor_master
2289 * Change cg_icount + enable integbp + change prop_factor_master
2290 * to 8 for channel A 2250 * to 8 for channel A
2291 */ 2251 */
2292 e1e_wphy(hw, 0x1898, 0xD918); 2252 e1e_wphy(hw, 0x1898, 0xD918);
2293 /* Disable AHT in Slave mode on channel A */ 2253 /* Disable AHT in Slave mode on channel A */
2294 e1e_wphy(hw, 0x187A, 0x0800); 2254 e1e_wphy(hw, 0x187A, 0x0800);
2295 /* 2255 /* Enable LPLU and disable AN to 1000 in non-D0a states,
2296 * Enable LPLU and disable AN to 1000 in non-D0a states,
2297 * Enable SPD+B2B 2256 * Enable SPD+B2B
2298 */ 2257 */
2299 e1e_wphy(hw, 0x0019, 0x008D); 2258 e1e_wphy(hw, 0x0019, 0x008D);
@@ -2417,8 +2376,7 @@ s32 e1000e_determine_phy_address(struct e1000_hw *hw)
2417 e1000e_get_phy_id(hw); 2376 e1000e_get_phy_id(hw);
2418 phy_type = e1000e_get_phy_type_from_id(hw->phy.id); 2377 phy_type = e1000e_get_phy_type_from_id(hw->phy.id);
2419 2378
2420 /* 2379 /* If phy_type is valid, break - we found our
2421 * If phy_type is valid, break - we found our
2422 * PHY address 2380 * PHY address
2423 */ 2381 */
2424 if (phy_type != e1000_phy_unknown) 2382 if (phy_type != e1000_phy_unknown)
@@ -2478,8 +2436,7 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
2478 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2436 if (offset > MAX_PHY_MULTI_PAGE_REG) {
2479 u32 page_shift, page_select; 2437 u32 page_shift, page_select;
2480 2438
2481 /* 2439 /* Page select is register 31 for phy address 1 and 22 for
2482 * Page select is register 31 for phy address 1 and 22 for
2483 * phy address 2 and 3. Page select is shifted only for 2440 * phy address 2 and 3. Page select is shifted only for
2484 * phy address 1. 2441 * phy address 1.
2485 */ 2442 */
@@ -2537,8 +2494,7 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
2537 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2494 if (offset > MAX_PHY_MULTI_PAGE_REG) {
2538 u32 page_shift, page_select; 2495 u32 page_shift, page_select;
2539 2496
2540 /* 2497 /* Page select is register 31 for phy address 1 and 22 for
2541 * Page select is register 31 for phy address 1 and 22 for
2542 * phy address 2 and 3. Page select is shifted only for 2498 * phy address 2 and 3. Page select is shifted only for
2543 * phy address 1. 2499 * phy address 1.
2544 */ 2500 */
@@ -2683,8 +2639,7 @@ s32 e1000_enable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
2683 return ret_val; 2639 return ret_val;
2684 } 2640 }
2685 2641
2686 /* 2642 /* Enable both PHY wakeup mode and Wakeup register page writes.
2687 * Enable both PHY wakeup mode and Wakeup register page writes.
2688 * Prevent a power state change by disabling ME and Host PHY wakeup. 2643 * Prevent a power state change by disabling ME and Host PHY wakeup.
2689 */ 2644 */
2690 temp = *phy_reg; 2645 temp = *phy_reg;
@@ -2698,8 +2653,7 @@ s32 e1000_enable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
2698 return ret_val; 2653 return ret_val;
2699 } 2654 }
2700 2655
2701 /* 2656 /* Select Host Wakeup Registers page - caller now able to write
2702 * Select Host Wakeup Registers page - caller now able to write
2703 * registers on the Wakeup registers page 2657 * registers on the Wakeup registers page
2704 */ 2658 */
2705 return e1000_set_page_igp(hw, (BM_WUC_PAGE << IGP_PAGE_SHIFT)); 2659 return e1000_set_page_igp(hw, (BM_WUC_PAGE << IGP_PAGE_SHIFT));
@@ -3038,8 +2992,7 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
3038 if (page == HV_INTC_FC_PAGE_START) 2992 if (page == HV_INTC_FC_PAGE_START)
3039 page = 0; 2993 page = 0;
3040 2994
3041 /* 2995 /* Workaround MDIO accesses being disabled after entering IEEE
3042 * Workaround MDIO accesses being disabled after entering IEEE
3043 * Power Down (when bit 11 of the PHY Control register is set) 2996 * Power Down (when bit 11 of the PHY Control register is set)
3044 */ 2997 */
3045 if ((hw->phy.type == e1000_phy_82578) && 2998 if ((hw->phy.type == e1000_phy_82578) &&
diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c
index 8c12dbd0d6ce..fdaaf2709d0a 100644
--- a/drivers/net/ethernet/intel/igb/e1000_82575.c
+++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
@@ -1028,6 +1028,15 @@ static s32 igb_check_for_link_82575(struct e1000_hw *hw)
1028 * continue to check for link. 1028 * continue to check for link.
1029 */ 1029 */
1030 hw->mac.get_link_status = !hw->mac.serdes_has_link; 1030 hw->mac.get_link_status = !hw->mac.serdes_has_link;
1031
1032 /* Configure Flow Control now that Auto-Neg has completed.
1033 * First, we need to restore the desired flow control
1034 * settings because we may have had to re-autoneg with a
1035 * different link partner.
1036 */
1037 ret_val = igb_config_fc_after_link_up(hw);
1038 if (ret_val)
1039 hw_dbg("Error configuring flow control\n");
1031 } else { 1040 } else {
1032 ret_val = igb_check_for_copper_link(hw); 1041 ret_val = igb_check_for_copper_link(hw);
1033 } 1042 }
@@ -1345,7 +1354,7 @@ out:
1345 **/ 1354 **/
1346static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw) 1355static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
1347{ 1356{
1348 u32 ctrl_ext, ctrl_reg, reg; 1357 u32 ctrl_ext, ctrl_reg, reg, anadv_reg;
1349 bool pcs_autoneg; 1358 bool pcs_autoneg;
1350 s32 ret_val = E1000_SUCCESS; 1359 s32 ret_val = E1000_SUCCESS;
1351 u16 data; 1360 u16 data;
@@ -1433,27 +1442,45 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
1433 reg &= ~(E1000_PCS_LCTL_AN_ENABLE | E1000_PCS_LCTL_FLV_LINK_UP | 1442 reg &= ~(E1000_PCS_LCTL_AN_ENABLE | E1000_PCS_LCTL_FLV_LINK_UP |
1434 E1000_PCS_LCTL_FSD | E1000_PCS_LCTL_FORCE_LINK); 1443 E1000_PCS_LCTL_FSD | E1000_PCS_LCTL_FORCE_LINK);
1435 1444
1436 /*
1437 * We force flow control to prevent the CTRL register values from being
1438 * overwritten by the autonegotiated flow control values
1439 */
1440 reg |= E1000_PCS_LCTL_FORCE_FCTRL;
1441
1442 if (pcs_autoneg) { 1445 if (pcs_autoneg) {
1443 /* Set PCS register for autoneg */ 1446 /* Set PCS register for autoneg */
1444 reg |= E1000_PCS_LCTL_AN_ENABLE | /* Enable Autoneg */ 1447 reg |= E1000_PCS_LCTL_AN_ENABLE | /* Enable Autoneg */
1445 E1000_PCS_LCTL_AN_RESTART; /* Restart autoneg */ 1448 E1000_PCS_LCTL_AN_RESTART; /* Restart autoneg */
1449
1450 /* Disable force flow control for autoneg */
1451 reg &= ~E1000_PCS_LCTL_FORCE_FCTRL;
1452
1453 /* Configure flow control advertisement for autoneg */
1454 anadv_reg = rd32(E1000_PCS_ANADV);
1455 anadv_reg &= ~(E1000_TXCW_ASM_DIR | E1000_TXCW_PAUSE);
1456 switch (hw->fc.requested_mode) {
1457 case e1000_fc_full:
1458 case e1000_fc_rx_pause:
1459 anadv_reg |= E1000_TXCW_ASM_DIR;
1460 anadv_reg |= E1000_TXCW_PAUSE;
1461 break;
1462 case e1000_fc_tx_pause:
1463 anadv_reg |= E1000_TXCW_ASM_DIR;
1464 break;
1465 default:
1466 break;
1467 }
1468 wr32(E1000_PCS_ANADV, anadv_reg);
1469
1446 hw_dbg("Configuring Autoneg:PCS_LCTL=0x%08X\n", reg); 1470 hw_dbg("Configuring Autoneg:PCS_LCTL=0x%08X\n", reg);
1447 } else { 1471 } else {
1448 /* Set PCS register for forced link */ 1472 /* Set PCS register for forced link */
1449 reg |= E1000_PCS_LCTL_FSD; /* Force Speed */ 1473 reg |= E1000_PCS_LCTL_FSD; /* Force Speed */
1450 1474
1475 /* Force flow control for forced link */
1476 reg |= E1000_PCS_LCTL_FORCE_FCTRL;
1477
1451 hw_dbg("Configuring Forced Link:PCS_LCTL=0x%08X\n", reg); 1478 hw_dbg("Configuring Forced Link:PCS_LCTL=0x%08X\n", reg);
1452 } 1479 }
1453 1480
1454 wr32(E1000_PCS_LCTL, reg); 1481 wr32(E1000_PCS_LCTL, reg);
1455 1482
1456 if (!igb_sgmii_active_82575(hw)) 1483 if (!pcs_autoneg && !igb_sgmii_active_82575(hw))
1457 igb_force_mac_fc(hw); 1484 igb_force_mac_fc(hw);
1458 1485
1459 return ret_val; 1486 return ret_val;
@@ -1927,6 +1954,12 @@ static s32 igb_reset_hw_82580(struct e1000_hw *hw)
1927 1954
1928 hw->dev_spec._82575.global_device_reset = false; 1955 hw->dev_spec._82575.global_device_reset = false;
1929 1956
1957 /* due to hw errata, global device reset doesn't always
1958 * work on 82580
1959 */
1960 if (hw->mac.type == e1000_82580)
1961 global_device_reset = false;
1962
1930 /* Get current control state. */ 1963 /* Get current control state. */
1931 ctrl = rd32(E1000_CTRL); 1964 ctrl = rd32(E1000_CTRL);
1932 1965
diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h
index 198d14848820..45dce06eff26 100644
--- a/drivers/net/ethernet/intel/igb/e1000_defines.h
+++ b/drivers/net/ethernet/intel/igb/e1000_defines.h
@@ -431,6 +431,10 @@
431#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100 431#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
432#define FLOW_CONTROL_TYPE 0x8808 432#define FLOW_CONTROL_TYPE 0x8808
433 433
434/* Transmit Config Word */
435#define E1000_TXCW_ASM_DIR 0x00000100 /* TXCW astm pause direction */
436#define E1000_TXCW_PAUSE 0x00000080 /* TXCW sym pause request */
437
434/* 802.1q VLAN Packet Size */ 438/* 802.1q VLAN Packet Size */
435#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */ 439#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */
436#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */ 440#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */
@@ -539,6 +543,9 @@
539/* mPHY Near End Digital Loopback Override Bit */ 543/* mPHY Near End Digital Loopback Override Bit */
540#define E1000_MPHY_PCS_CLK_REG_DIGINELBEN 0x10 544#define E1000_MPHY_PCS_CLK_REG_DIGINELBEN 0x10
541 545
546#define E1000_PCS_LCTL_FORCE_FCTRL 0x80
547#define E1000_PCS_LSTS_AN_COMPLETE 0x10000
548
542/* PHY Control Register */ 549/* PHY Control Register */
543#define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */ 550#define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */
544#define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */ 551#define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */
diff --git a/drivers/net/ethernet/intel/igb/e1000_i210.c b/drivers/net/ethernet/intel/igb/e1000_i210.c
index 41474298d365..fbcdbebb0b5f 100644
--- a/drivers/net/ethernet/intel/igb/e1000_i210.c
+++ b/drivers/net/ethernet/intel/igb/e1000_i210.c
@@ -35,11 +35,42 @@
35#include "e1000_hw.h" 35#include "e1000_hw.h"
36#include "e1000_i210.h" 36#include "e1000_i210.h"
37 37
38static s32 igb_get_hw_semaphore_i210(struct e1000_hw *hw); 38/**
39static void igb_put_hw_semaphore_i210(struct e1000_hw *hw); 39 * igb_get_hw_semaphore_i210 - Acquire hardware semaphore
40static s32 igb_write_nvm_srwr(struct e1000_hw *hw, u16 offset, u16 words, 40 * @hw: pointer to the HW structure
41 u16 *data); 41 *
42static s32 igb_pool_flash_update_done_i210(struct e1000_hw *hw); 42 * Acquire the HW semaphore to access the PHY or NVM
43 */
44static s32 igb_get_hw_semaphore_i210(struct e1000_hw *hw)
45{
46 u32 swsm;
47 s32 ret_val = E1000_SUCCESS;
48 s32 timeout = hw->nvm.word_size + 1;
49 s32 i = 0;
50
51 /* Get the FW semaphore. */
52 for (i = 0; i < timeout; i++) {
53 swsm = rd32(E1000_SWSM);
54 wr32(E1000_SWSM, swsm | E1000_SWSM_SWESMBI);
55
56 /* Semaphore acquired if bit latched */
57 if (rd32(E1000_SWSM) & E1000_SWSM_SWESMBI)
58 break;
59
60 udelay(50);
61 }
62
63 if (i == timeout) {
64 /* Release semaphores */
65 igb_put_hw_semaphore(hw);
66 hw_dbg("Driver can't access the NVM\n");
67 ret_val = -E1000_ERR_NVM;
68 goto out;
69 }
70
71out:
72 return ret_val;
73}
43 74
44/** 75/**
45 * igb_acquire_nvm_i210 - Request for access to EEPROM 76 * igb_acquire_nvm_i210 - Request for access to EEPROM
@@ -68,6 +99,23 @@ void igb_release_nvm_i210(struct e1000_hw *hw)
68} 99}
69 100
70/** 101/**
102 * igb_put_hw_semaphore_i210 - Release hardware semaphore
103 * @hw: pointer to the HW structure
104 *
105 * Release hardware semaphore used to access the PHY or NVM
106 */
107static void igb_put_hw_semaphore_i210(struct e1000_hw *hw)
108{
109 u32 swsm;
110
111 swsm = rd32(E1000_SWSM);
112
113 swsm &= ~E1000_SWSM_SWESMBI;
114
115 wr32(E1000_SWSM, swsm);
116}
117
118/**
71 * igb_acquire_swfw_sync_i210 - Acquire SW/FW semaphore 119 * igb_acquire_swfw_sync_i210 - Acquire SW/FW semaphore
72 * @hw: pointer to the HW structure 120 * @hw: pointer to the HW structure
73 * @mask: specifies which semaphore to acquire 121 * @mask: specifies which semaphore to acquire
@@ -138,60 +186,6 @@ void igb_release_swfw_sync_i210(struct e1000_hw *hw, u16 mask)
138} 186}
139 187
140/** 188/**
141 * igb_get_hw_semaphore_i210 - Acquire hardware semaphore
142 * @hw: pointer to the HW structure
143 *
144 * Acquire the HW semaphore to access the PHY or NVM
145 **/
146static s32 igb_get_hw_semaphore_i210(struct e1000_hw *hw)
147{
148 u32 swsm;
149 s32 ret_val = E1000_SUCCESS;
150 s32 timeout = hw->nvm.word_size + 1;
151 s32 i = 0;
152
153 /* Get the FW semaphore. */
154 for (i = 0; i < timeout; i++) {
155 swsm = rd32(E1000_SWSM);
156 wr32(E1000_SWSM, swsm | E1000_SWSM_SWESMBI);
157
158 /* Semaphore acquired if bit latched */
159 if (rd32(E1000_SWSM) & E1000_SWSM_SWESMBI)
160 break;
161
162 udelay(50);
163 }
164
165 if (i == timeout) {
166 /* Release semaphores */
167 igb_put_hw_semaphore(hw);
168 hw_dbg("Driver can't access the NVM\n");
169 ret_val = -E1000_ERR_NVM;
170 goto out;
171 }
172
173out:
174 return ret_val;
175}
176
177/**
178 * igb_put_hw_semaphore_i210 - Release hardware semaphore
179 * @hw: pointer to the HW structure
180 *
181 * Release hardware semaphore used to access the PHY or NVM
182 **/
183static void igb_put_hw_semaphore_i210(struct e1000_hw *hw)
184{
185 u32 swsm;
186
187 swsm = rd32(E1000_SWSM);
188
189 swsm &= ~E1000_SWSM_SWESMBI;
190
191 wr32(E1000_SWSM, swsm);
192}
193
194/**
195 * igb_read_nvm_srrd_i210 - Reads Shadow Ram using EERD register 189 * igb_read_nvm_srrd_i210 - Reads Shadow Ram using EERD register
196 * @hw: pointer to the HW structure 190 * @hw: pointer to the HW structure
197 * @offset: offset of word in the Shadow Ram to read 191 * @offset: offset of word in the Shadow Ram to read
@@ -229,49 +223,6 @@ s32 igb_read_nvm_srrd_i210(struct e1000_hw *hw, u16 offset, u16 words,
229} 223}
230 224
231/** 225/**
232 * igb_write_nvm_srwr_i210 - Write to Shadow RAM using EEWR
233 * @hw: pointer to the HW structure
234 * @offset: offset within the Shadow RAM to be written to
235 * @words: number of words to write
236 * @data: 16 bit word(s) to be written to the Shadow RAM
237 *
238 * Writes data to Shadow RAM at offset using EEWR register.
239 *
240 * If e1000_update_nvm_checksum is not called after this function , the
241 * data will not be committed to FLASH and also Shadow RAM will most likely
242 * contain an invalid checksum.
243 *
244 * If error code is returned, data and Shadow RAM may be inconsistent - buffer
245 * partially written.
246 **/
247s32 igb_write_nvm_srwr_i210(struct e1000_hw *hw, u16 offset, u16 words,
248 u16 *data)
249{
250 s32 status = E1000_SUCCESS;
251 u16 i, count;
252
253 /* We cannot hold synchronization semaphores for too long,
254 * because of forceful takeover procedure. However it is more efficient
255 * to write in bursts than synchronizing access for each word. */
256 for (i = 0; i < words; i += E1000_EERD_EEWR_MAX_COUNT) {
257 count = (words - i) / E1000_EERD_EEWR_MAX_COUNT > 0 ?
258 E1000_EERD_EEWR_MAX_COUNT : (words - i);
259 if (hw->nvm.ops.acquire(hw) == E1000_SUCCESS) {
260 status = igb_write_nvm_srwr(hw, offset, count,
261 data + i);
262 hw->nvm.ops.release(hw);
263 } else {
264 status = E1000_ERR_SWFW_SYNC;
265 }
266
267 if (status != E1000_SUCCESS)
268 break;
269 }
270
271 return status;
272}
273
274/**
275 * igb_write_nvm_srwr - Write to Shadow Ram using EEWR 226 * igb_write_nvm_srwr - Write to Shadow Ram using EEWR
276 * @hw: pointer to the HW structure 227 * @hw: pointer to the HW structure
277 * @offset: offset within the Shadow Ram to be written to 228 * @offset: offset within the Shadow Ram to be written to
@@ -329,6 +280,50 @@ out:
329} 280}
330 281
331/** 282/**
283 * igb_write_nvm_srwr_i210 - Write to Shadow RAM using EEWR
284 * @hw: pointer to the HW structure
285 * @offset: offset within the Shadow RAM to be written to
286 * @words: number of words to write
287 * @data: 16 bit word(s) to be written to the Shadow RAM
288 *
289 * Writes data to Shadow RAM at offset using EEWR register.
290 *
291 * If e1000_update_nvm_checksum is not called after this function , the
292 * data will not be committed to FLASH and also Shadow RAM will most likely
293 * contain an invalid checksum.
294 *
295 * If error code is returned, data and Shadow RAM may be inconsistent - buffer
296 * partially written.
297 */
298s32 igb_write_nvm_srwr_i210(struct e1000_hw *hw, u16 offset, u16 words,
299 u16 *data)
300{
301 s32 status = E1000_SUCCESS;
302 u16 i, count;
303
304 /* We cannot hold synchronization semaphores for too long,
305 * because of forceful takeover procedure. However it is more efficient
306 * to write in bursts than synchronizing access for each word.
307 */
308 for (i = 0; i < words; i += E1000_EERD_EEWR_MAX_COUNT) {
309 count = (words - i) / E1000_EERD_EEWR_MAX_COUNT > 0 ?
310 E1000_EERD_EEWR_MAX_COUNT : (words - i);
311 if (hw->nvm.ops.acquire(hw) == E1000_SUCCESS) {
312 status = igb_write_nvm_srwr(hw, offset, count,
313 data + i);
314 hw->nvm.ops.release(hw);
315 } else {
316 status = E1000_ERR_SWFW_SYNC;
317 }
318
319 if (status != E1000_SUCCESS)
320 break;
321 }
322
323 return status;
324}
325
326/**
332 * igb_read_nvm_i211 - Read NVM wrapper function for I211 327 * igb_read_nvm_i211 - Read NVM wrapper function for I211
333 * @hw: pointer to the HW structure 328 * @hw: pointer to the HW structure
334 * @address: the word address (aka eeprom offset) to read 329 * @address: the word address (aka eeprom offset) to read
@@ -350,16 +345,40 @@ s32 igb_read_nvm_i211(struct e1000_hw *hw, u16 offset, u16 words,
350 if (ret_val != E1000_SUCCESS) 345 if (ret_val != E1000_SUCCESS)
351 hw_dbg("MAC Addr not found in iNVM\n"); 346 hw_dbg("MAC Addr not found in iNVM\n");
352 break; 347 break;
353 case NVM_ID_LED_SETTINGS:
354 case NVM_INIT_CTRL_2: 348 case NVM_INIT_CTRL_2:
349 ret_val = igb_read_invm_i211(hw, (u8)offset, data);
350 if (ret_val != E1000_SUCCESS) {
351 *data = NVM_INIT_CTRL_2_DEFAULT_I211;
352 ret_val = E1000_SUCCESS;
353 }
354 break;
355 case NVM_INIT_CTRL_4: 355 case NVM_INIT_CTRL_4:
356 ret_val = igb_read_invm_i211(hw, (u8)offset, data);
357 if (ret_val != E1000_SUCCESS) {
358 *data = NVM_INIT_CTRL_4_DEFAULT_I211;
359 ret_val = E1000_SUCCESS;
360 }
361 break;
356 case NVM_LED_1_CFG: 362 case NVM_LED_1_CFG:
363 ret_val = igb_read_invm_i211(hw, (u8)offset, data);
364 if (ret_val != E1000_SUCCESS) {
365 *data = NVM_LED_1_CFG_DEFAULT_I211;
366 ret_val = E1000_SUCCESS;
367 }
368 break;
357 case NVM_LED_0_2_CFG: 369 case NVM_LED_0_2_CFG:
358 igb_read_invm_i211(hw, offset, data); 370 igb_read_invm_i211(hw, offset, data);
371 if (ret_val != E1000_SUCCESS) {
372 *data = NVM_LED_0_2_CFG_DEFAULT_I211;
373 ret_val = E1000_SUCCESS;
374 }
359 break; 375 break;
360 case NVM_COMPAT: 376 case NVM_ID_LED_SETTINGS:
361 *data = ID_LED_DEFAULT_I210; 377 ret_val = igb_read_invm_i211(hw, (u8)offset, data);
362 break; 378 if (ret_val != E1000_SUCCESS) {
379 *data = ID_LED_RESERVED_FFFF;
380 ret_val = E1000_SUCCESS;
381 }
363 case NVM_SUB_DEV_ID: 382 case NVM_SUB_DEV_ID:
364 *data = hw->subsystem_device_id; 383 *data = hw->subsystem_device_id;
365 break; 384 break;
@@ -613,6 +632,28 @@ out:
613} 632}
614 633
615/** 634/**
635 * igb_pool_flash_update_done_i210 - Pool FLUDONE status.
636 * @hw: pointer to the HW structure
637 *
638 */
639static s32 igb_pool_flash_update_done_i210(struct e1000_hw *hw)
640{
641 s32 ret_val = -E1000_ERR_NVM;
642 u32 i, reg;
643
644 for (i = 0; i < E1000_FLUDONE_ATTEMPTS; i++) {
645 reg = rd32(E1000_EECD);
646 if (reg & E1000_EECD_FLUDONE_I210) {
647 ret_val = E1000_SUCCESS;
648 break;
649 }
650 udelay(5);
651 }
652
653 return ret_val;
654}
655
656/**
616 * igb_update_flash_i210 - Commit EEPROM to the flash 657 * igb_update_flash_i210 - Commit EEPROM to the flash
617 * @hw: pointer to the HW structure 658 * @hw: pointer to the HW structure
618 * 659 *
@@ -642,28 +683,6 @@ out:
642} 683}
643 684
644/** 685/**
645 * igb_pool_flash_update_done_i210 - Pool FLUDONE status.
646 * @hw: pointer to the HW structure
647 *
648 **/
649s32 igb_pool_flash_update_done_i210(struct e1000_hw *hw)
650{
651 s32 ret_val = -E1000_ERR_NVM;
652 u32 i, reg;
653
654 for (i = 0; i < E1000_FLUDONE_ATTEMPTS; i++) {
655 reg = rd32(E1000_EECD);
656 if (reg & E1000_EECD_FLUDONE_I210) {
657 ret_val = E1000_SUCCESS;
658 break;
659 }
660 udelay(5);
661 }
662
663 return ret_val;
664}
665
666/**
667 * igb_valid_led_default_i210 - Verify a valid default LED config 686 * igb_valid_led_default_i210 - Verify a valid default LED config
668 * @hw: pointer to the HW structure 687 * @hw: pointer to the HW structure
669 * @data: pointer to the NVM (EEPROM) 688 * @data: pointer to the NVM (EEPROM)
diff --git a/drivers/net/ethernet/intel/igb/e1000_i210.h b/drivers/net/ethernet/intel/igb/e1000_i210.h
index 974d23584d70..1c89358a99ab 100644
--- a/drivers/net/ethernet/intel/igb/e1000_i210.h
+++ b/drivers/net/ethernet/intel/igb/e1000_i210.h
@@ -84,4 +84,10 @@ enum E1000_INVM_STRUCTURE_TYPE {
84 (ID_LED_DEF1_DEF2 << 4) | \ 84 (ID_LED_DEF1_DEF2 << 4) | \
85 (ID_LED_DEF1_DEF2)) 85 (ID_LED_DEF1_DEF2))
86 86
87/* NVM offset defaults for i211 device */
88#define NVM_INIT_CTRL_2_DEFAULT_I211 0X7243
89#define NVM_INIT_CTRL_4_DEFAULT_I211 0x00C1
90#define NVM_LED_1_CFG_DEFAULT_I211 0x0184
91#define NVM_LED_0_2_CFG_DEFAULT_I211 0x200C
92
87#endif 93#endif
diff --git a/drivers/net/ethernet/intel/igb/e1000_mac.c b/drivers/net/ethernet/intel/igb/e1000_mac.c
index 7acddfe9e6d5..101e6e4da97f 100644
--- a/drivers/net/ethernet/intel/igb/e1000_mac.c
+++ b/drivers/net/ethernet/intel/igb/e1000_mac.c
@@ -839,6 +839,7 @@ s32 igb_config_fc_after_link_up(struct e1000_hw *hw)
839{ 839{
840 struct e1000_mac_info *mac = &hw->mac; 840 struct e1000_mac_info *mac = &hw->mac;
841 s32 ret_val = 0; 841 s32 ret_val = 0;
842 u32 pcs_status_reg, pcs_adv_reg, pcs_lp_ability_reg, pcs_ctrl_reg;
842 u16 mii_status_reg, mii_nway_adv_reg, mii_nway_lp_ability_reg; 843 u16 mii_status_reg, mii_nway_adv_reg, mii_nway_lp_ability_reg;
843 u16 speed, duplex; 844 u16 speed, duplex;
844 845
@@ -1040,6 +1041,129 @@ s32 igb_config_fc_after_link_up(struct e1000_hw *hw)
1040 goto out; 1041 goto out;
1041 } 1042 }
1042 } 1043 }
1044 /* Check for the case where we have SerDes media and auto-neg is
1045 * enabled. In this case, we need to check and see if Auto-Neg
1046 * has completed, and if so, how the PHY and link partner has
1047 * flow control configured.
1048 */
1049 if ((hw->phy.media_type == e1000_media_type_internal_serdes)
1050 && mac->autoneg) {
1051 /* Read the PCS_LSTS and check to see if AutoNeg
1052 * has completed.
1053 */
1054 pcs_status_reg = rd32(E1000_PCS_LSTAT);
1055
1056 if (!(pcs_status_reg & E1000_PCS_LSTS_AN_COMPLETE)) {
1057 hw_dbg("PCS Auto Neg has not completed.\n");
1058 return ret_val;
1059 }
1060
1061 /* The AutoNeg process has completed, so we now need to
1062 * read both the Auto Negotiation Advertisement
1063 * Register (PCS_ANADV) and the Auto_Negotiation Base
1064 * Page Ability Register (PCS_LPAB) to determine how
1065 * flow control was negotiated.
1066 */
1067 pcs_adv_reg = rd32(E1000_PCS_ANADV);
1068 pcs_lp_ability_reg = rd32(E1000_PCS_LPAB);
1069
1070 /* Two bits in the Auto Negotiation Advertisement Register
1071 * (PCS_ANADV) and two bits in the Auto Negotiation Base
1072 * Page Ability Register (PCS_LPAB) determine flow control
1073 * for both the PHY and the link partner. The following
1074 * table, taken out of the IEEE 802.3ab/D6.0 dated March 25,
1075 * 1999, describes these PAUSE resolution bits and how flow
1076 * control is determined based upon these settings.
1077 * NOTE: DC = Don't Care
1078 *
1079 * LOCAL DEVICE | LINK PARTNER
1080 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | NIC Resolution
1081 *-------|---------|-------|---------|--------------------
1082 * 0 | 0 | DC | DC | e1000_fc_none
1083 * 0 | 1 | 0 | DC | e1000_fc_none
1084 * 0 | 1 | 1 | 0 | e1000_fc_none
1085 * 0 | 1 | 1 | 1 | e1000_fc_tx_pause
1086 * 1 | 0 | 0 | DC | e1000_fc_none
1087 * 1 | DC | 1 | DC | e1000_fc_full
1088 * 1 | 1 | 0 | 0 | e1000_fc_none
1089 * 1 | 1 | 0 | 1 | e1000_fc_rx_pause
1090 *
1091 * Are both PAUSE bits set to 1? If so, this implies
1092 * Symmetric Flow Control is enabled at both ends. The
1093 * ASM_DIR bits are irrelevant per the spec.
1094 *
1095 * For Symmetric Flow Control:
1096 *
1097 * LOCAL DEVICE | LINK PARTNER
1098 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result
1099 *-------|---------|-------|---------|--------------------
1100 * 1 | DC | 1 | DC | e1000_fc_full
1101 *
1102 */
1103 if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&
1104 (pcs_lp_ability_reg & E1000_TXCW_PAUSE)) {
1105 /* Now we need to check if the user selected Rx ONLY
1106 * of pause frames. In this case, we had to advertise
1107 * FULL flow control because we could not advertise Rx
1108 * ONLY. Hence, we must now check to see if we need to
1109 * turn OFF the TRANSMISSION of PAUSE frames.
1110 */
1111 if (hw->fc.requested_mode == e1000_fc_full) {
1112 hw->fc.current_mode = e1000_fc_full;
1113 hw_dbg("Flow Control = FULL.\n");
1114 } else {
1115 hw->fc.current_mode = e1000_fc_rx_pause;
1116 hw_dbg("Flow Control = Rx PAUSE frames only.\n");
1117 }
1118 }
1119 /* For receiving PAUSE frames ONLY.
1120 *
1121 * LOCAL DEVICE | LINK PARTNER
1122 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result
1123 *-------|---------|-------|---------|--------------------
1124 * 0 | 1 | 1 | 1 | e1000_fc_tx_pause
1125 */
1126 else if (!(pcs_adv_reg & E1000_TXCW_PAUSE) &&
1127 (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&
1128 (pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&
1129 (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {
1130 hw->fc.current_mode = e1000_fc_tx_pause;
1131 hw_dbg("Flow Control = Tx PAUSE frames only.\n");
1132 }
1133 /* For transmitting PAUSE frames ONLY.
1134 *
1135 * LOCAL DEVICE | LINK PARTNER
1136 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result
1137 *-------|---------|-------|---------|--------------------
1138 * 1 | 1 | 0 | 1 | e1000_fc_rx_pause
1139 */
1140 else if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&
1141 (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&
1142 !(pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&
1143 (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {
1144 hw->fc.current_mode = e1000_fc_rx_pause;
1145 hw_dbg("Flow Control = Rx PAUSE frames only.\n");
1146 } else {
1147 /* Per the IEEE spec, at this point flow control
1148 * should be disabled.
1149 */
1150 hw->fc.current_mode = e1000_fc_none;
1151 hw_dbg("Flow Control = NONE.\n");
1152 }
1153
1154 /* Now we call a subroutine to actually force the MAC
1155 * controller to use the correct flow control settings.
1156 */
1157 pcs_ctrl_reg = rd32(E1000_PCS_LCTL);
1158 pcs_ctrl_reg |= E1000_PCS_LCTL_FORCE_FCTRL;
1159 wr32(E1000_PCS_LCTL, pcs_ctrl_reg);
1160
1161 ret_val = igb_force_mac_fc(hw);
1162 if (ret_val) {
1163 hw_dbg("Error forcing flow control settings\n");
1164 return ret_val;
1165 }
1166 }
1043 1167
1044out: 1168out:
1045 return ret_val; 1169 return ret_val;
diff --git a/drivers/net/ethernet/intel/igb/e1000_nvm.c b/drivers/net/ethernet/intel/igb/e1000_nvm.c
index 7db3f80bcd57..fbb7604db364 100644
--- a/drivers/net/ethernet/intel/igb/e1000_nvm.c
+++ b/drivers/net/ethernet/intel/igb/e1000_nvm.c
@@ -438,7 +438,7 @@ out:
438s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) 438s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
439{ 439{
440 struct e1000_nvm_info *nvm = &hw->nvm; 440 struct e1000_nvm_info *nvm = &hw->nvm;
441 s32 ret_val; 441 s32 ret_val = -E1000_ERR_NVM;
442 u16 widx = 0; 442 u16 widx = 0;
443 443
444 /* 444 /*
@@ -448,22 +448,21 @@ s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
448 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) || 448 if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) ||
449 (words == 0)) { 449 (words == 0)) {
450 hw_dbg("nvm parameter(s) out of bounds\n"); 450 hw_dbg("nvm parameter(s) out of bounds\n");
451 ret_val = -E1000_ERR_NVM; 451 return ret_val;
452 goto out;
453 } 452 }
454 453
455 ret_val = hw->nvm.ops.acquire(hw);
456 if (ret_val)
457 goto out;
458
459 msleep(10);
460
461 while (widx < words) { 454 while (widx < words) {
462 u8 write_opcode = NVM_WRITE_OPCODE_SPI; 455 u8 write_opcode = NVM_WRITE_OPCODE_SPI;
463 456
464 ret_val = igb_ready_nvm_eeprom(hw); 457 ret_val = nvm->ops.acquire(hw);
465 if (ret_val) 458 if (ret_val)
466 goto release; 459 return ret_val;
460
461 ret_val = igb_ready_nvm_eeprom(hw);
462 if (ret_val) {
463 nvm->ops.release(hw);
464 return ret_val;
465 }
467 466
468 igb_standby_nvm(hw); 467 igb_standby_nvm(hw);
469 468
@@ -497,13 +496,10 @@ s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
497 break; 496 break;
498 } 497 }
499 } 498 }
499 usleep_range(1000, 2000);
500 nvm->ops.release(hw);
500 } 501 }
501 502
502 msleep(10);
503release:
504 hw->nvm.ops.release(hw);
505
506out:
507 return ret_val; 503 return ret_val;
508} 504}
509 505
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index c15a4811b476..17f1686ee411 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -42,6 +42,8 @@
42 42
43struct igb_adapter; 43struct igb_adapter;
44 44
45#define E1000_PCS_CFG_IGN_SD 1
46
45/* Interrupt defines */ 47/* Interrupt defines */
46#define IGB_START_ITR 648 /* ~6000 ints/sec */ 48#define IGB_START_ITR 648 /* ~6000 ints/sec */
47#define IGB_4K_ITR 980 49#define IGB_4K_ITR 980
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index e2288b5a9caa..bfe9208c4b18 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -1624,6 +1624,20 @@ static int igb_setup_loopback_test(struct igb_adapter *adapter)
1624 reg &= ~E1000_CONNSW_ENRGSRC; 1624 reg &= ~E1000_CONNSW_ENRGSRC;
1625 wr32(E1000_CONNSW, reg); 1625 wr32(E1000_CONNSW, reg);
1626 1626
1627 /* Unset sigdetect for SERDES loopback on
1628 * 82580 and i350 devices.
1629 */
1630 switch (hw->mac.type) {
1631 case e1000_82580:
1632 case e1000_i350:
1633 reg = rd32(E1000_PCS_CFG0);
1634 reg |= E1000_PCS_CFG_IGN_SD;
1635 wr32(E1000_PCS_CFG0, reg);
1636 break;
1637 default:
1638 break;
1639 }
1640
1627 /* Set PCS register for forced speed */ 1641 /* Set PCS register for forced speed */
1628 reg = rd32(E1000_PCS_LCTL); 1642 reg = rd32(E1000_PCS_LCTL);
1629 reg &= ~E1000_PCS_LCTL_AN_ENABLE; /* Disable Autoneg*/ 1643 reg &= ~E1000_PCS_LCTL_AN_ENABLE; /* Disable Autoneg*/
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c
index efaf9a73cc79..50aa546b8c7a 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c
@@ -47,23 +47,27 @@ static ssize_t ixgbe_dbg_reg_ops_read(struct file *filp, char __user *buffer,
47 size_t count, loff_t *ppos) 47 size_t count, loff_t *ppos)
48{ 48{
49 struct ixgbe_adapter *adapter = filp->private_data; 49 struct ixgbe_adapter *adapter = filp->private_data;
50 char buf[256]; 50 char *buf;
51 int bytes_not_copied;
52 int len; 51 int len;
53 52
54 /* don't allow partial reads */ 53 /* don't allow partial reads */
55 if (*ppos != 0) 54 if (*ppos != 0)
56 return 0; 55 return 0;
57 56
58 len = snprintf(buf, sizeof(buf), "%s: %s\n", 57 buf = kasprintf(GFP_KERNEL, "%s: %s\n",
59 adapter->netdev->name, ixgbe_dbg_reg_ops_buf); 58 adapter->netdev->name,
60 if (count < len) 59 ixgbe_dbg_reg_ops_buf);
60 if (!buf)
61 return -ENOMEM;
62
63 if (count < strlen(buf)) {
64 kfree(buf);
61 return -ENOSPC; 65 return -ENOSPC;
62 bytes_not_copied = copy_to_user(buffer, buf, len); 66 }
63 if (bytes_not_copied < 0) 67
64 return bytes_not_copied; 68 len = simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
65 69
66 *ppos = len; 70 kfree(buf);
67 return len; 71 return len;
68} 72}
69 73
@@ -79,7 +83,7 @@ static ssize_t ixgbe_dbg_reg_ops_write(struct file *filp,
79 size_t count, loff_t *ppos) 83 size_t count, loff_t *ppos)
80{ 84{
81 struct ixgbe_adapter *adapter = filp->private_data; 85 struct ixgbe_adapter *adapter = filp->private_data;
82 int bytes_not_copied; 86 int len;
83 87
84 /* don't allow partial writes */ 88 /* don't allow partial writes */
85 if (*ppos != 0) 89 if (*ppos != 0)
@@ -87,14 +91,15 @@ static ssize_t ixgbe_dbg_reg_ops_write(struct file *filp,
87 if (count >= sizeof(ixgbe_dbg_reg_ops_buf)) 91 if (count >= sizeof(ixgbe_dbg_reg_ops_buf))
88 return -ENOSPC; 92 return -ENOSPC;
89 93
90 bytes_not_copied = copy_from_user(ixgbe_dbg_reg_ops_buf, buffer, count); 94 len = simple_write_to_buffer(ixgbe_dbg_reg_ops_buf,
91 if (bytes_not_copied < 0) 95 sizeof(ixgbe_dbg_reg_ops_buf)-1,
92 return bytes_not_copied; 96 ppos,
93 else if (bytes_not_copied < count) 97 buffer,
94 count -= bytes_not_copied; 98 count);
95 else 99 if (len < 0)
96 return -ENOSPC; 100 return len;
97 ixgbe_dbg_reg_ops_buf[count] = '\0'; 101
102 ixgbe_dbg_reg_ops_buf[len] = '\0';
98 103
99 if (strncmp(ixgbe_dbg_reg_ops_buf, "write", 5) == 0) { 104 if (strncmp(ixgbe_dbg_reg_ops_buf, "write", 5) == 0) {
100 u32 reg, value; 105 u32 reg, value;
@@ -147,23 +152,27 @@ static ssize_t ixgbe_dbg_netdev_ops_read(struct file *filp,
147 size_t count, loff_t *ppos) 152 size_t count, loff_t *ppos)
148{ 153{
149 struct ixgbe_adapter *adapter = filp->private_data; 154 struct ixgbe_adapter *adapter = filp->private_data;
150 char buf[256]; 155 char *buf;
151 int bytes_not_copied;
152 int len; 156 int len;
153 157
154 /* don't allow partial reads */ 158 /* don't allow partial reads */
155 if (*ppos != 0) 159 if (*ppos != 0)
156 return 0; 160 return 0;
157 161
158 len = snprintf(buf, sizeof(buf), "%s: %s\n", 162 buf = kasprintf(GFP_KERNEL, "%s: %s\n",
159 adapter->netdev->name, ixgbe_dbg_netdev_ops_buf); 163 adapter->netdev->name,
160 if (count < len) 164 ixgbe_dbg_netdev_ops_buf);
165 if (!buf)
166 return -ENOMEM;
167
168 if (count < strlen(buf)) {
169 kfree(buf);
161 return -ENOSPC; 170 return -ENOSPC;
162 bytes_not_copied = copy_to_user(buffer, buf, len); 171 }
163 if (bytes_not_copied < 0) 172
164 return bytes_not_copied; 173 len = simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
165 174
166 *ppos = len; 175 kfree(buf);
167 return len; 176 return len;
168} 177}
169 178
@@ -179,7 +188,7 @@ static ssize_t ixgbe_dbg_netdev_ops_write(struct file *filp,
179 size_t count, loff_t *ppos) 188 size_t count, loff_t *ppos)
180{ 189{
181 struct ixgbe_adapter *adapter = filp->private_data; 190 struct ixgbe_adapter *adapter = filp->private_data;
182 int bytes_not_copied; 191 int len;
183 192
184 /* don't allow partial writes */ 193 /* don't allow partial writes */
185 if (*ppos != 0) 194 if (*ppos != 0)
@@ -187,15 +196,15 @@ static ssize_t ixgbe_dbg_netdev_ops_write(struct file *filp,
187 if (count >= sizeof(ixgbe_dbg_netdev_ops_buf)) 196 if (count >= sizeof(ixgbe_dbg_netdev_ops_buf))
188 return -ENOSPC; 197 return -ENOSPC;
189 198
190 bytes_not_copied = copy_from_user(ixgbe_dbg_netdev_ops_buf, 199 len = simple_write_to_buffer(ixgbe_dbg_netdev_ops_buf,
191 buffer, count); 200 sizeof(ixgbe_dbg_netdev_ops_buf)-1,
192 if (bytes_not_copied < 0) 201 ppos,
193 return bytes_not_copied; 202 buffer,
194 else if (bytes_not_copied < count) 203 count);
195 count -= bytes_not_copied; 204 if (len < 0)
196 else 205 return len;
197 return -ENOSPC; 206
198 ixgbe_dbg_netdev_ops_buf[count] = '\0'; 207 ixgbe_dbg_netdev_ops_buf[len] = '\0';
199 208
200 if (strncmp(ixgbe_dbg_netdev_ops_buf, "tx_timeout", 10) == 0) { 209 if (strncmp(ixgbe_dbg_netdev_ops_buf, "tx_timeout", 10) == 0) {
201 adapter->netdev->netdev_ops->ndo_tx_timeout(adapter->netdev); 210 adapter->netdev->netdev_ops->ndo_tx_timeout(adapter->netdev);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 484bbedffe2a..79b834583188 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1338,26 +1338,29 @@ static unsigned int ixgbe_get_headlen(unsigned char *data,
1338 if (hlen < sizeof(struct iphdr)) 1338 if (hlen < sizeof(struct iphdr))
1339 return hdr.network - data; 1339 return hdr.network - data;
1340 1340
1341 /* record next protocol */ 1341 /* record next protocol if header is present */
1342 nexthdr = hdr.ipv4->protocol; 1342 if (!hdr.ipv4->frag_off)
1343 hdr.network += hlen; 1343 nexthdr = hdr.ipv4->protocol;
1344 } else if (protocol == __constant_htons(ETH_P_IPV6)) { 1344 } else if (protocol == __constant_htons(ETH_P_IPV6)) {
1345 if ((hdr.network - data) > (max_len - sizeof(struct ipv6hdr))) 1345 if ((hdr.network - data) > (max_len - sizeof(struct ipv6hdr)))
1346 return max_len; 1346 return max_len;
1347 1347
1348 /* record next protocol */ 1348 /* record next protocol */
1349 nexthdr = hdr.ipv6->nexthdr; 1349 nexthdr = hdr.ipv6->nexthdr;
1350 hdr.network += sizeof(struct ipv6hdr); 1350 hlen = sizeof(struct ipv6hdr);
1351#ifdef IXGBE_FCOE 1351#ifdef IXGBE_FCOE
1352 } else if (protocol == __constant_htons(ETH_P_FCOE)) { 1352 } else if (protocol == __constant_htons(ETH_P_FCOE)) {
1353 if ((hdr.network - data) > (max_len - FCOE_HEADER_LEN)) 1353 if ((hdr.network - data) > (max_len - FCOE_HEADER_LEN))
1354 return max_len; 1354 return max_len;
1355 hdr.network += FCOE_HEADER_LEN; 1355 hlen = FCOE_HEADER_LEN;
1356#endif 1356#endif
1357 } else { 1357 } else {
1358 return hdr.network - data; 1358 return hdr.network - data;
1359 } 1359 }
1360 1360
1361 /* relocate pointer to start of L4 header */
1362 hdr.network += hlen;
1363
1361 /* finally sort out TCP/UDP */ 1364 /* finally sort out TCP/UDP */
1362 if (nexthdr == IPPROTO_TCP) { 1365 if (nexthdr == IPPROTO_TCP) {
1363 if ((hdr.network - data) > (max_len - sizeof(struct tcphdr))) 1366 if ((hdr.network - data) > (max_len - sizeof(struct tcphdr)))
diff --git a/drivers/net/ethernet/myricom/Kconfig b/drivers/net/ethernet/myricom/Kconfig
index 540f0c6fc160..3932d081fa21 100644
--- a/drivers/net/ethernet/myricom/Kconfig
+++ b/drivers/net/ethernet/myricom/Kconfig
@@ -23,7 +23,6 @@ config MYRI10GE
23 depends on PCI && INET 23 depends on PCI && INET
24 select FW_LOADER 24 select FW_LOADER
25 select CRC32 25 select CRC32
26 select INET_LRO
27 ---help--- 26 ---help---
28 This driver supports Myricom Myri-10G Dual Protocol interface in 27 This driver supports Myricom Myri-10G Dual Protocol interface in
29 Ethernet mode. If the eeprom on your board is not recent enough, 28 Ethernet mode. If the eeprom on your board is not recent enough,
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index 83516e3369c9..2fc984a03771 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -50,7 +50,6 @@
50#include <linux/etherdevice.h> 50#include <linux/etherdevice.h>
51#include <linux/if_ether.h> 51#include <linux/if_ether.h>
52#include <linux/if_vlan.h> 52#include <linux/if_vlan.h>
53#include <linux/inet_lro.h>
54#include <linux/dca.h> 53#include <linux/dca.h>
55#include <linux/ip.h> 54#include <linux/ip.h>
56#include <linux/inet.h> 55#include <linux/inet.h>
@@ -96,8 +95,6 @@ MODULE_LICENSE("Dual BSD/GPL");
96 95
97#define MYRI10GE_EEPROM_STRINGS_SIZE 256 96#define MYRI10GE_EEPROM_STRINGS_SIZE 256
98#define MYRI10GE_MAX_SEND_DESC_TSO ((65536 / 2048) * 2) 97#define MYRI10GE_MAX_SEND_DESC_TSO ((65536 / 2048) * 2)
99#define MYRI10GE_MAX_LRO_DESCRIPTORS 8
100#define MYRI10GE_LRO_MAX_PKTS 64
101 98
102#define MYRI10GE_NO_CONFIRM_DATA htonl(0xffffffff) 99#define MYRI10GE_NO_CONFIRM_DATA htonl(0xffffffff)
103#define MYRI10GE_NO_RESPONSE_RESULT 0xffffffff 100#define MYRI10GE_NO_RESPONSE_RESULT 0xffffffff
@@ -165,8 +162,6 @@ struct myri10ge_rx_done {
165 dma_addr_t bus; 162 dma_addr_t bus;
166 int cnt; 163 int cnt;
167 int idx; 164 int idx;
168 struct net_lro_mgr lro_mgr;
169 struct net_lro_desc lro_desc[MYRI10GE_MAX_LRO_DESCRIPTORS];
170}; 165};
171 166
172struct myri10ge_slice_netstats { 167struct myri10ge_slice_netstats {
@@ -338,11 +333,6 @@ static int myri10ge_debug = -1; /* defaults above */
338module_param(myri10ge_debug, int, 0); 333module_param(myri10ge_debug, int, 0);
339MODULE_PARM_DESC(myri10ge_debug, "Debug level (0=none,...,16=all)"); 334MODULE_PARM_DESC(myri10ge_debug, "Debug level (0=none,...,16=all)");
340 335
341static int myri10ge_lro_max_pkts = MYRI10GE_LRO_MAX_PKTS;
342module_param(myri10ge_lro_max_pkts, int, S_IRUGO);
343MODULE_PARM_DESC(myri10ge_lro_max_pkts,
344 "Number of LRO packets to be aggregated");
345
346static int myri10ge_fill_thresh = 256; 336static int myri10ge_fill_thresh = 256;
347module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); 337module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR);
348MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed"); 338MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed");
@@ -1197,36 +1187,6 @@ static inline void myri10ge_vlan_ip_csum(struct sk_buff *skb, __wsum hw_csum)
1197 } 1187 }
1198} 1188}
1199 1189
1200static inline void
1201myri10ge_rx_skb_build(struct sk_buff *skb, u8 * va,
1202 struct skb_frag_struct *rx_frags, int len, int hlen)
1203{
1204 struct skb_frag_struct *skb_frags;
1205
1206 skb->len = skb->data_len = len;
1207 /* attach the page(s) */
1208
1209 skb_frags = skb_shinfo(skb)->frags;
1210 while (len > 0) {
1211 memcpy(skb_frags, rx_frags, sizeof(*skb_frags));
1212 len -= skb_frag_size(rx_frags);
1213 skb_frags++;
1214 rx_frags++;
1215 skb_shinfo(skb)->nr_frags++;
1216 }
1217
1218 /* pskb_may_pull is not available in irq context, but
1219 * skb_pull() (for ether_pad and eth_type_trans()) requires
1220 * the beginning of the packet in skb_headlen(), move it
1221 * manually */
1222 skb_copy_to_linear_data(skb, va, hlen);
1223 skb_shinfo(skb)->frags[0].page_offset += hlen;
1224 skb_frag_size_sub(&skb_shinfo(skb)->frags[0], hlen);
1225 skb->data_len -= hlen;
1226 skb->tail += hlen;
1227 skb_pull(skb, MXGEFW_PAD);
1228}
1229
1230static void 1190static void
1231myri10ge_alloc_rx_pages(struct myri10ge_priv *mgp, struct myri10ge_rx_buf *rx, 1191myri10ge_alloc_rx_pages(struct myri10ge_priv *mgp, struct myri10ge_rx_buf *rx,
1232 int bytes, int watchdog) 1192 int bytes, int watchdog)
@@ -1304,18 +1264,50 @@ myri10ge_unmap_rx_page(struct pci_dev *pdev,
1304 } 1264 }
1305} 1265}
1306 1266
1307#define MYRI10GE_HLEN 64 /* The number of bytes to copy from a 1267/*
1308 * page into an skb */ 1268 * GRO does not support acceleration of tagged vlan frames, and
1269 * this NIC does not support vlan tag offload, so we must pop
1270 * the tag ourselves to be able to achieve GRO performance that
1271 * is comparable to LRO.
1272 */
1273
1274static inline void
1275myri10ge_vlan_rx(struct net_device *dev, void *addr, struct sk_buff *skb)
1276{
1277 u8 *va;
1278 struct vlan_ethhdr *veh;
1279 struct skb_frag_struct *frag;
1280 __wsum vsum;
1281
1282 va = addr;
1283 va += MXGEFW_PAD;
1284 veh = (struct vlan_ethhdr *)va;
1285 if ((dev->features & NETIF_F_HW_VLAN_RX) == NETIF_F_HW_VLAN_RX &&
1286 veh->h_vlan_proto == ntohs(ETH_P_8021Q)) {
1287 /* fixup csum if needed */
1288 if (skb->ip_summed == CHECKSUM_COMPLETE) {
1289 vsum = csum_partial(va + ETH_HLEN, VLAN_HLEN, 0);
1290 skb->csum = csum_sub(skb->csum, vsum);
1291 }
1292 /* pop tag */
1293 __vlan_hwaccel_put_tag(skb, ntohs(veh->h_vlan_TCI));
1294 memmove(va + VLAN_HLEN, va, 2 * ETH_ALEN);
1295 skb->len -= VLAN_HLEN;
1296 skb->data_len -= VLAN_HLEN;
1297 frag = skb_shinfo(skb)->frags;
1298 frag->page_offset += VLAN_HLEN;
1299 skb_frag_size_set(frag, skb_frag_size(frag) - VLAN_HLEN);
1300 }
1301}
1309 1302
1310static inline int 1303static inline int
1311myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum, 1304myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum)
1312 bool lro_enabled)
1313{ 1305{
1314 struct myri10ge_priv *mgp = ss->mgp; 1306 struct myri10ge_priv *mgp = ss->mgp;
1315 struct sk_buff *skb; 1307 struct sk_buff *skb;
1316 struct skb_frag_struct rx_frags[MYRI10GE_MAX_FRAGS_PER_FRAME]; 1308 struct skb_frag_struct *rx_frags;
1317 struct myri10ge_rx_buf *rx; 1309 struct myri10ge_rx_buf *rx;
1318 int i, idx, hlen, remainder, bytes; 1310 int i, idx, remainder, bytes;
1319 struct pci_dev *pdev = mgp->pdev; 1311 struct pci_dev *pdev = mgp->pdev;
1320 struct net_device *dev = mgp->dev; 1312 struct net_device *dev = mgp->dev;
1321 u8 *va; 1313 u8 *va;
@@ -1332,67 +1324,48 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
1332 idx = rx->cnt & rx->mask; 1324 idx = rx->cnt & rx->mask;
1333 va = page_address(rx->info[idx].page) + rx->info[idx].page_offset; 1325 va = page_address(rx->info[idx].page) + rx->info[idx].page_offset;
1334 prefetch(va); 1326 prefetch(va);
1327
1328 skb = napi_get_frags(&ss->napi);
1329 if (unlikely(skb == NULL)) {
1330 ss->stats.rx_dropped++;
1331 for (i = 0, remainder = len; remainder > 0; i++) {
1332 myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes);
1333 put_page(rx->info[idx].page);
1334 rx->cnt++;
1335 idx = rx->cnt & rx->mask;
1336 remainder -= MYRI10GE_ALLOC_SIZE;
1337 }
1338 return 0;
1339 }
1340 rx_frags = skb_shinfo(skb)->frags;
1335 /* Fill skb_frag_struct(s) with data from our receive */ 1341 /* Fill skb_frag_struct(s) with data from our receive */
1336 for (i = 0, remainder = len; remainder > 0; i++) { 1342 for (i = 0, remainder = len; remainder > 0; i++) {
1337 myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes); 1343 myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes);
1338 __skb_frag_set_page(&rx_frags[i], rx->info[idx].page); 1344 skb_fill_page_desc(skb, i, rx->info[idx].page,
1339 rx_frags[i].page_offset = rx->info[idx].page_offset; 1345 rx->info[idx].page_offset,
1340 if (remainder < MYRI10GE_ALLOC_SIZE) 1346 remainder < MYRI10GE_ALLOC_SIZE ?
1341 skb_frag_size_set(&rx_frags[i], remainder); 1347 remainder : MYRI10GE_ALLOC_SIZE);
1342 else
1343 skb_frag_size_set(&rx_frags[i], MYRI10GE_ALLOC_SIZE);
1344 rx->cnt++; 1348 rx->cnt++;
1345 idx = rx->cnt & rx->mask; 1349 idx = rx->cnt & rx->mask;
1346 remainder -= MYRI10GE_ALLOC_SIZE; 1350 remainder -= MYRI10GE_ALLOC_SIZE;
1347 } 1351 }
1348 1352
1349 if (lro_enabled) { 1353 /* remove padding */
1350 rx_frags[0].page_offset += MXGEFW_PAD; 1354 rx_frags[0].page_offset += MXGEFW_PAD;
1351 skb_frag_size_sub(&rx_frags[0], MXGEFW_PAD); 1355 rx_frags[0].size -= MXGEFW_PAD;
1352 len -= MXGEFW_PAD; 1356 len -= MXGEFW_PAD;
1353 lro_receive_frags(&ss->rx_done.lro_mgr, rx_frags,
1354 /* opaque, will come back in get_frag_header */
1355 len, len,
1356 (void *)(__force unsigned long)csum, csum);
1357
1358 return 1;
1359 }
1360
1361 hlen = MYRI10GE_HLEN > len ? len : MYRI10GE_HLEN;
1362
1363 /* allocate an skb to attach the page(s) to. This is done
1364 * after trying LRO, so as to avoid skb allocation overheads */
1365
1366 skb = netdev_alloc_skb(dev, MYRI10GE_HLEN + 16);
1367 if (unlikely(skb == NULL)) {
1368 ss->stats.rx_dropped++;
1369 do {
1370 i--;
1371 __skb_frag_unref(&rx_frags[i]);
1372 } while (i != 0);
1373 return 0;
1374 }
1375 1357
1376 /* Attach the pages to the skb, and trim off any padding */ 1358 skb->len = len;
1377 myri10ge_rx_skb_build(skb, va, rx_frags, len, hlen); 1359 skb->data_len = len;
1378 if (skb_frag_size(&skb_shinfo(skb)->frags[0]) <= 0) { 1360 skb->truesize += len;
1379 skb_frag_unref(skb, 0); 1361 if (dev->features & NETIF_F_RXCSUM) {
1380 skb_shinfo(skb)->nr_frags = 0; 1362 skb->ip_summed = CHECKSUM_COMPLETE;
1381 } else { 1363 skb->csum = csum;
1382 skb->truesize += bytes * skb_shinfo(skb)->nr_frags;
1383 } 1364 }
1384 skb->protocol = eth_type_trans(skb, dev); 1365 myri10ge_vlan_rx(mgp->dev, va, skb);
1385 skb_record_rx_queue(skb, ss - &mgp->ss[0]); 1366 skb_record_rx_queue(skb, ss - &mgp->ss[0]);
1386 1367
1387 if (dev->features & NETIF_F_RXCSUM) { 1368 napi_gro_frags(&ss->napi);
1388 if ((skb->protocol == htons(ETH_P_IP)) ||
1389 (skb->protocol == htons(ETH_P_IPV6))) {
1390 skb->csum = csum;
1391 skb->ip_summed = CHECKSUM_COMPLETE;
1392 } else
1393 myri10ge_vlan_ip_csum(skb, csum);
1394 }
1395 netif_receive_skb(skb);
1396 return 1; 1369 return 1;
1397} 1370}
1398 1371
@@ -1480,18 +1453,11 @@ myri10ge_clean_rx_done(struct myri10ge_slice_state *ss, int budget)
1480 u16 length; 1453 u16 length;
1481 __wsum checksum; 1454 __wsum checksum;
1482 1455
1483 /*
1484 * Prevent compiler from generating more than one ->features memory
1485 * access to avoid theoretical race condition with functions that
1486 * change NETIF_F_LRO flag at runtime.
1487 */
1488 bool lro_enabled = !!(ACCESS_ONCE(mgp->dev->features) & NETIF_F_LRO);
1489
1490 while (rx_done->entry[idx].length != 0 && work_done < budget) { 1456 while (rx_done->entry[idx].length != 0 && work_done < budget) {
1491 length = ntohs(rx_done->entry[idx].length); 1457 length = ntohs(rx_done->entry[idx].length);
1492 rx_done->entry[idx].length = 0; 1458 rx_done->entry[idx].length = 0;
1493 checksum = csum_unfold(rx_done->entry[idx].checksum); 1459 checksum = csum_unfold(rx_done->entry[idx].checksum);
1494 rx_ok = myri10ge_rx_done(ss, length, checksum, lro_enabled); 1460 rx_ok = myri10ge_rx_done(ss, length, checksum);
1495 rx_packets += rx_ok; 1461 rx_packets += rx_ok;
1496 rx_bytes += rx_ok * (unsigned long)length; 1462 rx_bytes += rx_ok * (unsigned long)length;
1497 cnt++; 1463 cnt++;
@@ -1503,9 +1469,6 @@ myri10ge_clean_rx_done(struct myri10ge_slice_state *ss, int budget)
1503 ss->stats.rx_packets += rx_packets; 1469 ss->stats.rx_packets += rx_packets;
1504 ss->stats.rx_bytes += rx_bytes; 1470 ss->stats.rx_bytes += rx_bytes;
1505 1471
1506 if (lro_enabled)
1507 lro_flush_all(&rx_done->lro_mgr);
1508
1509 /* restock receive rings if needed */ 1472 /* restock receive rings if needed */
1510 if (ss->rx_small.fill_cnt - ss->rx_small.cnt < myri10ge_fill_thresh) 1473 if (ss->rx_small.fill_cnt - ss->rx_small.cnt < myri10ge_fill_thresh)
1511 myri10ge_alloc_rx_pages(mgp, &ss->rx_small, 1474 myri10ge_alloc_rx_pages(mgp, &ss->rx_small,
@@ -1779,7 +1742,6 @@ static const char myri10ge_gstrings_slice_stats[][ETH_GSTRING_LEN] = {
1779 "tx_pkt_start", "tx_pkt_done", "tx_req", "tx_done", 1742 "tx_pkt_start", "tx_pkt_done", "tx_req", "tx_done",
1780 "rx_small_cnt", "rx_big_cnt", 1743 "rx_small_cnt", "rx_big_cnt",
1781 "wake_queue", "stop_queue", "tx_linearized", 1744 "wake_queue", "stop_queue", "tx_linearized",
1782 "LRO aggregated", "LRO flushed", "LRO avg aggr", "LRO no_desc",
1783}; 1745};
1784 1746
1785#define MYRI10GE_NET_STATS_LEN 21 1747#define MYRI10GE_NET_STATS_LEN 21
@@ -1880,14 +1842,6 @@ myri10ge_get_ethtool_stats(struct net_device *netdev,
1880 data[i++] = (unsigned int)ss->tx.wake_queue; 1842 data[i++] = (unsigned int)ss->tx.wake_queue;
1881 data[i++] = (unsigned int)ss->tx.stop_queue; 1843 data[i++] = (unsigned int)ss->tx.stop_queue;
1882 data[i++] = (unsigned int)ss->tx.linearized; 1844 data[i++] = (unsigned int)ss->tx.linearized;
1883 data[i++] = ss->rx_done.lro_mgr.stats.aggregated;
1884 data[i++] = ss->rx_done.lro_mgr.stats.flushed;
1885 if (ss->rx_done.lro_mgr.stats.flushed)
1886 data[i++] = ss->rx_done.lro_mgr.stats.aggregated /
1887 ss->rx_done.lro_mgr.stats.flushed;
1888 else
1889 data[i++] = 0;
1890 data[i++] = ss->rx_done.lro_mgr.stats.no_desc;
1891 } 1845 }
1892} 1846}
1893 1847
@@ -2271,67 +2225,6 @@ static void myri10ge_free_irq(struct myri10ge_priv *mgp)
2271 pci_disable_msix(pdev); 2225 pci_disable_msix(pdev);
2272} 2226}
2273 2227
2274static int
2275myri10ge_get_frag_header(struct skb_frag_struct *frag, void **mac_hdr,
2276 void **ip_hdr, void **tcpudp_hdr,
2277 u64 * hdr_flags, void *priv)
2278{
2279 struct ethhdr *eh;
2280 struct vlan_ethhdr *veh;
2281 struct iphdr *iph;
2282 u8 *va = skb_frag_address(frag);
2283 unsigned long ll_hlen;
2284 /* passed opaque through lro_receive_frags() */
2285 __wsum csum = (__force __wsum) (unsigned long)priv;
2286
2287 /* find the mac header, aborting if not IPv4 */
2288
2289 eh = (struct ethhdr *)va;
2290 *mac_hdr = eh;
2291 ll_hlen = ETH_HLEN;
2292 if (eh->h_proto != htons(ETH_P_IP)) {
2293 if (eh->h_proto == htons(ETH_P_8021Q)) {
2294 veh = (struct vlan_ethhdr *)va;
2295 if (veh->h_vlan_encapsulated_proto != htons(ETH_P_IP))
2296 return -1;
2297
2298 ll_hlen += VLAN_HLEN;
2299
2300 /*
2301 * HW checksum starts ETH_HLEN bytes into
2302 * frame, so we must subtract off the VLAN
2303 * header's checksum before csum can be used
2304 */
2305 csum = csum_sub(csum, csum_partial(va + ETH_HLEN,
2306 VLAN_HLEN, 0));
2307 } else {
2308 return -1;
2309 }
2310 }
2311 *hdr_flags = LRO_IPV4;
2312
2313 iph = (struct iphdr *)(va + ll_hlen);
2314 *ip_hdr = iph;
2315 if (iph->protocol != IPPROTO_TCP)
2316 return -1;
2317 if (ip_is_fragment(iph))
2318 return -1;
2319 *hdr_flags |= LRO_TCP;
2320 *tcpudp_hdr = (u8 *) (*ip_hdr) + (iph->ihl << 2);
2321
2322 /* verify the IP checksum */
2323 if (unlikely(ip_fast_csum((u8 *) iph, iph->ihl)))
2324 return -1;
2325
2326 /* verify the checksum */
2327 if (unlikely(csum_tcpudp_magic(iph->saddr, iph->daddr,
2328 ntohs(iph->tot_len) - (iph->ihl << 2),
2329 IPPROTO_TCP, csum)))
2330 return -1;
2331
2332 return 0;
2333}
2334
2335static int myri10ge_get_txrx(struct myri10ge_priv *mgp, int slice) 2228static int myri10ge_get_txrx(struct myri10ge_priv *mgp, int slice)
2336{ 2229{
2337 struct myri10ge_cmd cmd; 2230 struct myri10ge_cmd cmd;
@@ -2402,7 +2295,6 @@ static int myri10ge_open(struct net_device *dev)
2402 struct myri10ge_cmd cmd; 2295 struct myri10ge_cmd cmd;
2403 int i, status, big_pow2, slice; 2296 int i, status, big_pow2, slice;
2404 u8 *itable; 2297 u8 *itable;
2405 struct net_lro_mgr *lro_mgr;
2406 2298
2407 if (mgp->running != MYRI10GE_ETH_STOPPED) 2299 if (mgp->running != MYRI10GE_ETH_STOPPED)
2408 return -EBUSY; 2300 return -EBUSY;
@@ -2513,19 +2405,6 @@ static int myri10ge_open(struct net_device *dev)
2513 goto abort_with_rings; 2405 goto abort_with_rings;
2514 } 2406 }
2515 2407
2516 lro_mgr = &ss->rx_done.lro_mgr;
2517 lro_mgr->dev = dev;
2518 lro_mgr->features = LRO_F_NAPI;
2519 lro_mgr->ip_summed = CHECKSUM_COMPLETE;
2520 lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY;
2521 lro_mgr->max_desc = MYRI10GE_MAX_LRO_DESCRIPTORS;
2522 lro_mgr->lro_arr = ss->rx_done.lro_desc;
2523 lro_mgr->get_frag_header = myri10ge_get_frag_header;
2524 lro_mgr->max_aggr = myri10ge_lro_max_pkts;
2525 lro_mgr->frag_align_pad = 2;
2526 if (lro_mgr->max_aggr > MAX_SKB_FRAGS)
2527 lro_mgr->max_aggr = MAX_SKB_FRAGS;
2528
2529 /* must happen prior to any irq */ 2408 /* must happen prior to any irq */
2530 napi_enable(&(ss)->napi); 2409 napi_enable(&(ss)->napi);
2531 } 2410 }
@@ -3143,15 +3022,6 @@ static int myri10ge_set_mac_address(struct net_device *dev, void *addr)
3143 return 0; 3022 return 0;
3144} 3023}
3145 3024
3146static netdev_features_t myri10ge_fix_features(struct net_device *dev,
3147 netdev_features_t features)
3148{
3149 if (!(features & NETIF_F_RXCSUM))
3150 features &= ~NETIF_F_LRO;
3151
3152 return features;
3153}
3154
3155static int myri10ge_change_mtu(struct net_device *dev, int new_mtu) 3025static int myri10ge_change_mtu(struct net_device *dev, int new_mtu)
3156{ 3026{
3157 struct myri10ge_priv *mgp = netdev_priv(dev); 3027 struct myri10ge_priv *mgp = netdev_priv(dev);
@@ -3878,7 +3748,6 @@ static const struct net_device_ops myri10ge_netdev_ops = {
3878 .ndo_get_stats64 = myri10ge_get_stats, 3748 .ndo_get_stats64 = myri10ge_get_stats,
3879 .ndo_validate_addr = eth_validate_addr, 3749 .ndo_validate_addr = eth_validate_addr,
3880 .ndo_change_mtu = myri10ge_change_mtu, 3750 .ndo_change_mtu = myri10ge_change_mtu,
3881 .ndo_fix_features = myri10ge_fix_features,
3882 .ndo_set_rx_mode = myri10ge_set_multicast_list, 3751 .ndo_set_rx_mode = myri10ge_set_multicast_list,
3883 .ndo_set_mac_address = myri10ge_set_mac_address, 3752 .ndo_set_mac_address = myri10ge_set_mac_address,
3884}; 3753};
@@ -4018,7 +3887,11 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
4018 3887
4019 netdev->netdev_ops = &myri10ge_netdev_ops; 3888 netdev->netdev_ops = &myri10ge_netdev_ops;
4020 netdev->mtu = myri10ge_initial_mtu; 3889 netdev->mtu = myri10ge_initial_mtu;
4021 netdev->hw_features = mgp->features | NETIF_F_LRO | NETIF_F_RXCSUM; 3890 netdev->hw_features = mgp->features | NETIF_F_RXCSUM;
3891
3892 /* fake NETIF_F_HW_VLAN_RX for good GRO performance */
3893 netdev->hw_features |= NETIF_F_HW_VLAN_RX;
3894
4022 netdev->features = netdev->hw_features; 3895 netdev->features = netdev->hw_features;
4023 3896
4024 if (dac_enabled) 3897 if (dac_enabled)