diff mbox

Unable to establish rdma connection, breaks rdma basic functionality

Message ID CAAKD3BD3oj7kBgHrpkoVFVXtFAUHgkkSHP3vBSWRZCc+VCC++g@mail.gmail.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Matan Barak Jan. 6, 2016, 10:33 a.m. UTC
On Wed, Jan 6, 2016 at 6:43 AM, Hariprasad S <hariprasad@chelsio.com> wrote:
>
> Hi Doug,
>
> I am trying to rping server, but it fails when bound to any address other then IF_ANY.
> # rping -s -a 102.1.1.129 -C1 -p 9999 -vd
> created cm_id 0x23d7800
> rdma_bind_addr: No such file or directory
> destroy cm_id 0x23d7800
>
> If bound to IF_ANY address, server starts but client fails to establish connection.
> # rping -s -C1 -p 9999 -vvvd
> created cm_id 0xc34800
> rdma_bind_addr successful
> rdma_listen
>
> And the commit which introduced this regression is
>
> commit abae1b71dd37bab506b14a6cf6ba7148f4d57232
> Author: Matan Barak <matanb@mellanox.com>
> Date:   Thu Oct 15 18:38:49 2015 +0300
>
>     IB/cma: cma_validate_port should verify the port and netdevice
>
>     Previously, cma_validate_port searched for GIDs in IB cache and then
>     tried to verify the found port. This could fail when there are
>     identical GIDs on both ports. In addition, netdevice should be taken
>     into account when searching the GID table.
>     Fixing cma_validate_port to search only the relevant port's cache
>     and netdevice.
>
>     Signed-off-by: Matan Barak <matanb@mellanox.com>
>     Signed-off-by: Doug Ledford <dledford@redhat.com
>
>
> The bug is easily reproducible with latest rc and breaks basic rdma functionality.
> Since 4.4 is already in -rc8, can we have a quick fix.
>
> Thanks,
> Hari--

Hi,

I don't have a iwarp server, so could you please test this simple fix:

        ret = ib_find_cached_gid_by_port(device, gid, port, ndev, NULL);

Regards,
Matan

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

Comments

Hariprasad S Jan. 6, 2016, 11:20 a.m. UTC | #1
On Wed, Jan 06, 2016 at 12:33:09 +0200, Matan Barak wrote:
> On Wed, Jan 6, 2016 at 6:43 AM, Hariprasad S <hariprasad@chelsio.com> wrote:
> >
> > Hi Doug,
> >
> > I am trying to rping server, but it fails when bound to any address other then IF_ANY.
> > # rping -s -a 102.1.1.129 -C1 -p 9999 -vd
> > created cm_id 0x23d7800
> > rdma_bind_addr: No such file or directory
> > destroy cm_id 0x23d7800
> >
> > If bound to IF_ANY address, server starts but client fails to establish connection.
> > # rping -s -C1 -p 9999 -vvvd
> > created cm_id 0xc34800
> > rdma_bind_addr successful
> > rdma_listen
> >
> > And the commit which introduced this regression is
> >
> > commit abae1b71dd37bab506b14a6cf6ba7148f4d57232
> > Author: Matan Barak <matanb@mellanox.com>
> > Date:   Thu Oct 15 18:38:49 2015 +0300
> >
> >     IB/cma: cma_validate_port should verify the port and netdevice
> >
> >     Previously, cma_validate_port searched for GIDs in IB cache and then
> >     tried to verify the found port. This could fail when there are
> >     identical GIDs on both ports. In addition, netdevice should be taken
> >     into account when searching the GID table.
> >     Fixing cma_validate_port to search only the relevant port's cache
> >     and netdevice.
> >
> >     Signed-off-by: Matan Barak <matanb@mellanox.com>
> >     Signed-off-by: Doug Ledford <dledford@redhat.com
> >
> >
> > The bug is easily reproducible with latest rc and breaks basic rdma functionality.
> > Since 4.4 is already in -rc8, can we have a quick fix.
> >
> > Thanks,
> > Hari--
> 
> Hi,
> 
> I don't have a iwarp server, so could you please test this simple fix:
> 
> diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
> index 2cbf9c9..351e835 100644
> --- a/drivers/infiniband/core/cma.c
> +++ b/drivers/infiniband/core/cma.c
> @@ -439,7 +439,7 @@ static inline int cma_validate_port(struct
> ib_device *device, u8 port,
>         if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
>                 return ret;
> 
> -       if (dev_type == ARPHRD_ETHER)
> +       if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port))
>                 ndev = dev_get_by_index(&init_net, bound_if_index);
> 
>         ret = ib_find_cached_gid_by_port(device, gid, port, ndev, NULL);
> 
> Regards,
> Matan

Hi Matan,

Thanks. It worked for me.

Regards,
Hari

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

Patch

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 2cbf9c9..351e835 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -439,7 +439,7 @@  static inline int cma_validate_port(struct
ib_device *device, u8 port,
        if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
                return ret;

-       if (dev_type == ARPHRD_ETHER)
+       if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port))
                ndev = dev_get_by_index(&init_net, bound_if_index);