On 2012-12-03 17:18, Michael Morscher wrote:
>  Hi Jan,
> 
> I ran into another or the same problem again. I switched platform to two 
> Freescale P2020RDB and two Intel e1000e PCI-Express Adapters (Desktop CT). I 
> think the TDMA problem occurs because the buffer of the card explodes. Il 
> receive those messages when I connect both systems with a 1:1 connection. 
> During the loading of the rt_e1000e module, the Link goes down. I think the 
> master then tries to start the calibration phase but the Link isn't up again 
> because the second system also unloaded the module... So RTnet writes pakets 
> into the card's buffer which cannot be sent due to the missing link...

I see - that indeed makes sense.

> 
> When I connect both systems over a switch, it works perfectly! Sometimes it 
> also work over a 1:1 connection, but not really often. Tried it for half an 
> hour and got it working twice... The calibration time on 1:1 is 10us and over 
> my HP 1810-24G around 12-13us.

OK.

BTW, I meanwhile stumbled over an I-pipe bug in 2.6.x kernels that
causes interrupt loss after rebinding a PCI adapter from Xenomai to
Linux - that's what latest RTnet does in its shutdown script. Here is a
fix for 2.6.38 (3.x do not suffer from that problem due to changes in
Linux):

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index b79ec1d..aeb8cc1 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -878,7 +878,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t 
handle, int is_chained,
        desc->name = name;
 
        if (handle != handle_bad_irq && is_chained) {
-               desc->status &= ~IRQ_DISABLED;
+               desc->status &= ~(IRQ_DISABLED | IRQ_MASKED);
                desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE;
                desc->depth = 0;
                desc->irq_data.chip->irq_startup(&desc->irq_data);
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 9033c1c..57fdf57 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -785,7 +785,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct 
irqaction *new)
 
                if (!(desc->status & IRQ_NOAUTOEN)) {
                        desc->depth = 0;
-                       desc->status &= ~IRQ_DISABLED;
+                       desc->status &= ~(IRQ_DISABLED | IRQ_MASKED);
                        desc->irq_data.chip->irq_startup(&desc->irq_data);
                } else
                        /* Undo nested disables: */

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
BUILD Helping you discover the best ways to construct your parallel projects.
http://goparallel.sourceforge.net
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to