Subject: Re: udp weirdness

From: Eric Lemoine <[email-masked]>
Date: Fri, 27 Sep 2002 17:57:10 +0200

> > I figured out that packets can be dropped in pfifo_fast_enqueue()
> > [the default qdisc's enqueue func], even though the driver/kernel
> > flow control has triggered.
> >
> > And sendto does not notify the user when packet gets dropped because
> > the output queue overflows (as indicated in sendto manpage).
> >
> > Why doesn't the kernel just put the process into sleep instead of
> > dropping packets?
> >
> 
> What trigger do you suggest to wake up the process again?

I was thinking of putting processes into sleep on per-device lists.
Once the net driver sees the NIC is ready to send again it wakes up all
processes sleeping on its list. [If the socket from which the packet
comes from is marked non-blocking the process is not put into sleep 
(obviously) and EAGAIN is returned.]

Throwing away packets when not absolutely necessary does not make sense
to me. Please correct me if i'm wrong.

> A better idea maybe to return something to the socket so it can
> manage things instead -- not sure what to return though that wouldnt
> break some standard;
> 
> cheers,
> jamal

-- 
Eric