diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx5/main.c')
-rw-r--r-- | drivers/infiniband/hw/mlx5/main.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index edd8b8741846..5acf346e048e 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c | |||
@@ -284,7 +284,7 @@ __be16 mlx5_get_roce_udp_sport(struct mlx5_ib_dev *dev, u8 port_num, | |||
284 | 284 | ||
285 | static int mlx5_use_mad_ifc(struct mlx5_ib_dev *dev) | 285 | static int mlx5_use_mad_ifc(struct mlx5_ib_dev *dev) |
286 | { | 286 | { |
287 | return !dev->mdev->issi; | 287 | return !MLX5_CAP_GEN(dev->mdev, ib_virt); |
288 | } | 288 | } |
289 | 289 | ||
290 | enum { | 290 | enum { |
@@ -563,6 +563,9 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, | |||
563 | if (MLX5_CAP_GEN(mdev, cd)) | 563 | if (MLX5_CAP_GEN(mdev, cd)) |
564 | props->device_cap_flags |= IB_DEVICE_CROSS_CHANNEL; | 564 | props->device_cap_flags |= IB_DEVICE_CROSS_CHANNEL; |
565 | 565 | ||
566 | if (!mlx5_core_is_pf(mdev)) | ||
567 | props->device_cap_flags |= IB_DEVICE_VIRTUAL_FUNCTION; | ||
568 | |||
566 | return 0; | 569 | return 0; |
567 | } | 570 | } |
568 | 571 | ||
@@ -700,6 +703,7 @@ static int mlx5_query_hca_port(struct ib_device *ibdev, u8 port, | |||
700 | props->qkey_viol_cntr = rep->qkey_violation_counter; | 703 | props->qkey_viol_cntr = rep->qkey_violation_counter; |
701 | props->subnet_timeout = rep->subnet_timeout; | 704 | props->subnet_timeout = rep->subnet_timeout; |
702 | props->init_type_reply = rep->init_type_reply; | 705 | props->init_type_reply = rep->init_type_reply; |
706 | props->grh_required = rep->grh_required; | ||
703 | 707 | ||
704 | err = mlx5_query_port_link_width_oper(mdev, &ib_link_width_oper, port); | 708 | err = mlx5_query_port_link_width_oper(mdev, &ib_link_width_oper, port); |
705 | if (err) | 709 | if (err) |
@@ -2350,6 +2354,12 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev) | |||
2350 | dev->ib_dev.map_mr_sg = mlx5_ib_map_mr_sg; | 2354 | dev->ib_dev.map_mr_sg = mlx5_ib_map_mr_sg; |
2351 | dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status; | 2355 | dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status; |
2352 | dev->ib_dev.get_port_immutable = mlx5_port_immutable; | 2356 | dev->ib_dev.get_port_immutable = mlx5_port_immutable; |
2357 | if (mlx5_core_is_pf(mdev)) { | ||
2358 | dev->ib_dev.get_vf_config = mlx5_ib_get_vf_config; | ||
2359 | dev->ib_dev.set_vf_link_state = mlx5_ib_set_vf_link_state; | ||
2360 | dev->ib_dev.get_vf_stats = mlx5_ib_get_vf_stats; | ||
2361 | dev->ib_dev.set_vf_guid = mlx5_ib_set_vf_guid; | ||
2362 | } | ||
2353 | 2363 | ||
2354 | mlx5_ib_internal_fill_odp_caps(dev); | 2364 | mlx5_ib_internal_fill_odp_caps(dev); |
2355 | 2365 | ||