From d07f79de359f834468ff9f86beb71d53413ff2d7 Mon Sep 17 00:00:00 2001 From: Thomas Miletich Date: Tue, 8 Sep 2009 19:35:55 +0200 Subject: [PATCH] [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 Signed-off-by: Marty Connor --- src/drivers/net/sis900.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/drivers/net/sis900.c b/src/drivers/net/sis900.c index 177cd657..da14a091 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;