GNU Linux-libre 4.19.211-gnu1
[releases.git] / net / ipv4 / tcp_vegas.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * TCP Vegas congestion control interface
4  */
5 #ifndef __TCP_VEGAS_H
6 #define __TCP_VEGAS_H 1
7
8 /* Vegas variables */
9 struct vegas {
10         u32     beg_snd_nxt;    /* right edge during last RTT */
11         u32     beg_snd_una;    /* left edge  during last RTT */
12         u32     beg_snd_cwnd;   /* saves the size of the cwnd */
13         u8      doing_vegas_now;/* if true, do vegas for this RTT */
14         u16     cntRTT;         /* # of RTTs measured within last RTT */
15         u32     minRTT;         /* min of RTTs measured within last RTT (in usec) */
16         u32     baseRTT;        /* the min of all Vegas RTT measurements seen (in usec) */
17 };
18
19 void tcp_vegas_init(struct sock *sk);
20 void tcp_vegas_state(struct sock *sk, u8 ca_state);
21 void tcp_vegas_pkts_acked(struct sock *sk, const struct ack_sample *sample);
22 void tcp_vegas_cwnd_event(struct sock *sk, enum tcp_ca_event event);
23 size_t tcp_vegas_get_info(struct sock *sk, u32 ext, int *attr,
24                           union tcp_cc_info *info);
25
26 #endif  /* __TCP_VEGAS_H */