Re: Bottom half for network drivers

Donald Jeff Dionne (jeff@RyeHam.ee.ryerson.ca)
Sat, 11 Sep 1999 05:53:19 +0000 (GMT)


...

> Btw, i have a strange problems... when i'm doing ping from my ucLinux device
> if i use ping packet size < 128 bytes i'm getting enormouss RTT spread.
> the RTT varies of 0.4 ms to 4000 ms. My protocol analyzer shows that
> the ICMP echo packet comes back usially in 0.4 ms.... so it seems that the

You are likely loosing an interrupt somewhere. Someone else reported having
a simmilar problem with a uClinux ethernet driver as well, and that was
the cause.

> small packets are stuck somewhere between my driver and ping application

No, I don't think so. There are a lot of different people using ethernet
on uClinux-2.0.33 derived kernels without problem even though the current
kernel is 2.0.38.0. Further proof is that the meat of the networking code
has no uClinux patches applied to it in any version (there is patches
against the net code, but they fix proc wanting writeable strings in .text).

> for variable amount of time.... With packets >128 bytes there is NO
> problem.... the kernel is 2.0.33 based...

Try and track down where things are stalling in your driver. Since you have
up to 4000mSec, you should be able to see what's happening with just printk.
Put one where your driver does netif_rx(), one in the interrupt handler
just before the mark_bh() for the tx done interrupt and one in the send
packet routine. IMHO, don't rule out the tx path.

What MCU is this on?

Any ideas?
Regards
Vadim

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/