diff options
Diffstat (limited to 'drivers/infiniband/core/uverbs.h')
| -rw-r--r-- | drivers/infiniband/core/uverbs.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/infiniband/core/uverbs.h b/drivers/infiniband/core/uverbs.h index a078e5624d22..5bcb2afd3dcb 100644 --- a/drivers/infiniband/core/uverbs.h +++ b/drivers/infiniband/core/uverbs.h | |||
| @@ -76,6 +76,8 @@ struct ib_uverbs_device { | |||
| 76 | struct ib_device *ib_dev; | 76 | struct ib_device *ib_dev; |
| 77 | int devnum; | 77 | int devnum; |
| 78 | struct cdev cdev; | 78 | struct cdev cdev; |
| 79 | struct rb_root xrcd_tree; | ||
| 80 | struct mutex xrcd_tree_mutex; | ||
| 79 | }; | 81 | }; |
| 80 | 82 | ||
| 81 | struct ib_uverbs_event_file { | 83 | struct ib_uverbs_event_file { |
| @@ -120,6 +122,16 @@ struct ib_uevent_object { | |||
| 120 | u32 events_reported; | 122 | u32 events_reported; |
| 121 | }; | 123 | }; |
| 122 | 124 | ||
| 125 | struct ib_uxrcd_object { | ||
| 126 | struct ib_uobject uobject; | ||
| 127 | atomic_t refcnt; | ||
| 128 | }; | ||
| 129 | |||
| 130 | struct ib_usrq_object { | ||
| 131 | struct ib_uevent_object uevent; | ||
| 132 | struct ib_uxrcd_object *uxrcd; | ||
| 133 | }; | ||
| 134 | |||
| 123 | struct ib_uqp_object { | 135 | struct ib_uqp_object { |
| 124 | struct ib_uevent_object uevent; | 136 | struct ib_uevent_object uevent; |
| 125 | struct list_head mcast_list; | 137 | struct list_head mcast_list; |
| @@ -142,6 +154,7 @@ extern struct idr ib_uverbs_ah_idr; | |||
| 142 | extern struct idr ib_uverbs_cq_idr; | 154 | extern struct idr ib_uverbs_cq_idr; |
| 143 | extern struct idr ib_uverbs_qp_idr; | 155 | extern struct idr ib_uverbs_qp_idr; |
| 144 | extern struct idr ib_uverbs_srq_idr; | 156 | extern struct idr ib_uverbs_srq_idr; |
| 157 | extern struct idr ib_uverbs_xrcd_idr; | ||
| 145 | 158 | ||
| 146 | void idr_remove_uobj(struct idr *idp, struct ib_uobject *uobj); | 159 | void idr_remove_uobj(struct idr *idp, struct ib_uobject *uobj); |
| 147 | 160 | ||
| @@ -161,6 +174,7 @@ void ib_uverbs_qp_event_handler(struct ib_event *event, void *context_ptr); | |||
| 161 | void ib_uverbs_srq_event_handler(struct ib_event *event, void *context_ptr); | 174 | void ib_uverbs_srq_event_handler(struct ib_event *event, void *context_ptr); |
| 162 | void ib_uverbs_event_handler(struct ib_event_handler *handler, | 175 | void ib_uverbs_event_handler(struct ib_event_handler *handler, |
| 163 | struct ib_event *event); | 176 | struct ib_event *event); |
| 177 | void ib_uverbs_dealloc_xrcd(struct ib_uverbs_device *dev, struct ib_xrcd *xrcd); | ||
| 164 | 178 | ||
| 165 | #define IB_UVERBS_DECLARE_CMD(name) \ | 179 | #define IB_UVERBS_DECLARE_CMD(name) \ |
| 166 | ssize_t ib_uverbs_##name(struct ib_uverbs_file *file, \ | 180 | ssize_t ib_uverbs_##name(struct ib_uverbs_file *file, \ |
| @@ -181,6 +195,7 @@ IB_UVERBS_DECLARE_CMD(poll_cq); | |||
| 181 | IB_UVERBS_DECLARE_CMD(req_notify_cq); | 195 | IB_UVERBS_DECLARE_CMD(req_notify_cq); |
| 182 | IB_UVERBS_DECLARE_CMD(destroy_cq); | 196 | IB_UVERBS_DECLARE_CMD(destroy_cq); |
| 183 | IB_UVERBS_DECLARE_CMD(create_qp); | 197 | IB_UVERBS_DECLARE_CMD(create_qp); |
| 198 | IB_UVERBS_DECLARE_CMD(open_qp); | ||
| 184 | IB_UVERBS_DECLARE_CMD(query_qp); | 199 | IB_UVERBS_DECLARE_CMD(query_qp); |
| 185 | IB_UVERBS_DECLARE_CMD(modify_qp); | 200 | IB_UVERBS_DECLARE_CMD(modify_qp); |
| 186 | IB_UVERBS_DECLARE_CMD(destroy_qp); | 201 | IB_UVERBS_DECLARE_CMD(destroy_qp); |
| @@ -195,5 +210,8 @@ IB_UVERBS_DECLARE_CMD(create_srq); | |||
| 195 | IB_UVERBS_DECLARE_CMD(modify_srq); | 210 | IB_UVERBS_DECLARE_CMD(modify_srq); |
| 196 | IB_UVERBS_DECLARE_CMD(query_srq); | 211 | IB_UVERBS_DECLARE_CMD(query_srq); |
| 197 | IB_UVERBS_DECLARE_CMD(destroy_srq); | 212 | IB_UVERBS_DECLARE_CMD(destroy_srq); |
| 213 | IB_UVERBS_DECLARE_CMD(create_xsrq); | ||
| 214 | IB_UVERBS_DECLARE_CMD(open_xrcd); | ||
| 215 | IB_UVERBS_DECLARE_CMD(close_xrcd); | ||
| 198 | 216 | ||
| 199 | #endif /* UVERBS_H */ | 217 | #endif /* UVERBS_H */ |
