Hi,

I work with two PCs with Epic100 cards and one with 3com Boomerang. I
am having problems with the former card when there are RT tasks that
preempt the kernel: after some time, the network is down, and ifconfig
only shows that more and more packets are being dropped. I can "fix"
this by running /etc/rc.d/init.d/network {stop,start}. I remember that
one person on this list compared some cards and said that the Epic100
(or some similar card) may start dropping packets after only 500
microseconds of not being able to deliver data to the host, while the
Boomerang is smart and has a much larger buffer, and so should not make
problems.

I think I managed to patch the rate-monotonic scheduler so that there
are "two" rt_linux_task's: one (as before) that runs when there are no
RT tasks running, and another that runs periodically and takes up to a
predefined time interval. I tried to calibrate the period and the time
interval so that the Linux kernel can (hopefully, since I cannot
control this) dedicate enough time to the Epic100 driver and prevent
it from starting dropping packets. However, I could not find good
values of the period and demand; when trying some relatively extreme
values (e.g., period under 10 ms, or demand/period ratio above 40%),
the Linux kernel output various errors, such as "Aiee, scheduling in
interrupt" (even though I used cli(), save_flags() and restore_flags()
within rt_schedule(), in addition to the already present r_*()
counterparts), "kfree of non-malloced data", etc.

Can anyone suggest how to try to solve this problem? Is it possible at
all, or is it better to buy two Boomerang cards instead?

Thanks,
Aleks
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to