summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/3c90x.c
diff options
context:
space:
mode:
authorThomas Miletich2013-08-19 12:59:34 +0200
committerMichael Brown2013-08-20 15:34:53 +0200
commitb324a9c24304fddd6f111df4663ec583d887020c (patch)
tree329f5f87e89220d6d5c2de3508ab2c4ea4f2c05f /src/drivers/net/3c90x.c
parent[http] Add support for HTTP POST (diff)
downloadipxe-b324a9c24304fddd6f111df4663ec583d887020c.tar.gz
ipxe-b324a9c24304fddd6f111df4663ec583d887020c.tar.xz
ipxe-b324a9c24304fddd6f111df4663ec583d887020c.zip
[3c90x] Stall upload engine before setting RX ring address
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>
Diffstat (limited to 'src/drivers/net/3c90x.c')
-rw-r--r--src/drivers/net/3c90x.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/drivers/net/3c90x.c b/src/drivers/net/3c90x.c
index c1900574..1433e64a 100644
--- a/src/drivers/net/3c90x.c
+++ b/src/drivers/net/3c90x.c
@@ -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);