All of lore.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 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.