IB/core: Convert OPA AH to IB for Extended LIDs only
authorDon Hiatt <don.hiatt@intel.com>
Mon, 6 Nov 2017 14:39:15 +0000 (06:39 -0800)
committerDoug Ledford <dledford@redhat.com>
Mon, 13 Nov 2017 20:53:57 +0000 (15:53 -0500)
When deciding to convert an OPA AH to IB we were incorrectly
including the IB multicast range. At this layer, all Extended
LIDs will be larger than IB_LID_PERMISSIVE. Change comparison
accordingly.

Fixes: d541e45500bd ("IB/core: Convert ah_attr from OPA to IB when copying to user")
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Don Hiatt <don.hiatt@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/uverbs_marshall.c

index aeb2824..bb372b4 100644 (file)
@@ -69,8 +69,7 @@ void ib_copy_ah_attr_to_user(struct ib_device *device,
        memset(&dst->grh.reserved, 0, sizeof(dst->grh.reserved));
 
        if ((ah_attr->type == RDMA_AH_ATTR_TYPE_OPA) &&
-           (rdma_ah_get_dlid(ah_attr) >=
-            be16_to_cpu(IB_MULTICAST_LID_BASE)) &&
+           (rdma_ah_get_dlid(ah_attr) > be16_to_cpu(IB_LID_PERMISSIVE)) &&
            (!rdma_ah_conv_opa_to_ib(device, &conv_ah, ah_attr)))
                src = &conv_ah;