From nobody Thu Oct 29 06:35:11 2026 X-Original-To: dev-commits-src-branches@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 4jFZGl6kMYz6xtLQ for ; Thu, 29 Oct 2026 06:35:11 +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 4jFZGl4HD5z57QZ for ; Thu, 29 Oct 2026 06:35:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793255711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0FNJc+h4+bhKi6jxLbZs5q3jCJfb3a81tSd4OdnlvR0=; b=eYdEg6FCZiG3msq1fQ+ghXI0GRk0vG0zZ5IFilWLn2/BA9iYR9cXqISU7UF8ljhNV2P18O nZym4PQsT1Udj7KxvahxUHnDaZq++/nL++FkJpuTYVhyD8qRSp1e4w7cguyjlZz5BXe5d2 DR5ykU96Xs12ZlcdEIxjlh+hzdKCX+DRIGcVpIUlzFC8IUN2tNAE3NUqrb5hPUSYFvrKT0 Rv65FZI1tY88Y5Ob6bIm4tihrW0YWCpFJAbkcKXsQB6hMhZLa/BdrK/2gT8Dz44SYOr/lf sADRzH2234pVZZp6uw081euBCSZVTsMKM/vfV9To8gPYi24g16l4XqrcMcoUFA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793255711; b=Rl5WZsr7X2ucrxRLgAV71VKkWIY1L1N4+CBCfYRQIz20dItEhYM3rP5WgCaIF86Q8okU1q sHJ1bHnfLbgOn89Ivep5JRZY3Gmz7gaD0BXEXnn3Zv3SateHWvZGiZdnv0822b7tMOfLha 9KmHS1O/9pCgBA+prkVfPPROOyhrRshxbMQoAu7m+PjdTcj+6eD3pzfwR4fTRPkZ2dai+Y PTPMBYvivTaiyuIZKNHkGyYhwtysFXE9mOQSdxuQsMhLtadqo7rQeggqUIGt/rwiMD5Ey/ rAoQsEp1KmWpckA9whS68lAz/tnwTNXg/7iNVronyKQ/9xhcus/fOUF8QUkL0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793255711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0FNJc+h4+bhKi6jxLbZs5q3jCJfb3a81tSd4OdnlvR0=; b=J+Oka/6ge0oafrauHG7wnvNuZ7Wpd1SzNUVfxugBtGg3/IFUpxccSaDp6BIT5P2hcZcFDZ DraGO+IeSbD5TRLSVrH8YsNKMVQbRP/9kjJT2ssNLQRXgFeDIeDgqtZ8R8ZnU9izWnbtSd 2BgoVpmg2LmqMjZc1/jFfT4NvbbIecWO3E2HQzwGl10alIH/5MA8XEOfjuHt0W4dAUSOK3 cByzhsgZ7NxJkVTPTtuFiyidO6CpwvaXXom1YxFihoCwa4aJq6earD4cAKkFoyYulbotsW G5/P+grFuawXFEqTBlDM0uxXu9VVt5SKaXhvj0qCx4bpYoyD/rF21xdDFGFi5Q== 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 4jFZGl3ZQWzS0L for ; Thu, 29 Oct 2026 06:35:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d9be by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 06:35:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Andrew Gallatin From: Kevin Bowling Subject: git: 33a738602d52 - stable/15 - vmxnet3: use newly exposed RSS hash key API rather than ad-hoc hashing List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 33a738602d5235a9ad094717ac56a8bb5ba551d2 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 06:35:11 +0000 Message-Id: <6ae2e91f.3d9be.1b546d31@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=33a738602d5235a9ad094717ac56a8bb5ba551d2 commit 33a738602d5235a9ad094717ac56a8bb5ba551d2 Author: Andrew Gallatin AuthorDate: 2025-11-22 14:29:34 +0000 Commit: Kevin Bowling CommitDate: 2026-10-29 06:26:39 +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 (cherry picked from commit e10e0c63f0e40043c589e00cdeef6c5574c72858) --- 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 7b3b1ee051f8..3409f80a7919 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 @@ -1143,18 +1141,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 @@ -1171,16 +1157,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; @@ -1189,7 +1177,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;