From: Matt Carlson Date: Wed, 31 Aug 2011 11:44:47 +0000 (+0000) Subject: tg3: Check all adv bits when checking config X-Git-Tag: v2.6.39-400.9.0~423^2~19^2~11^2~680 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=de455f0107ca90f58f53b00b7b5ce5a8363d92f4;p=users%2Fjedix%2Flinux-maple.git tg3: Check all adv bits when checking config This patch makes sure the driver checks all advertisement bits when checking the current hw advertisements. (cherry picked from commit b99d2a57b7d9e9e64e9193d70696b77ed035c311) Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Joe Jin --- diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index e1a191047e45..423d73abfc80 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -3333,8 +3333,9 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask) if (tg3_readphy(tp, MII_ADVERTISE, &adv_reg)) return 0; - if ((adv_reg & all_mask) != all_mask) + if ((adv_reg & ADVERTISE_ALL) != all_mask) return 0; + if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) { u32 tg3_ctrl; @@ -3347,7 +3348,8 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask) if (tg3_readphy(tp, MII_CTRL1000, &tg3_ctrl)) return 0; - if ((tg3_ctrl & all_mask) != all_mask) + tg3_ctrl &= (ADVERTISE_1000HALF | ADVERTISE_1000FULL); + if (tg3_ctrl != all_mask) return 0; } return 1;