diff options
author | 2020-11-16 10:48:12 +0100 | |
---|---|---|
committer | 2020-11-16 10:46:07 -0800 | |
commit | 8edf08649eede6e5a3e39a3d38c63f30039a0c1e (patch) | |
tree | 278ab97b84769bc057a3f5449aaec7d19019c665 /drivers/net/phy/phy.c | |
parent | mptcp: try to push pending data on snd una updates (diff) | |
download | wireguard-linux-8edf08649eede6e5a3e39a3d38c63f30039a0c1e.tar.xz wireguard-linux-8edf08649eede6e5a3e39a3d38c63f30039a0c1e.zip |
mptcp: rework poll+nospace handling
MPTCP maintains a status bit, MPTCP_SEND_SPACE, that is set when at
least one subflow and the mptcp socket itself are writeable.
mptcp_poll returns EPOLLOUT if the bit is set.
mptcp_sendmsg makes sure MPTCP_SEND_SPACE gets cleared when last write
has used up all subflows or the mptcp socket wmem.
This reworks nospace handling as follows:
MPTCP_SEND_SPACE is replaced with MPTCP_NOSPACE, i.e. inverted meaning.
This bit is set when the mptcp socket is not writeable.
The mptcp-level ack path schedule will then schedule the mptcp worker
to allow it to free already-acked data (and reduce wmem usage).
This will then wake userspace processes that wait for a POLLOUT event.
sendmsg will set MPTCP_NOSPACE only when it has to wait for more
wmem (blocking I/O case).
poll path will set MPTCP_NOSPACE in case the mptcp socket is
not writeable.
Normal tcp-level notification (SOCK_NOSPACE) is only enabled
in case the subflow socket has no available wmem.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/phy/phy.c')
0 files changed, 0 insertions, 0 deletions