ACKVEC: fix ackvector length calculation
PATCH 1/11 ACKVEC: fix ackvector length calculation
Fix ackvector length calculation upon receiving an "ack-of-ack". This patch aviods the ackvector from growing too large which causes it to not be inserted into packets.
Signed-off-by Andrea Bittau <[email protected]>
---
net/dccp/ackvec.c +7 -5
@@ -353,11 +353,13 @@ static void dccp_ackvec_throw_record(str {struct dccp_ackvec_record *next; - av->dccpav_buf_tail = avr->dccpavr_ack_ptr -1 ; -if (av->dccpav_buf_tail =0 ) - av->dccpav_buf_tail =DCCP_MAX_ACKVEC_LEN -1 ; - - av->dccpav_vec_len -= avr->dccpavr_sent_len; +/* sort out vector length */ +if (av->dccpav_buf_head <= avr->dccpavr_ack_ptr) + av->dccpav_vec_len = avr->dccpavr_ack_ptr - av->dccpav_buf_head; +else + av->dccpav_vec_len =DCCP_MAX_ACKVEC_LEN -1 + - av->dccpav_buf_head + + avr->dccpavr_ack_ptr;/* free records */ list_for_each_entry_safe_from(avr, next, &av->dccpav_records,