[linux-yocto] [PATCH 40/78] drivers/net: The work around for Amarillo needs to be done the first time as well!

Paul Butler butler.paul at gmail.com
Tue Nov 19 20:23:16 PST 2013

From: John Jacques <john.jacques at lsi.com>

The original hardware disabled auto negotiation. This was anticipated by the
driver, but the hardware did not work as expected. The PHY status registers
did not return the correctly values. As a work around, until auto negotiation
could be re-enabled, we forced the MAC into half duplex mode. This mitigates
the problem, but does not solve it. Most of the boards have been fixed at
this point.

Signed-off-by: John Jacques <john.jacques at lsi.com>
 drivers/net/ethernet/lsi/lsi_acp_net.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.c b/drivers/net/ethernet/lsi/lsi_acp_net.c
index 331c8e4..cfd8106 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_net.c
+++ b/drivers/net/ethernet/lsi/lsi_acp_net.c
@@ -181,6 +181,11 @@ static void appnic_handle_link_change(struct net_device *dev)
 		status_change = 1;
+	rx_configuration &= ~0x1000;
+	tx_configuration &= ~0x1000;
 	if (status_change) {
 		if (phydev->link) {
@@ -193,11 +198,6 @@ static void appnic_handle_link_change(struct net_device *dev)
 			netdev_info(dev, "link down\n");
-		rx_configuration &= ~0x1000;
-		tx_configuration &= ~0x1000;
 		if (rx_configuration != read_mac(APPNIC_RX_CONF))
 			write_mac(rx_configuration, APPNIC_RX_CONF);

More information about the linux-yocto mailing list