Remove estimated sync manager sizes when leaving operation mode.

This commit is contained in:
Florian Pose 2006-10-30 15:39:03 +00:00
parent 5fffe7009b
commit 9c59a83aca
2 changed files with 7 additions and 4 deletions

View File

@ -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);
}

View File

@ -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;
}
}
/*****************************************************************************/