From nobody Tue Apr 7 17:14:30 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013046.outbound.protection.outlook.com [40.93.196.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5612839C654; Thu, 26 Feb 2026 22:20:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144406; cv=fail; b=SWWejFOBax6EpIpDas88tvc1f5+FMSanF0WwAeuG4F2cspMx6xfbDxzXYVbYqkj88ZQH+z0+VzUwgH9T+VLh579Lb9scgI/ordNHbHeJV0Se6/uOZg5U7NCK7o8JZtaRjVefAqsq87r5asg9RE0KoVoWp0cRRPN5T5bphGITV4s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144406; c=relaxed/simple; bh=IG+c9QczUwmOvC23bLi+XBh+0EmuDtbCTLqnHR7nC2U=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=onqJrqLDMFasa7FsC0Pa1/M4MYV5GEDwq+iCQiJeyrkspBUqyAjX7lZdt6oBdQxNwWP55kXxara/iuJIyPgK/z5jRshvr2RbD4XAmf5vsAuYSXE01aSAXL3SAcB+1zo6pb0beSoKW7UiXN/OZ7V2MBnuyIU4+5vAGdBKJtuVl/U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=LajsgwMD; arc=fail smtp.client-ip=40.93.196.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="LajsgwMD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gZNxpTJnxw1dElO1ArQNtes57uho9k6Q1yJWLjboc3MktAGuA1rI4IdRaFvhpAMjM4CW/a/52AkHQfw58Bv8Lucvyra2msQapmSO5Y8s0EfnEwPeImnexPLRkVK4YeFBO1ZdnSCsa6hcX6oxKtYSjG/MOaCAn6+B/mZvqEr+ussdD3CGg6XdEUVlzJ9hXNPMtFWRvYttw8d/t/fUpXvjOzjsTtqA976LS4658Dzp3ugDmz7ak96ss1y9AFQ1gv4Hnvl0BrVustgjijSpm9nch1OnPP8i3Dyk/MYK880pLacJi0JL9m46KUs94CtWIt/gf4ATuGjL5zRc95ZeQugzUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=M7bn1vbGoUIZdVJwsRh/JSmFv0Spt2IrSJdDCry+HGU=; b=vT5dSO/Cwk+o2pW3916qmbKNAfmDhWogVNPykIzlDD0PtrIyP/L78vUoz0tlxn7oR/x7p9DOtJWLs3KTX2uXQgHcBMYhNUUbiynBaSveENCeMbgHHP1XgJnwI9UA7vYg1w+rfDJTpjfwfMw7VlqhcfGS8uFmHcRZpDowsL67FTHzoIy4jcwqnmasU/5tKA758Fljm+KZ8iFrU0kVhzUBkooDcjDGEUf7Zs4Wqng9gI3iu2WvQFn8rS/OLgx1hf4olaxY7zSOP4J3943Giu58YBl6abTphk6r5pXI1KlqiSAXhSBXfZ+es2Xj65ja4f7tmQN4PAr5YxlVpGcoOQFM+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M7bn1vbGoUIZdVJwsRh/JSmFv0Spt2IrSJdDCry+HGU=; b=LajsgwMD5o5W69eUSlxK7rzUb0IpmnA0Ok9UngJ9JvOS8wcY6isHLgXDOQjVkbxhPUK0jI1IT4Z/ZN+MuT/4i4sM0f6Eh3c+mTtcCDoi5FAo0CnBEeIi6hycRPsFQ6JcpmfpDQq7Awc7nAppRii5EJdQh6/JKINiw834gqmwM9LFfV7dh1jR8vbiV8Jh4qsKK80idNYRHcHZeV8VasxfSFvbHkz1GXjxuQlhfLrcxVKNzdwKcOmECMlf8MW46DmG3m+EMgUqvCoK82gv8LfLUkYBX6S7lPQdr+DNlgt/hUWQm71j6e5HKF19XD8Y9C2OBwGF4fDVMxzawW/53KRDzA== Received: from BN9PR03CA0952.namprd03.prod.outlook.com (2603:10b6:408:108::27) by DS0PR12MB8245.namprd12.prod.outlook.com (2603:10b6:8:f2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Thu, 26 Feb 2026 22:19:55 +0000 Received: from MN1PEPF0000F0DE.namprd04.prod.outlook.com (2603:10b6:408:108:cafe::42) by BN9PR03CA0952.outlook.office365.com (2603:10b6:408:108::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 22:19:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000F0DE.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Thu, 26 Feb 2026 22:19:55 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:33 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:33 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:28 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 01/10] devlink: Add dump support for device-level resources Date: Fri, 27 Feb 2026 00:19:07 +0200 Message-ID: <20260226221916.1800227-2-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DE:EE_|DS0PR12MB8245:EE_ X-MS-Office365-Filtering-Correlation-Id: c8fb1cca-4487-4e88-e374-08de75852b74 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: +IbqadQmRo7j1kmoDuvNi2yn/l+alsqFBSlEpUMei0FBhQg+fb7dorBCD6E31X19Rr4oqd7PgyAMskdvRl+4XHAK994LNYsdb1pXldqfal/70rIxd53epilF+eQ1kwC9ZQQxo1v35IPmzc6Lpij1UUWqAoCIJgTAGlRwDWGtfjhomJCk/qGz+91J5NS427kZ+QjyILsFQKxyORGyZI41AFktTpW0aSKWsuM4R9ncg3+AGqOWplh23U/BAkRoa7oBMZLC2IxqxUBDjjOHpqmgcmyITU7/kPYCQQxpumpYGDFhBvRzMKXomnNDjPJceQyxyx8hq8kB/E3yJgb1VN+oeyg+CH9n39paLNn7BUAaOKW7Qw5B51sfez+sW0M7ut8Pfa9Oalgh1k+V1SzYPWHUDixFvx+kAydjrKvHYkTPq0S4SRXYta3Sk+LMA0Kbsmq0e6tpjn3MAQCAqPJ3StSNd/+Go/kk6yxbEf4yitHpNMCmdO3JCnMwxH1zU0m1Oq9iDFxGbVFOWp5lsXxfd6VBHZdjkXIMZMD4Mo4zv3diKW5v8JFql7swCwmA9aMOobfSgy6eBcmxjgK70vixBs88DAHLshFgTEgDj/IRbwm4ONI+fZazAxTWYapgMr7zxO1crKJAv177gCSUL4w3K8REfwj8H+eoJmUhcmmfUoqbAEr6DUHMFk99PJUItDQ24mNeJgBdPIu3SS4amq6ePBgZgTu3CH+q+MRHqEnHQXYk1IjBWv40ucy5dNLxeLteCU1zEypYZP1hvvc/2r5Y56FfPRYPjpnDuYNGZrBue4jKOu6WlrDoVc5rapNppvJTOlRH91Z/2bDB6w0yTmpdV2HIkA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: izeW/an2kQu1j6G/A4L/eoQQkpILk8EL/+KR8BCKQevbacT6yxxeaZAE7q9sM5XQyjzuykqeRj4EzfMmDzatWA+6aTZeEia+N+HMrw0SXp8VtV+GfGJ41k7k/QNyWf6M6QbWgrV+YsjBrU1jY4zBdvhueZcXHaokRHhHAcFVO4e7sCm038N7XYHV4K1hQjgmwW3xIAIK9pK+3D1odttcXWCS/pkV7qF6eH8j4TaCJkEmOOByhAojZ68IV2q1BSGSOR7ONMOdiTxSFdqvZMjo5Mb4xS9QJzxAeZgUYNlvo0LlPfT18Ddbz2ST8KrBrr2tsN9KgwdKXjmsLPF38zY+6tbxNJ4uIp5T0/g+qECuC63iCWR3YzTeFnsEqiGUdV+A/yPJ+k632uDPePCUDKcRJ3AuNCHgRHKDI9i/5ccRMnTWEma81F0fJ3HejUHimcPn X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:19:55.1540 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c8fb1cca-4487-4e88-e374-08de75852b74 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000F0DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8245 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add dumpit handler for resource-dump command to iterate over all devlink devices and show their resources. This aligns the device-level resource command with the port-level resource command that will be added in next patches. $ devlink resource show pci/0000:08:00.0: name local_max_SFs size 508 unit entry name external_max_SFs size 508 unit entry pci/0000:08:00.1: name local_max_SFs size 508 unit entry name external_max_SFs size 508 unit entry Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- Documentation/netlink/specs/devlink.yaml | 6 +- net/devlink/netlink_gen.c | 19 ++++- net/devlink/netlink_gen.h | 4 +- net/devlink/resource.c | 99 ++++++++++++++++++++---- 4 files changed, 109 insertions(+), 19 deletions(-) diff --git a/Documentation/netlink/specs/devlink.yaml b/Documentation/netli= nk/specs/devlink.yaml index 837112da6738..ee679ac14261 100644 --- a/Documentation/netlink/specs/devlink.yaml +++ b/Documentation/netlink/specs/devlink.yaml @@ -1733,12 +1733,16 @@ operations: attributes: - bus-name - dev-name - reply: + reply: &resource-dump-reply value: 36 attributes: - bus-name - dev-name - resource-list + dump: + request: + attributes: *dev-id-attrs + reply: *resource-dump-reply =20 - name: reload diff --git a/net/devlink/netlink_gen.c b/net/devlink/netlink_gen.c index f4c61c2b4f22..d6667a3f87a0 100644 --- a/net/devlink/netlink_gen.c +++ b/net/devlink/netlink_gen.c @@ -272,7 +272,13 @@ static const struct nla_policy devlink_resource_set_nl= _policy[DEVLINK_ATTR_RESOU }; =20 /* DEVLINK_CMD_RESOURCE_DUMP - do */ -static const struct nla_policy devlink_resource_dump_nl_policy[DEVLINK_ATT= R_DEV_NAME + 1] =3D { +static const struct nla_policy devlink_resource_dump_do_nl_policy[DEVLINK_= ATTR_DEV_NAME + 1] =3D { + [DEVLINK_ATTR_BUS_NAME] =3D { .type =3D NLA_NUL_STRING, }, + [DEVLINK_ATTR_DEV_NAME] =3D { .type =3D NLA_NUL_STRING, }, +}; + +/* DEVLINK_CMD_RESOURCE_DUMP - dump */ +static const struct nla_policy devlink_resource_dump_dump_nl_policy[DEVLIN= K_ATTR_DEV_NAME + 1] =3D { [DEVLINK_ATTR_BUS_NAME] =3D { .type =3D NLA_NUL_STRING, }, [DEVLINK_ATTR_DEV_NAME] =3D { .type =3D NLA_NUL_STRING, }, }; @@ -605,7 +611,7 @@ static const struct nla_policy devlink_notify_filter_se= t_nl_policy[DEVLINK_ATTR_ }; =20 /* Ops table for devlink */ -const struct genl_split_ops devlink_nl_ops[74] =3D { +const struct genl_split_ops devlink_nl_ops[75] =3D { { .cmd =3D DEVLINK_CMD_GET, .validate =3D GENL_DONT_VALIDATE_STRICT, @@ -883,10 +889,17 @@ const struct genl_split_ops devlink_nl_ops[74] =3D { .pre_doit =3D devlink_nl_pre_doit, .doit =3D devlink_nl_resource_dump_doit, .post_doit =3D devlink_nl_post_doit, - .policy =3D devlink_resource_dump_nl_policy, + .policy =3D devlink_resource_dump_do_nl_policy, .maxattr =3D DEVLINK_ATTR_DEV_NAME, .flags =3D GENL_CMD_CAP_DO, }, + { + .cmd =3D DEVLINK_CMD_RESOURCE_DUMP, + .dumpit =3D devlink_nl_resource_dump_dumpit, + .policy =3D devlink_resource_dump_dump_nl_policy, + .maxattr =3D DEVLINK_ATTR_DEV_NAME, + .flags =3D GENL_CMD_CAP_DUMP, + }, { .cmd =3D DEVLINK_CMD_RELOAD, .validate =3D GENL_DONT_VALIDATE_STRICT, diff --git a/net/devlink/netlink_gen.h b/net/devlink/netlink_gen.h index 2817d53a0eba..d79f6a0888f6 100644 --- a/net/devlink/netlink_gen.h +++ b/net/devlink/netlink_gen.h @@ -18,7 +18,7 @@ extern const struct nla_policy devlink_dl_rate_tc_bws_nl_= policy[DEVLINK_RATE_TC_ extern const struct nla_policy devlink_dl_selftest_id_nl_policy[DEVLINK_AT= TR_SELFTEST_ID_FLASH + 1]; =20 /* Ops table for devlink */ -extern const struct genl_split_ops devlink_nl_ops[74]; +extern const struct genl_split_ops devlink_nl_ops[75]; =20 int devlink_nl_pre_doit(const struct genl_split_ops *ops, struct sk_buff *= skb, struct genl_info *info); @@ -80,6 +80,8 @@ int devlink_nl_dpipe_table_counters_set_doit(struct sk_bu= ff *skb, struct genl_info *info); int devlink_nl_resource_set_doit(struct sk_buff *skb, struct genl_info *in= fo); int devlink_nl_resource_dump_doit(struct sk_buff *skb, struct genl_info *i= nfo); +int devlink_nl_resource_dump_dumpit(struct sk_buff *skb, + struct netlink_callback *cb); int devlink_nl_reload_doit(struct sk_buff *skb, struct genl_info *info); int devlink_nl_param_get_doit(struct sk_buff *skb, struct genl_info *info); int devlink_nl_param_get_dumpit(struct sk_buff *skb, diff --git a/net/devlink/resource.c b/net/devlink/resource.c index 2d6324f3d91f..5131875482ec 100644 --- a/net/devlink/resource.c +++ b/net/devlink/resource.c @@ -213,21 +213,43 @@ static int devlink_resource_put(struct devlink *devli= nk, struct sk_buff *skb, return -EMSGSIZE; } =20 +static int devlink_resource_list_fill(struct sk_buff *skb, + struct devlink *devlink, + int *idx) +{ + struct devlink_resource *resource; + int i =3D 0; + int err; + + list_for_each_entry(resource, &devlink->resource_list, list) { + if (i < *idx) { + i++; + continue; + } + err =3D devlink_resource_put(devlink, skb, resource); + if (err) { + *idx =3D i; + return err; + } + i++; + } + *idx =3D 0; + return 0; +} + static int devlink_resource_fill(struct genl_info *info, enum devlink_command cmd, int flags) { struct devlink *devlink =3D info->user_ptr[0]; - struct devlink_resource *resource; struct nlattr *resources_attr; struct sk_buff *skb =3D NULL; struct nlmsghdr *nlh; bool incomplete; + int start_idx; void *hdr; - int i; + int i =3D 0; int err; =20 - resource =3D list_first_entry(&devlink->resource_list, - struct devlink_resource, list); start_again: err =3D devlink_nl_msg_reply_and_new(&skb, info); if (err) @@ -249,16 +271,12 @@ static int devlink_resource_fill(struct genl_info *in= fo, goto nla_put_failure; =20 incomplete =3D false; - i =3D 0; - list_for_each_entry_from(resource, &devlink->resource_list, list) { - err =3D devlink_resource_put(devlink, skb, resource); - if (err) { - if (!i) - goto err_resource_put; - incomplete =3D true; - break; - } - i++; + start_idx =3D i; + err =3D devlink_resource_list_fill(skb, devlink, &i); + if (err) { + if (i =3D=3D start_idx) + goto err_resource_put; + incomplete =3D true; } nla_nest_end(skb, resources_attr); genlmsg_end(skb, hdr); @@ -292,6 +310,59 @@ int devlink_nl_resource_dump_doit(struct sk_buff *skb,= struct genl_info *info) return devlink_resource_fill(info, DEVLINK_CMD_RESOURCE_DUMP, 0); } =20 +static int +devlink_nl_resource_dump_one(struct sk_buff *skb, struct devlink *devlink, + struct netlink_callback *cb, int flags) +{ + struct devlink_nl_dump_state *state =3D devlink_dump_state(cb); + struct nlattr *resources_attr; + int start_idx =3D state->idx; + void *hdr; + int err; + + if (list_empty(&devlink->resource_list)) + return 0; + + hdr =3D genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, + &devlink_nl_family, flags, DEVLINK_CMD_RESOURCE_DUMP); + if (!hdr) + return -EMSGSIZE; + + err =3D devlink_nl_put_handle(skb, devlink); + if (err) + goto nla_put_failure; + + resources_attr =3D nla_nest_start_noflag(skb, DEVLINK_ATTR_RESOURCE_LIST); + if (!resources_attr) { + err =3D -EMSGSIZE; + goto nla_put_failure; + } + + err =3D devlink_resource_list_fill(skb, devlink, &state->idx); + if (err) { + if (state->idx =3D=3D start_idx) + goto nla_put_failure_unwind; + nla_nest_end(skb, resources_attr); + genlmsg_end(skb, hdr); + return err; + } + nla_nest_end(skb, resources_attr); + genlmsg_end(skb, hdr); + return 0; + +nla_put_failure_unwind: + nla_nest_cancel(skb, resources_attr); +nla_put_failure: + genlmsg_cancel(skb, hdr); + return err; +} + +int devlink_nl_resource_dump_dumpit(struct sk_buff *skb, + struct netlink_callback *cb) +{ + return devlink_nl_dumpit(skb, cb, devlink_nl_resource_dump_one); +} + int devlink_resources_validate(struct devlink *devlink, struct devlink_resource *resource, struct genl_info *info) --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010044.outbound.protection.outlook.com [52.101.61.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED13A3D2FE5; Thu, 26 Feb 2026 22:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144411; cv=fail; b=urjEPufN+XZfZkM2zXvw1IDkerNRYA3PwnDJ7RIbe5oXIJh+c1Gm2/cFIqmHlKbC84ebEj4nQ9d/24hcbzxz+GNAPHNPzyQ1Nlc5Op2uWvibrwOg82pTd7k1M9oTXKaxdLXuV830oMzAYnRPq1FzOdgUob/jqZlWZ5ZdCioWoOs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144411; c=relaxed/simple; bh=M1hnKg8+ixjRzkqetw/Fiv63IuwPUCK+Ao+RVMTpu6Q=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dj51ZzRC6lnNa2qaIRtH0dTtidbEYvuHYyWLS5aWvqyx3B46kiJ7nCn8CYb0wJ7/kZZLvQV9TYgvCPMmg9SdMkx1My+MHXmi/BCm238TQoIJKVEfWENfOtEYZ103RadCjliUKd1knzh10ZEWFyFGoxYBHgV9PqKEIMwPvL0X+Nk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=qqmSxgGB; arc=fail smtp.client-ip=52.101.61.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="qqmSxgGB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kkJrXMSGew5hiWaIWDBbCc7URysf9KPwm+xG6pvd7vs18a1WTXcBYXWQB3xV1fcLgCLrhKDy4hz70yC8wB7wFnobpTF3SMx+odGMvOF00pYHGr+9j+roLWkVkeCekOAL3HrUfr/bUwfZSJbqGpdMrbNB3nTHZhQoadXCqt7pbsIKwGWTzAW5XHW5oJvOAc9HFivuJPO7lCK37loyQfChh/yzv3eSa0sY8rw6G0bFWX8d7WNAH/5W8IIlu98CP2UIpTzSWgB+zL+14yWWM5qrQCHyJsbTh36fF0RHn45xSIaUzqpcNqHmGF4fPXVQz5Sk/nJDcRkffLuERap0NiVUsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Y4gI8OiW20M50cZMkqPYMSflyihrpEZxvo31uhyTmbA=; b=VYkkgxGHOt7+mI6o52qfJU+yXzoF12hU1aMapZydMTafxCQMEHASiEoqKvJTXhfK+Ua/hxgXugMtflzF3b8TRRUSlIOxsx4sfNO1cDAQr4kwXHtc/aXyCJbl7gzvUTgztBCfHZ5kx7eXZfazNsptmrguvYX1Yn+Hit3HOq+nYmy4fLL8K1JCG42q4fHcyYzbT+b+IADkN7rCAwI29ePYgeHhkH+zpoOGy7V2i69mSMTyzWc+p7rTdbia+BPYjFFsWJvjdvaV6ggxYfybPGpDqH+PeddGAz50y5YD3F8O3d0ThLqFfhu8eJ0PvFODWn1mxIRlzfYsS6muUatzlC1IPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y4gI8OiW20M50cZMkqPYMSflyihrpEZxvo31uhyTmbA=; b=qqmSxgGBwjmTWqfCexo6FMW4BmPHNW8x2ZFLvk0OkkuBiQBDZ0FCLunT3+UJVkawL1P85F3qOPVtZPkoPgiyi8H/RBgjDHFx2AcNfQseeklFZB+qPsUz1Ydgqyl710l0kRoZsJ8ziop7aXcpHJSbTrBOHz9Y3AoaScCoCXcyaj2JTlTtklA2iPqczmPv0Y5v1y8gsKLu9H2Hx35lIFYZH7P1P4y5jAHUA4wXdo+xHB+xCr4WsORUj11U5ogpf54KFlP4xpR3lizJzVI2AsLqVS/wxZbsarzqOfCy5siFRsKpx90MPcLqCygY6vruHfWSHkW1EoO6pG4BNBoLLao1+w== Received: from BN9PR03CA0958.namprd03.prod.outlook.com (2603:10b6:408:108::33) by CH3PR12MB7714.namprd12.prod.outlook.com (2603:10b6:610:14e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Thu, 26 Feb 2026 22:19:58 +0000 Received: from MN1PEPF0000F0DE.namprd04.prod.outlook.com (2603:10b6:408:108:cafe::19) by BN9PR03CA0958.outlook.office365.com (2603:10b6:408:108::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.23 via Frontend Transport; Thu, 26 Feb 2026 22:19:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000F0DE.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Thu, 26 Feb 2026 22:19:58 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:39 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:38 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:33 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 02/10] selftest: netdevsim: Add resource dump test Date: Fri, 27 Feb 2026 00:19:08 +0200 Message-ID: <20260226221916.1800227-3-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DE:EE_|CH3PR12MB7714:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bdec5ca-1543-4706-df58-08de75852d8c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: Gkb5AqY0p72GmcDMDg//qyVjkmlDjato31dC1kAcI4/JDWnKTpBgfGQDfd4pGuLw/5m4sZoHyovwN7FFCV54ny92ifRhXst+xpP4NAWj5GCUiY13KrcrjdQeUiTXJ9oPdBRIVzxmD2b4JaQB9VMqEqKZEJ9HW2wnDdUUL0NhyKC6S/jRl2DH6CFWarDUEnbPkcSpuvgRrxWyF44DD/nafI6AuZ4Ku1sboMSQLZdD7151DzGmWapVO+BGaedhtRtj06F7d2ca8Qq7AMUlQddI8mrcpUm3esIi7737T14GYxC5WHjSG29BqTQDDjSIjLl9doc+X8fLdBHyuEP4wm19udT1BGWE4IE0Mv0VjJ1mFCqBKrBOTogkXEM5Oqv/iM/X2o7cx9Oi7Fh7dDZVBwHPfNOTsP7WkAnz9xtsnyw9hh2yyznEFCWaAlymyJQPgfEPsnHpDijvn8XhrGeyQoUhE2PznPdufXcBASob5vNNJpDQTW2MrCuo8tLCWGJ6wYq4Y83pD50JL+NeT1GleBJKJnZMQ+mmoksNrYuxW4G7kZefa6hIaNeWXmMXWMffF8KUcX4iyx9M1U8JwchCxO9kzoZq7t82Spa3upVqJLQNMt8j8PXU/4UTHOEgAH3lXy38CboCFf2K7r5Mf8oRrcmVyiTNFPBplsr5Mp1F/BJQCG48WAfHw/h6Nvf5grWBelteqXe90VmpwB2ptLIv4wlw35LMT+ibluRr9EeUp4s7/bzVQhTLeOya/IypdV56DV8FoSSYWrZnmRMave5ODsVjQquXPABadMo76fGi0yTtabBCah9dluPZcza2BTdla+YVdFYmMhFPiVNPyk/uB0t3XQ== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rKXVEP7kIFm01JAe7Aqg8l820Sw9gG7zKKqf/lJ6D0GmOZJBpCJP82YUoHmPk2HpwxPdPJ/zY2vA50K7EMctUr2M/B4PuHJ7hLyI9LxTmq/6W2ny/4X/G187RCAZO62CR42mQp8sdsBH3XBD/OWoejyYIMrlU4wft7X7qP+3kdNZGjXTjGbs5iE7C2mv/gXaBcreyqmvLs6DvACoEy+AWHjLRYWxbB4+MIIq3stBALfRMup5Tb8Vu+qPxtEN1CPoQB+vtZkwXVXifH9JmQYmfMMqSF5EaSLZOewVSKB4cd13IkymAyExAEgWUGXeczLTja5EKQnpc0xrd9psCw+5xxUjqHnELP9lWnMxO1cmPKPenEKmchWCpVdSVqH+m/anIOjthcbecJqXZ9pzEHiHjOT92DsxbBPMZQkkpQmmhqEen4EHchIv9hgeDlSAwZ6t X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:19:58.7221 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1bdec5ca-1543-4706-df58-08de75852d8c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000F0DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7714 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add test for devlink resource dump command which verifies dumping resources for all devices. Signed-off-by: Or Har-Toov Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- .../selftests/drivers/net/netdevsim/devlink.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh b/too= ls/testing/selftests/drivers/net/netdevsim/devlink.sh index 1b529ccaf050..9efd20d0241c 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh @@ -5,7 +5,7 @@ lib_dir=3D$(dirname $0)/../../../net/forwarding =20 ALL_TESTS=3D"fw_flash_test params_test \ params_default_test regions_test reload_test \ - netns_reload_test resource_test dev_info_test \ + netns_reload_test resource_test resource_dump_test dev_info_test \ empty_reporter_test dummy_reporter_test rate_test" NUM_NETIFS=3D0 source $lib_dir/lib.sh @@ -482,6 +482,21 @@ resource_test() log_test "resource test" } =20 +resource_dump_test() +{ + RET=3D0 + + if ! devlink resource show > /dev/null 2>&1; then + echo "SKIP: devlink resource dump not supported" + return + fi + + devlink resource show > /dev/null 2>&1 + check_err $? "Failed to dump all resources" + + log_test "resource dump test" +} + info_get() { local name=3D$1 --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010054.outbound.protection.outlook.com [52.101.201.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 663E03A1A4F; Thu, 26 Feb 2026 22:20:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144419; cv=fail; b=XwwYl18/+TqJikxkHRLC1qe/tcA2fkgUOCy9brDCMKdsV7ppfphlsgkQ+JqXhI0DGJ6XPzB9/cEGuF3aFHL25rGfhiXv5qYtWvRKgkJzG5fxd6EDsdBqYA1T+0Hmx6OIIsXm1Gxh90KTjvo6HN0tl/afUsLwsUdKdrpsYIPCLT4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144419; c=relaxed/simple; bh=kwOD2oMWb2pWcLkxnSvecyZR7tnzSv9DBEFYaxMKRKo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=URI3EAv4aK9H8O6xvmfQpX2F2HZJRkvz0K4T8orIbN1gmd7AlQOE2ap8eQVUIJ0TAV2G6DNnbVP9BCm2r6FvxyJzrFzVcTwYhFP+zG+rnJamUQq7iTRERXS9Q0a7PK2K87h9ysTOAVBSssCB7Jk69/7GH5QMYRKBHol1VF2gSkQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=eWpA3VwC; arc=fail smtp.client-ip=52.101.201.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="eWpA3VwC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NZ3Xec6X+AQ/HJGTXNEnCv5ZkOU0bf4Scd5WVVaOLrrHo5pUgNcM26Dw9TOgj6DTFsDdDreaRgIrTlKYH3NtdGDZMgVy7B3uUHhw0VfPPcqeUAiwPs9C8Cz3liggAfMqrHp2U3yZb9IuQ4P6lW/kF3c2TXHARuKNNdoSC02GoGEsf+mCYWAQ1beyyKM+zY2pNPu1MrEQgvH/dWoJg1VMPy1B6sGn2yrHZ6Okia7RHWAxBIpmKGMCcXW2vyQ1u+NeodEzBtWiEowhsPcdOAcEp3JomS5shPcCiTo1c80Ryq8WJuyT9GJ76nM8YapkcE488/Rmd98sZyweOV+ayqJH2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jUvSjPbCmlMD9rnDGyjRRxi15wuGA9ghauSXSmpkaWk=; b=PlhXwrrHwm6oo4fXciyLnS2NzpkRBn0/6G0oLP0OxNgH2I2di5hOZ8cpnGBCBX7UtpXPvdEVQhStVzKQ8w1RHjVIHiGsqo6TFvaubc/D2zcG4KoJOtVBp4PcZLxO7sPVqufTzEJ/R5g0LoU3Nib1LkAU8t+memMBvn07wWZPW8F1/dIcB8YxnAWtKls4dgM4ZTJ4rGbRUB2tLLb8Af0+DOQlqtEm+iASid5UCAf1gvCKCGG02+tizg7FETVXvwEklpxpVYdB0z08g2GN8xgXusOXtYahpEOTbTgmgMoO4G9vQ/Xi60Qp+pjmqKy246M6+C5wfHEWrYi6CrV9XNfVOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jUvSjPbCmlMD9rnDGyjRRxi15wuGA9ghauSXSmpkaWk=; b=eWpA3VwCqfE7etVeuZbtxFzc28WZPhhW+d3fijRPccPCKXT5/gjrnh/l+5X0TsYUK+v/6mEuk2It0Fy6xpdzADaqTYQl/kX0jnTz0DqNojdgJiCIJrndR9XfYfSPIXdzCHviHs/WcE+EJq36doeeevNSsdjK3R23PGmy71D2CJQvhTs5FTERjgg9bG3MwB51vTMrLm2JrcOQV7bgd2L/5psFCNwU2yRB0A/odDAu/GJ5ew5gBybcJryEq9YlRD7vzEVQJBQNFSTrwInrCqfGCx6LHsIBQ+GD0QdKjH6iGj1zsZt+5JTOkzW4cK6dKDt9pmC3eVDsxBfvk5qs2EvMpA== Received: from SJ0PR13CA0038.namprd13.prod.outlook.com (2603:10b6:a03:2c2::13) by CH2PR12MB4135.namprd12.prod.outlook.com (2603:10b6:610:7c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 22:20:06 +0000 Received: from SJ1PEPF0000231E.namprd03.prod.outlook.com (2603:10b6:a03:2c2:cafe::17) by SJ0PR13CA0038.outlook.office365.com (2603:10b6:a03:2c2::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.0 via Frontend Transport; Thu, 26 Feb 2026 22:20:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF0000231E.mail.protection.outlook.com (10.167.242.230) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 26 Feb 2026 22:20:05 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:45 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:44 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:39 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 03/10] devlink: Add dump to resource documentation Date: Fri, 27 Feb 2026 00:19:09 +0200 Message-ID: <20260226221916.1800227-4-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231E:EE_|CH2PR12MB4135:EE_ X-MS-Office365-Filtering-Correlation-Id: 712e18b8-8c72-431c-6bc9-08de758531cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: 8Zg9PeTVP0SwnwfzpTSS0ZoRbgdqqlffzmQMn2X+JSG8FPC2CouOuR4C/omZhdUrlw8P3h9Q+5QGxKkJgro8XeuNlTv5YP4+rhxwtGiVzcZDIwm+JXbYwNDguLp+Ggtfa1Y7145zHCp13i12Z+IkZ4935/Nxzc98bIqc73qOQ1Aq9WR/kwJv4cqwtSrjw5u3EJksPfyBZCplEqn1glY0SoCR3yjQG0S/th9aPBc9TC2VPdXbpHwt7SyQUS5HZoN6A4qoUWO6pWnVGA3ZY4GmifrTK34fuFYDxjn+an4wM/5vcVQQruy341v8zWjA2In7AluSjKfXFr/WUI5M9aBmUrTbmIQlPX9KvFQ+LK+ztHTaIgZ7HKg4nxIQ6Kfk77Dh2xs0AKGMflzDeYGMehJ8/qMYP9RTD4bL/6pAuzNQwavYniG0BltoZt3yPQny2PoTRXO6EhOAH2H2qG6whXZhpaqhAo5hBL1FOLZ/TQ8ArpXdAgqad/mjQBA9c8zE4bNZjf4dv+IkFPt3EkADDkGc/w4jnDQO/feNU4IEo5LfjfH+ZPuKii2mkWej2Xk8QteFTxY+fg5wsEdIvils5ishVbkZHaT9bd+uXW5JU9wo3UXjlfVjg9PXFhU+KQx8nQ88Ff13+rZ8zpmP+7AYoWZQuv74gcgZtax1GnTvlboLwtrLQdPcx22sW48qAT/vEBnIT5QHUsrocpHI1DXKxwgPMCYrXnoz359CtFvmS0IgyoCIdnPYK+VMy/Q78ogIChbHzcfnxAWITlhX/IuC6YJekaod1pbqO7BBuEnCCLGfMgpezD6jTwLNWzSD3g1jRFLv6A+PswMWTuAo3zlzw4rYzg== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FgWIhQqlWq5s6cc/p9VWiTPLL+wQuP+7mbZnSdk5NVEgJvY/DNKM2tYCmzjmQsbcbcyctPoJwRuoRVDi9aabm3nuDpQ/QgDHkb5DIT41tfe004t6fpdI/AI3FaYeqvO02MKrY9QwPNUzc1ZE9/bHthoW5fzTyDcQ6Y3oI1BWMfU5nQvAB6X6cMm2yxKrMpdNc/MNABnz5G4gIZsNEyttqeLkUBJjX1IKqYtfYjcfMxWlOPaGp2JQ4rou5564PaOQvCYXsTwuZ4KEu7BdM5m0jeV4+Rc4zGiaeC46cgffqB/2zXX0ajd03qSUBwSqIqlAAF/1boN+nTsO9npzfpJFLn7tSIQvb0TW99Ks8iTpz8MN8XX5fGujhkwnIqCfwZQctRq0t8oXQkdHgjPjsRPH6bOiCXMV/FvF2LaQuANmKHiAz3IG+6yjtXMhlGJin29u X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:05.8433 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 712e18b8-8c72-431c-6bc9-08de758531cd X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF0000231E.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4135 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add dump documentation for resource command. Resource dump command allow viewing resources for all devices as a list. Signed-off-by: Or Har-Toov Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- .../networking/devlink/devlink-resource.rst | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Documentation/networking/devlink/devlink-resource.rst b/Docume= ntation/networking/devlink/devlink-resource.rst index 3d5ae51e65a2..b4203c498bf2 100644 --- a/Documentation/networking/devlink/devlink-resource.rst +++ b/Documentation/networking/devlink/devlink-resource.rst @@ -40,11 +40,31 @@ device drivers and their description must be added to t= he following table: example usage ------------- =20 -The resources exposed by the driver can be observed, for example: +The resources exposed by the driver can be observed. + +To list resources for all devlink devices that have resources registered: =20 .. code:: shell =20 - $devlink resource show pci/0000:03:00.0 + $ devlink resource show + pci/0000:03:00.0: + name kvd size 245760 unit entry + resources: + name linear size 98304 occ 0 unit entry size_min 0 size_max 1474= 56 size_gran 128 + name hash_double size 60416 unit entry size_min 32768 size_max 1= 80224 size_gran 128 + name hash_single size 87040 unit entry size_min 65536 size_max 2= 12992 size_gran 128 + pci/0000:04:00.0: + name kvd size 245760 unit entry + resources: + name linear size 98304 occ 0 unit entry size_min 0 size_max 1474= 56 size_gran 128 + name hash_double size 60416 unit entry size_min 32768 size_max 1= 80224 size_gran 128 + name hash_single size 87040 unit entry size_min 65536 size_max 2= 12992 size_gran 128 + +To show resources for a specific device: + +.. code:: shell + + $ devlink resource show pci/0000:03:00.0 pci/0000:03:00.0: name kvd size 245760 unit entry resources: --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011028.outbound.protection.outlook.com [52.101.52.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B78A530B50B; Thu, 26 Feb 2026 22:20:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144418; cv=fail; b=perjPerVGLZX3ImSZYgoVZY8Rb3q+jFxu29YLaLhG4FmXPRvxJ9Aqq+JDg3Hc5XY3vZRBNYZAoH/97sZnqf8MnKZV3RDs5Ku32vCYAkzzNyE+f+ul9bq+82Pwg3ABOdFjLpF+MfJ+QH4vHH2hxlrcZuZDOnwTHB6wuUqE1HMrvQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144418; c=relaxed/simple; bh=WKMc8go366rKjYJdlkcM5zzpqvpDpdbD6ZfBtZQp//U=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rRcyGIb+wBpYIMtYp81ewdiPGBLUAPIsgJ8Q2ci+nm8/PXJmu2ufuznA77by5Ub7WmOz4/FWdtO11QjyqjAycm341nQ83no+D2fA1dQWM1UEdmWUyh4jxoWXJUAo0kda/IDgEnwdwM2AKBzLIIbE+nDgMhgahQGmfAuxYSrQE2M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=rpAQMn9u; arc=fail smtp.client-ip=52.101.52.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="rpAQMn9u" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hGc6InVcdhRuvzHeqFZWPZD3ilE+DdlKkrK4Hq4bkyqvex09ZAe9bA2UtzoLsb1b2U5Mk3fe9prtTeNuMbK4jC/ucPhsFV0xSW8rbSIeOVy3e4Vr0NeZDUYLPdlJjCM6YYRINU4rct8MeelIbqvprEEBiFeEBoJr2aCEyOvxc/2/A9rWPntUlBs0XJ1VZBm08GgRk2JqSbF9CrADaxjju6vqmLIdfvwrxXu1sjLSzdv312kAjqh+6dWc9uUSAA4YTL5O3TwFWQbKm3MqyukeiVDTpi+Bm182ZAW6aK+8m32uLauswGBiQCk0asloOuHoX1cgAiWhldT4I/ijn0c4fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g0+RnwIwf2uqmj1dFXgBvPQ1vhYYpOKOtxEx0c4MGrA=; b=P52Nm5RLmJE/6bTjgiLb5FYq6M3qBEp95WdgO3ZY95Wul9ZrQ2p34F0XOFiZps652blf/PbCWnxka+XHOUcb4eK8DjowhPDxhAxXgManPNdPmWX29BSNRHQf1jSyz+MK6Hqcf6wYDN+Z1+bFusBlmI5lwzm3uLaomnrnvmSQFrTtoRyY7HNEv6sm+tA+5Ya2Qgn5cs5IKyU+tqO83TF/gIFtwJJnjHAOgd4pai4dnf3NStEC2v70LtC3CqCtJ3HMY/X1JVTOatlOM7R7HN3TZafZ2HeUkJWzxbgEtU6/WnLfbvxtAERQlDkpU07aMPz8bXoyz7hVvl89ECtH6x+JVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g0+RnwIwf2uqmj1dFXgBvPQ1vhYYpOKOtxEx0c4MGrA=; b=rpAQMn9uSxpy4NxTy9WYMRJK55bwYZiQWRCS58xtCBtANvsDocWeRps/VH+rgGbMTxI8W8qOJhKHEoza+TjpK0/XGjshq/GRf6IbfZ2R4Hto9IHLdaUd1qvvwnO0T81PIS8hNgUDx/Co7xALzOQxiuRHL9hUNFuz/M41gj0S2ZOK8nKJ3lg04fK9D7WSOuOHCdvou1mjdZ8xTz36dkgiMkrA8IBcD6422LwQgTAgrqxIpqVhUCnMwoWvC5NUpsoXZoUFRPOIMhoYvLhSgn00CDSYGFvf9fPqF5Lu9EViAsxcQiL60BD2YtVo6YzvnJ0XmTaYnHMN7izNrPUputllfA== Received: from BYAPR03CA0010.namprd03.prod.outlook.com (2603:10b6:a02:a8::23) by MN2PR12MB4269.namprd12.prod.outlook.com (2603:10b6:208:1d4::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.16; Thu, 26 Feb 2026 22:20:09 +0000 Received: from SJ1PEPF0000231F.namprd03.prod.outlook.com (2603:10b6:a02:a8:cafe::6b) by BYAPR03CA0010.outlook.office365.com (2603:10b6:a02:a8::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.24 via Frontend Transport; Thu, 26 Feb 2026 22:20:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF0000231F.mail.protection.outlook.com (10.167.242.235) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Thu, 26 Feb 2026 22:20:09 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:50 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:50 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:45 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 04/10] devlink: Refactor resource functions to be generic Date: Fri, 27 Feb 2026 00:19:10 +0200 Message-ID: <20260226221916.1800227-5-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231F:EE_|MN2PR12MB4269:EE_ X-MS-Office365-Filtering-Correlation-Id: aab81cfe-0a41-4c48-0519-08de758533c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: tMCQ2FQzhFv9F4RP4QTxId6PeHn2UlRWBvDPBzWgTviZCGSMQYHGyN7m3ttNJuqpdNqqLuxZipabktzvJ3BnlqzyFXqIP9miTguEN5zGS/+lX39TnjuljyinjF6W37HBYZid2GhZMmxZjRoRD1koVxm6UMv4q5Q6u5XCyBgHMsJe8ZXHyjsYgYq0k9TWBRWqPfVpr7npAWhvvE/0tdJhsxz256Cpn8deG4lHbOjmG5y0Ov0omU4tAfxJAWYdO0nZedfuLy0ox/qVJBy0ItoobX4cR9AvjEOnPt7o/nCXqP7FscHtqyTHOsJxl3B7sVh29m07cydbYMaLVgvju1v1pU64u41pH/tRtsrd8snbDXbOjmtd5gAGHySFIrZd7UyYpNgPzYR2+AelD+4+728xjcVdvA2j9Ey9BT9sITKeR3cpNy8IvWpXk6WLus+5ho4wwu5CTIxgOhB93Qv9ReUlCj93mrQqgq3GPq0815cAsDqGElLNszWV+RiakUyweg7m4CKWht6+AS/ta6FzA+1PVCQqFeddmAmNFHDfCWoNo7ZIIDkpaTPGZ7uuqm1Y2NNFnNz+klg46IsaEMGc+H0YZdRDz3lYALkcQ5xdeLrUyC7PyTbCt7uVE19dGFcRzL7aiktuZ3hFs9S39303IWtsZoEIXCmxHt7Hgf8jVdmE42p56mdlt8Qh3VLkOlA9BB0Sw2FMRRnRRc9AnvoE6V2ahfK6EC4yvh/ac3aemXsiuvDd7uMLr85RwlVwn2mVbXwjt7IClJBZ7tTGj2OMQizVKok2y6j/Hb6+okYLO/JS8bdgcX7OCt8CjtCe3Xzdu0y293KcQaj33aeg8aYGjVdviw== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: s1DKw50pUhWLvxQCEw2yW4dWHgllfdvF0nWQaA/ujhJ/uo6LSAP1ds7Gwko09FmlmyWcZGUUOrN/UagDrh7UvNEm5HFIYOfiSAts+ae4PNE5cdnSLuwNjruKGzbqZtwZUoYXW9NAlh238I5WFUxuZShIS3tqmKzcOng2iEYeCkiQfLKBMCFoISMozlUpWJFogVzkvmsDE6GwY1Rr1pZrYsANp1Ny5N2E0cUBwpkCmNXASGMvfVp0ADLohpz2FyGnQL5awXOTMEWgGVvKCMvtwiqNMEjaPdKBCAzm8Af4C5OY5t/FohIlYy6Qr76xgh8qkYV9Cd7texQYAuT1fHT02UEUU5ZySg/vl59+HwHX7AX9lk9sXPjz8HFF2VS+7OA0IaTErn5maIPFh4tzsZm7ACNf1+H0oodGokm2iQaLsXh8C6rCuXiqrSyZGz621VE5 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:09.1661 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aab81cfe-0a41-4c48-0519-08de758533c8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF0000231F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4269 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Currently the resource functions take devlink pointer as parameter and take the resource list from there. Allow resource functions to work with other resource lists that will be added in next patches and not only with the devlink's resource list. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- include/net/devlink.h | 2 +- net/devlink/resource.c | 140 ++++++++++++++++++++++++++--------------- 2 files changed, 91 insertions(+), 51 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index cb839e0435a1..48e1ad067836 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1875,7 +1875,7 @@ int devl_resource_register(struct devlink *devlink, u64 resource_size, u64 resource_id, u64 parent_resource_id, - const struct devlink_resource_size_params *size_params); + const struct devlink_resource_size_params *params); void devl_resources_unregister(struct devlink *devlink); void devlink_resources_unregister(struct devlink *devlink); int devl_resource_size_get(struct devlink *devlink, diff --git a/net/devlink/resource.c b/net/devlink/resource.c index 5131875482ec..10043ad26dfd 100644 --- a/net/devlink/resource.c +++ b/net/devlink/resource.c @@ -36,15 +36,16 @@ struct devlink_resource { }; =20 static struct devlink_resource * -devlink_resource_find(struct devlink *devlink, - struct devlink_resource *resource, u64 resource_id) +__devlink_resource_find(struct list_head *resource_list_head, + struct devlink_resource *resource, + u64 resource_id) { struct list_head *resource_list; =20 if (resource) resource_list =3D &resource->resource_list; else - resource_list =3D &devlink->resource_list; + resource_list =3D resource_list_head; =20 list_for_each_entry(resource, resource_list, list) { struct devlink_resource *child_resource; @@ -52,14 +53,23 @@ devlink_resource_find(struct devlink *devlink, if (resource->id =3D=3D resource_id) return resource; =20 - child_resource =3D devlink_resource_find(devlink, resource, - resource_id); + child_resource =3D __devlink_resource_find(resource_list_head, + resource, + resource_id); if (child_resource) return child_resource; } return NULL; } =20 +static struct devlink_resource * +devlink_resource_find(struct devlink *devlink, + struct devlink_resource *resource, u64 resource_id) +{ + return __devlink_resource_find(&devlink->resource_list, + resource, resource_id); +} + static void devlink_resource_validate_children(struct devlink_resource *resource) { @@ -215,13 +225,14 @@ static int devlink_resource_put(struct devlink *devli= nk, struct sk_buff *skb, =20 static int devlink_resource_list_fill(struct sk_buff *skb, struct devlink *devlink, + struct list_head *resource_list_head, int *idx) { struct devlink_resource *resource; int i =3D 0; int err; =20 - list_for_each_entry(resource, &devlink->resource_list, list) { + list_for_each_entry(resource, resource_list_head, list) { if (i < *idx) { i++; continue; @@ -237,8 +248,9 @@ static int devlink_resource_list_fill(struct sk_buff *s= kb, return 0; } =20 -static int devlink_resource_fill(struct genl_info *info, - enum devlink_command cmd, int flags) +static int __devlink_resource_fill(struct genl_info *info, + struct list_head *resource_list_head, + enum devlink_command cmd, int flags) { struct devlink *devlink =3D info->user_ptr[0]; struct nlattr *resources_attr; @@ -250,6 +262,9 @@ static int devlink_resource_fill(struct genl_info *info, int i =3D 0; int err; =20 + if (list_empty(resource_list_head)) + return -EOPNOTSUPP; + start_again: err =3D devlink_nl_msg_reply_and_new(&skb, info); if (err) @@ -272,7 +287,7 @@ static int devlink_resource_fill(struct genl_info *info, =20 incomplete =3D false; start_idx =3D i; - err =3D devlink_resource_list_fill(skb, devlink, &i); + err =3D devlink_resource_list_fill(skb, devlink, resource_list_head, &i); if (err) { if (i =3D=3D start_idx) goto err_resource_put; @@ -300,13 +315,17 @@ static int devlink_resource_fill(struct genl_info *in= fo, return err; } =20 -int devlink_nl_resource_dump_doit(struct sk_buff *skb, struct genl_info *i= nfo) +static int devlink_resource_fill(struct genl_info *info, + enum devlink_command cmd, int flags) { struct devlink *devlink =3D info->user_ptr[0]; =20 - if (list_empty(&devlink->resource_list)) - return -EOPNOTSUPP; + return __devlink_resource_fill(info, &devlink->resource_list, + cmd, flags); +} =20 +int devlink_nl_resource_dump_doit(struct sk_buff *skb, struct genl_info *i= nfo) +{ return devlink_resource_fill(info, DEVLINK_CMD_RESOURCE_DUMP, 0); } =20 @@ -338,7 +357,8 @@ devlink_nl_resource_dump_one(struct sk_buff *skb, struc= t devlink *devlink, goto nla_put_failure; } =20 - err =3D devlink_resource_list_fill(skb, devlink, &state->idx); + err =3D devlink_resource_list_fill(skb, devlink, + &devlink->resource_list, &state->idx); if (err) { if (state->idx =3D=3D start_idx) goto nla_put_failure_unwind; @@ -385,26 +405,12 @@ int devlink_resources_validate(struct devlink *devlin= k, return err; } =20 -/** - * devl_resource_register - devlink resource register - * - * @devlink: devlink - * @resource_name: resource's name - * @resource_size: resource's size - * @resource_id: resource's id - * @parent_resource_id: resource's parent id - * @size_params: size parameters - * - * Generic resources should reuse the same names across drivers. - * Please see the generic resources list at: - * Documentation/networking/devlink/devlink-resource.rst - */ -int devl_resource_register(struct devlink *devlink, - const char *resource_name, - u64 resource_size, - u64 resource_id, - u64 parent_resource_id, - const struct devlink_resource_size_params *size_params) +static int +__devl_resource_register(struct devlink *devlink, + struct list_head *resource_list_head, + const char *resource_name, u64 resource_size, + u64 resource_id, u64 parent_resource_id, + const struct devlink_resource_size_params *params) { struct devlink_resource *resource; struct list_head *resource_list; @@ -414,7 +420,8 @@ int devl_resource_register(struct devlink *devlink, =20 top_hierarchy =3D parent_resource_id =3D=3D DEVLINK_RESOURCE_ID_PARENT_TO= P; =20 - resource =3D devlink_resource_find(devlink, NULL, resource_id); + resource =3D __devlink_resource_find(resource_list_head, NULL, + resource_id); if (resource) return -EEXIST; =20 @@ -423,12 +430,13 @@ int devl_resource_register(struct devlink *devlink, return -ENOMEM; =20 if (top_hierarchy) { - resource_list =3D &devlink->resource_list; + resource_list =3D resource_list_head; } else { struct devlink_resource *parent_resource; =20 - parent_resource =3D devlink_resource_find(devlink, NULL, - parent_resource_id); + parent_resource =3D __devlink_resource_find(resource_list_head, + NULL, + parent_resource_id); if (parent_resource) { resource_list =3D &parent_resource->resource_list; resource->parent =3D parent_resource; @@ -443,46 +451,78 @@ int devl_resource_register(struct devlink *devlink, resource->size_new =3D resource_size; resource->id =3D resource_id; resource->size_valid =3D true; - memcpy(&resource->size_params, size_params, - sizeof(resource->size_params)); + memcpy(&resource->size_params, params, sizeof(resource->size_params)); INIT_LIST_HEAD(&resource->resource_list); list_add_tail(&resource->list, resource_list); =20 return 0; } + +/** + * devl_resource_register - devlink resource register + * + * @devlink: devlink + * @resource_name: resource's name + * @resource_size: resource's size + * @resource_id: resource's id + * @parent_resource_id: resource's parent id + * @params: size parameters + * + * Generic resources should reuse the same names across drivers. + * Please see the generic resources list at: + * Documentation/networking/devlink/devlink-resource.rst + * + * Return: 0 on success, negative error code otherwise. + */ +int devl_resource_register(struct devlink *devlink, const char *resource_n= ame, + u64 resource_size, u64 resource_id, + u64 parent_resource_id, + const struct devlink_resource_size_params *params) +{ + return __devl_resource_register(devlink, &devlink->resource_list, + resource_name, resource_size, + resource_id, parent_resource_id, + params); +} EXPORT_SYMBOL_GPL(devl_resource_register); =20 -static void devlink_resource_unregister(struct devlink *devlink, - struct devlink_resource *resource) +static void devlink_resource_unregister(struct devlink_resource *resource) { struct devlink_resource *tmp, *child_resource; =20 list_for_each_entry_safe(child_resource, tmp, &resource->resource_list, list) { - devlink_resource_unregister(devlink, child_resource); + devlink_resource_unregister(child_resource); list_del(&child_resource->list); kfree(child_resource); } } =20 -/** - * devl_resources_unregister - free all resources - * - * @devlink: devlink - */ -void devl_resources_unregister(struct devlink *devlink) +static void +__devl_resources_unregister(struct devlink *devlink, + struct list_head *resource_list_head) { struct devlink_resource *tmp, *child_resource; =20 lockdep_assert_held(&devlink->lock); =20 - list_for_each_entry_safe(child_resource, tmp, &devlink->resource_list, + list_for_each_entry_safe(child_resource, tmp, resource_list_head, list) { - devlink_resource_unregister(devlink, child_resource); + devlink_resource_unregister(child_resource); list_del(&child_resource->list); kfree(child_resource); } } + +/** + * devl_resources_unregister - free all resources + * + * @devlink: devlink + */ +void devl_resources_unregister(struct devlink *devlink) +{ + __devl_resources_unregister(devlink, &devlink->resource_list); +} EXPORT_SYMBOL_GPL(devl_resources_unregister); =20 /** --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011043.outbound.protection.outlook.com [52.101.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E5FB4508F9; Thu, 26 Feb 2026 22:20:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144421; cv=fail; b=SenTYuxy6bIYIiCmb+tSef4XeO8Q+YXXshocWg7cOu/Z81ZTJrkpLVKQqwpCQEARl04fjp3oClkTCCdM1Qf1spxd4B45SMFksSmtSYjFrEyM3eZ3dxLMLKus+KYCnxqtCJcEQNteKcu2mrHKl7L86f83njnoJGtSVqub0pZ4yLc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144421; c=relaxed/simple; bh=oYv2xG43Vkq/KtZjnynCacHwgKkFdqKemFe+YNYiKMM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=T9J9LbrQvI1MKY/l696pKEkSb8rvVPk/rlzGx/sWA1Mgz/lWAA45Iyg0is9F93yxEk09+rbk+/Dpga8s1eCTtj7O3jtiqqVIRkOYnqU+YrZnc9DcCRqrMobRMUq73VK+nzhKDR3kclyn6b/KHzA0qkb3Z7fsS8lmLPIOP1UvkX4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=Fxy//qVa; arc=fail smtp.client-ip=52.101.52.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="Fxy//qVa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YQA6j0abi3Y9JzWbjMjYRH8pUfat/odowJ+PYlP/dKZ7i+SF9GEatb3JwMqi8aNoUkka2Vsx+eGyiKOsSQk5vhNpJvQvHeHhyyWNUUoFM/uyaJfWG1MqZNvyn/F8vise9r/+3ePzFF6cal/zV8wwecRXYV/M8ROhvlzrnU7yVY1w+nhrdalch41q0k4GjbbR/PGwyvDk3tc7noIqYEKuLu3Lu/jOwnacUiu0eFt9UMwnnRq2Hh1aCPS7OleNBISXi0jC5u7uURyInETF1x4emNxFXs0+IOYEHpqP2uJwM1sSfnzhpj6m46CtQjFJ8tXKH1AUwMQt6T4noUzNBkGEig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Vhi2MBIUo7liQPCdNRdeIhZHUsf6JtcmR+uwlSvu+t4=; b=kIGDxzx81U9lbG8RGCxdTS6YRIrVWWVB+OpyIIjtPOobkJlTffUzHy3JHIvtshLgzpubGiUkGrN7P9ZIYl+Ex1jonYIgkxy0fZagq2mSHoBD09M4xVKnuwy+xvDJ/tFOwW9sFIgLVI0GWCCsZ40LoWUzJ1LnBxYLvfbpgJYa63RmyAvKcQwKpKbcZvLESomnjo8Opcohkj6eXEmQ15xDjQmwa3WtsKJN+ikSXeg20fjMzKK9WNnJYqDuFW8XmIe/KWEbpy2Rvq0PMR/rCKcaVazFulIMH6S77lAOubmiTGleAVxz86t+QIKFBNd39C8GnbK3fqRE1vvdv8Pdg2Cx0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vhi2MBIUo7liQPCdNRdeIhZHUsf6JtcmR+uwlSvu+t4=; b=Fxy//qVa6hnLqq40H/aH8vH82hK/Y66HM9GPESerYn4fz++lBiNj5ew09VMMZRuM60fhZq0EW8bpB6dBeFDKIGD33tUTry2mC5CWc/PuuOl/TG4rjY0Uc/KecYeY/xroDlBLAxPYPHBxBoeuyARCwXxHjXraJUyoJHIZJqCn3YBWvPBR8VLavT4ZspsT17HK9T/DdQpoVse7PF6CuLPT4WEaFuMBxNhlrdXa8piIwQ3j65t3k8BkNw5IP+dA777KVhyTUyjSFUpfnNKSYy4W1CPcStqWnVGqQzTWoACFf5rUg6GzT2Y3yftXi+QWYC4PHKENL8rjT7g5A9Xr6/habg== Received: from BYAPR02CA0006.namprd02.prod.outlook.com (2603:10b6:a02:ee::19) by LVUPR12MB999161.namprd12.prod.outlook.com (2603:10b6:408:3a2::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 22:20:15 +0000 Received: from SJ1PEPF00002319.namprd03.prod.outlook.com (2603:10b6:a02:ee:cafe::c1) by BYAPR02CA0006.outlook.office365.com (2603:10b6:a02:ee::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.23 via Frontend Transport; Thu, 26 Feb 2026 22:20:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF00002319.mail.protection.outlook.com (10.167.242.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Thu, 26 Feb 2026 22:20:14 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:56 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:19:55 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:50 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 05/10] devlink: Add port-level resource registration infrastructure Date: Fri, 27 Feb 2026 00:19:11 +0200 Message-ID: <20260226221916.1800227-6-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002319:EE_|LVUPR12MB999161:EE_ X-MS-Office365-Filtering-Correlation-Id: 40f0ee65-de83-4eef-2374-08de75853713 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: LWYqnuvk0ZnAoa717XohCNRNsZppVuubT4NGA/FzCaa8h+8p7VADCXvEVWxaYTApDUohqHp3Ce4+ANhudKSOKJ2nPat9VSoDxZvVfrEU3rLMsFpLVVa6PfoM0B/wwPbK0kV+EEYjeYedxDzLPgrVcPDSU1qCV+tXtJko+iWjZGQ/jTTrZHlKrqY2wmwg1Xdck8tNE3rPERkAIFkAbM1MfwztQ4oybxfm9OD6oxdD42XQhJ11Nj9wqyD2OlGJAEevrhjFIkeOm6DfBWgngxAdk4jg3cL2z8ghp8l6mzi2xW7i0647LR5B7kuCW5N+WuP4r4JXK1WWwAVIDB3N0S5CsDtCWARcIZN0dObCRzy15jj4h2phrvL1nn5K1GTW7Ta25aGRSqo9e1qGfFG5HiDIhVgWBz3j8amNRDTsbHV+9t8zzKtKJKqGNxAk+D6jA9aRI0gnwCU7+YFqb949WOyqzISYBG+DHHzYvAvGgdSvo5K4Nz6fPhMcFnBJDA9hz7OeUvVtHPrkVHWfAYbKpn0HoZKg5cYInV3I9cPpJYEZKoVMBfqoUFvZuT3/XuZBA0pjUMuCANJQp+WBfQYWp8tEMK1+AF+qHLUsMKpRKxC/Lzvj809B75DgkUr9jFBD9mC60NJ2qbAiyHCHaRYDdjGZWXrbZ8PRA7Y9/FsNsp8vRRcHyWmGztHdfasJivSLUXz0MH7zGdQvmXYkIuHJLaCbmX0hP/D8Dq6sFlHaLOkVE8MOfxzJVj76yRKFxVRPzzQ4DjQrkfzRyliIQQoBaAMUDr1AKnDDOJBwUVoJFTIo0cgykAyT+zY+Xe2ELe3UW4cF4eBSxeimy1I6sT3dU9yQkA== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EKEIi6Wy6Uq/gcxcVzSelLwbXhvjjHVRLuATw3FCLg6scB4AlX/BOwHMrKSjRX57pcOzQhdxzPC7Pkf7dtxQCYYlLfUlxz/kifik1wOtVUtvDbHxbCIYyqr+hpDsO1d2kn3UPyX7RaH3wkWfxwa4aXcoN3qGmySf2VlNCQjgVoJyQmdafHi7YzMyUmJSrz7m3SPIShlgKosBUR1/Ph/JUQa+OL1u5laH8U0CN4/IKRZ5teLbegthOSVw8WCaDePE1z3wYOh/94TToKdI6URxYrEIqtzbg5omZleGuojCLYJf/jgOMuqo1JZYCVUGdXXQenJAdJ9p6SrLy//bt3tXoUxHn8pzc+4XzHopuPqZcHdlSUkZixV6ivqjFOlJEavHiqKS973B1qogx+86hsuRjR7mgIIh/LmFPtFGEdUQQLBMZ8V8YOe9ttG2NApH0JVO X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:14.6986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40f0ee65-de83-4eef-2374-08de75853713 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002319.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LVUPR12MB999161 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov The current devlink resource infrastructure supports only device-level resources. Some hardware resources are associated with specific ports rather than the entire device, and today we have no way to show resource per-port. Add support for registering resources at the port level. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- include/net/devlink.h | 8 ++++++++ net/devlink/port.c | 3 +++ net/devlink/resource.c | 43 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/include/net/devlink.h b/include/net/devlink.h index 48e1ad067836..1ba12ab51e66 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -129,6 +129,7 @@ struct devlink_rate { struct devlink_port { struct list_head list; struct list_head region_list; + struct list_head resource_list; struct devlink *devlink; const struct devlink_port_ops *ops; unsigned int index; @@ -1881,6 +1882,13 @@ void devlink_resources_unregister(struct devlink *de= vlink); int devl_resource_size_get(struct devlink *devlink, u64 resource_id, u64 *p_resource_size); +int +devl_port_resource_register(struct devlink_port *devlink_port, + const char *resource_name, + u64 resource_size, u64 resource_id, + u64 parent_resource_id, + const struct devlink_resource_size_params *params); +void devl_port_resources_unregister(struct devlink_port *devlink_port); int devl_dpipe_table_resource_set(struct devlink *devlink, const char *table_name, u64 resource_id, u64 resource_units); diff --git a/net/devlink/port.c b/net/devlink/port.c index 93d8a25bb920..10d0d88894a3 100644 --- a/net/devlink/port.c +++ b/net/devlink/port.c @@ -1024,6 +1024,7 @@ void devlink_port_init(struct devlink *devlink, return; devlink_port->devlink =3D devlink; INIT_LIST_HEAD(&devlink_port->region_list); + INIT_LIST_HEAD(&devlink_port->resource_list); devlink_port->initialized =3D true; } EXPORT_SYMBOL_GPL(devlink_port_init); @@ -1041,6 +1042,7 @@ EXPORT_SYMBOL_GPL(devlink_port_init); void devlink_port_fini(struct devlink_port *devlink_port) { WARN_ON(!list_empty(&devlink_port->region_list)); + WARN_ON(!list_empty(&devlink_port->resource_list)); } EXPORT_SYMBOL_GPL(devlink_port_fini); =20 @@ -1135,6 +1137,7 @@ void devl_port_unregister(struct devlink_port *devlin= k_port) devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_DEL); xa_erase(&devlink_port->devlink->ports, devlink_port->index); WARN_ON(!list_empty(&devlink_port->reporter_list)); + devlink_port_fini(devlink_port); devlink_port->registered =3D false; } EXPORT_SYMBOL_GPL(devl_port_unregister); diff --git a/net/devlink/resource.c b/net/devlink/resource.c index 10043ad26dfd..71f00e580f59 100644 --- a/net/devlink/resource.c +++ b/net/devlink/resource.c @@ -613,3 +613,46 @@ void devl_resource_occ_get_unregister(struct devlink *= devlink, resource->occ_get_priv =3D NULL; } EXPORT_SYMBOL_GPL(devl_resource_occ_get_unregister); + +/** + * devl_port_resource_register - devlink port resource register + * + * @devlink_port: devlink port + * @resource_name: resource's name + * @resource_size: resource's size + * @resource_id: resource's id + * @parent_resource_id: resource's parent id + * @params: size parameters + * + * Generic resources should reuse the same names across drivers. + * Please see the generic resources list at: + * Documentation/networking/devlink/devlink-resource.rst + * + * Return: 0 on success, negative error code otherwise. + */ +int +devl_port_resource_register(struct devlink_port *devlink_port, + const char *resource_name, + u64 resource_size, u64 resource_id, + u64 parent_resource_id, + const struct devlink_resource_size_params *params) +{ + return __devl_resource_register(devlink_port->devlink, + &devlink_port->resource_list, + resource_name, resource_size, + resource_id, parent_resource_id, + params); +} +EXPORT_SYMBOL_GPL(devl_port_resource_register); + +/** + * devl_port_resources_unregister - unregister all devlink port resources + * + * @devlink_port: devlink port + */ +void devl_port_resources_unregister(struct devlink_port *devlink_port) +{ + __devl_resources_unregister(devlink_port->devlink, + &devlink_port->resource_list); +} +EXPORT_SYMBOL_GPL(devl_port_resources_unregister); --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010041.outbound.protection.outlook.com [40.93.198.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB6993612FE; Thu, 26 Feb 2026 22:20:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144433; cv=fail; b=BQ4mvY/j7GLMuNlreuSpyBvo2Bhg7G3YpJzsKDyoM2f/X72ly8R8wRQ9W6kptBqX4/ra6A4/zDDnU+vntd1R+qNRqATzT8/5+gUJrJZe1+mMjowQ+xCrnp/AcQlQXO0Fk0gRiV2+Ng76mfAm9CWINBr+Yztd8EjoKkTlunTq7cU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144433; c=relaxed/simple; bh=nah+EFKV75B/4526ToydUmqqNZKPXIShDDrX4XybIRo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bCkbp4GkSjympkRRCmISIlNp/CBanBw5dFgBSKUIOni3/Mz270tNAjrp2hWQ7WBwXPPbXpviM2p2VZmD6GRD+DugFYxhVQuzuKdmPc6lM3LF11LfWuUKqOO8Am6sJMSoq+e1r8NFa7almpdPdJzaH/F/gvO2G9Rlr1Xl0TnokNw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=cgdR1rvs; arc=fail smtp.client-ip=40.93.198.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="cgdR1rvs" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gz77V7nPQlsOeKmltKpHzi11Jv+yq96DgN9Oe4mg/a2QRQ1ODfcZ9vtHuyB0AkIzlXZhJPso7Gs6DSNIiO5vHfne1/E7T0+NrLUDUq5D126MWrZr/z8X0Lpu7nCYoa6u5ug4VbvfmpvQQbBmkNcwGtslQy3GpmWjU42vLzXiQ+PYBD782c9LsLR/L4RmXvdSri/HZOmulG8PCe6x7YH4fZEXY11gsT5ePjGsajRPppjHrxCIHn7OkhmD0Fl7HECL75uPo/fiR7t1lBGj1HAcVLmGCHC85hERuhURLOx3pKShw0WnJD47Phe3tP7xteF9WPahVJsuosA+iiRnfLGuEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+6tDMMEKE3c9dL06lT/WMIqQOKJ7J0tKLmuZqlPcDcc=; b=b5W5tZlbkAbEWblFQHC+3VwjmSbjPgQLnwa8tjdY3fLNmKCtBF7/vFoaFu5W9Y3o6ZRe3a9ZTbuUWBPRcaxnyGL54C3L71gmO3cWUIB9aFLoRoPmxKjUkFiCGgRI4y9HGD+7O50CmcT5JD7Jwbd/8fQMNG41RrSauwUAJ3568xwyzvqwNe9655Y31gG/PUHek16nv+/zjnE4KlM6Q3UCtAAd/bURe9k11pDuAXQ2MHLiqL66mxTAYMDeDI9AvwqiKKiw86KCSLQoWoesXL0ib9N9Mxi10MumR96Fh7d/B2QHNGCyaPcJjvfi+zs7S//v15YggAx/azllOPOM2K9CVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+6tDMMEKE3c9dL06lT/WMIqQOKJ7J0tKLmuZqlPcDcc=; b=cgdR1rvsy2SCssfvWOm4q8kCCFmqaQqlG5OanrPpgSiLmlfDRqJs5nL+s4DCYpQkplbC7d3rxjXfiZc0o5bYUbjzk0qKt5FqFWu3/BIwDMNIc/tsdtwMKE27WH2wKq/37BasFjRi/8dnsJ7nta0+0r4b1jfj+sgkVsIe060PampwmEiNoGxztAIQM7Wa3CqIsWVjP/NRWjFEQLC8eBN/WTcw9gfm1QdF0F9XZAFLSXgSs09EPbvq4sBMQtjeRYHi3KbE/sXHGuJ+deIjtuWP7FHiRf+FEkpo2ZKbxELB5omeBN2Mt6iQRTvR+2VISIJT54AOgw8iBaY7SXnrtX7STw== Received: from BN9PR03CA0227.namprd03.prod.outlook.com (2603:10b6:408:f8::22) by CH3PR12MB9022.namprd12.prod.outlook.com (2603:10b6:610:171::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Thu, 26 Feb 2026 22:20:17 +0000 Received: from BN2PEPF000055DC.namprd21.prod.outlook.com (2603:10b6:408:f8:cafe::b1) by BN9PR03CA0227.outlook.office365.com (2603:10b6:408:f8::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 22:19:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN2PEPF000055DC.mail.protection.outlook.com (10.167.245.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.0 via Frontend Transport; Thu, 26 Feb 2026 22:20:17 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:02 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:01 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:19:56 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 06/10] devlink: Add port resource netlink command Date: Fri, 27 Feb 2026 00:19:12 +0200 Message-ID: <20260226221916.1800227-7-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DC:EE_|CH3PR12MB9022:EE_ X-MS-Office365-Filtering-Correlation-Id: a1a9c359-5307-4ddd-c6ca-08de7585387f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700013|7416014|82310400026; X-Microsoft-Antispam-Message-Info: Ei2uld4UD3ix2hConVRw49j/TmKZBgRw+DIfi7Z6PR6xghe9kY1CKRg5fBeD484aHRlNwtmTJOK3k2g1/E82FavvySLrdYU41BAoaGQR7gNmY43pMMxM0RwzGQEGOyY1pdiP9CEjPIiJw7qrhJh89dKC2On/VmPukAqrkO1kLTmRn2oifu7aaaROQoI/maS2xERxygZITfMPyXACwrYYXKumBvWs4y2kj4xHpbP09S8VKxAXBtF/S0TdgS9fJOXTlVRxq+4O2gd/4k4fgxy+k0yheV9/mMOauI6ubDloyQLxfHYu44srpiSguSuJZFdaA2Nw4wYP79jACA9NqvAreEwGX3kWkBl7lVF3z0H2ZYCXwZiE5wzTL1VgrUt8CUFDAVV8vE0WrFuz9vwLWKf+7GB5HV8Ro2Or+WRk8iwEvE6TbBPWcYGOyZkI0fT3hUpmhUT60D5XJDNG9UeTY9WwMMadoA7MeMbnsi4BZ/aV/LePWZvooyX9/5ijvmRvMMgB6GtAjUk64yh3MlP7y0/3tYR31nx8i6soNm5zTXmSMVWS6A2Jm5D1WPkYDbQqva+UsEwqs4mrCgOgPdym5Dq2TehTZ9ErkKjfnhrp1D0iLAsBVC9SZhtnfQMRc9gW2+o4Nv+W+eL1aZzPgHZG/erGXit565qDe8iqgYjuimo9FMhg/vXp6KPNnDOAHyPZFlL5ujAl//3ZWlGeL8Am4gbJ0ugJo6GRtpILkrMTwuvN6WB4KPks7lqgwcWdj0FhA7bW8jdd/ykrIqsUga5HwAvMpI79VEexTtWbsO57FUk97eNfEUSE62pSLrNoNS3sQahfY1DZYX7UFPFUgI2T6uL0RA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700013)(7416014)(82310400026);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v9c3uUmbBiV+VVAYFPGuQjAUYvTZBAfEpsKtbsGGGw6uK222V9/A+OI4I7z9iV6Y+IMl7kAD0TlmeNF8xpZ2Qglc/FJAA2yQohBT2CX7y/fOxWipMiZNgHQ0mPiO/9jW75A3J0BXtmbAJwKWX6XFy+/g+r3Kyr8qn1L8uOr6gWtqnU/kTXMFcS+lmuzoMzmuNJ2nA3lTwlCwsdtTKr8VFI8VHfZ331aENY12PXHMJOHzc0M9RQ7ESofHVHg58as86j2ESVHsn0JGbv5yywyUixJT/fI7aCirSXpkcveZBv3tVaGeDqiFu5CFHmU3fTGNgytSAybnPvXkc3Ls6KyeuBGrwNsKuyZWOpBcts+oxohRcDDzL0vyjDxYvpx99e5NDszHC96UhvfbjK2fO7fWvPGpiRxuQ/KjEG9Cv0MGoWSxKIlLAXPD3kQad34b/4w/ X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:17.0282 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a1a9c359-5307-4ddd-c6ca-08de7585387f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DC.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9022 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add support for userspace to query resources registered on devlink ports, allowing drivers to expose per-port resource limits and usage. Example output: $ devlink port resource show pci/0000:03:00.0/196608: name max_SFs size 20 unit entry pci/0000:03:00.1/262144: name max_SFs size 20 unit entry $ devlink port resource show pci/0000:03:00.0/196608 pci/0000:03:00.0/196608: name max_SFs size 20 unit entry Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- Documentation/netlink/specs/devlink.yaml | 23 ++++++ include/uapi/linux/devlink.h | 3 + net/devlink/devl_internal.h | 4 ++ net/devlink/netlink.c | 2 +- net/devlink/netlink_gen.c | 32 ++++++++- net/devlink/netlink_gen.h | 6 +- net/devlink/resource.c | 90 +++++++++++++++++++++++- 7 files changed, 155 insertions(+), 5 deletions(-) diff --git a/Documentation/netlink/specs/devlink.yaml b/Documentation/netli= nk/specs/devlink.yaml index ee679ac14261..9b813f5fc51c 100644 --- a/Documentation/netlink/specs/devlink.yaml +++ b/Documentation/netlink/specs/devlink.yaml @@ -2340,3 +2340,26 @@ operations: - bus-name - dev-name - port-index + + - + name: port-resource-get + doc: Get port resources. + attribute-set: devlink + dont-validate: [strict] + do: + pre: devlink-nl-pre-doit-port + post: devlink-nl-post-doit + request: + value: 85 + attributes: *port-id-attrs + reply: &port-resource-get-reply + value: 85 + attributes: + - bus-name + - dev-name + - port-index + - resource-list + dump: + request: + attributes: *dev-id-attrs + reply: *port-resource-get-reply diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index e7d6b6d13470..1cabd1f6cba0 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -141,6 +141,9 @@ enum devlink_command { =20 DEVLINK_CMD_NOTIFY_FILTER_SET, =20 + DEVLINK_CMD_PORT_RESOURCE_GET, /* can dump */ + DEVLINK_CMD_PORT_RESOURCE_SET, + /* add new commands above here */ __DEVLINK_CMD_MAX, DEVLINK_CMD_MAX =3D __DEVLINK_CMD_MAX - 1 diff --git a/net/devlink/devl_internal.h b/net/devlink/devl_internal.h index 1377864383bc..ddf855bc893f 100644 --- a/net/devlink/devl_internal.h +++ b/net/devlink/devl_internal.h @@ -148,6 +148,10 @@ struct devlink_nl_dump_state { struct { u64 dump_ts; }; + /* DEVLINK_CMD_PORT_RESOURCE_GET - dump */ + struct { + unsigned long port_index; + }; }; }; =20 diff --git a/net/devlink/netlink.c b/net/devlink/netlink.c index 593605c1b1ef..c78c31779622 100644 --- a/net/devlink/netlink.c +++ b/net/devlink/netlink.c @@ -367,7 +367,7 @@ struct genl_family devlink_nl_family __ro_after_init = =3D { .module =3D THIS_MODULE, .split_ops =3D devlink_nl_ops, .n_split_ops =3D ARRAY_SIZE(devlink_nl_ops), - .resv_start_op =3D DEVLINK_CMD_SELFTESTS_RUN + 1, + .resv_start_op =3D DEVLINK_CMD_PORT_RESOURCE_GET + 1, .mcgrps =3D devlink_nl_mcgrps, .n_mcgrps =3D ARRAY_SIZE(devlink_nl_mcgrps), .sock_priv_size =3D sizeof(struct devlink_nl_sock_priv), diff --git a/net/devlink/netlink_gen.c b/net/devlink/netlink_gen.c index d6667a3f87a0..a235748d0688 100644 --- a/net/devlink/netlink_gen.c +++ b/net/devlink/netlink_gen.c @@ -610,8 +610,21 @@ static const struct nla_policy devlink_notify_filter_s= et_nl_policy[DEVLINK_ATTR_ [DEVLINK_ATTR_PORT_INDEX] =3D { .type =3D NLA_U32, }, }; =20 +/* DEVLINK_CMD_PORT_RESOURCE_GET - do */ +static const struct nla_policy devlink_port_resource_get_do_nl_policy[DEVL= INK_ATTR_PORT_INDEX + 1] =3D { + [DEVLINK_ATTR_BUS_NAME] =3D { .type =3D NLA_NUL_STRING, }, + [DEVLINK_ATTR_DEV_NAME] =3D { .type =3D NLA_NUL_STRING, }, + [DEVLINK_ATTR_PORT_INDEX] =3D { .type =3D NLA_U32, }, +}; + +/* DEVLINK_CMD_PORT_RESOURCE_GET - dump */ +static const struct nla_policy devlink_port_resource_get_dump_nl_policy[DE= VLINK_ATTR_DEV_NAME + 1] =3D { + [DEVLINK_ATTR_BUS_NAME] =3D { .type =3D NLA_NUL_STRING, }, + [DEVLINK_ATTR_DEV_NAME] =3D { .type =3D NLA_NUL_STRING, }, +}; + /* Ops table for devlink */ -const struct genl_split_ops devlink_nl_ops[75] =3D { +const struct genl_split_ops devlink_nl_ops[77] =3D { { .cmd =3D DEVLINK_CMD_GET, .validate =3D GENL_DONT_VALIDATE_STRICT, @@ -1297,4 +1310,21 @@ const struct genl_split_ops devlink_nl_ops[75] =3D { .maxattr =3D DEVLINK_ATTR_PORT_INDEX, .flags =3D GENL_CMD_CAP_DO, }, + { + .cmd =3D DEVLINK_CMD_PORT_RESOURCE_GET, + .validate =3D GENL_DONT_VALIDATE_STRICT, + .pre_doit =3D devlink_nl_pre_doit_port, + .doit =3D devlink_nl_port_resource_get_doit, + .post_doit =3D devlink_nl_post_doit, + .policy =3D devlink_port_resource_get_do_nl_policy, + .maxattr =3D DEVLINK_ATTR_PORT_INDEX, + .flags =3D GENL_CMD_CAP_DO, + }, + { + .cmd =3D DEVLINK_CMD_PORT_RESOURCE_GET, + .dumpit =3D devlink_nl_port_resource_get_dumpit, + .policy =3D devlink_port_resource_get_dump_nl_policy, + .maxattr =3D DEVLINK_ATTR_DEV_NAME, + .flags =3D GENL_CMD_CAP_DUMP, + }, }; diff --git a/net/devlink/netlink_gen.h b/net/devlink/netlink_gen.h index d79f6a0888f6..cab9d30e913a 100644 --- a/net/devlink/netlink_gen.h +++ b/net/devlink/netlink_gen.h @@ -18,7 +18,7 @@ extern const struct nla_policy devlink_dl_rate_tc_bws_nl_= policy[DEVLINK_RATE_TC_ extern const struct nla_policy devlink_dl_selftest_id_nl_policy[DEVLINK_AT= TR_SELFTEST_ID_FLASH + 1]; =20 /* Ops table for devlink */ -extern const struct genl_split_ops devlink_nl_ops[75]; +extern const struct genl_split_ops devlink_nl_ops[77]; =20 int devlink_nl_pre_doit(const struct genl_split_ops *ops, struct sk_buff *= skb, struct genl_info *info); @@ -148,5 +148,9 @@ int devlink_nl_selftests_get_dumpit(struct sk_buff *skb, int devlink_nl_selftests_run_doit(struct sk_buff *skb, struct genl_info *i= nfo); int devlink_nl_notify_filter_set_doit(struct sk_buff *skb, struct genl_info *info); +int devlink_nl_port_resource_get_doit(struct sk_buff *skb, + struct genl_info *info); +int devlink_nl_port_resource_get_dumpit(struct sk_buff *skb, + struct netlink_callback *cb); =20 #endif /* _LINUX_DEVLINK_GEN_H */ diff --git a/net/devlink/resource.c b/net/devlink/resource.c index 71f00e580f59..0a1d1610ff67 100644 --- a/net/devlink/resource.c +++ b/net/devlink/resource.c @@ -252,6 +252,7 @@ static int __devlink_resource_fill(struct genl_info *in= fo, struct list_head *resource_list_head, enum devlink_command cmd, int flags) { + struct devlink_port *devlink_port =3D info->user_ptr[1]; struct devlink *devlink =3D info->user_ptr[0]; struct nlattr *resources_attr; struct sk_buff *skb =3D NULL; @@ -279,9 +280,13 @@ static int __devlink_resource_fill(struct genl_info *i= nfo, =20 if (devlink_nl_put_handle(skb, devlink)) goto nla_put_failure; + if (devlink_port) { + if (nla_put_u32(skb, DEVLINK_ATTR_PORT_INDEX, + devlink_port->index)) + goto nla_put_failure; + } =20 - resources_attr =3D nla_nest_start_noflag(skb, - DEVLINK_ATTR_RESOURCE_LIST); + resources_attr =3D nla_nest_start_noflag(skb, DEVLINK_ATTR_RESOURCE_LIST); if (!resources_attr) goto nla_put_failure; =20 @@ -656,3 +661,84 @@ void devl_port_resources_unregister(struct devlink_por= t *devlink_port) &devlink_port->resource_list); } EXPORT_SYMBOL_GPL(devl_port_resources_unregister); + +int devlink_nl_port_resource_get_doit(struct sk_buff *skb, + struct genl_info *info) +{ + struct devlink_port *devlink_port =3D info->user_ptr[1]; + + return __devlink_resource_fill(info, &devlink_port->resource_list, + DEVLINK_CMD_PORT_RESOURCE_GET, 0); +} + +static int +devlink_nl_port_resource_get_dump_one(struct sk_buff *skb, + struct devlink *devlink, + struct netlink_callback *cb, int flags) +{ + struct devlink_nl_dump_state *state =3D devlink_dump_state(cb); + struct devlink_port *devlink_port; + struct list_head *resource_list; + struct nlattr *resources_attr; + int resource_idx, start_idx; + unsigned long port_idx; + void *hdr; + int err; + + xa_for_each_start(&devlink->ports, port_idx, devlink_port, + state->port_index) { + if (list_empty(&devlink_port->resource_list)) + continue; + + resource_idx =3D (port_idx =3D=3D state->port_index) ? state->idx : 0; + start_idx =3D resource_idx; + err =3D -EMSGSIZE; + + hdr =3D genlmsg_put(skb, NETLINK_CB(cb->skb).portid, + cb->nlh->nlmsg_seq, &devlink_nl_family, flags, + DEVLINK_CMD_PORT_RESOURCE_GET); + if (!hdr) + return err; + + if (devlink_nl_put_handle(skb, devlink) || + nla_put_u32(skb, DEVLINK_ATTR_PORT_INDEX, + devlink_port->index)) + goto nla_put_failure; + + resources_attr =3D + nla_nest_start_noflag(skb, DEVLINK_ATTR_RESOURCE_LIST); + if (!resources_attr) + goto nla_put_failure; + + resource_list =3D &devlink_port->resource_list; + err =3D devlink_resource_list_fill(skb, devlink, resource_list, + &resource_idx); + if (err) { + state->port_index =3D port_idx; + state->idx =3D resource_idx; + if (resource_idx =3D=3D start_idx) + goto nla_put_failure_unwind; + nla_nest_end(skb, resources_attr); + genlmsg_end(skb, hdr); + return err; + } + nla_nest_end(skb, resources_attr); + genlmsg_end(skb, hdr); + } + state->port_index =3D 0; + state->idx =3D 0; + return 0; + +nla_put_failure_unwind: + nla_nest_cancel(skb, resources_attr); +nla_put_failure: + genlmsg_cancel(skb, hdr); + return err; +} + +int devlink_nl_port_resource_get_dumpit(struct sk_buff *skb, + struct netlink_callback *cb) +{ + return devlink_nl_dumpit(skb, cb, + devlink_nl_port_resource_get_dump_one); +} --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011065.outbound.protection.outlook.com [40.107.208.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 639584508F9; Thu, 26 Feb 2026 22:20:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144438; cv=fail; b=no9h+CqqCWVXewbCwethjVAXotEjiC3pMc9pbzV0EwJFOuqvfSLnx1Vxsz5ITRBLtHQWlgHZe4AujjxwxutztlAK8vPaCyes8g+mgvd/Lxg1ognWWIP/KZELEXHgrrw6pKq/+BEnHEi1rQwYlDe+9d3vatQoos2cVg2RLYz5Z+o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144438; c=relaxed/simple; bh=UTNNVyaLq53yezGWuMSjSODWXZgd16RmgaeyoeeydXA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JbM5D0Ia6/Clgf33qlP1jtX4dQODobhMq4J0IEKdc7NowjXkn13W/Cez4pMDY0mrGIiLTcpwBg6cTu7pxBiRQzYiSXfCjQw8UjSW3jyQ3zs7C+7irVVApUpsuUmP54gSgTRI2Ng7KTeUc6gnA8qw2Pid+caBI0vsld/hhSgeJls= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=GTJW9A8e; arc=fail smtp.client-ip=40.107.208.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="GTJW9A8e" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rlEFHJZP6NsVJbxgifjpwIydUyvdHAYfyOJr4QF2tXDwQ3q4NtFHWisPoxuOZ01GgpMGBvxtpb99+SOpT8bEOzPWKM86S0lnMiCQW2GYaYSZ7vz8wmfY3Vtzhk8vKtQSUnvSrHRXiSTB+Fc5kyylRb9zRbQQCk0/b3txduORYL0NCGBUHC8ijX5bcyfXJUZcQogrpz8ulTVUq3PndZw8kpwVB7VFiLsYk5u7tfg8fDykbsK36ixVyinqqMINv+9NE05mGz3h+LXateMteZL23Ac4YNuU1YndTZTteQFUYph8IjlCYnSR29ueCrypOppesRYUkJQ1hFFxL/UHdFR89A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=StekMdt5nMy9sRknEurYeYV+Y+cCt7CTtJzyAE3cKi8=; b=uCmCJpZDkElnOZqK1pMAQvpb9BEx4kOuAbUrvlTH17MwL0LJ7H7qz4EY6po4+eFaKY2eSeF3vxmYZFWFf21G3fSI4VQ9QjnFYqRfZNkw+EH5R+fpp27QTr3NSR3P4M95KCtuHQdBPCSu4LW/fD1R997/ho+RjnhVbjeIp0K4uNK0Ff5YRNIgCoxq9IgLbjLn9j3s3iT68ZidiI83FI3OUPIQ7obwnnbWTk1MB8Nk9gPJL9XYPR+O3Nmw7YmoTsSLlBL+/Jc+bU2hvjxc5qVO/NzPVasBfYfSKGTUd/ItekPVvJ3rZDtdFA9B6QzRykR3RXCEf8TBsS/4T9wTULLl8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=StekMdt5nMy9sRknEurYeYV+Y+cCt7CTtJzyAE3cKi8=; b=GTJW9A8eV8CwJpBadmxYkv8rsMMESOf/CANJLoiBmqS1g34K5WMlgqrPSVkqC7gaPd3+rZMXV1qlKXlKzVsH1z7iI+o6zT1ApFbv2zOJBrzzc54g5TvlOoz9xg0xCZsbNDkb0gbOVKCJZHXqbc6n+6YcnmZWeSDjY/fFmzNoJ5+C9+DKSzVsffWTkO/Oq39m02wnx+bREgeOUwCxSXrjlKg+tql6TNbQfZmCtjgoNqgfy693lz4pB3dhUnVAO2uZkp/KNOh1N4vw2oTA1JRRcIb0/gxEzNTEGo0Y/YKmk5BfEykF/bwEuPVvaAJww3ko25+2GACLESisiSpEfeZKIA== Received: from MN2PR14CA0028.namprd14.prod.outlook.com (2603:10b6:208:23e::33) by SA1PR12MB8987.namprd12.prod.outlook.com (2603:10b6:806:386::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 22:20:31 +0000 Received: from MN1PEPF0000F0E1.namprd04.prod.outlook.com (2603:10b6:208:23e:cafe::49) by MN2PR14CA0028.outlook.office365.com (2603:10b6:208:23e::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 22:20:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000F0E1.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 26 Feb 2026 22:20:31 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:07 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:07 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:20:02 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 07/10] net/mlx5: Register SF resource on PF port representor Date: Fri, 27 Feb 2026 00:19:13 +0200 Message-ID: <20260226221916.1800227-8-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E1:EE_|SA1PR12MB8987:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ad633a0-3b93-43f2-2106-08de75854114 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: vFHfH4UMFe8HNCMw+Mp8AQ1SnCdl2MfMPpR6LS6FwN0C8wCQygEqQoZBDX7n8CsjV3Mp3Z5twgSiT/eKpoSC2nXzRY94vJh6Jf5JQszEwMh7WCQ4BKGrr8Dgrs7eaBr9sqo+Z7+Md9AHdJpXh6uXJLGYkQbKPyDSnGGz76/pJmyNEH9kxSaWLiZDbXRrIP2BDW4Asp90dgVke3oPyjNGkah0X/bIX6PIIec1Sj60eI0e6UeW/ZLJkEEKpXIbffOfOou+tb+b+32REZZGRvX6SnDyvq5hE8GH33qKrRy+9p6HSN4SIzV0TLVFMwu0hFKbU0354zIJvocwFpzbTorO2zRSHjlwJ8wYkIrnHvMK1S3F7x6X9DDbkZZWYK2J+0qLoCm0fy0L/t4cA5n+rnjHUUdX33neNfo/C0uZBRq48m43utmdjDeOcVSxerOBVWqpHHPo+fGy0hyaZh5dZGNT5i/HIBy2luVtIbDL6/FZtUDMMjnmnDVwHvB3LiPtf+jTRZ0/CW/QZ5g1CMlU10iNPl563zwW+J33EQQe5+ifv/8kw3emxFsSOalf0KU565EXJ3y+Xf/Eegxy2ME9H/w7lOsLFV6HHkQW8T83NyVzwSDkWimINBb6wFrbPuKZF2PlHaLIZccYy/i1srjhnvrZT1O9yciUN3WgSnbLWQBOOK7ymadFe9cPjxwj25q9QJeSfWP8S/eW1jFYH2/8+rYHfi5IKRBkPDN9J5bmjhGD5ZCShAhObmS1Lq/fsLnWhN+q3jvped8xD6JNLuup1NxOdgIJDKidYu5CkdjN6157DTtwiYrxcCKtAJS0QXWCLq2u85zg2GjA21vRBMYCDGW/tQ== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9NozmT/l/IW7jFtCNLnhulhaONIvGYlukrMUH4qQSufVEaqJl4EEJpK4c+Uz0wo1/vkMRi/RmGXUVbLHUrJECyLwxPAIvLZ5z/MjYxL6IFfLuU/131rogGR2nIeeU+wwf8yLYPsWaPcbhrMHu7z7hY1W8z6+YxlV8sNQmHT6PY6Ryi2cGlDYjR9JfGaQiCYWjdUcT2Y1aMwZt29wVB6U4FPkFOLsQO9UOYdfWDCO1fQgDcyTb8926gR75XWJfX7/TLkH3bOQXh3imIhPeQmwXxv+VpQUTkkn6AsTcbx8v0xA5Pm29x2w9naSK0tWifYbWwKfqOWNwiGR5wwznvGCrgu4BgMBOKljllpQ7IoUke43VsN9CFxLgbhMvw2ajlHaHKMogNXJZ75OWgi3Gxsfa/Eu9FB3uhEnLmTruYCRjKYp6v9v5xP8NZxnd3sNCebk X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:31.4263 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6ad633a0-3b93-43f2-2106-08de75854114 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000F0E1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8987 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov The device-level "resource show" displays max_local_SFs and max_external_SFs without indicating which port each resource belongs to. Users cannot determine the controller number and pfnum associated with each SF pool. Register max_SFs resource on the Host PF representor port to expose per-port SF limits. Users can correlate the port resource with the controller number and pfnum shown in 'devlink port show'. Future patches will introduce an ECPF that manages multiple PFs, where each PF has its own SF pool. Example usage: $ devlink port resource show pci/0000:03:00.0/196608: name max_SFs size 20 unit entry pci/0000:03:00.1/262144: name max_SFs size 20 unit entry $ devlink port resource show pci/0000:03:00.0/196608 pci/0000:03:00.0/196608: name max_SFs size 20 unit entry $ devlink port show pci/0000:03:00.0/196608 pci/0000:03:00.0/196608: type eth netdev pf0hpf flavour pcipf controller 1 pfnum 0 external true splittable false function: hw_addr b8:3f:d2:e1:8f:dc roce enable max_io_eqs 120 We can create up to 20 SFs over devlink port pci/0000:03:00.0/196608, with pfnum 0 and controller 1. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- .../net/ethernet/mellanox/mlx5/core/devlink.h | 4 ++ .../mellanox/mlx5/core/esw/devlink_port.c | 37 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.h b/drivers/ne= t/ethernet/mellanox/mlx5/core/devlink.h index 43b9bf8829cf..4fbb3926a3e5 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/devlink.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/devlink.h @@ -14,6 +14,10 @@ enum mlx5_devlink_resource_id { MLX5_ID_RES_MAX =3D __MLX5_ID_RES_MAX - 1, }; =20 +enum mlx5_devlink_port_resource_id { + MLX5_DL_PORT_RES_MAX_SFS =3D 1, +}; + enum mlx5_devlink_param_id { MLX5_DEVLINK_PARAM_ID_BASE =3D DEVLINK_PARAM_GENERIC_ID_MAX, MLX5_DEVLINK_PARAM_ID_FLOW_STEERING_MODE, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c b/d= rivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c index cd60bc500ec5..9601eaace168 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c @@ -3,6 +3,7 @@ =20 #include #include "eswitch.h" +#include "devlink.h" =20 static void mlx5_esw_get_port_parent_id(struct mlx5_core_dev *dev, struct netdev_phys_= item_id *ppid) @@ -158,6 +159,32 @@ static const struct devlink_port_ops mlx5_esw_dl_sf_po= rt_ops =3D { .port_fn_max_io_eqs_set =3D mlx5_devlink_port_fn_max_io_eqs_set, }; =20 +static int mlx5_esw_devlink_port_res_register(struct mlx5_eswitch *esw, + struct devlink_port *dl_port) +{ + struct devlink_resource_size_params size_params; + struct mlx5_core_dev *dev =3D esw->dev; + u16 max_sfs, sf_base_id; + int err; + + err =3D mlx5_esw_sf_max_hpf_functions(dev, &max_sfs, &sf_base_id); + if (err) + return err; + + devlink_resource_size_params_init(&size_params, max_sfs, max_sfs, 1, + DEVLINK_RESOURCE_UNIT_ENTRY); + + return devl_port_resource_register(dl_port, "max_SFs", max_sfs, + MLX5_DL_PORT_RES_MAX_SFS, + DEVLINK_RESOURCE_ID_PARENT_TOP, + &size_params); +} + +static void mlx5_esw_devlink_port_res_unregister(struct devlink_port *dl_p= ort) +{ + devl_port_resources_unregister(dl_port); +} + int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, stru= ct mlx5_vport *vport) { struct mlx5_core_dev *dev =3D esw->dev; @@ -189,6 +216,15 @@ int mlx5_esw_offloads_devlink_port_register(struct mlx= 5_eswitch *esw, struct mlx if (err) goto rate_err; =20 + if (vport_num =3D=3D MLX5_VPORT_PF) { + err =3D mlx5_esw_devlink_port_res_register(esw, + &dl_port->dl_port); + if (err) + mlx5_core_dbg(dev, + "Failed to register port resources: %d\n", + err); + } + return 0; =20 rate_err: @@ -203,6 +239,7 @@ void mlx5_esw_offloads_devlink_port_unregister(struct m= lx5_vport *vport) if (!vport->dl_port) return; dl_port =3D vport->dl_port; + mlx5_esw_devlink_port_res_unregister(&dl_port->dl_port); =20 mlx5_esw_qos_vport_update_parent(vport, NULL, NULL); devl_rate_leaf_destroy(&dl_port->dl_port); --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012009.outbound.protection.outlook.com [52.101.53.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCF813A0B26; Thu, 26 Feb 2026 22:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144452; cv=fail; b=syOdspm8bxq2cquDecxPAkqBic9dTO7Rd3R3ZjkKJvy2OqokIO8t6kmJ5xi9ur+XiwaHSULg9QAd7QO+jd9l7K8SJh2V6HU0RC5N0/s/Qw0bErgESn/EuEMcTpu77qatSj0PIgvfLPP237Fhlg140hNO8/lIQWDFx/l98U7PwNE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144452; c=relaxed/simple; bh=RyJqm06nJp4BSmne4q/2dPS56JIBVuhdwtkmhj7qj10=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TTQFwCZLq0j+wA3lEqiABsxR2KW39fQWZ4C3Z9/KToC1uQZ3VUo4N+zn/QmwvO4IuadcAyPcV3QxEQDz8bbWzzIB+ggqU5MtSM+Yq7upZESIzJkjRFvQk2UvecMPmc1+dtbzUzpEOS6lRz5eUtvsqvzzkHt8UK5GeQVRTDsZclw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=ngw1u7wn; arc=fail smtp.client-ip=52.101.53.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="ngw1u7wn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DMarrerT8+ZW+YTITuIblCV5olbDaNcwWdwhuk2kkJfOigEkfo5x26wWe78PNGXjmwbfE0Kz4fvw+QFXfpq3fpVDHpYd9vDOblp+HWFi4eoGtL6r/6ZtTmLfBMbEFR7DItTGi0SHTCF6pCy01v2TDI4pkyBMfexiDOt4ogC9eOpfgXsqfz3iRxUoh72h0PtY58XTcW7iwjQFODPX5En0VUZT637OiMUhZPagrgToVhsraJ/p8g+iKDG+JlCPVvgDPizYIiB40eHJk9fyX45sXLNMx1qnXQ7ypIlyhR9dDq3zGgL2v1xW0XA5CEAaPMsenTpDgHwFuVFP5AYGamN74w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jUM9Z2Rv8fWNMcWS8XGLGU+TozRiLJdItSocgrJpIhM=; b=HMVrCOEoVnuNC/2FbEU/qHxk6jEs5/0SECpZsENTliRue9Jy3ldHGgmNXxuVTXAtZvG8UV5MCrr9RGDJ+YeER9r8cQCA7P2XZwJ7B3lsFi9afHEAsheb7IXUc92vFW0+/lsUtTDAiSJJeHJZB4gmXNdMX+dO2S69hPibT6rsEbAcnvqhLDo/v671uyF2iTLC6asK0bS7aATw4x/wj719Vy3Gck1eL3zuVsBHYLfuQ+T6ceDgQ+qdwEQkQPGWCqlJi20cdxPfRUuemcfQGL6KMQHzhfIP20fewabf1R5a7k2UlbXAlCkyPOlyYALxr/6mHj7dXykcAvr6Ylzv0i31tA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jUM9Z2Rv8fWNMcWS8XGLGU+TozRiLJdItSocgrJpIhM=; b=ngw1u7wnlsm1kpUbc7MIfAYMFRZRSNUMrkjXLYmq5mHj1YvwNL6hHVbpBVWsPdRbgjJAXniyimSvGE5tppZCHS0LiiNjUnDVBqhpRhFsI+161ZWdz7b9G1cf13Ef9NgzccCeYNCcGmJPjHBpk52qYslUnG0bAlCaTzfDg7MLi1mrPfrXD3SXpx2pvQQuu7bJATNnA0Q4Kd2RW8PTvrllZwYJtD1YHsIQQCng68Bxr5UHWAZ9R0guWMv8pT4hQe1vbBZV/KeC9hIm/Y5d8rMQNP3n2Kh0O/NBQeCGg8TxB4wQBQWiFMmIFLhRHFZW730WonLmGWlc/7UWAA4AOU4QZg== Received: from BN9PR03CA0381.namprd03.prod.outlook.com (2603:10b6:408:f7::26) by DM6PR12MB4417.namprd12.prod.outlook.com (2603:10b6:5:2a4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.16; Thu, 26 Feb 2026 22:20:39 +0000 Received: from BN2PEPF000055DA.namprd21.prod.outlook.com (2603:10b6:408:f7:cafe::46) by BN9PR03CA0381.outlook.office365.com (2603:10b6:408:f7::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 22:20:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN2PEPF000055DA.mail.protection.outlook.com (10.167.245.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.0 via Frontend Transport; Thu, 26 Feb 2026 22:20:38 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:13 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:12 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:20:07 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 08/10] netdevsim: Add devlink port resource registration Date: Fri, 27 Feb 2026 00:19:14 +0200 Message-ID: <20260226221916.1800227-9-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DA:EE_|DM6PR12MB4417:EE_ X-MS-Office365-Filtering-Correlation-Id: ad901de8-472c-4da5-263d-08de7585458e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: lJK24NIgpk+wnEMXNoPzpF/ERDnwv2NGic0CBLhsBJ8wSpYsGp3GOa/iCcRmttT40AMeT4AJKklyt02w6FJZ8SyuWSTHTYKtDkNWy+Iq1xS00sLhXmbGWRI+kC0XMHjWSz+DReXUTvyMz6JhnLwrSq90jQAwlugVzSOmqx09TFzzqwcFW4wrQHfNbm7Obh0iYv72vgJANgk4BusKMKWXtY28dQYHFR0Qj8Ab7PjZEpKd6i95SCceYFA6zhTBcdJw5XO3Fybt68bz0KYYYD4yx8TyyHYmXpZivR1InX4uc/MbP+EHJCytjcFTu6NvtijI3FXh5JaR4gfHhHbnWvc0rZYOigtTJlsV0yHNS0eeez4wEIOZtujlc3t72Jgo4bpzu+/8VfmAl7nBUTyEgCILcokj8cVf4ETNfnDHC6ZWrNV1QDvFVXunvVyQjbS/Hz12PcsIAdGnAhPlNrKYBASVBIbmzSyvR+aqVCbLN/dlTmXaXVvIvyrOBkITMOZ3Qo+G+y/zschAliNXWV9j+EMYK2135IZwa9Vg+vuUUt4LmOMnr+PXE99gvhGka0eoSCkBvO24ptJU4sj7pTXVwzQsFiwF3ncME9R45c8Sc/i9lRITWx1S6RqbjtMj7QVIoD8DsVoq+fm6onU5hrVgth/069qhYAvgi+JZcRfG5YM0DiZjtkTiHaXMCnNNMQPMtDSW+XWuInHPTM8A0FXnXdB/EzxZIMcBvkNzSmfumwnGaRlFyQSm10sKIBwebyT6QjREaIO3MhmikM9Pl9yyI1o01kIX49Yu5zYj3xYYFsRN3GRzqLTsNzmrmmDQOhXJERuSjZ/mYwQ6aPY0qtWPLxnrRg== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uLarJqLFBCAPVGRXWs6/u/rZPyWPtIpj72ZJjv4rjYRElcea9k59z96miOD6iSKZvgCw5bhv+rdWQufly2WcB1Bfk1cwFtKSMVlahTBsN68EDHr+KWlFw6ClEhREVbxqmI3bHBISwrpp020bn9Ds/1aZzX/2tvU1gcc+1R/5ZkY89psj/2/2nLpD4A79CnLw14+a1h3h4RoTjIbyPmtjBbpk3vrZPWmwPY0BKsON2SmJNuVIFvADS0NDDipDSWWII8Qma9i9vIxxShEwcNL1CAEr+Adw//Ix69P4XHxDYQvDSRF8dUrK7LTlOaMSHsqxsJl/ZGQcV5yAshUqgZo2Aaof9UpFbGSoZ6v2MaiOt8E9f7GJhJoQFmxMWMeUgyuS/6wb4dqTKeWqMiw+gJLoo7DWMy1DErcz8xSOhJklgKcdQYtbFAaM/udqt/ZA7Gfw X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:38.9068 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad901de8-472c-4da5-263d-08de7585458e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DA.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4417 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Register port-level resources for netdevsim ports to enable testing of the port resource infrastructure. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- drivers/net/netdevsim/dev.c | 23 ++++++++++++++++++++++- drivers/net/netdevsim/netdevsim.h | 4 ++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c index f7b32446d3b8..80df3ffd1bc7 100644 --- a/drivers/net/netdevsim/dev.c +++ b/drivers/net/netdevsim/dev.c @@ -1487,9 +1487,25 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim= _dev, enum nsim_dev_port_typ if (err) goto err_port_free; =20 + if (nsim_dev_port_is_pf(nsim_dev_port)) { + u64 parent_id =3D DEVLINK_RESOURCE_ID_PARENT_TOP; + struct devlink_resource_size_params params =3D { + .size_max =3D 100, + .size_granularity =3D 1, + .unit =3D DEVLINK_RESOURCE_UNIT_ENTRY + }; + + err =3D devl_port_resource_register(devlink_port, + "test_resource", 20, + NSIM_PORT_RESOURCE_TEST, + parent_id, ¶ms); + if (err) + goto err_dl_port_unregister; + } + err =3D nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port); if (err) - goto err_dl_port_unregister; + goto err_port_resource_unregister; =20 nsim_dev_port->ns =3D nsim_create(nsim_dev, nsim_dev_port, perm_addr); if (IS_ERR(nsim_dev_port->ns)) { @@ -1512,6 +1528,9 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_= dev, enum nsim_dev_port_typ nsim_destroy(nsim_dev_port->ns); err_port_debugfs_exit: nsim_dev_port_debugfs_exit(nsim_dev_port); +err_port_resource_unregister: + if (nsim_dev_port_is_pf(nsim_dev_port)) + devl_port_resources_unregister(devlink_port); err_dl_port_unregister: devl_port_unregister(devlink_port); err_port_free: @@ -1528,6 +1547,8 @@ static void __nsim_dev_port_del(struct nsim_dev_port = *nsim_dev_port) devl_rate_leaf_destroy(&nsim_dev_port->devlink_port); nsim_destroy(nsim_dev_port->ns); nsim_dev_port_debugfs_exit(nsim_dev_port); + if (nsim_dev_port_is_pf(nsim_dev_port)) + devl_port_resources_unregister(devlink_port); devl_port_unregister(devlink_port); kfree(nsim_dev_port); } diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index f767fc8a7505..985530486184 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -224,6 +224,10 @@ enum nsim_resource_id { NSIM_RESOURCE_NEXTHOPS, }; =20 +enum nsim_port_resource_id { + NSIM_PORT_RESOURCE_TEST =3D 1, +}; + struct nsim_dev_health { struct devlink_health_reporter *empty_reporter; struct devlink_health_reporter *dummy_reporter; --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011002.outbound.protection.outlook.com [52.101.52.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9DF9F42883B; Thu, 26 Feb 2026 22:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144451; cv=fail; b=Id7yCPu4r1bMhsnVMZ3IXfgpE0wXMQuQQsrZnrxBZE4v31Rg+4xJ4dO90alL0YJAXiDAr5fvNBTI+Q7RerIZwV0ClXaQy/g4e+UZrsQN7AupOzGwNbhs1qTCBbd1N3cCBOho6HAgh1zAJ0ZcZbL//N0NzmSMK8mB3h4kLS6N8+E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144451; c=relaxed/simple; bh=VKiNoU8ZWEuiiPCUQbDfrDi0zJe4rrpuSqyL5+17yJA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uG4Zx8h96Dj8GsKeqRfAqkyRu0Pxdy+PnH+xKam0SCo8KacHY00l6NzeE9co9aFiL/t3E8kQ05YFvZvx7YBFxWyp6ogk+Q2PboFlBd9w79RgDw32cBw0IrhIFoL7u8PAAUSO+83YBX6aO88rjMP/uQ2zoPW+PXZWQdlFBP7QuTs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=OoG6ZP7u; arc=fail smtp.client-ip=52.101.52.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="OoG6ZP7u" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HG4SmkdzZLMxAIMRpSHQCT7nPTcEKe5Dr99cAgBZh/7xucldF6GCySQxHErbOBaU4EheRb5Qul6a0SUQGw4fE00Jyg0U/9MIWE483BxGhsnS+BrIf4MIh6yKUDtL57rbtdppxKSKj3ol5J5/JVuzTmLC+H1f+dbV8OCXYo0q0uutQ0qju55gfdFW7xtlser+Vtj2XECHSc8kdqwHIEm/nuGmItSGkUlilnWOtPb5wxWUg0U8dq4rpX7GpEOtRkNMD4lmAm43KGzTNq8bgumMGbhS9O2Yc6hszLKFCRcfsLpScVLVnS5I5lMbcaJv9pCutS5Q424m2mHKcMWg6z+Clg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6qELmdfexFI2XWh9HWiVbtA5gdCa0q6NMGSFO3KCpTc=; b=gOmiC6IFc5xVAHB/FJ3alZpnBVN4IMQ9pNrlWu/Ix0R2QvcHT36IyUIKZTDL0zCE64w44kJkV6Yae+GkPfZvU8wkahfopX1XZ7QiTKWQdiQIACJUv6jG6Ocn/ndrm0o9Aad9nMyJKqUNcjPX36NIOv2qsoJ6Oz5hIYyNLYjonNnY3FHyaVL9xPDIufFOprCNUuhsDK2i9xl1VnEPcU+WWZj2+M5bA9IYKCZyoTYzTxvSyJBq6CtyGjzBJkKcOg52pA8grHPHX7fn0ZCzIYNOVFuj1UjVVPm2fcUcebqQNmtb+BROMxcWhUuhKOLGaqs5nkGchnrCvtJ8zkpoLUfVTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6qELmdfexFI2XWh9HWiVbtA5gdCa0q6NMGSFO3KCpTc=; b=OoG6ZP7unZ6J/RsbMN1dSsY5mjDnvtD721tYk8JkQY9dyLMiMCSFhotb4U+CCv1PCzSDKNN4UM56jjTkKr0HXAXrz6Dze/WuhjswG/FoeqHFgf2V239rsTmVoI0hKDRq/R2s8n8Y8s9r9DPNRo6D0LNqDSoUeeP8IpOq59CWI7EHCvebuGkAg9fBryIxu4xTcEfW8eJh+gqcRaULoZhISIDC82lvq6xHGUvhlqx3whUn0qRM6JpPg/YdzDOtLJFFZujUxA4VrZDmDz90FK54D/O90vSNnK2xd2QJErVseIPNUxpInTiYZ2vJE0iqLWBRd+heQHMt2G/L95u8pSd53Q== Received: from BN9PR03CA0211.namprd03.prod.outlook.com (2603:10b6:408:f8::6) by CY8PR12MB7122.namprd12.prod.outlook.com (2603:10b6:930:61::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Thu, 26 Feb 2026 22:20:44 +0000 Received: from BN2PEPF000055DC.namprd21.prod.outlook.com (2603:10b6:408:f8:cafe::31) by BN9PR03CA0211.outlook.office365.com (2603:10b6:408:f8::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 22:20:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN2PEPF000055DC.mail.protection.outlook.com (10.167.245.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.0 via Frontend Transport; Thu, 26 Feb 2026 22:20:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:19 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:18 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:20:13 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 09/10] selftest: netdevsim: Add devlink port resource test Date: Fri, 27 Feb 2026 00:19:15 +0200 Message-ID: <20260226221916.1800227-10-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000055DC:EE_|CY8PR12MB7122:EE_ X-MS-Office365-Filtering-Correlation-Id: 79759256-63a8-4fb6-fcd6-08de7585485d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: QGGfpcDgagQOb3F65e1+X1/yBAp5P/u9LW0O+mUFzATFubT7NAUcVs5RxTTFzH8YDihzX7/Dw9VddBEX9nZcS4kIul/1c/MkbWtnAvzy8xV7JVRzs4+sf7QlNuO9AxqU21L8+U5lYTCuZaJ96Kiz241/5fhHm0WCGsV57rPFp6zmVJlPqUFkTvUqg2dMnyRLSAwvJ2a6NyOysnZ2C3SHAwD3trhkIY+vNgAsjWf930qX0abcnNMJh354gmqg90Po4Zqbzc+RoZp5zLo70fYff3UGqHRBF8mLvEvVPYz27ot4ybphpdDaIyzVk1/OXGvn70JdtO2MayW1YzDgk2+BeOZOXQa6yQGdZPxR09Bdwz2AIHjOufAax9Sz87x8spSQA9Et5KrMea8It+OtEAG8bPsg2Sg9dc521EnmWWzgFprF3CSca6YyInBCuY08/ZIAG1Is7H1qWXbnYpGpaQTWCcNB3ppzKz4yXDk0q2hRJcoRGEUS7NH6NI0x8RTlQWp+1xScG/nlkz1/VdInY25tVylz5Nzt9iPrApJaeRNTZCm+W89W2iKW4tzw/xZW5l/446JpR0unuzRiR+5yILz7S7yqJ/zZMlJmUVw2eKEwNC9AVQ1eB+F+IcD8ojLnG3xNa8IH0B4QIXHasxuTQ6XArnKFyQvglDJCu+3qT515a+x7sLaaLrClB8bcvtlkULRgpJTcDWR8cN6mk9SWKi7sqBMRolJPv4Q1OiCEGXuwT+z+1Wxxd9vuoFilkJ6ikw5kzTzIBkMoXwFujtPGayBJ/jJ6DI74rLxjIIqK1HqNrO5XRApBo/bm9LCK4t7YLV1RsCw6uPBpDbOyqrBFdU+jCQ== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Kk4rXIcQzCb9rFqRy2Usa8mQx1K1gNzMV4aQWx6M0ktT5AQf7D9BniQzt2wNU52X4ttNuG7F403hKO4gPpnHKbfwClb29a8yU7av1g7SN1tEczLyiL00n2Rok2rIrl2tII/4cQuD1sw16jnu24S/zS8gM4J7Gp8JxLXzqIiulJ9ZCiRj2Ogc3ABDDnf4VHkAGBTSkZ8YTsNhVtR6DTnRNTZP0OmCGP7T2iuczvyuN8vlqldDb6zoIZk81dJlqU52GLGikr51/EjBKyeNS+tP0eKFcutVCHJFZg53rnQA0WIlzDkmdR3NvKlli5WwMJwP28t8rGnRv+cmuiIluHNDakZJvTEy9mu0Raqr2juIgBHEyDtsXYVCMfpNKMyzuGw2SU13PcYkjEV/Wf5dmSfwgILe3y5AN3gQwh+TFtXSzU8xIbhKoUOAVh2QmITTCgcP X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:43.6557 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 79759256-63a8-4fb6-fcd6-08de7585485d X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000055DC.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7122 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add selftest to verify port-level resource functionality using netdevsim. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- .../drivers/net/netdevsim/devlink.sh | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh b/too= ls/testing/selftests/drivers/net/netdevsim/devlink.sh index 9efd20d0241c..93f6ef3cd700 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh @@ -5,7 +5,8 @@ lib_dir=3D$(dirname $0)/../../../net/forwarding =20 ALL_TESTS=3D"fw_flash_test params_test \ params_default_test regions_test reload_test \ - netns_reload_test resource_test resource_dump_test dev_info_test \ + netns_reload_test resource_test resource_dump_test \ + port_resource_test dev_info_test \ empty_reporter_test dummy_reporter_test rate_test" NUM_NETIFS=3D0 source $lib_dir/lib.sh @@ -871,6 +872,41 @@ rate_test() log_test "rate test" } =20 +port_resource_test() +{ + RET=3D0 + + if ! devlink port help 2>&1 | grep -q resource; then + echo "SKIP: missing devlink port resource support" + return + fi + + local first_port=3D"${DL_HANDLE}/0" + local name + local size + + devlink port resource show "$first_port" > /dev/null 2>&1 + check_err $? "Failed to show port resource for $first_port" + + name=3D$(cmd_jq "devlink port resource show $first_port -j" \ + ".[][][].name") + [ "$name" =3D=3D "test_resource" ] + check_err $? "Unexpected resource name $name (expected test_resource)" + + size=3D$(cmd_jq "devlink port resource show $first_port -j" \ + ".[][][].size") + [ "$size" =3D=3D "20" ] + check_err $? "Unexpected resource size $size (expected 20)" + + devlink port resource show "$DL_HANDLE" > /dev/null 2>&1 + check_err $? "Failed to show port resources for $DL_HANDLE" + + devlink port resource show > /dev/null 2>&1 + check_err $? "Failed to dump all port resources" + + log_test "port resource test" +} + setup_prepare() { modprobe netdevsim --=20 2.44.0 From nobody Tue Apr 7 17:14:30 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010032.outbound.protection.outlook.com [52.101.56.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AC83399013; Thu, 26 Feb 2026 22:20:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144455; cv=fail; b=NXUWDHC4qKWFtlIAZzLMkEkg08wWvu3y9X1ndKy6t6oxvfNojDfGGT4CpqxD6nYcFbVJvQ3V9DHiqYoPdlvxZasDfsLdoFj7j7V5f7FP6lLC7+vAthqEereee4MSGVBMpwawEjQfTmxSjufpjcoCqq8l6/yVCCrI18hXq/oQu7g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772144455; c=relaxed/simple; bh=mygv8j3FyEUxu5ONg51cx6hvtcsG6ocEXb566FSuX9c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=qLjQ4jRtWsrOPzYdQXu8oGMRIbeUP8snDscy73KHLbzQSGs3mw4EjqrceDAvizFglXv7TDm5kJ5PqlEF9VDCeG1TDsJzVsaUb9/4EUwvICy3C/FTYaMomMzCPZMZUEv/JDsD8UhquiC4KLH624sbMZpV02aH+yU1LSEvFxaqqIs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=BtHYc0+W; arc=fail smtp.client-ip=52.101.56.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="BtHYc0+W" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=es+2IbVQ/6wMiLDmV1YWNDakLCnjgcNXV3F3boFxYRlyPRBXD8gqob/7GdnGViDYMjjvOeGwdIlkTWrL2FJ9I4apBPr87suftI+UEnkOst2CNP6Ogmp5YwO/yUXJybGyaUd50bg4ZbHO7vcJ53PRkvTTYkn9dr6MztXt4aeyOR76zIZJR90Sw0sKHd3sJIU9r+vBz22NleDJPzo464v2A2ojLjLrRd150ySBnoj3lHJhT7PmHtwU8Wlu34Z6CQKDrr3g473zu3oP+5Gk3LMpk79sfWaqoNGoH7W4k0xUj/uwR4a/5ztRc3CCid0as0nyOrlOjvoKvT0+bS3Ld+CzWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=miuiwjPloG6AlWo59fMk+iCoMhIlgpe3pCLEFhFosXI=; b=ev26lxq2VRZ4tsxkd1b4BYEbVuXnD2asgHYwkPlcaytLeEjx6ycm36ZIDFRMeZG1xZfsRaF4mNUF+3c2nc+tiMp4Jg77PIPII7VuM80EtVEgAM7BCzBQDaqPHhUa/mlL/z9jXENYGQtxOthHLrryMrO3Cqy/nKEDtVTuz+5LuWkUALy9LY4PHCIRsEs2Ea9AXoRme37BZatwI8DvGfsfoveoSfFXf1BG7Y+yLY58CwLquWSR+ziiBeMgHgbuF1sHNpwW9cswNVyldnusQnz8VUMtHTktTf/amBh0pIhFR4HP5Vn/HgLeicWg6pai5Ify/YlKmVyziWL8ZNFmwWJEig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=miuiwjPloG6AlWo59fMk+iCoMhIlgpe3pCLEFhFosXI=; b=BtHYc0+WMLadHqoULXPy3Qo57eIrCjkrTXwZ6Hm7b/kTXklGYidNp9SdcR+Dxlohr7QN3GjcQSUqJ3/sJvj7Rq0FQaGCTH8RNgNjoeJ+qtUtjVpXvT7ZLOrm8JJP3Kc76V92+ytmMG5qjKx5QIglrprFUGyevFAzVlnOJpmEXn2UhgRXgXGoeSrfGwmWE1LBE0FvVPqp9WeSWB8epgsNDd3iqRY9n78a90etZJStgGH2UqrQyCNL5DD7nQtve9rJl4pTxg9YXl1YFC3lPfw80KpzE0PEYBKfqu9SGzzMhzn4fv8luAZKALt3UjjwluIpPRRe0Gx+dHKWl8+HXZhYGg== Received: from BY5PR17CA0049.namprd17.prod.outlook.com (2603:10b6:a03:167::26) by SJ0PR12MB8116.namprd12.prod.outlook.com (2603:10b6:a03:4ec::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.13; Thu, 26 Feb 2026 22:20:48 +0000 Received: from SJ1PEPF0000231C.namprd03.prod.outlook.com (2603:10b6:a03:167:cafe::1c) by BY5PR17CA0049.outlook.office365.com (2603:10b6:a03:167::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.25 via Frontend Transport; Thu, 26 Feb 2026 22:20:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF0000231C.mail.protection.outlook.com (10.167.242.233) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 26 Feb 2026 22:20:48 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:24 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 26 Feb 2026 14:20:24 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Thu, 26 Feb 2026 14:20:18 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Donald Hunter , Jiri Pirko , Jonathan Corbet , Saeed Mahameed , "Leon Romanovsky" , Tariq Toukan , Mark Bloch , Shuah Khan , , , , , , Gal Pressman , Dragos Tatulea , Shay Drory , Jiri Pirko , Moshe Shemesh , Or Har-Toov Subject: [PATCH net-next V3 10/10] devlink: Document port-level resources Date: Fri, 27 Feb 2026 00:19:16 +0200 Message-ID: <20260226221916.1800227-11-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260226221916.1800227-1-tariqt@nvidia.com> References: <20260226221916.1800227-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231C:EE_|SJ0PR12MB8116:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d551605-f478-4654-f47b-08de75854af9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: DNO/unMolGOhcyMnZprbaxtWxeraPCzlG70tbN1rje3nKtkiVUT8kVB4Ae3HBtx0sftWTKHpQZCS/fHxO33H8fdMb509oPjscyVCkPhQINosHNLNMhup/xBrwJhpsbHN7sqUQPUYCVLBAe0IM0NCJr7V0VeE//msNBCmquE5YomJghMNRU7XeGzOJ3X9h4c+kHRduPlLebH+WL7GuwH2uwKJsg73qtOXZ1sl4ir+weZRpVVoti1LrgK+O8FWUYiBLMzAMlA7rwrfMygudDQK/hz9haCxMOjq8M+OoJ/IRsgdBNDg4opq48PTELbfu5ExGhPRvdedCIsHr6arAVlBjTJeaV9Ay8wxnCeREnxevSRQUet+NnI1paZ1qSORundIR5DMNNpVI0vhlNXHHOPHa4yavExkur9oDcYMZckLMd1kbMEgVMMHFq17xDBwrAqxEzqzkqbtCKpqOx8k0H4QYlbhZeqVguF+EVMkyYHz9cB1slIC5Y0U1M2oLkmdA4Aj5xNNou+ZhxWBOzKayDaTeL5vlOzAGLGwgXtOZQ7fR9SWzohwpRXzBK590C4wPRSsDSAIaPsszeLx6IVuAfmeubWQisyTq2DzDG1bcyZXGYkkEmCY+BnbjG7IMyWQBGQ2hFE7JKaTeyTRE7aaT0rIMhzS7qHrLGNu8sJ7H4JHfM0XqTKJihrEjGAljsl9/t/kAmGW3LoohwP7CudP1/ivWvRsZbDQMUP9x8xLVxe4Bf0/u6lSmWPL8fyvpkyYEHV9Brr1EoFgAS0thUULFtAIyxidVx1PofO7AUow24aDtN1bsOBAYlCrP4QebyrBE1eUasi5pCURz42OtwVj0W4vDQ== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BljOblQcOrKg69VrZKcxGkdXR1EimKXoAF9b71HM1Ge7iC4HKBTmcGHWnro1hrtbud+q6kBppRBl8EzYXNqbvBLUCN3sy7uGFOwrBpPfTYgDYL/S8xEmb3uqCiXfvSfxU5517nlt1r45ag/+4A+444ayYnYlEM/PbU8Oi6u3brwUkG0k9BVw3eESBLy4XMZGJhZPvl70d9/yAvmt9K8c3ueR0Cbk0fBBiZOXPbrDauTz8ZmItA9zjPOn1JfCjt1RjEZZNN6aOe5ec8WhPzxoMFylyFsHRBUKkxuXVd33E58uBqkRXybjb2Z3bt19EOJ5WPeWFxIU61ZdKLOsJ/hJtF0in78FZ5rMPiafwpO2y4v7PD+GxymjZgxZ37U3haZnSqaQO47x0tNrOALd1WmgnHVJzq9oxW/ZwEDAub6ONyJdsXPg+xkK3krW22s5j6pX X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 22:20:48.0774 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d551605-f478-4654-f47b-08de75854af9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF0000231C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8116 Content-Type: text/plain; charset="utf-8" From: Or Har-Toov Add documentation for the port-level resource feature to devlink-resource.rst. Port-level resources allow viewing resources associated with specific devlink ports. Currently, port-level resources only support the get command for viewing resource information. Signed-off-by: Or Har-Toov Reviewed-by: Shay Drori Reviewed-by: Moshe Shemesh Reviewed-by: Jiri Pirko Signed-off-by: Tariq Toukan --- .../networking/devlink/devlink-resource.rst | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Documentation/networking/devlink/devlink-resource.rst b/Docume= ntation/networking/devlink/devlink-resource.rst index b4203c498bf2..1d6d8bfa1692 100644 --- a/Documentation/networking/devlink/devlink-resource.rst +++ b/Documentation/networking/devlink/devlink-resource.rst @@ -94,3 +94,39 @@ attribute, which represents the pending change in size. = For example: =20 Note that changes in resource size may require a device reload to properly take effect. + +Port-level Resources +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +In addition to device-level resources, ``devlink`` also supports port-level +resources. These resources are associated with a specific devlink port rat= her +than the device as a whole. + +Currently, port-level resources only support the ``GET`` command for viewi= ng +resource information. + +Port-level resources can be viewed for a specific port: + +.. code:: shell + + $devlink port resource show pci/0000:03:00.0/196608 + pci/0000:03:00.0/196608: + name max_SFs size 20 unit entry + +Or for ports of a specific device: + +.. code:: shell + + $devlink port resource show pci/0000:03:00.0 + pci/0000:03:00.0/196608: + name max_SFs size 20 unit entry + +Or for all ports across all devices: + +.. code:: shell + + $devlink port resource show + pci/0000:03:00.0/196608: + name max_SFs size 20 unit entry + pci/0000:03:00.1/262144: + name max_SFs size 20 unit entry --=20 2.44.0