diff --git a/master/master.c b/master/master.c index 27184edd..0f008098 100644 --- a/master/master.c +++ b/master/master.c @@ -503,12 +503,19 @@ void ec_master_leave_operation_phase(ec_master_t *master ec_master_clear_slave_configs(master); up(&master->master_sem); - // set states for all slaves for (slave = master->slaves; slave < master->slaves + master->slave_count; slave++) { + + // set states for all slaves ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); + + // mark for reconfiguration, because the master could have no + // possibility for a reconfiguration between two sequential operation + // phases. + slave->force_config = 1; } + #ifdef EC_EOE // ... but leave EoE slaves in OP list_for_each_entry(eoe, &master->eoe_handlers, list) { diff --git a/master/slave_config.c b/master/slave_config.c index 76f716af..75a38659 100644 --- a/master/slave_config.c +++ b/master/slave_config.c @@ -208,10 +208,6 @@ int ec_slave_config_attach( slave->config = sc; sc->slave = slave; - // force reconfiguration, because the master could have had no possibility - // for a reconfiguration, between two operation phases. - slave->force_config = 1; - ec_slave_request_state(slave, EC_SLAVE_STATE_OP); if (sc->master->debug_level)