bnx2x: Fix Parallel-Detect settings
authorYaniv Rosner <yanivr@broadcom.com>
Thu, 5 Nov 2009 17:18:04 +0000 (19:18 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Nov 2009 04:00:26 +0000 (20:00 -0800)
Enable Parallel-Detect for 10G and 1G only if the relevant speed
capability is enabled

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x_link.c

index e32d3370862e75bdbeff078b3e1a18e57ee14979..b5964cb7e76116572eaf3d6f802e95d62441628e 100644 (file)
@@ -1107,18 +1107,21 @@ static void bnx2x_set_parallel_detection(struct link_params *params,
                              MDIO_REG_BANK_SERDES_DIGITAL,
                              MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
                              &control2);
-
-
-       control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
-
-
+       if (params->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_1G)
+               control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
+       else
+               control2 &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
+       DP(NETIF_MSG_LINK, "params->speed_cap_mask = 0x%x, control2 = 0x%x\n",
+               params->speed_cap_mask, control2);
        CL45_WR_OVER_CL22(bp, params->port,
                              params->phy_addr,
                              MDIO_REG_BANK_SERDES_DIGITAL,
                              MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
                              control2);
 
-       if (phy_flags & PHY_XGXS_FLAG) {
+       if ((phy_flags & PHY_XGXS_FLAG) &&
+            (params->speed_cap_mask &
+                   PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
                DP(NETIF_MSG_LINK, "XGXS\n");
 
                CL45_WR_OVER_CL22(bp, params->port,