git: de1efca8fca4 - stable/15 - ixgbe: Use the common RSS key without options RSS
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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++)