summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2006-12-26 18:33:55 +0000
committerbde <bde@FreeBSD.org>2006-12-26 18:33:55 +0000
commitc087db26268681cdded833e18dee6c4b8b05a098 (patch)
tree3999dece02c324b9910873e7e17f80e053170678
parent0c24cf64c64beae1b4a222af06a143802dd45cf7 (diff)
downloadFreeBSD-src-c087db26268681cdded833e18dee6c4b8b05a098.zip
FreeBSD-src-c087db26268681cdded833e18dee6c4b8b05a098.tar.gz
After rev.1.169, the "interrupt" coalescing parameters are not used in
bge_intr(). Some of them are used in bge_poll(). Simplify by only initializing these for polling mode and not toggling them when switching modes. This also fixes missing synchronization with the coalescing engine in the toggling.
-rw-r--r--sys/dev/bge/if_bge.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 75bff43..a036cfe 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -1473,8 +1473,8 @@ bge_blockinit(struct bge_softc *sc)
CSR_WRITE_4(sc, BGE_HCC_RX_COAL_TICKS_INT, 0);
CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS_INT, 0);
}
- CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 0);
- CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 0);
+ CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 1);
+ CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 1);
/* Set up address of statistics block */
if (!(BGE_IS_5705_PLUS(sc))) {
@@ -3538,8 +3538,6 @@ bge_init_locked(struct bge_softc *sc)
BGE_SETBIT(sc, BGE_PCI_MISC_CTL,
BGE_PCIMISCCTL_MASK_PCI_INTR);
CSR_WRITE_4(sc, BGE_MBX_IRQ0_LO, 1);
- CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 1);
- CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 1);
} else
#endif
@@ -3769,16 +3767,12 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
BGE_SETBIT(sc, BGE_PCI_MISC_CTL,
BGE_PCIMISCCTL_MASK_PCI_INTR);
CSR_WRITE_4(sc, BGE_MBX_IRQ0_LO, 1);
- CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 1);
- CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 1);
ifp->if_capenable |= IFCAP_POLLING;
BGE_UNLOCK(sc);
} else {
error = ether_poll_deregister(ifp);
/* Enable interrupt even in error case */
BGE_LOCK(sc);
- CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 0);
- CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 0);
BGE_CLRBIT(sc, BGE_PCI_MISC_CTL,
BGE_PCIMISCCTL_MASK_PCI_INTR);
CSR_WRITE_4(sc, BGE_MBX_IRQ0_LO, 0);
OpenPOWER on IntegriCloud