diff -r 17f58fe99511 -r e16093374dfd master/master.c --- a/master/master.c Thu Aug 03 19:47:29 2006 +0000 +++ b/master/master.c Thu Aug 03 20:11:20 2006 +0000 @@ -240,6 +240,7 @@ master->stats.timeouts = 0; master->stats.delayed = 0; master->stats.corrupted = 0; + master->stats.skipped = 0; master->stats.unmatched = 0; master->stats.t_last = 0; @@ -287,9 +288,9 @@ // check, if the datagram is already queued list_for_each_entry(queued_datagram, &master->datagram_queue, queue) { if (queued_datagram == datagram) { + master->stats.skipped++; + ec_master_output_stats(master); datagram->state = EC_DATAGRAM_QUEUED; - if (unlikely(master->debug_level)) - EC_WARN("datagram already queued.\n"); return; } } @@ -538,6 +539,10 @@ EC_WARN("%i frame(s) CORRUPTED!\n", master->stats.corrupted); master->stats.corrupted = 0; } + if (master->stats.skipped) { + EC_WARN("%i datagram(s) SKIPPED!\n", master->stats.skipped); + master->stats.skipped = 0; + } if (master->stats.unmatched) { EC_WARN("%i datagram(s) UNMATCHED!\n", master->stats.unmatched); master->stats.unmatched = 0; @@ -1234,7 +1239,7 @@ ec_device_call_isr(master->device); t_received = get_cycles(); - t_timeout = (cycles_t) EC_IO_TIMEOUT * (cpu_khz / 1000); + t_timeout = EC_IO_TIMEOUT * cpu_khz / 1000; // dequeue all received datagrams list_for_each_entry_safe(datagram, next, &master->datagram_queue, queue)