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;