From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, arkadis@mellanox.com, mlxsw@mellanox.com,
andrew@lunn.ch, vivien.didelot@savoirfairelinux.com,
f.fainelli@gmail.com, michael.chan@broadcom.com,
ganeshgr@chelsio.com, saeedm@mellanox.com, matanb@mellanox.com,
leonro@mellanox.com, idosch@mellanox.com,
jakub.kicinski@netronome.com, ast@kernel.org,
daniel@iogearbox.net, simon.horman@netronome.com,
pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com,
alexander.h.duyck@intel.com, linville@tuxdriver.com,
gospo@broadcom.com, steven.lin1@broadcom.com,
yuvalm@mellanox.com, ogerlitz@mellanox.com,
dsa@cumulusnetworks.com, roopa@cumulusnetworks.com
Subject: [patch net-next 04/10] devlink: Add relation between dpipe and resource
Date: Wed, 20 Dec 2017 12:58:15 +0100 [thread overview]
Message-ID: <20171220115821.22171-5-jiri@resnulli.us> (raw)
In-Reply-To: <20171220115821.22171-1-jiri@resnulli.us>
From: Arkadi Sharshevsky <arkadis@mellanox.com>
The hardware processes which are modeled via dpipe commonly use some
internal hardware resources. Such relation can improve the understanding
of hardware limitations.
Signed-off-by: Arkadi Sharshevsky <arkadis@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
include/net/devlink.h | 13 +++++++++++++
include/uapi/linux/devlink.h | 1 +
net/core/devlink.c | 31 +++++++++++++++++++++++++++++++
3 files changed, 45 insertions(+)
diff --git a/include/net/devlink.h b/include/net/devlink.h
index 340c2fc..9217620 100644
--- a/include/net/devlink.h
+++ b/include/net/devlink.h
@@ -183,6 +183,8 @@ struct devlink_dpipe_table_ops;
* @counters_enabled: indicates if counters are active
* @counter_control_extern: indicates if counter control is in dpipe or
* external tool
+ * @resource_valid: Indicate that the resource id is valid
+ * @resource_id: relative resource this table is related to
* @table_ops: table operations
* @rcu: rcu
*/
@@ -192,6 +194,8 @@ struct devlink_dpipe_table {
const char *name;
bool counters_enabled;
bool counter_control_extern;
+ bool resource_valid;
+ u64 resource_id;
struct devlink_dpipe_table_ops *table_ops;
struct rcu_head rcu;
};
@@ -386,6 +390,8 @@ void devlink_resources_unregister(struct devlink *devlink,
int devlink_resource_size_get(struct devlink *devlink,
u64 resource_id,
u64 *p_resource_size);
+int devlink_dpipe_table_resource_set(struct devlink *devlink,
+ const char *table_name, u64 resource_id);
#else
@@ -548,6 +554,13 @@ devlink_resource_size_get(struct devlink *devlink, u64 resource_id,
return -EOPNOTSUPP;
}
+static inline int
+devlink_dpipe_table_resource_set(struct devlink *devlink,
+ const char *table_name, u64 resource_id)
+{
+ return -EOPNOTSUPP;
+}
+
#endif
#endif /* _NET_DEVLINK_H_ */
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
index bee827b..b84c6aa 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -217,6 +217,7 @@ enum devlink_attr {
DEVLINK_ATTR_RESOURCE_SIZE_VALID, /* u8 */
DEVLINK_ATTR_RESOURCE_OCC, /* u64 */
DEVLINK_ATTR_RESOURCE_ID, /* u64 */
+ DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */
/* add new attributes above here, update the policy in devlink.c */
diff --git a/net/core/devlink.c b/net/core/devlink.c
index 3dedc3f..8fbef2d 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -1686,6 +1686,9 @@ static int devlink_dpipe_table_put(struct sk_buff *skb,
table->counters_enabled))
goto nla_put_failure;
+ if (table->resource_valid)
+ nla_put_u64_64bit(skb, DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID,
+ table->resource_id, DEVLINK_ATTR_PAD);
if (devlink_dpipe_matches_put(table, skb))
goto nla_put_failure;
@@ -3234,6 +3237,34 @@ int devlink_resource_size_get(struct devlink *devlink,
}
EXPORT_SYMBOL_GPL(devlink_resource_size_get);
+/**
+ * devlink_dpipe_table_resource_set - set the resource id
+ *
+ * @devlink: devlink
+ * @table_name: table name
+ * @resource_id: resource id
+ */
+int devlink_dpipe_table_resource_set(struct devlink *devlink,
+ const char *table_name, u64 resource_id)
+{
+ struct devlink_dpipe_table *table;
+ int err = 0;
+
+ mutex_lock(&devlink->lock);
+ table = devlink_dpipe_table_find(&devlink->dpipe_table_list,
+ table_name);
+ if (!table) {
+ err = -EINVAL;
+ goto out;
+ }
+ table->resource_id = resource_id;
+ table->resource_valid = true;
+out:
+ mutex_unlock(&devlink->lock);
+ return err;
+}
+EXPORT_SYMBOL_GPL(devlink_dpipe_table_resource_set);
+
static int __init devlink_module_init(void)
{
return genl_register_family(&devlink_nl_family);
--
2.9.5
next prev parent reply other threads:[~2017-12-20 11:58 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-20 11:58 [patch net-next 00/10] Add support for resource abstraction Jiri Pirko
2017-12-20 11:58 ` [patch net-next 01/10] devlink: Add per devlink instance lock Jiri Pirko
2017-12-20 11:58 ` [patch net-next 02/10] devlink: Add support for resource abstraction Jiri Pirko
2017-12-20 19:43 ` David Miller
2017-12-20 20:01 ` Jiri Pirko
2017-12-25 11:12 ` Arkadi Sharshevsky
2017-12-20 11:58 ` [patch net-next 03/10] devlink: Add support for reload Jiri Pirko
2017-12-20 11:58 ` Jiri Pirko [this message]
2017-12-20 11:58 ` [patch net-next 05/10] mlxsw: pci: Add support for performing bus reset Jiri Pirko
2017-12-20 11:58 ` [patch net-next 06/10] mlxsw: spectrum: Register KVD resources with devlink Jiri Pirko
2017-12-20 11:58 ` [patch net-next 07/10] mlxsw: spectrum_dpipe: Connect dpipe tables to resources Jiri Pirko
2017-12-20 11:58 ` [patch net-next 08/10] mlxsw: spectrum: Add support for getting kvdl occupancy Jiri Pirko
2017-12-20 11:58 ` [patch net-next 09/10] mlxsw: pci: Add support for getting resource through devlink Jiri Pirko
2017-12-20 11:58 ` [patch net-next 10/10] mlxsw: core: Add support for reload Jiri Pirko
2017-12-20 19:23 ` [patch net-next 00/10] Add support for resource abstraction David Ahern
2017-12-20 20:03 ` Jiri Pirko
2017-12-20 21:51 ` David Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171220115821.22171-5-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=alexander.h.duyck@intel.com \
--cc=andrew@lunn.ch \
--cc=arkadis@mellanox.com \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsa@cumulusnetworks.com \
--cc=f.fainelli@gmail.com \
--cc=ganeshgr@chelsio.com \
--cc=gospo@broadcom.com \
--cc=idosch@mellanox.com \
--cc=jakub.kicinski@netronome.com \
--cc=john.hurley@netronome.com \
--cc=leonro@mellanox.com \
--cc=linville@tuxdriver.com \
--cc=matanb@mellanox.com \
--cc=michael.chan@broadcom.com \
--cc=mlxsw@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=pieter.jansenvanvuuren@netronome.com \
--cc=roopa@cumulusnetworks.com \
--cc=saeedm@mellanox.com \
--cc=simon.horman@netronome.com \
--cc=steven.lin1@broadcom.com \
--cc=vivien.didelot@savoirfairelinux.com \
--cc=yuvalm@mellanox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).