svn commit: r342454 - stable/11/sys/dev/sfxge

Andrew Rybchenko arybchik at FreeBSD.org
Tue Dec 25 07:38:48 UTC 2018


Author: arybchik
Date: Tue Dec 25 07:38:46 2018
New Revision: 342454
URL: https://svnweb.freebsd.org/changeset/base/342454

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/11/sys/dev/sfxge/sfxge.c
  stable/11/sys/dev/sfxge/sfxge_ev.c
  stable/11/sys/dev/sfxge/sfxge_tx.c
  stable/11/sys/dev/sfxge/sfxge_tx.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/sfxge/sfxge.c
==============================================================================
--- stable/11/sys/dev/sfxge/sfxge.c	Tue Dec 25 07:37:42 2018	(r342453)
+++ stable/11/sys/dev/sfxge/sfxge.c	Tue Dec 25 07:38:46 2018	(r342454)
@@ -149,8 +149,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;
 
@@ -166,12 +166,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,
@@ -203,7 +203,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/11/sys/dev/sfxge/sfxge_ev.c
==============================================================================
--- stable/11/sys/dev/sfxge/sfxge_ev.c	Tue Dec 25 07:37:42 2018	(r342453)
+++ stable/11/sys/dev/sfxge/sfxge_ev.c	Tue Dec 25 07:38:46 2018	(r342454)
@@ -267,9 +267,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/11/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- stable/11/sys/dev/sfxge/sfxge_tx.c	Tue Dec 25 07:37:42 2018	(r342453)
+++ stable/11/sys/dev/sfxge/sfxge_tx.c	Tue Dec 25 07:38:46 2018	(r342454)
@@ -1970,7 +1970,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) ||
@@ -1999,9 +1999,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/11/sys/dev/sfxge/sfxge_tx.h
==============================================================================
--- stable/11/sys/dev/sfxge/sfxge_tx.h	Tue Dec 25 07:37:42 2018	(r342453)
+++ stable/11/sys/dev/sfxge/sfxge_tx.h	Tue Dec 25 07:38:46 2018	(r342454)
@@ -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-all mailing list