From f39ec26809ef7892ef7c9ce25e32bf6c336b3bac Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Mon, 30 Oct 2006 15:39:03 +0000 Subject: [PATCH] Remove estimated sync manager sizes when leaving operation mode. --- master/master.c | 5 +---- master/slave.c | 6 ++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/master/master.c b/master/master.c index eed47ff4..276c2e31 100644 --- a/master/master.c +++ b/master/master.c @@ -433,6 +433,7 @@ void ec_master_leave_operation_mode(ec_master_t *master // set states for all slaves list_for_each_entry(slave, &master->slaves, list) { + ec_slave_reset(slave); ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); fsm->slave = slave; @@ -452,10 +453,6 @@ void ec_master_leave_operation_mode(ec_master_t *master master->release_cb = NULL; master->cb_data = NULL; - list_for_each_entry(slave, &master->slaves, list) { - ec_slave_reset(slave); - } - master->mode = EC_MASTER_MODE_IDLE; queue_delayed_work(master->workqueue, &master->idle_work, 1); } diff --git a/master/slave.c b/master/slave.c index 95aa8b4f..6d9497e2 100644 --- a/master/slave.c +++ b/master/slave.c @@ -284,6 +284,7 @@ void ec_slave_clear(struct kobject *kobj /**< kobject of the slave */) void ec_slave_reset(ec_slave_t *slave /**< EtherCAT slave */) { ec_sdo_data_t *sdodata, *next_sdodata; + ec_sii_sync_t *sync; // remove FMMU configurations slave->fmmu_count = 0; @@ -294,6 +295,11 @@ void ec_slave_reset(ec_slave_t *slave /**< EtherCAT slave */) kfree(sdodata->data); kfree(sdodata); } + + // remove estimated sync manager sizes + list_for_each_entry(sync, &slave->sii_syncs, list) { + sync->est_length = 0; + } } /*****************************************************************************/ -- GitLab