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: Andrea Bittau <[EMAIL PROTECTED]>
Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
Signed-off-by: Arnaldo Carvalho de Melo <[EMAIL PROTECTED]>

------------------------------------------------------------------------------

 ackvec.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

------------------------------------------------------------------------------

diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c
index 0c54b89..bd20a2c 100644
--- a/net/dccp/ackvec.c
+++ b/net/dccp/ackvec.c
@@ -383,7 +383,8 @@ void dccp_ackvec_check_rcv_ackno(struct 
                                      (unsigned long 
long)avr->dccpavr_ack_ackno);
                        dccp_ackvec_throw_record(av, avr);
                        break;
-               }
+               } else if (avr->dccpavr_ack_seqno > ackno)
+                       break; /* old news */
        }
 }
 
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to