From nobody Sat Nov 22 14:30:59 2025 X-Original-To: dev-commits-src-main@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 4dDDz75LZgz6HDV3 for ; Sat, 22 Nov 2025 14:30:59 +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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dDDz71WWXz40kG for ; Sat, 22 Nov 2025 14:30:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763821859; 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=ATK9UpaOCZfhdJEYJcmAmaiOfYhCVGhT9V/qYLJAOjA=; b=DZ8A2ncEClxtUJtqyHOxkTA76tn1mWvFAVLjFOks2a8bhd2+GebAsSqJiRAaWH4DrIpUV7 sxkCr6SrBrN2pYcNfQxYioOQ6Ext9Qvf9jdM1qNvksP3Yysbq8hN2VM/+6S0BiLDcM7dwM TFAMHH2kb6aSzZGjjFB+4FAD4F3ADKEeQrp26tL+lINJZmg3CusBLKPVli7IzcAYkFfd3H tUN3WskzzqJRAhqUGW3UM9zE5EfMMjCmfvhh+CCsF8DRj1XJ1OLH05gO+DQc+8Q9KiBIVG ZABtS8vb2Mg4go8thZr5VG5vZFPou5TKYdeAEAtp8f+cYRoxGAKeLDxxVLcI8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763821859; 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=ATK9UpaOCZfhdJEYJcmAmaiOfYhCVGhT9V/qYLJAOjA=; b=LJGGLpMx03cc3XSC6sqEuuBrPj8c1E2ahx5XEkyXezDhBCQdGkYtUvN6urkddifzQhd80I A1VOVy0P21Thp1KmKDdqlkhXI8H2KKSm6KcQIZYnIPvM0Qv3W8BjvDtJHKecfgRStbsMH+ v/utTMuEHqk9Z72tsQfEwEFMsDDboml3AuAA4xcZJjSiExnKmNmLMg0YK1S9hVtGC/ohwH Bzvd7Mq740l19n4+dWr5IwOB5XnRIL29YtS5aMRt5JQx+w5pwQZCeMYFic8EZu6I7Se4zL 7m6P/dE84YyIeh6oecrqkZvt0MIUoMIeQnArEs1A/kqpC/3yV/hr3jGADfwk4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1763821859; a=rsa-sha256; cv=none; b=t6N7YiZKjlcQmpf+qWZDW4AUcIc9bXAkrpzOqIQpPCBnYJGwTGt4ivubOX3ez3lSNwhYpK a3KRG7Ur08vzsrBy0pyiCdTXqp8vyAVtqe/8y2ivsVQP6kP++IKwrmhnSMKZ+If3XH7NXy LuClanfVG2OuDOfW1hBdh2mlty1tGV/Dk9cIupziC/Pca6yfSZB+6lyyec/i0KOP26qegM pFxbhd002LjYZcCL9M/dd7na6m92IUnNkm8axQLtgFxdU8Q8IafC953CNgHtMksgQKFHrC px20Evu4Pxv3mMb6xE7AL3gD9AbOyRKBaNkDzghTupA4LkZ84uUO8pvJh7W7tg== 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 4dDDz714JZz128V for ; Sat, 22 Nov 2025 14:30:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3048c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 22 Nov 2025 14:30:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Gallatin Subject: git: e10e0c63f0e4 - main - vmxnet3: use newly exposed RSS hash key API rather than ad-hoc hashing List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gallatin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e10e0c63f0e40043c589e00cdeef6c5574c72858 Auto-Submitted: auto-generated Date: Sat, 22 Nov 2025 14:30:59 +0000 Message-Id: <6921c923.3048c.525c15e@gitrepo.freebsd.org> The branch main has been updated by gallatin: URL: https://cgit.FreeBSD.org/src/commit/?id=e10e0c63f0e40043c589e00cdeef6c5574c72858 commit e10e0c63f0e40043c589e00cdeef6c5574c72858 Author: Andrew Gallatin AuthorDate: 2025-11-22 14:29:34 +0000 Commit: Andrew Gallatin CommitDate: 2025-11-22 14:29:34 +0000 vmxnet3: use newly exposed RSS hash key API rather than ad-hoc hashing Differential Revision: https://reviews.freebsd.org/D53098 Reviewed by: tuexen Sponsored by: Netflix --- sys/dev/vmware/vmxnet3/if_vmx.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index 1a314ca6660e..c3706ed24ff5 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -46,9 +46,7 @@ #include #include #include -#ifdef RSS #include -#endif #include #include @@ -1141,18 +1139,6 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc) static void vmxnet3_reinit_rss_shared_data(struct vmxnet3_softc *sc) { - /* - * Use the same key as the Linux driver until FreeBSD can do - * RSS (presumably Toeplitz) in software. - */ - static const uint8_t rss_key[UPT1_RSS_MAX_KEY_SIZE] = { - 0x3b, 0x56, 0xd1, 0x56, 0x13, 0x4a, 0xe7, 0xac, - 0xe8, 0x79, 0x09, 0x75, 0xe8, 0x65, 0x79, 0x28, - 0x35, 0x12, 0xb9, 0x56, 0x7c, 0x76, 0x4b, 0x70, - 0xd8, 0x56, 0xa3, 0x18, 0x9b, 0x0a, 0xee, 0xf3, - 0x96, 0xa6, 0x9f, 0x8f, 0x9e, 0x8c, 0x90, 0xc9, - }; - if_softc_ctx_t scctx; struct vmxnet3_rss_shared *rss; #ifdef RSS @@ -1169,16 +1155,18 @@ vmxnet3_reinit_rss_shared_data(struct vmxnet3_softc *sc) rss->hash_func = UPT1_RSS_HASH_FUNC_TOEPLITZ; rss->hash_key_size = UPT1_RSS_MAX_KEY_SIZE; rss->ind_table_size = UPT1_RSS_MAX_IND_TABLE_SIZE; -#ifdef RSS /* - * If the software RSS is configured to anything else other than - * Toeplitz, then just do Toeplitz in "hardware" for the sake of - * the packet distribution, but report the hash as opaque to - * disengage from the software RSS. + * Always use the kernel RSS key for consistent hashing. + * If software RSS is configured to Toeplitz and RSS CPU steering + * is available, use the RSS indirection table. Otherwise use + * simple round-robin but still report hash as opaque to disengage + * from software RSS when CPU steering is not available. */ + rss_getkey(rss->hash_key); + +#ifdef RSS rss_algo = rss_gethashalgo(); if (rss_algo == RSS_HASH_TOEPLITZ) { - rss_getkey(rss->hash_key); for (i = 0; i < UPT1_RSS_MAX_IND_TABLE_SIZE; i++) { rss->ind_table[i] = rss_get_indirection_to_bucket(i) % scctx->isc_nrxqsets; @@ -1187,7 +1175,6 @@ vmxnet3_reinit_rss_shared_data(struct vmxnet3_softc *sc) } else #endif { - memcpy(rss->hash_key, rss_key, UPT1_RSS_MAX_KEY_SIZE); for (i = 0; i < UPT1_RSS_MAX_IND_TABLE_SIZE; i++) rss->ind_table[i] = i % scctx->isc_nrxqsets; sc->vmx_flags &= ~VMXNET3_FLAG_SOFT_RSS;