diff options
| author | Michael Brown | 2008-03-10 14:02:53 +0100 |
|---|---|---|
| committer | Michael Brown | 2008-03-10 14:02:53 +0100 |
| commit | 3e781eb87f7b5bfa638f94234bb5e9d64508b0a4 (patch) | |
| tree | 5884ac0438320638c846166856a4b54b3564bd23 /src/drivers/net/w89c840.c | |
| parent | [PXE] Work around a buffer-size bug in WinPE (diff) | |
| parent | Use plain C in timer_rdtsc for division instead of inline asssembly. (diff) | |
| download | ipxe-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.c | 9 |
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; } |
