OSDN Git Service

RDMA/uverbs: Get rid of the & in method specifications
authorJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Jul 2018 05:50:28 +0000 (08:50 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Jul 2018 19:47:01 +0000 (13:47 -0600)
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>
drivers/infiniband/core/uverbs_std_types.c
drivers/infiniband/core/uverbs_std_types_counters.c
drivers/infiniband/core/uverbs_std_types_cq.c
drivers/infiniband/core/uverbs_std_types_dm.c
drivers/infiniband/core/uverbs_std_types_flow_action.c
drivers/infiniband/core/uverbs_std_types_mr.c
drivers/infiniband/hw/mlx5/devx.c
drivers/infiniband/hw/mlx5/main.c
include/rdma/uverbs_ioctl.h
include/rdma/uverbs_named_ioctl.h

index 8d037f7..2f1a0b6 100644 (file)
@@ -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_QP,
-                           &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uqp_object),
-                                                     uverbs_free_qp));
+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_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),
index 61fd65b..21d61e3 100644 (file)
@@ -124,34 +124,36 @@ err_read:
        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_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(
+       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)));
 
 #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));
-
index f1f73ac..0aa1686 100644 (file)
@@ -147,24 +147,28 @@ err_event_file:
        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_OBJECT(UVERBS_OBJECT_CQ,
-                           &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object),
-                                                     uverbs_free_cq),
+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),
+
 #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
-                          );
-
+);
index 75ac20b..16e3e7c 100644 (file)
@@ -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_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(
+       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_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));
index 1a572bd..ec3e669 100644 (file)
@@ -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_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(
+       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_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));
index 0366814..779d6d4 100644 (file)
@@ -115,32 +115,37 @@ err_dereg:
        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)));
-
-DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_MR,
-                           &UVERBS_TYPE_ALLOC_IDR(uverbs_free_mr),
-                           &UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG));
+       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));
index 4156e03..3ac3da4 100644 (file)
@@ -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_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_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_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_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_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_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_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_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_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)
 {
index 0fb8077..a0f4361 100644 (file)
@@ -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_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_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)));
 
 #define NUM_TREES      3
 static int populate_specs_root(struct mlx5_ib_dev *dev)
index 392936a..d21c29a 100644 (file)
@@ -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))
 
 /*
  * =======================================
index 3ee045d..2eb1767 100644 (file)
                _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.