mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 09:46:42 +07:00
ixgbe: fix regression on some 82598 adapters
The change to check the SFP+ module again on open() was causing the XFP (non-SFP+) adapters to be rejected. We only want to try and re-identify the SFP+ module if the original probe found that this device was an SFP+ device. So for this code path (driver loaded with SFP module, module inserted, ifconfig up of the device) the type will be ixgbe_phy_unknown for an unidentified SFP+ module. So we only check if that is the case. This problem also shows up on Copper devices. Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Don Skidmore <donald.c.skidmore@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
63d6e1d80a
commit
19343de279
@ -2697,20 +2697,24 @@ 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.
|
||||
*/
|
||||
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");
|
||||
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)) {
|
||||
ixgbe_sfp_link_config(adapter);
|
||||
|
Loading…
Reference in New Issue
Block a user