Skip to content

Commit

Permalink
mptcp: skip to next candidate if subflow has unacked data
Browse files Browse the repository at this point in the history
In case a subflow path is blocked, MPTCP-level retransmit may not take
place anymore because such subflow is likely to have unacked data left
in its write queue.

Ignore subflows that have experienced loss and test next candidate.

Fixes: 3b1d621 ("mptcp: implement and use MPTCP-level retransmission")
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
  • Loading branch information
Florian Westphal authored and matttbe committed Nov 19, 2020
1 parent 48c62fb commit d3e9aa3
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion net/mptcp/protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1726,8 +1726,11 @@ static struct sock *mptcp_subflow_get_retrans(const struct mptcp_sock *msk)
continue;

/* still data outstanding at TCP level? Don't retransmit. */
if (!tcp_write_queue_empty(ssk))
if (!tcp_write_queue_empty(ssk)) {
if (inet_csk(ssk)->icsk_ca_state >= TCP_CA_Loss)
continue;
return NULL;
}

if (subflow->backup) {
if (!backup)
Expand Down

0 comments on commit d3e9aa3

Please sign in to comment.