aboutsummaryrefslogtreecommitdiff
path: root/drivers/infiniband/core/device.c
diff options
context:
space:
mode:
authorGravatar Mark Bloch <markb@mellanox.com> 2016-05-19 17:12:36 +0300
committerGravatar Doug Ledford <dledford@redhat.com> 2016-05-24 14:44:04 -0400
commitae43f8286730d1f2d241c34601df59f6d2286ac4 (patch)
treebeb629a68629c69511355426f91dde307908f2cb /drivers/infiniband/core/device.c
parentIB/core: Register SA ibnl client during ib_core initialization (diff)
downloadlinux-ae43f8286730d1f2d241c34601df59f6d2286ac4.tar.gz
linux-ae43f8286730d1f2d241c34601df59f6d2286ac4.tar.bz2
linux-ae43f8286730d1f2d241c34601df59f6d2286ac4.zip
IB/core: Add IP to GID netlink offload
There is an assumption that rdmacm is used only between nodes in the same IB subnet, this why ARP resolution can be used to turn IP to GID in rdmacm. When dealing with IB communication between subnets this assumption is no longer valid. ARP resolution will get us the next hop device address and not the peer node's device address. To solve this issue, we will check user space if it can provide the GID of the peer node, and fail if not. We add a sequence number to identify each request and fill in the GID upon answer from userspace. Signed-off-by: Mark Bloch <markb@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/core/device.c')
-rw-r--r--drivers/infiniband/core/device.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 8b4366b2e358..5516fb070344 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -962,6 +962,9 @@ static struct ibnl_client_cbs ibnl_ls_cb_table[] = {
[RDMA_NL_LS_OP_SET_TIMEOUT] = {
.dump = ib_nl_handle_set_timeout,
.module = THIS_MODULE },
+ [RDMA_NL_LS_OP_IP_RESOLVE] = {
+ .dump = ib_nl_handle_ip_res_resp,
+ .module = THIS_MODULE },
};
static int ib_add_ibnl_clients(void)