ixgbe: Patch to fix 82599 multispeed fiber link issues when driver is loaded without any cable and reconnecting it to 1G partner
In 82599 multi speed fiber case when driver is loaded without any cable and reconnecting the cable with a 1G partner does not bring up the link in 1Gb mode. When there is no link we first setup the link at 10G & 1G and then try to re-establish the link at highest speed 10G and thereby changing autoneg_advertised value to highest speed 10G. After connecting back the cable to a 1G link partner we never try 1G as autoneg advertised value is changed to link at 10G only. The following patch fixes the issue by properly initializing the autoneg_advertised value just before exiting from link setup routine. Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com> Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b7fdb71485
commit
c3c7432741
1 changed files with 11 additions and 11 deletions
|
@ -421,15 +421,6 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
hw->mac.ops.get_link_capabilities(hw, &phy_link_speed, &negotiation);
|
||||
speed &= phy_link_speed;
|
||||
|
||||
/* Set autoneg_advertised value based on input link speed */
|
||||
hw->phy.autoneg_advertised = 0;
|
||||
|
||||
if (speed & IXGBE_LINK_SPEED_10GB_FULL)
|
||||
hw->phy.autoneg_advertised |= IXGBE_LINK_SPEED_10GB_FULL;
|
||||
|
||||
if (speed & IXGBE_LINK_SPEED_1GB_FULL)
|
||||
hw->phy.autoneg_advertised |= IXGBE_LINK_SPEED_1GB_FULL;
|
||||
|
||||
/*
|
||||
* When the driver changes the link speeds that it can support,
|
||||
* it sets autotry_restart to true to indicate that we need to
|
||||
|
@ -466,7 +457,7 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
autoneg,
|
||||
autoneg_wait_to_complete);
|
||||
if (status != 0)
|
||||
goto out;
|
||||
return status;
|
||||
|
||||
/* Flap the tx laser if it has not already been done */
|
||||
if (hw->mac.autotry_restart) {
|
||||
|
@ -520,7 +511,7 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
autoneg,
|
||||
autoneg_wait_to_complete);
|
||||
if (status != 0)
|
||||
goto out;
|
||||
return status;
|
||||
|
||||
/* Flap the tx laser if it has not already been done */
|
||||
if (hw->mac.autotry_restart) {
|
||||
|
@ -558,6 +549,15 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
autoneg_wait_to_complete);
|
||||
|
||||
out:
|
||||
/* Set autoneg_advertised value based on input link speed */
|
||||
hw->phy.autoneg_advertised = 0;
|
||||
|
||||
if (speed & IXGBE_LINK_SPEED_10GB_FULL)
|
||||
hw->phy.autoneg_advertised |= IXGBE_LINK_SPEED_10GB_FULL;
|
||||
|
||||
if (speed & IXGBE_LINK_SPEED_1GB_FULL)
|
||||
hw->phy.autoneg_advertised |= IXGBE_LINK_SPEED_1GB_FULL;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue