david/ipxe
Archived
1
0

[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>
This commit is contained in:
Thomas Miletich 2013-08-19 12:59:34 +02:00 committed by Michael Brown
parent 82e452d427
commit b324a9c243

View File

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