greybus: connection: {en,dis}able fct flow in connection management
authorFabien Parent <fparent@baylibre.com>
Tue, 23 Feb 2016 17:46:11 +0000 (18:46 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 25 Feb 2016 01:21:58 +0000 (17:21 -0800)
The AP must enable the FCT flow of APBA once it has received the response
from the AP that the connection between APBA and a module has been setted up.
Disable the flow of FCT tokens when destroying connections.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/connection.c

index 4ae7153ff863971f221f38fe68bb0e5be136ec67..34e26dc6e249ec41551ef3db31fbe4f10ce6c5bb 100644 (file)
@@ -314,7 +314,7 @@ gb_connection_svc_connection_create(struct gb_connection *connection)
        int ret;
 
        if (gb_connection_is_static(connection))
-               return 0;
+               return gb_connection_hd_fct_flow_enable(connection);
 
        intf = connection->intf;
        ret = gb_svc_connection_create(hd->svc,
@@ -330,12 +330,23 @@ gb_connection_svc_connection_create(struct gb_connection *connection)
                return ret;
        }
 
+       ret = gb_connection_hd_fct_flow_enable(connection);
+       if (ret) {
+               gb_svc_connection_destroy(hd->svc, hd->svc->ap_intf_id,
+                                         connection->hd_cport_id,
+                                         intf->interface_id,
+                                         connection->intf_cport_id);
+               return ret;
+       }
+
        return 0;
 }
 
 static void
 gb_connection_svc_connection_destroy(struct gb_connection *connection)
 {
+       gb_connection_hd_fct_flow_disable(connection);
+
        if (gb_connection_is_static(connection))
                return;