From 6c741e82979e5884f209fe5a6d1b29885a01f800 Mon Sep 17 00:00:00 2001 From: luigi Date: Sun, 18 Feb 2001 07:21:28 +0000 Subject: Add a check in the interrupt service routine to return quickly in case there is nothing to do. This happens normally when the card shares the interrupt line with other devices. This code saves a couple of microseconds per interrupt even on a fast CPU. You normally would not care, except under heavy tinygram traffic where you can have some 50-100.000 interrupts per second... On passing, correct a spelling error. --- sys/dev/dc/if_dc.c | 5 ++++- sys/pci/if_dc.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index 7e57dae..9cb794f 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -2716,7 +2716,10 @@ static void dc_intr(arg) DC_LOCK(sc); ifp = &sc->arpcom.ac_if; - /* Supress unwanted interrupts */ + if ( (CSR_READ_4(sc, DC_ISR) & DC_INTRS) == 0) + return ; + + /* Suppress unwanted interrupts */ if (!(ifp->if_flags & IFF_UP)) { if (CSR_READ_4(sc, DC_ISR) & DC_INTRS) dc_stop(sc); diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c index 7e57dae..9cb794f 100644 --- a/sys/pci/if_dc.c +++ b/sys/pci/if_dc.c @@ -2716,7 +2716,10 @@ static void dc_intr(arg) DC_LOCK(sc); ifp = &sc->arpcom.ac_if; - /* Supress unwanted interrupts */ + if ( (CSR_READ_4(sc, DC_ISR) & DC_INTRS) == 0) + return ; + + /* Suppress unwanted interrupts */ if (!(ifp->if_flags & IFF_UP)) { if (CSR_READ_4(sc, DC_ISR) & DC_INTRS) dc_stop(sc); -- cgit v1.1