]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[3c90x] Stall upload engine before setting RX ring address
authorThomas Miletich <thomas.miletich@gmail.com>
Mon, 19 Aug 2013 10:59:34 +0000 (12:59 +0200)
committerMichael Brown <mcb30@ipxe.org>
Tue, 20 Aug 2013 13:34:53 +0000 (14:34 +0100)
According to the 3c90x datasheet we have to stall the upload (receive)
engine before setting the receive ring address.

Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/3c90x.c

index c190057468638beec1d03cbd607f825b84090bff..1433e64a332e1b47fcf1b5c20dfe0c78d9d1f041 100644 (file)
@@ -813,10 +813,14 @@ static int a3c90x_open(struct net_device *netdev)
                goto error;
        }
 
+       a3c90x_internal_IssueCommand(inf_3c90x->IOAddr, cmdStallCtl, upStall);
+
        /* send rx_ring address to NIC */
        outl(virt_to_bus(inf_3c90x->rx_ring),
             inf_3c90x->IOAddr + regUpListPtr_l);
 
+       a3c90x_internal_IssueCommand(inf_3c90x->IOAddr, cmdStallCtl, upUnStall);
+
        /* enable packet transmission and reception */
        a3c90x_internal_IssueCommand(inf_3c90x->IOAddr, cmdTxEnable, 0);
        a3c90x_internal_IssueCommand(inf_3c90x->IOAddr, cmdRxEnable, 0);