diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-06-07 14:21:05 -0400 |
---|---|---|
committer | Vladislav Yasevich <vxy@hera.kernel.org> | 2007-06-13 16:44:42 -0400 |
commit | 8a4794914f9cf2681235ec2311e189fe307c28c7 (patch) | |
tree | 029530de3f65445050e7f4c3ad4cd0195b127fa4 /net/sctp/associola.c | |
parent | c910b47e1811b3f8b184108c48de3d7af3e2999b (diff) |
[SCTP] Flag a pmtu change request
Currently, if the socket is owned by the user, we drop the ICMP
message. As a result SCTP forgets that path MTU changed and
never adjusting it's estimate. This causes all subsequent
packets to be fragmented. With this patch, we'll flag the association
that it needs to udpate it's estimate based on the already updated
routing information.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Acked-by: Sridhar Samudrala <sri@us.ibm.com>
Diffstat (limited to 'net/sctp/associola.c')
-rw-r--r-- | net/sctp/associola.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index df94e3cdfba3..498edb0cd4e5 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -1231,6 +1231,10 @@ void sctp_assoc_sync_pmtu(struct sctp_association *asoc) | |||
1231 | /* Get the lowest pmtu of all the transports. */ | 1231 | /* Get the lowest pmtu of all the transports. */ |
1232 | list_for_each(pos, &asoc->peer.transport_addr_list) { | 1232 | list_for_each(pos, &asoc->peer.transport_addr_list) { |
1233 | t = list_entry(pos, struct sctp_transport, transports); | 1233 | t = list_entry(pos, struct sctp_transport, transports); |
1234 | if (t->pmtu_pending && t->dst) { | ||
1235 | sctp_transport_update_pmtu(t, dst_mtu(t->dst)); | ||
1236 | t->pmtu_pending = 0; | ||
1237 | } | ||
1234 | if (!pmtu || (t->pathmtu < pmtu)) | 1238 | if (!pmtu || (t->pathmtu < pmtu)) |
1235 | pmtu = t->pathmtu; | 1239 | pmtu = t->pathmtu; |
1236 | } | 1240 | } |