aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEli Cohen <eli@dev.mellanox.co.il>2014-12-11 10:04:15 -0500
committerRoland Dreier <roland@purestorage.com>2014-12-15 21:13:35 -0500
commit5a77abf9a97a7ecc8fb0f6bf4ad411fb12b02f31 (patch)
tree2fbcf2c088cde299781ef0104c165f595aebd415 /include
parentc1395a2a8c01e8a919e47d64eb3d23d00e824b8b (diff)
IB/core: Add support for extended query device caps
Add extensible query device capabilities verb to allow adding new features. ib_uverbs_ex_query_device is added and copy_query_dev_fields is used to copy capability fields to be used by both ib_uverbs_query_device and ib_uverbs_ex_query_device. Signed-off-by: Eli Cohen <eli@mellanox.com> Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include')
-rw-r--r--include/rdma/ib_verbs.h5
-rw-r--r--include/uapi/rdma/ib_user_verbs.h14
2 files changed, 17 insertions, 2 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 470a011d6fa4..97a999f9e4d8 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1662,7 +1662,10 @@ static inline int ib_copy_from_udata(void *dest, struct ib_udata *udata, size_t
1662 1662
1663static inline int ib_copy_to_udata(struct ib_udata *udata, void *src, size_t len) 1663static inline int ib_copy_to_udata(struct ib_udata *udata, void *src, size_t len)
1664{ 1664{
1665 return copy_to_user(udata->outbuf, src, len) ? -EFAULT : 0; 1665 size_t copy_sz;
1666
1667 copy_sz = min_t(size_t, len, udata->outlen);
1668 return copy_to_user(udata->outbuf, src, copy_sz) ? -EFAULT : 0;
1666} 1669}
1667 1670
1668/** 1671/**
diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h
index 26daf55ff76e..e8a96071e352 100644
--- a/include/uapi/rdma/ib_user_verbs.h
+++ b/include/uapi/rdma/ib_user_verbs.h
@@ -90,8 +90,9 @@ enum {
90}; 90};
91 91
92enum { 92enum {
93 IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
93 IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, 94 IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
94 IB_USER_VERBS_EX_CMD_DESTROY_FLOW 95 IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
95}; 96};
96 97
97/* 98/*
@@ -201,6 +202,17 @@ struct ib_uverbs_query_device_resp {
201 __u8 reserved[4]; 202 __u8 reserved[4];
202}; 203};
203 204
205struct ib_uverbs_ex_query_device {
206 __u32 comp_mask;
207 __u32 reserved;
208};
209
210struct ib_uverbs_ex_query_device_resp {
211 struct ib_uverbs_query_device_resp base;
212 __u32 comp_mask;
213 __u32 reserved;
214};
215
204struct ib_uverbs_query_port { 216struct ib_uverbs_query_port {
205 __u64 response; 217 __u64 response;
206 __u8 port_num; 218 __u8 port_num;