git: eae583d6c280 - stable/15 - qlxgbe: Derive the mailbox RSS key from the common key
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 29 Oct 2026 06:49:04 UTC
The branch stable/15 has been updated by kbowling:
URL: https://cgit.FreeBSD.org/src/commit/?id=eae583d6c2809e45ee456c7067b6049a2544bbb9
commit eae583d6c2809e45ee456c7067b6049a2544bbb9
Author: Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2026-09-18 08:29:21 +0000
Commit: Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-10-29 06:47:29 +0000
qlxgbe: Derive the mailbox RSS key from the common key
Replace the embedded key with rss_getkey(), retaining the firmware's
reversed 64-bit word-pair order and low-word-first layout within each
pair. The common default produces the same mailbox key as the existing
constants, while configured common keys no longer get ignored.
Leave the RSS enable flags, hash types, and indirection policy unchanged.
Reviewed by: gallatin
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D59801
(cherry picked from commit 30fdef26de87516dbdd1dd5e3031a57ba8759437)
---
sys/dev/qlxgbe/ql_hw.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/sys/dev/qlxgbe/ql_hw.c b/sys/dev/qlxgbe/ql_hw.c
index 92044822e99f..e5c4a611670f 100644
--- a/sys/dev/qlxgbe/ql_hw.c
+++ b/sys/dev/qlxgbe/ql_hw.c
@@ -35,6 +35,7 @@
#include <sys/cdefs.h>
#include "ql_os.h"
+#include <net/rss_config.h>
#include "ql_hw.h"
#include "ql_def.h"
#include "ql_inline.h"
@@ -1612,14 +1613,10 @@ qla_config_intr_cntxt(qla_host_t *ha, uint32_t start_idx, uint32_t num_intrs,
* Name: qla_config_rss
* Function: Configure RSS for the context/interface.
*/
-static const uint64_t rss_key[] = { 0xbeac01fa6a42b73bULL,
- 0x8030f20c77cb2da3ULL,
- 0xae7b30b4d0ca2bcbULL, 0x43a38fb04167253dULL,
- 0x255b0ec26d5a56daULL };
-
static int
qla_config_rss(qla_host_t *ha, uint16_t cntxt_id)
{
+ uint8_t rss_key[RSS_KEYSIZE];
q80_config_rss_t *c_rss;
q80_config_rss_rsp_t *c_rss_rsp;
uint32_t err, i;
@@ -1648,8 +1645,16 @@ qla_config_rss(qla_host_t *ha, uint16_t cntxt_id)
c_rss->cntxt_id = cntxt_id;
- for (i = 0; i < 5; i++) {
- c_rss->rss_key[i] = rss_key[i];
+ _Static_assert(sizeof(c_rss->rss_key) == RSS_KEYSIZE,
+ "RSS key size mismatch");
+ rss_getkey(rss_key);
+ /* Reverse the word pairs, retaining low-word-first mailbox ordering. */
+ for (i = 0; i < nitems(c_rss->rss_key); i++) {
+ const uint8_t *key = rss_key + sizeof(rss_key) -
+ (i + 1) * sizeof(uint64_t);
+
+ c_rss->rss_key[i] = (uint64_t)be32dec(key + sizeof(uint32_t))
+ << 32 | be32dec(key);
}
if (qla_mbx_cmd(ha, (uint32_t *)c_rss,