linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hal Rosenstock <hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
To: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
Cc: Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Hal Rosenstock
	<hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Tom Tucker
	<tom-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>,
	Steve Wise
	<swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>,
	Hoang-Nam Nguyen
	<hnguyen-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
	Christoph Raisch <raisch-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
	Mike Marciniszyn
	<infinipath-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Faisal Latif
	<faisal.latif-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Jack Morgenstein
	<jackm-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>,
	Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Haggai Eran <haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Tom Talpey <tom-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>,
	Jason Gunthorpe
	<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>,
	Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH v4 14/27] IB/Verbs: Reform cma_acquire_dev()
Date: Thu, 16 Apr 2015 09:19:06 -0400	[thread overview]
Message-ID: <552FB6CA.1040106@dev.mellanox.co.il> (raw)
In-Reply-To: <552F6E43.2070700-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>

On 4/16/2015 4:09 AM, Michael Wang wrote:
> 
> Reform cma_acquire_dev() with management helpers, introduce
> cma_validate_port() to make the code more clean.
> 
> Cc: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
> Cc: Tom Talpey <tom-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
> Cc: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
> Cc: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Cc: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Cc: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
> ---
>  drivers/infiniband/core/cma.c | 69 +++++++++++++++++++++++++------------------
>  1 file changed, 41 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
> index b520882..902cc1a 100644
> --- a/drivers/infiniband/core/cma.c
> +++ b/drivers/infiniband/core/cma.c
> @@ -370,18 +370,36 @@ static int cma_translate_addr(struct sockaddr *addr, struct rdma_dev_addr *dev_a
>  	return ret;
>  }
>  
> +static inline int cma_validate_port(struct ib_device *device, u8 port,
> +				      union ib_gid *gid, int dev_type)
> +{
> +	u8 found_port;
> +	int ret = -ENODEV;
> +
> +	if ((dev_type == ARPHRD_INFINIBAND) && !rdma_tech_ib(device, port))
> +		return ret;
> +
> +	if ((dev_type != ARPHRD_INFINIBAND) && rdma_tech_ib(device, port))
> +		return ret;
> +
> +	ret = ib_find_cached_gid(device, gid, &found_port, NULL);
> +
> +	if (!ret && (port == found_port))
> +		return 0;
> +
> +	return ret;

Should the case where ret = 0 and port != found_port need to be handled
the same as currently ? It looks different to me since in this case the
port will be saved into id_priv->id.port_num whereas currently it isn't.

-- Hal

> +}
> +
>  static int cma_acquire_dev(struct rdma_id_private *id_priv,
>  			   struct rdma_id_private *listen_id_priv)
>  {
>  	struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
>  	struct cma_device *cma_dev;
> -	union ib_gid gid, iboe_gid;
> +	union ib_gid gid, iboe_gid, *gidp;
>  	int ret = -ENODEV;
> -	u8 port, found_port;
> -	enum rdma_link_layer dev_ll = dev_addr->dev_type == ARPHRD_INFINIBAND ?
> -		IB_LINK_LAYER_INFINIBAND : IB_LINK_LAYER_ETHERNET;
> +	u8 port;
>  
> -	if (dev_ll != IB_LINK_LAYER_INFINIBAND &&
> +	if (dev_addr->dev_type != ARPHRD_INFINIBAND &&
>  	    id_priv->id.ps == RDMA_PS_IPOIB)
>  		return -EINVAL;
>  
> @@ -391,41 +409,36 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv,
>  
>  	memcpy(&gid, dev_addr->src_dev_addr +
>  	       rdma_addr_gid_offset(dev_addr), sizeof gid);
> -	if (listen_id_priv &&
> -	    rdma_port_get_link_layer(listen_id_priv->id.device,
> -				     listen_id_priv->id.port_num) == dev_ll) {
> +
> +	if (listen_id_priv) {
>  		cma_dev = listen_id_priv->cma_dev;
>  		port = listen_id_priv->id.port_num;
> -		if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
> -		    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
> -			ret = ib_find_cached_gid(cma_dev->device, &iboe_gid,
> -						 &found_port, NULL);
> -		else
> -			ret = ib_find_cached_gid(cma_dev->device, &gid,
> -						 &found_port, NULL);
> +		gidp = rdma_tech_iboe(cma_dev->device, port) ?
> +		       &iboe_gid : &gid;
>  
> -		if (!ret && (port  == found_port)) {
> -			id_priv->id.port_num = found_port;
> +		ret = cma_validate_port(cma_dev->device, port, gidp,
> +					dev_addr->dev_type);
> +		if (!ret) {
> +			id_priv->id.port_num = port;
>  			goto out;
>  		}
>  	}
> +
>  	list_for_each_entry(cma_dev, &dev_list, list) {
>  		for (port = 1; port <= cma_dev->device->phys_port_cnt; ++port) {
>  			if (listen_id_priv &&
>  			    listen_id_priv->cma_dev == cma_dev &&
>  			    listen_id_priv->id.port_num == port)
>  				continue;
> -			if (rdma_port_get_link_layer(cma_dev->device, port) == dev_ll) {
> -				if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
> -				    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
> -					ret = ib_find_cached_gid(cma_dev->device, &iboe_gid, &found_port, NULL);
> -				else
> -					ret = ib_find_cached_gid(cma_dev->device, &gid, &found_port, NULL);
> -
> -				if (!ret && (port == found_port)) {
> -					id_priv->id.port_num = found_port;
> -					goto out;
> -				}
> +
> +			gidp = rdma_tech_iboe(cma_dev->device, port) ?
> +			       &iboe_gid : &gid;
> +
> +			ret = cma_validate_port(cma_dev->device, port, gidp,
> +						dev_addr->dev_type);
> +			if (!ret) {
> +				id_priv->id.port_num = port;
> +				goto out;
>  			}
>  		}
>  	}

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2015-04-16 13:19 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-16  8:04 [PATCH v4 00/27] IB/Verbs: IB Management Helpers Michael Wang
2015-04-16  8:04 ` [PATCH v4 01/27] IB/Verbs: Implement new callback query_transport() Michael Wang
2015-04-16  8:07 ` [PATCH v4 08/27] IB/Verbs: Reform IB-ulp xprtrdma Michael Wang
2015-04-16  8:07 ` [PATCH v4 09/27] IB/Verbs: Reform IB-core verbs/uverbs_cmd/sysfs Michael Wang
     [not found] ` <552F6CF2.4000606-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16  8:05   ` [PATCH v4 02/27] IB/Verbs: Implement raw management helpers Michael Wang
2015-04-16  8:05   ` [PATCH v4 03/27] IB/Verbs: Reform IB-core mad/agent/user_mad Michael Wang
2015-04-16 12:43     ` Hal Rosenstock
     [not found]       ` <552FAE66.6020900-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 12:51         ` Michael Wang
2015-04-16  8:05   ` [PATCH v4 04/27] IB/Verbs: Reform IB-core cm Michael Wang
     [not found]     ` <552F6D67.1070509-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 12:43       ` Hal Rosenstock
     [not found]         ` <552FAE87.50303-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 12:55           ` Michael Wang
2015-04-16  8:06   ` [PATCH v4 05/27] IB/Verbs: Reform IB-core sa_query Michael Wang
2015-04-16  8:06   ` [PATCH v4 06/27] IB/Verbs: Reform IB-core multicast Michael Wang
2015-04-16  8:07   ` [PATCH v4 07/27] IB/Verbs: Reform IB-ulp ipoib Michael Wang
2015-04-16  8:08   ` [PATCH v4 10/27] IB/Verbs: Reform cm related part in IB-core cma/ucm Michael Wang
     [not found]     ` <552F6DEA.9080701-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:10       ` Hal Rosenstock
     [not found]         ` <552FB4D0.5080302-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 13:19           ` Michael Wang
     [not found]             ` <552FB6EF.80107-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 14:31               ` Hefty, Sean
     [not found]                 ` <1828884A29C6694DAF28B7E6B8A82373A8FC22C3-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-16 15:22                   ` Michael Wang
     [not found]                     ` <552FD3BE.4090204-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 17:21                       ` Tom Talpey
     [not found]                         ` <552FEFAC.6080402-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-04-16 17:30                           ` Hefty, Sean
     [not found]                             ` <1828884A29C6694DAF28B7E6B8A82373A8FC2508-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-17  8:27                               ` Michael Wang
2015-04-17  8:11                           ` Michael Wang
2015-04-16 15:58       ` Jason Gunthorpe
2015-04-16 16:55         ` Hefty, Sean
     [not found]           ` <1828884A29C6694DAF28B7E6B8A82373A8FC2452-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-16 16:57             ` Jason Gunthorpe
     [not found]         ` <20150416155823.GB21809-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-04-16 17:38           ` Hal Rosenstock
     [not found]             ` <552FF37F.8050306-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 17:41               ` Weiny, Ira
2015-04-16 17:48               ` Jason Gunthorpe
2015-04-17  8:36           ` Michael Wang
2015-04-16  8:08   ` [PATCH v4 12/27] IB/Verbs: Reform mcast related part in IB-core cma Michael Wang
2015-04-16  8:10   ` [PATCH v4 16/27] IB/Verbs: Use management helper cap_ib_mad() Michael Wang
2015-04-16  8:11   ` [PATCH v4 17/27] IB/Verbs: Use management helper cap_ib_smi() Michael Wang
2015-04-16  8:12   ` [PATCH v4 19/27] IB/Verbs: Use management helper cap_iw_cm() Michael Wang
2015-04-16  8:13   ` [PATCH v4 22/27] IB/Verbs: Use management helper cap_ipoib() Michael Wang
2015-04-16  8:14   ` [PATCH v4 24/27] IB/Verbs: Use management helper cap_af_ib() Michael Wang
2015-04-16  8:15   ` [PATCH v4 26/27] IB/Verbs: Clean up rdma_ib_or_iboe() Michael Wang
2015-04-16  8:15   ` [PATCH v4 27/27] IB/Verbs: Cleanup rdma_node_get_transport() Michael Wang
     [not found]     ` <552F6FB4.3060903-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:36       ` Hal Rosenstock
     [not found]         ` <552FBAD6.6000400-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 13:41           ` Michael Wang
     [not found]             ` <552FBBEC.3020606-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:42               ` Hal Rosenstock
2015-04-16 13:45                 ` Michael Wang
     [not found]                   ` <552FBCF4.2070105-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:51                     ` Tom Tucker
2015-04-16  8:08 ` [PATCH v4 11/27] IB/Verbs: Reform route related part in IB-core cma Michael Wang
2015-04-16  8:09 ` [PATCH v4 13/27] IB/Verbs: Reserve legacy transport type in 'dev_addr' Michael Wang
2015-04-16  8:09 ` [PATCH v4 14/27] IB/Verbs: Reform cma_acquire_dev() Michael Wang
     [not found]   ` <552F6E43.2070700-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:19     ` Hal Rosenstock [this message]
     [not found]       ` <552FB6CA.1040106-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 13:35         ` Michael Wang
     [not found]           ` <552FBA93.1030304-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:41             ` Hal Rosenstock
2015-04-16  8:10 ` [PATCH v4 15/27] IB/Verbs: Reform rest part in IB-core cma Michael Wang
2015-04-16  8:12 ` [PATCH v4 18/27] IB/Verbs: Use management helper cap_ib_cm() Michael Wang
2015-04-16  8:12 ` [PATCH v4 20/27] IB/Verbs: Use management helper cap_ib_sa() Michael Wang
     [not found]   ` <552F6EFE.70500-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-16 13:36     ` Hal Rosenstock
     [not found]       ` <552FBAC7.3020304-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-04-16 13:38         ` Michael Wang
2015-04-16  8:13 ` [PATCH v4 21/27] IB/Verbs: Use management helper cap_ib_mcast() Michael Wang
2015-04-16  8:14 ` [PATCH v4 23/27] IB/Verbs: Use management helper cap_read_multi_sge() Michael Wang
2015-04-16  8:15 ` [PATCH v4 25/27] IB/Verbs: Use management helper cap_eth_ah() Michael Wang

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=552FB6CA.1040106@dev.mellanox.co.il \
    --to=hal-ldsdmyg8hgv8yrgs2mwiifqbs+8scbdb@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=faisal.latif-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=hnguyen-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=infinipath-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=jackm-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
    --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=raisch-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org \
    --cc=tom-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org \
    --cc=tom-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org \
    --cc=yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org \
    /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).