netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/7] mptcp: update mptcp ack sequence outside of recv path
@ 2020-02-26  9:14 Florian Westphal
  2020-02-26  9:14 ` [PATCH net-next 1/7] mptcp: add and use mptcp_data_ready helper Florian Westphal
                   ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Florian Westphal @ 2020-02-26  9:14 UTC (permalink / raw)
  To: netdev

This series moves mptcp-level ack sequence update outside of the recvmsg path.
Current approach has two problems:

1. There is delay between arrival of new data and the time we can ack
   this data.
2. If userspace doesn't call recv for some time, mptcp ack_seq is not
   updated at all, even if this data is queued in the subflow socket
   receive queue.

Move skbs from the subflow socket receive queue to the mptcp-level
receive queue, updating the mptcp-level ack sequence and have recv
take skbs from the mptcp-level receive queue.

The first place where we will attempt to update the mptcp level acks
is from the subflows' data_ready callback, even before we make userspace
aware of new data.

Because of possible deadlock (we need to take the mptcp socket lock
while already holding the subflow sockets lock), we may still need to
defer the mptcp-level ack update.  In such case, this work will be either
done from work queue or recv path, depending on which runs sooner.

In order to avoid pointless scheduling of the work queue, work
will be queued from the mptcp sockets lock release callback.
This allows to detect when the socket owner did drain the subflow
socket receive queue.

Please see individual patches for more information.

Florian Westphal (5):
      mptcp: add and use mptcp_data_ready helper
      mptcp: update mptcp ack sequence from work queue
      mptcp: add rmem queue accounting
      mptcp: remove mptcp_read_actor
      mptcp: avoid work queue scheduling if possible

Paolo Abeni (2):
      mptcp: add work queue skeleton
      mptcp: defer work schedule until mptcp lock is released

 net/mptcp/protocol.c | 364 ++++++++++++++++++++++++++++++++++++++-------------
 net/mptcp/protocol.h |   9 +-
 net/mptcp/subflow.c  |  32 ++---
 3 files changed, 289 insertions(+), 116 deletions(-)


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2020-02-27  4:47 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26  9:14 [PATCH net-next 0/7] mptcp: update mptcp ack sequence outside of recv path Florian Westphal
2020-02-26  9:14 ` [PATCH net-next 1/7] mptcp: add and use mptcp_data_ready helper Florian Westphal
2020-02-27  0:09   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 2/7] mptcp: add work queue skeleton Florian Westphal
2020-02-27  0:10   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 3/7] mptcp: update mptcp ack sequence from work queue Florian Westphal
2020-02-27  0:10   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 4/7] mptcp: add rmem queue accounting Florian Westphal
2020-02-27  0:11   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 5/7] mptcp: remove mptcp_read_actor Florian Westphal
2020-02-27  0:11   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 6/7] mptcp: avoid work queue scheduling if possible Florian Westphal
2020-02-27  0:11   ` Mat Martineau
2020-02-26  9:14 ` [PATCH net-next 7/7] mptcp: defer work schedule until mptcp lock is released Florian Westphal
2020-02-27  0:12   ` Mat Martineau
2020-02-27  4:47 ` [PATCH net-next 0/7] mptcp: update mptcp ack sequence outside of recv path David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).