Commit d23ca15a authored by Andrea Bittau's avatar Andrea Bittau Committed by David S. Miller

[DCCP] ACKVEC: Optimization - Do not traverse records if none will be found

Do not traverse the list of ack vector records [proportional to window size]
when we know we will not find what we are looking for.  This is especially
useful because ack vectors are checked twice:
1) Upon parsing of options.
2) Upon notification of a new ack.

All of the work will occur during check #1.  Therefore, when check #2 is
performed, no new work will be done.  This is now "detected" and there is no
performance hit when doing #2.
Signed-off-by: default avatarAndrea Bittau <a.bittau@cs.ucl.ac.uk>
Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
parent 09dbc389
...@@ -383,7 +383,8 @@ void dccp_ackvec_check_rcv_ackno(struct dccp_ackvec *av, struct sock *sk, ...@@ -383,7 +383,8 @@ void dccp_ackvec_check_rcv_ackno(struct dccp_ackvec *av, struct sock *sk,
(unsigned long long)avr->dccpavr_ack_ackno); (unsigned long long)avr->dccpavr_ack_ackno);
dccp_ackvec_throw_record(av, avr); dccp_ackvec_throw_record(av, avr);
break; break;
} } else if (avr->dccpavr_ack_seqno > ackno)
break; /* old news */
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment