summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/drivers/net/undinet.c
diff options
context:
space:
mode:
authorMichael Brown2007-07-29 16:26:50 +0200
committerMichael Brown2007-07-29 16:27:47 +0200
commit304d1e9fa59e0a79761d48f168b60c093647b948 (patch)
treeae62d13f6224758dfd2665adaa5f3c585da258ba /src/arch/i386/drivers/net/undinet.c
parentAdded HMAC code from TLS project (diff)
downloadipxe-304d1e9fa59e0a79761d48f168b60c093647b948.tar.gz
ipxe-304d1e9fa59e0a79761d48f168b60c093647b948.tar.xz
ipxe-304d1e9fa59e0a79761d48f168b60c093647b948.zip
Don't rely on retry.c's periodically calling currticks() in order to
allow the UNDI NIC interrupt to happen.
Diffstat (limited to 'src/arch/i386/drivers/net/undinet.c')
-rw-r--r--src/arch/i386/drivers/net/undinet.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/arch/i386/drivers/net/undinet.c b/src/arch/i386/drivers/net/undinet.c
index 38032ab1..a5746ce8 100644
--- a/src/arch/i386/drivers/net/undinet.c
+++ b/src/arch/i386/drivers/net/undinet.c
@@ -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;