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