public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
To: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Moni Shoua <monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Haggai Eran <haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Eran Ben Elisha <eranbe-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] IB/cma: cma_match_net_dev needs to take into account port_num
Date: Tue, 22 Dec 2015 08:44:36 +0200	[thread overview]
Message-ID: <5678F154.1040608@mellanox.com> (raw)
In-Reply-To: <1450710084-22547-1-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

On 12/21/2015 5:01 PM, Matan Barak wrote:
> Previously, cma_match_net_dev called cma_protocol_roce which
> tried to verify that the IB device uses RoCE protocol. However,
> if rdma_id didn't have a bounded port, it used the first port
> of the device.

maybe prefer a higher then code speak language e.g "if the rdma id 
didn't have"  also below "unbounded rdma ids"

>
> In VPI systems, the first port might be an IB port while the second
> one could be an Ethernet port. This made requests for unbounded rdma_ids
> that come from the Ethernet port fail.

add "to" --> "Ethernet port to fail"

> Fixing this by passing the port of the request and checking this port
> of the device.

OK, so this fix will work for both ib/eth and eth/ib configs, right? good.


>
> Fixes: b8cab5dab15f ('IB/cma: Accept connection without a valid netdev on RoCE')

Reported-by: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>


> Signed-off-by: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

Doug, the bug fixes a commit from from 4.3, lets fix it in 4.4 and later 
we will send it to -stable as well. So for 4.4 there's this one and the 
kvfree fix [1]

Or.

[1] https://patchwork.kernel.org/patch/7868481/


> ---
> Hi Doug,
>
> This patch fixes a bug in VPI systems, where the first port is configured
> as IB and the second one is configured as Ethernet.
> In this case, if the rdma_id isn't bounded to a port, cma_match_net_dev
> will try to verify that the first port is a RoCE port and fail.
> This is fixed by passing the port of the incoming request.
>
> Regards,
> Matan
>
>   drivers/infiniband/core/cma.c |   16 +++++++++-------
>   1 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
> index d2d5d00..c8a265c 100644
> --- a/drivers/infiniband/core/cma.c
> +++ b/drivers/infiniband/core/cma.c
> @@ -1265,15 +1265,17 @@ static bool cma_protocol_roce(const struct rdma_cm_id *id)
>   	return cma_protocol_roce_dev_port(device, port_num);
>   }
>   
> -static bool cma_match_net_dev(const struct rdma_id_private *id_priv,
> -			      const struct net_device *net_dev)
> +static bool cma_match_net_dev(const struct rdma_cm_id *id,
> +			      const struct net_device *net_dev,
> +			      u8 port_num)
>   {
> -	const struct rdma_addr *addr = &id_priv->id.route.addr;
> +	const struct rdma_addr *addr = &id->route.addr;
>   
>   	if (!net_dev)
>   		/* This request is an AF_IB request or a RoCE request */
> -		return addr->src_addr.ss_family == AF_IB ||
> -		       cma_protocol_roce(&id_priv->id);
> +		return (!id->port_num || id->port_num == port_num) &&
> +		       (addr->src_addr.ss_family == AF_IB ||
> +			cma_protocol_roce_dev_port(id->device, port_num));
>   
>   	return !addr->dev_addr.bound_dev_if ||
>   	       (net_eq(dev_net(net_dev), addr->dev_addr.net) &&
> @@ -1295,13 +1297,13 @@ static struct rdma_id_private *cma_find_listener(
>   	hlist_for_each_entry(id_priv, &bind_list->owners, node) {
>   		if (cma_match_private_data(id_priv, ib_event->private_data)) {
>   			if (id_priv->id.device == cm_id->device &&
> -			    cma_match_net_dev(id_priv, net_dev))
> +			    cma_match_net_dev(&id_priv->id, net_dev, req->port))
>   				return id_priv;
>   			list_for_each_entry(id_priv_dev,
>   					    &id_priv->listen_list,
>   					    listen_list) {
>   				if (id_priv_dev->id.device == cm_id->device &&
> -				    cma_match_net_dev(id_priv_dev, net_dev))
> +				    cma_match_net_dev(&id_priv_dev->id, net_dev, req->port))
>   					return id_priv_dev;
>   			}
>   		}

--
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-12-22  6:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-21 15:01 [PATCH] IB/cma: cma_match_net_dev needs to take into account port_num Matan Barak
     [not found] ` <1450710084-22547-1-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-12-22  6:44   ` Or Gerlitz [this message]
2015-12-22  7:17   ` Or Gerlitz
     [not found]     ` <5678F907.7080300-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-12-22 14:42       ` Or Gerlitz
2015-12-22 10:47   ` Or Gerlitz
     [not found]     ` <56792A4B.8060101-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-12-22 18:58       ` Doug Ledford
     [not found]         ` <56799D61.9010206-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-22 19:26           ` Matan Barak
     [not found]             ` <CAAKD3BDmenFsiZTDiw8OEW-F0GqK62+zJ-TVywyYd4YDtzxrCA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-22 20:01               ` Doug Ledford
     [not found]                 ` <5679AC18.4070002-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-23  8:48                   ` Sagi Grimberg
2015-12-23 16:08               ` Doug Ledford
     [not found]                 ` <567AC6E4.3030100-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-23 16:20                   ` Matan Barak
2015-12-23 16:35                   ` Matan Barak
     [not found]                     ` <CAAKD3BAt2YBB-Y-VH29w5B7rLfbBEq2EuH6BtDwb0O3W8-PGwg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-23 17:57                       ` Doug Ledford
     [not found]                         ` <567AE07A.10003-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-24  7:57                           ` Matan Barak
     [not found]                             ` <CAAKD3BADP_Jf2zNJDcx8YOv1zt4=pp5V+eYugfn-tBuVgFxBCw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-24  8:18                               ` Or Gerlitz

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=5678F154.1040608@mellanox.com \
    --to=ogerlitz-vpraknaxozvwk0htik3j/w@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=eranbe-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=monis-VPRAkNaXOzVWk0Htik3J/w@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