We can't be sure the paths are actually properly deactivated when a
tunnel is restarted after resume. So instead of marking all paths as
inactive we go ahead and deactivate them explicitly.

Signed-off-by: Mika Westerberg <mika.westerb...@linux.intel.com>
---
 drivers/thunderbolt/tunnel.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/thunderbolt/tunnel.c b/drivers/thunderbolt/tunnel.c
index cdf9ca1c043e..b48c66efe87a 100644
--- a/drivers/thunderbolt/tunnel.c
+++ b/drivers/thunderbolt/tunnel.c
@@ -183,8 +183,15 @@ int tb_tunnel_restart(struct tb_tunnel *tunnel)
 
        tb_tunnel_info(tunnel, "activating\n");
 
+       /* Make sure all paths are properly disabled before enable them again */
+       for (i = 0; i < tunnel->npaths; i++) {
+               if (tunnel->paths[i]->activated) {
+                       tb_path_deactivate(tunnel->paths[i]);
+                       tunnel->paths[i]->activated = false;
+               }
+       }
+
        for (i = 0; i < tunnel->npaths; i++) {
-               tunnel->paths[i]->activated = false;
                res = tb_path_activate(tunnel->paths[i]);
                if (res)
                        goto err;
-- 
2.20.1

Reply via email to