• Florian Westphal's avatar
    tcp: mptcp: use mptcp receive buffer space to select rcv window · 071c8ed6
    Florian Westphal authored
    In MPTCP, the receive window is shared across all subflows, because it
    refers to the mptcp-level sequence space.
    
    MPTCP receivers already place incoming packets on the mptcp socket
    receive queue and will charge it to the mptcp socket rcvbuf until
    userspace consumes the data.
    
    Update __tcp_select_window to use the occupancy of the parent/mptcp
    socket instead of the subflow socket in case the tcp socket is part
    of a logical mptcp connection.
    
    This commit doesn't change choice of initial window for passive or active
    connections.
    While it would be possible to change those as well, this adds complexity
    (especially when handling MP_JOIN requests).  Furthermore, the MPTCP RFC
    specifically says that a MPTCP sender 'MUST NOT use the RCV.WND field
    of a TCP segment at the connection level if it does not also carry a DSS
    option with a Data ACK field.'
    
    SYN/SYNACK packets do not carry a DSS option with a Data ACK field.
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    071c8ed6
tcp_output.c 113 KB