diff options
author | scottl <scottl@FreeBSD.org> | 2005-12-28 08:36:32 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2005-12-28 08:36:32 +0000 |
commit | 7e6d523277e374d6fb430c5f16dc385f2d167f21 (patch) | |
tree | 68fb1a7659b4001d58c1edf80a012a20d2b9fc93 /sys/dev/ti | |
parent | fd8dcc60632d830d528145f318c244167d40e963 (diff) | |
download | FreeBSD-src-7e6d523277e374d6fb430c5f16dc385f2d167f21.zip FreeBSD-src-7e6d523277e374d6fb430c5f16dc385f2d167f21.tar.gz |
Cache the tx producer index instead of reading it every time ti_start is
called.
Diffstat (limited to 'sys/dev/ti')
-rw-r--r-- | sys/dev/ti/if_ti.c | 4 | ||||
-rw-r--r-- | sys/dev/ti/if_tireg.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c index 4a8c5fa..9fbe805 100644 --- a/sys/dev/ti/if_ti.c +++ b/sys/dev/ti/if_ti.c @@ -1727,6 +1727,7 @@ ti_init_tx_ring(sc) { sc->ti_txcnt = 0; sc->ti_tx_saved_considx = 0; + sc->ti_tx_saved_prodidx = 0; CSR_WRITE_4(sc, TI_MB_SENDPROD_IDX, 0); return (0); } @@ -3102,7 +3103,7 @@ ti_start_locked(ifp) sc = ifp->if_softc; - prodidx = CSR_READ_4(sc, TI_MB_SENDPROD_IDX); + prodidx = sc->ti_tx_saved_prodidx; while (sc->ti_cdata.ti_tx_chain[prodidx] == NULL) { IF_DEQUEUE(&ifp->if_snd, m_head); @@ -3146,6 +3147,7 @@ ti_start_locked(ifp) } /* Transmit */ + sc->ti_tx_saved_prodidx = prodidx; CSR_WRITE_4(sc, TI_MB_SENDPROD_IDX, prodidx); /* diff --git a/sys/dev/ti/if_tireg.h b/sys/dev/ti/if_tireg.h index 2fb441e..97f7077 100644 --- a/sys/dev/ti/if_tireg.h +++ b/sys/dev/ti/if_tireg.h @@ -1009,6 +1009,7 @@ struct ti_softc { #define ti_ev_prodidx ti_rdata->ti_ev_prodidx_r #define ti_return_prodidx ti_rdata->ti_return_prodidx_r #define ti_tx_considx ti_rdata->ti_tx_considx_r + u_int16_t ti_tx_saved_prodidx; u_int16_t ti_tx_saved_considx; u_int16_t ti_rx_saved_considx; u_int16_t ti_ev_saved_considx; |