Karl Reichert wrote: >> I can't look into this soon, but it has high priority for time I will >> have test equipment in reach again! >> > Thanks Jan! Keep informed the list then, please ;) > Would really like to know why this happens, although it's not so critical to > my project.
/me would really like to understand this as well. Assuming your driver is rt_e1000 and that already the first sync frame shows abnormal latencies, could you try this patch with the I-pipe tracer enabled [1]? Use "echo 16000 > /proc/ipipe/trace/backtrace_points", "echo 1 > /proc/ipipe/trace/verbose", and grab the result from /proc/ipipe/trace/frozen. Thanks in advance, Jan [1] http://www.xenomai.org/index.php/I-pipe:Tracer
Index: stack/rtmac/tdma/tdma_worker.c
===================================================================
--- stack/rtmac/tdma/tdma_worker.c (Revision 1130)
+++ stack/rtmac/tdma/tdma_worker.c (Arbeitskopie)
@@ -57,11 +57,15 @@ static void do_xmit_sync_job(struct tdma
rtdm_lock_put_irqrestore(&tdma->lock, lockctx);
/* wait for beginning of next cycle, then send sync */
+ ipipe_trace_special(0, (tdma->current_cycle_start + tdma->cycle_period) &
0xFFFFFFFF);
+ ipipe_trace_special(1, (tdma->current_cycle_start + tdma->cycle_period) >>
32);
rtdm_task_sleep_abs(tdma->current_cycle_start + tdma->cycle_period,
RTDM_TIMERMODE_REALTIME);
rtdm_lock_get_irqsave(&tdma->lock, lockctx);
tdma->current_cycle++;
tdma->current_cycle_start += tdma->cycle_period;
+ ipipe_trace_special(2, tdma->current_cycle_start & 0xFFFFFFFF);
+ ipipe_trace_special(3, tdma->current_cycle_start >> 32);
rtdm_lock_put_irqrestore(&tdma->lock, lockctx);
tdma_xmit_sync_frame(tdma);
Index: stack/rtmac/tdma/tdma_proto.c
===================================================================
--- stack/rtmac/tdma/tdma_proto.c (Revision 1130)
+++ stack/rtmac/tdma/tdma_proto.c (Arbeitskopie)
@@ -61,6 +61,8 @@ void tdma_xmit_sync_frame(struct tdma_pr
sync->xmit_stamp = tdma->clock_offset;
sync->sched_xmit_stamp =
cpu_to_be64(tdma->clock_offset + tdma->current_cycle_start);
+ ipipe_trace_special(4, sync->sched_xmit_stamp & 0xFFFFFFFF);
+ ipipe_trace_special(5, sync->sched_xmit_stamp >> 32);
rtskb->xmit_stamp = &sync->xmit_stamp;
Index: drivers/e1000/e1000_main.c
===================================================================
--- drivers/e1000/e1000_main.c (Revision 1130)
+++ drivers/e1000/e1000_main.c (Arbeitskopie)
@@ -2470,8 +2470,12 @@ e1000_tx_queue(struct e1000_adapter *ada
rtdm_lock_irqsave(context);
- if (xmit_stamp)
+ if (xmit_stamp) {
*xmit_stamp = cpu_to_be64(rtdm_clock_read() + *xmit_stamp);
+ ipipe_trace_special(6, *xmit_stamp & 0xFFFFFFFF);
+ ipipe_trace_special(7, *xmit_stamp >> 32);
+ ipipe_trace_freeze(0);
+ }
/* Force memory writes to complete before letting h/w
* know there are new descriptors to fetch. (Only
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________ RTnet-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rtnet-users

