diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-16 06:57:14 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-16 06:57:14 -0400 |
commit | 02f3d4ce9e81434a365f4643020b0402f6fe3332 (patch) | |
tree | 8fd12d62c3d92ed090d1d7e5f92750bef951b914 /net/sctp/socket.c | |
parent | 35ad9b9cf7d8a2e6259a0d24022e910adb6f3489 (diff) |
sctp: Adjust PMTU updates to accomodate route invalidation.
This adjusts the call to dst_ops->update_pmtu() so that we can
transparently handle the fact that, in the future, the dst itself can
be invalidated by the PMTU update (when we have non-host routes cached
in sockets).
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r-- | net/sctp/socket.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index b3b8a8d813eb..74bd3c47350a 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -1853,7 +1853,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
1853 | } | 1853 | } |
1854 | 1854 | ||
1855 | if (asoc->pmtu_pending) | 1855 | if (asoc->pmtu_pending) |
1856 | sctp_assoc_pending_pmtu(asoc); | 1856 | sctp_assoc_pending_pmtu(sk, asoc); |
1857 | 1857 | ||
1858 | /* If fragmentation is disabled and the message length exceeds the | 1858 | /* If fragmentation is disabled and the message length exceeds the |
1859 | * association fragmentation point, return EMSGSIZE. The I-D | 1859 | * association fragmentation point, return EMSGSIZE. The I-D |
@@ -2365,7 +2365,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, | |||
2365 | if ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) { | 2365 | if ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) { |
2366 | if (trans) { | 2366 | if (trans) { |
2367 | trans->pathmtu = params->spp_pathmtu; | 2367 | trans->pathmtu = params->spp_pathmtu; |
2368 | sctp_assoc_sync_pmtu(asoc); | 2368 | sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc); |
2369 | } else if (asoc) { | 2369 | } else if (asoc) { |
2370 | asoc->pathmtu = params->spp_pathmtu; | 2370 | asoc->pathmtu = params->spp_pathmtu; |
2371 | sctp_frag_point(asoc, params->spp_pathmtu); | 2371 | sctp_frag_point(asoc, params->spp_pathmtu); |
@@ -2382,7 +2382,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, | |||
2382 | (trans->param_flags & ~SPP_PMTUD) | pmtud_change; | 2382 | (trans->param_flags & ~SPP_PMTUD) | pmtud_change; |
2383 | if (update) { | 2383 | if (update) { |
2384 | sctp_transport_pmtu(trans, sctp_opt2sk(sp)); | 2384 | sctp_transport_pmtu(trans, sctp_opt2sk(sp)); |
2385 | sctp_assoc_sync_pmtu(asoc); | 2385 | sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc); |
2386 | } | 2386 | } |
2387 | } else if (asoc) { | 2387 | } else if (asoc) { |
2388 | asoc->param_flags = | 2388 | asoc->param_flags = |