aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Bowling <kbowling@FreeBSD.org>2026-09-18 08:29:17 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2026-09-18 22:53:44 +0000
commite94de94f8d14ede98d38c9fc506ddf5c77ee9788 (patch)
tree8fa0b9d6371627ffddf0dc8adffa71f7aafe0d74
parent772994d7748287be70fe850ec9e1117d4e7b1747 (diff)
axgbe: Use the common RSS key without options RSS
Fetch the common key in the PCI iflib frontend regardless of options RSS and make the key API declaration available in both configurations. Retain the existing hash-field selection and queue-placement branches. The independent ARM frontend is unchanged. Reviewed by: gallatin MFC after: 2 weeks Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D59794
-rw-r--r--sys/dev/axgbe/if_axgbe_pci.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/dev/axgbe/if_axgbe_pci.c b/sys/dev/axgbe/if_axgbe_pci.c
index 7cf74b49e339..47a2db91821c 100644
--- a/sys/dev/axgbe/if_axgbe_pci.c
+++ b/sys/dev/axgbe/if_axgbe_pci.c
@@ -59,8 +59,8 @@
#include "opt_inet6.h"
#include "opt_rss.h"
-#ifdef RSS
#include <net/rss_config.h>
+#ifdef RSS
#include <netinet/in_rss.h>
#endif
@@ -723,13 +723,17 @@ axgbe_initialize_rss_mapping(struct xgbe_prv_data *pdata)
{
int i;
- /* Get RSS key */
#ifdef RSS
int qid;
uint32_t rss_hash_config = 0;
+#endif
+ /* Get RSS key independently of software RSS queue placement. */
+ _Static_assert(sizeof(pdata->rss_key) == RSS_KEYSIZE,
+ "RSS key size mismatch");
rss_getkey((uint8_t *)&pdata->rss_key);
+#ifdef RSS
rss_hash_config = rss_gethashconfig();
if (rss_hash_config & RSS_HASHTYPE_RSS_IPV4)
@@ -739,8 +743,6 @@ axgbe_initialize_rss_mapping(struct xgbe_prv_data *pdata)
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV4)
XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1);
#else
- arc4rand(&pdata->rss_key, ARRAY_SIZE(pdata->rss_key), 0);
-
XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, IP2TE, 1);
XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, TCP4TE, 1);
XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1);