diff mbox

[v2] ixgbe: Reduce I2C retry count on X550 devices

Message ID 1478800649-22831-1-git-send-email-anthony.l.nguyen@intel.com
State Accepted
Delegated to: Jeff Kirsher
Headers show

Commit Message

Tony Nguyen Nov. 10, 2016, 5:57 p.m. UTC
A retry count of 10 is likely to run into problems on X550 devices that
have to detect and reset unresponsive CS4227 devices. So, reduce the I2C
retry count to 3 for X550 and above. This should avoid any possible
regressions in existing devices.

Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---

v2 -
  Removed mac check in ixgbe_read_i2c_combined_generic_int(); set initial
  max_retry value to 3 instead.

 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Bowers, AndrewX Dec. 7, 2016, 9:16 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On
> Behalf Of Tony Nguyen
> Sent: Thursday, November 10, 2016 9:57 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v2] ixgbe: Reduce I2C retry count on X550
> devices
> 
> A retry count of 10 is likely to run into problems on X550 devices that have to
> detect and reset unresponsive CS4227 devices. So, reduce the I2C retry
> count to 3 for X550 and above. This should avoid any possible regressions in
> existing devices.
> 
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
> 
> v2 -
>   Removed mac check in ixgbe_read_i2c_combined_generic_int(); set initial
>   max_retry value to 3 instead.
> 
>  drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
index 4aa6793..e0fc147 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
@@ -113,7 +113,7 @@  s32 ixgbe_read_i2c_combined_generic_int(struct ixgbe_hw *hw, u8 addr,
 					u16 reg, u16 *val, bool lock)
 {
 	u32 swfw_mask = hw->phy.phy_semaphore_mask;
-	int max_retry = 10;
+	int max_retry = 3;
 	int retry = 0;
 	u8 csum_byte;
 	u8 high_bits;
@@ -1756,6 +1756,8 @@  static s32 ixgbe_read_i2c_byte_generic_int(struct ixgbe_hw *hw, u8 byte_offset,
 	u32 swfw_mask = hw->phy.phy_semaphore_mask;
 	bool nack = true;
 
+	if (hw->mac.type >= ixgbe_mac_X550)
+		max_retry = 3;
 	if (ixgbe_is_sfp_probe(hw, byte_offset, dev_addr))
 		max_retry = IXGBE_SFP_DETECT_RETRIES;