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 RTnet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rtnet-users