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

Commit 26dc638a authored by Logan Gunthorpe's avatar Logan Gunthorpe Committed by Jon Mason
Browse files

ntb_perf: Wait for link before running test



Instead of returning immediately with an error when the link is
down, wait for the link to come up (or the user sends a SIGINT).

This is to make scripting ntb_perf easier.

Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
Acked-by: default avatarDave Jiang <dave.jiang@intel.com>
Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
parent 58fd0f3b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@ struct perf_ctx {
	bool			link_is_up;
	struct work_struct	link_cleanup;
	struct delayed_work	link_work;
	wait_queue_head_t	link_wq;
	struct dentry		*debugfs_node_dir;
	struct dentry		*debugfs_run;
	struct dentry		*debugfs_threads;
@@ -533,6 +534,7 @@ static void perf_link_work(struct work_struct *work)
		goto out1;

	perf->link_is_up = true;
	wake_up(&perf->link_wq);

	return;

@@ -653,7 +655,7 @@ static ssize_t debugfs_run_write(struct file *filp, const char __user *ubuf,
	int node, i;
	DECLARE_WAIT_QUEUE_HEAD(wq);

	if (!perf->link_is_up)
	if (wait_event_interruptible(perf->link_wq, perf->link_is_up))
		return -ENOLINK;

	if (perf->perf_threads == 0)
@@ -783,6 +785,7 @@ static int perf_probe(struct ntb_client *client, struct ntb_dev *ntb)
	mutex_init(&perf->run_mutex);
	spin_lock_init(&perf->db_lock);
	perf_setup_mw(ntb, perf);
	init_waitqueue_head(&perf->link_wq);
	INIT_DELAYED_WORK(&perf->link_work, perf_link_work);
	INIT_WORK(&perf->link_cleanup, perf_link_cleanup);