From: Thomas Miletich Date: Tue, 8 Sep 2009 17:35:55 +0000 (+0200) Subject: [sis900] Enable interrupts to allow UNDI to work X-Git-Tag: v0.9.9~11 X-Git-Url: http://git.etherboot.org/people/andreif/gpxe.git/commitdiff_plain/d07f79de359f834468ff9f86beb71d53413ff2d7?hp=0ea6e5c221a463ef5d62e00703e0d5595cc4d169 [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 --- 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;