mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
[NET]: add SO_RCVBUF comment
Put a comment in there explaining why we double the setsockopt() caller's SO_RCVBUF. People keep wondering. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
56079431b6
commit
c08e49611a
@ -385,7 +385,21 @@ set_sndbuf:
|
|||||||
val = sysctl_rmem_max;
|
val = sysctl_rmem_max;
|
||||||
set_rcvbuf:
|
set_rcvbuf:
|
||||||
sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
|
sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
|
||||||
/* FIXME: is this lower bound the right one? */
|
/*
|
||||||
|
* We double it on the way in to account for
|
||||||
|
* "struct sk_buff" etc. overhead. Applications
|
||||||
|
* assume that the SO_RCVBUF setting they make will
|
||||||
|
* allow that much actual data to be received on that
|
||||||
|
* socket.
|
||||||
|
*
|
||||||
|
* Applications are unaware that "struct sk_buff" and
|
||||||
|
* other overheads allocate from the receive buffer
|
||||||
|
* during socket buffer allocation.
|
||||||
|
*
|
||||||
|
* And after considering the possible alternatives,
|
||||||
|
* returning the value we actually used in getsockopt
|
||||||
|
* is the most desirable behavior.
|
||||||
|
*/
|
||||||
if ((val * 2) < SOCK_MIN_RCVBUF)
|
if ((val * 2) < SOCK_MIN_RCVBUF)
|
||||||
sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
|
sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user