sfxge: Add evq argument to sfxge_tx_qcomplete()

It removes necessity to get evq pointer by its index in soft context.

Sponsored by:   Solarflare Communications, Inc.
Approved by:    gnn (mentor)
This commit is contained in:
arybchik 2015-01-29 19:01:09 +00:00
parent 71efe21ca1
commit ca8d3fdee6
3 changed files with 7 additions and 10 deletions

View File

@ -68,7 +68,7 @@ sfxge_ev_qcomplete(struct sfxge_evq *evq, boolean_t eop)
("txq->evq_index != index"));
if (txq->pending != txq->completed)
sfxge_tx_qcomplete(txq);
sfxge_tx_qcomplete(txq, evq);
txq = next;
} while (txq != NULL);
@ -262,7 +262,7 @@ sfxge_ev_tx(void *arg, uint32_t label, uint32_t id)
}
if (txq->pending - txq->completed >= SFXGE_TX_BATCH)
sfxge_tx_qcomplete(txq);
sfxge_tx_qcomplete(txq, evq);
done:
return (evq->tx_done >= SFXGE_EV_BATCH);

View File

@ -105,15 +105,10 @@ static int sfxge_tx_queue_tso(struct sfxge_txq *txq, struct mbuf *mbuf,
const bus_dma_segment_t *dma_seg, int n_dma_seg);
void
sfxge_tx_qcomplete(struct sfxge_txq *txq)
sfxge_tx_qcomplete(struct sfxge_txq *txq, struct sfxge_evq *evq)
{
struct sfxge_softc *sc;
struct sfxge_evq *evq;
unsigned int completed;
sc = txq->sc;
evq = sc->evq[txq->evq_index];
mtx_assert(&evq->lock, MA_OWNED);
completed = txq->completed;
@ -1147,7 +1142,7 @@ sfxge_tx_qstop(struct sfxge_softc *sc, unsigned int index)
txq->blocked = 0;
txq->pending = txq->added;
sfxge_tx_qcomplete(txq);
sfxge_tx_qcomplete(txq, evq);
KASSERT(txq->completed == txq->added,
("txq->completed != txq->added"));

View File

@ -175,13 +175,15 @@ struct sfxge_txq {
struct sfxge_txq *next;
};
struct sfxge_evq;
extern int sfxge_tx_packet_add(struct sfxge_txq *, struct mbuf *);
extern int sfxge_tx_init(struct sfxge_softc *sc);
extern void sfxge_tx_fini(struct sfxge_softc *sc);
extern int sfxge_tx_start(struct sfxge_softc *sc);
extern void sfxge_tx_stop(struct sfxge_softc *sc);
extern void sfxge_tx_qcomplete(struct sfxge_txq *txq);
extern void sfxge_tx_qcomplete(struct sfxge_txq *txq, struct sfxge_evq *evq);
extern void sfxge_tx_qflush_done(struct sfxge_txq *txq);
#ifdef SFXGE_HAVE_MQ
extern void sfxge_if_qflush(struct ifnet *ifp);