The SFP module identification code in sfp_sm_mod_probe() will reject SFF modules soldered down because they have an identified of 0x2, while the code currently checks for 0x3 only (SFP_PHYS_ID_SFP), update that.
Signed-off-by: Florian Fainelli <f.faine...@gmail.com> --- drivers/net/phy/sfp.c | 5 +++-- include/linux/sfp.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c index e381811e5f11..942288aa9cdb 100644 --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c @@ -463,8 +463,9 @@ static int sfp_sm_mod_probe(struct sfp *sfp) vendor, part, rev, sn, date); /* We only support SFP modules, not the legacy GBIC modules. */ - if (sfp->id.base.phys_id != SFP_PHYS_ID_SFP || - sfp->id.base.phys_ext_id != SFP_PHYS_EXT_ID_SFP) { + if ((sfp->id.base.phys_id != SFP_PHYS_ID_SFP && + sfp->id.base.phys_id != SFP_PHYS_ID_SFF) || + sfp->id.base.phys_ext_id != SFP_PHYS_EXT_ID_SFP) { dev_err(sfp->dev, "module is not SFP - phys id 0x%02x 0x%02x\n", sfp->id.base.phys_id, sfp->id.base.phys_ext_id); return -EINVAL; diff --git a/include/linux/sfp.h b/include/linux/sfp.h index 4a906f560817..ee65831fe2c5 100644 --- a/include/linux/sfp.h +++ b/include/linux/sfp.h @@ -222,6 +222,7 @@ enum { SFP_SFF8472_COMPLIANCE = 0x5e, SFP_CC_EXT = 0x5f, + SFP_PHYS_ID_SFF = 0x02, SFP_PHYS_ID_SFP = 0x03, SFP_PHYS_EXT_ID_SFP = 0x04, SFP_CONNECTOR_UNSPEC = 0x00, -- 2.14.1