summaryrefslogtreecommitdiffstats
path: root/include/rdma
diff options
context:
space:
mode:
authorMark Bloch2018-09-06 16:27:02 +0200
committerJason Gunthorpe2018-09-11 17:28:06 +0200
commit86e1d464a8ccd627b6ea3e9a98a0389b0d27fd1f (patch)
tree8ed6bfd4271a810cf23f3d42b8fbfd50825a3523 /include/rdma
parentIB/uverbs: Add IDRs array attribute type to ioctl() interface (diff)
downloadkernel-qcow2-linux-86e1d464a8ccd627b6ea3e9a98a0389b0d27fd1f.tar.gz
kernel-qcow2-linux-86e1d464a8ccd627b6ea3e9a98a0389b0d27fd1f.tar.xz
kernel-qcow2-linux-86e1d464a8ccd627b6ea3e9a98a0389b0d27fd1f.zip
RDMA/uverbs: Move flow resources initialization
Use ib_set_flow() when initializing flow related resources. Signed-off-by: Mark Bloch <markb@mellanox.com> Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'include/rdma')
-rw-r--r--include/rdma/ib_verbs.h14
-rw-r--r--include/rdma/uverbs_std_types.h33
2 files changed, 33 insertions, 14 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index f687faadf33b..6076c9b72ab9 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -4162,20 +4162,6 @@ ib_get_vector_affinity(struct ib_device *device, int comp_vector)
}
-static inline void ib_set_flow(struct ib_uobject *uobj, struct ib_flow *ibflow,
- struct ib_qp *qp, struct ib_device *device)
-{
- uobj->object = ibflow;
- ibflow->uobject = uobj;
-
- if (qp) {
- atomic_inc(&qp->usecnt);
- ibflow->qp = qp;
- }
-
- ibflow->device = device;
-}
-
/**
* rdma_roce_rescan_device - Rescan all of the network devices in the system
* and add their gids, as needed, to the relevant RoCE devices.
diff --git a/include/rdma/uverbs_std_types.h b/include/rdma/uverbs_std_types.h
index 526d918fcd5a..dfd6d35f1783 100644
--- a/include/rdma/uverbs_std_types.h
+++ b/include/rdma/uverbs_std_types.h
@@ -152,5 +152,38 @@ static inline void uverbs_flow_action_fill_action(struct ib_flow_action *action,
uobj->object = action;
}
+struct ib_uflow_resources {
+ size_t max;
+ size_t num;
+ size_t collection_num;
+ size_t counters_num;
+ struct ib_counters **counters;
+ struct ib_flow_action **collection;
+};
+
+struct ib_uflow_object {
+ struct ib_uobject uobject;
+ struct ib_uflow_resources *resources;
+};
+
+static inline void ib_set_flow(struct ib_uobject *uobj, struct ib_flow *ibflow,
+ struct ib_qp *qp, struct ib_device *device,
+ struct ib_uflow_resources *uflow_res)
+{
+ struct ib_uflow_object *uflow;
+
+ uobj->object = ibflow;
+ ibflow->uobject = uobj;
+
+ if (qp) {
+ atomic_inc(&qp->usecnt);
+ ibflow->qp = qp;
+ }
+
+ ibflow->device = device;
+ uflow = container_of(uobj, typeof(*uflow), uobject);
+ uflow->resources = uflow_res;
+}
+
#endif