aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorIra Weiny <ira.weiny@intel.com>2014-08-08 19:00:56 -0400
committerRoland Dreier <roland@purestorage.com>2014-08-10 23:36:00 -0400
commit1471cb6ca67990a306500e69e52ffb28c93ccbbc (patch)
tree6d9dba8e122759ff4a193487aae516a300e563f1 /include
parent0f29b46d49b0ca50536632c6a33986c3171f5ea1 (diff)
IB/mad: Add user space RMPP support
Using the new registration mechanism, define a flag that indicates the user wishes to process RMPP messages in user space rather than have the kernel process them. Signed-off-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include')
-rw-r--r--include/rdma/ib_mad.h11
-rw-r--r--include/uapi/rdma/ib_user_mad.h5
2 files changed, 15 insertions, 1 deletions
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h
index 876f497f8b0c..9bb99e983f58 100644
--- a/include/rdma/ib_mad.h
+++ b/include/rdma/ib_mad.h
@@ -40,6 +40,7 @@
40#include <linux/list.h> 40#include <linux/list.h>
41 41
42#include <rdma/ib_verbs.h> 42#include <rdma/ib_verbs.h>
43#include <uapi/rdma/ib_user_mad.h>
43 44
44/* Management base version */ 45/* Management base version */
45#define IB_MGMT_BASE_VERSION 1 46#define IB_MGMT_BASE_VERSION 1
@@ -359,6 +360,9 @@ typedef void (*ib_mad_recv_handler)(struct ib_mad_agent *mad_agent,
359 * @port_num: Port number on which QP is registered 360 * @port_num: Port number on which QP is registered
360 * @rmpp_version: If set, indicates the RMPP version used by this agent. 361 * @rmpp_version: If set, indicates the RMPP version used by this agent.
361 */ 362 */
363enum {
364 IB_MAD_USER_RMPP = IB_USER_MAD_USER_RMPP,
365};
362struct ib_mad_agent { 366struct ib_mad_agent {
363 struct ib_device *device; 367 struct ib_device *device;
364 struct ib_qp *qp; 368 struct ib_qp *qp;
@@ -666,4 +670,11 @@ void *ib_get_rmpp_segment(struct ib_mad_send_buf *send_buf, int seg_num);
666 */ 670 */
667void ib_free_send_mad(struct ib_mad_send_buf *send_buf); 671void ib_free_send_mad(struct ib_mad_send_buf *send_buf);
668 672
673/**
674 * ib_mad_kernel_rmpp_agent - Returns if the agent is performing RMPP.
675 * @agent: the agent in question
676 * @return: true if agent is performing rmpp, false otherwise.
677 */
678int ib_mad_kernel_rmpp_agent(struct ib_mad_agent *agent);
679
669#endif /* IB_MAD_H */ 680#endif /* IB_MAD_H */
diff --git a/include/uapi/rdma/ib_user_mad.h b/include/uapi/rdma/ib_user_mad.h
index c00b081dc10e..09f809f323ea 100644
--- a/include/uapi/rdma/ib_user_mad.h
+++ b/include/uapi/rdma/ib_user_mad.h
@@ -213,7 +213,10 @@ struct ib_user_mad_reg_req {
213 * used. 213 * used.
214 * @rmpp_version - If set, indicates the RMPP version to use. 214 * @rmpp_version - If set, indicates the RMPP version to use.
215 */ 215 */
216#define IB_USER_MAD_REG_FLAGS_CAP (0) 216enum {
217 IB_USER_MAD_USER_RMPP = (1 << 0),
218};
219#define IB_USER_MAD_REG_FLAGS_CAP (IB_USER_MAD_USER_RMPP)
217struct ib_user_mad_reg_req2 { 220struct ib_user_mad_reg_req2 {
218 __u32 id; 221 __u32 id;
219 __u32 qpn; 222 __u32 qpn;