|
@@ -8089,7 +8089,9 @@ static int bnx2x_verify_sfp_module(struct bnx2x_phy *phy,
|
|
|
netdev_err(bp->dev, "Warning: Unqualified SFP+ module detected,"
|
|
|
" Port %d from %s part number %s\n",
|
|
|
params->port, vendor_name, vendor_pn);
|
|
|
- phy->flags |= FLAGS_SFP_NOT_APPROVED;
|
|
|
+ if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) !=
|
|
|
+ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_WARNING_MSG)
|
|
|
+ phy->flags |= FLAGS_SFP_NOT_APPROVED;
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
@@ -9149,6 +9151,12 @@ static int bnx2x_8727_config_init(struct bnx2x_phy *phy,
|
|
|
tmp2 &= 0xFFEF;
|
|
|
bnx2x_cl45_write(bp, phy,
|
|
|
MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_OPT_CFG_REG, tmp2);
|
|
|
+ bnx2x_cl45_read(bp, phy,
|
|
|
+ MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER,
|
|
|
+ &tmp2);
|
|
|
+ bnx2x_cl45_write(bp, phy,
|
|
|
+ MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER,
|
|
|
+ (tmp2 & 0x7fff));
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -9329,12 +9337,11 @@ static u8 bnx2x_8727_read_status(struct bnx2x_phy *phy,
|
|
|
MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXCTRL,
|
|
|
((1<<5) | (1<<2)));
|
|
|
}
|
|
|
- DP(NETIF_MSG_LINK, "Enabling 8727 TX laser if SFP is approved\n");
|
|
|
- bnx2x_8727_specific_func(phy, params, ENABLE_TX);
|
|
|
- /* If transmitter is disabled, ignore false link up indication */
|
|
|
- bnx2x_cl45_read(bp, phy,
|
|
|
- MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER, &val1);
|
|
|
- if (val1 & (1<<15)) {
|
|
|
+
|
|
|
+ if (!(phy->flags & FLAGS_SFP_NOT_APPROVED)) {
|
|
|
+ DP(NETIF_MSG_LINK, "Enabling 8727 TX laser\n");
|
|
|
+ bnx2x_sfp_set_transmitter(params, phy, 1);
|
|
|
+ } else {
|
|
|
DP(NETIF_MSG_LINK, "Tx is disabled\n");
|
|
|
return 0;
|
|
|
}
|