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: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
dd8bcd1768
Коммит
4e14867d5e
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче