All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cheng Xu <chengyou@linux.alibaba.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: dledford@redhat.com, leon@kernel.org, linux-rdma@vger.kernel.org,
	KaiShen@linux.alibaba.com, tonylu@linux.alibaba.com,
	BMT@zurich.ibm.com
Subject: Re: [PATCH for-next v7 10/12] RDMA/erdma: Add the erdma module
Date: Thu, 19 May 2022 00:24:22 +0800	[thread overview]
Message-ID: <83ed54cd-7893-ea26-6bf0-780e12ca2a3e@linux.alibaba.com> (raw)
In-Reply-To: <20220518144621.GH1343366@nvidia.com>



On 5/18/22 10:46 PM, Jason Gunthorpe wrote:
> On Wed, May 18, 2022 at 04:30:33PM +0800, Cheng Xu wrote:
>>
>>
>> On 5/10/22 9:17 PM, Jason Gunthorpe wrote:
>>> On Thu, Apr 21, 2022 at 03:17:45PM +0800, Cheng Xu wrote:
>>>
>>>> +static struct rdma_link_ops erdma_link_ops = {
>>>> +	.type = "erdma",
>>>> +	.newlink = erdma_newlink,
>>>> +};
>>>
>>> Why is there still a newlink?
>>>
>>
>> Hello, Jason,
>>
>> About this issue, I have another idea, more simple and reasonable.
>>
>> Maybe erdma driver doesn't need to link to a net device in kernel. In
>> the core code, the ib_device_get_netdev has several use cases:
>>
>>    1). query port info in netlink
>>    2). get eth speed for IB (ib_get_eth_speed)
>>    3). enumerate all RoCE ports (ib_enum_roce_netdev)
>>    4). iw_query_port
>>
>> The cases related to erdma is 4). But we change it in our patch 02/12.
>> So, it seems all right that we do not link erdma to a net device.
>>
>> * I also test this solution, it works for both perftest and NoF. *
>>
>> Another issue is how to get the port state and attributes without
>> net device. For this, erdma can get it from HW directly.
>>
>> So, I think this may be the final solution. (BTW, I have gone over
>> the rdma drivers, EFA does in this way, it also has two separated
>> devices for net and rdma. It inspired me).
> 
> I'm not sure this works for an iWarp device - various things expect to
> know the netdevice to know how to relate IP addresses to the iWarp
> stuff - but then I don't really know iWarp.

As far as I know, iWarp device only has one GID entry which generated
from MAC address.

For iWarp, The CM part in core code resolves address, finds
route with the help of kernel's net subsystem, and then obtains the 
correct ibdev by GID matching. The GID matching in iWarp is indeed MAC 
address matching.

In another words, for iWarp devices, the core code doesn't handle IP 
addressing related stuff directly, it is finished by calling net APIs.
The netdev set by ib_device_set_netdev does not used in iWarp's CM
process.

The binded netdev in iWarp devices, mainly have two purposes:
   1). generated GID0, using the netdev's mac address.
   2). get the port state and attributes.

For 1), erdma device binded to net device also by mac address, which can
be obtained from our PCIe bar registers.
For 2), erdma can also get the information, and may be more accurately.
For example, erdma can have different MTU with virtio-net in our cloud.

For RoCEv2, I know that it has many GIDs, some of them are generated
from IP addresses, and handing IP addressing in core code.

> If it works at all it is not a great idea
As I explained above (I hope I explained clearly, but I'm a little worry 
about my English :) ), netdev binded by ib_device_set_netdev in iWarp
device has limit usage. Compared with the v8 (traverse the netdevs in
kernel and find the matched net device), I think don't set netdev is
better.

After I explained, how do you think about this? If it still not ok,
I will work on the v8 in the future. Otherwise, I will send a v9 patch.

Thanks,
Cheng Xu

  reply	other threads:[~2022-05-18 16:24 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21  7:17 [PATCH for-next v7 00/12] Elastic RDMA Adapter (ERDMA) driver Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 01/12] RDMA: Add ERDMA to rdma_driver_id definition Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 02/12] RDMA/core: Allow calling query_port when netdev isn't attached in iWarp Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 03/12] RDMA/erdma: Add the hardware related definitions Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 04/12] RDMA/erdma: Add main include file Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 05/12] RDMA/erdma: Add cmdq implementation Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 06/12] RDMA/erdma: Add event queue implementation Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 07/12] RDMA/erdma: Add verbs header file Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 08/12] RDMA/erdma: Add verbs implementation Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 09/12] RDMA/erdma: Add connection management (CM) support Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 10/12] RDMA/erdma: Add the erdma module Cheng Xu
2022-05-10 13:17   ` Jason Gunthorpe
2022-05-16  3:15     ` Cheng Xu
2022-05-16 11:49       ` Jason Gunthorpe
2022-05-16 12:37         ` Cheng Xu
2022-05-16 12:40         ` Cheng Xu
2022-05-16 13:59           ` Cheng Xu
2022-05-16 14:07             ` Jason Gunthorpe
2022-05-16 15:14               ` Cheng Xu
2022-05-16 17:31                 ` Jason Gunthorpe
2022-05-17  1:53                   ` Cheng Xu
2022-05-18  8:30     ` Cheng Xu
2022-05-18 14:46       ` Jason Gunthorpe
2022-05-18 16:24         ` Cheng Xu [this message]
2022-05-18 16:31           ` Jason Gunthorpe
2022-05-19 16:20             ` Bernard Metzler
2022-05-19 18:51               ` Tom Talpey
2022-05-20  7:03               ` Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 11/12] RDMA/erdma: Add the ABI definitions Cheng Xu
2022-04-21  7:17 ` [PATCH for-next v7 12/12] RDMA/erdma: Add driver to kernel build environment Cheng Xu
2022-05-10 13:18   ` Jason Gunthorpe
2022-05-16  3:40     ` Cheng Xu
2022-05-16  7:11       ` Cheng Xu
2022-05-16 10:07         ` Cheng Xu
2022-05-16 14:13       ` Jason Gunthorpe
2022-05-16 14:41         ` Cheng Xu
2022-05-10 12:50 ` [PATCH for-next v7 00/12] Elastic RDMA Adapter (ERDMA) driver Jason Gunthorpe
2022-05-16  2:30   ` Cheng Xu
2022-05-16 14:13     ` Jason Gunthorpe
2022-05-20 15:13 Re: [PATCH for-next v7 10/12] RDMA/erdma: Add the erdma module Bernard Metzler
2022-05-23  1:39 ` Cheng Xu
2022-05-23 13:25   ` Tom Talpey
2022-05-24  3:09     ` Cheng Xu

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=83ed54cd-7893-ea26-6bf0-780e12ca2a3e@linux.alibaba.com \
    --to=chengyou@linux.alibaba.com \
    --cc=BMT@zurich.ibm.com \
    --cc=KaiShen@linux.alibaba.com \
    --cc=dledford@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=leon@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=tonylu@linux.alibaba.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.