diff options
| author | Thomas Miletich | 2009-09-08 19:35:55 +0200 |
|---|---|---|
| committer | Marty Connor | 2009-10-15 21:32:51 +0200 |
| commit | d07f79de359f834468ff9f86beb71d53413ff2d7 (patch) | |
| tree | 319b24b39bd0ead01d96a3bfd2e9805c3abd6cd7 | |
| parent | [util] Make mtools check detect new versions (diff) | |
| download | ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.tar.gz ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.tar.xz ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.zip | |
[sis900] Enable interrupts to allow UNDI to work
Enable interrupts in sis900_irq(). Doing so allows some programs using
gPXE's UNDI interface to work properly, including Symantec Ghost.
Tested-by: Hubert Mercier <hubert.mercier@unilim.fr>
Signed-off-by: Marty Connor <mdc@etherboot.org>
| -rw-r--r-- | src/drivers/net/sis900.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/net/sis900.c b/src/drivers/net/sis900.c index 177cd6572..da14a091c 100644 --- a/src/drivers/net/sis900.c +++ b/src/drivers/net/sis900.c @@ -1183,8 +1183,12 @@ static int sis900_poll(struct nic *nic, int retrieve) { u32 rx_status = rxd[cur_rx].cmdsts; + u32 intr_status; int retstat = 0; + /* acknowledge interrupts by reading interrupt status register */ + intr_status = inl(ioaddr + isr); + if (sis900_debug > 2) printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx, (unsigned int) rx_status); @@ -1264,8 +1268,10 @@ sis900_irq(struct nic *nic __unused, irq_action_t action __unused) { switch ( action ) { case DISABLE : + outl(0, ioaddr + imr); break; case ENABLE : + outl((RxSOVR|RxORN|RxERR|RxOK|TxURN|TxERR|TxIDLE), ioaddr + imr); break; case FORCE : break; |
