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