From nobody Thu Oct 29 06:49:01 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 4jFZZj55fCz6xvjc for ; Thu, 29 Oct 2026 06:49:01 +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 4jFZZj1Rbdz3RBp for ; Thu, 29 Oct 2026 06:49:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793256541; 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=nfClscvbxuEIiFe0/6/zcbnbjN+Q6E2nccRLplXH3Q4=; b=M4YEurpGA/LkVqU7AnhBut5fNOvj9H2ZNsTN5V7Wu/kTqB1c3ER0Djp1dn7Stvq6kkRK07 VOTCXj+utPBQfU4n0uerZpJgAyHBwOA56Ll9jJgUwBgi+88z/IOTGoJ+ggZN/YO2/ve/tv X2eYIkim9RwMl094Y0hcVagBlCaCmHLWPOhHPLH3gLVC0jE1Ua6up94U59gOQn/qOdA5Vr eHWQBikmsoxUs6PaDlFYbou5BLRrvJMUXn/B18i0Zer0VlWsHZaBPyIzwMY5XnaoZHA10j 5C6IwFj1VKBgT2hE8AUcf93C51rXse6ej9pmP2Mmf/L3hR//tRLMmiEE6FXJLQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793256541; b=hluvZBpRHJsMlmkLiwWny3ioo33r5D9f7bMhbKTf1Oe0XHtuy5qN8uSFbqlD1crie09bi+ 98Fy/Idc3wgreR5CYB4Mm2gg849rMol+nHCeAfhmADCmuK6O+nZo4txifI7KRgK72MCoJm /Kb9aivQuHj12nJPD6TD49WmMEa98IBL0CtAZnS3v2stmxgyWIcm+Qf58pcGX5RdAslgoM vqeZ5reaXZtmVF/u0591fhJglMVf/4V5CcbuPrCOlwfICuRwetxupuZ8PYhgliUcA/EaRI kOn1WhugVjAh0gGBAgpGiOi1P4ZRcyb1Ug5+MDgHJXEE7/N3z2H2Pv61dDM8Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793256541; 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=nfClscvbxuEIiFe0/6/zcbnbjN+Q6E2nccRLplXH3Q4=; b=dCJOY09p4AmONLjYe/6L71Z9AZegX7VEBXVwc0/W1LtzmCBMcwMYu2aAx2XoazHPDSDPi4 Hggy0FnXws0yrR88WduEdMwyvwdTXTe85E4XwlRzKMScpy6NpnWC3MNf5Kvn1sAGU59Qom 0GHGVnfzeeCC3biZiygLBUyy7Xslgfs8f55lDxoL49/QPe4VbPW09eXHURgzSGInDzWSgw NE31WBqBXK4DQsJAqvLxzgiZSx84vf8/BTmlGz9cbnYpprGrXgApbdx5uQd8zBK8iJlRzy GrBYe97qiyzuUDs37VcZcwe+XutR+MRhupT6blWr6mh1UwmOjrm3WSrSvhIatA== 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 4jFZZj0S3TzRqv for ; Thu, 29 Oct 2026 06:49:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e3bc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 06:49:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 99b41b3d8de8 - stable/15 - mlx4en: Use the common RSS key for programming and queries 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 99b41b3d8de855cb46f53cf2dcf3388f87430f27 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 06:49:01 +0000 Message-Id: <6ae2ec5d.3e3bc.661a42df@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=99b41b3d8de855cb46f53cf2dcf3388f87430f27 commit 99b41b3d8de855cb46f53cf2dcf3388f87430f27 Author: Kevin Bowling AuthorDate: 2026-09-18 08:29:19 +0000 Commit: Kevin Bowling CommitDate: 2026-10-29 06:46:57 +0000 mlx4en: Use the common RSS key for programming and queries Replace the private fixed key with rss_getkey(). Copy the common byte stream directly into the RSS queue-pair context and use the same helper for SIOCGIFRSSKEY, so hardware programming and hn's query agree. Change the helper to fill caller-owned storage instead of returning a pointer to a static key. Check the fixed hardware and ioctl buffer sizes at compile time. Leave RSS masks and queue steering unchanged. Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D59798 (cherry picked from commit 1ad999a1c7e0efd4fd65df634a4c108d593d4027) --- sys/dev/mlx4/mlx4_en/en.h | 2 +- sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c | 10 ++++------ sys/dev/mlx4/mlx4_en/mlx4_en_rx.c | 30 +++++++----------------------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/sys/dev/mlx4/mlx4_en/en.h b/sys/dev/mlx4/mlx4_en/en.h index dbe29f1d24ec..88a38d68e77d 100644 --- a/sys/dev/mlx4/mlx4_en/en.h +++ b/sys/dev/mlx4/mlx4_en/en.h @@ -845,7 +845,7 @@ int mlx4_en_map_buffer(struct mlx4_buf *buf); void mlx4_en_unmap_buffer(struct mlx4_buf *buf); void mlx4_en_calc_rx_buf(if_t dev); -const u32 *mlx4_en_get_rss_key(struct mlx4_en_priv *priv, u16 *keylen); +void mlx4_en_get_rss_key(void *key); u8 mlx4_en_get_rss_mask(struct mlx4_en_priv *priv); int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv); void mlx4_en_release_rss_steer(struct mlx4_en_priv *priv); diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c index ac4bfd1b1a14..6bab5d25cbc6 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c @@ -1953,7 +1953,6 @@ static int mlx4_en_ioctl(if_t dev, u_long command, caddr_t data) int error; int mask; struct ifrsskey *ifrk; - const u32 *key; struct ifrsshash *ifrh; u8 rss_mask; @@ -2092,12 +2091,11 @@ out: case SIOCGIFRSSKEY: ifrk = (struct ifrsskey *)data; ifrk->ifrk_func = RSS_FUNC_TOEPLITZ; + ifrk->ifrk_keylen = MLX4_EN_RSS_KEY_SIZE; + _Static_assert(sizeof(ifrk->ifrk_key) >= MLX4_EN_RSS_KEY_SIZE, + "RSS query buffer too small"); mutex_lock(&mdev->state_lock); - key = mlx4_en_get_rss_key(priv, &ifrk->ifrk_keylen); - if (ifrk->ifrk_keylen > RSS_KEYLEN) - error = EINVAL; - else - memcpy(ifrk->ifrk_key, key, ifrk->ifrk_keylen); + mlx4_en_get_rss_key(ifrk->ifrk_key); mutex_unlock(&mdev->state_lock); break; diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c index 5baae707413d..60a530947ca0 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c @@ -43,6 +43,7 @@ #endif #include "en.h" +#include #if (MLX4_EN_MAX_RX_SEGS == 1) static void mlx4_en_init_rx_desc(struct mlx4_en_priv *priv, @@ -993,26 +994,12 @@ void mlx4_en_destroy_drop_qp(struct mlx4_en_priv *priv) mlx4_qp_release_range(priv->mdev->dev, qpn, 1); } -const u32 * -mlx4_en_get_rss_key(struct mlx4_en_priv *priv __unused, - u16 *keylen) +void +mlx4_en_get_rss_key(void *key) { - static const u32 rsskey[10] = { - cpu_to_be32(0xD181C62C), - cpu_to_be32(0xF7F4DB5B), - cpu_to_be32(0x1983A2FC), - cpu_to_be32(0x943E1ADB), - cpu_to_be32(0xD9389E6B), - cpu_to_be32(0xD1039C2C), - cpu_to_be32(0xA74499AD), - cpu_to_be32(0x593D56D9), - cpu_to_be32(0xF3253C06), - cpu_to_be32(0x2ADC1FFC) - }; - - if (keylen != NULL) - *keylen = sizeof(rsskey); - return (rsskey); + _Static_assert(MLX4_EN_RSS_KEY_SIZE == RSS_KEYSIZE, + "RSS key size mismatch"); + rss_getkey(key); } u8 mlx4_en_get_rss_mask(struct mlx4_en_priv *priv) @@ -1032,7 +1019,6 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv) struct mlx4_en_rss_map *rss_map = &priv->rss_map; struct mlx4_qp_context context; struct mlx4_rss_context *rss_context; - const u32 *key; int rss_rings; void *ptr; int i; @@ -1085,9 +1071,7 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv) rss_context->base_qpn_udp = rss_context->default_qpn; rss_context->flags = mlx4_en_get_rss_mask(priv); rss_context->hash_fn = MLX4_RSS_HASH_TOP; - key = mlx4_en_get_rss_key(priv, NULL); - for (i = 0; i < 10; i++) - rss_context->rss_key[i] = key[i]; + mlx4_en_get_rss_key(rss_context->rss_key); err = mlx4_qp_to_ready(mdev->dev, &priv->res.mtt, &context, &rss_map->indir_qp, &rss_map->indir_state);