Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69ad5da4 authored by Matan Barak's avatar Matan Barak Committed by Roland Dreier
Browse files

IB/core: Re-enable create_flow/destroy_flow uverbs



This commit reverts commit 7afbddfa ("IB/core: Temporarily disable
create_flow/destroy_flow uverbs").  Since the uverbs extensions
functionality was experimental for v3.12, this patch re-enables the
support for them and flow-steering for v3.13.

Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent f21519b2
Loading
Loading
Loading
Loading
+0 −11
Original line number Original line Diff line number Diff line
@@ -31,17 +31,6 @@ config INFINIBAND_USER_ACCESS
	  libibverbs, libibcm and a hardware driver library from
	  libibverbs, libibcm and a hardware driver library from
	  <http://www.openfabrics.org/git/>.
	  <http://www.openfabrics.org/git/>.


config INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
       bool "Experimental and unstable ABI for userspace access to flow steering verbs"
       depends on INFINIBAND_USER_ACCESS
       depends on STAGING
	---help---
	  The final ABI for userspace access to flow steering verbs
	  has not been defined.  To use the current ABI, *WHICH WILL
	  CHANGE IN THE FUTURE*, say Y here.

	  If unsure, say N.

config INFINIBAND_USER_MEM
config INFINIBAND_USER_MEM
	bool
	bool
	depends on INFINIBAND_USER_ACCESS != n
	depends on INFINIBAND_USER_ACCESS != n
+0 −4
Original line number Original line Diff line number Diff line
@@ -242,8 +242,6 @@ IB_UVERBS_DECLARE_CMD(create_xsrq);
IB_UVERBS_DECLARE_CMD(open_xrcd);
IB_UVERBS_DECLARE_CMD(open_xrcd);
IB_UVERBS_DECLARE_CMD(close_xrcd);
IB_UVERBS_DECLARE_CMD(close_xrcd);


#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING

#define IB_UVERBS_DECLARE_EX_CMD(name)				\
#define IB_UVERBS_DECLARE_EX_CMD(name)				\
	int ib_uverbs_ex_##name(struct ib_uverbs_file *file,	\
	int ib_uverbs_ex_##name(struct ib_uverbs_file *file,	\
				struct ib_udata *ucore,		\
				struct ib_udata *ucore,		\
@@ -252,6 +250,4 @@ IB_UVERBS_DECLARE_CMD(close_xrcd);
IB_UVERBS_DECLARE_EX_CMD(create_flow);
IB_UVERBS_DECLARE_EX_CMD(create_flow);
IB_UVERBS_DECLARE_EX_CMD(destroy_flow);
IB_UVERBS_DECLARE_EX_CMD(destroy_flow);


#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */

#endif /* UVERBS_H */
#endif /* UVERBS_H */
+0 −4
Original line number Original line Diff line number Diff line
@@ -54,9 +54,7 @@ static struct uverbs_lock_class qp_lock_class = { .name = "QP-uobj" };
static struct uverbs_lock_class ah_lock_class	= { .name = "AH-uobj" };
static struct uverbs_lock_class ah_lock_class	= { .name = "AH-uobj" };
static struct uverbs_lock_class srq_lock_class	= { .name = "SRQ-uobj" };
static struct uverbs_lock_class srq_lock_class	= { .name = "SRQ-uobj" };
static struct uverbs_lock_class xrcd_lock_class = { .name = "XRCD-uobj" };
static struct uverbs_lock_class xrcd_lock_class = { .name = "XRCD-uobj" };
#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
static struct uverbs_lock_class rule_lock_class = { .name = "RULE-uobj" };
static struct uverbs_lock_class rule_lock_class = { .name = "RULE-uobj" };
#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */


/*
/*
 * The ib_uobject locking scheme is as follows:
 * The ib_uobject locking scheme is as follows:
@@ -2593,7 +2591,6 @@ out_put:
	return ret ? ret : in_len;
	return ret ? ret : in_len;
}
}


#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec,
static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec,
				union ib_flow_spec *ib_spec)
				union ib_flow_spec *ib_spec)
{
{
@@ -2821,7 +2818,6 @@ int ib_uverbs_ex_destroy_flow(struct ib_uverbs_file *file,


	return ret;
	return ret;
}
}
#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */


static int __uverbs_create_xsrq(struct ib_uverbs_file *file,
static int __uverbs_create_xsrq(struct ib_uverbs_file *file,
				struct ib_uverbs_create_xsrq *cmd,
				struct ib_uverbs_create_xsrq *cmd,
+0 −5
Original line number Original line Diff line number Diff line
@@ -117,14 +117,12 @@ static ssize_t (*uverbs_cmd_table[])(struct ib_uverbs_file *file,
	[IB_USER_VERBS_CMD_OPEN_QP]		= ib_uverbs_open_qp,
	[IB_USER_VERBS_CMD_OPEN_QP]		= ib_uverbs_open_qp,
};
};


#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
static int (*uverbs_ex_cmd_table[])(struct ib_uverbs_file *file,
static int (*uverbs_ex_cmd_table[])(struct ib_uverbs_file *file,
				    struct ib_udata *ucore,
				    struct ib_udata *ucore,
				    struct ib_udata *uhw) = {
				    struct ib_udata *uhw) = {
	[IB_USER_VERBS_EX_CMD_CREATE_FLOW]	= ib_uverbs_ex_create_flow,
	[IB_USER_VERBS_EX_CMD_CREATE_FLOW]	= ib_uverbs_ex_create_flow,
	[IB_USER_VERBS_EX_CMD_DESTROY_FLOW]	= ib_uverbs_ex_destroy_flow
	[IB_USER_VERBS_EX_CMD_DESTROY_FLOW]	= ib_uverbs_ex_destroy_flow
};
};
#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */


static void ib_uverbs_add_one(struct ib_device *device);
static void ib_uverbs_add_one(struct ib_device *device);
static void ib_uverbs_remove_one(struct ib_device *device);
static void ib_uverbs_remove_one(struct ib_device *device);
@@ -633,8 +631,6 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
						 hdr.in_words * 4,
						 hdr.in_words * 4,
						 hdr.out_words * 4);
						 hdr.out_words * 4);


