From nobody Fri Oct 30 18:14:43 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4jGTlS2SmCz6xK2y for ; Fri, 30 Oct 2026 18:14:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jGTlS0Ln9z4q6S for ; Fri, 30 Oct 2026 18:14:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793384084; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QvAKoWcjcmdcwrPH2CHOA4m2Z7JcyxPWGTWvPw89whM=; b=xRj+N/1PeXUcvnwW8BSeSP9AO4mc3ktU7I3YaXVDvR8WC2q5c8UY6dsFB09+xt180fXKxN zc92iDlgGrZnJjCSPkAjvWqSNuK8Nj+z4y5VxFbwvR/0LEL9dLtbKyBiqT0g72XHB7yz/N wy3Rz0L2uxzXfDDZdG7NOu4Y2FxJNEIpvOUyxHna0Cpsz7basKdmR/gsk8D/HzL/vlkUyG oKk2LhXq5LhOa6ZDWvWG+gxJUJXtqkzbl4/vtlmtCU6U2DCRynyKUWwFTc2kEAaoHSFqwq vwpyKv6s7Q95CHz//WxKeW7AR03irbBFxXpwBA+k96kS6aS7J9MjO+4vYqqL2w== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793384084; b=AXxWOmdlZr1mw7s0Mltzbzo72KgoFtoSmB3VpolmD/P7x8gZ0l7452OyvxKrtpVAssRIiV o3d7qmf1Rlogg9I3dSrtri5JeaUqO8Dj7oij1N+bNmYdvIMN9L7WN3AP4bYMU/VOVnsi/6 no5hwqRSulALV39bJ8yHVe2zDeFCecT28/adf628QExMJnfdepgb9AZpjnyC4Zv08gVitt dG+kSphxXzKH/4wWpMXuxyZ0Pt+VFXkJdL5hCq/GVINhRytZ9cH6AtDmXZkDCuUoxH9CNK gcCyye1xmXkAU8+kvgK6u/ZYWoCz3o9NA2a561yzGImz0FuqfmFPmj4YI69HKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793384084; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QvAKoWcjcmdcwrPH2CHOA4m2Z7JcyxPWGTWvPw89whM=; b=P/IZ5G4FnYrD62+uzUuBoUIsotGJgnlVkPExnW4CiVmAkPSuSkbOPCl28mU9R0NtzwS4f7 wNjCIp3TV3U/Fase3QgqCX1FNALBNkyj4J8b0d3xtX7nBF8/txiAdXfkM3bTl9QXbgX2Rq gtl0tO01ciWl4YB0NDvyjOwBvC4aHJjQiJ/caRLPDiTBJux1Gu1FVPhAdM1YeNwkXh9Hf3 q7Nt2xk619XgpzZzDa2rnop94+Fw2RmpR0EHTiKN+WRvZRhj6SxOKRtrb4oLrz+5Qg8C6B Wf1qMprL0FEcTF7JS82VvG99w6Xxi4S/iBC7478Ju9KnZiFvmQ+uOiWdwgkscA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jGTlR6dTvzffL for ; Fri, 30 Oct 2026 18:14:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4411e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 30 Oct 2026 18:14:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 86bdf7a4aec5 - main - e1000: Honor the common RSS hash-field policy List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 86bdf7a4aec5223b016791ffc6bffb8a51865670 Auto-Submitted: auto-generated Date: Fri, 30 Oct 2026 18:14:43 +0000 Message-Id: <6ae4de93.4411e.1379a823@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=86bdf7a4aec5223b016791ffc6bffb8a51865670 commit 86bdf7a4aec5223b016791ffc6bffb8a51865670 Author: Kevin Bowling AuthorDate: 2026-10-30 18:10:06 +0000 Commit: Kevin Bowling CommitDate: 2026-10-30 18:13:47 +0000 e1000: Honor the common RSS hash-field policy Use rss_gethashconfig() to select MRQC hash fields in both the em and igb multiqueue paths, including kernels built without options RSS. igb previously enabled UDP four-tuple hashing unconditionally, while the stack defaults to hashing only the addresses unless net.inet.rss.udp_4tuple is enabled. Honor that setting and include the configured IPv6 extension-header address hash. Limit the 82574 mapping to its supported fields. Its TCP/IPv6 selector is bit 18, named IPV6_TCP_EX in the shared definitions; bit 21 and the UDP selectors are reserved. Its default field selection is unchanged. MFC after: 3 days Sponsored by: BBOX.io --- sys/dev/e1000/if_em.c | 54 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 5a44956f2a88..e885e5cfea90 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -5227,6 +5227,7 @@ em_initialize_rss_mapping(struct e1000_softc *sc) { uint8_t rss_key[4 * RSSKEYLEN]; uint32_t reta = 0; + uint32_t rss_hash_config, mrqc; struct e1000_hw *hw = &sc->hw; int i; @@ -5257,12 +5258,22 @@ em_initialize_rss_mapping(struct e1000_softc *sc) for (i = 0; i < 32; ++i) E1000_WRITE_REG(hw, E1000_RETA(i), reta); - E1000_WRITE_REG(hw, E1000_MRQC, E1000_MRQC_RSS_ENABLE_2Q | - E1000_MRQC_RSS_FIELD_IPV4_TCP | - E1000_MRQC_RSS_FIELD_IPV4 | - E1000_MRQC_RSS_FIELD_IPV6_TCP_EX | - E1000_MRQC_RSS_FIELD_IPV6_EX | - E1000_MRQC_RSS_FIELD_IPV6); + /* Configure the hash fields supported by the 82574. */ + rss_hash_config = rss_gethashconfig(); + mrqc = E1000_MRQC_RSS_ENABLE_2Q; + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV4) + mrqc |= E1000_MRQC_RSS_FIELD_IPV4; + if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV4) + mrqc |= E1000_MRQC_RSS_FIELD_IPV4_TCP; + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6; + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6_EX) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_EX; + /* On 82574, bit 18 selects TCP/IPv6; bit 21 is reserved. */ + if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_TCP_EX; + + E1000_WRITE_REG(hw, E1000_MRQC, mrqc); } static void @@ -5273,6 +5284,7 @@ igb_initialize_rss_mapping(struct e1000_softc *sc) int queue_id; u32 reta; u32 rss_key[10], mrqc, shift = 0; + u32 rss_hash_config; /* XXX? */ if (hw->mac.type == e1000_82575) @@ -5342,16 +5354,28 @@ igb_initialize_rss_mapping(struct e1000_softc *sc) E1000_WRITE_REG_ARRAY(hw, E1000_RSSRK(0), i, rss_key[i]); /* - * Configure the RSS fields to hash upon. + * Match the stack's hash fields, including its UDP 4-tuple policy, + * even when the kernel is built without options RSS. */ - mrqc |= (E1000_MRQC_RSS_FIELD_IPV4 | - E1000_MRQC_RSS_FIELD_IPV4_TCP); - mrqc |= (E1000_MRQC_RSS_FIELD_IPV6 | - E1000_MRQC_RSS_FIELD_IPV6_TCP); - mrqc |=( E1000_MRQC_RSS_FIELD_IPV4_UDP | - E1000_MRQC_RSS_FIELD_IPV6_UDP); - mrqc |=( E1000_MRQC_RSS_FIELD_IPV6_UDP_EX | - E1000_MRQC_RSS_FIELD_IPV6_TCP_EX); + rss_hash_config = rss_gethashconfig(); + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV4) + mrqc |= E1000_MRQC_RSS_FIELD_IPV4; + if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV4) + mrqc |= E1000_MRQC_RSS_FIELD_IPV4_TCP; + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6; + if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_TCP; + if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6_EX) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_EX; + if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6_EX) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_TCP_EX; + if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV4) + mrqc |= E1000_MRQC_RSS_FIELD_IPV4_UDP; + if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_UDP; + if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6_EX) + mrqc |= E1000_MRQC_RSS_FIELD_IPV6_UDP_EX; E1000_WRITE_REG(hw, E1000_MRQC, mrqc); }