diff options
author | Achiad Shochat <achiad@mellanox.com> | 2015-12-23 18:47:24 +0200 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2015-12-23 12:07:37 -0500 |
commit | 2811ba51b04958cd001b6409c9f70e8563376346 (patch) | |
tree | f77b4c1b4543929fb1c0520993863295fc103413 /drivers/infiniband/hw/mlx5/main.c | |
parent | IB/mlx5: Support IB device's callbacks for adding/deleting GIDs (diff) | |
download | linux-dev-2811ba51b04958cd001b6409c9f70e8563376346.tar.xz linux-dev-2811ba51b04958cd001b6409c9f70e8563376346.zip |
IB/mlx5: Add RoCE fields to Address Vector
Set the address handle and QP address path fields according to the
link layer type (IB/Eth).
Signed-off-by: Achiad Shochat <achiad@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx5/main.c')
-rw-r--r-- | drivers/infiniband/hw/mlx5/main.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index bbe92caba93b..3ee431ab8ea9 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -41,6 +41,7 @@ #include <linux/sched.h> #include <rdma/ib_user_verbs.h> #include <rdma/ib_addr.h> +#include <rdma/ib_cache.h> #include <linux/mlx5/vport.h> #include <rdma/ib_smi.h> #include <rdma/ib_umem.h> @@ -252,6 +253,26 @@ static int mlx5_ib_del_gid(struct ib_device *device, u8 port_num, return set_roce_addr(device, port_num, index, NULL, NULL); } +__be16 mlx5_get_roce_udp_sport(struct mlx5_ib_dev *dev, u8 port_num, + int index) +{ + struct ib_gid_attr attr; + union ib_gid gid; + + if (ib_get_cached_gid(&dev->ib_dev, port_num, index, &gid, &attr)) + return 0; + + if (!attr.ndev) + return 0; + + dev_put(attr.ndev); + + if (attr.gid_type != IB_GID_TYPE_ROCE_UDP_ENCAP) + return 0; + + return cpu_to_be16(MLX5_CAP_ROCE(dev->mdev, r_roce_min_src_udp_port)); +} + static int mlx5_use_mad_ifc(struct mlx5_ib_dev *dev) { return !dev->mdev->issi; |