diff options
author | Lawrence Brakmo <brakmo@fb.com> | 2017-07-01 05:02:53 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-02 01:15:14 +0200 |
commit | 13bf96411ad2bd162a4f9470d58c6bb579c96e21 (patch) | |
tree | 33d5d9ecfa19d4cc4752a888abf0b03ff42881c4 | |
parent | bpf: Sample BPF program to set initial cwnd (diff) | |
download | linux-13bf96411ad2bd162a4f9470d58c6bb579c96e21.tar.xz linux-13bf96411ad2bd162a4f9470d58c6bb579c96e21.zip |
bpf: Adds support for setting sndcwnd clamp
Adds a new bpf_setsockopt for TCP sockets, TCP_BPF_SNDCWND_CLAMP, which
sets the initial congestion window. It is useful to limit the sndcwnd
when the host are close to each other (small RTT).
Signed-off-by: Lawrence Brakmo <brakmo@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/uapi/linux/bpf.h | 1 | ||||
-rw-r--r-- | net/core/filter.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 32755b538652..a6a91e5e96fc 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -784,5 +784,6 @@ enum { }; #define TCP_BPF_IW 1001 /* Set TCP initial congestion window */ +#define TCP_BPF_SNDCWND_CLAMP 1002 /* Set sndcwnd_clamp */ #endif /* _UAPI__LINUX_BPF_H__ */ diff --git a/net/core/filter.c b/net/core/filter.c index 794be0a454f5..523b91d25025 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2746,6 +2746,13 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock, else tp->snd_cwnd = val; break; + case TCP_BPF_SNDCWND_CLAMP: + if (val <= 0) { + ret = -EINVAL; + } else { + tp->snd_cwnd_clamp = val; + tp->snd_ssthresh = val; + } default: ret = -EINVAL; } |