netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bernard Metzler <BMT@zurich.ibm.com>
To: Chuck Lever III <chuck.lever@oracle.com>, Tom Talpey <tom@talpey.com>
Cc: Chuck Lever <cel@kernel.org>, Jason Gunthorpe <jgg@nvidia.com>,
	linux-rdma <linux-rdma@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: RE: [PATCH RFC] RDMA/core: Handle ARPHRD_NONE devices
Date: Sat, 3 Jun 2023 13:51:10 +0000	[thread overview]
Message-ID: <SA0PR15MB3919D432A5401D3E459A83B6994FA@SA0PR15MB3919.namprd15.prod.outlook.com> (raw)
In-Reply-To: <F0D9A24E-CFC9-4100-89E5-A5BDF24D3621@oracle.com>



> -----Original Message-----
> From: Chuck Lever III <chuck.lever@oracle.com>
> Sent: Saturday, 3 June 2023 02:33
> To: Tom Talpey <tom@talpey.com>
> Cc: Chuck Lever <cel@kernel.org>; Jason Gunthorpe <jgg@nvidia.com>; linux-
> rdma <linux-rdma@vger.kernel.org>; Bernard Metzler <BMT@zurich.ibm.com>;
> netdev@vger.kernel.org
> Subject: [EXTERNAL] Re: [PATCH RFC] RDMA/core: Handle ARPHRD_NONE devices
> 
> 
> 
> > On Jun 2, 2023, at 6:18 PM, Tom Talpey <tom@talpey.com> wrote:
> >
> > On 6/2/2023 3:24 PM, Chuck Lever wrote:
> >> From: Chuck Lever <chuck.lever@oracle.com>
> >> We would like to enable the use of siw on top of a VPN that is
> >> constructed and managed via a tun device. That hasn't worked up
> >> until now because ARPHRD_NONE devices (such as tun devices) have
> >> no GID for the RDMA/core to look up.
> >> But it turns out that the egress device has already been picked for
> >> us. addr_handler() just has to do the right thing with it.
> >> Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
> >> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> >> ---
> >>  drivers/infiniband/core/cma.c |    4 ++++
> >>  1 file changed, 4 insertions(+)
> >> diff --git a/drivers/infiniband/core/cma.c
> b/drivers/infiniband/core/cma.c
> >> index 56e568fcd32b..3351dc5afa17 100644
> >> --- a/drivers/infiniband/core/cma.c
> >> +++ b/drivers/infiniband/core/cma.c
> >> @@ -704,11 +704,15 @@ cma_validate_port(struct ib_device *device, u32
> port,
> >>   ndev = dev_get_by_index(dev_addr->net, bound_if_index);
> >>   if (!ndev)
> >>   return ERR_PTR(-ENODEV);
> >> + } else if (dev_type == ARPHRD_NONE) {
> >> + sgid_attr = rdma_get_gid_attr(device, port, 0);
> >> + goto out;
> >>   } else {
> >>   gid_type = IB_GID_TYPE_IB;
> >>   }
> >>     sgid_attr = rdma_find_gid_by_port(device, gid, gid_type, port,
> ndev);
> >> +out:
> >>   dev_put(ndev);
> >>   return sgid_attr;
> >>  }
> >
> > I like it, but doesn't this test in siw_main.c also need to change?
> >
> > static struct siw_device *siw_device_create(struct net_device *netdev)
> > {
> > ...
> > --> if (netdev->type != ARPHRD_LOOPBACK && netdev->type != ARPHRD_NONE) {
> > addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
> >    netdev->dev_addr);
> > } else {
> > /*
> > * This device does not have a HW address,
> > * but connection mangagement lib expects gid != 0
> > */
> > size_t len = min_t(size_t, strlen(base_dev->name), 6);
> > char addr[6] = { };
> >
> > memcpy(addr, base_dev->name, len);
> > addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
> >    addr);
> > }
> 
> I'm not sure that code does anything. The base_dev's name field
> is actually not initialized at that point, so nothing is copied
> here.
> 
Oh in that case it’s an issue here.

> If you're asking whether siw needs to build a non-zero GID to
> make the posted patch work, more testing is needed; but I don't
> believe the GID has any relevance -- the egress ib_device is
> selected based entirely on the source IP address in this case.
> 

The whole GID based address resolution I think is an
artefact of IB/RoCE address handling. iWarp is supposed to
run on TCP streams, which endpoints are well defined by L3
addresses. IP routing shall define the outgoing interface...
siw tries to play well and invents GIDs to satisfy
the RDMA core concepts. But a GID is not part of the iWarp
concept. I am not sure for 'real' HW iWarp devices, but to
me it looks like the iwcm code could be done more
independently, if no application expects valid GIDs.


  reply	other threads:[~2023-06-03 13:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-02 19:24 [PATCH RFC] RDMA/core: Handle ARPHRD_NONE devices Chuck Lever
2023-06-02 22:18 ` Tom Talpey
2023-06-03  0:33   ` Chuck Lever III
2023-06-03 13:51     ` Bernard Metzler [this message]
2023-06-03 13:53       ` Chuck Lever III
2023-06-03 13:55         ` Bernard Metzler
2023-06-05 19:05       ` Jason Gunthorpe
2023-06-06 15:48 ` Jason Gunthorpe
2023-06-06 20:15   ` Chuck Lever III
2023-06-06 23:17     ` Jason Gunthorpe
2023-06-07 14:48       ` Chuck Lever III

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=SA0PR15MB3919D432A5401D3E459A83B6994FA@SA0PR15MB3919.namprd15.prod.outlook.com \
    --to=bmt@zurich.ibm.com \
    --cc=cel@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=jgg@nvidia.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=tom@talpey.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).