Index: if_bfe.c =================================================================== RCS file: /usr/store/mlaier/fcvs/src/sys/dev/bfe/if_bfe.c,v retrieving revision 1.16 diff -u -r1.16 if_bfe.c --- if_bfe.c 1 Sep 2004 06:10:11 -0000 1.16 +++ if_bfe.c 6 Oct 2004 09:59:52 -0000 @@ -1357,7 +1357,7 @@ { struct bfe_softc *sc; struct mbuf *m_head = NULL; - int idx; + int idx, queued = 0; sc = ifp->if_softc; idx = sc->bfe_tx_prod; @@ -1398,17 +1398,22 @@ * to him. */ BPF_MTAP(ifp, m_head); + + queued++; } - sc->bfe_tx_prod = idx; - /* Transmit - twice due to apparent hardware bug */ - CSR_WRITE_4(sc, BFE_DMATX_PTR, idx * sizeof(struct bfe_desc)); - CSR_WRITE_4(sc, BFE_DMATX_PTR, idx * sizeof(struct bfe_desc)); + if (queued) { + sc->bfe_tx_prod = idx; + /* Transmit - twice due to apparent hardware bug */ + CSR_WRITE_4(sc, BFE_DMATX_PTR, idx * sizeof(struct bfe_desc)); + CSR_WRITE_4(sc, BFE_DMATX_PTR, idx * sizeof(struct bfe_desc)); + + /* + * Set a timeout in case the chip goes out to lunch. + */ + ifp->if_timer = 5; + } - /* - * Set a timeout in case the chip goes out to lunch. - */ - ifp->if_timer = 5; BFE_UNLOCK(sc); }