Hi,
the current stable-1.5 branch does not work for me, when using FoE commands.
I checked the FoE datagram flow with Wireshark and detected no errors.
So I looked at the source and found a fix for my problem.
Attached you will find a patch for further discussion.
Please note: all fsm->slave by slave replacements hove nothing to do
with the problem. (This is only code beautifying)
The important fixes are the datagram by fsm->datagram replacements found
in ec_slave_mbox_fetch() functions.
BTW what are the differences between the datagram and fsm->datagram handles?
Best regards
Ralf
diff -r 9cdd7669dc0b master/fsm_foe.c
--- a/master/fsm_foe.c Thu Jan 10 17:36:41 2013 +0100
+++ b/master/fsm_foe.c Mon Jan 21 15:54:35 2013 +0100
@@ -418,7 +418,7 @@
return;
}
- data = ec_slave_mbox_fetch(fsm->slave, datagram, &mbox_prot, &rec_size);
+ data = ec_slave_mbox_fetch(fsm->slave, fsm->datagram, &mbox_prot,
&rec_size);
if (IS_ERR(data)) {
ec_foe_set_tx_error(fsm, FOE_PROT_ERROR);
return;
@@ -498,7 +498,7 @@
fsm->jiffies_start = fsm->datagram->jiffies_sent;
- ec_slave_mbox_prepare_check(fsm->slave, datagram); // can not fail.
+ ec_slave_mbox_prepare_check(slave, datagram); // can not fail.
fsm->retries = EC_FSM_RETRIES;
fsm->state = ec_fsm_foe_state_ack_check;
@@ -536,7 +536,7 @@
return;
}
- ec_slave_mbox_prepare_check(fsm->slave, datagram);
+ ec_slave_mbox_prepare_check(slave, datagram);
fsm->jiffies_start = jiffies;
fsm->retries = EC_FSM_RETRIES;
fsm->state = ec_fsm_foe_state_ack_check;
@@ -632,7 +632,7 @@
fsm->jiffies_start = fsm->datagram->jiffies_sent;
- ec_slave_mbox_prepare_check(fsm->slave, datagram); // can not fail.
+ ec_slave_mbox_prepare_check(slave, datagram); // can not fail.
fsm->retries = EC_FSM_RETRIES;
fsm->state = ec_fsm_foe_state_data_check;
@@ -755,7 +755,7 @@
return;
}
- data = ec_slave_mbox_fetch(slave, datagram, &mbox_prot, &rec_size);
+ data = ec_slave_mbox_fetch(slave, fsm->datagram, &mbox_prot, &rec_size);
if (IS_ERR(data)) {
ec_foe_set_rx_error(fsm, FOE_MBOX_FETCH_ERROR);
return;
@@ -815,7 +815,7 @@
fsm->rx_last_packet =
(rec_size + EC_MBOX_HEADER_SIZE + EC_FOE_HEADER_SIZE
- != fsm->slave->configured_rx_mailbox_size);
+ != slave->configured_rx_mailbox_size);
if (fsm->rx_last_packet ||
(slave->configured_rx_mailbox_size - EC_MBOX_HEADER_SIZE
@@ -879,7 +879,7 @@
fsm->jiffies_start = fsm->datagram->jiffies_sent;
- ec_slave_mbox_prepare_check(fsm->slave, datagram); // can not fail.
+ ec_slave_mbox_prepare_check(slave, datagram); // can not fail.
if (fsm->rx_last_packet) {
fsm->rx_expected_packet_no = 0;
_______________________________________________
etherlab-users mailing list
[email protected]
http://lists.etherlab.org/mailman/listinfo/etherlab-users