Commit 669dac1e authored by Jason Gunthorpe's avatar Jason Gunthorpe

RDMA/uverbs: Add structure size info to write commands

We need the structure sizes to compute the location of the udata in the
core code. Annotate the sizes into the new macro language.

This is generated largely by script and checked by comparing against the
similar list in rdma-core.
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
parent 15a1b4be
...@@ -142,6 +142,10 @@ struct uverbs_api_write_method { ...@@ -142,6 +142,10 @@ struct uverbs_api_write_method {
struct ib_udata *ucore, struct ib_udata *uhw); struct ib_udata *ucore, struct ib_udata *uhw);
u8 disabled:1; u8 disabled:1;
u8 is_ex:1; u8 is_ex:1;
u8 has_udata:1;
u8 has_resp:1;
u8 req_size;
u8 resp_size;
}; };
struct uverbs_api_attr { struct uverbs_api_attr {
......
This diff is collapsed.
...@@ -96,6 +96,13 @@ static int uapi_create_write(struct uverbs_api *uapi, ...@@ -96,6 +96,13 @@ static int uapi_create_write(struct uverbs_api *uapi,
BIT_ULL(def->write.command_num)); BIT_ULL(def->write.command_num));
} }
if (!def->write.is_ex && def->func_write) {
method_elm->has_udata = def->write.has_udata;
method_elm->has_resp = def->write.has_resp;
method_elm->req_size = def->write.req_size;
method_elm->resp_size = def->write.resp_size;
}
*cur_method_key = method_key; *cur_method_key = method_key;
return 0; return 0;
} }
......
...@@ -360,8 +360,12 @@ struct uapi_definition { ...@@ -360,8 +360,12 @@ struct uapi_definition {
u16 object_id; u16 object_id;
} object_start; } object_start;
struct { struct {
u8 is_ex;
u16 command_num; u16 command_num;
u8 is_ex:1;
u8 has_udata:1;
u8 has_resp:1;
u8 req_size;
u8 resp_size;
} write; } write;
}; };
...@@ -388,22 +392,24 @@ struct uapi_definition { ...@@ -388,22 +392,24 @@ struct uapi_definition {
##__VA_ARGS__ ##__VA_ARGS__
/* Use in a var_args of DECLARE_UVERBS_OBJECT */ /* Use in a var_args of DECLARE_UVERBS_OBJECT */
#define DECLARE_UVERBS_WRITE(_command_num, _func, ...) \ #define DECLARE_UVERBS_WRITE(_command_num, _func, _cmd_desc, ...) \
{ \ { \
.kind = UAPI_DEF_WRITE, \ .kind = UAPI_DEF_WRITE, \
.scope = UAPI_SCOPE_OBJECT, \ .scope = UAPI_SCOPE_OBJECT, \
.write = { .is_ex = 0, .command_num = _command_num }, \ .write = { .is_ex = 0, .command_num = _command_num }, \
.func_write = _func, \ .func_write = _func, \
_cmd_desc, \
}, \ }, \
##__VA_ARGS__ ##__VA_ARGS__
/* Use in a var_args of DECLARE_UVERBS_OBJECT */ /* Use in a var_args of DECLARE_UVERBS_OBJECT */
#define DECLARE_UVERBS_WRITE_EX(_command_num, _func, ...) \ #define DECLARE_UVERBS_WRITE_EX(_command_num, _func, _cmd_desc, ...) \
{ \ { \
.kind = UAPI_DEF_WRITE, \ .kind = UAPI_DEF_WRITE, \
.scope = UAPI_SCOPE_OBJECT, \ .scope = UAPI_SCOPE_OBJECT, \
.write = { .is_ex = 1, .command_num = _command_num }, \ .write = { .is_ex = 1, .command_num = _command_num }, \
.func_write_ex = _func, \ .func_write_ex = _func, \
_cmd_desc, \
}, \ }, \
##__VA_ARGS__ ##__VA_ARGS__
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment