diff options
Diffstat (limited to 'net/dccp/ccids/ccid2.h')
-rw-r--r-- | net/dccp/ccids/ccid2.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/net/dccp/ccids/ccid2.h b/net/dccp/ccids/ccid2.h new file mode 100644 index 000000000000..451a87464fa5 --- /dev/null +++ b/net/dccp/ccids/ccid2.h | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * net/dccp/ccids/ccid2.h | ||
3 | * | ||
4 | * Copyright (c) 2005 Andrea Bittau <a.bittau@cs.ucl.ac.uk> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | #ifndef _DCCP_CCID2_H_ | ||
21 | #define _DCCP_CCID2_H_ | ||
22 | |||
23 | #include <linux/dccp.h> | ||
24 | #include <linux/timer.h> | ||
25 | #include <linux/types.h> | ||
26 | #include "../ccid.h" | ||
27 | |||
28 | struct sock; | ||
29 | |||
30 | struct ccid2_seq { | ||
31 | u64 ccid2s_seq; | ||
32 | unsigned long ccid2s_sent; | ||
33 | int ccid2s_acked; | ||
34 | struct ccid2_seq *ccid2s_prev; | ||
35 | struct ccid2_seq *ccid2s_next; | ||
36 | }; | ||
37 | |||
38 | /** struct ccid2_hc_tx_sock - CCID2 TX half connection | ||
39 | * | ||
40 | * @ccid2hctx_ssacks - ACKs recv in slow start | ||
41 | * @ccid2hctx_acks - ACKS recv in AI phase | ||
42 | * @ccid2hctx_sent - packets sent in this window | ||
43 | * @ccid2hctx_lastrtt -time RTT was last measured | ||
44 | * @ccid2hctx_arsent - packets sent [ack ratio] | ||
45 | * @ccid2hctx_ackloss - ack was lost in this win | ||
46 | * @ccid2hctx_rpseq - last consecutive seqno | ||
47 | * @ccid2hctx_rpdupack - dupacks since rpseq | ||
48 | */ | ||
49 | struct ccid2_hc_tx_sock { | ||
50 | int ccid2hctx_cwnd; | ||
51 | int ccid2hctx_ssacks; | ||
52 | int ccid2hctx_acks; | ||
53 | int ccid2hctx_ssthresh; | ||
54 | int ccid2hctx_pipe; | ||
55 | int ccid2hctx_numdupack; | ||
56 | struct ccid2_seq *ccid2hctx_seqbuf; | ||
57 | struct ccid2_seq *ccid2hctx_seqh; | ||
58 | struct ccid2_seq *ccid2hctx_seqt; | ||
59 | long ccid2hctx_rto; | ||
60 | long ccid2hctx_srtt; | ||
61 | long ccid2hctx_rttvar; | ||
62 | int ccid2hctx_sent; | ||
63 | unsigned long ccid2hctx_lastrtt; | ||
64 | struct timer_list ccid2hctx_rtotimer; | ||
65 | unsigned long ccid2hctx_arsent; | ||
66 | int ccid2hctx_ackloss; | ||
67 | u64 ccid2hctx_rpseq; | ||
68 | int ccid2hctx_rpdupack; | ||
69 | int ccid2hctx_sendwait; | ||
70 | }; | ||
71 | |||
72 | struct ccid2_hc_rx_sock { | ||
73 | int ccid2hcrx_data; | ||
74 | }; | ||
75 | |||
76 | static inline struct ccid2_hc_tx_sock *ccid2_hc_tx_sk(const struct sock *sk) | ||
77 | { | ||
78 | return ccid_priv(dccp_sk(sk)->dccps_hc_tx_ccid); | ||
79 | } | ||
80 | |||
81 | static inline struct ccid2_hc_rx_sock *ccid2_hc_rx_sk(const struct sock *sk) | ||
82 | { | ||
83 | return ccid_priv(dccp_sk(sk)->dccps_hc_rx_ccid); | ||
84 | } | ||
85 | #endif /* _DCCP_CCID2_H_ */ | ||