[MPTCP][PATCH v2 mptcp-next 0/5] add tracepoints
by Geliang Tang
v2:
- add two new patches.
- update the patch set as Paolo suggested.
This patchset addressed issues 131, replace some/most pr_debug with trace
events. As Paolo suggested, we should add the tracepoints at "the packet
scheduler and the mapping status" first.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/131
Geliang Tang (5):
mptcp: export mptcp_subflow_active
mptcp: add tracepoint in mptcp_subflow_get_send
mptcp: add tracepoint in get_mapping_status
mptcp: add tracepoint in ack_update_msk
mptcp: add tracepoint in subflow_check_data_avail
include/trace/events/mptcp.h | 151 +++++++++++++++++++++++++++++++++++
net/mptcp/options.c | 3 +
net/mptcp/protocol.c | 6 +-
net/mptcp/protocol.h | 1 +
net/mptcp/subflow.c | 10 +--
5 files changed, 164 insertions(+), 7 deletions(-)
create mode 100644 include/trace/events/mptcp.h
--
2.30.2
1 year, 1 month
[MPTCP][PATCH v2 mptcp-next 00/16] data checksum support
by Geliang Tang
v2:
- add the checksum support for MP_CAPABLE + data too.
- validate the data that has been split in different skbs too.
- add more patches.
- tag: export/20210329T052816
- patch 14 ("mptcp: add trace event for data checksum") depends on the
"add tracepoints" series.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/134
Geliang Tang (16):
mptcp: add csum_enabled in mptcp_sock
mptcp: generate the data checksum
mptcp: add csum_reqd in mptcp_out_options
mptcp: send out checksum for MP_CAPABLE with data
mptcp: send out checksum for DSS
mptcp: add csum_reqd in mptcp_options_received
mptcp: add sk parameter for mptcp_parse_option
mptcp: receive checksum for MP_CAPABLE with data
mptcp: receive checksum for DSS
mptcp: validate the data checksum
mptcp: add the mib for data checksum
mptcp: add a new sysctl checksum_enabled
mptcp: add mptcpi_csum_enabled in mptcp_info
mptcp: add trace event for data checksum
selftests: mptcp: enable checksum in mptcp_connect.sh
selftests: mptcp: enable checksum in mptcp_join.sh
Documentation/networking/mptcp-sysctl.rst | 8 ++
include/net/mptcp.h | 4 +-
include/trace/events/mptcp.h | 38 ++++++
include/uapi/linux/mptcp.h | 1 +
net/mptcp/ctrl.c | 14 +++
net/mptcp/mib.c | 1 +
net/mptcp/mib.h | 1 +
net/mptcp/mptcp_diag.c | 1 +
net/mptcp/options.c | 112 +++++++++++++-----
net/mptcp/protocol.c | 65 ++++++++++
net/mptcp/protocol.h | 20 +++-
net/mptcp/subflow.c | 20 ++--
.../selftests/net/mptcp/mptcp_connect.sh | 13 +-
.../testing/selftests/net/mptcp/mptcp_join.sh | 40 ++++++-
14 files changed, 294 insertions(+), 44 deletions(-)
--
2.30.2
1 year, 1 month
Re: [PATCH net-next] mptcp: drop all sub-options except ADD_ADDR when the echo bit is set
by Mat Martineau
On Fri, 26 Mar 2021, Davide Caratti wrote:
> Current Linux carries echo-ed ADD_ADDR over pure TCP ACKs, so there is no
> need to add a DSS element that would fit only ADD_ADDR with IPv4 address.
> Drop the DSS from echo-ed ADD_ADDR, regardless of the IP version.
>
> Signed-off-by: Davide Caratti <dcaratti(a)redhat.com>
> ---
> net/mptcp/options.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
Thanks Davide, looks good to me. This didn't land in patchwork without the
mptcp(a)lists.01.org cc, but we should have mptcp(a)lists.linux.dev routed in
to patchwork by Monday (Australia time).
Reviewed-by: Mat Martineau <mathew.j.martineau(a)linux.intel.com>
>
> diff --git a/net/mptcp/options.c b/net/mptcp/options.c
> index c7eb61d0564c..d51c3ad54d9a 100644
> --- a/net/mptcp/options.c
> +++ b/net/mptcp/options.c
> @@ -624,7 +624,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
> int len;
>
> if ((mptcp_pm_should_add_signal_ipv6(msk) ||
> - mptcp_pm_should_add_signal_port(msk)) &&
> + mptcp_pm_should_add_signal_port(msk) ||
> + mptcp_pm_should_add_signal_echo(msk)) &&
> skb && skb_is_tcp_pure_ack(skb)) {
> pr_debug("drop other suboptions");
> opts->suboptions = 0;
> --
> 2.30.2
--
Mat Martineau
Intel
1 year, 1 month
[RFC PATCH mptcp-next v2 0/8] initial SOL_SOCKET support
by Florian Westphal
This patch set improves support for several SOL_SOCKET tuneables,
addressing comments received for v1 patch set.
First patch adds skeleton synchronization functions to copy mptcp socket
settings to a subflow socket.
Notable changes:
In patch 1, work queue is only used when caller holds a spinlock that
prevents calls to sleepable functions such as lock_sock().
TCP_CONGESTION is now applied to all subflows.
TCP_INFO retrieves info from the first subflow.
It seems better to add MPTCP_INFO from out-of-tree patch set
in a future change.
I've not changed SO_LINGER either but I think doing a FASTCLOSE
is the right thing to do when linger time is 0.
Sending this now so there is a bit of review time before thursdays
meeting.
Florian Westphal (8):
mptcp: add skeleton to sync msk socket options to subflows
mptcp: setsockopt: handle SO_KEEPALIVE and SO_PRIORITY
mptcp: setsockopt: handle receive/send buffer and device bind
mptcp: setsockopt: support SO_LINGER
mptcp: setsockopt: add SO_MARK support
mptcp: setsockopt: add SO_INCOMING_CPU
mptcp: setsockopt: SO_DEBUG and no-op options
mptcp: sockopt: add TCP_CONGESTION and TCP_INFO
net/mptcp/protocol.c | 54 +++++--
net/mptcp/protocol.h | 11 ++
net/mptcp/sockopt.c | 362 +++++++++++++++++++++++++++++++++++++++++++
net/mptcp/subflow.c | 1 +
4 files changed, 419 insertions(+), 9 deletions(-)
--
2.26.3
1 year, 1 month
[RFC PATCH net-next] mptcp: drop all sub-options except ADD_ADDR when the echo bit is set
by Davide Caratti
Current Linux carries echo-ed ADD_ADDR over pure TCP ACKs, so there is no
need to add a DSS element that would fit only ADD_ADDR with IPv4 address.
Drop the DSS from echo-ed ADD_ADDR, regardless of the IP version.
Signed-off-by: Davide Caratti <dcaratti(a)redhat.com>
---
Notes:
hello,
maybe this is a known issue, maybe not. In case it is, TLDR:
while working on packetdrill with REMOVE_ADDR, I noticed that the following
inbound packet:
+0.0 < . 1:1(0) ack 101 win 256 <nop, nop, TS val 705 ecr 305, add_address addr[saddr] hmac=auto>
had wrong length TCPOLEN_ADD_ADDR_V4_HMAC (18 Byte) in the IPv6 case, so the
address carried in the option was something that probably can't be used by the
client, because it doesn't belong to the same address family of the source
address used by the (client) kernel socket.
So, I wrote a fix for packetdrill and now it selects the correct ADD_ADDR length
both for IPv4 and IPv6 inbound packets.
However, matching the subsequent outbound echo-ed ADD_ADDR became problematic:
the IPv4 echoed ADD_ADDR has a trailing DSS option that's not existent in the
IPv6 equivalent of the test (because it does not fit the max TCP option space).
Is there a reason for not saving the DSS option space in the IPv4 case? If not,
can we harmonize at least echo-ed IPv4 and IPv6 ADD_ADDRs?
any feedback appreciated, thank you in advance!
davide
net/mptcp/options.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index c7eb61d0564c..d51c3ad54d9a 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -624,7 +624,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
int len;
if ((mptcp_pm_should_add_signal_ipv6(msk) ||
- mptcp_pm_should_add_signal_port(msk)) &&
+ mptcp_pm_should_add_signal_port(msk) ||
+ mptcp_pm_should_add_signal_echo(msk)) &&
skb && skb_is_tcp_pure_ack(skb)) {
pr_debug("drop other suboptions");
opts->suboptions = 0;
--
2.30.2
1 year, 1 month
[MPTCP][PATCH mptcp-next 0/6] DSS checksum support
by Geliang Tang
apply: export/20210320T065116 + "refactor mptcp_addr_info and cleanups"
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/134
Geliang Tang (6):
mptcp: add a new sysctl checksum_enabled
mptcp: add csum_enabled in mptcp_out_options
mptcp: add the csum_reqd fields
mptcp: add the DSS checksum sending
mptcp: add the DSS checksum receiving
mptcp: add trace event for DSS checksum
Documentation/networking/mptcp-sysctl.rst | 8 +++
include/net/mptcp.h | 4 +-
include/trace/events/mptcp.h | 51 +++++++++++++++
net/mptcp/ctrl.c | 14 +++++
net/mptcp/options.c | 76 ++++++++++++++++++++---
net/mptcp/protocol.c | 4 ++
net/mptcp/protocol.h | 14 ++++-
net/mptcp/subflow.c | 46 ++++++++++++++
8 files changed, 205 insertions(+), 12 deletions(-)
create mode 100644 include/trace/events/mptcp.h
--
2.30.2
1 year, 1 month
[PATCH mptcp-next 1/3] Squash to "mptcp: use mptcp_addr_info in mptcp_out_options"
by Matthieu Baerts
Fix issues reported by sparse because we were doing non explicit casting
from __be16 to u16.
net/mptcp/options.c:662:72: warning: incorrect type in argument 5 (different base types)
net/mptcp/options.c:662:72: expected unsigned short [usertype] port
net/mptcp/options.c:662:72: got restricted __be16 [usertype] port
net/mptcp/options.c:673:73: warning: incorrect type in argument 5 (different base types)
net/mptcp/options.c:673:73: expected unsigned short [usertype] port
net/mptcp/options.c:673:73: got restricted __be16 [usertype] port
net/mptcp/options.c:1244:62: warning: incorrect type in argument 1 (different base types)
net/mptcp/options.c:1244:62: expected unsigned short [usertype] val
net/mptcp/options.c:1244:62: got restricted __be16 [usertype] port
net/mptcp/options.c:1253:62: warning: restricted __be16 degrades to integer
Before the mentioned commit, we were using port in u16 in
mptcp_out_options, everything was OK.
Signed-off-by: Matthieu Baerts <matthieu.baerts(a)tessares.net>
---
net/mptcp/options.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 7e01f44ed885..03019a6d5059 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -659,7 +659,7 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
msk->remote_key,
opts->addr.id,
&opts->addr.addr,
- opts->addr.port);
+ be16_to_cpu(opts->addr.port));
}
}
#if IS_ENABLED(CONFIG_MPTCP_IPV6)
@@ -670,7 +670,7 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
msk->remote_key,
opts->addr.id,
&opts->addr.addr6,
- opts->addr.port);
+ be16_to_cpu(opts->addr.port));
}
}
#endif
@@ -1238,10 +1238,12 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp,
ptr += 2;
}
} else {
+ u16 port = be16_to_cpu(opts->addr.port);
+
if (opts->ahmac) {
u8 *bptr = (u8 *)ptr;
- put_unaligned_be16(opts->addr.port, bptr);
+ put_unaligned_be16(port, bptr);
bptr += 2;
put_unaligned_be64(opts->ahmac, bptr);
bptr += 8;
@@ -1250,7 +1252,7 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp,
ptr += 3;
} else {
- put_unaligned_be32(opts->addr.port << 16 |
+ put_unaligned_be32(port << 16 |
TCPOPT_NOP << 8 |
TCPOPT_NOP, ptr);
ptr += 1;
--
2.30.2
1 year, 1 month
[MPTCP][PATCH mptcp-next 0/3] add tracepoints
by Geliang Tang
This patchset addressed issues 131, replace some/most pr_debug with trace
events. As Paolo suggested, we should add the tracepoints at "the packet
scheduler and the mapping status" first.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/131
Geliang Tang (3):
mptcp: add tracepoint for mptcp_subflow_get_send
mptcp: add tracepoint for get_mapping_status
mptcp: add tracepoint for subflow_check_data_avail
include/trace/events/mptcp.h | 122 +++++++++++++++++++++++++++++++++++
net/mptcp/protocol.c | 9 ++-
net/mptcp/subflow.c | 15 ++---
3 files changed, 132 insertions(+), 14 deletions(-)
create mode 100644 include/trace/events/mptcp.h
--
2.29.2
1 year, 1 month
[MPTCP][PATCH v3 mptcp-next 0/7] refactor mptcp_addr_info and cleanups
by Geliang Tang
v3:
- Add new parameters flags and ifindex to __mptcp_subflow_connect.
- Drop the patch "mptcp: drop unnecessary CONFIG_MPTCP_IPV6" in v2.
- Add a new selftest patch.
v2:
- Patch 1, avoid changing __mptcp_subflow_connect's parameter, use
container_of to get the entry.
- No change in patches 2-7.
The patch set refactored struct mptcp_addr_info, and use it in both
mptcp_out_options and mptcp_out_options. Then drop the duplicate code
and do cleanups.
Geliang Tang (7):
mptcp: move flags and ifindex out of mptcp_addr_info
mptcp: use mptcp_addr_info in mptcp_out_options
mptcp: drop OPTION_MPTCP_ADD_ADDR6
mptcp: use mptcp_addr_info in mptcp_options_received
mptcp: drop MPTCP_ADDR_IPVERSION_4/6
mptcp: unify add_addr(6)_generate_hmac
selftests: mptcp: add the net device name testcase
include/net/mptcp.h | 21 ++-
net/mptcp/options.c | 169 ++++++------------
net/mptcp/pm_netlink.c | 41 +++--
net/mptcp/protocol.h | 38 +---
net/mptcp/subflow.c | 7 +-
.../testing/selftests/net/mptcp/mptcp_join.sh | 8 +
6 files changed, 110 insertions(+), 174 deletions(-)
--
2.30.2
1 year, 1 month