Skip to content

Commit

Permalink
ixgbe: Patch to fix 82599 multispeed fiber link issues when driver is…
Browse files Browse the repository at this point in the history
… 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>
  • Loading branch information
Mallikarjuna R Chilakala authored and David S. Miller committed Sep 2, 2009
1 parent b7fdb71 commit c3c7432
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions drivers/net/ixgbe/ixgbe_82599.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit c3c7432

Please sign in to comment.