|
@@ -2697,19 +2697,23 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter)
|
|
|
|
|
|
/*
|
|
|
* For hot-pluggable SFP+ devices, a new SFP+ module may have
|
|
|
- * arrived before interrupts were enabled. We need to kick off
|
|
|
- * the SFP+ module setup first, then try to bring up link.
|
|
|
+ * arrived before interrupts were enabled but after probe. Such
|
|
|
+ * devices wouldn't have their type identified yet. We need to
|
|
|
+ * kick off the SFP+ module setup first, then try to bring up link.
|
|
|
* If we're not hot-pluggable SFP+, we just need to configure link
|
|
|
* and bring it up.
|
|
|
*/
|
|
|
- err = hw->phy.ops.identify(hw);
|
|
|
- if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) {
|
|
|
- dev_err(&adapter->pdev->dev, "failed to initialize because "
|
|
|
- "an unsupported SFP+ module type was detected.\n"
|
|
|
- "Reload the driver after installing a supported "
|
|
|
- "module.\n");
|
|
|
- ixgbe_down(adapter);
|
|
|
- return err;
|
|
|
+ if (hw->phy.type == ixgbe_phy_unknown) {
|
|
|
+ err = hw->phy.ops.identify(hw);
|
|
|
+ if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) {
|
|
|
+ dev_err(&adapter->pdev->dev, "failed to initialize "
|
|
|
+ "because an unsupported SFP+ module type "
|
|
|
+ "was detected.\n"
|
|
|
+ "Reload the driver after installing a "
|
|
|
+ "supported module.\n");
|
|
|
+ ixgbe_down(adapter);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (ixgbe_is_sfp(hw)) {
|