Messages in this thread Patch in this message | | | From | Leon Romanovsky <> | Subject | [PATCH rdma-next 8/8] net/rds: Move to client_supported callback | Date | Mon, 5 Apr 2021 08:50:00 +0300 |
| |
From: Parav Pandit <parav@nvidia.com>
Use newly introduced client_supported() callback to avoid client additional if the RDMA device is not of IB type or if it doesn't support device memory extensions.
Signed-off-by: Parav Pandit <parav@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> --- net/rds/ib.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/net/rds/ib.c b/net/rds/ib.c index 24c9a9005a6f..bd2ff7d5a718 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c @@ -125,18 +125,23 @@ void rds_ib_dev_put(struct rds_ib_device *rds_ibdev) queue_work(rds_wq, &rds_ibdev->free_work); } -static int rds_ib_add_one(struct ib_device *device) +static bool rds_client_supported(struct ib_device *device) { - struct rds_ib_device *rds_ibdev; - int ret; - /* Only handle IB (no iWARP) devices */ if (device->node_type != RDMA_NODE_IB_CA) - return -EOPNOTSUPP; + return false; /* Device must support FRWR */ if (!(device->attrs.device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS)) - return -EOPNOTSUPP; + return false; + + return true; +} + +static int rds_ib_add_one(struct ib_device *device) +{ + struct rds_ib_device *rds_ibdev; + int ret; rds_ibdev = kzalloc_node(sizeof(struct rds_ib_device), GFP_KERNEL, ibdev_to_node(device)); @@ -288,7 +293,8 @@ static void rds_ib_remove_one(struct ib_device *device, void *client_data) struct ib_client rds_ib_client = { .name = "rds_ib", .add = rds_ib_add_one, - .remove = rds_ib_remove_one + .remove = rds_ib_remove_one, + .is_supported = rds_client_supported, }; static int rds_ib_conn_info_visitor(struct rds_connection *conn, -- 2.30.2
| |