From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, kuba@kernel.org, jacob.e.keller@intel.com,
roopa@nvidia.com, mlxsw@nvidia.com
Subject: [patch net-next RFC 09/10] netdevsim: implement line card activation
Date: Wed, 13 Jan 2021 13:12:21 +0100 [thread overview]
Message-ID: <20210113121222.733517-10-jiri@resnulli.us> (raw)
In-Reply-To: <20210113121222.733517-1-jiri@resnulli.us>
From: Jiri Pirko <jiri@nvidia.com>
On real HW, the activation typically happens upon line card insertion.
Emulate such event using write to debugfs file "active".
Signed-off-by: Jiri Pirko <jiri@nvidia.com>
---
drivers/net/netdevsim/dev.c | 81 +++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
index 9e9a2a75ddf8..81d68269e121 100644
--- a/drivers/net/netdevsim/dev.c
+++ b/drivers/net/netdevsim/dev.c
@@ -64,6 +64,30 @@ nsim_dev_port_index(struct nsim_dev_linecard *nsim_dev_linecard,
port_index;
}
+static int
+nsim_dev_linecard_activate(struct nsim_dev_linecard *nsim_dev_linecard)
+{
+ struct nsim_dev_port *nsim_dev_port;
+
+ list_for_each_entry(nsim_dev_port, &nsim_dev_linecard->port_list,
+ list_lc)
+ netif_carrier_on(nsim_dev_port->ns->netdev);
+
+ devlink_linecard_activate(nsim_dev_linecard->devlink_linecard);
+ return 0;
+}
+
+static void
+nsim_dev_linecard_deactivate(struct nsim_dev_linecard *nsim_dev_linecard)
+{
+ struct nsim_dev_port *nsim_dev_port;
+
+ list_for_each_entry(nsim_dev_port, &nsim_dev_linecard->port_list,
+ list_lc)
+ netif_carrier_off(nsim_dev_port->ns->netdev);
+ devlink_linecard_deactivate(nsim_dev_linecard->devlink_linecard);
+}
+
static struct dentry *nsim_dev_ddir;
#define NSIM_DEV_DUMMY_REGION_SIZE (1024 * 32)
@@ -299,6 +323,61 @@ static void nsim_dev_port_debugfs_exit(struct nsim_dev_port *nsim_dev_port)
debugfs_remove_recursive(nsim_dev_port->ddir);
}
+static ssize_t nsim_dev_linecard_active_read(struct file *file,
+ char __user *data,
+ size_t count, loff_t *ppos)
+{
+ struct nsim_dev_linecard *nsim_dev_linecard = file->private_data;
+ char buf[3];
+
+ if (!nsim_dev_linecard->provisioned)
+ return -EOPNOTSUPP;
+
+ if (devlink_linecard_is_active(nsim_dev_linecard->devlink_linecard))
+ buf[0] = 'Y';
+ else
+ buf[0] = 'N';
+ buf[1] = '\n';
+ buf[2] = 0x00;
+ return simple_read_from_buffer(data, count, ppos, buf, strlen(buf));
+}
+
+static ssize_t nsim_dev_linecard_active_write(struct file *file,
+ const char __user *data,
+ size_t count, loff_t *ppos)
+{
+ struct nsim_dev_linecard *nsim_dev_linecard = file->private_data;
+ bool active;
+ bool bv;
+ int err;
+ int r;
+
+ if (!nsim_dev_linecard->provisioned)
+ return -EOPNOTSUPP;
+
+ active = devlink_linecard_is_active(nsim_dev_linecard->devlink_linecard);
+
+ r = kstrtobool_from_user(data, count, &bv);
+ if (!r && active != bv) {
+ if (bv) {
+ err = nsim_dev_linecard_activate(nsim_dev_linecard);
+ if (err)
+ return err;
+ } else {
+ nsim_dev_linecard_deactivate(nsim_dev_linecard);
+ }
+ }
+ return count;
+}
+
+static const struct file_operations nsim_dev_linecard_active_fops = {
+ .open = simple_open,
+ .read = nsim_dev_linecard_active_read,
+ .write = nsim_dev_linecard_active_write,
+ .llseek = generic_file_llseek,
+ .owner = THIS_MODULE,
+};
+
static ssize_t nsim_dev_linecard_type_read(struct file *file, char __user *data,
size_t count, loff_t *ppos)
{
@@ -334,6 +413,8 @@ nsim_dev_linecard_debugfs_init(struct nsim_dev *nsim_dev,
sprintf(dev_link_name, "../../../" DRV_NAME "%u",
nsim_dev->nsim_bus_dev->dev.id);
debugfs_create_symlink("dev", nsim_dev_linecard->ddir, dev_link_name);
+ debugfs_create_file("active", 0600, nsim_dev_linecard->ddir,
+ nsim_dev_linecard, &nsim_dev_linecard_active_fops);
debugfs_create_file("type", 0400, nsim_dev_linecard->ddir,
nsim_dev_linecard, &nsim_dev_linecard_type_fops);
--
2.26.2
next prev parent reply other threads:[~2021-01-13 12:13 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-13 12:12 [patch net-next RFC 00/10] introduce line card support for modular switch Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 01/10] devlink: add support to create line card and expose to user Jiri Pirko
2021-01-15 15:47 ` Ido Schimmel
2021-01-13 12:12 ` [patch net-next RFC 02/10] devlink: implement line card provisioning Jiri Pirko
2021-01-15 16:03 ` Ido Schimmel
2021-01-15 16:51 ` Jiri Pirko
2021-01-15 18:09 ` Ido Schimmel
2021-01-18 12:50 ` Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 03/10] devlink: implement line card active state Jiri Pirko
2021-01-15 16:06 ` Ido Schimmel
2021-01-15 16:52 ` Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 04/10] devlink: append split port number to the port name Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 05/10] devlink: add port to line card relationship set Jiri Pirko
2021-01-15 16:10 ` Ido Schimmel
2021-01-15 16:53 ` Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 06/10] netdevsim: introduce line card support Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 07/10] netdevsim: allow port objects to be linked with line cards Jiri Pirko
2021-01-13 12:12 ` [patch net-next RFC 08/10] netdevsim: create devlink line card object and implement provisioning Jiri Pirko
2021-01-15 16:30 ` Ido Schimmel
2021-01-15 16:54 ` Jiri Pirko
2021-01-13 12:12 ` Jiri Pirko [this message]
2021-01-13 12:12 ` [patch net-next RFC 10/10] selftests: add netdevsim devlink lc test Jiri Pirko
2021-01-13 13:39 ` [patch iproute2/net-next RFC] devlink: add support for linecard show and provision Jiri Pirko
2021-01-14 2:07 ` [patch net-next RFC 00/10] introduce line card support for modular switch Andrew Lunn
2021-01-14 7:39 ` Jiri Pirko
2021-01-14 22:56 ` Jacob Keller
2021-01-15 14:19 ` Jiri Pirko
2021-01-19 11:56 ` Jiri Pirko
2021-01-19 14:51 ` Andrew Lunn
2021-01-20 8:36 ` Jiri Pirko
2021-01-20 13:56 ` Andrew Lunn
2021-01-20 23:41 ` Jakub Kicinski
2021-01-21 0:01 ` Andrew Lunn
2021-01-21 0:16 ` Jakub Kicinski
2021-01-21 15:34 ` Jiri Pirko
2021-01-21 15:32 ` Jiri Pirko
2021-01-21 16:38 ` David Ahern
2021-01-22 7:28 ` Jiri Pirko
2021-01-22 14:13 ` Andrew Lunn
2021-01-26 11:33 ` Jiri Pirko
2021-01-26 13:56 ` Andrew Lunn
2021-01-27 7:57 ` Jiri Pirko
2021-01-27 14:14 ` Andrew Lunn
2021-01-27 14:57 ` David Ahern
2021-01-28 8:14 ` Jiri Pirko
2021-01-28 14:17 ` Andrew Lunn
2021-01-29 7:20 ` Jiri Pirko
[not found] ` <YBQujIdnFtEhWqTF@lunn.ch>
2021-01-29 16:45 ` Vadim Pasternak
2021-01-29 17:31 ` Andrew Lunn
2021-01-30 14:19 ` Jiri Pirko
[not found] ` <251d1e12-1d61-0922-31f8-a8313f18f194@gmail.com>
2021-02-01 8:16 ` Jiri Pirko
2021-02-01 13:41 ` Andrew Lunn
2021-02-03 14:57 ` Jiri Pirko
2021-02-03 16:26 ` Andrew Lunn
2021-02-01 1:43 ` Andrew Lunn
2021-01-22 8:05 ` Jiri Pirko
2021-01-19 16:23 ` David Ahern
2021-01-20 8:37 ` Jiri Pirko
2021-01-14 2:27 ` Jakub Kicinski
2021-01-14 7:48 ` Jiri Pirko
2021-01-14 23:30 ` Jakub Kicinski
2021-01-15 14:39 ` Jiri Pirko
2021-01-15 19:26 ` Jakub Kicinski
2021-01-18 13:00 ` Jiri Pirko
2021-01-18 17:59 ` Jakub Kicinski
2021-01-19 11:51 ` Jiri Pirko
2021-01-18 22:55 ` David Ahern
2021-01-22 8:01 ` Jiri Pirko
2021-01-14 22:58 ` Jacob Keller
2021-01-14 23:20 ` Jakub Kicinski
2021-01-15 14:40 ` Jiri Pirko
2021-01-15 15:43 ` Ido Schimmel
2021-01-15 16:55 ` Jiri Pirko
2021-01-15 18:01 ` Ido Schimmel
2021-01-18 13:03 ` Jiri Pirko
2021-01-18 18:01 ` Edwin Peer
2021-01-18 22:57 ` David Ahern
2021-01-18 23:40 ` Edwin Peer
2021-01-19 2:39 ` David Ahern
2021-01-19 5:06 ` Edwin Peer
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=20210113121222.733517-10-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=davem@davemloft.net \
--cc=jacob.e.keller@intel.com \
--cc=kuba@kernel.org \
--cc=mlxsw@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=roopa@nvidia.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).