greybus: interface: do not read DME during reactivation
authorJohan Hovold <johan@hovoldconsulting.com>
Wed, 20 Jul 2016 14:40:21 +0000 (16:40 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 20 Jul 2016 17:16:54 +0000 (10:16 -0700)
It will soon be possible to reactivate an interface that has been
powered down after already having been activated. In that case there's
no need to re-read the DME attributes as part of activation as the
values are already cached.

Reviewed-by: Sandeep Patil <sspatil@google.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Patrick Titiano <ptitiano@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/interface.c
drivers/staging/greybus/interface.h

index e21491b..9fe6764 100644 (file)
@@ -95,6 +95,10 @@ static int gb_interface_read_dme(struct gb_interface *intf)
 {
        int ret;
 
+       /* DME attributes have already been read */
+       if (intf->dme_read)
+               return 0;
+
        ret = gb_interface_dme_attr_get(intf, DME_DDBL1_MANUFACTURERID,
                                        &intf->ddbl1_manufacturer_id);
        if (ret)
@@ -111,7 +115,13 @@ static int gb_interface_read_dme(struct gb_interface *intf)
                intf->quirks |= GB_INTERFACE_QUIRK_NO_INIT_STATUS;
        }
 
-       return gb_interface_read_ara_dme(intf);
+       ret = gb_interface_read_ara_dme(intf);
+       if (ret)
+               return ret;
+
+       intf->dme_read = true;
+
+       return 0;
 }
 
 static int gb_interface_route_create(struct gb_interface *intf)
index bba1881..f52dfd0 100644 (file)
@@ -56,6 +56,7 @@ struct gb_interface {
        bool active;
        bool enabled;
        bool mode_switch;
+       bool dme_read;
 
        struct work_struct mode_switch_work;
        struct completion mode_switch_completion;