提交 1d3f41ea 编写于 作者: H Hauke Mehrtens 提交者: David S. Miller

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: NHauke Mehrtens <hauke@hauke-m.de>
Acked-by: NFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 25d54fe5
...@@ -2229,7 +2229,12 @@ static void b44_adjust_link(struct net_device *dev) ...@@ -2229,7 +2229,12 @@ static void b44_adjust_link(struct net_device *dev)
} }
if (status_changed) { if (status_changed) {
b44_check_phy(bp); u32 val = br32(bp, B44_TX_CTRL);
if (bp->flags & B44_FLAG_FULL_DUPLEX)
val |= TX_CTRL_DUPLEX;
else
val &= ~TX_CTRL_DUPLEX;
bw32(bp, B44_TX_CTRL, val);
phy_print_status(phydev); phy_print_status(phydev);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册