From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7D12C7EE2E for ; Sat, 10 Jun 2023 00:04:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230049AbjFJAEk (ORCPT ); Fri, 9 Jun 2023 20:04:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229950AbjFJAEj (ORCPT ); Fri, 9 Jun 2023 20:04:39 -0400 Received: from out-58.mta0.migadu.com (out-58.mta0.migadu.com [91.218.175.58]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A32A9134 for ; Fri, 9 Jun 2023 17:04:38 -0700 (PDT) Message-ID: <68b162e4-06a1-520d-f157-d655cffafb01@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1686355476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wMMcRwD5HKY5JA4vvoRPL+UAGq4H1ELRf3vY8w6pc6U=; b=DSLl7wle8/rQl1garT7NvZ8zN70Izglt+etm6KO//4jka63Q/2gJfR2lkBieVWqCPaBJ98 18YNjvpXw/K9MUtT22bDyQhdUSorKwvDGmfuyNrJCnMIzKkEyMz4HYetMtLPEX8tNUpbBa v0mnjlfmoBlSJJpmPDgx+Ly1KTYZtRw= Date: Sat, 10 Jun 2023 08:04:32 +0800 MIME-Version: 1.0 Subject: Re: [PATCH v1] RDMA/core: Handle ARPHRD_NONE devices for iWARP To: Tom Talpey , Chuck Lever , jgg@nvidia.com, BMT@zurich.ibm.com Cc: Chuck Lever , linux-rdma@vger.kernel.org References: <168616682205.2099.4473975057644323224.stgit@oracle-102.nfsv4bat.org> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Zhu Yanjun In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org 在 2023/6/10 4:49, Tom Talpey 写道: > On 6/7/2023 3:43 PM, Chuck Lever wrote: >> From: Chuck Lever >> >> 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. >> >> Tested with siw and qedr, both initiator and target. >> >> Suggested-by: Jason Gunthorpe >> Signed-off-by: Chuck Lever >> --- >>   drivers/infiniband/core/cma.c |    3 +++ >>   1 file changed, 3 insertions(+) >> >> This of course needs broader testing, but it seems to work, and it's >> a little nicer than "if (dev_type == ARPHRD_NONE)". >> >> One thing I discovered is that the NFS/RDMA server implementation >> does not deal at all with more than one RDMA device on the system. >> I will address that with an ib_client; SunRPC patches forthcoming. >> >> diff --git a/drivers/infiniband/core/cma.c >> b/drivers/infiniband/core/cma.c >> index 56e568fcd32b..c9a2bdb49e3c 100644 >> --- a/drivers/infiniband/core/cma.c >> +++ b/drivers/infiniband/core/cma.c >> @@ -694,6 +694,9 @@ cma_validate_port(struct ib_device *device, u32 port, >>       if (!rdma_dev_access_netns(device, >> id_priv->id.route.addr.dev_addr.net)) >>           return ERR_PTR(-ENODEV); >> +    if (rdma_protocol_iwarp(device, port)) >> +        return rdma_get_gid_attr(device, port, 0); > > This might work, but I'm skeptical of the conditional. There's nothing > special about iWARP that says a GID should come from the outgoing device > mac. And, other protocols without IB GID addressing won't benefit. Agree with you. Other protocols, such as RXE, also need be handled. So a better solution than this needs. Zhu Yanjun > > Wouldn't it be better to detect a missing GID, or infer the need from > some other transport attribute? > > Tom. > >> + >>       if ((dev_type == ARPHRD_INFINIBAND) && !rdma_protocol_ib(device, >> port)) >>           return ERR_PTR(-ENODEV); >> >> >>