diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 32755b538652d0e3614f81fbbe47a157dc9220bf..a6a91e5e96fcae9810e9af9abf8c5b857fcd2abf 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 794be0a454f54cdf52c8fec80d72923900b172da..523b91d2502552d092cbb90e348fa7e9a1f12ca1 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; }