• Paolo Abeni's avatar
    mptcp: give rcvlowat some love · 5684ab1a
    Paolo Abeni authored
    The MPTCP protocol allow setting sk_rcvlowat, but the value there
    is currently ignored.
    
    Additionally, the default subflows sk_rcvlowat basically disables per
    subflow delayed ack: the MPTCP protocol move the incoming data from the
    subflows into the msk socket as soon as the TCP stacks invokes the subflow
    data_ready callback. Later, when __tcp_ack_snd_check() takes action,
    the subflow-level copied_seq matches rcv_nxt, and that mandate for an
    immediate ack.
    
    Let the mptcp receive path be aware of such threshold, explicitly tracking
    the amount of data available to be ready and checking vs sk_rcvlowat in
    mptcp_poll() and before waking-up readers.
    
    Additionally implement the set_rcvlowat() callback, to properly handle
    the rcvbuf auto-tuning on sk_rcvlowat changes.
    
    Finally to properly handle delayed ack, force the subflow level threshold
    to 0 and instead explicitly ask for an immediate ack when the msk level th
    is not reached.
    Reviewed-by: default avatarMat Martineau <martineau@kernel.org>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarMat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20231023-send-net-next-20231023-2-v1-5-9dc60939d371@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    5684ab1a
sockopt.c 36.9 KB