* [PATCH]: Make UDP wait for 64k of free buffer before telling select/poll there is space to send.
@ 2001-12-24 6:24 Ben Greear
0 siblings, 0 replies; only message in thread
From: Ben Greear @ 2001-12-24 6:24 UTC (permalink / raw)
To: linux-kernel, David S. Miller, Alan Cox
This should allow better handling of large (> 2048 byte) UDP packets
when the socket write buffer is relatively large....
diff -u -r -N -X /home/greear/exclude.list linux/include/net/sock.h linux.dev/include/net/sock.h
--- linux/include/net/sock.h Fri Dec 21 10:42:04 2001
+++ linux.dev/include/net/sock.h Sun Dec 23 12:22:52 2001
@@ -1230,7 +1230,16 @@
*/
static inline int sock_writeable(struct sock *sk)
{
-
return sock_wspace(sk) >= SOCK_MIN_WRITE_SPACE;
+ /* The goal is to only signal writable when there is at least 64k of buffer space
+ * when your send buffers are 128k or bigger. The reason is that otherwise
+ * you get many failed UDP sends when you run > SOCK_MIN_WRITE_SPACE sized packets
+ * at extreme speed (ie faster than your network can keep up). This change is
+ * designed to make select/poll wait untill you can actually be assured of sending
+ * the UDP packet at least into the kernel buffers w/out dropping it.
+ * This puts us more in line with sock_dev_write_space in core/sock.c too. --Ben
+ */
+ return sock_wspace(sk) >= max(SOCK_MIN_WRITE_SPACE,
+ min((unsigned int)(0xFFFF), sk->sndbuf >> 1));
}
static inline int gfp_any(void)
--
Ben Greear <greearb@candelatech.com> <Ben_Greear AT excite.com>
President of Candela Technologies Inc http://www.candelatech.com
ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2001-12-24 6:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-12-24 6:24 [PATCH]: Make UDP wait for 64k of free buffer before telling select/poll there is space to send Ben Greear
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.