diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/rdma/ib_mad.h | 7 | ||||
-rw-r--r-- | include/uapi/rdma/ib_user_mad.h | 39 |
2 files changed, 45 insertions, 1 deletions
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 3d81b90cc315..876f497f8b0c 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
@@ -355,6 +355,7 @@ typedef void (*ib_mad_recv_handler)(struct ib_mad_agent *mad_agent, | |||
355 | * @hi_tid: Access layer assigned transaction ID for this client. | 355 | * @hi_tid: Access layer assigned transaction ID for this client. |
356 | * Unsolicited MADs sent by this client will have the upper 32-bits | 356 | * Unsolicited MADs sent by this client will have the upper 32-bits |
357 | * of their TID set to this value. | 357 | * of their TID set to this value. |
358 | * @flags: registration flags | ||
358 | * @port_num: Port number on which QP is registered | 359 | * @port_num: Port number on which QP is registered |
359 | * @rmpp_version: If set, indicates the RMPP version used by this agent. | 360 | * @rmpp_version: If set, indicates the RMPP version used by this agent. |
360 | */ | 361 | */ |
@@ -367,6 +368,7 @@ struct ib_mad_agent { | |||
367 | ib_mad_snoop_handler snoop_handler; | 368 | ib_mad_snoop_handler snoop_handler; |
368 | void *context; | 369 | void *context; |
369 | u32 hi_tid; | 370 | u32 hi_tid; |
371 | u32 flags; | ||
370 | u8 port_num; | 372 | u8 port_num; |
371 | u8 rmpp_version; | 373 | u8 rmpp_version; |
372 | }; | 374 | }; |
@@ -426,6 +428,7 @@ struct ib_mad_recv_wc { | |||
426 | * in the range from 0x30 to 0x4f. Otherwise not used. | 428 | * in the range from 0x30 to 0x4f. Otherwise not used. |
427 | * @method_mask: The caller will receive unsolicited MADs for any method | 429 | * @method_mask: The caller will receive unsolicited MADs for any method |
428 | * where @method_mask = 1. | 430 | * where @method_mask = 1. |
431 | * | ||
429 | */ | 432 | */ |
430 | struct ib_mad_reg_req { | 433 | struct ib_mad_reg_req { |
431 | u8 mgmt_class; | 434 | u8 mgmt_class; |
@@ -451,6 +454,7 @@ struct ib_mad_reg_req { | |||
451 | * @recv_handler: The completion callback routine invoked for a received | 454 | * @recv_handler: The completion callback routine invoked for a received |
452 | * MAD. | 455 | * MAD. |
453 | * @context: User specified context associated with the registration. | 456 | * @context: User specified context associated with the registration. |
457 | * @registration_flags: Registration flags to set for this agent | ||
454 | */ | 458 | */ |
455 | struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device, | 459 | struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device, |
456 | u8 port_num, | 460 | u8 port_num, |
@@ -459,7 +463,8 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device, | |||
459 | u8 rmpp_version, | 463 | u8 rmpp_version, |
460 | ib_mad_send_handler send_handler, | 464 | ib_mad_send_handler send_handler, |
461 | ib_mad_recv_handler recv_handler, | 465 | ib_mad_recv_handler recv_handler, |
462 | void *context); | 466 | void *context, |
467 | u32 registration_flags); | ||
463 | 468 | ||
464 | enum ib_mad_snoop_flags { | 469 | enum ib_mad_snoop_flags { |
465 | /*IB_MAD_SNOOP_POSTED_SENDS = 1,*/ | 470 | /*IB_MAD_SNOOP_POSTED_SENDS = 1,*/ |
diff --git a/include/uapi/rdma/ib_user_mad.h b/include/uapi/rdma/ib_user_mad.h index d6fce1cbdb90..c00b081dc10e 100644 --- a/include/uapi/rdma/ib_user_mad.h +++ b/include/uapi/rdma/ib_user_mad.h | |||
@@ -191,6 +191,42 @@ struct ib_user_mad_reg_req { | |||
191 | __u8 rmpp_version; | 191 | __u8 rmpp_version; |
192 | }; | 192 | }; |
193 | 193 | ||
194 | /** | ||
195 | * ib_user_mad_reg_req2 - MAD registration request | ||
196 | * | ||
197 | * @id - Set by the _kernel_; used by userspace to identify the | ||
198 | * registered agent in future requests. | ||
199 | * @qpn - Queue pair number; must be 0 or 1. | ||
200 | * @mgmt_class - Indicates which management class of MADs should be | ||
201 | * receive by the caller. This field is only required if | ||
202 | * the user wishes to receive unsolicited MADs, otherwise | ||
203 | * it should be 0. | ||
204 | * @mgmt_class_version - Indicates which version of MADs for the given | ||
205 | * management class to receive. | ||
206 | * @res - Ignored. | ||
207 | * @flags - additional registration flags; Must be in the set of | ||
208 | * flags defined in IB_USER_MAD_REG_FLAGS_CAP | ||
209 | * @method_mask - The caller wishes to receive unsolicited MADs for the | ||
210 | * methods whose bit(s) is(are) set. | ||
211 | * @oui - Indicates IEEE OUI to use when mgmt_class is a vendor | ||
212 | * class in the range from 0x30 to 0x4f. Otherwise not | ||
213 | * used. | ||
214 | * @rmpp_version - If set, indicates the RMPP version to use. | ||
215 | */ | ||
216 | #define IB_USER_MAD_REG_FLAGS_CAP (0) | ||
217 | struct ib_user_mad_reg_req2 { | ||
218 | __u32 id; | ||
219 | __u32 qpn; | ||
220 | __u8 mgmt_class; | ||
221 | __u8 mgmt_class_version; | ||
222 | __u16 res; | ||
223 | __u32 flags; | ||
224 | __u64 method_mask[2]; | ||
225 | __u32 oui; | ||
226 | __u8 rmpp_version; | ||
227 | __u8 reserved[3]; | ||
228 | }; | ||
229 | |||
194 | #define IB_IOCTL_MAGIC 0x1b | 230 | #define IB_IOCTL_MAGIC 0x1b |
195 | 231 | ||
196 | #define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, \ | 232 | #define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, \ |
@@ -200,4 +236,7 @@ struct ib_user_mad_reg_req { | |||
200 | 236 | ||
201 | #define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3) | 237 | #define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3) |
202 | 238 | ||
239 | #define IB_USER_MAD_REGISTER_AGENT2 _IOWR(IB_IOCTL_MAGIC, 4, \ | ||
240 | struct ib_user_mad_reg_req2) | ||
241 | |||
203 | #endif /* IB_USER_MAD_H */ | 242 | #endif /* IB_USER_MAD_H */ |