diff -r abc1d1caead7 -r d461b1f07296 master/device.c --- a/master/device.c Fri Nov 30 15:24:38 2012 +0100 +++ b/master/device.c Fri Nov 30 20:15:31 2012 +0100 @@ -81,10 +81,12 @@ device->tx_ring_index = 0; #ifdef EC_DEBUG_IF - if (device == &master->main_device) + if (device == &master->devices[EC_DEVICE_MAIN]) { mb = 'm'; - else if (device == &master->backup_device) + } + else { mb = 'b'; + } sprintf(ifname, "ecdbg%c%u", mb, master->index); @@ -136,7 +138,9 @@ { unsigned int i; - if (device->open) ec_device_close(device); + if (device->open) { + ec_device_close(device); + } for (i = 0; i < EC_TX_RING_SIZE; i++) dev_kfree_skb(device->tx_skb[i]); #ifdef EC_DEBUG_IF @@ -541,6 +545,7 @@ { int ret; ec_master_t *master = device->master; + unsigned int all_open = 1, dev_idx; ret = ec_device_open(device); if (ret) { @@ -548,9 +553,15 @@ return ret; } - if (master->devices[EC_DEVICE_MAIN].open && - (ec_mac_is_zero(master->macs[EC_DEVICE_BACKUP]) || - master->devices[EC_DEVICE_BACKUP].open)) { + for (dev_idx = EC_DEVICE_MAIN; + dev_idx < ec_master_num_devices(device->master); dev_idx++) { + if (!master->devices[dev_idx].open) { + all_open = 0; + break; + } + } + + if (all_open) { ret = ec_master_enter_idle_phase(device->master); if (ret) { EC_MASTER_ERR(device->master, "Failed to enter IDLE phase!\n");