Don't rely on retry.c's periodically calling currticks() in order to
authorMichael Brown <mcb30@etherboot.org>
Sun, 29 Jul 2007 14:26:50 +0000 (15:26 +0100)
committerMichael Brown <mcb30@etherboot.org>
Sun, 29 Jul 2007 14:27:47 +0000 (15:27 +0100)
allow the UNDI NIC interrupt to happen.

src/arch/i386/drivers/net/undinet.c

index 38032ab..a5746ce 100644 (file)
@@ -423,8 +423,14 @@ static void undinet_poll ( struct net_device *netdev ) {
 
        if ( ! undinic->isr_processing ) {
                /* Do nothing unless ISR has been triggered */
-               if ( ! undinet_isr_triggered() )
+               if ( ! undinet_isr_triggered() ) {
+                       /* Allow interrupt to occur */
+                       __asm__ __volatile__ ( REAL_CODE ( "sti\n\t"
+                                                          "nop\n\t"
+                                                          "nop\n\t"
+                                                          "cli\n\t" ) : : );
                        return;
+               }
 
                /* Start ISR processing */
                undinic->isr_processing = 1;