diff --git a/master/fsm.c b/master/fsm.c
index 24cdf6c90ff566bd04cacc89b1761d0d17e88ecf..60a14bdff526aa224a9c504976047a02d39098f8 100644
--- a/master/fsm.c
+++ b/master/fsm.c
@@ -557,65 +557,66 @@ void ec_fsm_master_action_process_states(ec_fsm_t *fsm
     // Check, if EoE processing has to be started
     ec_master_eoe_start(master);
 
-    // Check for a pending SDO request
-    if (master->sdo_seq_master != master->sdo_seq_user) {
-        if (master->debug_level)
-            EC_DBG("Processing SDO request...\n");
-        slave = master->sdo_request->sdo->slave;
-        if (slave->current_state == EC_SLAVE_STATE_INIT
-            || !slave->online
-            || slave->error_flag) {
-            EC_ERR("Failed to process SDO request, slave %i not ready.\n",
-                   slave->ring_position);
-            master->sdo_request->return_code = -1;
-            master->sdo_seq_master++;
-        }
-        else {
-            // start uploading SDO
-            fsm->slave = slave;
-            fsm->master_state = ec_fsm_master_sdo_request;
-            fsm->sdo_request = master->sdo_request;
-            ec_fsm_coe_upload(&fsm->fsm_coe, slave, fsm->sdo_request);
-            ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
-            return;
+    if (master->mode == EC_MASTER_MODE_IDLE) {
+
+        // Check for a pending SDO request
+        if (master->sdo_seq_master != master->sdo_seq_user) {
+            if (master->debug_level)
+                EC_DBG("Processing SDO request...\n");
+            slave = master->sdo_request->sdo->slave;
+            if (slave->current_state == EC_SLAVE_STATE_INIT
+                || !slave->online
+                || slave->error_flag) {
+                EC_ERR("Failed to process SDO request, slave %i not ready.\n",
+                       slave->ring_position);
+                master->sdo_request->return_code = -1;
+                master->sdo_seq_master++;
+            }
+            else {
+                // start uploading SDO
+                fsm->slave = slave;
+                fsm->master_state = ec_fsm_master_sdo_request;
+                fsm->sdo_request = master->sdo_request;
+                ec_fsm_coe_upload(&fsm->fsm_coe, slave, fsm->sdo_request);
+                ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
+                return;
+            }
         }
-    }
 
-    // check, if slaves have an SDO dictionary to read out.
-    list_for_each_entry(slave, &master->slaves, list) {
-        if (!(slave->sii_mailbox_protocols & EC_MBOX_COE)
-            || slave->sdo_dictionary_fetched
-            || slave->current_state == EC_SLAVE_STATE_INIT
-            || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ
-            || !slave->online
-            || slave->error_flag) continue;
+        // check, if slaves have an SDO dictionary to read out.
+        list_for_each_entry(slave, &master->slaves, list) {
+            if (!(slave->sii_mailbox_protocols & EC_MBOX_COE)
+                || slave->sdo_dictionary_fetched
+                || slave->current_state == EC_SLAVE_STATE_INIT
+                || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ
+                || !slave->online
+                || slave->error_flag) continue;
+
+            if (master->debug_level) {
+                EC_DBG("Fetching SDO dictionary from slave %i.\n",
+                       slave->ring_position);
+            }
 
-        if (master->debug_level) {
-            EC_DBG("Fetching SDO dictionary from slave %i.\n",
-                   slave->ring_position);
-        }
+            if (kobject_add(&slave->sdo_kobj)) {
+                EC_ERR("Failed to add SDO kobj of slave %i.\n",
+                       slave->ring_position);
+                slave->error_flag = 1;
+                fsm->master_state = ec_fsm_master_start;
+                fsm->master_state(fsm); // execute immediately
+                return;
+            }
 
-        if (kobject_add(&slave->sdo_kobj)) {
-            EC_ERR("Failed to add SDO kobj of slave %i.\n",
-                   slave->ring_position);
-            slave->error_flag = 1;
-            fsm->master_state = ec_fsm_master_start;
-            fsm->master_state(fsm); // execute immediately
+            slave->sdo_dictionary_fetched = 1;
+
+            // start fetching SDO dictionary
+            fsm->slave = slave;
+            fsm->master_state = ec_fsm_master_sdodict;
+            ec_fsm_coe_dictionary(&fsm->fsm_coe, slave);
+            ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
             return;
         }
 
-        slave->sdo_dictionary_fetched = 1;
-
-        // start fetching SDO dictionary
-        fsm->slave = slave;
-        fsm->master_state = ec_fsm_master_sdodict;
-        ec_fsm_coe_dictionary(&fsm->fsm_coe, slave);
-        ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
-        return;
-    }
-
-    if (master->mode == EC_MASTER_MODE_IDLE) {
-        // nothing to configure. check for pending EEPROM write operations.
+        // check for pending EEPROM write operations.
         list_for_each_entry(slave, &master->slaves, list) {
             if (!slave->new_eeprom_data) continue;