diff options
author | Yishai Hadas <yishaih@mellanox.com> | 2018-11-26 09:28:34 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2018-12-04 21:46:41 +0300 |
commit | 04ca16cc198c2bd2fc51749123c118a284d1605e (patch) | |
tree | 0867450a445be4d2f4ae9934f4dbc5839a2ed1ed | |
parent | 4d7e8cc57429e1874658acbff98d3877c81cd0a4 (diff) | |
download | linux-04ca16cc198c2bd2fc51749123c118a284d1605e.tar.xz |
IB/core: Enable getting an object type from a given uobject
Enable getting an object type from a given uobject, the type is saved
upon tree merging and is returned as part of some helper function.
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r-- | drivers/infiniband/core/rdma_core.h | 5 | ||||
-rw-r--r-- | drivers/infiniband/core/uverbs_uapi.c | 1 | ||||
-rw-r--r-- | include/rdma/uverbs_std_types.h | 12 |
3 files changed, 13 insertions, 5 deletions
diff --git a/drivers/infiniband/core/rdma_core.h b/drivers/infiniband/core/rdma_core.h index 8aec28037c48..b3ca7457ac42 100644 --- a/drivers/infiniband/core/rdma_core.h +++ b/drivers/infiniband/core/rdma_core.h @@ -118,11 +118,6 @@ void release_ufile_idr_uobject(struct ib_uverbs_file *ufile); * Depending on ID the slot pointer in the radix tree points at one of these * structs. */ -struct uverbs_api_object { - const struct uverbs_obj_type *type_attrs; - const struct uverbs_obj_type_class *type_class; - u8 disabled:1; -}; struct uverbs_api_ioctl_method { int(__rcu *handler)(struct uverbs_attr_bundle *attrs); diff --git a/drivers/infiniband/core/uverbs_uapi.c b/drivers/infiniband/core/uverbs_uapi.c index faac225184a6..0136c1d78a0f 100644 --- a/drivers/infiniband/core/uverbs_uapi.c +++ b/drivers/infiniband/core/uverbs_uapi.c @@ -184,6 +184,7 @@ static int uapi_merge_obj_tree(struct uverbs_api *uapi, if (WARN_ON(obj_elm->type_attrs)) return -EINVAL; + obj_elm->id = obj->id; obj_elm->type_attrs = obj->type_attrs; obj_elm->type_class = obj->type_attrs->type_class; /* diff --git a/include/rdma/uverbs_std_types.h b/include/rdma/uverbs_std_types.h index df878ce02c94..883abcf6d36e 100644 --- a/include/rdma/uverbs_std_types.h +++ b/include/rdma/uverbs_std_types.h @@ -182,5 +182,17 @@ static inline void ib_set_flow(struct ib_uobject *uobj, struct ib_flow *ibflow, uflow->resources = uflow_res; } +struct uverbs_api_object { + const struct uverbs_obj_type *type_attrs; + const struct uverbs_obj_type_class *type_class; + u8 disabled:1; + u32 id; +}; + +static inline u32 uobj_get_object_id(struct ib_uobject *uobj) +{ + return uobj->uapi_object->id; +} + #endif |