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 v2 04/10] devlink: Add relation between dpipe and resource
Date: Tue, 26 Dec 2017 12:23:53 +0100 [thread overview]
Message-ID: <20171226112359.5313-5-jiri@resnulli.us> (raw)
In-Reply-To: <20171226112359.5313-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 7a06ec6..5cb061c 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;
};
@@ -389,6 +393,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
@@ -552,6 +558,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 fcb86a6..1b474d69 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -218,6 +218,7 @@ enum devlink_attr {
DEVLINK_ATTR_RESOURCE_UNIT, /* 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 40ffa07..a257e88 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -1694,6 +1694,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;
@@ -3239,6 +3242,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-26 11:24 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-26 11:23 [patch net-next v2 00/10] Add support for resource abstraction Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 01/10] devlink: Add per devlink instance lock Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 02/10] devlink: Add support for resource abstraction Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 03/10] devlink: Add support for reload Jiri Pirko
2017-12-26 11:23 ` Jiri Pirko [this message]
2017-12-26 11:23 ` [patch net-next v2 05/10] mlxsw: pci: Add support for performing bus reset Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 06/10] mlxsw: spectrum: Register KVD resources with devlink Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 07/10] mlxsw: spectrum_dpipe: Connect dpipe tables to resources Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 08/10] mlxsw: spectrum: Add support for getting kvdl occupancy Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 09/10] mlxsw: pci: Add support for getting resource through devlink Jiri Pirko
2017-12-26 11:23 ` [patch net-next v2 10/10] mlxsw: core: Add support for reload Jiri Pirko
2017-12-27 4:05 ` [patch net-next v2 00/10] Add support for resource abstraction David Ahern
2017-12-27 8:09 ` Jiri Pirko
2017-12-27 8:23 ` Andrew Lunn
2017-12-27 9:37 ` Jiri Pirko
2017-12-27 13:08 ` Andrew Lunn
2017-12-27 13:15 ` Jiri Pirko
2017-12-27 16:38 ` David Ahern
2017-12-27 19:31 ` Andrew Lunn
2017-12-27 20:16 ` David Ahern
2017-12-27 8:28 ` Yuval Mintz
2017-12-27 16:34 ` David Ahern
2017-12-27 19:43 ` Roopa Prabhu
2017-12-28 8:21 ` Yuval Mintz
2017-12-30 21:15 ` David Ahern
2017-12-31 10:52 ` Arkadi Sharshevsky
2017-12-31 15:46 ` David Ahern
2018-01-01 12:23 ` Arkadi Sharshevsky
2017-12-27 20:15 ` Arkadi Sharshevsky
2017-12-28 8:25 ` Yuval Mintz
2017-12-28 16:09 ` David Ahern
2017-12-28 16:23 ` Jiri Pirko
2017-12-28 16:33 ` David Ahern
2017-12-28 16:43 ` Jiri Pirko
2017-12-29 17:09 ` Arkadi Sharshevsky
2017-12-30 10:18 ` Andrew Lunn
2017-12-30 10:25 ` Jiri Pirko
2017-12-30 17:26 ` Andrew Lunn
2018-01-01 14:58 ` Arkadi Sharshevsky
2018-01-02 10:08 ` Jiri Pirko
2018-01-02 13:41 ` Andrew Lunn
2018-01-02 14:35 ` Jiri Pirko
2018-01-02 18:05 ` David Ahern
2018-01-03 18:05 ` Arkadi Sharshevsky
2018-01-03 18:14 ` David Ahern
2018-01-03 18:17 ` Jiri Pirko
2018-01-03 18:29 ` David Ahern
2018-01-03 18:36 ` Jiri Pirko
2018-01-04 16:58 ` David Ahern
2018-01-04 17:17 ` David Miller
2018-01-25 15:24 ` Jiri Pirko
2018-01-25 15:38 ` David Ahern
2018-01-25 15:50 ` Jiri Pirko
2018-01-04 0:07 ` Arkadi Sharshevsky
2018-01-04 2:28 ` David Ahern
2018-01-04 9:24 ` Arkadi Sharshevsky
2018-01-04 12:41 ` Andrew Lunn
2018-01-04 15:58 ` David Ahern
2018-01-04 16:13 ` Arkadi Sharshevsky
2018-01-04 16:44 ` David Ahern
2018-01-04 18:03 ` 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=20171226112359.5313-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).