bnx2x: Fix 57810 1G-KR link against certain switches.
Fix 1G KR link by restoring CL72 misc control register to default value rather than 0. Signed-off-by: Yaniv Rosner <yanivr@broadcom.com> Signed-off-by: Barak Witkowski <barak@broadcom.com> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
50f8d35de8
commit
b457bcb972
|
@ -3545,12 +3545,11 @@ static void bnx2x_warpcore_set_lpi_passthrough(struct bnx2x_phy *phy,
|
||||||
static void bnx2x_warpcore_enable_AN_KR(struct bnx2x_phy *phy,
|
static void bnx2x_warpcore_enable_AN_KR(struct bnx2x_phy *phy,
|
||||||
struct link_params *params,
|
struct link_params *params,
|
||||||
struct link_vars *vars) {
|
struct link_vars *vars) {
|
||||||
u16 val16 = 0, lane, i;
|
u16 val16 = 0, lane, i, cl72_ctrl;
|
||||||
struct bnx2x *bp = params->bp;
|
struct bnx2x *bp = params->bp;
|
||||||
static struct bnx2x_reg_set reg_set[] = {
|
static struct bnx2x_reg_set reg_set[] = {
|
||||||
{MDIO_WC_DEVAD, MDIO_WC_REG_SERDESDIGITAL_CONTROL1000X2, 0x7},
|
{MDIO_WC_DEVAD, MDIO_WC_REG_SERDESDIGITAL_CONTROL1000X2, 0x7},
|
||||||
{MDIO_AN_DEVAD, MDIO_WC_REG_PAR_DET_10G_CTRL, 0},
|
{MDIO_AN_DEVAD, MDIO_WC_REG_PAR_DET_10G_CTRL, 0},
|
||||||
{MDIO_WC_DEVAD, MDIO_WC_REG_CL72_USERB0_CL72_MISC1_CONTROL, 0},
|
|
||||||
{MDIO_WC_DEVAD, MDIO_WC_REG_XGXSBLK1_LANECTRL0, 0xff},
|
{MDIO_WC_DEVAD, MDIO_WC_REG_XGXSBLK1_LANECTRL0, 0xff},
|
||||||
{MDIO_WC_DEVAD, MDIO_WC_REG_XGXSBLK1_LANECTRL1, 0x5555},
|
{MDIO_WC_DEVAD, MDIO_WC_REG_XGXSBLK1_LANECTRL1, 0x5555},
|
||||||
{MDIO_PMA_DEVAD, MDIO_WC_REG_IEEE0BLK_AUTONEGNP, 0x0},
|
{MDIO_PMA_DEVAD, MDIO_WC_REG_IEEE0BLK_AUTONEGNP, 0x0},
|
||||||
|
@ -3565,6 +3564,13 @@ static void bnx2x_warpcore_enable_AN_KR(struct bnx2x_phy *phy,
|
||||||
bnx2x_cl45_write(bp, phy, reg_set[i].devad, reg_set[i].reg,
|
bnx2x_cl45_write(bp, phy, reg_set[i].devad, reg_set[i].reg,
|
||||||
reg_set[i].val);
|
reg_set[i].val);
|
||||||
|
|
||||||
|
bnx2x_cl45_read(bp, phy, MDIO_WC_DEVAD,
|
||||||
|
MDIO_WC_REG_CL72_USERB0_CL72_MISC1_CONTROL, &cl72_ctrl);
|
||||||
|
cl72_ctrl &= 0xf8ff;
|
||||||
|
cl72_ctrl |= 0x3800;
|
||||||
|
bnx2x_cl45_write(bp, phy, MDIO_WC_DEVAD,
|
||||||
|
MDIO_WC_REG_CL72_USERB0_CL72_MISC1_CONTROL, cl72_ctrl);
|
||||||
|
|
||||||
/* Check adding advertisement for 1G KX */
|
/* Check adding advertisement for 1G KX */
|
||||||
if (((vars->line_speed == SPEED_AUTO_NEG) &&
|
if (((vars->line_speed == SPEED_AUTO_NEG) &&
|
||||||
(phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_1G)) ||
|
(phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_1G)) ||
|
||||||
|
|
Loading…
Reference in New Issue