diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 5588ef493a3d..aaf482c0d520 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -3724,7 +3724,7 @@ static void ixgbe_sfp_task(struct work_struct *work) | |||
3724 | if ((hw->phy.type == ixgbe_phy_nl) && | 3724 | if ((hw->phy.type == ixgbe_phy_nl) && |
3725 | (hw->phy.sfp_type == ixgbe_sfp_type_not_present)) { | 3725 | (hw->phy.sfp_type == ixgbe_sfp_type_not_present)) { |
3726 | s32 ret = hw->phy.ops.identify_sfp(hw); | 3726 | s32 ret = hw->phy.ops.identify_sfp(hw); |
3727 | if (ret) | 3727 | if (ret == IXGBE_ERR_SFP_NOT_PRESENT) |
3728 | goto reschedule; | 3728 | goto reschedule; |
3729 | ret = hw->phy.ops.reset(hw); | 3729 | ret = hw->phy.ops.reset(hw); |
3730 | if (ret == IXGBE_ERR_SFP_NOT_SUPPORTED) { | 3730 | if (ret == IXGBE_ERR_SFP_NOT_SUPPORTED) { |
@@ -4534,13 +4534,17 @@ static void ixgbe_sfp_config_module_task(struct work_struct *work) | |||
4534 | u32 err; | 4534 | u32 err; |
4535 | 4535 | ||
4536 | adapter->flags |= IXGBE_FLAG_IN_SFP_MOD_TASK; | 4536 | adapter->flags |= IXGBE_FLAG_IN_SFP_MOD_TASK; |
4537 | |||
4538 | /* Time for electrical oscillations to settle down */ | ||
4539 | msleep(100); | ||
4537 | err = hw->phy.ops.identify_sfp(hw); | 4540 | err = hw->phy.ops.identify_sfp(hw); |
4541 | |||
4538 | if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { | 4542 | if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { |
4539 | dev_err(&adapter->pdev->dev, "failed to initialize because " | 4543 | dev_err(&adapter->pdev->dev, "failed to initialize because " |
4540 | "an unsupported SFP+ module type was detected.\n" | 4544 | "an unsupported SFP+ module type was detected.\n" |
4541 | "Reload the driver after installing a supported " | 4545 | "Reload the driver after installing a supported " |
4542 | "module.\n"); | 4546 | "module.\n"); |
4543 | ixgbe_down(adapter); | 4547 | unregister_netdev(adapter->netdev); |
4544 | return; | 4548 | return; |
4545 | } | 4549 | } |
4546 | hw->mac.ops.setup_sfp(hw); | 4550 | hw->mac.ops.setup_sfp(hw); |