diff -r 9d7453c16ade -r 4bbe090553f7 master/ethernet.c --- a/master/ethernet.c Mon May 29 09:54:18 2006 +0000 +++ b/master/ethernet.c Mon Jun 26 15:04:06 2006 +0000 @@ -79,6 +79,7 @@ int result, i; eoe->slave = NULL; + ec_command_init(&eoe->command); eoe->state = ec_eoe_state_rx_start; eoe->opened = 0; eoe->rx_skb = NULL; @@ -159,6 +160,8 @@ } if (eoe->rx_skb) dev_kfree_skb(eoe->rx_skb); + + ec_command_clear(&eoe->command); } /*****************************************************************************/ @@ -235,8 +238,8 @@ printk("\n"); #endif - if (!(data = ec_slave_mbox_prepare_send(eoe->slave, 0x02, - current_size + 4))) + if (!(data = ec_slave_mbox_prepare_send(eoe->slave, &eoe->command, + 0x02, current_size + 4))) return -1; EC_WRITE_U8 (data, 0x00); // eoe fragment req. @@ -246,7 +249,7 @@ (eoe->tx_frame_number & 0x0F) << 12)); memcpy(data + 4, eoe->tx_frame->skb->data + eoe->tx_offset, current_size); - ec_master_queue_command(eoe->slave->master, &eoe->slave->mbox_command); + ec_master_queue_command(eoe->slave->master, &eoe->command); eoe->tx_offset += current_size; eoe->tx_fragment_number++; @@ -310,8 +313,8 @@ if (!eoe->slave->online || !eoe->slave->master->device->link_state) return; - ec_slave_mbox_prepare_check(eoe->slave); - ec_master_queue_command(eoe->slave->master, &eoe->slave->mbox_command); + ec_slave_mbox_prepare_check(eoe->slave, &eoe->command); + ec_master_queue_command(eoe->slave->master, &eoe->command); eoe->state = ec_eoe_state_rx_check; } @@ -325,19 +328,19 @@ void ec_eoe_state_rx_check(ec_eoe_t *eoe /**< EoE handler */) { - if (eoe->slave->mbox_command.state != EC_CMD_RECEIVED) { + if (eoe->command.state != EC_CMD_RECEIVED) { eoe->stats.rx_errors++; eoe->state = ec_eoe_state_tx_start; return; } - if (!ec_slave_mbox_check(eoe->slave)) { + if (!ec_slave_mbox_check(&eoe->command)) { eoe->state = ec_eoe_state_tx_start; return; } - ec_slave_mbox_prepare_fetch(eoe->slave); - ec_master_queue_command(eoe->slave->master, &eoe->slave->mbox_command); + ec_slave_mbox_prepare_fetch(eoe->slave, &eoe->command); + ec_master_queue_command(eoe->slave->master, &eoe->command); eoe->state = ec_eoe_state_rx_fetch; } @@ -356,13 +359,14 @@ uint8_t frame_number, fragment_offset, fragment_number; off_t offset; - if (eoe->slave->mbox_command.state != EC_CMD_RECEIVED) { + if (eoe->command.state != EC_CMD_RECEIVED) { eoe->stats.rx_errors++; eoe->state = ec_eoe_state_tx_start; return; } - if (!(data = ec_slave_mbox_fetch(eoe->slave, 0x02, &rec_size))) { + if (!(data = ec_slave_mbox_fetch(eoe->slave, &eoe->command, + 0x02, &rec_size))) { eoe->stats.rx_errors++; eoe->state = ec_eoe_state_tx_start; return; @@ -554,13 +558,13 @@ void ec_eoe_state_tx_sent(ec_eoe_t *eoe /**< EoE handler */) { - if (eoe->slave->mbox_command.state != EC_CMD_RECEIVED) { + if (eoe->command.state != EC_CMD_RECEIVED) { eoe->stats.tx_errors++; eoe->state = ec_eoe_state_rx_start; return; } - if (eoe->slave->mbox_command.working_counter != 1) { + if (eoe->command.working_counter != 1) { eoe->stats.tx_errors++; eoe->state = ec_eoe_state_rx_start; return;