summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/via-rhine.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/net/via-rhine.c')
-rw-r--r--src/drivers/net/via-rhine.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/drivers/net/via-rhine.c b/src/drivers/net/via-rhine.c
index 0c955fab3..81350091b 100644
--- a/src/drivers/net/via-rhine.c
+++ b/src/drivers/net/via-rhine.c
@@ -50,7 +50,6 @@ static const char *version = "rhine.c v1.0.2 2004-10-29\n";
#include "nic.h"
#include <gpxe/pci.h>
#include <gpxe/ethernet.h>
-#include "timer.h"
/* define all ioaddr */
@@ -785,6 +784,7 @@ ReadMII (int byMIIIndex, int ioaddr)
char byMIIAdrbak;
char byMIICRbak;
char byMIItemp;
+ tick_t ct;
byMIIAdrbak = inb (byMIIAD);
byMIICRbak = inb (byMIICR);
@@ -799,8 +799,8 @@ ReadMII (int byMIIIndex, int ioaddr)
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x40;
- load_timer2(2*TICKS_PER_MS);
- while (byMIItemp != 0 && timer2_running())
+ ct = currticks();
+ while (byMIItemp != 0 && ct + 2*USECS_IN_MSEC < currticks())
{
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x40;
@@ -825,6 +825,7 @@ WriteMII (char byMIISetByte, char byMIISetBit, char byMIIOP, int ioaddr)
char byMIIAdrbak;
char byMIICRbak;
char byMIItemp;
+ tick_t ct;
byMIIAdrbak = inb (byMIIAD);
@@ -840,8 +841,8 @@ WriteMII (char byMIISetByte, char byMIISetBit, char byMIIOP, int ioaddr)
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x40;
- load_timer2(2*TICKS_PER_MS);
- while (byMIItemp != 0 && timer2_running())
+ ct = currticks();
+ while (byMIItemp != 0 && ct + 2*USECS_IN_MSEC < currticks())
{
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x40;
@@ -870,8 +871,8 @@ WriteMII (char byMIISetByte, char byMIISetBit, char byMIIOP, int ioaddr)
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x20;
- load_timer2(2*TICKS_PER_MS);
- while (byMIItemp != 0 && timer2_running())
+ ct = currticks();
+ while (byMIItemp != 0 && ct + 2*USECS_IN_MSEC < currticks())
{
byMIItemp = inb (byMIICR);
byMIItemp = byMIItemp & 0x20;
@@ -1345,6 +1346,7 @@ rhine_transmit (struct nic *nic,
unsigned char CR1bak;
unsigned char CR0bak;
unsigned int nstype;
+ tick_t ct;
/*printf ("rhine_transmit\n"); */
@@ -1385,9 +1387,10 @@ rhine_transmit (struct nic *nic,
outb (CR1bak, byCR1);
do
{
- load_timer2(10*TICKS_PER_MS);
+ ct = currticks();
/* Wait until transmit is finished or timeout*/
- while((tp->tx_ring[entry].tx_status.bits.own_bit !=0) && timer2_running())
+ while((tp->tx_ring[entry].tx_status.bits.own_bit !=0) &&
+ ct + 10*USECS_IN_MSEC < currticks())
;
if(tp->tx_ring[entry].tx_status.bits.terr == 0)