Modify gPXE core and drivers to work with the new timer subsystem

Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
This commit is contained in:
Alexey Zaytsev
2008-03-02 03:41:10 +03:00
parent 4006d229e5
commit a1572e0ab0
58 changed files with 62 additions and 121 deletions

View File

@@ -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)