OpenCloudOS-Kernel/net/mptcp
Florian Westphal 0d199e4363 mptcp: do not shrink snd_nxt when recovering
When recovering after a link failure, snd_nxt should not be set to a
lower value.  Else, update of snd_nxt is broken because:

  msk->snd_nxt += ret; (where ret is number of bytes sent)

assumes that snd_nxt always moves forward.
After reduction, its possible that snd_nxt update gets out of sync:
dfrag we just sent might have had a data sequence number even past
recovery_snd_nxt.

This change factors the common msk state update to a helper
and updates snd_nxt based on the current dfrag data sequence number.

The conditional is required for the recovery phase where we may
re-transmit old dfrags that are before current snd_nxt.

After this change, snd_nxt only moves forward and covers all in-sequence
data that was transmitted.

recovery_snd_nxt is retained to detect when recovery has completed.

Fixes: 1e1d9d6f11 ("mptcp: handle pending data on closed subflow")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-09-25 11:36:51 +01:00
..
Kconfig kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
Makefile kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
crypto.c kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
crypto_test.c mptcp: move crypto test to KUNIT 2020-06-26 16:21:39 -07:00
ctrl.c mptcp: faster active backup recovery 2021-08-14 11:37:25 +01:00
diag.c mptcp: allow dumping subflow context to userspace 2020-03-29 22:14:48 -07:00
mib.c mptcp: add the mibs for MP_FAIL 2021-08-25 11:02:35 +01:00
mib.h mptcp: add the mibs for MP_FAIL 2021-08-25 11:02:35 +01:00
mptcp_diag.c mptcp: add new mptcp_fill_diag helper 2021-09-18 14:20:00 +01:00
options.c mptcp: do not shrink snd_nxt when recovering 2021-09-25 11:36:51 +01:00
pm.c mptcp: MP_FAIL suboption receiving 2021-08-25 11:02:34 +01:00
pm_netlink.c mptcp: Only send extra TCP acks in eligible socket states 2021-09-03 11:49:30 +01:00
protocol.c mptcp: do not shrink snd_nxt when recovering 2021-09-25 11:36:51 +01:00
protocol.h mptcp: Only send extra TCP acks in eligible socket states 2021-09-03 11:49:30 +01:00
sockopt.c mptcp: add MPTCP_SUBFLOW_ADDRS getsockopt support 2021-09-18 14:20:01 +01:00
subflow.c mptcp: consolidate in_opt sub-options fields in a bitmask 2021-08-27 09:45:07 +01:00
syncookies.c mptcp: fix warning in __skb_flow_dissect() when do syn cookie for subflow join 2021-07-09 18:38:53 -07:00
token.c mptcp: using TOKEN_MAX_RETRIES instead of magic number 2021-05-28 13:59:15 -07:00
token_test.c mptcp: introduce token KUNIT self-tests 2020-06-26 16:21:39 -07:00