Skip to content

Commit

Permalink
IB/mlx5: Use kernel driver to help userspace create ah
Browse files Browse the repository at this point in the history
Resolving a MAC address for a given IP address in userspace is inefficient.
This patch lets mlx5 user driver using the kernel driver to resolve the mac
and get the answer in the private section of the response.

Signed-off-by: Moni Shoua <monis@mellanox.com>
Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
  • Loading branch information
Moni Shoua authored and Doug Ledford committed Dec 13, 2016
1 parent 477864c commit 5097e71
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
21 changes: 21 additions & 0 deletions drivers/infiniband/hw/mlx5/ah.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,27 @@ struct ib_ah *mlx5_ib_create_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr,
if (ll == IB_LINK_LAYER_ETHERNET && !(ah_attr->ah_flags & IB_AH_GRH))
return ERR_PTR(-EINVAL);

if (ll == IB_LINK_LAYER_ETHERNET && udata) {
int err;
struct mlx5_ib_create_ah_resp resp = {};
u32 min_resp_len = offsetof(typeof(resp), dmac) +
sizeof(resp.dmac);

if (udata->outlen < min_resp_len)
return ERR_PTR(-EINVAL);

resp.response_length = min_resp_len;

err = ib_resolve_eth_dmac(pd->device, ah_attr);
if (err)
return ERR_PTR(err);

memcpy(resp.dmac, ah_attr->dmac, ETH_ALEN);
err = ib_copy_to_udata(udata, &resp, resp.response_length);
if (err)
return ERR_PTR(err);
}

ah = kzalloc(sizeof(*ah), GFP_ATOMIC);
if (!ah)
return ERR_PTR(-ENOMEM);
Expand Down
6 changes: 6 additions & 0 deletions include/uapi/rdma/mlx5-abi.h
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,12 @@ struct mlx5_ib_create_wq {
__u32 reserved;
};

struct mlx5_ib_create_ah_resp {
__u32 response_length;
__u8 dmac[ETH_ALEN];
__u8 reserved[6];
};

struct mlx5_ib_create_wq_resp {
__u32 response_length;
__u32 reserved;
Expand Down

0 comments on commit 5097e71

Please sign in to comment.