#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING

	} else if (flags == IB_USER_VERBS_CMD_FLAG_EXTENDED) {
	} else if (flags == IB_USER_VERBS_CMD_FLAG_EXTENDED) {
		__u32 command;
		__u32 command;


@@ -701,7 +697,6 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,


		return written_count;
		return written_count;
	}
	}
#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */


	return -ENOSYS;
	return -ENOSYS;
}
}
+0 −2
Original line number Original line Diff line number Diff line
@@ -1691,11 +1691,9 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
		ibdev->ib_dev.create_flow	= mlx4_ib_create_flow;
		ibdev->ib_dev.create_flow	= mlx4_ib_create_flow;
		ibdev->ib_dev.destroy_flow	= mlx4_ib_destroy_flow;
		ibdev->ib_dev.destroy_flow	= mlx4_ib_destroy_flow;


#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
		ibdev->ib_dev.uverbs_ex_cmd_mask	|=
		ibdev->ib_dev.uverbs_ex_cmd_mask	|=
			(1ull << IB_USER_VERBS_EX_CMD_CREATE_FLOW) |
			(1ull << IB_USER_VERBS_EX_CMD_CREATE_FLOW) |
			(1ull << IB_USER_VERBS_EX_CMD_DESTROY_FLOW);
			(1ull << IB_USER_VERBS_EX_CMD_DESTROY_FLOW);
#endif /* CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING */
	}
	}


	mlx4_ib_alloc_eqs(dev, ibdev);
	mlx4_ib_alloc_eqs(dev, ibdev);
Loading