aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2014-03-02 11:29:34 -0500
committerDavid S. Miller <davem@davemloft.net>2014-03-02 19:05:25 -0500
commit1d3f41ea0e95bed0502a7ac3f42fdc23ca6b7b82 (patch)
treee7f898275fe87a85fd364f66e139cebce7cb26a6
parent25d54fe5657f74766f2c79ad1267320793403f9e (diff)
b44: always set duplex mode why phy changes
Without this patch b44_check_phy() was called when the phy called the adjust callback. This method only change the mac duplex mode when the carrier was off. When the phy changed the duplex mode after the carrier was on the mac was not changed. This happened when an external phy was used. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/b44.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index e8046e1ebd1c..8a7bf7dad898 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -2229,7 +2229,12 @@ static void b44_adjust_link(struct net_device *dev)
2229 } 2229 }
2230 2230
2231 if (status_changed) { 2231 if (status_changed) {
2232 b44_check_phy(bp); 2232 u32 val = br32(bp, B44_TX_CTRL);
2233 if (bp->flags & B44_FLAG_FULL_DUPLEX)
2234 val |= TX_CTRL_DUPLEX;
2235 else
2236 val &= ~TX_CTRL_DUPLEX;
2237 bw32(bp, B44_TX_CTRL, val);
2233 phy_print_status(phydev); 2238 phy_print_status(phydev);
2234 } 2239 }
2235} 2240}