]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
RDMA/cma: Fix rdma_cm path querying for RoCE
authorParav Pandit <parav@mellanox.com>
Mon, 8 Jan 2018 15:04:48 +0000 (17:04 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 11 Jan 2018 05:00:34 +0000 (22:00 -0700)
The 'if' logic in ucma_query_path was broken with OPA was introduced
and started to treat RoCE paths as as OPA paths. Invert the logic
of the 'if' so only OPA paths are treated as OPA paths.

Otherwise the path records returned to rdma_cma users are mangled
when in RoCE mode.

Fixes: 57520751445b ("IB/SA: Add OPA path record type")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/ucma.c

index 6d32af27bac69ebbd5226ea486fad217d27f6867..2ec0f89035fb7610bc3bae932474c1348247618e 100644 (file)
@@ -904,13 +904,14 @@ static ssize_t ucma_query_path(struct ucma_context *ctx,
 
                resp->path_data[i].flags = IB_PATH_GMP | IB_PATH_PRIMARY |
                                           IB_PATH_BIDIRECTIONAL;
-               if (rec->rec_type == SA_PATH_REC_TYPE_IB) {
-                       ib_sa_pack_path(rec, &resp->path_data[i].path_rec);
-               } else {
+               if (rec->rec_type == SA_PATH_REC_TYPE_OPA) {
                        struct sa_path_rec ib;
 
                        sa_convert_path_opa_to_ib(&ib, rec);
                        ib_sa_pack_path(&ib, &resp->path_data[i].path_rec);
+
+               } else {
+                       ib_sa_pack_path(rec, &resp->path_data[i].path_rec);
                }
        }