diff options
author | Lawrence Brakmo <brakmo@fb.com> | 2017-07-01 06:02:44 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-02 02:15:13 +0300 |
commit | 13d3b1ebe28762c79e981931a41914fae5d04386 (patch) | |
tree | 2ba5e7acc2245ff6296bc8b51e10d49559cdb928 /include | |
parent | 61bc4d8daa7af018d7ea084ea38648828a5a90d5 (diff) | |
download | linux-13d3b1ebe28762c79e981931a41914fae5d04386.tar.xz |
bpf: Support for setting initial receive window
This patch adds suppport for setting the initial advertized window from
within a BPF_SOCK_OPS program. This can be used to support larger
initial cwnd values in environments where it is known to be safe.
Signed-off-by: Lawrence Brakmo <brakmo@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/tcp.h | 10 | ||||
-rw-r--r-- | include/uapi/linux/bpf.h | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 564af2dee236..d6bb3948203d 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -2068,4 +2068,14 @@ static inline u32 tcp_timeout_init(struct sock *sk) return timeout; } +static inline u32 tcp_rwnd_init_bpf(struct sock *sk) +{ + int rwnd; + + rwnd = tcp_call_bpf(sk, BPF_SOCK_OPS_RWND_INIT); + + if (rwnd < 0) + rwnd = 0; + return rwnd; +} #endif /* _TCP_H */ diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 00702b294447..94d7ded1a6cf 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -751,6 +751,10 @@ enum { BPF_SOCK_OPS_TIMEOUT_INIT, /* Should return SYN-RTO value to use or * -1 if default value should be used */ + BPF_SOCK_OPS_RWND_INIT, /* Should return initial advertized + * window (in packets) or -1 if default + * value should be used + */ }; #endif /* _UAPI__LINUX_BPF_H__ */ |