diff options
author | phk <phk@FreeBSD.org> | 2003-12-25 22:14:25 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-12-25 22:14:25 +0000 |
commit | 373c3cc2673a9f0b5b1736e5d3659488232b7794 (patch) | |
tree | 8869b71a698b8793086e480969cd6c830023c502 /sys/pci/if_sisreg.h | |
parent | 0c849a91f98fd719022adbdb4618575ccb9fcfbe (diff) | |
download | FreeBSD-src-373c3cc2673a9f0b5b1736e5d3659488232b7794.zip FreeBSD-src-373c3cc2673a9f0b5b1736e5d3659488232b7794.tar.gz |
Vastly improve performance of IRQ handling on stopped interfaces with
this driver by introducing a flag saying we already stopped the device.
On my Soekris net4801, this took a ping -i 0.001 from spending 80% of
time in interrupt handling to 10% (approx numbers).
This was a particular problem for the net4801 because the tree
interfaces share the same interrupt, but it would be a problem for
any configuration where an unused if_sis interface shares an interrupt
with a busy device.
Other drivers may have similar problems.
Thanks to: Luigi
Diffstat (limited to 'sys/pci/if_sisreg.h')
-rw-r--r-- | sys/pci/if_sisreg.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/pci/if_sisreg.h b/sys/pci/if_sisreg.h index e39bd08..aebc2af 100644 --- a/sys/pci/if_sisreg.h +++ b/sys/pci/if_sisreg.h @@ -470,6 +470,7 @@ struct sis_softc { bus_dma_tag_t sis_tag; struct sis_ring_data sis_cdata; struct callout sis_stat_ch; + int sis_stopped; #ifdef DEVICE_POLLING int rxcycles; #endif |