From: "Yanjun.Zhu" <yanjun.zhu@linux.dev>
To: Leon Romanovsky <leon@kernel.org>, Zhu Yanjun <yanjun.zhu@linux.dev>
Cc: jgg@ziepe.ca, zyjzyj2000@gmail.com, shuah@kernel.org,
linux-rdma@vger.kernel.org, linux-kselftest@vger.kernel.org,
dsahern@kernel.org
Subject: Re: [PATCH v5 1/4] RDMA/nldev: Add dellink function pointer
Date: Wed, 11 Mar 2026 15:09:24 -0700 [thread overview]
Message-ID: <db3d0678-43bf-4131-bb3c-f6bb9d54218f@linux.dev> (raw)
In-Reply-To: <6a8b0983-a198-470a-8125-b0133ccb7032@linux.dev>
On 3/11/26 3:01 PM, Yanjun.Zhu wrote:
>
> On 3/11/26 1:54 AM, Leon Romanovsky wrote:
>> On Tue, Mar 10, 2026 at 06:58:00PM -0700, Yanjun.Zhu wrote:
>>> On 3/10/26 12:01 PM, Leon Romanovsky wrote:
>>>> It is an RXE‑specific description, but you are adding code to the
>>>> general
>>>> nldev path. Please clarify that this behavior applies only to RXE, and
>>>> include examples showing when and how it is invoked. In particular,
>>>> explain
>>>> how the socket is cleaned up if delink is not called.
>>> Hi, Leon
>>>
>>> You are correct that this logic should be driver-specific. I will
>>> add an
>>> explicit check for RDMA_DRIVER_RXE in the nldev path to ensure this
>>> behavior
>>> is strictly scoped to RXE and does not impact other drivers (like
>>> iWARP).
>> No, you don't need this driver_id check, because iWARP doesn't have
>> link_ops->dellink,
>> but you should document the rationale and how it is triggered for RXE.
>>
>> Thanks
>
> Hi, Leaon
Sorry. The name should be Leon. My bad.
Zhu Yanjun
>
> Got it. The commit log explains how the netdev_notifier mechanism is
> used to clean up the related resources.
>
> In the source code, additional comments have been added to explain how
> the dellink operation for rxe is triggered. For iWARP, this change
> should not make any difference because iWARP does not implement the
> dellink function.
>
> The commit is shown below. Please take a look and share your comments.
> If you agree, I will send out the latest commits out very soon.
>
> From c05038dcdf69c5985837736a8926ba76d9f3e8e4 Mon Sep 17 00:00:00 2001
> From: Zhu Yanjun <yanjun.zhu@linux.dev>
> Date: Fri, 23 Sep 2022 16:52:45 +0000
> Subject: [PATCH 1/1] RDMA/nldev: Add dellink function pointer
>
> The newlink function pointer was previously added to support
> dynamic RDMA link creation. In the RXE driver, this path creates
> a transport socket listening on port 4791. Consequently, a dellink
> function pointer is required to ensure these sockets are properly
> closed when a user administratively removes a link via rdma link
> delete <dev>.
>
> Furthermore, RXE does not rely solely on this nldev path for resource
> management. It also monitors the underlying net_device state via a
> registered netdev_notifier. The rxe_net_event callback serves as a
> fallback mechanism to ensure that transport sockets are forcibly closed
> and all resources are released even if dellink is not explicitly called
> (e.g., if the parent NIC interface is removed or the driver is forcefully
> unloaded).
>
> Reviewed-by: David Ahern <dsahern@kernel.org>
> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> ---
> drivers/infiniband/core/nldev.c | 12 ++++++++++++
> include/rdma/rdma_netlink.h | 2 ++
> 2 files changed, 14 insertions(+)
>
> diff --git a/drivers/infiniband/core/nldev.c
> b/drivers/infiniband/core/nldev.c
> index 2220a2dfab24..34f5faf80d9c 100644
> --- a/drivers/infiniband/core/nldev.c
> +++ b/drivers/infiniband/core/nldev.c
> @@ -1824,6 +1824,18 @@ static int nldev_dellink(struct sk_buff *skb,
> struct nlmsghdr *nlh,
> return -EINVAL;
> }
>
> + /*
> + * This path is triggered by the 'rdma link delete'
> administrative command.
> + * For Soft-RoCE (RXE), we ensure that transport sockets are
> closed here.
> + * Note: iWARP driver does not implement .dellink, so this logic is
> + * implicitly scoped to driver supporting dynamic link deletion
> like RXE.
> + */
> + if (device->link_ops && device->link_ops->dellink) {
> + err = device->link_ops->dellink(device);
> + if (err)
> + return err;
> + }
> +
> ib_unregister_device_and_put(device);
> return 0;
> }
> diff --git a/include/rdma/rdma_netlink.h b/include/rdma/rdma_netlink.h
> index 326deaf56d5d..2fd1358ea57d 100644
> --- a/include/rdma/rdma_netlink.h
> +++ b/include/rdma/rdma_netlink.h
> @@ -5,6 +5,7 @@
>
> #include <linux/netlink.h>
> #include <uapi/rdma/rdma_netlink.h>
> +#include <rdma/ib_verbs.h>
>
> struct ib_device;
>
> @@ -126,6 +127,7 @@ struct rdma_link_ops {
> struct list_head list;
> const char *type;
> int (*newlink)(const char *ibdev_name, struct net_device *ndev);
> + int (*dellink)(struct ib_device *dev);
> };
>
> void rdma_link_register(struct rdma_link_ops *ops);
next prev parent reply other threads:[~2026-03-11 22:09 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 2:05 [PATCH v5 0/4] RDMA/rxe: Add the support that rxe can work in net namespace Zhu Yanjun
2026-03-10 2:05 ` [PATCH v5 1/4] RDMA/nldev: Add dellink function pointer Zhu Yanjun
2026-03-10 15:47 ` David Ahern
2026-03-10 19:01 ` Leon Romanovsky
2026-03-11 1:58 ` Yanjun.Zhu
2026-03-11 8:54 ` Leon Romanovsky
2026-03-11 22:01 ` Yanjun.Zhu
2026-03-11 22:09 ` Yanjun.Zhu [this message]
2026-03-12 2:04 ` David Ahern
2026-03-12 3:59 ` Zhu Yanjun
2026-03-12 5:09 ` Zhu Yanjun
2026-03-12 18:04 ` Yanjun.Zhu
2026-03-10 2:05 ` [PATCH v5 2/4] RDMA/rxe: Add net namespace support for IPv4/IPv6 sockets Zhu Yanjun
2026-03-10 15:48 ` David Ahern
2026-03-10 2:05 ` [PATCH v5 3/4] RDMA/rxe: Support RDMA link creation and destruction per net namespace Zhu Yanjun
2026-03-10 15:48 ` David Ahern
2026-03-10 18:57 ` Leon Romanovsky
2026-03-10 20:32 ` Yanjun.Zhu
2026-03-11 8:45 ` Leon Romanovsky
2026-03-11 19:08 ` Yanjun.Zhu
2026-03-10 2:05 ` [PATCH v5 4/4] RDMA/rxe: Add testcase for net namespace rxe Zhu Yanjun
2026-03-10 15:49 ` David Ahern
2026-03-10 18:53 ` Leon Romanovsky
2026-03-10 21:01 ` Yanjun.Zhu
2026-03-11 8:51 ` Leon Romanovsky
2026-03-11 22:51 ` Yanjun.Zhu
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=db3d0678-43bf-4131-bb3c-f6bb9d54218f@linux.dev \
--to=yanjun.zhu@linux.dev \
--cc=dsahern@kernel.org \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=zyjzyj2000@gmail.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