diff options
author | Xin Long <lucien.xin@gmail.com> | 2021-10-28 11:36:02 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-10-29 13:21:23 +0200 |
commit | c6ea04ea692fa0d8e7faeb133fcd28e3acf470a0 (patch) | |
tree | 030072d7354ee8e295799b97ea9d32f275ba5ff2 /include/net/sctp | |
parent | sctp: allow IP fragmentation when PLPMTUD enters Error state (diff) | |
download | linux-c6ea04ea692fa0d8e7faeb133fcd28e3acf470a0.tar.xz linux-c6ea04ea692fa0d8e7faeb133fcd28e3acf470a0.zip |
sctp: reset probe_timer in sctp_transport_pl_update
sctp_transport_pl_update() is called when transport update its dst and
pathmtu, instead of stopping the PLPMTUD probe timer, PLPMTUD should
start over and reset the probe timer. Otherwise, the PLPMTUD service
would stop.
Fixes: 92548ec2f1f9 ("sctp: add the probe timer in transport for PLPMTUD")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sctp')
-rw-r--r-- | include/net/sctp/sctp.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 69bab88ad66b..bc00410223b0 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -653,12 +653,10 @@ static inline void sctp_transport_pl_update(struct sctp_transport *t) if (t->pl.state == SCTP_PL_DISABLED) return; - if (del_timer(&t->probe_timer)) - sctp_transport_put(t); - t->pl.state = SCTP_PL_BASE; t->pl.pmtu = SCTP_BASE_PLPMTU; t->pl.probe_size = SCTP_BASE_PLPMTU; + sctp_transport_reset_probe_timer(t); } static inline bool sctp_transport_pl_enabled(struct sctp_transport *t) |