Browse Source

[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>
tags/v0.9.9
Thomas Miletich 15 years ago
parent
commit
d07f79de35
1 changed files with 6 additions and 0 deletions
  1. 6
    0
      src/drivers/net/sis900.c

+ 6
- 0
src/drivers/net/sis900.c View File

1183
 sis900_poll(struct nic *nic, int retrieve)
1183
 sis900_poll(struct nic *nic, int retrieve)
1184
 {
1184
 {
1185
     u32 rx_status = rxd[cur_rx].cmdsts;
1185
     u32 rx_status = rxd[cur_rx].cmdsts;
1186
+    u32 intr_status;
1186
     int retstat = 0;
1187
     int retstat = 0;
1187
 
1188
 
1189
+     /* acknowledge interrupts by reading interrupt status register */
1190
+    intr_status = inl(ioaddr + isr);
1191
+
1188
     if (sis900_debug > 2)
1192
     if (sis900_debug > 2)
1189
         printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx, 
1193
         printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx, 
1190
 	       (unsigned int) rx_status);
1194
 	       (unsigned int) rx_status);
1264
 {
1268
 {
1265
   switch ( action ) {
1269
   switch ( action ) {
1266
   case DISABLE :
1270
   case DISABLE :
1271
+    outl(0, ioaddr + imr);
1267
     break;
1272
     break;
1268
   case ENABLE :
1273
   case ENABLE :
1274
+    outl((RxSOVR|RxORN|RxERR|RxOK|TxURN|TxERR|TxIDLE), ioaddr + imr);
1269
     break;
1275
     break;
1270
   case FORCE :
1276
   case FORCE :
1271
     break;
1277
     break;

Loading…
Cancel
Save