IB/uverbs: Add enum attribute type to ioctl() interface
Methods sometimes need to get one attribute out of a group of pre-defined attributes. This is an enum-like behavior. Since this is a common requirement, we add a new ENUM attribute to the generic uverbs ioctl() layer. This attribute is embedded in methods, like any other attributes we currently have. ENUM attributes point to an array of standard UVERBS_ATTR_PTR_IN. The user-space encodes the enum's attribute id in the id field and the internal PTR_IN attr id in the enum_data.elem_id field. This ENUM attribute could be shared by several attributes and it can get UVERBS_ATTR_SPEC_F_MANDATORY flag, stating this attribute must be supported by the kernel, like any other attribute. Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
committed by
Jason Gunthorpe
parent
8c84660bb4
commit
494c5580aa
@@ -55,7 +55,13 @@ struct ib_uverbs_attr {
|
||||
__u16 attr_id; /* command specific type attribute */
|
||||
__u16 len; /* only for pointers */
|
||||
__u16 flags; /* combination of UVERBS_ATTR_F_XXXX */
|
||||
__u16 reserved;
|
||||
union {
|
||||
struct {
|
||||
__u8 elem_id;
|
||||
__u8 reserved;
|
||||
} enum_data;
|
||||
__u16 reserved;
|
||||
} attr_data;
|
||||
__aligned_u64 data; /* ptr to command, inline data or idr/fd */
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user