Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 800e00c1 authored by Marcelo Ricardo Leitner's avatar Marcelo Ricardo Leitner Committed by David S. Miller
Browse files

sctp: move transport pathmtu calc away of sctp_assoc_add_peer



There was only one case that sctp_assoc_add_peer couldn't handle, which
is when SPP_PMTUD_DISABLE is set and pathmtu not initialized.
So add this situation to sctp_transport_route and reuse what was
already in there.

Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c45698f8
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -652,15 +652,8 @@ 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_DISABLE) {
		if (asoc->pathmtu)
			peer->pathmtu = asoc->pathmtu;
		else
			peer->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
	}
	sctp_transport_route(peer, NULL, sp);

	/* If this is the first transport addr on this association,
	 * initialize the association PMTU to the peer's PMTU.
+6 −2
Original line number Diff line number Diff line
@@ -310,9 +310,13 @@ void sctp_transport_route(struct sctp_transport *transport,
			     (transport == asoc->peer.active_path)))
			opt->pf->to_sk_saddr(&transport->saddr,
					     asoc->base.sk);
	} else
	} else if ((transport->param_flags & SPP_PMTUD_DISABLE) &&
		   asoc && asoc->pathmtu) {
		transport->pathmtu = asoc->pathmtu;
	} else {
		transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
	}
}

/* Hold a reference to a transport.  */
int sctp_transport_hold(struct sctp_transport *transport)