Re: min-write-size for a UDP socket to be POLLOUT cannot be set. (proposed fixes)

From: Ben Greear (
Date: Mon Dec 10 2001 - 15:11:08 EST

Richard B. Johnson wrote:

> On Mon, 10 Dec 2001, Ben Greear wrote:
>>This relates to my earlier question about setting the threshold
>>at which select returns that a (UDP) socket is writable.
>>It appears that UDP sockets are hardwired at 2048 bytes...
>> From linux/include/net/sock.h:
> int len = 0x8000;
> setsockopt(s, SOL_SOCKET, SO_SNDBUF, &len, sizeof(len));
> setsockopt(s, SOL_SOCKET, SO_RCVBUF, &len, sizeof(len));
> Doesn't this work?

That sets the queue sizes bigger, but suppose this:

I have 4M queue size. I have 4M-2k bytes already in the
queue (2k free). I have a 4k UDP buffer to write. I call
select and it says the socket is writable. However, in this
case I cannot actually write to the socket because I have only
2 of the 4k that I need... Now, I can detect the failure to send
and re-transmit, but that basically gets me into a tight loop because
select keeps saying I can write, and I keep trying. The tight loop
is doubly bad because the machine is already highly stressed or it's
buffers would never be so full....

I want select to only say I can write when I'm at XX (say, 64k) bytes of
free buffer-queue space...


> Cheers,
> Dick Johnson
> Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).
> I was going to compile a list of innovations that could be
> attributed to Microsoft. Once I realized that Ctrl-Alt-Del
> was handled in the BIOS, I found that there aren't any.

Ben Greear <>       <Ben_Greear AT>
President of Candela Technologies Inc

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to More majordomo info at Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Dec 15 2001 - 21:00:18 EST