[etherlab-dev] irregular packet trasmission on e1000

Zarges, Olav Olav.Zarges at imc-berlin.de
Wed Jul 16 17:40:32 CEST 2008


I'm send Ethercat packets every 200 us using xenomai. The time
between two packets ranges from 180 us to 220 us which is OK.

But every 2 seconds the time is 290 us (therefore the next packet is
sent after 110 us).

I found the extra 90 us are caused by 'e1000_watchdog' called in
ec_poll(). As far as I can see e1000_watchdog should be called to
detect link status change which is unlikely to happen if packets are
received properly.

I fixed it by resetting the watchdog when a packet is received.

Anybody else having this problem?

Best regards

Index: devices/e1000/e1000_main-2.6.20-ethercat.c
--- devices/e1000/e1000_main-2.6.20-ethercat.c	(revision 154)
+++ devices/e1000/e1000_main-2.6.20-ethercat.c	(working copy)
@@ -4366,6 +4366,8 @@
                 /* probably a little skewed due to removing CRC */
                 total_rx_bytes += length;
+               adapter->ec_watchdog_jiffies = jiffies;

                 /* code added for copybreak, this should improve
                  * performance for small packets with large amounts

More information about the etherlab-dev mailing list