|
@@ -342,12 +342,16 @@ static int ixgbe_set_settings(struct net_device *netdev,
|
|
if (old == advertised)
|
|
if (old == advertised)
|
|
return err;
|
|
return err;
|
|
/* this sets the link speed and restarts auto-neg */
|
|
/* this sets the link speed and restarts auto-neg */
|
|
|
|
+ while (test_and_set_bit(__IXGBE_IN_SFP_INIT, &adapter->state))
|
|
|
|
+ usleep_range(1000, 2000);
|
|
|
|
+
|
|
hw->mac.autotry_restart = true;
|
|
hw->mac.autotry_restart = true;
|
|
err = hw->mac.ops.setup_link(hw, advertised, true);
|
|
err = hw->mac.ops.setup_link(hw, advertised, true);
|
|
if (err) {
|
|
if (err) {
|
|
e_info(probe, "setup link failed with code %d\n", err);
|
|
e_info(probe, "setup link failed with code %d\n", err);
|
|
hw->mac.ops.setup_link(hw, old, true);
|
|
hw->mac.ops.setup_link(hw, old, true);
|
|
}
|
|
}
|
|
|
|
+ clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state);
|
|
} else {
|
|
} else {
|
|
/* in this case we currently only support 10Gb/FULL */
|
|
/* in this case we currently only support 10Gb/FULL */
|
|
u32 speed = ethtool_cmd_speed(ecmd);
|
|
u32 speed = ethtool_cmd_speed(ecmd);
|