From a1572e0ab0f5fab9a1f0185ded593bec811aa175 Mon Sep 17 00:00:00 2001 From: Alexey Zaytsev Date: Sun, 2 Mar 2008 03:41:10 +0300 Subject: Modify gPXE core and drivers to work with the new timer subsystem Signed-off-by: Alexey Zaytsev --- src/drivers/net/3c509.c | 2 +- src/drivers/net/3c515.c | 1 - src/drivers/net/3c595.c | 1 - src/drivers/net/3c5x9.c | 1 - src/drivers/net/3c90x.c | 7 ++++--- src/drivers/net/amd8111e.c | 1 - src/drivers/net/bnx2.c | 1 - src/drivers/net/dmfe.c | 1 - src/drivers/net/e1000/e1000.h | 1 - src/drivers/net/e1000/e1000_osdep.h | 2 +- src/drivers/net/eepro.c | 1 - src/drivers/net/eepro100.c | 13 ++++++++----- src/drivers/net/epic100.c | 16 +++++++++------- src/drivers/net/etherfabric.c | 1 - src/drivers/net/forcedeth.c | 1 - src/drivers/net/ipoib.c | 1 - src/drivers/net/mlx_ipoib/mt23108_imp.c | 1 - src/drivers/net/mlx_ipoib/mt25218_imp.c | 1 - src/drivers/net/mtnic.c | 2 +- src/drivers/net/natsemi.c | 2 +- src/drivers/net/pcnet32.c | 1 - src/drivers/net/prism2.c | 1 - src/drivers/net/r8169.c | 1 - src/drivers/net/rtl8139.c | 2 +- src/drivers/net/sis900.c | 1 - src/drivers/net/smc9000.c | 1 - src/drivers/net/sundance.c | 1 - src/drivers/net/tg3.c | 1 - src/drivers/net/tlan.c | 1 - src/drivers/net/via-rhine.c | 21 ++++++++++++--------- src/drivers/net/via-velocity.h | 2 -- src/drivers/net/w89c840.c | 9 ++++----- 32 files changed, 42 insertions(+), 57 deletions(-) (limited to 'src/drivers/net') diff --git a/src/drivers/net/3c509.c b/src/drivers/net/3c509.c index e704cfca..8a15aff2 100644 --- a/src/drivers/net/3c509.c +++ b/src/drivers/net/3c509.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include "3c509.h" diff --git a/src/drivers/net/3c515.c b/src/drivers/net/3c515.c index d0bf3189..02f03dc7 100644 --- a/src/drivers/net/3c515.c +++ b/src/drivers/net/3c515.c @@ -50,7 +50,6 @@ #include "nic.h" #include #include /* for ISA_ROM */ -#include "timer.h" #include static void t3c515_wait(unsigned int nticks) diff --git a/src/drivers/net/3c595.c b/src/drivers/net/3c595.c index 572a99e0..7138f936 100644 --- a/src/drivers/net/3c595.c +++ b/src/drivers/net/3c595.c @@ -30,7 +30,6 @@ #include #include #include "3c595.h" -#include "timer.h" static struct nic_operations t595_operations; diff --git a/src/drivers/net/3c5x9.c b/src/drivers/net/3c5x9.c index 1ade6f47..565044a1 100644 --- a/src/drivers/net/3c5x9.c +++ b/src/drivers/net/3c5x9.c @@ -28,7 +28,6 @@ $Id$ #include "etherboot.h" #include "nic.h" #include -#include "timer.h" #include "3c509.h" static enum { none, bnc, utp } connector = none; /* for 3C509 */ diff --git a/src/drivers/net/3c90x.c b/src/drivers/net/3c90x.c index 8e1f160e..8158239d 100644 --- a/src/drivers/net/3c90x.c +++ b/src/drivers/net/3c90x.c @@ -43,7 +43,6 @@ #include "nic.h" #include #include -#include "timer.h" static struct nic_operations a3c90x_operations; @@ -498,6 +497,7 @@ a3c90x_transmit(struct nic *nic __unused, const char *d, unsigned int t, unsigned char status; unsigned i, retries; + tick_t ct; for (retries=0; retries < XMIT_RETRIES ; retries++) { @@ -540,9 +540,10 @@ a3c90x_transmit(struct nic *nic __unused, const char *d, unsigned int t, ; /** Wait for NIC Transmit to Complete **/ - load_timer2(10*TICKS_PER_MS); /* Give it 10 ms */ + ct = currticks(); + while (!(inw(INF_3C90X.IOAddr + regCommandIntStatus_w)&0x0004) && - timer2_running()) + ct + 10*USECS_IN_MSEC < currticks()); ; if (!(inw(INF_3C90X.IOAddr + regCommandIntStatus_w)&0x0004)) diff --git a/src/drivers/net/amd8111e.c b/src/drivers/net/amd8111e.c index c26c07cf..1c41add1 100644 --- a/src/drivers/net/amd8111e.c +++ b/src/drivers/net/amd8111e.c @@ -33,7 +33,6 @@ #include "mii.h" #include #include -#include "timer.h" #include "string.h" #include "stdint.h" #include "amd8111e.h" diff --git a/src/drivers/net/bnx2.c b/src/drivers/net/bnx2.c index fdd6655b..9c989c4c 100644 --- a/src/drivers/net/bnx2.c +++ b/src/drivers/net/bnx2.c @@ -18,7 +18,6 @@ #include #include #include -#include "timer.h" #include "string.h" #include "bnx2.h" #include "bnx2_fw.h" diff --git a/src/drivers/net/dmfe.c b/src/drivers/net/dmfe.c index 34e211d4..9cf50418 100644 --- a/src/drivers/net/dmfe.c +++ b/src/drivers/net/dmfe.c @@ -43,7 +43,6 @@ /* to get the PCI support functions, if this is a PCI NIC */ #include #include -#include "timer.h" /* #define EDEBUG 1 */ #ifdef EDEBUG diff --git a/src/drivers/net/e1000/e1000.h b/src/drivers/net/e1000/e1000.h index b4bc1d87..4ae41451 100644 --- a/src/drivers/net/e1000/e1000.h +++ b/src/drivers/net/e1000/e1000.h @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include diff --git a/src/drivers/net/e1000/e1000_osdep.h b/src/drivers/net/e1000/e1000_osdep.h index 04e14892..7df9b5e9 100644 --- a/src/drivers/net/e1000/e1000_osdep.h +++ b/src/drivers/net/e1000/e1000_osdep.h @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/drivers/net/eepro.c b/src/drivers/net/eepro.c index 0a9c95e6..2a163d1b 100644 --- a/src/drivers/net/eepro.c +++ b/src/drivers/net/eepro.c @@ -35,7 +35,6 @@ has 34 pins, the top row of 2 are not used. #include #include "nic.h" #include -#include "timer.h" #include /* Different 82595 chips */ diff --git a/src/drivers/net/eepro100.c b/src/drivers/net/eepro100.c index bb46d163..f746976a 100644 --- a/src/drivers/net/eepro100.c +++ b/src/drivers/net/eepro100.c @@ -107,7 +107,6 @@ #include "nic.h" #include #include -#include "timer.h" static int ioaddr; @@ -408,6 +407,7 @@ static void eepro100_transmit(struct nic *nic, const char *d, unsigned int t, un } hdr; unsigned short status; int s1, s2; + tick_t ct; status = inw(ioaddr + SCBStatus); /* Acknowledge all of the current interrupt sources ASAP. */ @@ -445,8 +445,10 @@ static void eepro100_transmit(struct nic *nic, const char *d, unsigned int t, un wait_for_cmd_done(ioaddr + SCBCmd); s1 = inw (ioaddr + SCBStatus); - load_timer2(10*TICKS_PER_MS); /* timeout 10 ms for transmit */ - while (!txfd.status && timer2_running()) + + ct = currticks(); + /* timeout 10 ms for transmit */ + while (!txfd.status && ct + 10*USECS_IN_MSEC) /* Wait */; s2 = inw (ioaddr + SCBStatus); @@ -606,6 +608,7 @@ static int eepro100_probe ( struct nic *nic, struct pci_device *pci ) { int read_cmd, ee_size; int options; int rx_mode; + tick_t ct; /* we cache only the first few words of the EEPROM data be careful not to access beyond this array */ @@ -749,8 +752,8 @@ static int eepro100_probe ( struct nic *nic, struct pci_device *pci ) { whereami ("started TX thingy (config, iasetup)."); - load_timer2(10*TICKS_PER_MS); - while (!txfd.status && timer2_running()) + ct = currticks(); + while (!txfd.status && ct + 10*USECS_IN_MSEC < currticks()) /* Wait */; /* Read the status register once to disgard stale data */ diff --git a/src/drivers/net/epic100.c b/src/drivers/net/epic100.c index e79da2b9..67b4f0fb 100644 --- a/src/drivers/net/epic100.c +++ b/src/drivers/net/epic100.c @@ -8,7 +8,6 @@ #include #include #include "nic.h" -#include "timer.h" #include "console.h" #include "epic100.h" @@ -310,6 +309,7 @@ epic100_transmit(struct nic *nic, const char *destaddr, unsigned int type, unsigned short nstype; unsigned char *txp; int entry; + tick_t ct; /* Calculate the next Tx descriptor entry. */ entry = cur_tx % TX_RING_SIZE; @@ -339,18 +339,20 @@ epic100_transmit(struct nic *nic, const char *destaddr, unsigned int type, * set the base address with the "ownership" * bits last. */ - + tx_ring[entry].buflength |= cpu_to_le32(len); - tx_ring[entry].status = cpu_to_le32(len << 16) | + tx_ring[entry].status = cpu_to_le32(len << 16) | cpu_to_le32(TRING_OWN); /* Pass ownership to the chip. */ cur_tx++; /* Trigger an immediate transmit demand. */ - outl(CR_QUEUE_TX, command); - - load_timer2(10*TICKS_PER_MS); /* timeout 10 ms for transmit */ - while ((le32_to_cpu(tx_ring[entry].status) & (TRING_OWN)) && timer2_running()) + outl(CR_QUEUE_TX, command); + + ct = currticks(); + /* timeout 10 ms for transmit */ + while ((le32_to_cpu(tx_ring[entry].status) & (TRING_OWN)) && + ct + 10*USECS_IN_MSEC < currticks()) /* Wait */; if ((le32_to_cpu(tx_ring[entry].status) & TRING_OWN) != 0) diff --git a/src/drivers/net/etherfabric.c b/src/drivers/net/etherfabric.c index 6b763451..90cc73f4 100644 --- a/src/drivers/net/etherfabric.c +++ b/src/drivers/net/etherfabric.c @@ -24,7 +24,6 @@ #include #include #include -#include "timer.h" #define dma_addr_t unsigned long #include "etherfabric.h" diff --git a/src/drivers/net/forcedeth.c b/src/drivers/net/forcedeth.c index 9ef1dd79..f6195885 100644 --- a/src/drivers/net/forcedeth.c +++ b/src/drivers/net/forcedeth.c @@ -51,7 +51,6 @@ #include /* Include timer support functions */ #include -#include "timer.h" #include "mii.h" #define drv_version "v1.2" diff --git a/src/drivers/net/ipoib.c b/src/drivers/net/ipoib.c index 905051bf..d457b258 100644 --- a/src/drivers/net/ipoib.c +++ b/src/drivers/net/ipoib.c @@ -22,7 +22,6 @@ #include #include #include -#include "timer.h" #include #include #include diff --git a/src/drivers/net/mlx_ipoib/mt23108_imp.c b/src/drivers/net/mlx_ipoib/mt23108_imp.c index 4e601668..bb2383c5 100644 --- a/src/drivers/net/mlx_ipoib/mt23108_imp.c +++ b/src/drivers/net/mlx_ipoib/mt23108_imp.c @@ -37,7 +37,6 @@ static void be_to_cpu_buf(void *buf, int size) } } -#include "timer.h" #include "cmdif_mt23108.c" #include "cmdif_comm.c" #include "ib_mt23108.c" diff --git a/src/drivers/net/mlx_ipoib/mt25218_imp.c b/src/drivers/net/mlx_ipoib/mt25218_imp.c index fe407041..007ee653 100644 --- a/src/drivers/net/mlx_ipoib/mt25218_imp.c +++ b/src/drivers/net/mlx_ipoib/mt25218_imp.c @@ -37,7 +37,6 @@ static void be_to_cpu_buf(void *buf, int size) } } -#include "timer.h" #include "cmdif_mt25218.c" #include "cmdif_comm.c" #include "ib_mt25218.c" diff --git a/src/drivers/net/mtnic.c b/src/drivers/net/mtnic.c index a568b2f7..536fcb8d 100755 --- a/src/drivers/net/mtnic.c +++ b/src/drivers/net/mtnic.c @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/drivers/net/natsemi.c b/src/drivers/net/natsemi.c index 72047610..98a5ff84 100644 --- a/src/drivers/net/natsemi.c +++ b/src/drivers/net/natsemi.c @@ -63,8 +63,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/src/drivers/net/pcnet32.c b/src/drivers/net/pcnet32.c index e4318429..d8529da1 100644 --- a/src/drivers/net/pcnet32.c +++ b/src/drivers/net/pcnet32.c @@ -43,7 +43,6 @@ #include "nic.h" #include #include -#include "timer.h" #include "mii.h" /* void hex_dump(const char *data, const unsigned int len); */ diff --git a/src/drivers/net/prism2.c b/src/drivers/net/prism2.c index 3c512519..aaf4c968 100644 --- a/src/drivers/net/prism2.c +++ b/src/drivers/net/prism2.c @@ -62,7 +62,6 @@ static const char hardcoded_ssid[] = ""; * quicker to convert code from the Linux Prism2 driver. */ #include -#include "timer.h" #define __le16_to_cpu(x) (x) #define __le32_to_cpu(x) (x) #define __cpu_to_le16(x) (x) diff --git a/src/drivers/net/r8169.c b/src/drivers/net/r8169.c index 52cb0d0e..ab9a30f8 100644 --- a/src/drivers/net/r8169.c +++ b/src/drivers/net/r8169.c @@ -49,7 +49,6 @@ #include #include #include -#include "timer.h" #define drv_version "v1.6" #define drv_date "03-27-2004" diff --git a/src/drivers/net/rtl8139.c b/src/drivers/net/rtl8139.c index b4c99fcb..83fac554 100644 --- a/src/drivers/net/rtl8139.c +++ b/src/drivers/net/rtl8139.c @@ -71,7 +71,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/drivers/net/sis900.c b/src/drivers/net/sis900.c index cf9b2ce6..58526506 100644 --- a/src/drivers/net/sis900.c +++ b/src/drivers/net/sis900.c @@ -46,7 +46,6 @@ #include "etherboot.h" #include #include "nic.h" -#include "timer.h" #include "sis900.h" diff --git a/src/drivers/net/smc9000.c b/src/drivers/net/smc9000.c index c6219ee7..31a1e1b1 100644 --- a/src/drivers/net/smc9000.c +++ b/src/drivers/net/smc9000.c @@ -40,7 +40,6 @@ #include "etherboot.h" #include "nic.h" #include -#include "timer.h" #include "smc9000.h" # define _outb outb diff --git a/src/drivers/net/sundance.c b/src/drivers/net/sundance.c index 3bbfbfbb..3b6f5a88 100644 --- a/src/drivers/net/sundance.c +++ b/src/drivers/net/sundance.c @@ -46,7 +46,6 @@ #include "nic.h" /* to get the PCI support functions, if this is a PCI NIC */ #include -#include "timer.h" #include "mii.h" #define drv_version "v1.12" diff --git a/src/drivers/net/tg3.c b/src/drivers/net/tg3.c index 2188def4..57b9df1e 100644 --- a/src/drivers/net/tg3.c +++ b/src/drivers/net/tg3.c @@ -17,7 +17,6 @@ #include #include #include -#include "timer.h" #include "string.h" #include "tg3.h" diff --git a/src/drivers/net/tlan.c b/src/drivers/net/tlan.c index 60ca182e..4fae0170 100644 --- a/src/drivers/net/tlan.c +++ b/src/drivers/net/tlan.c @@ -42,7 +42,6 @@ #include "nic.h" #include #include -#include "timer.h" #include "tlan.h" #define drv_version "v1.4" diff --git a/src/drivers/net/via-rhine.c b/src/drivers/net/via-rhine.c index 0c955fab..81350091 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 #include -#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) diff --git a/src/drivers/net/via-velocity.h b/src/drivers/net/via-velocity.h index c296d289..a43028bd 100644 --- a/src/drivers/net/via-velocity.h +++ b/src/drivers/net/via-velocity.h @@ -24,8 +24,6 @@ * Copyright (c) 2006 by Timothy Legge */ -#include "timer.h" - #ifndef VELOCITY_H #define VELOCITY_H diff --git a/src/drivers/net/w89c840.c b/src/drivers/net/w89c840.c index 2f141aa9..14497640 100644 --- a/src/drivers/net/w89c840.c +++ b/src/drivers/net/w89c840.c @@ -81,7 +81,6 @@ #include "nic.h" #include #include -#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; } -- cgit v1.2.3-55-g7522