git: 709d7cf3039f - main - ixgbe: Use the common RSS key without options RSS

From: Kevin Bowling <kbowling_at_FreeBSD.org>
Date: Fri, 18 Sep 2026 22:38:05 UTC
The branch main has been updated by kbowling:

URL: https://cgit.FreeBSD.org/src/commit/?id=709d7cf3039f648e23260a35c1094b15b4d4593b

commit 709d7cf3039f648e23260a35c1094b15b4d4593b
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2026-09-18 07:43:37 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-09-18 22:35:53 +0000

    ixgbe: Use the common RSS key without options RSS
    
    Use rss_getkey() for PF and VF RSS programming even when options RSS is
    not configured.  The common key is available independently of RSS queue
    placement and is also used by software hashing.  Generating a private key
    on each initialization defeats that agreement and changes receive hashes
    across resets.
    
    Leave hash-field selection and indirection-table placement unchanged.
    82599 and X540 VFs retain their PF-owned RSS configuration.
    
    Reviewed by:    gallatin
    MFC after:      2 weeks
    Sponsored by:   BBOX.io
    Differential Revision:  https://reviews.freebsd.org/D59789
---
 sys/dev/ixgbe/if_ix.c  | 8 +-------
 sys/dev/ixgbe/if_ixv.c | 8 +-------
 2 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
index 9aca44c6d8fa..74ccfb7f629f 100644
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -687,13 +687,7 @@ ixgbe_initialize_rss_mapping(struct ixgbe_softc *sc)
 	u32 pfmrqc;
 #endif
 
-	if (sc->feat_en & IXGBE_FEATURE_RSS) {
-		/* Fetch the configured RSS key */
-		rss_getkey((uint8_t *)&rss_key);
-	} else {
-		/* set up random bits */
-		arc4rand(&rss_key, sizeof(rss_key), 0);
-	}
+	rss_getkey((uint8_t *)rss_key);
 
 	/* Set multiplier for RETA setup and table size based on MAC */
 	index_mult = 0x1;
diff --git a/sys/dev/ixgbe/if_ixv.c b/sys/dev/ixgbe/if_ixv.c
index b2c192caaae1..378a0c18cbf6 100644
--- a/sys/dev/ixgbe/if_ixv.c
+++ b/sys/dev/ixgbe/if_ixv.c
@@ -1788,13 +1788,7 @@ ixv_initialize_rss_mapping(struct ixgbe_softc *sc)
 	int i, j;
 	u32 rss_hash_config;
 
-	if (sc->feat_en & IXGBE_FEATURE_RSS) {
-		/* Fetch the configured RSS key */
-		rss_getkey((uint8_t *)&rss_key);
-	} else {
-		/* set up random bits */
-		arc4rand(&rss_key, sizeof(rss_key), 0);
-	}
+	rss_getkey((uint8_t *)rss_key);
 
 	/* Now fill out hash function seeds */
 	for (i = 0; i < 10; i++)