aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/mlx4/main.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 3fdd1c17cef7..23d734349d8e 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -137,6 +137,14 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
137 props->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS; 137 props->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS;
138 if (dev->dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) 138 if (dev->dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC)
139 props->device_cap_flags |= IB_DEVICE_XRC; 139 props->device_cap_flags |= IB_DEVICE_XRC;
140 if (dev->dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW)
141 props->device_cap_flags |= IB_DEVICE_MEM_WINDOW;
142 if (dev->dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN) {
143 if (dev->dev->caps.bmme_flags & MLX4_BMME_FLAG_WIN_TYPE_2B)
144 props->device_cap_flags |= IB_DEVICE_MEM_WINDOW_TYPE_2B;
145 else
146 props->device_cap_flags |= IB_DEVICE_MEM_WINDOW_TYPE_2A;
147 }
140 148
141 props->vendor_id = be32_to_cpup((__be32 *) (out_mad->data + 36)) & 149 props->vendor_id = be32_to_cpup((__be32 *) (out_mad->data + 36)) &
142 0xffffff; 150 0xffffff;
@@ -1434,6 +1442,17 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
1434 ibdev->ib_dev.dealloc_fmr = mlx4_ib_fmr_dealloc; 1442 ibdev->ib_dev.dealloc_fmr = mlx4_ib_fmr_dealloc;
1435 } 1443 }
1436 1444
1445 if (dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW ||
1446 dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN) {
1447 ibdev->ib_dev.alloc_mw = mlx4_ib_alloc_mw;
1448 ibdev->ib_dev.bind_mw = mlx4_ib_bind_mw;
1449 ibdev->ib_dev.dealloc_mw = mlx4_ib_dealloc_mw;
1450
1451 ibdev->ib_dev.uverbs_cmd_mask |=
1452 (1ull << IB_USER_VERBS_CMD_ALLOC_MW) |
1453 (1ull << IB_USER_VERBS_CMD_DEALLOC_MW);
1454 }
1455
1437 if (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) { 1456 if (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) {
1438 ibdev->ib_dev.alloc_xrcd = mlx4_ib_alloc_xrcd; 1457 ibdev->ib_dev.alloc_xrcd = mlx4_ib_alloc_xrcd;
1439 ibdev->ib_dev.dealloc_xrcd = mlx4_ib_dealloc_xrcd; 1458 ibdev->ib_dev.dealloc_xrcd = mlx4_ib_dealloc_xrcd;