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

Attachment: 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

Reply via email to