]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
tg3: Fix copper autoneg adv checks
authorMatt Carlson <mcarlson@broadcom.com>
Mon, 13 Feb 2012 15:20:10 +0000 (15:20 +0000)
committerJoe Jin <joe.jin@oracle.com>
Tue, 28 Aug 2012 07:21:32 +0000 (15:21 +0800)
When checking the autoneg advertisements, the driver failed to include
the master and master enable bits for the bcm5701.  This patch fixes the
problem.

(cherry picked from commit 3198e07fd64aa8c3a38dda33bcc0f44265eb581e)
Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/tg3.c

index 1da1a05c26556c45ad4a7827e0aa2a7b7571cef0..5236c87a944aa9af6727bd4f1b2081d88e543dd7 100644 (file)
@@ -4032,7 +4032,16 @@ static bool tg3_phy_copper_an_config_ok(struct tg3 *tp, u32 *lcladv)
                if (tg3_readphy(tp, MII_CTRL1000, &tg3_ctrl))
                        return false;
 
-               tg3_ctrl &= (ADVERTISE_1000HALF | ADVERTISE_1000FULL);
+               if (tgtadv &&
+                   (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0 ||
+                    tp->pci_chip_rev_id == CHIPREV_ID_5701_B0)) {
+                       tgtadv |= CTL1000_AS_MASTER | CTL1000_ENABLE_MASTER;
+                       tg3_ctrl &= (ADVERTISE_1000HALF | ADVERTISE_1000FULL |
+                                    CTL1000_AS_MASTER | CTL1000_ENABLE_MASTER);
+               } else {
+                       tg3_ctrl &= (ADVERTISE_1000HALF | ADVERTISE_1000FULL);
+               }
+
                if (tg3_ctrl != tgtadv)
                        return false;
        }