Intel are limiting which SFP's can use in their NICs, due to support issues. This restriction comes from an EEPROM setting IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP. This is for example the case with the 10Gbit/s X520-DA2 NIC.
Add a module param "allow_any_sfp", which can override the EEPROM setting, and allows any unsupported SFP+ module to be used. When doing so, print disclaimer of unsupported usage. Signed-off-by: Jesper Dangaard Brouer <[email protected]> --- drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c index 7cf1e1f..2ccee6f 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c @@ -32,6 +32,12 @@ #include "ixgbe_common.h" #include "ixgbe_phy.h" +#define ALLOW_ANY_SFP_DEFAULT 0 +static unsigned int allow_any_sfp __read_mostly = ALLOW_ANY_SFP_DEFAULT; +module_param(allow_any_sfp, uint, 0644); +MODULE_PARM_DESC(allow_any_sfp, + "Allow any SFP+ module, even if EEPROM disallow it"); + static void ixgbe_i2c_start(struct ixgbe_hw *hw); static void ixgbe_i2c_stop(struct ixgbe_hw *hw); static s32 ixgbe_clock_in_i2c_byte(struct ixgbe_hw *hw, u8 *data); @@ -844,6 +850,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) u8 cable_tech = 0; u8 cable_spec = 0; u16 enforce_sfp = 0; + struct ixgbe_adapter *adapter = NULL; if (hw->mac.ops.get_media_type(hw) != ixgbe_media_type_fiber) { hw->phy.sfp_type = ixgbe_sfp_type_not_present; @@ -1068,9 +1075,19 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (hw->phy.type == ixgbe_phy_sfp_intel) { status = 0; } else { - hw_dbg(hw, "SFP+ module not supported\n"); - hw->phy.type = ixgbe_phy_sfp_unsupported; - status = IXGBE_ERR_SFP_NOT_SUPPORTED; + adapter = hw->back; /* used by e_dev_err macro*/ + e_dev_err( + "SFP+ module not supported by Intel\n"); + if (allow_any_sfp) { /* modul param override */ + e_dev_err( + "Continue WITHOUT support, SFP+ module " + "vendor OUI:0x%06X (enum phy.type:%d)\n", + vendor_oui >> 8, hw->phy.type); + status = 0; + } else { + hw->phy.type = ixgbe_phy_sfp_unsupported; + status = IXGBE_ERR_SFP_NOT_SUPPORTED; + } } } else { status = 0; ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
