sfxge(4): do not limit driver RSS table to RSS channels max
Specification of entire RSS table in the driver allows to spread traffic more equally across CPUs/RSS channels if number of RSS channels is not power of 2. Reviewed by: philip Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D8910
This commit is contained in:
parent
781487cfc6
commit
44fcad033f
@ -301,7 +301,7 @@ struct sfxge_softc {
|
||||
unsigned int max_rss_channels;
|
||||
uma_zone_t rxq_cache;
|
||||
struct sfxge_rxq *rxq[SFXGE_RX_SCALE_MAX];
|
||||
unsigned int rx_indir_table[SFXGE_RX_SCALE_MAX];
|
||||
unsigned int rx_indir_table[EFX_RSS_TBL_SIZE];
|
||||
|
||||
struct sfxge_txq *txq[SFXGE_TXQ_NTYPES + SFXGE_RX_SCALE_MAX];
|
||||
|
||||
|
@ -1128,7 +1128,7 @@ sfxge_rx_start(struct sfxge_softc *sc)
|
||||
/*
|
||||
* Set up the scale table. Enable all hash types and hash insertion.
|
||||
*/
|
||||
for (index = 0; index < SFXGE_RX_SCALE_MAX; index++)
|
||||
for (index = 0; index < nitems(sc->rx_indir_table); index++)
|
||||
#ifdef RSS
|
||||
sc->rx_indir_table[index] =
|
||||
rss_get_indirection_to_bucket(index) % sc->rxq_count;
|
||||
@ -1136,7 +1136,7 @@ sfxge_rx_start(struct sfxge_softc *sc)
|
||||
sc->rx_indir_table[index] = index % sc->rxq_count;
|
||||
#endif
|
||||
if ((rc = efx_rx_scale_tbl_set(sc->enp, sc->rx_indir_table,
|
||||
SFXGE_RX_SCALE_MAX)) != 0)
|
||||
nitems(sc->rx_indir_table))) != 0)
|
||||
goto fail;
|
||||
(void)efx_rx_scale_mode_set(sc->enp, EFX_RX_HASHALG_TOEPLITZ,
|
||||
(1 << EFX_RX_HASH_IPV4) | (1 << EFX_RX_HASH_TCPIPV4) |
|
||||
|
@ -838,8 +838,9 @@ sfxge_if_transmit(struct ifnet *ifp, struct mbuf *m)
|
||||
/* check if flowid is set */
|
||||
if (M_HASHTYPE_GET(m) != M_HASHTYPE_NONE) {
|
||||
uint32_t hash = m->m_pkthdr.flowid;
|
||||
uint32_t idx = hash % nitems(sc->rx_indir_table);
|
||||
|
||||
index = sc->rx_indir_table[hash % SFXGE_RX_SCALE_MAX];
|
||||
index = sc->rx_indir_table[idx];
|
||||
}
|
||||
#endif
|
||||
#if SFXGE_TX_PARSE_EARLY
|
||||
|
Loading…
x
Reference in New Issue
Block a user