diff options
Diffstat (limited to 'net/dccp/ackvec.c')
-rw-r--r-- | net/dccp/ackvec.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c index 8c211c58893b..8dab723cc704 100644 --- a/net/dccp/ackvec.c +++ b/net/dccp/ackvec.c | |||
@@ -353,11 +353,13 @@ static void dccp_ackvec_throw_record(struct dccp_ackvec *av, | |||
353 | { | 353 | { |
354 | struct dccp_ackvec_record *next; | 354 | struct dccp_ackvec_record *next; |
355 | 355 | ||
356 | av->dccpav_buf_tail = avr->dccpavr_ack_ptr - 1; | 356 | /* sort out vector length */ |
357 | if (av->dccpav_buf_tail == 0) | 357 | if (av->dccpav_buf_head <= avr->dccpavr_ack_ptr) |
358 | av->dccpav_buf_tail = DCCP_MAX_ACKVEC_LEN - 1; | 358 | av->dccpav_vec_len = avr->dccpavr_ack_ptr - av->dccpav_buf_head; |
359 | 359 | else | |
360 | av->dccpav_vec_len -= avr->dccpavr_sent_len; | 360 | av->dccpav_vec_len = DCCP_MAX_ACKVEC_LEN - 1 |
361 | - av->dccpav_buf_head | ||
362 | + avr->dccpavr_ack_ptr; | ||
361 | 363 | ||
362 | /* free records */ | 364 | /* free records */ |
363 | list_for_each_entry_safe_from(avr, next, &av->dccpav_records, | 365 | list_for_each_entry_safe_from(avr, next, &av->dccpav_records, |