From 1be0dcfe3bc075701ee7f1fe3b6c23219926c820 Mon Sep 17 00:00:00 2001
From: Florian Pose <fp@igh-essen.com>
Date: Mon, 12 Feb 2007 11:15:23 +0000
Subject: [PATCH] Fixed bug causing unloading of realtime module being very
 slow after topology change.

---
 TODO            | 1 -
 master/master.c | 9 +++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/TODO b/TODO
index 20f66a27..dc719764 100644
--- a/TODO
+++ b/TODO
@@ -7,7 +7,6 @@ $Id$
 -------------------------------------------------------------------------------
 
 * Release 1.2:
-  - Find bug causing slow unloading after topology change.
   - Introduce topology_change_pending.
   - Update feature lists.
 
diff --git a/master/master.c b/master/master.c
index 3e6e7812..ab22eeb2 100644
--- a/master/master.c
+++ b/master/master.c
@@ -513,6 +513,15 @@ void ec_master_leave_operation_mode(ec_master_t *master
         ec_slave_reset(slave);
         ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
 
+        // don't try to set PREOP for slaves that don't respond,
+        // because of 3 second timeout.
+        if (!slave->online) {
+            if (master->debug_level)
+                EC_DBG("Skipping to configure offline slave %i.\n",
+                        slave->ring_position);
+            continue;
+        }
+
         ec_fsm_slave_start_conf(&fsm_slave, slave);
         while (ec_fsm_slave_exec(&fsm_slave)) {
             ec_master_sync_io(master);
-- 
GitLab