Subject: Re: fixing send(2) semantics (kern/29750)
To: Emmanuel Dreyfus <manu@netbsd.org>
From: Martin Husemann <martin@duskware.de>
List: tech-kern
Date: 03/26/2005 12:28:44
On Sat, Mar 26, 2005 at 12:21:22PM +0100, Emmanuel Dreyfus wrote:
> If I use blocking I/O with send(2) and a PPPoE connectivity, send(2)
> have to sleep when the interface queue gets full.

There are two interface queueues involved here, which in the real world
mostly will run paralell - so it's a more or less academic problem.
The upper (if_pppoe) output queue will behave according to the sleep
flag from the network layer; the lower (in ether_output) will always
get sleep=true passed.

> I don't have an opinion on whether we need to pass a (struct socket *)
> or a sleep flag, but how is it easier to tunnel the sleep flag than the
> (struct socket *)? 

Since in my scenario I would not pass the flag through, but "fake" it for
the pppoe -> ether_output part, a flag is way simpler. I don't see any
downsides with this aproach.

Martin