aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/rdma/ib_mad.h7
-rw-r--r--include/uapi/rdma/ib_user_mad.h39
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 */
430struct ib_mad_reg_req { 433struct 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 */
455struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device, 459struct 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
464enum ib_mad_snoop_flags { 469enum 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)
217struct 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 */