From 94db83841982707518e6de421159261e63eb0d4c Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sat, 14 Apr 2007 04:22:14 +0000 Subject: [PATCH] BGE_MBX_TX_HOST_PROD0_LO is write-only, avoid reading it. Obtained-from: NetBSD via FreeBSD --- sys/dev/netif/bge/if_bge.c | 11 ++++++++--- sys/dev/netif/bge/if_bgereg.h | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sys/dev/netif/bge/if_bge.c b/sys/dev/netif/bge/if_bge.c index 75227f5532..b47f16714a 100644 --- a/sys/dev/netif/bge/if_bge.c +++ b/sys/dev/netif/bge/if_bge.c @@ -31,7 +31,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.3.2.39 2005/07/03 03:41:18 silby Exp $ - * $DragonFly: src/sys/dev/netif/bge/if_bge.c,v 1.64 2007/03/31 09:31:57 sephe Exp $ + * $DragonFly: src/sys/dev/netif/bge/if_bge.c,v 1.65 2007/04/14 04:22:14 sephe Exp $ * */ @@ -919,8 +919,11 @@ bge_init_tx_ring(struct bge_softc *sc) { sc->bge_txcnt = 0; sc->bge_tx_saved_considx = 0; + sc->bge_tx_prodidx = 0; + + /* Initialize transmit producer index for host-memory send ring. */ + CSR_WRITE_4(sc, BGE_MBX_TX_HOST_PROD0_LO, sc->bge_tx_prodidx); - CSR_WRITE_4(sc, BGE_MBX_TX_HOST_PROD0_LO, 0); /* 5700 b2 errata */ if (sc->bge_chiprev == BGE_CHIPREV_5700_BX) CSR_WRITE_4(sc, BGE_MBX_TX_HOST_PROD0_LO, 0); @@ -2412,7 +2415,7 @@ bge_start(struct ifnet *ifp) if (!sc->bge_link) return; - prodidx = CSR_READ_4(sc, BGE_MBX_TX_HOST_PROD0_LO); + prodidx = sc->bge_tx_prodidx; need_trans = 0; while(sc->bge_cdata.bge_tx_chain[prodidx] == NULL) { @@ -2461,6 +2464,8 @@ bge_start(struct ifnet *ifp) if (sc->bge_chiprev == BGE_CHIPREV_5700_BX) CSR_WRITE_4(sc, BGE_MBX_TX_HOST_PROD0_LO, prodidx); + sc->bge_tx_prodidx = prodidx; + /* * Set a timeout in case the chip goes out to lunch. */ diff --git a/sys/dev/netif/bge/if_bgereg.h b/sys/dev/netif/bge/if_bgereg.h index 190a58cb8f..972a716841 100644 --- a/sys/dev/netif/bge/if_bgereg.h +++ b/sys/dev/netif/bge/if_bgereg.h @@ -31,7 +31,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.1.2.16 2004/09/23 20:11:18 ps Exp $ - * $DragonFly: src/sys/dev/netif/bge/if_bgereg.h,v 1.16 2007/03/31 07:24:34 sephe Exp $ + * $DragonFly: src/sys/dev/netif/bge/if_bgereg.h,v 1.17 2007/04/14 04:22:14 sephe Exp $ */ /* @@ -2239,6 +2239,7 @@ struct bge_softc { uint32_t bge_stat_ticks; uint32_t bge_rx_coal_ticks; uint32_t bge_tx_coal_ticks; + uint32_t bge_tx_prodidx; uint32_t bge_rx_max_coal_bds; uint32_t bge_tx_max_coal_bds; uint32_t bge_tx_buf_ratio; -- 2.41.0