RDMA/uverbs: Get rid of the & in method specifications
Hide it inside the macros. The & is confusing and interferes with using this as a generic DSL in later patches. Since this also touches almost every line, also run the specs through clang-format (with 'BinPackParameters: false') to make the maintenance easier. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
This commit is contained in:
parent
6c61d2a55c
commit
9a119cd597
|
@ -248,45 +248,50 @@ void create_udata(struct uverbs_attr_bundle *ctx, struct ib_udata *udata)
|
|||
}
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_COMP_CHANNEL,
|
||||
&UVERBS_TYPE_ALLOC_FD(sizeof(struct ib_uverbs_completion_event_file),
|
||||
uverbs_hot_unplug_completion_event_file,
|
||||
&uverbs_event_fops,
|
||||
"[infinibandevent]", O_RDONLY));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_COMP_CHANNEL,
|
||||
UVERBS_TYPE_ALLOC_FD(sizeof(struct ib_uverbs_completion_event_file),
|
||||
uverbs_hot_unplug_completion_event_file,
|
||||
&uverbs_event_fops,
|
||||
"[infinibandevent]",
|
||||
O_RDONLY));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_QP,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uqp_object),
|
||||
uverbs_free_qp));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_QP,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uqp_object), uverbs_free_qp));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_MW,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw));
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_SRQ,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_usrq_object),
|
||||
uverbs_free_srq));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_SRQ,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_usrq_object),
|
||||
uverbs_free_srq));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_AH,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah));
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_FLOW,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uflow_object),
|
||||
uverbs_free_flow));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_FLOW,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uflow_object),
|
||||
uverbs_free_flow));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_WQ,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uwq_object),
|
||||
uverbs_free_wq));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_WQ,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uwq_object), uverbs_free_wq));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_RWQ_IND_TBL,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl));
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_XRCD,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uxrcd_object),
|
||||
uverbs_free_xrcd));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_XRCD,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uxrcd_object),
|
||||
uverbs_free_xrcd));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_PD,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd));
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_DEVICE, NULL);
|
||||
DECLARE_UVERBS_GLOBAL_METHODS(UVERBS_OBJECT_DEVICE);
|
||||
|
||||
DECLARE_UVERBS_OBJECT_TREE(uverbs_default_objects,
|
||||
&UVERBS_OBJECT(UVERBS_OBJECT_DEVICE),
|
||||
|
|
|
@ -124,34 +124,36 @@ static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_READ)(struct ib_device *ib_dev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_COUNTERS_CREATE,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_COUNTERS_CREATE,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(UVERBS_METHOD_COUNTERS_DESTROY,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(
|
||||
UVERBS_METHOD_COUNTERS_DESTROY,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
#define MAX_COUNTERS_BUFF_SIZE USHRT_MAX
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_COUNTERS_READ,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_READ_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_READ_COUNTERS_BUFF,
|
||||
UVERBS_ATTR_SIZE(0, MAX_COUNTERS_BUFF_SIZE),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_READ_COUNTERS_FLAGS,
|
||||
UVERBS_ATTR_TYPE(__u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_COUNTERS_READ,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_READ_COUNTERS_HANDLE,
|
||||
UVERBS_OBJECT_COUNTERS,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_READ_COUNTERS_BUFF,
|
||||
UVERBS_ATTR_SIZE(0, MAX_COUNTERS_BUFF_SIZE),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_READ_COUNTERS_FLAGS,
|
||||
UVERBS_ATTR_TYPE(__u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_COUNTERS,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_counters),
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_counters),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_COUNTERS_CREATE),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_COUNTERS_DESTROY),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_COUNTERS_READ));
|
||||
|
||||
|
|
|
@ -147,24 +147,28 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
|
|||
return ret;
|
||||
};
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_CQ_CREATE,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_CQ_HANDLE, UVERBS_OBJECT_CQ,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_CQE,
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_CQ_CREATE,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_CQ_HANDLE,
|
||||
UVERBS_OBJECT_CQ,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_CQE,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_USER_HANDLE,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_FD(UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL,
|
||||
UVERBS_OBJECT_COMP_CHANNEL,
|
||||
UVERBS_ACCESS_READ),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_COMP_VECTOR,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_FLAGS, UVERBS_ATTR_TYPE(u32)),
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_CREATE_CQ_RESP_CQE,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_USER_HANDLE,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_FD(UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL,
|
||||
UVERBS_OBJECT_COMP_CHANNEL,
|
||||
UVERBS_ACCESS_READ),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_COMP_VECTOR, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_CREATE_CQ_FLAGS, UVERBS_ATTR_TYPE(u32)),
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_CREATE_CQ_RESP_CQE, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_UHW());
|
||||
|
||||
static int UVERBS_HANDLER(UVERBS_METHOD_CQ_DESTROY)(struct ib_device *ib_dev,
|
||||
|
@ -196,20 +200,22 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_DESTROY)(struct ib_device *ib_dev,
|
|||
sizeof(resp));
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_CQ_DESTROY,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_CQ_HANDLE, UVERBS_OBJECT_CQ,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_DESTROY_CQ_RESP,
|
||||
UVERBS_ATTR_TYPE(struct ib_uverbs_destroy_cq_resp),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_CQ_DESTROY,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_CQ_HANDLE,
|
||||
UVERBS_OBJECT_CQ,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_DESTROY_CQ_RESP,
|
||||
UVERBS_ATTR_TYPE(struct ib_uverbs_destroy_cq_resp),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_CQ,
|
||||
UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), uverbs_free_cq),
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ,
|
||||
&UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object),
|
||||
uverbs_free_cq),
|
||||
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI)
|
||||
&UVERBS_METHOD(UVERBS_METHOD_CQ_CREATE),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_CQ_DESTROY)
|
||||
&UVERBS_METHOD(UVERBS_METHOD_CQ_CREATE),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_CQ_DESTROY)
|
||||
#endif
|
||||
);
|
||||
|
||||
);
|
||||
|
|
|
@ -85,24 +85,27 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(struct ib_device *ib_dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_DM_ALLOC,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_ALLOC_DM_HANDLE, UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_ALLOC_DM_LENGTH,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_ALLOC_DM_ALIGNMENT,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_DM_ALLOC,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_ALLOC_DM_HANDLE,
|
||||
UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_ALLOC_DM_LENGTH,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_ALLOC_DM_ALIGNMENT,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(UVERBS_METHOD_DM_FREE,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_FREE_DM_HANDLE,
|
||||
UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(
|
||||
UVERBS_METHOD_DM_FREE,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_FREE_DM_HANDLE,
|
||||
UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_DM,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_dm),
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_dm),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_DM_ALLOC),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_DM_FREE));
|
||||
|
|
|
@ -385,49 +385,60 @@ static const struct uverbs_attr_spec uverbs_flow_action_esp_replay[] = {
|
|||
},
|
||||
};
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp, hard_limit_pkts),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ESN, UVERBS_ATTR_TYPE(__u32)),
|
||||
&UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
|
||||
uverbs_flow_action_esp_keymat,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
|
||||
uverbs_flow_action_esp_replay),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp_encap, type)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp,
|
||||
hard_limit_pkts),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ESN,
|
||||
UVERBS_ATTR_TYPE(__u32)),
|
||||
UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
|
||||
uverbs_flow_action_esp_keymat,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
|
||||
uverbs_flow_action_esp_replay),
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp_encap,
|
||||
type)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_WRITE,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp, hard_limit_pkts),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ESN, UVERBS_ATTR_TYPE(__u32)),
|
||||
&UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
|
||||
uverbs_flow_action_esp_keymat),
|
||||
&UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
|
||||
uverbs_flow_action_esp_replay),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp_encap, type)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_WRITE,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp,
|
||||
hard_limit_pkts),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_FLOW_ACTION_ESP_ESN,
|
||||
UVERBS_ATTR_TYPE(__u32)),
|
||||
UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
|
||||
uverbs_flow_action_esp_keymat),
|
||||
UVERBS_ATTR_ENUM_IN(UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
|
||||
uverbs_flow_action_esp_replay),
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
|
||||
UVERBS_ATTR_STRUCT(struct ib_uverbs_flow_action_esp_encap,
|
||||
type)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(UVERBS_METHOD_FLOW_ACTION_DESTROY,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_FLOW_ACTION,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_flow_action),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_CREATE),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_DESTROY),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY));
|
||||
DECLARE_UVERBS_NAMED_METHOD_DESTROY(
|
||||
UVERBS_METHOD_FLOW_ACTION_DESTROY,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_flow_action),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_CREATE),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_DESTROY),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY));
|
||||
|
|
|
@ -115,32 +115,37 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_MR_REG)(struct ib_device *ib_dev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_DM_MR_REG,
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_HANDLE, UVERBS_OBJECT_MR,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_OFFSET,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_LENGTH,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_PD_HANDLE, UVERBS_OBJECT_PD,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS,
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
UVERBS_METHOD_DM_MR_REG,
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_HANDLE,
|
||||
UVERBS_OBJECT_MR,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_OFFSET,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_LENGTH,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_PD_HANDLE,
|
||||
UVERBS_OBJECT_PD,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_DM_HANDLE,
|
||||
UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_REG_DM_MR_RESP_LKEY,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_IDR(UVERBS_ATTR_REG_DM_MR_DM_HANDLE, UVERBS_OBJECT_DM,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_REG_DM_MR_RESP_LKEY,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_REG_DM_MR_RESP_RKEY,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_REG_DM_MR_RESP_RKEY,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_MR,
|
||||
&UVERBS_TYPE_ALLOC_IDR(uverbs_free_mr),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG));
|
||||
DECLARE_UVERBS_NAMED_OBJECT(
|
||||
UVERBS_OBJECT_MR,
|
||||
UVERBS_TYPE_ALLOC_IDR(uverbs_free_mr),
|
||||
&UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG));
|
||||
|
|
|
@ -984,122 +984,146 @@ static int devx_umem_cleanup(struct ib_uobject *uobject,
|
|||
return 0;
|
||||
}
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_UMEM_REG,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_UMEM,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR, UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_LEN, UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_UMEM_REG,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_UMEM,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_LEN,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_UMEM_DEREG,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_UMEM,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_UMEM_DEREG,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_UMEM,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_QUERY_EQN,
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_QUERY_EQN,
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_QUERY_UAR,
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX, UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_QUERY_UAR,
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX,
|
||||
UVERBS_ATTR_TYPE(u32),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OTHER,
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_OTHER_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO))
|
||||
);
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_OTHER,
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
MLX5_IB_ATTR_DEVX_OTHER_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
UVERBS_ATTR_PTR_OUT(
|
||||
MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OBJ_CREATE,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_OBJ_CREATE,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_NEW,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
UVERBS_ATTR_PTR_OUT(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_DESTROY,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_WRITE,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_WRITE,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
UVERBS_ATTR_PTR_OUT(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
|
||||
DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OBJ_QUERY,
|
||||
&UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
DECLARE_UVERBS_NAMED_METHOD(
|
||||
MLX5_IB_METHOD_DEVX_OBJ_QUERY,
|
||||
UVERBS_ATTR_IDR(MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE,
|
||||
MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
UVERBS_ACCESS_READ,
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_IN(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO |
|
||||
UVERBS_ATTR_SPEC_F_ALLOC_AND_COPY)),
|
||||
UVERBS_ATTR_PTR_OUT(
|
||||
MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
|
||||
UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY |
|
||||
UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)));
|
||||
|
||||
DECLARE_UVERBS_GLOBAL_METHODS(MLX5_IB_OBJECT_DEVX,
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OTHER),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_QUERY_UAR),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_QUERY_EQN));
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OTHER),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_QUERY_UAR),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_QUERY_EQN));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(MLX5_IB_OBJECT_DEVX_OBJ,
|
||||
&UVERBS_TYPE_ALLOC_IDR(devx_obj_cleanup),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_CREATE),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_DESTROY),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_MODIFY),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_QUERY));
|
||||
UVERBS_TYPE_ALLOC_IDR(devx_obj_cleanup),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_CREATE),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_DESTROY),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_MODIFY),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OBJ_QUERY));
|
||||
|
||||
DECLARE_UVERBS_NAMED_OBJECT(MLX5_IB_OBJECT_DEVX_UMEM,
|
||||
&UVERBS_TYPE_ALLOC_IDR(devx_umem_cleanup),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_UMEM_REG),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_UMEM_DEREG));
|
||||
UVERBS_TYPE_ALLOC_IDR(devx_umem_cleanup),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_UMEM_REG),
|
||||
&UVERBS_METHOD(MLX5_IB_METHOD_DEVX_UMEM_DEREG));
|
||||
|
||||
DECLARE_UVERBS_OBJECT_TREE(devx_objects,
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX),
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX_OBJ),
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX_UMEM));
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX),
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX_OBJ),
|
||||
&UVERBS_OBJECT(MLX5_IB_OBJECT_DEVX_UMEM));
|
||||
|
||||
const struct uverbs_object_tree_def *mlx5_ib_get_devx_tree(void)
|
||||
{
|
||||
|
|
|
@ -5315,20 +5315,24 @@ static void mlx5_ib_cleanup_multiport_master(struct mlx5_ib_dev *dev)
|
|||
mlx5_nic_vport_disable_roce(dev->mdev);
|
||||
}
|
||||
|
||||
ADD_UVERBS_ATTRIBUTES_SIMPLE(mlx5_ib_dm, UVERBS_OBJECT_DM,
|
||||
UVERBS_METHOD_DM_ALLOC,
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
&UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
|
||||
UVERBS_ATTR_TYPE(u16),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
ADD_UVERBS_ATTRIBUTES_SIMPLE(
|
||||
mlx5_ib_dm,
|
||||
UVERBS_OBJECT_DM,
|
||||
UVERBS_METHOD_DM_ALLOC,
|
||||
UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)),
|
||||
UVERBS_ATTR_PTR_OUT(MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
|
||||
UVERBS_ATTR_TYPE(u16),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
ADD_UVERBS_ATTRIBUTES_SIMPLE(mlx5_ib_flow_action, UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
|
||||
&UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
ADD_UVERBS_ATTRIBUTES_SIMPLE(
|
||||
mlx5_ib_flow_action,
|
||||
UVERBS_OBJECT_FLOW_ACTION,
|
||||
UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
|
||||
UVERBS_ATTR_PTR_IN(MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS,
|
||||
UVERBS_ATTR_TYPE(u64),
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
|
||||
|
||||
#define NUM_TREES 3
|
||||
static int populate_specs_root(struct mlx5_ib_dev *dev)
|
||||
|
|
|
@ -212,7 +212,7 @@ struct uverbs_object_tree_def {
|
|||
#define UA_FLAGS(_flags) .flags = _flags
|
||||
|
||||
#define UVERBS_ATTR_IDR(_attr_id, _idr_type, _access, ...) \
|
||||
((const struct uverbs_attr_def){ \
|
||||
(&(const struct uverbs_attr_def){ \
|
||||
.id = _attr_id, \
|
||||
.attr = { .type = UVERBS_ATTR_TYPE_IDR, \
|
||||
.u.obj.obj_type = _idr_type, \
|
||||
|
@ -220,7 +220,7 @@ struct uverbs_object_tree_def {
|
|||
__VA_ARGS__ } })
|
||||
|
||||
#define UVERBS_ATTR_FD(_attr_id, _fd_type, _access, ...) \
|
||||
((const struct uverbs_attr_def){ \
|
||||
(&(const struct uverbs_attr_def){ \
|
||||
.id = (_attr_id) + \
|
||||
BUILD_BUG_ON_ZERO((_access) != UVERBS_ACCESS_NEW && \
|
||||
(_access) != UVERBS_ACCESS_READ), \
|
||||
|
@ -230,14 +230,14 @@ struct uverbs_object_tree_def {
|
|||
__VA_ARGS__ } })
|
||||
|
||||
#define UVERBS_ATTR_PTR_IN(_attr_id, _type, ...) \
|
||||
((const struct uverbs_attr_def){ \
|
||||
(&(const struct uverbs_attr_def){ \
|
||||
.id = _attr_id, \
|
||||
.attr = { .type = UVERBS_ATTR_TYPE_PTR_IN, \
|
||||
_type, \
|
||||
__VA_ARGS__ } })
|
||||
|
||||
#define UVERBS_ATTR_PTR_OUT(_attr_id, _type, ...) \
|
||||
((const struct uverbs_attr_def){ \
|
||||
(&(const struct uverbs_attr_def){ \
|
||||
.id = _attr_id, \
|
||||
.attr = { .type = UVERBS_ATTR_TYPE_PTR_OUT, \
|
||||
_type, \
|
||||
|
@ -245,7 +245,7 @@ struct uverbs_object_tree_def {
|
|||
|
||||
/* _enum_arry should be a 'static const union uverbs_attr_spec[]' */
|
||||
#define UVERBS_ATTR_ENUM_IN(_attr_id, _enum_arr, ...) \
|
||||
((const struct uverbs_attr_def){ \
|
||||
(&(const struct uverbs_attr_def){ \
|
||||
.id = _attr_id, \
|
||||
.attr = { .type = UVERBS_ATTR_TYPE_ENUM_IN, \
|
||||
.u2.enum_def.ids = _enum_arr, \
|
||||
|
@ -259,12 +259,12 @@ struct uverbs_object_tree_def {
|
|||
* spec.
|
||||
*/
|
||||
#define UVERBS_ATTR_UHW() \
|
||||
&UVERBS_ATTR_PTR_IN(UVERBS_ATTR_UHW_IN, \
|
||||
UVERBS_ATTR_PTR_IN(UVERBS_ATTR_UHW_IN, \
|
||||
UVERBS_ATTR_SIZE(0, USHRT_MAX), \
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)), \
|
||||
UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_UHW_OUT, \
|
||||
UVERBS_ATTR_SIZE(0, USHRT_MAX), \
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)), \
|
||||
&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_UHW_OUT, \
|
||||
UVERBS_ATTR_SIZE(0, USHRT_MAX), \
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO))
|
||||
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO))
|
||||
|
||||
/*
|
||||
* =======================================
|
||||
|
|
|
@ -78,13 +78,24 @@
|
|||
_object_id)[] = { __VA_ARGS__ }; \
|
||||
const struct uverbs_object_def UVERBS_OBJECT(_object_id) = { \
|
||||
.id = _object_id, \
|
||||
.type_attrs = _type_attrs, \
|
||||
.type_attrs = &_type_attrs, \
|
||||
.num_methods = ARRAY_SIZE(UVERBS_OBJECT_METHODS(_object_id)), \
|
||||
.methods = &UVERBS_OBJECT_METHODS(_object_id) \
|
||||
}
|
||||
|
||||
#define DECLARE_UVERBS_GLOBAL_METHODS(_name, ...) \
|
||||
DECLARE_UVERBS_NAMED_OBJECT(_name, NULL, ##__VA_ARGS__)
|
||||
/*
|
||||
* Declare global methods. These still have a unique object_id because we
|
||||
* identify all uapi methods with a (object,method) tuple. However, they have
|
||||
* no type pointer.
|
||||
*/
|
||||
#define DECLARE_UVERBS_GLOBAL_METHODS(_object_id, ...) \
|
||||
static const struct uverbs_method_def *const UVERBS_OBJECT_METHODS( \
|
||||
_object_id)[] = { __VA_ARGS__ }; \
|
||||
const struct uverbs_object_def UVERBS_OBJECT(_object_id) = { \
|
||||
.id = _object_id, \
|
||||
.num_methods = ARRAY_SIZE(UVERBS_OBJECT_METHODS(_object_id)), \
|
||||
.methods = &UVERBS_OBJECT_METHODS(_object_id) \
|
||||
}
|
||||
|
||||
/* Used by drivers to declare a complete parsing tree for a single method that
|
||||
* differs only in having additional driver specific attributes.
|
||||
|
|
Loading…
Reference in New Issue