Commit a072a72d authored by Bryan O'Donoghue's avatar Bryan O'Donoghue Committed by Greg Kroah-Hartman

staging: greybus: loopback: use gb_loopback_async_wait_all don't spin

Currently the greybus-loopback thread logic spins around waiting for
send_count == iteration_max which on real hardware doesn't make a
difference to us but in simulation is excruciatingly slow, anti-social and
bad manners. Use the existing gb_loopback_async_wait_all() function to gate
continuing when the send_count == iteration_max and go to sleep until
there's something worthwhile to-do.
Signed-off-by: default avatarBryan O'Donoghue <pure.logic@nexus-software.ie>
Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent af1550cc
...@@ -1008,11 +1008,22 @@ static int gb_loopback_fn(void *data) ...@@ -1008,11 +1008,22 @@ static int gb_loopback_fn(void *data)
/* Optionally terminate */ /* Optionally terminate */
if (gb->send_count == gb->iteration_max) { if (gb->send_count == gb->iteration_max) {
mutex_unlock(&gb->mutex);
/* Wait for synchronous and asynchronus completion */
gb_loopback_async_wait_all(gb);
/* Mark complete unless user-space has poked us */
mutex_lock(&gb->mutex);
if (gb->iteration_count == gb->iteration_max) { if (gb->iteration_count == gb->iteration_max) {
gb->type = 0; gb->type = 0;
gb->send_count = 0; gb->send_count = 0;
sysfs_notify(&gb->dev->kobj, NULL, sysfs_notify(&gb->dev->kobj, NULL,
"iteration_count"); "iteration_count");
dev_dbg(&bundle->dev, "load test complete\n");
} else {
dev_dbg(&bundle->dev,
"continuing on with new test set\n");
} }
mutex_unlock(&gb->mutex); mutex_unlock(&gb->mutex);
continue; continue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment