summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/w89c840.c
diff options
context:
space:
mode:
authorMichael Brown2008-03-10 14:02:53 +0100
committerMichael Brown2008-03-10 14:02:53 +0100
commit3e781eb87f7b5bfa638f94234bb5e9d64508b0a4 (patch)
tree5884ac0438320638c846166856a4b54b3564bd23 /src/drivers/net/w89c840.c
parent[PXE] Work around a buffer-size bug in WinPE (diff)
parentUse plain C in timer_rdtsc for division instead of inline asssembly. (diff)
downloadipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.tar.gz
ipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.tar.xz
ipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.zip
Merge branch 'xl0-timer'
Diffstat (limited to 'src/drivers/net/w89c840.c')
-rw-r--r--src/drivers/net/w89c840.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/drivers/net/w89c840.c b/src/drivers/net/w89c840.c
index 2f141aa98..144976404 100644
--- a/src/drivers/net/w89c840.c
+++ b/src/drivers/net/w89c840.c
@@ -81,7 +81,6 @@
#include "nic.h"
#include <gpxe/pci.h>
#include <gpxe/ethernet.h>
-#include "timer.h"
static const char *w89c840_version = "driver Version 0.94 - December 12, 2003";
@@ -113,7 +112,7 @@ static const char *w89c840_version = "driver Version 0.94 - December 12, 2003";
/* Operational parameters that usually are not changed. */
/* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT (10*TICKS_PER_MS)
+#define TX_TIMEOUT (10*USECS_IN_MSEC)
#define PKT_BUF_SZ 1536 /* Size of each temporary Rx buffer.*/
@@ -487,6 +486,7 @@ static void w89c840_transmit(
/* send the packet to destination */
unsigned entry;
int transmit_status;
+ tick_t ct;
/* Caution: the write order is important here, set the field
with the "ownership" bits last. */
@@ -535,8 +535,7 @@ static void w89c840_transmit(
/* Now wait for TX to complete. */
transmit_status = w840private.tx_ring[entry].status;
- load_timer2(TX_TIMEOUT);
-
+ ct = currticks();
{
#if defined W89C840_DEBUG
u32 intr_stat = 0;
@@ -547,7 +546,7 @@ static void w89c840_transmit(
decode_interrupt(intr_stat);
#endif
- while ( (transmit_status & DescOwn) && timer2_running()) {
+ while ( (transmit_status & DescOwn) && ct + TX_TIMEOUT < currticks()) {
transmit_status = w840private.tx_ring[entry].status;
}