| From b9cd26f640a308ea314ad23532de9a8592cd09d2 Mon Sep 17 00:00:00 2001 |
| From: Paolo Abeni <pabeni@redhat.com> |
| Date: Fri, 23 Feb 2024 17:14:14 +0100 |
| Subject: mptcp: push at DSS boundaries |
| |
| From: Paolo Abeni <pabeni@redhat.com> |
| |
| commit b9cd26f640a308ea314ad23532de9a8592cd09d2 upstream. |
| |
| when inserting not contiguous data in the subflow write queue, |
| the protocol creates a new skb and prevent the TCP stack from |
| merging it later with already queued skbs by setting the EOR marker. |
| |
| Still no push flag is explicitly set at the end of previous GSO |
| packet, making the aggregation on the receiver side sub-optimal - |
| and packetdrill self-tests less predictable. |
| |
| Explicitly mark the end of not contiguous DSS with the push flag. |
| |
| Fixes: 6d0060f600ad ("mptcp: Write MPTCP DSS headers to outgoing data packets") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
| Reviewed-by: Mat Martineau <martineau@kernel.org> |
| Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> |
| Link: https://lore.kernel.org/r/20240223-upstream-net-20240223-misc-fixes-v1-4-162e87e48497@kernel.org |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/mptcp/protocol.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/net/mptcp/protocol.c |
| +++ b/net/mptcp/protocol.c |
| @@ -1277,6 +1277,7 @@ static int mptcp_sendmsg_frag(struct soc |
| mpext = skb_ext_find(skb, SKB_EXT_MPTCP); |
| if (!mptcp_skb_can_collapse_to(data_seq, skb, mpext)) { |
| TCP_SKB_CB(skb)->eor = 1; |
| + tcp_mark_push(tcp_sk(ssk), skb); |
| goto alloc_skb; |
| } |
| |