Hi everybody,

I'm trying to use ethercat-1.4.0 on Linux 2.6.24-16-rtai.

With an onboard e1000 network interface, I got no response from
"ethercat slaves" after starting ethercat, and in syslog I got lots
of:

  EtherCAT WARNING: 125 datagrams TIMED OUT!

For comparison, I tried with an old R8139 card. I get a response (at
least a short output from "ethercat slaves" -- I'll have to deal
with higher level communication later) and no syslog warnings. I
also tried with the userspace tool SOEM1.2.4, and its "slaveinfo"
program recognizes the slave with both network interfaces.

So I suspected the problem in the ec_e1000 driver. I tried to do
some debugging by inserting some printk statements and found that in
non-ethercat operations e1000_clean_rx_irq gets called to receive
data, while in ethercat mode, e1000_clean_rx_irq and
e1000_clean_rx_irq_ps are not called.

I could trace it to line 3939 in e1000_main-2.6.24-ethercat.c.
AFAIUI, the original code checks if a hardware interrupt happened
and exits if not. Since ethercat works interrupt-less, this fails.
So I just added a check for adapter->ecdev, and now I get a response
from the slave like the one I got with the R8139.

Of course, I'll have to do more tests to see if any other problems
appear, but is this fix so far correct?

Regards,
Frank

--- ethercat-1.4.0/devices/e1000/e1000_main-2.6.24-ethercat.c.orig      
2008-12-29 13:58:48.000000000 +0100
+++ ethercat-1.4.0/devices/e1000/e1000_main-2.6.24-ethercat.c   2011-03-24 
18:27:40.000000000 +0100
@@ -3936,7 +3936,7 @@
 #ifdef CONFIG_E1000_NAPI
        /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
         * not set, then the adapter didn't send an interrupt */
-       if (unlikely(hw->mac_type >= e1000_82571 &&
+       if (!adapter->ecdev && unlikely(hw->mac_type >= e1000_82571 &&
                     !(icr & E1000_ICR_INT_ASSERTED)))
                return IRQ_NONE;
 
-- 
Dipl.-Math. Frank Heckenbach <f.heckenb...@fh-soft.de>
Systemprogrammierung, EDV-Beratung
Stubenlohstr. 6, 91052 Erlangen, Deutschland
Tel.: +49-9131-21359
_______________________________________________
etherlab-users mailing list
etherlab-users@etherlab.org
http://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to