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:
parent
71efe21ca1
commit
ca8d3fdee6
@ -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);
|
||||
|
@ -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"));
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user