From: Jason Gunthorpe <jgg@ziepe.ca>
To: Weihang Li <liweihang@huawei.com>
Cc: dledford@redhat.com, leon@kernel.org, linux-rdma@vger.kernel.org,
linuxarm@huawei.com
Subject: Re: [PATCH RFC v2 for-next 6/7] RDMA/core: support send port event
Date: Wed, 19 Feb 2020 17:07:32 -0400 [thread overview]
Message-ID: <20200219210732.GB31668@ziepe.ca> (raw)
In-Reply-To: <20200204082408.18728-7-liweihang@huawei.com>
On Tue, Feb 04, 2020 at 04:24:07PM +0800, Weihang Li wrote:
> From: Lang Cheng <chenglang@huawei.com>
>
> For the process of handling the link event of the net device, the driver
> of each provider is similar, so it can be integrated into the ib_core for
> unified processing.
>
> Signed-off-by: Lang Cheng <chenglang@huawei.com>
> drivers/infiniband/core/device.c | 1 +
> drivers/infiniband/core/roce_gid_mgmt.c | 45 +++++++++++++++++++++++++++++++++
> 2 files changed, 46 insertions(+)
>
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index 84dd74f..0427a4d 100644
> +++ b/drivers/infiniband/core/device.c
> @@ -2225,6 +2225,7 @@ struct net_device *ib_device_get_netdev(struct ib_device *ib_dev,
>
> return res;
> }
> +EXPORT_SYMBOL(ib_device_get_netdev);
>
> /**
> * ib_device_get_by_netdev - Find an IB device associated with a netdev
> diff --git a/drivers/infiniband/core/roce_gid_mgmt.c b/drivers/infiniband/core/roce_gid_mgmt.c
> index 2860def..4170ba3 100644
> +++ b/drivers/infiniband/core/roce_gid_mgmt.c
> @@ -751,6 +751,12 @@ static int netdevice_event(struct notifier_block *this, unsigned long event,
> struct net_device *ndev = netdev_notifier_info_to_dev(ptr);
> struct netdev_event_work_cmd cmds[ROCE_NETDEV_CALLBACK_SZ] = { {NULL} };
>
> + enum ib_port_state last_state;
> + enum ib_port_state curr_state;
> + struct ib_device *device;
> + struct ib_event ibev;
> + unsigned int port;
> +
> if (ndev->type != ARPHRD_ETHER)
> return NOTIFY_DONE;
>
> @@ -762,6 +768,45 @@ static int netdevice_event(struct notifier_block *this, unsigned long event,
> cmds[2] = add_cmd;
> break;
>
> + case NETDEV_CHANGE:
> + case NETDEV_DOWN:
> + device = ib_device_get_by_netdev(ndev, RDMA_DRIVER_UNKNOWN);
> + if (!device)
> + break;
> +
> + rdma_for_each_port (device, port) {
> + if (ib_device_get_netdev(device, port) != ndev)
> + continue;
This feels strange, maybe we need to fix ib_device_get_by_netdev to
return the port too?
> +
> + if (ib_get_cached_port_inactive_status(device, port))
> + break;
> +
> + ib_get_cached_port_state(device, port, &last_state);
> + curr_state =
> + netif_running(ndev) && netif_carrier_ok(ndev) ?
> + IB_PORT_ACTIVE :
> + IB_PORT_DOWN;
> +
> + if (last_state == curr_state)
> + break;
> +
> + if (curr_state == IB_PORT_DOWN)
> + ibev.event = IB_EVENT_PORT_ERR;
> + else if (curr_state == IB_PORT_ACTIVE)
> + ibev.event = IB_EVENT_PORT_ACTIVE;
> + else
> + break;
Other states are ignored?
> +
> + ibev.device = device;
> + ibev.element.port_num = port;
> + ib_dispatch_event(&ibev);
> + ibdev_dbg(ibev.device, "core send %s\n",
> + ib_event_msg(ibev.event));
> + }
> +
> + ib_device_put(device);
> + break;
Ah the series is backwards.
You need to organize your series so that every patch works
properly. This has to be before any drivers are removed, and you'll
need some temporary capability to disable it for drivers that have not
been migrated yet.
Jason
next prev parent reply other threads:[~2020-02-19 21:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-04 8:24 [PATCH RFC v2 for-next 0/7] ib core support to send ib port link event Weihang Li
2020-02-04 8:24 ` [PATCH RFC v2 for-next 1/7] RDMA/core: add inactive attribute of ib_port_cache Weihang Li
2020-02-19 21:01 ` Jason Gunthorpe
2020-02-20 3:19 ` Lang Cheng
2020-02-20 6:40 ` Leon Romanovsky
2020-02-04 8:24 ` [PATCH RFC v2 for-next 2/7] RDMA/mlx5: remove deliver net device event Weihang Li
2020-02-19 21:03 ` Jason Gunthorpe
2020-02-04 8:24 ` [PATCH RFC v2 for-next 3/7] qede: remove invalid notify operation Weihang Li
2020-02-19 21:04 ` Jason Gunthorpe
2020-02-20 4:18 ` Lang Cheng
2020-02-04 8:24 ` [PATCH RFC v2 for-next 4/7] RDMA/qedr: remove deliver net device event Weihang Li
2020-02-04 8:24 ` [PATCH RFC v2 for-next 5/7] RDMA/vmw_pvrdma: " Weihang Li
2020-02-04 8:24 ` [PATCH RFC v2 for-next 6/7] RDMA/core: support send port event Weihang Li
2020-02-19 21:07 ` Jason Gunthorpe [this message]
2020-02-20 8:48 ` Lang Cheng
2020-02-04 8:24 ` [PATCH RFC v2 for-next 7/7] RDMA/core: report link status when register and deregister ib device Weihang Li
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=20200219210732.GB31668@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=dledford@redhat.com \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=liweihang@huawei.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).