Message ID | 1326925160.2795.45.camel@probook |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 01/18/2012 02:19 PM, Jesper Dangaard Brouer wrote: > On Wed, 2012-01-18 at 22:45 +0100, Benny Amorsen wrote: >> Jesse Brandeburg<jesse.brandeburg@intel.com> writes: >> >>> For X520 adapters, the documentation[1] states that which SFP+ >>> adapters are/are not supported. Direct attach cables are also >>> supported. >>> >>> [1] http://www.intel.com/support/network/adapter/pro100/sb/CS-030612.htm >> >> I can't believe that locked optics have now arrived on commodity >> hardware. I have been trying to migrate to all-Intel networking at work; >> that effort is certainly on hold now. > > I cannot understand why Intel are pulling a stunt like this! :-( > > I have read the code, and the limitation comes from a EEPROM setting on > the NIC, see define "IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP 0x1". > > Here is a (untested) patch I believe removes the limitation in the > driver: > > > [PATCH] ixgbe: Always allow any SFP+ regardless of EEPROM setting. > > Intel are trying to limit which SFP's we can use in our NICs. > We don't like this practices in the Linux Kernel. I think that you should at least print some big warnings in the kernel logs if you do this, as well as all the info you can find on the non-supported SFP+ module in use so that folks can debug things if the SFP+ doesn't properly work. As previously mentioned, I found a case where some random SFP+ did NOT work with a similar hack in place... Thanks, Ben
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c index 7cf1e1f..2b13083 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c @@ -1061,6 +1061,8 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) } hw->mac.ops.get_device_caps(hw, &enforce_sfp); + /* Hack: Always allow any SFP regardless of EEPROM setting */ + enforce_sfp |= IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP; if (!(enforce_sfp & IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP) && !((hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0) || (hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1))) {