From: Ido Goshen <i...@cgstowernetworks.com> 10BASE-T SFP+ copper transceivers become cheaper and popular So far those were blocked by ixgbe as “unsupported”. e.g. eth_ixgbe_dev_init(): Unsupported SFP+ Module eth_ixgbe_dev_init(): Hardware Initialization Failure: -19 EAL: Requested device 0000:0a:00.0 cannot be used
This patch expands the usage of allow_unsupported_sfp to be more general and makes ixgbe more tolerant to unknown SFPs Signed-off-by: Ido Goshen <i...@cgstowernetworks.com> --- drivers/net/ixgbe/base/ixgbe_phy.c | 22 +++++++++++----------- drivers/net/ixgbe/base/ixgbe_x550.c | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/net/ixgbe/base/ixgbe_phy.c b/drivers/net/ixgbe/base/ixgbe_phy.c index dd118f9..ff96afc 100644 --- a/drivers/net/ixgbe/base/ixgbe_phy.c +++ b/drivers/net/ixgbe/base/ixgbe_phy.c @@ -1527,18 +1527,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (hw->phy.type == ixgbe_phy_sfp_intel) { status = IXGBE_SUCCESS; } else { - if (hw->allow_unsupported_sfp == true) { - EWARN(hw, - "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. " - "Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. " - "Intel Corporation is not responsible for any harm caused by using untested modules.\n"); - status = IXGBE_SUCCESS; - } else { - DEBUGOUT("SFP+ module not supported\n"); - hw->phy.type = + hw->phy.type = ixgbe_phy_sfp_unsupported; - status = IXGBE_ERR_SFP_NOT_SUPPORTED; - } + status = IXGBE_ERR_SFP_NOT_SUPPORTED; } } else { status = IXGBE_SUCCESS; @@ -1546,6 +1537,15 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) } out: + if (status == IXGBE_ERR_SFP_NOT_SUPPORTED && + hw->allow_unsupported_sfp) { + PMD_INIT_LOG(WARNING, + "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. " + "Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. " + "Intel Corporation is not responsible for any harm caused by using untested modules.\n"); + hw->phy.type = ixgbe_phy_unknown; + status = IXGBE_SUCCESS; + } return status; err_read_i2c_eeprom: diff --git a/drivers/net/ixgbe/base/ixgbe_x550.c b/drivers/net/ixgbe/base/ixgbe_x550.c index a920a14..212d9a0 100644 --- a/drivers/net/ixgbe/base/ixgbe_x550.c +++ b/drivers/net/ixgbe/base/ixgbe_x550.c @@ -1539,6 +1539,9 @@ STATIC s32 ixgbe_supported_sfp_modules_X550em(struct ixgbe_hw *hw, bool *linear) *linear = false; break; case ixgbe_sfp_type_unknown: + if (hw->allow_unsupported_sfp) + return IXGBE_SUCCESS; + /* fall through */ case ixgbe_sfp_type_1g_cu_core0: case ixgbe_sfp_type_1g_cu_core1: default: -- 1.9.1