svn commit: r342527 - stable/10/sys/dev/sfxge
Andrew Rybchenko
arybchik at FreeBSD.org
Wed Dec 26 10:38:52 UTC 2018
Author: arybchik
Date: Wed Dec 26 10:38:51 2018
New Revision: 342527
URL: https://svnweb.freebsd.org/changeset/base/342527
Log:
MFC r341784
sfxge(4): prepare the number of Tx queues on event queue 0 to become
variable
The number of Tx queues on event queue 0 can depend on the NIC family
type, and this property will be leveraged by future patches.
This patch prepares the code for this change.
Submitted by: Ivan Malov <Ivan.Malov at oktetlabs.ru>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18389
Modified:
stable/10/sys/dev/sfxge/sfxge.c
stable/10/sys/dev/sfxge/sfxge_ev.c
stable/10/sys/dev/sfxge/sfxge_tx.c
stable/10/sys/dev/sfxge/sfxge_tx.h
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/sfxge/sfxge.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge.c Wed Dec 26 10:38:12 2018 (r342526)
+++ stable/10/sys/dev/sfxge/sfxge.c Wed Dec 26 10:38:51 2018 (r342527)
@@ -134,8 +134,8 @@ sfxge_estimate_rsrc_limits(struct sfxge_softc *sc)
limits.edl_min_evq_count = 1;
limits.edl_max_evq_count = evq_max;
- limits.edl_min_txq_count = SFXGE_TXQ_NTYPES;
- limits.edl_max_txq_count = evq_max + SFXGE_TXQ_NTYPES - 1;
+ limits.edl_min_txq_count = SFXGE_EVQ0_N_TXQ(sc);
+ limits.edl_max_txq_count = evq_max + SFXGE_EVQ0_N_TXQ(sc) - 1;
limits.edl_min_rxq_count = 1;
limits.edl_max_rxq_count = evq_max;
@@ -151,12 +151,12 @@ sfxge_estimate_rsrc_limits(struct sfxge_softc *sc)
return (rc);
}
- KASSERT(txq_allocated >= SFXGE_TXQ_NTYPES,
- ("txq_allocated < SFXGE_TXQ_NTYPES"));
+ KASSERT(txq_allocated >= SFXGE_EVQ0_N_TXQ(sc),
+ ("txq_allocated < %u", SFXGE_EVQ0_N_TXQ(sc)));
sc->evq_max = MIN(evq_allocated, evq_max);
sc->evq_max = MIN(rxq_allocated, sc->evq_max);
- sc->evq_max = MIN(txq_allocated - (SFXGE_TXQ_NTYPES - 1),
+ sc->evq_max = MIN(txq_allocated - (SFXGE_EVQ0_N_TXQ(sc) - 1),
sc->evq_max);
KASSERT(sc->evq_max <= evq_max,
@@ -180,7 +180,7 @@ sfxge_set_drv_limits(struct sfxge_softc *sc)
limits.edl_min_evq_count = limits.edl_max_evq_count =
sc->intr.n_alloc;
limits.edl_min_txq_count = limits.edl_max_txq_count =
- sc->intr.n_alloc + SFXGE_TXQ_NTYPES - 1;
+ sc->intr.n_alloc + SFXGE_EVQ0_N_TXQ(sc) - 1;
limits.edl_min_rxq_count = limits.edl_max_rxq_count =
sc->intr.n_alloc;
Modified: stable/10/sys/dev/sfxge/sfxge_ev.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_ev.c Wed Dec 26 10:38:12 2018 (r342526)
+++ stable/10/sys/dev/sfxge/sfxge_ev.c Wed Dec 26 10:38:51 2018 (r342527)
@@ -262,9 +262,10 @@ sfxge_get_txq_by_label(struct sfxge_evq *evq, enum sfx
{
unsigned int index;
- KASSERT((evq->index == 0 && label < SFXGE_TXQ_NTYPES) ||
+ KASSERT((evq->index == 0 && label < SFXGE_EVQ0_N_TXQ(evq->sc)) ||
(label == SFXGE_TXQ_IP_TCP_UDP_CKSUM), ("unexpected txq label"));
- index = (evq->index == 0) ? label : (evq->index - 1 + SFXGE_TXQ_NTYPES);
+ index = (evq->index == 0) ?
+ label : (evq->index - 1 + SFXGE_EVQ0_N_TXQ(evq->sc));
return (evq->sc->txq[index]);
}
Modified: stable/10/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_tx.c Wed Dec 26 10:38:12 2018 (r342526)
+++ stable/10/sys/dev/sfxge/sfxge_tx.c Wed Dec 26 10:38:51 2018 (r342527)
@@ -1957,7 +1957,7 @@ sfxge_tx_init(struct sfxge_softc *sc)
goto fail_tx_dpl_put_max;
}
- sc->txq_count = SFXGE_TXQ_NTYPES - 1 + sc->intr.n_alloc;
+ sc->txq_count = SFXGE_EVQ0_N_TXQ(sc) - 1 + sc->intr.n_alloc;
sc->tso_fw_assisted = sfxge_tso_fw_assisted;
if ((~encp->enc_features & EFX_FEATURE_FW_ASSISTED_TSO) ||
@@ -1986,9 +1986,9 @@ sfxge_tx_init(struct sfxge_softc *sc)
goto fail2;
for (index = 0;
- index < sc->txq_count - SFXGE_TXQ_NTYPES + 1;
+ index < sc->txq_count - SFXGE_EVQ0_N_TXQ(sc) + 1;
index++) {
- if ((rc = sfxge_tx_qinit(sc, SFXGE_TXQ_NTYPES - 1 + index,
+ if ((rc = sfxge_tx_qinit(sc, SFXGE_EVQ0_N_TXQ(sc) - 1 + index,
SFXGE_TXQ_IP_TCP_UDP_CKSUM, index)) != 0)
goto fail3;
}
Modified: stable/10/sys/dev/sfxge/sfxge_tx.h
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_tx.h Wed Dec 26 10:38:12 2018 (r342526)
+++ stable/10/sys/dev/sfxge/sfxge_tx.h Wed Dec 26 10:38:51 2018 (r342527)
@@ -137,6 +137,8 @@ enum sfxge_txq_type {
SFXGE_TXQ_NTYPES
};
+#define SFXGE_EVQ0_N_TXQ(_sc) SFXGE_TXQ_NTYPES
+
#define SFXGE_TXQ_UNBLOCK_LEVEL(_entries) (EFX_TXQ_LIMIT(_entries) / 4)
#define SFXGE_TX_BATCH 64
More information about the svn-src-stable
mailing list