sctp: make the raise timer more simple and accurate
authorXin Long <lucien.xin@gmail.com>
Wed, 24 Nov 2021 19:26:14 +0000 (14:26 -0500)
committerJakub Kicinski <kuba@kernel.org>
Fri, 26 Nov 2021 05:00:45 +0000 (21:00 -0800)
commit703319094c9c2bf34f65d3496ccb350149fdd14b
treeefed701ff1ee598835f87749d229a588acae31ea
parent0c51dffcc8a2821cb18ef6fdf5b02ea891b850c4
sctp: make the raise timer more simple and accurate

Currently, the probe timer is reused as the raise timer when PLPMTUD is in
the Search Complete state. raise_count was introduced to count how many
times the probe timer has timed out. When raise_count reaches to 30, the
raise timer handler will be triggered.

During the whole processing above, the timer keeps timing out every probe_
interval. It is a waste for the Search Complete state, as the raise timer
only needs to time out after 30 * probe_interval.

Since the raise timer and probe timer are never used at the same time, it
is no need to keep probe timer 'alive' in the Search Complete state. This
patch to introduce sctp_transport_reset_raise_timer() to start the timer
as the raise timer when entering the Search Complete state. When entering
the other states, sctp_transport_reset_probe_timer() will still be called
to reset the timer to the probe timer.

raise_count can be removed from sctp_transport as no need to count probe
timer timeout for raise timer timeout. last_rtx_chunks can be removed as
sctp_transport_reset_probe_timer() can be called in the place where asoc
rtx_data_chunks is changed.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Link: https://lore.kernel.org/r/edb0e48988ea85997488478b705b11ddc1ba724a.1637781974.git.lucien.xin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/sctp/structs.h
net/sctp/outqueue.c
net/sctp/sm_statefuns.c
net/sctp/transport.c