aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c4
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_common.c37
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_common.h2
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_type.h1
4 files changed, 13 insertions, 31 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
index 6175845df11d..badcf821d89a 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
@@ -363,9 +363,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw, s32 packetbuf_num)
363 } 363 }
364 364
365 /* Negotiate the fc mode to use */ 365 /* Negotiate the fc mode to use */
366 ret_val = ixgbe_fc_autoneg(hw); 366 ixgbe_fc_autoneg(hw);
367 if (ret_val == IXGBE_ERR_FLOW_CONTROL)
368 goto out;
369 367
370 /* Disable any previous flow control settings */ 368 /* Disable any previous flow control settings */
371 fctrl_reg = IXGBE_READ_REG(hw, IXGBE_FCTRL); 369 fctrl_reg = IXGBE_READ_REG(hw, IXGBE_FCTRL);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
index e2b0519ff8cf..9854d948f135 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
@@ -1940,9 +1940,7 @@ s32 ixgbe_fc_enable_generic(struct ixgbe_hw *hw, s32 packetbuf_num)
1940 1940
1941#endif /* CONFIG_DCB */ 1941#endif /* CONFIG_DCB */
1942 /* Negotiate the fc mode to use */ 1942 /* Negotiate the fc mode to use */
1943 ret_val = ixgbe_fc_autoneg(hw); 1943 ixgbe_fc_autoneg(hw);
1944 if (ret_val == IXGBE_ERR_FLOW_CONTROL)
1945 goto out;
1946 1944
1947 /* Disable any previous flow control settings */ 1945 /* Disable any previous flow control settings */
1948 mflcn_reg = IXGBE_READ_REG(hw, IXGBE_MFLCN); 1946 mflcn_reg = IXGBE_READ_REG(hw, IXGBE_MFLCN);
@@ -2051,15 +2049,12 @@ out:
2051 * Compares our advertised flow control capabilities to those advertised by 2049 * Compares our advertised flow control capabilities to those advertised by
2052 * our link partner, and determines the proper flow control mode to use. 2050 * our link partner, and determines the proper flow control mode to use.
2053 **/ 2051 **/
2054s32 ixgbe_fc_autoneg(struct ixgbe_hw *hw) 2052void ixgbe_fc_autoneg(struct ixgbe_hw *hw)
2055{ 2053{
2056 s32 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED; 2054 s32 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2057 ixgbe_link_speed speed; 2055 ixgbe_link_speed speed;
2058 bool link_up; 2056 bool link_up;
2059 2057
2060 if (hw->fc.disable_fc_autoneg)
2061 goto out;
2062
2063 /* 2058 /*
2064 * AN should have completed when the cable was plugged in. 2059 * AN should have completed when the cable was plugged in.
2065 * Look for reasons to bail out. Bail out if: 2060 * Look for reasons to bail out. Bail out if:
@@ -2069,11 +2064,12 @@ s32 ixgbe_fc_autoneg(struct ixgbe_hw *hw)
2069 * Since we're being called from an LSC, link is already known to be up. 2064 * Since we're being called from an LSC, link is already known to be up.
2070 * So use link_up_wait_to_complete=false. 2065 * So use link_up_wait_to_complete=false.
2071 */ 2066 */
2067 if (hw->fc.disable_fc_autoneg)
2068 goto out;
2069
2072 hw->mac.ops.check_link(hw, &speed, &link_up, false); 2070 hw->mac.ops.check_link(hw, &speed, &link_up, false);
2073 if (!link_up) { 2071 if (!link_up)
2074 ret_val = IXGBE_ERR_FLOW_CONTROL;
2075 goto out; 2072 goto out;
2076 }
2077 2073
2078 switch (hw->phy.media_type) { 2074 switch (hw->phy.media_type) {
2079 /* Autoneg flow control on fiber adapters */ 2075 /* Autoneg flow control on fiber adapters */
@@ -2104,7 +2100,6 @@ out:
2104 hw->fc.fc_was_autonegged = false; 2100 hw->fc.fc_was_autonegged = false;
2105 hw->fc.current_mode = hw->fc.requested_mode; 2101 hw->fc.current_mode = hw->fc.requested_mode;
2106 } 2102 }
2107 return ret_val;
2108} 2103}
2109 2104
2110/** 2105/**
@@ -2116,7 +2111,7 @@ out:
2116static s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw) 2111static s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
2117{ 2112{
2118 u32 pcs_anadv_reg, pcs_lpab_reg, linkstat; 2113 u32 pcs_anadv_reg, pcs_lpab_reg, linkstat;
2119 s32 ret_val; 2114 s32 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2120 2115
2121 /* 2116 /*
2122 * On multispeed fiber at 1g, bail out if 2117 * On multispeed fiber at 1g, bail out if
@@ -2126,10 +2121,8 @@ static s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
2126 2121
2127 linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA); 2122 linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
2128 if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) || 2123 if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
2129 (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) { 2124 (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1))
2130 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2131 goto out; 2125 goto out;
2132 }
2133 2126
2134 pcs_anadv_reg = IXGBE_READ_REG(hw, IXGBE_PCS1GANA); 2127 pcs_anadv_reg = IXGBE_READ_REG(hw, IXGBE_PCS1GANA);
2135 pcs_lpab_reg = IXGBE_READ_REG(hw, IXGBE_PCS1GANLP); 2128 pcs_lpab_reg = IXGBE_READ_REG(hw, IXGBE_PCS1GANLP);
@@ -2153,7 +2146,7 @@ out:
2153static s32 ixgbe_fc_autoneg_backplane(struct ixgbe_hw *hw) 2146static s32 ixgbe_fc_autoneg_backplane(struct ixgbe_hw *hw)
2154{ 2147{
2155 u32 links2, anlp1_reg, autoc_reg, links; 2148 u32 links2, anlp1_reg, autoc_reg, links;
2156 s32 ret_val; 2149 s32 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2157 2150
2158 /* 2151 /*
2159 * On backplane, bail out if 2152 * On backplane, bail out if
@@ -2161,21 +2154,13 @@ static s32 ixgbe_fc_autoneg_backplane(struct ixgbe_hw *hw)
2161 * - we are 82599 and link partner is not AN enabled 2154 * - we are 82599 and link partner is not AN enabled
2162 */ 2155 */
2163 links = IXGBE_READ_REG(hw, IXGBE_LINKS); 2156 links = IXGBE_READ_REG(hw, IXGBE_LINKS);
2164 if ((links & IXGBE_LINKS_KX_AN_COMP) == 0) { 2157 if ((links & IXGBE_LINKS_KX_AN_COMP) == 0)
2165 hw->fc.fc_was_autonegged = false;
2166 hw->fc.current_mode = hw->fc.requested_mode;
2167 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2168 goto out; 2158 goto out;
2169 }
2170 2159
2171 if (hw->mac.type == ixgbe_mac_82599EB) { 2160 if (hw->mac.type == ixgbe_mac_82599EB) {
2172 links2 = IXGBE_READ_REG(hw, IXGBE_LINKS2); 2161 links2 = IXGBE_READ_REG(hw, IXGBE_LINKS2);
2173 if ((links2 & IXGBE_LINKS2_AN_SUPPORTED) == 0) { 2162 if ((links2 & IXGBE_LINKS2_AN_SUPPORTED) == 0)
2174 hw->fc.fc_was_autonegged = false;
2175 hw->fc.current_mode = hw->fc.requested_mode;
2176 ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
2177 goto out; 2163 goto out;
2178 }
2179 } 2164 }
2180 /* 2165 /*
2181 * Read the 10g AN autoc and LP ability registers and resolve 2166 * Read the 10g AN autoc and LP ability registers and resolve
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h
index f992777e67a8..9e8a1c05df6e 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h
@@ -78,7 +78,7 @@ s32 ixgbe_disable_rx_buff_generic(struct ixgbe_hw *hw);
78s32 ixgbe_enable_rx_buff_generic(struct ixgbe_hw *hw); 78s32 ixgbe_enable_rx_buff_generic(struct ixgbe_hw *hw);
79s32 ixgbe_enable_rx_dma_generic(struct ixgbe_hw *hw, u32 regval); 79s32 ixgbe_enable_rx_dma_generic(struct ixgbe_hw *hw, u32 regval);
80s32 ixgbe_fc_enable_generic(struct ixgbe_hw *hw, s32 packetbuf_num); 80s32 ixgbe_fc_enable_generic(struct ixgbe_hw *hw, s32 packetbuf_num);
81s32 ixgbe_fc_autoneg(struct ixgbe_hw *hw); 81void ixgbe_fc_autoneg(struct ixgbe_hw *hw);
82 82
83s32 ixgbe_validate_mac_addr(u8 *mac_addr); 83s32 ixgbe_validate_mac_addr(u8 *mac_addr);
84s32 ixgbe_acquire_swfw_sync(struct ixgbe_hw *hw, u16 mask); 84s32 ixgbe_acquire_swfw_sync(struct ixgbe_hw *hw, u16 mask);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
index d82e25c321ff..5337260bed5b 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
@@ -2981,7 +2981,6 @@ struct ixgbe_info {
2981#define IXGBE_ERR_OVERTEMP -26 2981#define IXGBE_ERR_OVERTEMP -26
2982#define IXGBE_ERR_FC_NOT_NEGOTIATED -27 2982#define IXGBE_ERR_FC_NOT_NEGOTIATED -27
2983#define IXGBE_ERR_FC_NOT_SUPPORTED -28 2983#define IXGBE_ERR_FC_NOT_SUPPORTED -28
2984#define IXGBE_ERR_FLOW_CONTROL -29
2985#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30 2984#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30
2986#define IXGBE_ERR_PBA_SECTION -31 2985#define IXGBE_ERR_PBA_SECTION -31
2987#define IXGBE_ERR_INVALID_ARGUMENT -32 2986#define IXGBE_ERR_INVALID_ARGUMENT -32