- 论坛徽章:
- 1
|
经人提醒,查看内核,以SOCK_MIN_RCVBUF 为关键字,凡是有 SOCK_MIN_RCVBUF 关键字的文件都对比一遍
发现有差异:
3.2.0 与2.6.32的差异就在于,SOCK_MIN_RCVBUF 定义的大小
3.2.0与 3.5.0 的差异就在于,在ip_vs_sync.c文件中,3.2.0未做对SOCK_MIN_RCVBUF 的操作;3.5.0里对SOCK_MIN_RCVBUF 作了操作
- sock.h
- 3.2.0
- #define SOCK_MIN_RCVBUF (2048 + sizeof(struct sk_buff))
- 3.5.0
- #define SOCK_MIN_RCVBUF (2048 + sizeof(struct sk_buff))
- 2.6.32
- #define SOCK_MIN_RCVBUF 256
- Tcp.c
- 3.2.0
- case TCP_WINDOW_CLAMP:
- if (!val) {
- if (sk->sk_state != TCP_CLOSE) {
- err = -EINVAL;
- break;
- }
- tp->window_clamp = 0;
- } else
- tp->window_clamp = val < SOCK_MIN_RCVBUF / 2 ?
- SOCK_MIN_RCVBUF / 2 : val;
- break;
- 3.5.0
- case TCP_WINDOW_CLAMP:
- if (!val) {
- if (sk->sk_state != TCP_CLOSE) {
- err = -EINVAL;
- break;
- }
- tp->window_clamp = 0;
- } else
- tp->window_clamp = val < SOCK_MIN_RCVBUF / 2 ?
- SOCK_MIN_RCVBUF / 2 : val;
- break;
- 2.6.32
- case TCP_WINDOW_CLAMP:
- if (!val) {
- if (sk->sk_state != TCP_CLOSE) {
- err = -EINVAL;
- break;
- }
- tp->window_clamp = 0;
- } else
- tp->window_clamp = val < SOCK_MIN_RCVBUF / 2 ?
- SOCK_MIN_RCVBUF / 2 : val;
- break;
- Sock.c
- 3.2.0
- if ((val * 2) < SOCK_MIN_RCVBUF)
- sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
- else
- sk->sk_rcvbuf = val * 2;
- break;
- 3.5.0
- sk->sk_rcvbuf = max_t(u32, val * 2, SOCK_MIN_RCVBUF);
- break;
- 2.6.32
- if ((val * 2) < SOCK_MIN_RCVBUF)
- sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
- else
- sk->sk_rcvbuf = val * 2;
- break;
- ip_vs_sync.c
- 3.2.0
- //无 SOCK_MIN_RCVBUF内容
- 3.5.0
- static void set_sock_size(struct sock *sk, int mode, int val)
- {
- /* setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &val, sizeof(val)); */
- /* setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &val, sizeof(val)); */
- lock_sock(sk);
- if (mode) {
- val = clamp_t(int, val, (SOCK_MIN_SNDBUF + 1) / 2,
- sysctl_wmem_max);
- sk->sk_sndbuf = val * 2;
- sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
- } else {
- val = clamp_t(int, val, (SOCK_MIN_RCVBUF + 1) / 2,
- sysctl_rmem_max);
- sk->sk_rcvbuf = val * 2;
- sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
- }
- release_sock(sk);
- }
- 2.6.32
- //无SOCK_MIN_RCVBUF内容
复制代码 |
|