diff options
Diffstat (limited to 'net/dccp/ccids/lib')
-rw-r--r-- | net/dccp/ccids/lib/loss_interval.c | 36 | ||||
-rw-r--r-- | net/dccp/ccids/lib/loss_interval.h | 9 | ||||
-rw-r--r-- | net/dccp/ccids/lib/packet_history.c | 168 | ||||
-rw-r--r-- | net/dccp/ccids/lib/packet_history.h | 17 | ||||
-rw-r--r-- | net/dccp/ccids/lib/tfrc.h | 2 | ||||
-rw-r--r-- | net/dccp/ccids/lib/tfrc_equation.c | 2 |
6 files changed, 63 insertions, 171 deletions
diff --git a/net/dccp/ccids/lib/loss_interval.c b/net/dccp/ccids/lib/loss_interval.c index 5d7b7d864385..906c81ab9d4f 100644 --- a/net/dccp/ccids/lib/loss_interval.c +++ b/net/dccp/ccids/lib/loss_interval.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * net/dccp/ccids/lib/loss_interval.c | 2 | * net/dccp/ccids/lib/loss_interval.c |
3 | * | 3 | * |
4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. |
5 | * Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> | 5 | * Copyright (c) 2005-6 Ian McDonald <ian.mcdonald@jandi.co.nz> |
6 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 6 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <net/sock.h> | ||
15 | 16 | ||
16 | #include "loss_interval.h" | 17 | #include "loss_interval.h" |
17 | 18 | ||
@@ -90,13 +91,13 @@ u32 dccp_li_hist_calc_i_mean(struct list_head *list) | |||
90 | u32 w_tot = 0; | 91 | u32 w_tot = 0; |
91 | 92 | ||
92 | list_for_each_entry_safe(li_entry, li_next, list, dccplih_node) { | 93 | list_for_each_entry_safe(li_entry, li_next, list, dccplih_node) { |
93 | if (i < DCCP_LI_HIST_IVAL_F_LENGTH) { | 94 | if (li_entry->dccplih_interval != ~0) { |
94 | i_tot0 += li_entry->dccplih_interval * dccp_li_hist_w[i]; | 95 | i_tot0 += li_entry->dccplih_interval * dccp_li_hist_w[i]; |
95 | w_tot += dccp_li_hist_w[i]; | 96 | w_tot += dccp_li_hist_w[i]; |
97 | if (i != 0) | ||
98 | i_tot1 += li_entry->dccplih_interval * dccp_li_hist_w[i - 1]; | ||
96 | } | 99 | } |
97 | 100 | ||
98 | if (i != 0) | ||
99 | i_tot1 += li_entry->dccplih_interval * dccp_li_hist_w[i - 1]; | ||
100 | 101 | ||
101 | if (++i > DCCP_LI_HIST_IVAL_F_LENGTH) | 102 | if (++i > DCCP_LI_HIST_IVAL_F_LENGTH) |
102 | break; | 103 | break; |
@@ -107,37 +108,36 @@ u32 dccp_li_hist_calc_i_mean(struct list_head *list) | |||
107 | 108 | ||
108 | i_tot = max(i_tot0, i_tot1); | 109 | i_tot = max(i_tot0, i_tot1); |
109 | 110 | ||
110 | /* FIXME: Why do we do this? -Ian McDonald */ | 111 | if (!w_tot) { |
111 | if (i_tot * 4 < w_tot) | 112 | LIMIT_NETDEBUG(KERN_WARNING "%s: w_tot = 0\n", __FUNCTION__); |
112 | i_tot = w_tot * 4; | 113 | return 1; |
114 | } | ||
113 | 115 | ||
114 | return i_tot * 4 / w_tot; | 116 | return i_tot / w_tot; |
115 | } | 117 | } |
116 | 118 | ||
117 | EXPORT_SYMBOL_GPL(dccp_li_hist_calc_i_mean); | 119 | EXPORT_SYMBOL_GPL(dccp_li_hist_calc_i_mean); |
118 | 120 | ||
119 | struct dccp_li_hist_entry *dccp_li_hist_interval_new(struct dccp_li_hist *hist, | 121 | int dccp_li_hist_interval_new(struct dccp_li_hist *hist, |
120 | struct list_head *list, | 122 | struct list_head *list, const u64 seq_loss, const u8 win_loss) |
121 | const u64 seq_loss, | ||
122 | const u8 win_loss) | ||
123 | { | 123 | { |
124 | struct dccp_li_hist_entry *tail = NULL, *entry; | 124 | struct dccp_li_hist_entry *entry; |
125 | int i; | 125 | int i; |
126 | 126 | ||
127 | for (i = 0; i <= DCCP_LI_HIST_IVAL_F_LENGTH; ++i) { | 127 | for (i = 0; i < DCCP_LI_HIST_IVAL_F_LENGTH; i++) { |
128 | entry = dccp_li_hist_entry_new(hist, SLAB_ATOMIC); | 128 | entry = dccp_li_hist_entry_new(hist, SLAB_ATOMIC); |
129 | if (entry == NULL) { | 129 | if (entry == NULL) { |
130 | dccp_li_hist_purge(hist, list); | 130 | dccp_li_hist_purge(hist, list); |
131 | return NULL; | 131 | dump_stack(); |
132 | return 0; | ||
132 | } | 133 | } |
133 | if (tail == NULL) | 134 | entry->dccplih_interval = ~0; |
134 | tail = entry; | ||
135 | list_add(&entry->dccplih_node, list); | 135 | list_add(&entry->dccplih_node, list); |
136 | } | 136 | } |
137 | 137 | ||
138 | entry->dccplih_seqno = seq_loss; | 138 | entry->dccplih_seqno = seq_loss; |
139 | entry->dccplih_win_count = win_loss; | 139 | entry->dccplih_win_count = win_loss; |
140 | return tail; | 140 | return 1; |
141 | } | 141 | } |
142 | 142 | ||
143 | EXPORT_SYMBOL_GPL(dccp_li_hist_interval_new); | 143 | EXPORT_SYMBOL_GPL(dccp_li_hist_interval_new); |
diff --git a/net/dccp/ccids/lib/loss_interval.h b/net/dccp/ccids/lib/loss_interval.h index 43bf78269d1d..0ae85f0340b2 100644 --- a/net/dccp/ccids/lib/loss_interval.h +++ b/net/dccp/ccids/lib/loss_interval.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * net/dccp/ccids/lib/loss_interval.h | 4 | * net/dccp/ccids/lib/loss_interval.h |
5 | * | 5 | * |
6 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 6 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. |
7 | * Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> | 7 | * Copyright (c) 2005 Ian McDonald <ian.mcdonald@jandi.co.nz> |
8 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 8 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify it | 10 | * This program is free software; you can redistribute it and/or modify it |
@@ -52,9 +52,6 @@ extern void dccp_li_hist_purge(struct dccp_li_hist *hist, | |||
52 | 52 | ||
53 | extern u32 dccp_li_hist_calc_i_mean(struct list_head *list); | 53 | extern u32 dccp_li_hist_calc_i_mean(struct list_head *list); |
54 | 54 | ||
55 | extern struct dccp_li_hist_entry * | 55 | extern int dccp_li_hist_interval_new(struct dccp_li_hist *hist, |
56 | dccp_li_hist_interval_new(struct dccp_li_hist *hist, | 56 | struct list_head *list, const u64 seq_loss, const u8 win_loss); |
57 | struct list_head *list, | ||
58 | const u64 seq_loss, | ||
59 | const u8 win_loss); | ||
60 | #endif /* _DCCP_LI_HIST_ */ | 57 | #endif /* _DCCP_LI_HIST_ */ |
diff --git a/net/dccp/ccids/lib/packet_history.c b/net/dccp/ccids/lib/packet_history.c index ad98d6a322eb..b876c9c81c65 100644 --- a/net/dccp/ccids/lib/packet_history.c +++ b/net/dccp/ccids/lib/packet_history.c | |||
@@ -1,13 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * net/dccp/packet_history.h | 2 | * net/dccp/packet_history.c |
3 | * | 3 | * |
4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 4 | * Copyright (c) 2005-6 The University of Waikato, Hamilton, New Zealand. |
5 | * | 5 | * |
6 | * An implementation of the DCCP protocol | 6 | * An implementation of the DCCP protocol |
7 | * | 7 | * |
8 | * This code has been developed by the University of Waikato WAND | 8 | * This code has been developed by the University of Waikato WAND |
9 | * research group. For further information please see http://www.wand.net.nz/ | 9 | * research group. For further information please see http://www.wand.net.nz/ |
10 | * or e-mail Ian McDonald - iam4@cs.waikato.ac.nz | 10 | * or e-mail Ian McDonald - ian.mcdonald@jandi.co.nz |
11 | * | 11 | * |
12 | * This code also uses code from Lulea University, rereleased as GPL by its | 12 | * This code also uses code from Lulea University, rereleased as GPL by its |
13 | * authors: | 13 | * authors: |
@@ -112,64 +112,27 @@ struct dccp_rx_hist_entry * | |||
112 | 112 | ||
113 | EXPORT_SYMBOL_GPL(dccp_rx_hist_find_data_packet); | 113 | EXPORT_SYMBOL_GPL(dccp_rx_hist_find_data_packet); |
114 | 114 | ||
115 | int dccp_rx_hist_add_packet(struct dccp_rx_hist *hist, | 115 | void dccp_rx_hist_add_packet(struct dccp_rx_hist *hist, |
116 | struct list_head *rx_list, | 116 | struct list_head *rx_list, |
117 | struct list_head *li_list, | 117 | struct list_head *li_list, |
118 | struct dccp_rx_hist_entry *packet) | 118 | struct dccp_rx_hist_entry *packet, |
119 | u64 nonloss_seqno) | ||
119 | { | 120 | { |
120 | struct dccp_rx_hist_entry *entry, *next, *iter; | 121 | struct dccp_rx_hist_entry *entry, *next; |
121 | u8 num_later = 0; | 122 | u8 num_later = 0; |
122 | 123 | ||
123 | iter = dccp_rx_hist_head(rx_list); | 124 | list_add(&packet->dccphrx_node, rx_list); |
124 | if (iter == NULL) | ||
125 | dccp_rx_hist_add_entry(rx_list, packet); | ||
126 | else { | ||
127 | const u64 seqno = packet->dccphrx_seqno; | ||
128 | |||
129 | if (after48(seqno, iter->dccphrx_seqno)) | ||
130 | dccp_rx_hist_add_entry(rx_list, packet); | ||
131 | else { | ||
132 | if (dccp_rx_hist_entry_data_packet(iter)) | ||
133 | num_later = 1; | ||
134 | |||
135 | list_for_each_entry_continue(iter, rx_list, | ||
136 | dccphrx_node) { | ||
137 | if (after48(seqno, iter->dccphrx_seqno)) { | ||
138 | dccp_rx_hist_add_entry(&iter->dccphrx_node, | ||
139 | packet); | ||
140 | goto trim_history; | ||
141 | } | ||
142 | |||
143 | if (dccp_rx_hist_entry_data_packet(iter)) | ||
144 | num_later++; | ||
145 | 125 | ||
146 | if (num_later == TFRC_RECV_NUM_LATE_LOSS) { | ||
147 | dccp_rx_hist_entry_delete(hist, packet); | ||
148 | return 1; | ||
149 | } | ||
150 | } | ||
151 | |||
152 | if (num_later < TFRC_RECV_NUM_LATE_LOSS) | ||
153 | dccp_rx_hist_add_entry(rx_list, packet); | ||
154 | /* | ||
155 | * FIXME: else what? should we destroy the packet | ||
156 | * like above? | ||
157 | */ | ||
158 | } | ||
159 | } | ||
160 | |||
161 | trim_history: | ||
162 | /* | ||
163 | * Trim history (remove all packets after the NUM_LATE_LOSS + 1 | ||
164 | * data packets) | ||
165 | */ | ||
166 | num_later = TFRC_RECV_NUM_LATE_LOSS + 1; | 126 | num_later = TFRC_RECV_NUM_LATE_LOSS + 1; |
167 | 127 | ||
168 | if (!list_empty(li_list)) { | 128 | if (!list_empty(li_list)) { |
169 | list_for_each_entry_safe(entry, next, rx_list, dccphrx_node) { | 129 | list_for_each_entry_safe(entry, next, rx_list, dccphrx_node) { |
170 | if (num_later == 0) { | 130 | if (num_later == 0) { |
171 | list_del_init(&entry->dccphrx_node); | 131 | if (after48(nonloss_seqno, |
172 | dccp_rx_hist_entry_delete(hist, entry); | 132 | entry->dccphrx_seqno)) { |
133 | list_del_init(&entry->dccphrx_node); | ||
134 | dccp_rx_hist_entry_delete(hist, entry); | ||
135 | } | ||
173 | } else if (dccp_rx_hist_entry_data_packet(entry)) | 136 | } else if (dccp_rx_hist_entry_data_packet(entry)) |
174 | --num_later; | 137 | --num_later; |
175 | } | 138 | } |
@@ -217,94 +180,10 @@ trim_history: | |||
217 | --num_later; | 180 | --num_later; |
218 | } | 181 | } |
219 | } | 182 | } |
220 | |||
221 | return 0; | ||
222 | } | 183 | } |
223 | 184 | ||
224 | EXPORT_SYMBOL_GPL(dccp_rx_hist_add_packet); | 185 | EXPORT_SYMBOL_GPL(dccp_rx_hist_add_packet); |
225 | 186 | ||
226 | u64 dccp_rx_hist_detect_loss(struct list_head *rx_list, | ||
227 | struct list_head *li_list, u8 *win_loss) | ||
228 | { | ||
229 | struct dccp_rx_hist_entry *entry, *next, *packet; | ||
230 | struct dccp_rx_hist_entry *a_loss = NULL; | ||
231 | struct dccp_rx_hist_entry *b_loss = NULL; | ||
232 | u64 seq_loss = DCCP_MAX_SEQNO + 1; | ||
233 | u8 num_later = TFRC_RECV_NUM_LATE_LOSS; | ||
234 | |||
235 | list_for_each_entry_safe(entry, next, rx_list, dccphrx_node) { | ||
236 | if (num_later == 0) { | ||
237 | b_loss = entry; | ||
238 | break; | ||
239 | } else if (dccp_rx_hist_entry_data_packet(entry)) | ||
240 | --num_later; | ||
241 | } | ||
242 | |||
243 | if (b_loss == NULL) | ||
244 | goto out; | ||
245 | |||
246 | num_later = 1; | ||
247 | list_for_each_entry_safe_continue(entry, next, rx_list, dccphrx_node) { | ||
248 | if (num_later == 0) { | ||
249 | a_loss = entry; | ||
250 | break; | ||
251 | } else if (dccp_rx_hist_entry_data_packet(entry)) | ||
252 | --num_later; | ||
253 | } | ||
254 | |||
255 | if (a_loss == NULL) { | ||
256 | if (list_empty(li_list)) { | ||
257 | /* no loss event have occured yet */ | ||
258 | LIMIT_NETDEBUG("%s: TODO: find a lost data packet by " | ||
259 | "comparing to initial seqno\n", | ||
260 | __FUNCTION__); | ||
261 | goto out; | ||
262 | } else { | ||
263 | LIMIT_NETDEBUG("%s: Less than 4 data pkts in history!", | ||
264 | __FUNCTION__); | ||
265 | goto out; | ||
266 | } | ||
267 | } | ||
268 | |||
269 | /* Locate a lost data packet */ | ||
270 | entry = packet = b_loss; | ||
271 | list_for_each_entry_safe_continue(entry, next, rx_list, dccphrx_node) { | ||
272 | u64 delta = dccp_delta_seqno(entry->dccphrx_seqno, | ||
273 | packet->dccphrx_seqno); | ||
274 | |||
275 | if (delta != 0) { | ||
276 | if (dccp_rx_hist_entry_data_packet(packet)) | ||
277 | --delta; | ||
278 | /* | ||
279 | * FIXME: check this, probably this % usage is because | ||
280 | * in earlier drafts the ndp count was just 8 bits | ||
281 | * long, but now it cam be up to 24 bits long. | ||
282 | */ | ||
283 | #if 0 | ||
284 | if (delta % DCCP_NDP_LIMIT != | ||
285 | (packet->dccphrx_ndp - | ||
286 | entry->dccphrx_ndp) % DCCP_NDP_LIMIT) | ||
287 | #endif | ||
288 | if (delta != packet->dccphrx_ndp - entry->dccphrx_ndp) { | ||
289 | seq_loss = entry->dccphrx_seqno; | ||
290 | dccp_inc_seqno(&seq_loss); | ||
291 | } | ||
292 | } | ||
293 | packet = entry; | ||
294 | if (packet == a_loss) | ||
295 | break; | ||
296 | } | ||
297 | out: | ||
298 | if (seq_loss != DCCP_MAX_SEQNO + 1) | ||
299 | *win_loss = a_loss->dccphrx_ccval; | ||
300 | else | ||
301 | *win_loss = 0; /* Paranoia */ | ||
302 | |||
303 | return seq_loss; | ||
304 | } | ||
305 | |||
306 | EXPORT_SYMBOL_GPL(dccp_rx_hist_detect_loss); | ||
307 | |||
308 | struct dccp_tx_hist *dccp_tx_hist_new(const char *name) | 187 | struct dccp_tx_hist *dccp_tx_hist_new(const char *name) |
309 | { | 188 | { |
310 | struct dccp_tx_hist *hist = kmalloc(sizeof(*hist), GFP_ATOMIC); | 189 | struct dccp_tx_hist *hist = kmalloc(sizeof(*hist), GFP_ATOMIC); |
@@ -365,6 +244,25 @@ struct dccp_tx_hist_entry * | |||
365 | 244 | ||
366 | EXPORT_SYMBOL_GPL(dccp_tx_hist_find_entry); | 245 | EXPORT_SYMBOL_GPL(dccp_tx_hist_find_entry); |
367 | 246 | ||
247 | int dccp_rx_hist_find_entry(const struct list_head *list, const u64 seq, | ||
248 | u8 *ccval) | ||
249 | { | ||
250 | struct dccp_rx_hist_entry *packet = NULL, *entry; | ||
251 | |||
252 | list_for_each_entry(entry, list, dccphrx_node) | ||
253 | if (entry->dccphrx_seqno == seq) { | ||
254 | packet = entry; | ||
255 | break; | ||
256 | } | ||
257 | |||
258 | if (packet) | ||
259 | *ccval = packet->dccphrx_ccval; | ||
260 | |||
261 | return packet != NULL; | ||
262 | } | ||
263 | |||
264 | EXPORT_SYMBOL_GPL(dccp_rx_hist_find_entry); | ||
265 | |||
368 | void dccp_tx_hist_purge_older(struct dccp_tx_hist *hist, | 266 | void dccp_tx_hist_purge_older(struct dccp_tx_hist *hist, |
369 | struct list_head *list, | 267 | struct list_head *list, |
370 | struct dccp_tx_hist_entry *packet) | 268 | struct dccp_tx_hist_entry *packet) |
@@ -391,7 +289,7 @@ void dccp_tx_hist_purge(struct dccp_tx_hist *hist, struct list_head *list) | |||
391 | 289 | ||
392 | EXPORT_SYMBOL_GPL(dccp_tx_hist_purge); | 290 | EXPORT_SYMBOL_GPL(dccp_tx_hist_purge); |
393 | 291 | ||
394 | MODULE_AUTHOR("Ian McDonald <iam4@cs.waikato.ac.nz>, " | 292 | MODULE_AUTHOR("Ian McDonald <ian.mcdonald@jandi.co.nz>, " |
395 | "Arnaldo Carvalho de Melo <acme@ghostprotocols.net>"); | 293 | "Arnaldo Carvalho de Melo <acme@ghostprotocols.net>"); |
396 | MODULE_DESCRIPTION("DCCP TFRC library"); | 294 | MODULE_DESCRIPTION("DCCP TFRC library"); |
397 | MODULE_LICENSE("GPL"); | 295 | MODULE_LICENSE("GPL"); |
diff --git a/net/dccp/ccids/lib/packet_history.h b/net/dccp/ccids/lib/packet_history.h index 673c209e4e85..067cf1c85a37 100644 --- a/net/dccp/ccids/lib/packet_history.h +++ b/net/dccp/ccids/lib/packet_history.h | |||
@@ -1,13 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * net/dccp/packet_history.h | 2 | * net/dccp/packet_history.h |
3 | * | 3 | * |
4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 4 | * Copyright (c) 2005-6 The University of Waikato, Hamilton, New Zealand. |
5 | * | 5 | * |
6 | * An implementation of the DCCP protocol | 6 | * An implementation of the DCCP protocol |
7 | * | 7 | * |
8 | * This code has been developed by the University of Waikato WAND | 8 | * This code has been developed by the University of Waikato WAND |
9 | * research group. For further information please see http://www.wand.net.nz/ | 9 | * research group. For further information please see http://www.wand.net.nz/ |
10 | * or e-mail Ian McDonald - iam4@cs.waikato.ac.nz | 10 | * or e-mail Ian McDonald - ian.mcdonald@jandi.co.nz |
11 | * | 11 | * |
12 | * This code also uses code from Lulea University, rereleased as GPL by its | 12 | * This code also uses code from Lulea University, rereleased as GPL by its |
13 | * authors: | 13 | * authors: |
@@ -106,6 +106,8 @@ static inline void dccp_tx_hist_entry_delete(struct dccp_tx_hist *hist, | |||
106 | extern struct dccp_tx_hist_entry * | 106 | extern struct dccp_tx_hist_entry * |
107 | dccp_tx_hist_find_entry(const struct list_head *list, | 107 | dccp_tx_hist_find_entry(const struct list_head *list, |
108 | const u64 seq); | 108 | const u64 seq); |
109 | extern int dccp_rx_hist_find_entry(const struct list_head *list, const u64 seq, | ||
110 | u8 *ccval); | ||
109 | 111 | ||
110 | static inline void dccp_tx_hist_add_entry(struct list_head *list, | 112 | static inline void dccp_tx_hist_add_entry(struct list_head *list, |
111 | struct dccp_tx_hist_entry *entry) | 113 | struct dccp_tx_hist_entry *entry) |
@@ -164,12 +166,6 @@ static inline void dccp_rx_hist_entry_delete(struct dccp_rx_hist *hist, | |||
164 | extern void dccp_rx_hist_purge(struct dccp_rx_hist *hist, | 166 | extern void dccp_rx_hist_purge(struct dccp_rx_hist *hist, |
165 | struct list_head *list); | 167 | struct list_head *list); |
166 | 168 | ||
167 | static inline void dccp_rx_hist_add_entry(struct list_head *list, | ||
168 | struct dccp_rx_hist_entry *entry) | ||
169 | { | ||
170 | list_add(&entry->dccphrx_node, list); | ||
171 | } | ||
172 | |||
173 | static inline struct dccp_rx_hist_entry * | 169 | static inline struct dccp_rx_hist_entry * |
174 | dccp_rx_hist_head(struct list_head *list) | 170 | dccp_rx_hist_head(struct list_head *list) |
175 | { | 171 | { |
@@ -188,10 +184,11 @@ static inline int | |||
188 | entry->dccphrx_type == DCCP_PKT_DATAACK; | 184 | entry->dccphrx_type == DCCP_PKT_DATAACK; |
189 | } | 185 | } |
190 | 186 | ||
191 | extern int dccp_rx_hist_add_packet(struct dccp_rx_hist *hist, | 187 | extern void dccp_rx_hist_add_packet(struct dccp_rx_hist *hist, |
192 | struct list_head *rx_list, | 188 | struct list_head *rx_list, |
193 | struct list_head *li_list, | 189 | struct list_head *li_list, |
194 | struct dccp_rx_hist_entry *packet); | 190 | struct dccp_rx_hist_entry *packet, |
191 | u64 nonloss_seqno); | ||
195 | 192 | ||
196 | extern u64 dccp_rx_hist_detect_loss(struct list_head *rx_list, | 193 | extern u64 dccp_rx_hist_detect_loss(struct list_head *rx_list, |
197 | struct list_head *li_list, u8 *win_loss); | 194 | struct list_head *li_list, u8 *win_loss); |
diff --git a/net/dccp/ccids/lib/tfrc.h b/net/dccp/ccids/lib/tfrc.h index 130c4c40cfe3..45f30f59ea2a 100644 --- a/net/dccp/ccids/lib/tfrc.h +++ b/net/dccp/ccids/lib/tfrc.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * net/dccp/ccids/lib/tfrc.h | 4 | * net/dccp/ccids/lib/tfrc.h |
5 | * | 5 | * |
6 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 6 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. |
7 | * Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> | 7 | * Copyright (c) 2005 Ian McDonald <ian.mcdonald@jandi.co.nz> |
8 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 8 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
9 | * Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon | 9 | * Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon |
10 | * | 10 | * |
diff --git a/net/dccp/ccids/lib/tfrc_equation.c b/net/dccp/ccids/lib/tfrc_equation.c index 4fd2ebebf5a0..44076e0c6591 100644 --- a/net/dccp/ccids/lib/tfrc_equation.c +++ b/net/dccp/ccids/lib/tfrc_equation.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * net/dccp/ccids/lib/tfrc_equation.c | 2 | * net/dccp/ccids/lib/tfrc_equation.c |
3 | * | 3 | * |
4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | 4 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. |
5 | * Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> | 5 | * Copyright (c) 2005 Ian McDonald <ian.mcdonald@jandi.co.nz> |
6 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 6 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
7 | * Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon | 7 | * Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon |
8 | * | 8 | * |