greybus: Notify user space only when the test finished.
authorAxel Haslam <ahaslam@baylibre.com>
Fri, 26 Feb 2016 10:39:48 +0000 (11:39 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Mon, 29 Feb 2016 22:51:38 +0000 (14:51 -0800)
Currently, user space is notified for every message sent,
but this is not really needed and does not work in the async case
where all messages are sent from the start.

Instead, notify userspace only when all the transfers are complete.
This allows userspace to wait in a poll loop and wakeup only when
the test is finished.

Also, don't use the bundle kobj to send the notification it is
the loopback device that contains the loopback attributes.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/loopback.c

index 9f0da577d842f2f94f03814adef079386c23bb6f..9014c2b51ae00a014f9687eeae2916087c1b371b 100644 (file)
@@ -986,14 +986,14 @@ static int gb_loopback_fn(void *data)
                        break;
 
                mutex_lock(&gb->mutex);
-               sysfs_notify(&gb->connection->bundle->dev.kobj,
-                            NULL, "iteration_count");
 
                /* Optionally terminate */
                if (send_count == gb->iteration_max) {
                        if (gb->iteration_count == gb->iteration_max) {
                                gb->type = 0;
                                send_count = 0;
+                               sysfs_notify(&gb->dev->kobj,  NULL,
+                                               "iteration_count");
                        }
                        mutex_unlock(&gb->mutex);
                        continue;