diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/dccp/ccids/ccid2.c | 16 | ||||
-rw-r--r-- | net/dccp/ccids/ccid2.h | 3 |
2 files changed, 8 insertions, 11 deletions
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c index 747fa1c4e42e..237007bb55a8 100644 --- a/net/dccp/ccids/ccid2.c +++ b/net/dccp/ccids/ccid2.c | |||
@@ -171,11 +171,6 @@ static void ccid2_change_srtt(struct ccid2_hc_tx_sock *hctx, long val) | |||
171 | hctx->ccid2hctx_srtt = val; | 171 | hctx->ccid2hctx_srtt = val; |
172 | } | 172 | } |
173 | 173 | ||
174 | static void ccid2_change_pipe(struct ccid2_hc_tx_sock *hctx, long val) | ||
175 | { | ||
176 | hctx->ccid2hctx_pipe = val; | ||
177 | } | ||
178 | |||
179 | static void ccid2_start_rto_timer(struct sock *sk); | 174 | static void ccid2_start_rto_timer(struct sock *sk); |
180 | 175 | ||
181 | static void ccid2_hc_tx_rto_expire(unsigned long data) | 176 | static void ccid2_hc_tx_rto_expire(unsigned long data) |
@@ -205,11 +200,11 @@ static void ccid2_hc_tx_rto_expire(unsigned long data) | |||
205 | ccid2_start_rto_timer(sk); | 200 | ccid2_start_rto_timer(sk); |
206 | 201 | ||
207 | /* adjust pipe, cwnd etc */ | 202 | /* adjust pipe, cwnd etc */ |
208 | ccid2_change_pipe(hctx, 0); | ||
209 | hctx->ccid2hctx_ssthresh = hctx->ccid2hctx_cwnd / 2; | 203 | hctx->ccid2hctx_ssthresh = hctx->ccid2hctx_cwnd / 2; |
210 | if (hctx->ccid2hctx_ssthresh < 2) | 204 | if (hctx->ccid2hctx_ssthresh < 2) |
211 | hctx->ccid2hctx_ssthresh = 2; | 205 | hctx->ccid2hctx_ssthresh = 2; |
212 | hctx->ccid2hctx_cwnd = 1; | 206 | hctx->ccid2hctx_cwnd = 1; |
207 | hctx->ccid2hctx_pipe = 0; | ||
213 | 208 | ||
214 | /* clear state about stuff we sent */ | 209 | /* clear state about stuff we sent */ |
215 | hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqh; | 210 | hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqh; |
@@ -248,8 +243,7 @@ static void ccid2_hc_tx_packet_sent(struct sock *sk, int more, unsigned int len) | |||
248 | 243 | ||
249 | BUG_ON(!hctx->ccid2hctx_sendwait); | 244 | BUG_ON(!hctx->ccid2hctx_sendwait); |
250 | hctx->ccid2hctx_sendwait = 0; | 245 | hctx->ccid2hctx_sendwait = 0; |
251 | ccid2_change_pipe(hctx, hctx->ccid2hctx_pipe + 1); | 246 | hctx->ccid2hctx_pipe++; |
252 | BUG_ON(hctx->ccid2hctx_pipe < 0); | ||
253 | 247 | ||
254 | /* There is an issue. What if another packet is sent between | 248 | /* There is an issue. What if another packet is sent between |
255 | * packet_send() and packet_sent(). Then the sequence number would be | 249 | * packet_send() and packet_sent(). Then the sequence number would be |
@@ -519,8 +513,10 @@ static void ccid2_hc_tx_dec_pipe(struct sock *sk) | |||
519 | { | 513 | { |
520 | struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk); | 514 | struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk); |
521 | 515 | ||
522 | ccid2_change_pipe(hctx, hctx->ccid2hctx_pipe-1); | 516 | if (hctx->ccid2hctx_pipe == 0) |
523 | BUG_ON(hctx->ccid2hctx_pipe < 0); | 517 | DCCP_BUG("pipe == 0"); |
518 | else | ||
519 | hctx->ccid2hctx_pipe--; | ||
524 | 520 | ||
525 | if (hctx->ccid2hctx_pipe == 0) | 521 | if (hctx->ccid2hctx_pipe == 0) |
526 | ccid2_hc_tx_kill_rto_timer(sk); | 522 | ccid2_hc_tx_kill_rto_timer(sk); |
diff --git a/net/dccp/ccids/ccid2.h b/net/dccp/ccids/ccid2.h index b72e9556a155..bc659f00cb96 100644 --- a/net/dccp/ccids/ccid2.h +++ b/net/dccp/ccids/ccid2.h | |||
@@ -42,6 +42,7 @@ struct ccid2_seq { | |||
42 | 42 | ||
43 | /** struct ccid2_hc_tx_sock - CCID2 TX half connection | 43 | /** struct ccid2_hc_tx_sock - CCID2 TX half connection |
44 | * | 44 | * |
45 | * @ccid2hctx_{cwnd,ssthresh,pipe}: as per RFC 4341, section 5 | ||
45 | * @ccid2hctx_ssacks - ACKs recv in slow start | 46 | * @ccid2hctx_ssacks - ACKs recv in slow start |
46 | * @ccid2hctx_acks - ACKS recv in AI phase | 47 | * @ccid2hctx_acks - ACKS recv in AI phase |
47 | * @ccid2hctx_lastrtt -time RTT was last measured | 48 | * @ccid2hctx_lastrtt -time RTT was last measured |
@@ -51,9 +52,9 @@ struct ccid2_seq { | |||
51 | struct ccid2_hc_tx_sock { | 52 | struct ccid2_hc_tx_sock { |
52 | u32 ccid2hctx_cwnd; | 53 | u32 ccid2hctx_cwnd; |
53 | u32 ccid2hctx_ssthresh; | 54 | u32 ccid2hctx_ssthresh; |
55 | u32 ccid2hctx_pipe; | ||
54 | int ccid2hctx_ssacks; | 56 | int ccid2hctx_ssacks; |
55 | int ccid2hctx_acks; | 57 | int ccid2hctx_acks; |
56 | int ccid2hctx_pipe; | ||
57 | struct ccid2_seq *ccid2hctx_seqbuf[CCID2_SEQBUF_MAX]; | 58 | struct ccid2_seq *ccid2hctx_seqbuf[CCID2_SEQBUF_MAX]; |
58 | int ccid2hctx_seqbufc; | 59 | int ccid2hctx_seqbufc; |
59 | struct ccid2_seq *ccid2hctx_seqh; | 60 | struct ccid2_seq *ccid2hctx_seqh; |