aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel
diff options
context:
space:
mode:
authorEmil Tantilov <emil.s.tantilov@intel.com>2013-04-12 04:36:47 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2013-04-25 23:13:43 -0400
commit46d5ceddd282262267abecd70c5ed6f5bdce0f92 (patch)
tree3bf34bff025391a5b351261e3c61c6d3bbf25904 /drivers/net/ethernet/intel
parent5e82f2f07645ef2d8db837ebe907dfbb33d18a1e (diff)
ixgbe: add support for disabling link at boot time on 82599
This patch adds support for disabling link during boot time. This feature was requested by customers and is configurable through the EEPROM. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c21
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_type.h1
2 files changed, 20 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
index c4c5e878b8a9..0b82d38bc97d 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
@@ -1051,6 +1051,14 @@ mac_reset_top:
1051 */ 1051 */
1052 hw->mac.cached_autoc = IXGBE_READ_REG(hw, IXGBE_AUTOC); 1052 hw->mac.cached_autoc = IXGBE_READ_REG(hw, IXGBE_AUTOC);
1053 autoc2 = IXGBE_READ_REG(hw, IXGBE_AUTOC2); 1053 autoc2 = IXGBE_READ_REG(hw, IXGBE_AUTOC2);
1054
1055 /* Enable link if disabled in NVM */
1056 if (autoc2 & IXGBE_AUTOC2_LINK_DISABLE_MASK) {
1057 autoc2 &= ~IXGBE_AUTOC2_LINK_DISABLE_MASK;
1058 IXGBE_WRITE_REG(hw, IXGBE_AUTOC2, autoc2);
1059 IXGBE_WRITE_FLUSH(hw);
1060 }
1061
1054 if (hw->mac.orig_link_settings_stored == false) { 1062 if (hw->mac.orig_link_settings_stored == false) {
1055 hw->mac.orig_autoc = hw->mac.cached_autoc; 1063 hw->mac.orig_autoc = hw->mac.cached_autoc;
1056 hw->mac.orig_autoc2 = autoc2; 1064 hw->mac.orig_autoc2 = autoc2;
@@ -2186,8 +2194,17 @@ static s32 ixgbe_read_eeprom_82599(struct ixgbe_hw *hw,
2186 **/ 2194 **/
2187s32 ixgbe_reset_pipeline_82599(struct ixgbe_hw *hw) 2195s32 ixgbe_reset_pipeline_82599(struct ixgbe_hw *hw)
2188{ 2196{
2189 s32 i, autoc_reg, ret_val; 2197 s32 ret_val;
2190 s32 anlp1_reg = 0; 2198 u32 anlp1_reg = 0;
2199 u32 i, autoc_reg, autoc2_reg;
2200
2201 /* Enable link if disabled in NVM */
2202 autoc2_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC2);
2203 if (autoc2_reg & IXGBE_AUTOC2_LINK_DISABLE_MASK) {
2204 autoc2_reg &= ~IXGBE_AUTOC2_LINK_DISABLE_MASK;
2205 IXGBE_WRITE_REG(hw, IXGBE_AUTOC2, autoc2_reg);
2206 IXGBE_WRITE_FLUSH(hw);
2207 }
2191 2208
2192 autoc_reg = hw->mac.cached_autoc; 2209 autoc_reg = hw->mac.cached_autoc;
2193 autoc_reg |= IXGBE_AUTOC_AN_RESTART; 2210 autoc_reg |= IXGBE_AUTOC_AN_RESTART;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
index 7480f7b4ac75..70c6aa3d3f95 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
@@ -1593,6 +1593,7 @@ enum {
1593#define IXGBE_AUTOC2_10G_KR (0x0 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT) 1593#define IXGBE_AUTOC2_10G_KR (0x0 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT)
1594#define IXGBE_AUTOC2_10G_XFI (0x1 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT) 1594#define IXGBE_AUTOC2_10G_XFI (0x1 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT)
1595#define IXGBE_AUTOC2_10G_SFI (0x2 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT) 1595#define IXGBE_AUTOC2_10G_SFI (0x2 << IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_SHIFT)
1596#define IXGBE_AUTOC2_LINK_DISABLE_MASK 0x70000000
1596 1597
1597#define IXGBE_MACC_FLU 0x00000001 1598#define IXGBE_MACC_FLU 0x00000001
1598#define IXGBE_MACC_FSV_10G 0x00030000 1599#define IXGBE_MACC_FSV_10G 0x00030000