bnx2x: correct reading of speed capabilities
authorYaniv Rosner <yanivr@broadcom.com>
Wed, 1 May 2013 04:27:57 +0000 (04:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 May 2013 19:07:43 +0000 (15:07 -0400)
When the bnx2x driver reads the port configuration - mask irrelevant bits.

Without this change, the unintended bits may cause the driver to needlessly
toggle the link, as a comparison in the link flap avoidance flow will show
that the old link did not advertise the same capabilities and thus cannot
be retained.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c

index a024eec..ad98c29 100644 (file)
@@ -10667,10 +10667,12 @@ static void bnx2x_get_port_hwinfo(struct bnx2x *bp)
 
        bp->link_params.speed_cap_mask[0] =
                SHMEM_RD(bp,
-                        dev_info.port_hw_config[port].speed_capability_mask);
+                        dev_info.port_hw_config[port].speed_capability_mask) &
+               PORT_HW_CFG_SPEED_CAPABILITY_D0_MASK;
        bp->link_params.speed_cap_mask[1] =
                SHMEM_RD(bp,
-                        dev_info.port_hw_config[port].speed_capability_mask2);
+                        dev_info.port_hw_config[port].speed_capability_mask2) &
+               PORT_HW_CFG_SPEED_CAPABILITY_D0_MASK;
        bp->port.link_config[0] =
                SHMEM_RD(bp, dev_info.port_feature_config[port].link_config);