Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2211191/?format=api
{ "id": 2211191, "url": "http://patchwork.ozlabs.org/api/patches/2211191/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260316072053.1241987-3-aleksandr.loktionov@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260316072053.1241987-3-aleksandr.loktionov@intel.com>", "list_archive_url": null, "date": "2026-03-16T07:20:53", "name": "[iwl-next,v5,2/2] ice: implement symmetric RSS hash configuration", "commit_ref": null, "pull_url": null, "state": "under-review", "archived": false, "hash": "1c1da501353682c5abcf131dd69102f6bf91885f", "submitter": { "id": 75597, "url": "http://patchwork.ozlabs.org/api/people/75597/?format=api", "name": "Loktionov, Aleksandr", "email": "aleksandr.loktionov@intel.com" }, "delegate": { "id": 109701, "url": "http://patchwork.ozlabs.org/api/users/109701/?format=api", "username": "anguy11", "first_name": "Anthony", "last_name": "Nguyen", "email": "anthony.l.nguyen@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260316072053.1241987-3-aleksandr.loktionov@intel.com/mbox/", "series": [ { "id": 496019, "url": "http://patchwork.ozlabs.org/api/series/496019/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=496019", "date": "2026-03-16T07:20:52", "name": "ice: implement symmetric RSS hash configuration", "version": 5, "mbox": "http://patchwork.ozlabs.org/series/496019/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2211191/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2211191/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=c6zn+qhC;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fZ62l49xsz1xqn\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Mar 2026 18:21:19 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 2BA1E40CAA;\n\tMon, 16 Mar 2026 07:21:03 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id Ad7MN-AwjJF2; Mon, 16 Mar 2026 07:21:02 +0000 (UTC)", "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 698EE40C93;\n\tMon, 16 Mar 2026 07:21:02 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists1.osuosl.org (Postfix) with ESMTP id A799B3BE\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 07:21:00 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 9868C40C92\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 07:21:00 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id gub6jkoz8i9q for <intel-wired-lan@lists.osuosl.org>;\n Mon, 16 Mar 2026 07:20:59 +0000 (UTC)", "from mgamail.intel.com (mgamail.intel.com [198.175.65.11])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 8DBEF40C80\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 07:20:59 +0000 (UTC)", "from orviesa007.jf.intel.com ([10.64.159.147])\n by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 16 Mar 2026 00:20:59 -0700", "from amlin-019-225.igk.intel.com ([10.102.19.225])\n by orviesa007.jf.intel.com with ESMTP; 16 Mar 2026 00:20:58 -0700" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 698EE40C93", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 8DBEF40C80" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1773645662;\n\tbh=qARHnqKk21MZqDhxGiWzpYM25hqDkzr2N+z5D2rSXqI=;\n\th=From:To:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=c6zn+qhCD7ycZxbzqz9nmky1eg9V3i/g15YzFh8FoCaktew0zRkH12f4MoKXj3Fck\n\t TWFp2ByzCtxu/OkM3nuwfcetQuW8T2bbZbcm1u2ZoRvI4EOXb0Ko2Z18d9Sk3HIwL3\n\t eRZvFut+iV5i4nZyElEqbM+KSk/8Gvn9JhuZE+hHfyN0VcUJkOkOR0y7N0I9O8FTl0\n\t V+pW/Ba8nRo+YmOxQuyBY2H0OGH9DZF6IwqqCzYZNovNhrxH8ko7UoJ7fBfC8/x0tI\n\t OpyHBe8x2oqoECdDVVgG0tZQM0YSWjZ6Zhlkaw5325/Z4ixVLQbF06fsu9nJ/mZ85u\n\t eomV3X47uyO6g==", "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=198.175.65.11;\n helo=mgamail.intel.com; envelope-from=aleksandr.loktionov@intel.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org 8DBEF40C80", "X-CSE-ConnectionGUID": [ "zOou7AcwTkC0nxr2KQGx+g==", "F9Y/bOmASIiN+tuDL2GDUg==" ], "X-CSE-MsgGUID": [ "cqoURgyuRpyEvtzrXcu1Zw==", "CQIHBi25TdW+cZyBomUDZA==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11730\"; a=\"84970609\"", "E=Sophos;i=\"6.23,123,1770624000\"; d=\"scan'208\";a=\"84970609\"", "E=Sophos;i=\"6.23,123,1770624000\"; d=\"scan'208\";a=\"222030152\"" ], "X-ExtLoop1": "1", "From": "Aleksandr Loktionov <aleksandr.loktionov@intel.com>", "To": "intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,\n anthony.l.nguyen@intel.com, aleksandr.loktionov@intel.com", "Date": "Mon, 16 Mar 2026 08:20:53 +0100", "Message-ID": "<20260316072053.1241987-3-aleksandr.loktionov@intel.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260316072053.1241987-1-aleksandr.loktionov@intel.com>", "References": "<20260316072053.1241987-1-aleksandr.loktionov@intel.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1773645660; x=1805181660;\n h=from:to:subject:date:message-id:in-reply-to:references:\n mime-version:content-transfer-encoding;\n bh=LFsIqutAzBuS+JuknBp9P19J4pCJ4Mbz6dWagWkuRNI=;\n b=nxS6qlSHQyAWiiO0P5z69J4BRuru0GceG0KaT2g+BB9wYlkpd0bk+SZB\n xWs+yq2HrXclTsZJyFP86wB/NbXAcNaTAYWknGJmMknfAdqs808AEX3IB\n 2Y84tYzt7tdEupiey0pPWynN3a2vQDY9VKlTYAcfMiYMT4ek7RAGCoTt/\n 3pucUQi9W8PL8YwpyeXA/j11XfEyN5EbU/FGPFiDwapn+xIDKpsDU5yYz\n GxVaYkaf79lUZk+RPd4Q2hDMrHendRmMgX1mViHyR/RPGjprAl5G1ezjI\n am82Eb5QzjV6nPQ98eL2EkxrHTJuV5QcUMU00aM5GmXdE/EOS6dIXOgIQ\n Q==;", "X-Mailman-Original-Authentication-Results": [ "smtp4.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com", "smtp4.osuosl.org;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.a=rsa-sha256 header.s=Intel header.b=nxS6qlSH" ], "Subject": "[Intel-wired-lan] [PATCH iwl-next v5 2/2] ice: implement symmetric\n RSS hash configuration", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>", "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "The driver advertises symmetric RSS support via supported_input_xfrm\nbut ice_set_rxfh() always programmed plain Toeplitz regardless of the\nrequested input_xfrm, making it impossible to actually enable symmetric\nhashing.\n\nFix ice_set_rxfh() to honour rxfh->input_xfrm: program symmetric\nToeplitz (ICE_AQ_VSI_Q_OPT_RSS_HASH_SYM_TPLZ) when RXH_XFRM_SYM_XOR\nis requested, revert to plain Toeplitz when the transform is cleared,\nand skip the hardware write when the function has not changed.\n\nMake ice_set_rss_vsi_ctx() non-static and export it so ice_set_rxfh()\ncan reprogram the VSI context directly. Change it to preserve\nvsi->rss_hfunc across VSI reinitialisation instead of always resetting\nto plain Toeplitz, which would silently undo any previously configured\nsymmetric hash function.\n\nFix ice_get_rxfh_fields() to report the hash fields actually programmed\nin hardware. When the hardware hashes on only one half of an L3 or L4\npair, complete the pair in the reported bitmap to satisfy the kernel's\nsymmetry validator. For GTP flow types, report RXH_GTP_TEID honestly;\nethtool_rxfh_config_is_sym() now accepts TEID as an intrinsically\nsymmetric field (see preceding patch).\n\nTested with tools/testing/selftests/drivers/net/hw/rss_input_xfrm.py\n\nSigned-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\n---\n drivers/net/ethernet/intel/ice/ice_ethtool.c | 40 ++++++++++++++++----\n drivers/net/ethernet/intel/ice/ice_lib.c | 7 ++--\n drivers/net/ethernet/intel/ice/ice_lib.h | 1 +\n 3 files changed, 37 insertions(+), 11 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c\nindex c6bc29c..6ccfe36 100644\n--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c\n+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c\n@@ -3008,14 +3008,17 @@ ice_set_rxfh_fields(struct net_device *netdev,\n \treturn 0;\n }\n \n+#define ICE_RSS_L3_PAIR\t\t(RXH_IP_SRC | RXH_IP_DST)\n+#define ICE_RSS_L4_PAIR\t\t(RXH_L4_B_0_1 | RXH_L4_B_2_3)\n+\n static int\n ice_get_rxfh_fields(struct net_device *netdev, struct ethtool_rxfh_fields *nfc)\n {\n \tstruct ice_netdev_priv *np = netdev_priv(netdev);\n \tstruct ice_vsi *vsi = np->vsi;\n \tstruct ice_pf *pf = vsi->back;\n+\tu64 l3, l4, hash_flds;\n \tstruct device *dev;\n-\tu64 hash_flds;\n \tbool symm;\n \tu32 hdrs;\n \n@@ -3067,6 +3070,13 @@ ice_get_rxfh_fields(struct net_device *netdev, struct ethtool_rxfh_fields *nfc)\n \t hash_flds & ICE_FLOW_HASH_FLD_GTPU_DWN_TEID)\n \t\tnfc->data |= (u64)RXH_GTP_TEID;\n \n+\tl3 = nfc->data & ICE_RSS_L3_PAIR;\n+\tl4 = nfc->data & ICE_RSS_L4_PAIR;\n+\tif (l3 && l3 != ICE_RSS_L3_PAIR)\n+\t\tnfc->data |= ICE_RSS_L3_PAIR;\n+\tif (l4 && l4 != ICE_RSS_L4_PAIR)\n+\t\tnfc->data |= ICE_RSS_L4_PAIR;\n+\n \treturn 0;\n }\n \n@@ -3667,7 +3677,6 @@ ice_set_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh,\n \t struct netlink_ext_ack *extack)\n {\n \tstruct ice_netdev_priv *np = netdev_priv(netdev);\n-\tu8 hfunc = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;\n \tstruct ice_vsi *vsi = np->vsi;\n \tstruct ice_pf *pf = vsi->back;\n \tstruct device *dev;\n@@ -3689,13 +3698,28 @@ ice_set_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh,\n \t\treturn -EOPNOTSUPP;\n \t}\n \n-\t/* Update the VSI's hash function */\n-\tif (rxfh->input_xfrm & RXH_XFRM_SYM_XOR)\n-\t\thfunc = ICE_AQ_VSI_Q_OPT_RSS_HASH_SYM_TPLZ;\n+\t/* Handle RSS symmetric hash transformation */\n+\tif (rxfh->input_xfrm != RXH_XFRM_NO_CHANGE) {\n+\t\tu8 new_hfunc;\n \n-\terr = ice_set_rss_hfunc(vsi, hfunc);\n-\tif (err)\n-\t\treturn err;\n+\t\tif (rxfh->input_xfrm == RXH_XFRM_SYM_XOR)\n+\t\t\tnew_hfunc = ICE_AQ_VSI_Q_OPT_RSS_HASH_SYM_TPLZ;\n+\t\telse if (!rxfh->input_xfrm)\n+\t\t\tnew_hfunc = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;\n+\t\telse\n+\t\t\treturn -EOPNOTSUPP;\n+\n+\t\tif (new_hfunc != vsi->rss_hfunc) {\n+\t\t\terr = ice_set_rss_hfunc(vsi, new_hfunc);\n+\t\t\tif (err) {\n+\t\t\t\tnetdev_err(netdev, \"Failed to set RSS hash function\\n\");\n+\t\t\t\treturn err;\n+\t\t\t}\n+\t\t\tnetdev_dbg(netdev, \"RSS hash function: %sToeplitz\\n\",\n+\t\t\t\t new_hfunc == ICE_AQ_VSI_Q_OPT_RSS_HASH_SYM_TPLZ ?\n+\t\t\t\t \"Symmetric \" : \"\");\n+\t\t}\n+\t}\n \n \tif (rxfh->key) {\n \t\tif (!vsi->rss_hkey_user) {\ndiff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c\nindex d921269..5b1934b 100644\n--- a/drivers/net/ethernet/intel/ice/ice_lib.c\n+++ b/drivers/net/ethernet/intel/ice/ice_lib.c\n@@ -1155,7 +1155,7 @@ static void ice_set_fd_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi)\n * @ctxt: the VSI context being set\n * @vsi: the VSI being configured\n */\n-static void ice_set_rss_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi)\n+void ice_set_rss_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi)\n {\n \tu8 lut_type, hash_type;\n \tstruct device *dev;\n@@ -1181,8 +1181,9 @@ static void ice_set_rss_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi)\n \t\treturn;\n \t}\n \n-\thash_type = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;\n-\tvsi->rss_hfunc = hash_type;\n+\tif (!vsi->rss_hfunc)\n+\t\tvsi->rss_hfunc = ICE_AQ_VSI_Q_OPT_RSS_HASH_TPLZ;\n+\thash_type = vsi->rss_hfunc;\n \n \tctxt->info.q_opt_rss =\n \t\tFIELD_PREP(ICE_AQ_VSI_Q_OPT_RSS_LUT_M, lut_type) |\ndiff --git a/drivers/net/ethernet/intel/ice/ice_lib.h b/drivers/net/ethernet/intel/ice/ice_lib.h\nindex 49454d98..29ba335 100644\n--- a/drivers/net/ethernet/intel/ice/ice_lib.h\n+++ b/drivers/net/ethernet/intel/ice/ice_lib.h\n@@ -46,6 +46,7 @@ void ice_vsi_delete(struct ice_vsi *vsi);\n int ice_vsi_cfg_tc(struct ice_vsi *vsi, u8 ena_tc);\n \n int ice_vsi_cfg_rss_lut_key(struct ice_vsi *vsi);\n+void ice_set_rss_vsi_ctx(struct ice_vsi_ctx *ctxt, struct ice_vsi *vsi);\n \n void ice_vsi_cfg_netdev_tc(struct ice_vsi *vsi, u8 ena_tc);\n \n", "prefixes": [ "iwl-next", "v5", "2/2" ] }