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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-users