RDMA/device: Add ib_device_get_by_netdev()
authorJason Gunthorpe <jgg@mellanox.com>
Wed, 13 Feb 2019 04:12:51 +0000 (21:12 -0700)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 20 Feb 2019 03:52:18 +0000 (20:52 -0700)
commit324e227ea7c952626abafe72db42ae0d70220a6e
tree5e0a306788204bfb58ff927c18fb242e81daa1fc
parentc2261dd76b549754c14c8ac7cadadd0993b182d6
RDMA/device: Add ib_device_get_by_netdev()

Several drivers need to find the ib_device from a given netdev. rxe needs
this at speed in an unsleepable context, so choose to implement the
translation using a RCU safe hash table.

The hash table can have a many to one mapping. This is intended to support
some future case where multiple IB drivers (ie iWarp and RoCE) connect to
the same netdevs. driver_ids will need to be different to support this.

In the process this makes the struct ib_device and ib_port_data RCU safe
by deferring their kfrees.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/device.c
include/rdma/ib_verbs.h