Tweak the set of coalesced interrupts
authorNathan Binkert <binkertn@umich.edu>
Mon, 19 Sep 2005 01:22:57 +0000 (21:22 -0400)
committerNathan Binkert <binkertn@umich.edu>
Mon, 19 Sep 2005 01:22:57 +0000 (21:22 -0400)
dev/ns_gige.cc:
    clean up usage of ISR_FOO macros
dev/ns_gige_reg.h:
    Clean up #defines
    make ISR_RXIDLE and ISR_TXIDLE coalesced

--HG--
extra : convert_revision : fd64fc6a441d096fc45737fdcb837de8868ca10a

dev/ns_gige.cc
dev/ns_gige_reg.h

index d93e155bf4f8413d5d1eb9f540bc574edc8e0d2d..6aae7b9eb1906baa552799f3fd0f9ff947917b07 100644 (file)
@@ -1211,7 +1211,7 @@ NSGigE::devIntrPost(uint32_t interrupts)
     if (interrupts & ISR_NOIMPL)
         warn("interrupt not implemented %#x\n", interrupts);
 
-    interrupts &= ~ISR_NOIMPL;
+    interrupts &= ISR_IMPL;
     regs.isr |= interrupts;
 
     if (interrupts & regs.imr) {
@@ -1247,7 +1247,7 @@ NSGigE::devIntrPost(uint32_t interrupts)
 
     if ((regs.isr & regs.imr)) {
         Tick when = curTick;
-        if (!(regs.isr & regs.imr & ISR_NODELAY))
+        if ((regs.isr & regs.imr & ISR_NODELAY) == 0)
             when += intrDelay;
         cpuIntrPost(when);
     }
@@ -1289,8 +1289,7 @@ NSGigE::devIntrClear(uint32_t interrupts)
         postedRxOrn++;
     }
 
-    if (regs.isr & regs.imr & (ISR_SWI | ISR_RXIDLE | ISR_RXOK | ISR_RXDESC |
-                               ISR_TXOK | ISR_TXIDLE | ISR_TXDESC | ISR_RXORN) )
+    if (regs.isr & regs.imr & ISR_IMPL)
         postedInterrupts++;
 
     interrupts &= ~ISR_NOIMPL;
index 77b12dbd8aed5c9ebbed5fe89967868b7018ba89..cbbe1dc95f04f946787441ce8a53ff4f57559299 100644 (file)
 #define ISR_RXDESC     0x00000002
 #define ISR_RXOK       0x00000001
 #define ISR_ALL         0x7FFFFFFF
-#define ISR_NODELAY    (ISR_ALL & ~(ISR_RXOK|ISR_RXDESC|ISR_TXOK|ISR_TXDESC))
-#define ISR_NOIMPL     (~(ISR_SWI|ISR_TXIDLE|ISR_TXDESC|ISR_TXOK|ISR_RXORN| \
-                           ISR_RXIDLE|ISR_RXDESC|ISR_RXOK))
+#define ISR_DELAY      (ISR_TXIDLE|ISR_TXDESC|ISR_TXOK| \
+                         ISR_RXIDLE|ISR_RXDESC|ISR_RXOK)
+#define ISR_NODELAY    (ISR_ALL & ~ISR_DELAY)
+#define ISR_IMPL        (ISR_SWI|ISR_TXIDLE|ISR_TXDESC|ISR_TXOK|ISR_RXORN| \
+                         ISR_RXIDLE|ISR_RXDESC|ISR_RXOK)
+#define ISR_NOIMPL     (ISR_ALL & ~ISR_IMPL)
 
 /* transmit configuration register */
 #define TX_CFG_CSI     0x80000000