git: de1efca8fca4 - stable/15 - ixgbe: Use the common RSS key without options RSS

From: Kevin Bowling <kbowling_at_FreeBSD.org>
Date: Thu, 29 Oct 2026 06:43:22 UTC
The branch stable/15 has been updated by kbowling:

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

commit de1efca8fca4a4a6c526ae734bf8faf6f3578e5c
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2026-09-18 07:43:37 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-10-29 06:42:35 +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
    Sponsored by:   BBOX.io
    Differential Revision:  https://reviews.freebsd.org/D59789
    
    (cherry picked from commit 709d7cf3039f648e23260a35c1094b15b4d4593b)
---
 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 984248ee4241..518d4da52cb9 100644
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -676,13 +676,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++)