]> Pileus Git - ~andy/linux/commitdiff
sctp: Get rid of an extra routing lookup when adding a transport.
authorVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 4 Sep 2009 22:21:01 +0000 (18:21 -0400)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 4 Sep 2009 22:21:01 +0000 (18:21 -0400)
We used to perform 2 routing lookups for a new transport: one
just for path mtu detection, and one to actually route to destination
and path mtu update when sending a packet.  There is no point in doing
both of them, especially since the first one just for path mtu doesn't
take into account source address and sometimes gives the wrong route,
causing path mtu updates anyway.

We now do just the one call to do both route to destination and get
path mtu updates.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
net/sctp/associola.c

index caba989f4e76197a7d87eb9cc4f11eded3d9aab3..8450960df24f2001fd79b4de547939b991b56a4a 100644 (file)
@@ -680,13 +680,15 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
         */
        peer->param_flags = asoc->param_flags;
 
+       sctp_transport_route(peer, NULL, sp);
+
        /* Initialize the pmtu of the transport. */
-       if (peer->param_flags & SPP_PMTUD_ENABLE)
-               sctp_transport_pmtu(peer);
-       else if (asoc->pathmtu)
-               peer->pathmtu = asoc->pathmtu;
-       else
-               peer->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
+       if (peer->param_flags & SPP_PMTUD_DISABLE) {
+               if (asoc->pathmtu)
+                       peer->pathmtu = asoc->pathmtu;
+               else
+                       peer->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
+       }
 
        /* If this is the first transport addr on this association,
         * initialize the association PMTU to the peer's PMTU.