Commit 4e14867d authored by Paolo Abeni's avatar Paolo Abeni Committed by David S. Miller
Browse files

mptcp: tune re-injections for csum enabled mode



If the MPTCP-level checksum is enabled, on re-injections we
must spool a complete DSS, or the receive side will not be
able to compute the csum and process any data.

Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent dd8bcd17
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -2375,8 +2375,8 @@ static void __mptcp_retrans(struct sock *sk)

	/* limit retransmission to the bytes already sent on some subflows */
	info.sent = 0;
	info.limit = dfrag->already_sent;
	while (info.sent < dfrag->already_sent) {
	info.limit = READ_ONCE(msk->csum_enabled) ? dfrag->data_len : dfrag->already_sent;
	while (info.sent < info.limit) {
		if (!mptcp_alloc_tx_skb(sk, ssk))
			break;

@@ -2388,9 +2388,11 @@ static void __mptcp_retrans(struct sock *sk)
		copied += ret;
		info.sent += ret;
	}
	if (copied)
	if (copied) {
		dfrag->already_sent = max(dfrag->already_sent, info.sent);
		tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle,
			 info.size_goal);
	}

	mptcp_set_timeout(sk, ssk);
	release_sock(ssk);