Selftests: 1 error last night 20191022
by Matthieu Baerts
Hi,
Last night I got an error with selftests without KASAN, etc.:
01:02:11.478 # ns3 MPTCP -> ns1 (10.0.1.1:10036) MPTCP [ OK ]
01:02:12.517 # ns3 MPTCP -> ns1 (10.0.1.1:10037) TCP [ OK ]
01:02:13.554 # ns3 TCP -> ns1 (10.0.1.1:10038) MPTCP [ OK ]
01:02:14.596 # ./mptcp_connect.sh: line 16: 850 Terminated
cat "$capout"
01:02:14.627 not ok 1 selftests: mptcp: mptcp_connect.sh # TIMEOUT
I am not sure where this "TIMEOUT" comes from :-/
Any idea?
Cheers,
Matt
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
2 years, 8 months
[PATCH 0/5] IPv6 prerequisite patches
by Peter Krystad
IPv6 changes to the path manager and option handling. May all
be squashed as specified in each patch.
Peter Krystad (5):
mptcp: Update path manager interface for IPv6
mptcp: Add missing ADD_ADDR handling
mptcp: Make mptcp_subflow_connect() IPv4/6 agnostic
mptcp: Update path manager interface commands for IPv6
mptcp: Update basic path manager for IPv6
net/mptcp/basic.c | 40 ++++++++++------
net/mptcp/options.c | 24 ++++++----
net/mptcp/pm.c | 106 ++++++++++++++++++++++++++++++++++++-------
net/mptcp/protocol.h | 15 +++---
net/mptcp/subflow.c | 16 ++++---
5 files changed, 150 insertions(+), 51 deletions(-)
--
2.17.2
2 years, 8 months
[PATCH 0/4] mptcp: recvmsg refactor follow-up
by Paolo Abeni
This series bring in a few fixes for the recent recevmsg refactor.
The patch addressing the reported failures is 2/4, while 1/4 avoids another
issue currently observable with debug enabled (recvmsg() do busy loop on some
corner cases).
Patch 3/4 fixes another possible deadlock issue, currently not reported by
the self-tests
Finally patch 4/4 updates the MIB accounting to the new code.
patches 1-3 should be squashed into "mptcp: Implement MPTCP receive path", while
patch 4 should be quashed into "mptcp: increment MIB counters in a few places".
Notes:
- the last patch is a bit rough, at it abuses an existing MIB instead
of defining a new one, if there is no agreement about that it can be dropped.
- regardless of that, "mptcp: increment MIB counters in a few places" will
conflict on rebase, due to the changes introduced by the previous patches.
Paolo Abeni (3):
mptcp: clear data_avail flag if rtx queue is empty
mptcp: relax map checking
mptcp: deal better with out-of-sequence mapping
mptcp: account unsupported DSS mapping
net/mptcp/subflow.c | 63 +++++++++++++++++++++------------------------
1 file changed, 30 insertions(+), 33 deletions(-)
--
2.21.0
2 years, 8 months
[PATCH] token: fix rcu ptr manipulatation.
by Paolo Abeni
the radix tree slot manipulation needs some extra care to fit
the RCU annotation. Also replace raw *slot assignment with
the related radix tree helper - elsewhere sparse will lament there, too.
Squash-to: "mptcp: Add key generation and token tree"
Signed-off-by: Paolo Abeni <pabeni(a)redhat.com>
---
net/mptcp/token.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/token.c b/net/mptcp/token.c
index a0d8f6e323b2..aeb7059d19e1 100644
--- a/net/mptcp/token.c
+++ b/net/mptcp/token.c
@@ -161,8 +161,8 @@ void mptcp_token_update_accept(struct sock *sk, struct sock *conn)
slot = radix_tree_lookup_slot(&token_tree, subflow->token);
WARN_ON_ONCE(!slot);
if (slot) {
- WARN_ON_ONCE(*slot != &token_used);
- *slot = conn;
+ WARN_ON_ONCE(rcu_access_pointer(*slot) != &token_used);
+ radix_tree_replace_slot(&token_tree, slot, conn);
}
spin_unlock_bh(&token_tree_lock);
}
--
2.21.0
2 years, 8 months
[Weekly meetings] MoM - 17th of October 2019
by Matthieu Baerts
Hello,
Today, we just had our 71st meeting with Mat, Peter and Ossama (Intel
OTC), Christoph (Apple), Paolo, Florian and Davide (RedHat) and myself
(Tessares).
Thanks again for this new good meeting!
Here are the minutes of the meeting:
Accepted patches:
- mptcp: fix 'assignment from incompatible pointer type' warning:
- By Paolo
- squashed
- Accepted by Mat
- [GIT] add Co-developed-by tag:
- By Matth
- squashed
- mptcp: Interim Path Manager:
- by Peter
- Accepted by Paolo
- mptcp: disallow setting the MPTCP ULP from userspace:
- by Davide
- squashed
- v2 Accepted by Paolo, Matth
- selftests: allow compilation on older systems:
- by Florian
- squashed
- Accepted by Davide, Matth
- mptcp:pm: some cleanup:
- by Matth
- limit changes for basic in pm.c + remove dup code
- squashed
- Accepted by Paolo
- mptcp: just another recvmsg refactor:
- by Paolo
- Accepted by Mat
- rebase/squash done by Paolo
- IPv6 prerequisite patches:
- by Peter
- squashed
- Accepted by Paolo
- mptcp: fix compilation warnings with i386:
- by Matth
- Accepted by Paolo
- mptcp: fix compilation warnings/errors without IPV6:
- by Matth
- Accepted by Paolo
- mptcp: fix warnings reported by checkpatch:
- by Matth
- 5 patches
- Accepted by Paolo
- Except patch 4/5:
https://lists.01.org/hyperkitty/list/mptcp@lists.01.org/message/TON4FBKW5...
- Feel free to comment if you think it is needed (if not, it
will be dropped)
Pending patches:
- mptcp: sendmsg scheduler skeleton
- include: mptcp_poll should not block on each subflow:
- by Florian
- new RFC
- commented by Paolo
- selftests: fixes and improvements:
- include: prepare for mptcp ipv6 support
- by Florian
- v2 sent + 2 new ones
- *Waiting for review*
- mptcp: Add DATA_FIN transmission and handling:
- by Mat
- RFC
- Commented by Paolo, Christoph
- IPv6 support:
- by Peter
- RFC
- Commented by Paolo, Matth
- mptcp: recvmsg refactor follow-up:
- by Paolo
- fix tests
- Accepted by Matth
- *To be applied if there is no objections*
Remaining items for the initial submission:
- IPv6 support:
- Peter is working on it
- see below
- MPTCP v1 support:
- To be done
- Paolo might start to look at it next week
- DATA_FIN:
- Mat is working on it
- rebasing on what has been recently modified + applying
comments + continuing the dev
- Shared recv window:
- work to be done
- Active backup support:
- Paolo is working on it
- Limit subflow ULP visibility to kernel space:
- Davide did that
- optimisation of options in TCP "struct mptcp_options_received":
- Peter did a first patch, will share it ASAP
- MAINTAINERS file
IPv6 support:
- Paolo: What if we make MPTCP IPv6 support depending on IPV6 = y
? (not to have IPv6 as a module but still not depending on IPV6)
- So we propose to have a new CONFIG_MPTCP_IPV6 depending on IPV6=y
- If we move to separated files, it should be OK and not have too
many if statements (CONFIG_MPTCP_IPV6), then no need to have MPTCP
directly depending on IPV6
- Still to do:
- Add selftests.
- Multiple subflows. ADD_ADDR option does not fit in TCP header
with DSS, need to send independent ACK to carry it.
- Possibly split IPv4 and IPv6-specific portions into separate
files, or at least reduce some of the excessive copy-paste in this version.
- Is special handling needed for IPv4-mapped addresses? → maybe
yes for IPv6 sockets handling both v4 and v6
- Note: In mptcp.org, if we create a v4 only socket, it cannot
accept v6 subflows. Many apps are doing that by default (nginx, etc.).
Would be good to avoid that here.
patchwork:
- sounds good
- we can ask the maintainers to know if they can host us
- *@Matth* can do that
CI:
- i386 build
- with -Werror
- build without IPv6
Basic PM:
- is it temporary?
- if not: maybe better to add pm in the name
- maybe "safer" to do that now (the patch is at the end)
Next meeting:
- We propose to have it next Thursday, the 24th of October.
- Usual time: 16:00 UTC (9am PDT, 6pm CEST)
- Still open to everyone!
- https://annuel2.framapad.org/p/mptcp_upstreaming_20191024
Feel free to comment on these points and propose new ones for the next
meeting!
Talk to you next week,
Matt
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
2 years, 8 months
[PATCH v2 0/4] mptcp: fix compilation errors without IPV6
by Matthieu Baerts
I just checked the compilation without CONFIG_IPV6 and fixed what GCC was
complaining about. Nothing fancy.
v2:
- fix coding style as suggested by Paolo
- drop "mptcp:basic: check for v6 family" (Peter)
Matthieu Baerts (4):
mptcp: fix compilation warning without IPV6
mptcp: fix compilation error without IPV6
mptcp:ipv6: fix code style
mptcp:ipv6: fix code style
net/mptcp/basic.c | 6 ++++--
net/mptcp/options.c | 10 +++++++---
net/mptcp/pm.c | 4 +++-
3 files changed, 14 insertions(+), 6 deletions(-)
--
2.20.1
2 years, 8 months
[PATCH 0/3] mptcp: fix compilation without IPV6
by Matthieu Baerts
I just checked the compilation without CONFIG_IPV6 and fixed what GCC was
complaining about. Nothing fancy.
Matthieu Baerts (3):
mptcp: fix compilation warning without IPV6
mptcp: fix compilation error without IPV6
mptcp:basic: check for v6 family
net/mptcp/basic.c | 2 +-
net/mptcp/options.c | 2 ++
net/mptcp/pm.c | 4 +++-
3 files changed, 6 insertions(+), 2 deletions(-)
--
2.20.1
2 years, 8 months
[RFC 0/6] mptcp: sendmsg scheduler skeleton
by Florian Westphal
This patch series adds minimal support for multiple subflows on
the writer side.
Instead of always picking the first ssk (and reliance on tcp to block
the mptcp sendmsg in case the subflows write buffer is full),
grab a suitable/writeable subflow from the list.
The main point here isn't the 'chose the right subflow' strategy,
we will likely want to adapt/change it later -- but the handling
of the 'no suitable subflows present' case.
See patch #6 for details on how userspace is blocked/unblocked.
Patch #2 is silly but needed until subflows are expected to close
the connection on the mptcp level rather than relying on tcp fin.
Paolo, please also have a closr look at patch 5 since it impacts the
retransmission strategy: no more mptcp-level retransmissions if
ssk still has skbs in its write queue.
At this time, there is a theoretical problem remaining:
1. userspace calls poll(POLLOUT), one subflow available -> POLLOUT revent
2. retransmission kicks in and fills subflow
3. userspace calls write(), which might block even though poll() said
otherwise
This is unlikely because most programs will not mix blocking IO with
event driven (select/poll/epoll) models.
But still, its something to keep in mind -- might be enough to
prevent retrans from using up the entire write queue for instance.
include/net/tcp.h | 1
net/ipv4/tcp.c | 12 ++-
net/mptcp/protocol.c | 154 +++++++++++++++++++++++++++++++++++++++++++++++----
net/mptcp/protocol.h | 2
net/mptcp/subflow.c | 46 +++++++++++++--
5 files changed, 197 insertions(+), 18 deletions(-)
2 years, 8 months
[PATCH 0/2] mptcp: fix compilation warnings with i386
by Matthieu Baerts
To be squashed in two different commits.
Matthieu Baerts (2):
mptcp: fix compilation warning with i386
mptcp: fix compilation warning with i386
net/mptcp/protocol.c | 2 +-
net/mptcp/subflow.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--
2.20.1
2 years, 8 months
[PATCH] mptcp: fix warnings reported by checkpatch
by Matthieu Baerts
WARNING: line over 80 characters
#233: FILE: net/mptcp/options.c:47:
+ * negotiated, the receiver MUST close the subflow with a RST as it is
Signed-off-by: Matthieu Baerts <matthieu.baerts(a)tessares.net>
---
Notes:
to be squashed in "mptcp: Handle MPTCP TCP options"
net/mptcp/options.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index cee4280647fe..adf65d3ff27b 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -44,8 +44,8 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
*
* Section 3.3.0:
* "If a checksum is not present when its use has been
- * negotiated, the receiver MUST close the subflow with a RST as it is
- * considered broken."
+ * negotiated, the receiver MUST close the subflow with a RST as
+ * it is considered broken."
*
* We don't implement DSS checksum - fall back to TCP.
*/
--
2.20.1
2 years, 8 months