33 #include <linux/kernel.h>
36 #include <linux/netdevice.h>
38 #include <linux/if_arp.h>
40 #include <linux/slab.h>
41 #include <linux/module.h>
69 static void rds_ib_nodev_connect(
void)
73 spin_lock(&ib_nodev_conns_lock);
76 spin_unlock(&ib_nodev_conns_lock);
87 spin_unlock_irqrestore(&rds_ibdev->
spinlock, flags);
136 rdsdebug(
"Query device failed for %s\n", device->
name);
160 rds_ibdev->
dev = device;
162 if (IS_ERR(rds_ibdev->
pd)) {
168 if (IS_ERR(rds_ibdev->
mr)) {
174 if (IS_ERR(rds_ibdev->
mr_pool)) {
190 rds_ib_nodev_connect();
233 static void rds_ib_remove_one(
struct ib_device *device)
241 rds_ib_dev_shutdown(rds_ibdev);
247 list_del_rcu(&rds_ibdev->
list);
262 .add = rds_ib_add_one,
263 .remove = rds_ib_remove_one
286 dev_addr = &ic->
i_cm_id->route.addr.dev_addr;
288 rdma_addr_get_sgid(dev_addr, (
union ib_gid *) &iinfo->
src_gid);
289 rdma_addr_get_dgid(dev_addr, (
union ib_gid *) &iinfo->
dst_gid);
300 static void rds_ib_ic_info(
struct socket *
sock,
unsigned int len,
305 rds_ib_conn_info_visitor,
331 return PTR_ERR(cm_id);
333 memset(&sin, 0,
sizeof(sin));
335 sin.sin_addr.s_addr =
addr;
344 rdsdebug(
"addr %pI4 ret %d node type %d\n",
346 cm_id->device ? cm_id->device->node_type : -1);
353 static void rds_ib_unregister_client(
void)
363 rds_ib_unregister_client();
371 .laddr_check = rds_ib_laddr_check,
393 .t_name =
"infiniband",
428 rds_ib_unregister_client();