From e952d9ff9567e9b5e7f1e190cab8a5631b4e5ea4 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 22 Jun 2019 19:12:32 +0200 Subject: [PATCH] Update MPTCP --- .../generic/hack-4.14/690-mptcp_v0.94.patch | 596 +++++++-------- .../generic/hack-4.19/690-mptcp_v0.95.patch | 717 +++++++++--------- 2 files changed, 657 insertions(+), 656 deletions(-) diff --git a/root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch b/root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch index 11991eee..1ed38dfd 100644 --- a/root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch +++ b/root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch @@ -1,7 +1,7 @@ -diff -aurN linux-4.14.123/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.94/Documentation/networking/ip-sysctl.txt ---- linux-4.14.123/Documentation/networking/ip-sysctl.txt 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/Documentation/networking/ip-sysctl.txt 2019-06-04 18:49:08.000000000 +0200 -@@ -726,6 +726,18 @@ +diff -aurN linux-4.14.127/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.94/Documentation/networking/ip-sysctl.txt +--- linux-4.14.127/Documentation/networking/ip-sysctl.txt 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/Documentation/networking/ip-sysctl.txt 2019-06-17 23:59:30.000000000 +0200 +@@ -734,6 +734,18 @@ in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) Default: 100 @@ -20,9 +20,9 @@ diff -aurN linux-4.14.123/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0. UDP variables: udp_l3mdev_accept - BOOLEAN -diff -aurN linux-4.14.123/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.94/drivers/infiniband/hw/cxgb4/cm.c ---- linux-4.14.123/drivers/infiniband/hw/cxgb4/cm.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/drivers/infiniband/hw/cxgb4/cm.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.94/drivers/infiniband/hw/cxgb4/cm.c +--- linux-4.14.127/drivers/infiniband/hw/cxgb4/cm.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/drivers/infiniband/hw/cxgb4/cm.c 2019-06-17 23:59:30.000000000 +0200 @@ -3755,7 +3755,7 @@ */ memset(&tmp_opt, 0, sizeof(tmp_opt)); @@ -32,9 +32,9 @@ diff -aurN linux-4.14.123/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.94/dri req = __skb_push(skb, sizeof(*req)); memset(req, 0, sizeof(*req)); -diff -aurN linux-4.14.123/include/linux/skbuff.h mptcp-mptcp_v0.94/include/linux/skbuff.h ---- linux-4.14.123/include/linux/skbuff.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/linux/skbuff.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/linux/skbuff.h mptcp-mptcp_v0.94/include/linux/skbuff.h +--- linux-4.14.127/include/linux/skbuff.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/linux/skbuff.h 2019-06-17 23:59:30.000000000 +0200 @@ -690,7 +690,7 @@ * want to keep them across layers you have to do a skb_clone() * first. This is owned by whoever has the skb queued ATM. @@ -44,9 +44,9 @@ diff -aurN linux-4.14.123/include/linux/skbuff.h mptcp-mptcp_v0.94/include/linux unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); -diff -aurN linux-4.14.123/include/linux/tcp.h mptcp-mptcp_v0.94/include/linux/tcp.h ---- linux-4.14.123/include/linux/tcp.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/linux/tcp.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/linux/tcp.h mptcp-mptcp_v0.94/include/linux/tcp.h +--- linux-4.14.127/include/linux/tcp.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/linux/tcp.h 2019-06-17 23:59:30.000000000 +0200 @@ -58,7 +58,7 @@ /* TCP Fast Open */ #define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */ @@ -203,9 +203,9 @@ diff -aurN linux-4.14.123/include/linux/tcp.h mptcp-mptcp_v0.94/include/linux/tc }; static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) -diff -aurN linux-4.14.123/include/net/inet_common.h mptcp-mptcp_v0.94/include/net/inet_common.h ---- linux-4.14.123/include/net/inet_common.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/inet_common.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/inet_common.h mptcp-mptcp_v0.94/include/net/inet_common.h +--- linux-4.14.127/include/net/inet_common.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/inet_common.h 2019-06-17 23:59:30.000000000 +0200 @@ -2,6 +2,8 @@ #ifndef _INET_COMMON_H #define _INET_COMMON_H @@ -224,9 +224,9 @@ diff -aurN linux-4.14.123/include/net/inet_common.h mptcp-mptcp_v0.94/include/ne int inet_release(struct socket *sock); int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags); -diff -aurN linux-4.14.123/include/net/inet_connection_sock.h mptcp-mptcp_v0.94/include/net/inet_connection_sock.h ---- linux-4.14.123/include/net/inet_connection_sock.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/inet_connection_sock.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/inet_connection_sock.h mptcp-mptcp_v0.94/include/net/inet_connection_sock.h +--- linux-4.14.127/include/net/inet_connection_sock.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/inet_connection_sock.h 2019-06-17 23:59:30.000000000 +0200 @@ -30,6 +30,7 @@ struct inet_bind_bucket; @@ -235,9 +235,9 @@ diff -aurN linux-4.14.123/include/net/inet_connection_sock.h mptcp-mptcp_v0.94/i /* * Pointers to address related TCP functions -diff -aurN linux-4.14.123/include/net/inet_sock.h mptcp-mptcp_v0.94/include/net/inet_sock.h ---- linux-4.14.123/include/net/inet_sock.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/inet_sock.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/inet_sock.h mptcp-mptcp_v0.94/include/net/inet_sock.h +--- linux-4.14.127/include/net/inet_sock.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/inet_sock.h 2019-06-17 23:59:30.000000000 +0200 @@ -90,7 +90,9 @@ wscale_ok : 1, ecn_ok : 1, @@ -249,9 +249,9 @@ diff -aurN linux-4.14.123/include/net/inet_sock.h mptcp-mptcp_v0.94/include/net/ u32 ir_mark; union { struct ip_options_rcu __rcu *ireq_opt; -diff -aurN linux-4.14.123/include/net/mptcp.h mptcp-mptcp_v0.94/include/net/mptcp.h ---- linux-4.14.123/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/include/net/mptcp.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/mptcp.h mptcp-mptcp_v0.94/include/net/mptcp.h +--- linux-4.14.127/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/include/net/mptcp.h 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,1521 @@ +/* + * MPTCP implementation @@ -1774,9 +1774,9 @@ diff -aurN linux-4.14.123/include/net/mptcp.h mptcp-mptcp_v0.94/include/net/mptc +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_H */ -diff -aurN linux-4.14.123/include/net/mptcp_v4.h mptcp-mptcp_v0.94/include/net/mptcp_v4.h ---- linux-4.14.123/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/include/net/mptcp_v4.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/mptcp_v4.h mptcp-mptcp_v0.94/include/net/mptcp_v4.h +--- linux-4.14.127/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/include/net/mptcp_v4.h 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,68 @@ +/* + * MPTCP implementation @@ -1846,9 +1846,9 @@ diff -aurN linux-4.14.123/include/net/mptcp_v4.h mptcp-mptcp_v0.94/include/net/m +#endif /* CONFIG_MPTCP */ + +#endif /* MPTCP_V4_H_ */ -diff -aurN linux-4.14.123/include/net/mptcp_v6.h mptcp-mptcp_v0.94/include/net/mptcp_v6.h ---- linux-4.14.123/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/include/net/mptcp_v6.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/mptcp_v6.h mptcp-mptcp_v0.94/include/net/mptcp_v6.h +--- linux-4.14.127/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/include/net/mptcp_v6.h 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,69 @@ +/* + * MPTCP implementation @@ -1919,9 +1919,9 @@ diff -aurN linux-4.14.123/include/net/mptcp_v6.h mptcp-mptcp_v0.94/include/net/m +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_V6_H */ -diff -aurN linux-4.14.123/include/net/net_namespace.h mptcp-mptcp_v0.94/include/net/net_namespace.h ---- linux-4.14.123/include/net/net_namespace.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/net_namespace.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/net_namespace.h mptcp-mptcp_v0.94/include/net/net_namespace.h +--- linux-4.14.127/include/net/net_namespace.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/net_namespace.h 2019-06-17 23:59:30.000000000 +0200 @@ -18,6 +18,7 @@ #include #include @@ -1940,9 +1940,9 @@ diff -aurN linux-4.14.123/include/net/net_namespace.h mptcp-mptcp_v0.94/include/ #if IS_ENABLED(CONFIG_IEEE802154_6LOWPAN) struct netns_ieee802154_lowpan ieee802154_lowpan; #endif -diff -aurN linux-4.14.123/include/net/netns/mptcp.h mptcp-mptcp_v0.94/include/net/netns/mptcp.h ---- linux-4.14.123/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/include/net/netns/mptcp.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/netns/mptcp.h mptcp-mptcp_v0.94/include/net/netns/mptcp.h +--- linux-4.14.127/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/include/net/netns/mptcp.h 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,52 @@ +/* + * MPTCP implementation - MPTCP namespace @@ -1996,9 +1996,9 @@ diff -aurN linux-4.14.123/include/net/netns/mptcp.h mptcp-mptcp_v0.94/include/ne +}; + +#endif /* __NETNS_MPTCP_H__ */ -diff -aurN linux-4.14.123/include/net/snmp.h mptcp-mptcp_v0.94/include/net/snmp.h ---- linux-4.14.123/include/net/snmp.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/snmp.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/snmp.h mptcp-mptcp_v0.94/include/net/snmp.h +--- linux-4.14.127/include/net/snmp.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/snmp.h 2019-06-17 23:59:30.000000000 +0200 @@ -91,7 +91,6 @@ atomic_long_t mibs[ICMP6MSG_MIB_MAX]; }; @@ -2007,9 +2007,9 @@ diff -aurN linux-4.14.123/include/net/snmp.h mptcp-mptcp_v0.94/include/net/snmp. /* TCP */ #define TCP_MIB_MAX __TCP_MIB_MAX struct tcp_mib { -diff -aurN linux-4.14.123/include/net/sock.h mptcp-mptcp_v0.94/include/net/sock.h ---- linux-4.14.123/include/net/sock.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/sock.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/sock.h mptcp-mptcp_v0.94/include/net/sock.h +--- linux-4.14.127/include/net/sock.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/sock.h 2019-06-17 23:59:30.000000000 +0200 @@ -781,6 +781,7 @@ SOCK_FILTER_LOCKED, /* Filter cannot be changed anymore */ SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ @@ -2036,10 +2036,10 @@ diff -aurN linux-4.14.123/include/net/sock.h mptcp-mptcp_v0.94/include/net/sock. } static inline bool sock_owned_by_user(const struct sock *sk) -diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h ---- linux-4.14.123/include/net/tcp.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/tcp.h 2019-06-04 18:49:08.000000000 +0200 -@@ -185,6 +185,7 @@ +diff -aurN linux-4.14.127/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h +--- linux-4.14.127/include/net/tcp.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/tcp.h 2019-06-17 23:59:30.000000000 +0200 +@@ -187,6 +187,7 @@ #define TCPOPT_SACK 5 /* SACK Block */ #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ #define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */ @@ -2047,7 +2047,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h #define TCPOPT_FASTOPEN 34 /* Fast open (RFC7413) */ #define TCPOPT_EXP 254 /* Experimental */ /* Magic number to be after the option value for sharing TCP -@@ -238,6 +239,30 @@ +@@ -240,6 +241,30 @@ */ #define TFO_SERVER_WO_SOCKOPT1 0x400 @@ -2078,7 +2078,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h /* sysctl variables for tcp */ extern int sysctl_tcp_fastopen; -@@ -339,6 +364,96 @@ +@@ -341,6 +366,96 @@ #define TCP_DEC_STATS(net, field) SNMP_DEC_STATS((net)->mib.tcp_statistics, field) #define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val) @@ -2175,7 +2175,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h void tcp_tasklet_init(void); void tcp_v4_err(struct sk_buff *skb, u32); -@@ -434,7 +549,9 @@ +@@ -436,7 +551,9 @@ int flags, int *addr_len); void tcp_parse_options(const struct net *net, const struct sk_buff *skb, struct tcp_options_received *opt_rx, @@ -2186,7 +2186,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h const u8 *tcp_parse_md5sig_option(const struct tcphdr *th); /* -@@ -443,6 +560,7 @@ +@@ -445,6 +562,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); void tcp_v4_mtu_reduced(struct sock *sk); @@ -2194,7 +2194,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h void tcp_req_err(struct sock *sk, u32 seq, bool abort); int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb); struct sock *tcp_create_openreq_child(const struct sock *sk, -@@ -523,7 +641,8 @@ +@@ -525,7 +643,8 @@ u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2204,7 +2204,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h u64 cookie_init_timestamp(struct request_sock *req); bool cookie_timestamp_decode(const struct net *net, struct tcp_options_received *opt); -@@ -537,7 +656,8 @@ +@@ -539,7 +658,8 @@ u32 __cookie_v6_init_sequence(const struct ipv6hdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2214,7 +2214,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h #endif /* tcp_output.c */ -@@ -569,10 +689,17 @@ +@@ -571,10 +691,17 @@ void tcp_skb_collapse_tstamp(struct sk_buff *skb, const struct sk_buff *next_skb); @@ -2232,7 +2232,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h void tcp_skb_mark_lost_uncond_verify(struct tcp_sock *tp, struct sk_buff *skb); void tcp_fin(struct sock *sk); -@@ -611,7 +738,7 @@ +@@ -613,7 +740,7 @@ } /* tcp.c */ @@ -2241,7 +2241,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h /* Read 'sendfile()'-style from a TCP socket */ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc, -@@ -805,6 +932,12 @@ +@@ -807,6 +934,12 @@ */ ktime_t swtstamp; }; @@ -2254,7 +2254,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ __u8 sacked; /* State flags for SACK/FACK. */ -@@ -823,6 +956,14 @@ +@@ -825,6 +958,14 @@ has_rxtstamp:1, /* SKB has a RX timestamp */ unused:5; __u32 ack_seq; /* Sequence number ACK'd */ @@ -2269,7 +2269,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h union { struct { /* There is space for up to 24 bytes */ -@@ -1324,7 +1465,8 @@ +@@ -1326,7 +1467,8 @@ /* Determine a window scaling and initial window to offer. */ void tcp_select_initial_window(int __space, __u32 mss, __u32 *rcv_wnd, __u32 *window_clamp, int wscale_ok, @@ -2279,7 +2279,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h static inline int tcp_win_from_space(int space) { -@@ -1335,6 +1477,19 @@ +@@ -1337,6 +1479,19 @@ space - (space>>tcp_adv_win_scale); } @@ -2299,7 +2299,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h /* Note: caller must be prepared to deal with negative returns */ static inline int tcp_space(const struct sock *sk) { -@@ -1611,19 +1766,7 @@ +@@ -1613,19 +1768,7 @@ } /* write queue abstraction */ @@ -2320,7 +2320,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h static inline struct sk_buff *tcp_write_queue_head(const struct sock *sk) { -@@ -1886,6 +2029,30 @@ +@@ -1888,6 +2031,30 @@ #endif }; @@ -2351,7 +2351,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h struct tcp_request_sock_ops { u16 mss_clamp; #ifdef CONFIG_TCP_MD5SIG -@@ -1896,12 +2063,13 @@ +@@ -1898,12 +2065,13 @@ const struct sock *sk, const struct sk_buff *skb); #endif @@ -2370,7 +2370,7 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h #endif struct dst_entry *(*route_req)(const struct sock *sk, struct flowi *fl, const struct request_sock *req); -@@ -1915,15 +2083,17 @@ +@@ -1917,15 +2085,17 @@ #ifdef CONFIG_SYN_COOKIES static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops, @@ -2389,9 +2389,9 @@ diff -aurN linux-4.14.123/include/net/tcp.h mptcp-mptcp_v0.94/include/net/tcp.h const struct sock *sk, struct sk_buff *skb, __u16 *mss) { -diff -aurN linux-4.14.123/include/net/tcp_states.h mptcp-mptcp_v0.94/include/net/tcp_states.h ---- linux-4.14.123/include/net/tcp_states.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/tcp_states.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/tcp_states.h mptcp-mptcp_v0.94/include/net/tcp_states.h +--- linux-4.14.127/include/net/tcp_states.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/tcp_states.h 2019-06-17 23:59:30.000000000 +0200 @@ -26,6 +26,7 @@ TCP_LISTEN, TCP_CLOSING, /* Now a valid state */ @@ -2408,9 +2408,9 @@ diff -aurN linux-4.14.123/include/net/tcp_states.h mptcp-mptcp_v0.94/include/net }; #endif /* _LINUX_TCP_STATES_H */ -diff -aurN linux-4.14.123/include/net/transp_v6.h mptcp-mptcp_v0.94/include/net/transp_v6.h ---- linux-4.14.123/include/net/transp_v6.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/net/transp_v6.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/net/transp_v6.h mptcp-mptcp_v0.94/include/net/transp_v6.h +--- linux-4.14.127/include/net/transp_v6.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/net/transp_v6.h 2019-06-17 23:59:30.000000000 +0200 @@ -59,6 +59,8 @@ /* address family specific functions */ @@ -2420,9 +2420,9 @@ diff -aurN linux-4.14.123/include/net/transp_v6.h mptcp-mptcp_v0.94/include/net/ void inet6_destroy_sock(struct sock *sk); -diff -aurN linux-4.14.123/include/uapi/linux/if.h mptcp-mptcp_v0.94/include/uapi/linux/if.h ---- linux-4.14.123/include/uapi/linux/if.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/uapi/linux/if.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/uapi/linux/if.h mptcp-mptcp_v0.94/include/uapi/linux/if.h +--- linux-4.14.127/include/uapi/linux/if.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/uapi/linux/if.h 2019-06-17 23:59:30.000000000 +0200 @@ -132,6 +132,9 @@ #define IFF_ECHO IFF_ECHO #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ @@ -2433,9 +2433,9 @@ diff -aurN linux-4.14.123/include/uapi/linux/if.h mptcp-mptcp_v0.94/include/uapi #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) -diff -aurN linux-4.14.123/include/uapi/linux/tcp.h mptcp-mptcp_v0.94/include/uapi/linux/tcp.h ---- linux-4.14.123/include/uapi/linux/tcp.h 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/include/uapi/linux/tcp.h 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/include/uapi/linux/tcp.h mptcp-mptcp_v0.94/include/uapi/linux/tcp.h +--- linux-4.14.127/include/uapi/linux/tcp.h 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/include/uapi/linux/tcp.h 2019-06-17 23:59:30.000000000 +0200 @@ -18,9 +18,15 @@ #ifndef _UAPI_LINUX_TCP_H #define _UAPI_LINUX_TCP_H @@ -2520,9 +2520,9 @@ diff -aurN linux-4.14.123/include/uapi/linux/tcp.h mptcp-mptcp_v0.94/include/uap /* for TCP_MD5SIG socket option */ #define TCP_MD5SIG_MAXKEYLEN 80 -diff -aurN linux-4.14.123/kernel/rcu/Kconfig.debug mptcp-mptcp_v0.94/kernel/rcu/Kconfig.debug ---- linux-4.14.123/kernel/rcu/Kconfig.debug 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/kernel/rcu/Kconfig.debug 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/kernel/rcu/Kconfig.debug mptcp-mptcp_v0.94/kernel/rcu/Kconfig.debug +--- linux-4.14.127/kernel/rcu/Kconfig.debug 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/kernel/rcu/Kconfig.debug 2019-06-17 23:59:30.000000000 +0200 @@ -4,9 +4,6 @@ menu "RCU Debugging" @@ -2533,9 +2533,9 @@ diff -aurN linux-4.14.123/kernel/rcu/Kconfig.debug mptcp-mptcp_v0.94/kernel/rcu/ config TORTURE_TEST tristate default n -diff -aurN linux-4.14.123/net/core/dev.c mptcp-mptcp_v0.94/net/core/dev.c ---- linux-4.14.123/net/core/dev.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/core/dev.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/core/dev.c mptcp-mptcp_v0.94/net/core/dev.c +--- linux-4.14.127/net/core/dev.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/core/dev.c 2019-06-17 23:59:30.000000000 +0200 @@ -6769,7 +6769,7 @@ dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | @@ -2545,9 +2545,9 @@ diff -aurN linux-4.14.123/net/core/dev.c mptcp-mptcp_v0.94/net/core/dev.c (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | IFF_ALLMULTI)); -diff -aurN linux-4.14.123/net/core/skbuff.c mptcp-mptcp_v0.94/net/core/skbuff.c ---- linux-4.14.123/net/core/skbuff.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/core/skbuff.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/core/skbuff.c mptcp-mptcp_v0.94/net/core/skbuff.c +--- linux-4.14.127/net/core/skbuff.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/core/skbuff.c 2019-06-17 23:59:30.000000000 +0200 @@ -536,7 +536,7 @@ skb_drop_list(&skb_shinfo(skb)->frag_list); } @@ -2566,9 +2566,9 @@ diff -aurN linux-4.14.123/net/core/skbuff.c mptcp-mptcp_v0.94/net/core/skbuff.c { __copy_skb_header(new, old); -diff -aurN linux-4.14.123/net/core/sock.c mptcp-mptcp_v0.94/net/core/sock.c ---- linux-4.14.123/net/core/sock.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/core/sock.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/core/sock.c mptcp-mptcp_v0.94/net/core/sock.c +--- linux-4.14.127/net/core/sock.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/core/sock.c 2019-06-17 23:59:30.000000000 +0200 @@ -139,6 +139,11 @@ #include @@ -2628,9 +2628,9 @@ diff -aurN linux-4.14.123/net/core/sock.c mptcp-mptcp_v0.94/net/core/sock.c mem_cgroup_sk_alloc(newsk); cgroup_sk_alloc(&newsk->sk_cgrp_data); -diff -aurN linux-4.14.123/net/ipv4/af_inet.c mptcp-mptcp_v0.94/net/ipv4/af_inet.c ---- linux-4.14.123/net/ipv4/af_inet.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/af_inet.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/af_inet.c mptcp-mptcp_v0.94/net/ipv4/af_inet.c +--- linux-4.14.127/net/ipv4/af_inet.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/af_inet.c 2019-06-17 23:59:30.000000000 +0200 @@ -104,6 +104,7 @@ #include #include @@ -2693,9 +2693,9 @@ diff -aurN linux-4.14.123/net/ipv4/af_inet.c mptcp-mptcp_v0.94/net/ipv4/af_inet. /* Setup TCP slab cache for open requests. */ tcp_init(); -diff -aurN linux-4.14.123/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.94/net/ipv4/inet_connection_sock.c ---- linux-4.14.123/net/ipv4/inet_connection_sock.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/inet_connection_sock.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.94/net/ipv4/inet_connection_sock.c +--- linux-4.14.127/net/ipv4/inet_connection_sock.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/inet_connection_sock.c 2019-06-17 23:59:30.000000000 +0200 @@ -23,6 +23,7 @@ #include #include @@ -2753,9 +2753,9 @@ diff -aurN linux-4.14.123/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.94/net/ sock_put(child); cond_resched(); -diff -aurN linux-4.14.123/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.94/net/ipv4/ip_sockglue.c ---- linux-4.14.123/net/ipv4/ip_sockglue.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/ip_sockglue.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.94/net/ipv4/ip_sockglue.c +--- linux-4.14.127/net/ipv4/ip_sockglue.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/ip_sockglue.c 2019-06-17 23:59:30.000000000 +0200 @@ -44,6 +44,8 @@ #endif #include @@ -2792,9 +2792,9 @@ diff -aurN linux-4.14.123/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.94/net/ipv4/ip_s } break; case IP_TTL: -diff -aurN linux-4.14.123/net/ipv4/Kconfig mptcp-mptcp_v0.94/net/ipv4/Kconfig ---- linux-4.14.123/net/ipv4/Kconfig 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/Kconfig 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/Kconfig mptcp-mptcp_v0.94/net/ipv4/Kconfig +--- linux-4.14.127/net/ipv4/Kconfig 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/Kconfig 2019-06-17 23:59:30.000000000 +0200 @@ -675,6 +675,38 @@ bufferbloat, policers, or AQM schemes that do not provide a delay signal. It requires the fq ("Fair Queue") pacing packet scheduler. @@ -2864,9 +2864,9 @@ diff -aurN linux-4.14.123/net/ipv4/Kconfig mptcp-mptcp_v0.94/net/ipv4/Kconfig default "reno" if DEFAULT_RENO default "dctcp" if DEFAULT_DCTCP default "cdg" if DEFAULT_CDG -diff -aurN linux-4.14.123/net/ipv4/syncookies.c mptcp-mptcp_v0.94/net/ipv4/syncookies.c ---- linux-4.14.123/net/ipv4/syncookies.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/syncookies.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/syncookies.c mptcp-mptcp_v0.94/net/ipv4/syncookies.c +--- linux-4.14.127/net/ipv4/syncookies.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/syncookies.c 2019-06-17 23:59:30.000000000 +0200 @@ -16,6 +16,8 @@ #include #include @@ -2979,9 +2979,9 @@ diff -aurN linux-4.14.123/net/ipv4/syncookies.c mptcp-mptcp_v0.94/net/ipv4/synco ireq->rcv_wscale = rcv_wscale; ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst); -diff -aurN linux-4.14.123/net/ipv4/tcp.c mptcp-mptcp_v0.94/net/ipv4/tcp.c ---- linux-4.14.123/net/ipv4/tcp.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp.c mptcp-mptcp_v0.94/net/ipv4/tcp.c +--- linux-4.14.127/net/ipv4/tcp.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp.c 2019-06-17 23:59:30.000000000 +0200 @@ -273,6 +273,7 @@ #include @@ -3688,9 +3688,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp.c mptcp-mptcp_v0.94/net/ipv4/tcp.c return 0; } EXPORT_SYMBOL_GPL(tcp_abort); -diff -aurN linux-4.14.123/net/ipv4/tcp_diag.c mptcp-mptcp_v0.94/net/ipv4/tcp_diag.c ---- linux-4.14.123/net/ipv4/tcp_diag.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_diag.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_diag.c mptcp-mptcp_v0.94/net/ipv4/tcp_diag.c +--- linux-4.14.127/net/ipv4/tcp_diag.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_diag.c 2019-06-17 23:59:30.000000000 +0200 @@ -34,7 +34,7 @@ r->idiag_wqueue = tp->write_seq - tp->snd_una; } @@ -3700,9 +3700,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_diag.c mptcp-mptcp_v0.94/net/ipv4/tcp_dia } #ifdef CONFIG_TCP_MD5SIG -diff -aurN linux-4.14.123/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.94/net/ipv4/tcp_fastopen.c ---- linux-4.14.123/net/ipv4/tcp_fastopen.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_fastopen.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.94/net/ipv4/tcp_fastopen.c +--- linux-4.14.127/net/ipv4/tcp_fastopen.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_fastopen.c 2019-06-17 23:59:30.000000000 +0200 @@ -9,6 +9,7 @@ #include #include @@ -3761,9 +3761,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.94/net/ipv4/tcp /* tcp_conn_request() is sending the SYNACK, * and queues the child into listener accept queue. */ -diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_input.c ---- linux-4.14.123/net/ipv4/tcp_input.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_input.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_input.c +--- linux-4.14.127/net/ipv4/tcp_input.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_input.c 2019-06-17 23:59:30.000000000 +0200 @@ -76,6 +76,9 @@ #include #include @@ -3891,7 +3891,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { const struct tcp_sock *tp = tcp_sk(sk); /* Old crap is replaced with new one. 8) -@@ -1411,7 +1413,11 @@ +@@ -1427,7 +1429,11 @@ int len; int in_sack; @@ -3904,7 +3904,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in goto fallback; /* Normally R but no L won't result in plain S */ -@@ -2963,7 +2969,7 @@ +@@ -2979,7 +2985,7 @@ */ tcp_update_rtt_min(sk, ca_rtt_us); tcp_rtt_estimator(sk, seq_rtt_us); @@ -3913,7 +3913,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* RFC6298: only reset backoff on valid RTT measurement. */ inet_csk(sk)->icsk_backoff = 0; -@@ -3031,7 +3037,7 @@ +@@ -3047,7 +3053,7 @@ } /* If we get here, the whole TSO packet has not been acked. */ @@ -3922,7 +3922,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { struct tcp_sock *tp = tcp_sk(sk); u32 packets_acked; -@@ -3154,6 +3160,8 @@ +@@ -3170,6 +3176,8 @@ */ if (likely(!(scb->tcp_flags & TCPHDR_SYN))) { flag |= FLAG_DATA_ACKED; @@ -3931,7 +3931,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in } else { flag |= FLAG_SYN_ACKED; tp->retrans_stamp = 0; -@@ -3266,7 +3274,7 @@ +@@ -3282,7 +3290,7 @@ return flag; } @@ -3940,7 +3940,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { const struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -3336,9 +3344,8 @@ +@@ -3352,9 +3360,8 @@ /* Check that window update is acceptable. * The function assumes that snd_una<=ack<=snd_next. */ @@ -3952,7 +3952,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { return after(ack, tp->snd_una) || after(ack_seq, tp->snd_wl1) || -@@ -3558,7 +3565,7 @@ +@@ -3574,7 +3581,7 @@ } /* This routine deals with incoming acks, but not outgoing ones. */ @@ -3961,7 +3961,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -3665,6 +3672,16 @@ +@@ -3681,6 +3688,16 @@ flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una, &acked, &sack_state); @@ -3978,7 +3978,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (tp->tlp_high_seq) tcp_process_tlp_ack(sk, ack, flag); /* If needed, reset TLP/RTO timer; RACK may later override this. */ -@@ -3743,8 +3760,10 @@ +@@ -3759,8 +3776,10 @@ */ void tcp_parse_options(const struct net *net, const struct sk_buff *skb, @@ -3991,7 +3991,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { const unsigned char *ptr; const struct tcphdr *th = tcp_hdr(skb); -@@ -3828,6 +3847,10 @@ +@@ -3844,6 +3863,10 @@ */ break; #endif @@ -4002,7 +4002,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in case TCPOPT_FASTOPEN: tcp_parse_fastopen_option( opsize - TCPOLEN_FASTOPEN_BASE, -@@ -3892,7 +3915,9 @@ +@@ -3908,7 +3931,9 @@ return true; } @@ -4013,7 +4013,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -4049,6 +4074,11 @@ +@@ -4065,6 +4090,11 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4025,7 +4025,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in inet_csk_schedule_ack(sk); sk->sk_shutdown |= RCV_SHUTDOWN; -@@ -4059,6 +4089,10 @@ +@@ -4075,6 +4105,10 @@ case TCP_ESTABLISHED: /* Move to CLOSE_WAIT */ tcp_set_state(sk, TCP_CLOSE_WAIT); @@ -4036,7 +4036,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in inet_csk(sk)->icsk_ack.pingpong = 1; break; -@@ -4081,9 +4115,16 @@ +@@ -4097,9 +4131,16 @@ tcp_set_state(sk, TCP_CLOSING); break; case TCP_FIN_WAIT2: @@ -4054,7 +4054,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in break; default: /* Only TCP_LISTEN and TCP_CLOSE are left, in these -@@ -4105,6 +4146,10 @@ +@@ -4121,6 +4162,10 @@ if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_state_change(sk); @@ -4065,7 +4065,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Do not send POLL_HUP for half duplex close. */ if (sk->sk_shutdown == SHUTDOWN_MASK || sk->sk_state == TCP_CLOSE) -@@ -4311,6 +4356,9 @@ +@@ -4327,6 +4372,9 @@ *fragstolen = false; @@ -4075,7 +4075,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Its possible this segment overlaps with prior segment in queue */ if (TCP_SKB_CB(from)->seq != TCP_SKB_CB(to)->end_seq) return false; -@@ -4362,7 +4410,7 @@ +@@ -4378,7 +4426,7 @@ /* This one checks to see if we can put data from the * out_of_order queue into the receive_queue. */ @@ -4084,7 +4084,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { struct tcp_sock *tp = tcp_sk(sk); __u32 dsack_high = tp->rcv_nxt; -@@ -4388,7 +4436,14 @@ +@@ -4404,7 +4452,14 @@ if (TCP_SKB_CB(skb)->has_rxtstamp) skb->tstamp = TCP_SKB_CB(skb)->swtstamp; @@ -4100,7 +4100,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in SOCK_DEBUG(sk, "ofo packet was already received\n"); tcp_drop(sk, skb); continue; -@@ -4423,6 +4478,9 @@ +@@ -4439,6 +4494,9 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb, unsigned int size) { @@ -4110,7 +4110,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || !sk_rmem_schedule(sk, skb, size)) { -@@ -4437,7 +4495,7 @@ +@@ -4453,7 +4511,7 @@ return 0; } @@ -4119,7 +4119,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { struct tcp_sock *tp = tcp_sk(sk); struct rb_node **p, *parent; -@@ -4509,7 +4567,8 @@ +@@ -4525,7 +4583,8 @@ continue; } if (before(seq, TCP_SKB_CB(skb1)->end_seq)) { @@ -4129,7 +4129,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* All the bits are present. Drop. */ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFOMERGE); -@@ -4556,6 +4615,11 @@ +@@ -4572,6 +4631,11 @@ end_seq); break; } @@ -4141,7 +4141,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in rb_erase(&skb1->rbnode, &tp->out_of_order_queue); tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq, TCP_SKB_CB(skb1)->end_seq); -@@ -4567,7 +4631,7 @@ +@@ -4583,7 +4647,7 @@ tp->ooo_last_skb = skb; add_sack: @@ -4150,7 +4150,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_sack_new_ofo_skb(sk, seq, end_seq); end: if (skb) { -@@ -4577,8 +4641,8 @@ +@@ -4593,8 +4657,8 @@ } } @@ -4161,7 +4161,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { int eaten; struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue); -@@ -4651,10 +4715,14 @@ +@@ -4667,10 +4731,14 @@ bool fragstolen; int eaten; @@ -4177,7 +4177,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in skb_dst_drop(skb); __skb_pull(skb, tcp_hdr(skb)->doff * 4); -@@ -4679,7 +4747,7 @@ +@@ -4695,7 +4763,7 @@ eaten = tcp_queue_rcv(sk, skb, 0, &fragstolen); tcp_rcv_nxt_update(tp, TCP_SKB_CB(skb)->end_seq); @@ -4186,7 +4186,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_event_data_recv(sk, skb); if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) tcp_fin(sk); -@@ -4701,7 +4769,11 @@ +@@ -4717,7 +4785,11 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); @@ -4199,7 +4199,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in sk->sk_data_ready(sk); return; } -@@ -5040,7 +5112,7 @@ +@@ -5056,7 +5128,7 @@ return -1; } @@ -4208,7 +4208,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { const struct tcp_sock *tp = tcp_sk(sk); -@@ -5075,7 +5147,7 @@ +@@ -5091,7 +5163,7 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4217,7 +4217,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_sndbuf_expand(sk); tp->snd_cwnd_stamp = tcp_jiffies32; } -@@ -5089,10 +5161,11 @@ +@@ -5105,10 +5177,11 @@ sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); /* pairs with tcp_poll() */ smp_mb(); @@ -4232,7 +4232,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_chrono_stop(sk, TCP_CHRONO_SNDBUF_LIMITED); } } -@@ -5116,7 +5189,7 @@ +@@ -5132,7 +5205,7 @@ /* ... and right edge of window advances far enough. * (tcp_recvmsg() will send ACK otherwise). Or... */ @@ -4241,7 +4241,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* We ACK each frame or... */ tcp_in_quickack_mode(sk) || /* We have out of order data. */ -@@ -5218,6 +5291,10 @@ +@@ -5234,6 +5307,10 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4252,7 +4252,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Check if we get a new urgent pointer - normally not. */ if (th->urg) tcp_check_urg(sk, th); -@@ -5360,9 +5437,15 @@ +@@ -5376,9 +5453,15 @@ goto discard; } @@ -4268,7 +4268,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_drop(sk, skb); return false; } -@@ -5416,6 +5499,10 @@ +@@ -5432,6 +5515,10 @@ tp->rx_opt.saw_tstamp = 0; @@ -4279,7 +4279,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* pred_flags is 0xS?10 << 16 + snd_wnd * if header_prediction is to be made * 'S' will always be tp->tcp_header_len >> 2 -@@ -5585,7 +5672,7 @@ +@@ -5601,7 +5688,7 @@ */ tp->lsndtime = tcp_jiffies32; @@ -4288,7 +4288,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (sock_flag(sk, SOCK_KEEPOPEN)) inet_csk_reset_keepalive_timer(sk, keepalive_time_when(tp)); -@@ -5600,7 +5687,8 @@ +@@ -5616,7 +5703,8 @@ struct tcp_fastopen_cookie *cookie) { struct tcp_sock *tp = tcp_sk(sk); @@ -4298,7 +4298,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in u16 mss = tp->rx_opt.mss_clamp, try_exp = 0; bool syn_drop = false; -@@ -5610,7 +5698,7 @@ +@@ -5626,7 +5714,7 @@ /* Get original SYNACK MSS value if user MSS sets mss_clamp */ tcp_clear_options(&opt); opt.user_mss = opt.mss_clamp = 0; @@ -4307,7 +4307,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in mss = opt.mss_clamp; } -@@ -5634,7 +5722,11 @@ +@@ -5650,7 +5738,11 @@ tcp_fastopen_cache_set(sk, mss, cookie, syn_drop, try_exp); @@ -4320,7 +4320,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tcp_for_write_queue_from(data, sk) { if (data == tcp_send_head(sk) || __tcp_retransmit_skb(sk, data, 1)) -@@ -5662,9 +5754,13 @@ +@@ -5678,9 +5770,13 @@ struct tcp_sock *tp = tcp_sk(sk); struct tcp_fastopen_cookie foc = { .len = -1 }; int saved_clamp = tp->rx_opt.mss_clamp; @@ -4335,7 +4335,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -5724,6 +5820,35 @@ +@@ -5740,6 +5836,35 @@ tcp_init_wl(tp, TCP_SKB_CB(skb)->seq); tcp_ack(sk, skb, FLAG_SLOWPATH); @@ -4371,7 +4371,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Ok.. it's good. Set up sequence numbers and * move to established. */ -@@ -5750,6 +5875,11 @@ +@@ -5766,6 +5891,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4383,7 +4383,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (tcp_is_sack(tp) && sysctl_tcp_fack) tcp_enable_fack(tp); -@@ -5775,9 +5905,12 @@ +@@ -5791,9 +5921,12 @@ } if (fastopen_fail) return -1; @@ -4398,7 +4398,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Save one ACK. Data will be ready after * several ticks, if write_pending is set. * -@@ -5816,6 +5949,7 @@ +@@ -5832,6 +5965,7 @@ tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -4406,7 +4406,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5832,6 +5966,11 @@ +@@ -5848,6 +5982,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4418,7 +4418,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; tp->copied_seq = tp->rcv_nxt; tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -@@ -5890,6 +6029,7 @@ +@@ -5906,6 +6045,7 @@ */ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) @@ -4426,7 +4426,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -5932,6 +6072,16 @@ +@@ -5948,6 +6088,16 @@ tp->rx_opt.saw_tstamp = 0; tcp_mstamp_refresh(tp); queued = tcp_rcv_synsent_state_process(sk, skb, th); @@ -4443,7 +4443,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (queued >= 0) return queued; -@@ -5989,7 +6139,7 @@ +@@ -6005,7 +6155,7 @@ tcp_mtup_init(sk); tp->copied_seq = tp->rcv_nxt; @@ -4452,7 +4452,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in } smp_mb(); tcp_set_state(sk, TCP_ESTABLISHED); -@@ -6008,6 +6158,8 @@ +@@ -6024,6 +6174,8 @@ if (tp->rx_opt.tstamp_ok) tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; @@ -4461,7 +4461,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (req) { /* Re-arm the timer because data may have been sent out. -@@ -6030,6 +6182,30 @@ +@@ -6046,6 +6198,30 @@ tcp_initialize_rcv_mss(sk); tcp_fast_path_on(tp); @@ -4492,7 +4492,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in break; case TCP_FIN_WAIT1: { -@@ -6077,7 +6253,8 @@ +@@ -6093,7 +6269,8 @@ tmo = tcp_fin_time(sk); if (tmo > TCP_TIMEWAIT_LEN) { inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); @@ -4502,7 +4502,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in /* Bad case. We could lose such FIN otherwise. * It is not a big problem, but it looks confusing * and not so rare event. We still can lose it now, -@@ -6086,7 +6263,7 @@ +@@ -6102,7 +6279,7 @@ */ inet_csk_reset_keepalive_timer(sk, tmo); } else { @@ -4511,7 +4511,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in goto discard; } break; -@@ -6094,7 +6271,7 @@ +@@ -6110,7 +6287,7 @@ case TCP_CLOSING: if (tp->snd_una == tp->write_seq) { @@ -4520,7 +4520,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in goto discard; } break; -@@ -6106,6 +6283,9 @@ +@@ -6122,6 +6299,9 @@ goto discard; } break; @@ -4530,7 +4530,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in } /* step 6: check the URG bit */ -@@ -6126,7 +6306,8 @@ +@@ -6142,7 +6322,8 @@ */ if (sk->sk_shutdown & RCV_SHUTDOWN) { if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq && @@ -4540,7 +4540,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA); tcp_reset(sk); return 1; -@@ -6223,6 +6404,8 @@ +@@ -6239,6 +6420,8 @@ ireq->wscale_ok = rx_opt->wscale_ok; ireq->acked = 0; ireq->ecn_ok = 0; @@ -4549,7 +4549,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in ireq->ir_rmt_port = tcp_hdr(skb)->source; ireq->ir_num = ntohs(tcp_hdr(skb)->dest); ireq->ir_mark = inet_request_mark(sk, skb); -@@ -6317,12 +6500,17 @@ +@@ -6333,12 +6516,17 @@ /* TW buckets are converted to open requests without * limitations, they conserve resources and peer is * evidently real one. @@ -4568,7 +4568,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in } if (sk_acceptq_is_full(sk)) { -@@ -6340,8 +6528,8 @@ +@@ -6356,8 +6544,8 @@ tcp_clear_options(&tmp_opt); tmp_opt.mss_clamp = af_ops->mss_clamp; tmp_opt.user_mss = tp->rx_opt.user_mss; @@ -4579,7 +4579,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (want_cookie && !tmp_opt.saw_tstamp) tcp_clear_options(&tmp_opt); -@@ -6353,7 +6541,8 @@ +@@ -6369,7 +6557,8 @@ /* Note: tcp_v6_init_req() might override ir_iif for link locals */ inet_rsk(req)->ir_iif = inet_request_bound_dev_if(sk, skb); @@ -4589,7 +4589,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in if (security_inet_conn_request(sk, skb, req)) goto drop_and_free; -@@ -6389,7 +6578,7 @@ +@@ -6405,7 +6594,7 @@ tcp_ecn_create_request(req, skb, sk, dst); if (want_cookie) { @@ -4598,7 +4598,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in req->cookie_ts = tmp_opt.tstamp_ok; if (!tmp_opt.tstamp_ok) inet_rsk(req)->ecn_ok = 0; -@@ -6403,18 +6592,26 @@ +@@ -6419,18 +6608,26 @@ fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc); } if (fastopen_sk) { @@ -4626,9 +4626,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_input.c mptcp-mptcp_v0.94/net/ipv4/tcp_in sock_put(fastopen_sk); } else { tcp_rsk(req)->tfo_listener = false; -diff -aurN linux-4.14.123/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.94/net/ipv4/tcp_ipv4.c ---- linux-4.14.123/net/ipv4/tcp_ipv4.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_ipv4.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.94/net/ipv4/tcp_ipv4.c +--- linux-4.14.127/net/ipv4/tcp_ipv4.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_ipv4.c 2019-06-17 23:59:30.000000000 +0200 @@ -67,6 +67,8 @@ #include #include @@ -5116,9 +5116,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.94/net/ipv4/tcp_ipv }; EXPORT_SYMBOL(tcp_prot); -diff -aurN linux-4.14.123/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.94/net/ipv4/tcp_minisocks.c ---- linux-4.14.123/net/ipv4/tcp_minisocks.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_minisocks.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.94/net/ipv4/tcp_minisocks.c +--- linux-4.14.127/net/ipv4/tcp_minisocks.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_minisocks.c 2019-06-17 23:59:30.000000000 +0200 @@ -18,11 +18,13 @@ * Jorge Cwik, */ @@ -5329,9 +5329,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.94/net/ipv4/tc sock_put(child); return ret; } -diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_output.c ---- linux-4.14.123/net/ipv4/tcp_output.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_output.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_output.c +--- linux-4.14.127/net/ipv4/tcp_output.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_output.c 2019-06-17 23:59:30.000000000 +0200 @@ -36,6 +36,12 @@ #define pr_fmt(fmt) "TCP: " fmt @@ -5642,7 +5642,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { struct tcp_sock *tp = tcp_sk(sk); -@@ -1349,7 +1387,7 @@ +@@ -1354,7 +1392,7 @@ /* This is similar to __pskb_pull_tail(). The difference is that pulled * data is not copied, but immediately discarded. */ @@ -5651,7 +5651,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { struct skb_shared_info *shinfo; int i, k, eat; -@@ -1572,6 +1610,7 @@ +@@ -1576,6 +1614,7 @@ return mss_now; } @@ -5659,7 +5659,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o /* RFC2861, slow part. Adjust cwnd, after it was not full during one rto. * As additional protections, we do not touch cwnd in retransmission phases, -@@ -1595,7 +1634,7 @@ +@@ -1599,7 +1638,7 @@ tp->snd_cwnd_stamp = tcp_jiffies32; } @@ -5668,7 +5668,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops; struct tcp_sock *tp = tcp_sk(sk); -@@ -1653,8 +1692,8 @@ +@@ -1657,8 +1696,8 @@ * But we can avoid doing the divide again given we already have * skb_pcount = skb->len / mss_now */ @@ -5679,7 +5679,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { if (skb->len < tcp_skb_pcount(skb) * mss_now) tp->snd_sml = TCP_SKB_CB(skb)->end_seq; -@@ -1712,11 +1751,11 @@ +@@ -1716,11 +1755,11 @@ } /* Returns the portion of skb which can be sent right away */ @@ -5696,7 +5696,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { const struct tcp_sock *tp = tcp_sk(sk); u32 partial, needed, window, max_len; -@@ -1746,13 +1785,14 @@ +@@ -1750,13 +1789,14 @@ /* Can at least one segment of SKB be sent right now, according to the * congestion window rules? If so, return how many segments are allowed. */ @@ -5714,7 +5714,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o tcp_skb_pcount(skb) == 1) return 1; -@@ -1772,7 +1812,7 @@ +@@ -1776,7 +1816,7 @@ * This must be invoked the first time we consider transmitting * SKB onto the wire. */ @@ -5723,7 +5723,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { int tso_segs = tcp_skb_pcount(skb); -@@ -1787,8 +1827,8 @@ +@@ -1791,8 +1831,8 @@ /* Return true if the Nagle test allows this packet to be * sent now. */ @@ -5734,7 +5734,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { /* Nagle rule does not apply to frames, which sit in the middle of the * write_queue (they have no chances to get new data). -@@ -1800,7 +1840,8 @@ +@@ -1804,7 +1844,8 @@ return true; /* Don't use the nagle rule for urgent data (or for the final FIN). */ @@ -5744,7 +5744,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o return true; if (!tcp_nagle_check(skb->len < cur_mss, tp, nonagle)) -@@ -1810,9 +1851,8 @@ +@@ -1814,9 +1855,8 @@ } /* Does at least the first segment of SKB fit into the send window? */ @@ -5756,7 +5756,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { u32 end_seq = TCP_SKB_CB(skb)->end_seq; -@@ -1969,7 +2009,7 @@ +@@ -1973,7 +2013,7 @@ } /* If this packet won't get more data, do not wait. */ @@ -5765,7 +5765,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o goto send_now; return true; -@@ -2268,6 +2308,23 @@ +@@ -2272,6 +2312,23 @@ tcp_chrono_set(tp, TCP_CHRONO_BUSY); } @@ -5789,7 +5789,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o /* This routine writes packets to the network. It advances the * send_head. This happens as incoming acks open up the remote * window for us. -@@ -2282,7 +2339,7 @@ +@@ -2286,7 +2343,7 @@ * Returns true, if no segments are in flight and we have queued segments, * but cannot send anything now because of SWS or another problem. */ @@ -5798,7 +5798,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o int push_one, gfp_t gfp) { struct tcp_sock *tp = tcp_sk(sk); -@@ -2296,7 +2353,12 @@ +@@ -2300,7 +2357,12 @@ sent_pkts = 0; tcp_mstamp_refresh(tp); @@ -5812,7 +5812,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o /* Do MTU probing. */ result = tcp_mtu_probe(sk); if (!result) { -@@ -2394,7 +2456,8 @@ +@@ -2398,7 +2460,8 @@ if (push_one != 2) tcp_schedule_loss_probe(sk, false); is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd); @@ -5822,7 +5822,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o return false; } return !tp->packets_out && tcp_send_head(sk); -@@ -2479,7 +2542,7 @@ +@@ -2483,7 +2546,7 @@ if (skb) { if (tcp_snd_wnd_test(tp, skb, mss)) { pcount = tp->packets_out; @@ -5831,7 +5831,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o if (tp->packets_out > pcount) goto probe_sent; goto rearm_timer; -@@ -2546,8 +2609,8 @@ +@@ -2550,8 +2613,8 @@ if (unlikely(sk->sk_state == TCP_CLOSE)) return; @@ -5842,7 +5842,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o tcp_check_probe_timer(sk); } -@@ -2560,7 +2623,8 @@ +@@ -2564,7 +2627,8 @@ BUG_ON(!skb || skb->len < mss_now); @@ -5852,7 +5852,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o } /* This function returns the amount that we can raise the -@@ -2793,6 +2857,10 @@ +@@ -2797,6 +2861,10 @@ if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) return; @@ -5863,7 +5863,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o tcp_for_write_queue_from_safe(skb, tmp, sk) { if (!tcp_can_collapse(sk, skb)) break; -@@ -3250,7 +3318,7 @@ +@@ -3254,7 +3322,7 @@ /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ th->window = htons(min(req->rsk_rcv_wnd, 65535U)); @@ -5872,7 +5872,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o th->doff = (tcp_header_size >> 2); __TCP_INC_STATS(sock_net(sk), TCP_MIB_OUTSEGS); -@@ -3331,13 +3399,13 @@ +@@ -3335,13 +3403,13 @@ if (rcv_wnd == 0) rcv_wnd = dst_metric(dst, RTAX_INITRWND); @@ -5893,7 +5893,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o tp->rx_opt.rcv_wscale = rcv_wscale; tp->rcv_ssthresh = tp->rcv_wnd; -@@ -3362,6 +3430,36 @@ +@@ -3366,6 +3434,36 @@ inet_csk(sk)->icsk_rto = tcp_timeout_init(sk); inet_csk(sk)->icsk_retransmits = 0; tcp_clear_retrans(tp); @@ -5930,7 +5930,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o } static void tcp_connect_queue_skb(struct sock *sk, struct sk_buff *skb) -@@ -3622,6 +3720,7 @@ +@@ -3626,6 +3724,7 @@ { __tcp_send_ack(sk, tcp_sk(sk)->rcv_nxt); } @@ -5938,7 +5938,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o /* This routine sends a packet with an out of date sequence * number. It assumes the other end will try to ack it. -@@ -3634,7 +3733,7 @@ +@@ -3638,7 +3737,7 @@ * one is with SEG.SEQ=SND.UNA to deliver urgent pointer, another is * out-of-date with SND.UNA-1 to probe window. */ @@ -5947,7 +5947,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; -@@ -3720,7 +3819,7 @@ +@@ -3724,7 +3823,7 @@ unsigned long probe_max; int err; @@ -5956,9 +5956,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_output.c mptcp-mptcp_v0.94/net/ipv4/tcp_o if (tp->packets_out || !tcp_send_head(sk)) { /* Cancel probe timer, if it is not required. */ -diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_timer.c ---- linux-4.14.123/net/ipv4/tcp_timer.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv4/tcp_timer.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_timer.c +--- linux-4.14.127/net/ipv4/tcp_timer.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv4/tcp_timer.c 2019-06-17 23:59:30.000000000 +0200 @@ -20,6 +20,7 @@ #include @@ -5985,7 +5985,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti tcp_done(sk); __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONMEMORY); return 1; -@@ -161,9 +162,9 @@ +@@ -162,9 +163,9 @@ * after "boundary" unsuccessful, exponentially backed-off * retransmissions with an initial RTO of TCP_RTO_MIN. */ @@ -5998,7 +5998,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti { const unsigned int rto_base = TCP_RTO_MIN; unsigned int linear_backoff_thresh, start_ts; -@@ -172,8 +173,14 @@ +@@ -173,8 +174,14 @@ return false; start_ts = tcp_sk(sk)->retrans_stamp; @@ -6015,7 +6015,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti if (likely(timeout == 0)) { linear_backoff_thresh = ilog2(TCP_RTO_MAX/rto_base); -@@ -188,7 +195,7 @@ +@@ -189,7 +196,7 @@ } /* A write timeout has occurred. Process the after effects. */ @@ -6024,7 +6024,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -208,6 +215,17 @@ +@@ -209,6 +216,17 @@ sk_rethink_txhash(sk); } retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; @@ -6042,7 +6042,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti expired = icsk->icsk_retransmits >= retry_until; } else { if (retransmits_timed_out(sk, net->ipv4.sysctl_tcp_retries1, 0)) { -@@ -303,18 +321,22 @@ +@@ -304,18 +322,22 @@ static void tcp_delack_timer(unsigned long data) { struct sock *sk = (struct sock *)data; @@ -6069,7 +6069,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti sock_put(sk); } -@@ -575,7 +597,7 @@ +@@ -576,7 +598,7 @@ break; case ICSK_TIME_RETRANS: icsk->icsk_pending = 0; @@ -6078,7 +6078,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti break; case ICSK_TIME_PROBE0: icsk->icsk_pending = 0; -@@ -590,16 +612,19 @@ +@@ -591,16 +613,19 @@ static void tcp_write_timer(unsigned long data) { struct sock *sk = (struct sock *)data; @@ -6101,7 +6101,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti sock_put(sk); } -@@ -629,11 +654,12 @@ +@@ -630,11 +655,12 @@ struct sock *sk = (struct sock *) data; struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); @@ -6116,7 +6116,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti /* Try again later. */ inet_csk_reset_keepalive_timer (sk, HZ/20); goto out; -@@ -645,16 +671,31 @@ +@@ -646,16 +672,31 @@ } tcp_mstamp_refresh(tp); @@ -6150,7 +6150,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti goto death; } -@@ -679,11 +720,11 @@ +@@ -680,11 +721,11 @@ icsk->icsk_probes_out > 0) || (icsk->icsk_user_timeout == 0 && icsk->icsk_probes_out >= keepalive_probes(tp))) { @@ -6164,7 +6164,7 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti icsk->icsk_probes_out++; elapsed = keepalive_intvl_when(tp); } else { -@@ -707,7 +748,7 @@ +@@ -708,7 +749,7 @@ tcp_done(sk); out: @@ -6173,9 +6173,9 @@ diff -aurN linux-4.14.123/net/ipv4/tcp_timer.c mptcp-mptcp_v0.94/net/ipv4/tcp_ti sock_put(sk); } -diff -aurN linux-4.14.123/net/ipv6/addrconf.c mptcp-mptcp_v0.94/net/ipv6/addrconf.c ---- linux-4.14.123/net/ipv6/addrconf.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv6/addrconf.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv6/addrconf.c mptcp-mptcp_v0.94/net/ipv6/addrconf.c +--- linux-4.14.127/net/ipv6/addrconf.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv6/addrconf.c 2019-06-17 23:59:30.000000000 +0200 @@ -928,6 +928,7 @@ kfree_rcu(ifp, rcu); @@ -6184,9 +6184,9 @@ diff -aurN linux-4.14.123/net/ipv6/addrconf.c mptcp-mptcp_v0.94/net/ipv6/addrcon static void ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) -diff -aurN linux-4.14.123/net/ipv6/af_inet6.c mptcp-mptcp_v0.94/net/ipv6/af_inet6.c ---- linux-4.14.123/net/ipv6/af_inet6.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv6/af_inet6.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv6/af_inet6.c mptcp-mptcp_v0.94/net/ipv6/af_inet6.c +--- linux-4.14.127/net/ipv6/af_inet6.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv6/af_inet6.c 2019-06-17 23:59:30.000000000 +0200 @@ -107,8 +107,7 @@ return (struct ipv6_pinfo *)(((u8 *)sk) + offset); } @@ -6197,9 +6197,9 @@ diff -aurN linux-4.14.123/net/ipv6/af_inet6.c mptcp-mptcp_v0.94/net/ipv6/af_inet { struct inet_sock *inet; struct ipv6_pinfo *np; -diff -aurN linux-4.14.123/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.94/net/ipv6/ipv6_sockglue.c ---- linux-4.14.123/net/ipv6/ipv6_sockglue.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv6/ipv6_sockglue.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.94/net/ipv6/ipv6_sockglue.c +--- linux-4.14.127/net/ipv6/ipv6_sockglue.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv6/ipv6_sockglue.c 2019-06-17 23:59:30.000000000 +0200 @@ -48,6 +48,8 @@ #include #include @@ -6223,9 +6223,9 @@ diff -aurN linux-4.14.123/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.94/net/ipv6/ip sk->sk_socket->ops = &inet_stream_ops; sk->sk_family = PF_INET; tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); -diff -aurN linux-4.14.123/net/ipv6/syncookies.c mptcp-mptcp_v0.94/net/ipv6/syncookies.c ---- linux-4.14.123/net/ipv6/syncookies.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv6/syncookies.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv6/syncookies.c mptcp-mptcp_v0.94/net/ipv6/syncookies.c +--- linux-4.14.127/net/ipv6/syncookies.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv6/syncookies.c 2019-06-17 23:59:30.000000000 +0200 @@ -20,6 +20,8 @@ #include #include @@ -6307,9 +6307,9 @@ diff -aurN linux-4.14.123/net/ipv6/syncookies.c mptcp-mptcp_v0.94/net/ipv6/synco ireq->rcv_wscale = rcv_wscale; ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst); -diff -aurN linux-4.14.123/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.94/net/ipv6/tcp_ipv6.c ---- linux-4.14.123/net/ipv6/tcp_ipv6.c 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/ipv6/tcp_ipv6.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.94/net/ipv6/tcp_ipv6.c +--- linux-4.14.127/net/ipv6/tcp_ipv6.c 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/ipv6/tcp_ipv6.c 2019-06-17 23:59:30.000000000 +0200 @@ -61,6 +61,8 @@ #include #include @@ -6931,9 +6931,9 @@ diff -aurN linux-4.14.123/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.94/net/ipv6/tcp_ipv }; /* thinking of making this const? Don't. -diff -aurN linux-4.14.123/net/Kconfig mptcp-mptcp_v0.94/net/Kconfig ---- linux-4.14.123/net/Kconfig 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/Kconfig 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/Kconfig mptcp-mptcp_v0.94/net/Kconfig +--- linux-4.14.127/net/Kconfig 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/Kconfig 2019-06-17 23:59:30.000000000 +0200 @@ -88,6 +88,7 @@ source "net/ipv4/Kconfig" source "net/ipv6/Kconfig" @@ -6942,9 +6942,9 @@ diff -aurN linux-4.14.123/net/Kconfig mptcp-mptcp_v0.94/net/Kconfig endif # if INET -diff -aurN linux-4.14.123/net/Makefile mptcp-mptcp_v0.94/net/Makefile ---- linux-4.14.123/net/Makefile 2019-05-31 15:47:36.000000000 +0200 -+++ mptcp-mptcp_v0.94/net/Makefile 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/Makefile mptcp-mptcp_v0.94/net/Makefile +--- linux-4.14.127/net/Makefile 2019-06-17 19:52:45.000000000 +0200 ++++ mptcp-mptcp_v0.94/net/Makefile 2019-06-17 23:59:30.000000000 +0200 @@ -20,6 +20,7 @@ obj-$(CONFIG_XFRM) += xfrm/ obj-$(CONFIG_UNIX) += unix/ @@ -6953,9 +6953,9 @@ diff -aurN linux-4.14.123/net/Makefile mptcp-mptcp_v0.94/net/Makefile obj-$(CONFIG_PACKET) += packet/ obj-$(CONFIG_NET_KEY) += key/ obj-$(CONFIG_BRIDGE) += bridge/ -diff -aurN linux-4.14.123/net/mptcp/Kconfig mptcp-mptcp_v0.94/net/mptcp/Kconfig ---- linux-4.14.123/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/Kconfig 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/Kconfig mptcp-mptcp_v0.94/net/mptcp/Kconfig +--- linux-4.14.127/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/Kconfig 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,129 @@ +# +# MPTCP configuration @@ -7086,9 +7086,9 @@ diff -aurN linux-4.14.123/net/mptcp/Kconfig mptcp-mptcp_v0.94/net/mptcp/Kconfig + default "redundant" if DEFAULT_REDUNDANT + default "default" + -diff -aurN linux-4.14.123/net/mptcp/Makefile mptcp-mptcp_v0.94/net/mptcp/Makefile ---- linux-4.14.123/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/Makefile 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/Makefile mptcp-mptcp_v0.94/net/mptcp/Makefile +--- linux-4.14.127/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/Makefile 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,22 @@ +# +## Makefile for MultiPath TCP support code. @@ -7112,9 +7112,9 @@ diff -aurN linux-4.14.123/net/mptcp/Makefile mptcp-mptcp_v0.94/net/mptcp/Makefil + +mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o + -diff -aurN linux-4.14.123/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.94/net/mptcp/mptcp_balia.c ---- linux-4.14.123/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_balia.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.94/net/mptcp/mptcp_balia.c +--- linux-4.14.127/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_balia.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,268 @@ +/* + * MPTCP implementation - Balia Congestion Control @@ -7384,9 +7384,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.94/net/mptcp/mp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP BALIA CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.94/net/mptcp/mptcp_binder.c ---- linux-4.14.123/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_binder.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.94/net/mptcp/mptcp_binder.c +--- linux-4.14.127/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_binder.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,490 @@ +#include + @@ -7878,9 +7878,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.94/net/mptcp/m +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("BINDER MPTCP"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.94/net/mptcp/mptcp_coupled.c ---- linux-4.14.123/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_coupled.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.94/net/mptcp/mptcp_coupled.c +--- linux-4.14.127/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_coupled.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,271 @@ +/* + * MPTCP implementation - Linked Increase congestion control Algorithm (LIA) @@ -8153,9 +8153,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.94/net/mptcp/ +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP LINKED INCREASE CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c ---- linux-4.14.123/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c +--- linux-4.14.127/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,3014 @@ +/* + * MPTCP implementation - MPTCP-control @@ -11142,7 +11142,7 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mpt + if (mptcp_register_scheduler(&mptcp_sched_default)) + goto register_sched_failed; + -+ pr_info("MPTCP: Stable release v0.94.5"); ++ pr_info("MPTCP: Stable release v0.94.6"); + + mptcp_init_failed = false; + @@ -11171,9 +11171,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mpt +mptcp_sock_cache_failed: + mptcp_init_failed = true; +} -diff -aurN linux-4.14.123/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.94/net/mptcp/mptcp_fullmesh.c ---- linux-4.14.123/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_fullmesh.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.94/net/mptcp/mptcp_fullmesh.c +--- linux-4.14.127/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_fullmesh.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,2016 @@ +#include +#include @@ -13191,9 +13191,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.94/net/mptcp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Full-Mesh MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_input.c mptcp-mptcp_v0.94/net/mptcp/mptcp_input.c ---- linux-4.14.123/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_input.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_input.c mptcp-mptcp_v0.94/net/mptcp/mptcp_input.c +--- linux-4.14.127/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_input.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,2475 @@ +/* + * MPTCP implementation - Sending side @@ -15670,9 +15670,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_input.c mptcp-mptcp_v0.94/net/mptcp/mp + tcp_set_rto(sk); + mptcp_set_rto(sk); +} -diff -aurN linux-4.14.123/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv4.c ---- linux-4.14.123/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv4.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv4.c +--- linux-4.14.127/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv4.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,436 @@ +/* + * MPTCP implementation - IPv4-specific functions @@ -16110,9 +16110,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.94/net/mptcp/mpt + kmem_cache_destroy(mptcp_request_sock_ops.slab); + kfree(mptcp_request_sock_ops.slab_name); +} -diff -aurN linux-4.14.123/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv6.c ---- linux-4.14.123/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv6.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv6.c +--- linux-4.14.127/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ipv6.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,465 @@ +/* + * MPTCP implementation - IPv6-specific functions @@ -16579,9 +16579,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.94/net/mptcp/mpt + kmem_cache_destroy(mptcp6_request_sock_ops.slab); + kfree(mptcp6_request_sock_ops.slab_name); +} -diff -aurN linux-4.14.123/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ndiffports.c ---- linux-4.14.123/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ndiffports.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ndiffports.c +--- linux-4.14.127/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ndiffports.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,173 @@ +#include + @@ -16756,9 +16756,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.94/net/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("NDIFF-PORTS MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.94/net/mptcp/mptcp_olia.c ---- linux-4.14.123/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_olia.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.94/net/mptcp/mptcp_olia.c +--- linux-4.14.127/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_olia.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,310 @@ +/* + * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL: @@ -17070,9 +17070,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.94/net/mptcp/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c ---- linux-4.14.123/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c +--- linux-4.14.127/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,1824 @@ +/* + * MPTCP implementation - Sending side @@ -18898,9 +18898,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/m + return max(xmit_size_goal, mss_now); +} + -diff -aurN linux-4.14.123/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.94/net/mptcp/mptcp_pm.c ---- linux-4.14.123/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_pm.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.94/net/mptcp/mptcp_pm.c +--- linux-4.14.127/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_pm.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,226 @@ +/* + * MPTCP implementation - MPTCP-subflow-management @@ -19128,9 +19128,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.94/net/mptcp/mptcp + return mptcp_set_default_path_manager(CONFIG_DEFAULT_MPTCP_PM); +} +late_initcall(mptcp_path_manager_default); -diff -aurN linux-4.14.123/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.94/net/mptcp/mptcp_redundant.c ---- linux-4.14.123/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_redundant.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.94/net/mptcp/mptcp_redundant.c +--- linux-4.14.127/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_redundant.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,301 @@ +/* + * MPTCP Scheduler to reduce latency and jitter. @@ -19433,9 +19433,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.94/net/mptc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("REDUNDANT MPTCP"); +MODULE_VERSION("0.90"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.94/net/mptcp/mptcp_rr.c ---- linux-4.14.123/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_rr.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.94/net/mptcp/mptcp_rr.c +--- linux-4.14.127/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_rr.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,301 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + @@ -19738,9 +19738,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.94/net/mptcp/mptcp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("ROUNDROBIN MPTCP"); +MODULE_VERSION("0.89"); -diff -aurN linux-4.14.123/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.94/net/mptcp/mptcp_sched.c ---- linux-4.14.123/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_sched.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.94/net/mptcp/mptcp_sched.c +--- linux-4.14.127/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_sched.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,634 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + @@ -20376,9 +20376,9 @@ diff -aurN linux-4.14.123/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.94/net/mptcp/mp + return mptcp_set_default_scheduler(CONFIG_DEFAULT_MPTCP_SCHED); +} +late_initcall(mptcp_scheduler_default); -diff -aurN linux-4.14.123/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.94/net/mptcp/mptcp_wvegas.c ---- linux-4.14.123/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_wvegas.c 2019-06-04 18:49:08.000000000 +0200 +diff -aurN linux-4.14.127/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.94/net/mptcp/mptcp_wvegas.c +--- linux-4.14.127/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.94/net/mptcp/mptcp_wvegas.c 2019-06-17 23:59:30.000000000 +0200 @@ -0,0 +1,270 @@ +/* + * MPTCP implementation - WEIGHTED VEGAS diff --git a/root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch b/root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch index bcbc3c69..22e0a005 100644 --- a/root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch +++ b/root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch @@ -1,7 +1,7 @@ -diff -aurN linux-4.19.44/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.95/Documentation/networking/ip-sysctl.txt ---- linux-4.19.44/Documentation/networking/ip-sysctl.txt 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/Documentation/networking/ip-sysctl.txt 2019-06-03 18:26:35.000000000 +0200 -@@ -755,6 +755,18 @@ +diff -aurN linux-4.19.53/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.95/Documentation/networking/ip-sysctl.txt +--- linux-4.19.53/Documentation/networking/ip-sysctl.txt 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/Documentation/networking/ip-sysctl.txt 2019-06-22 05:42:25.000000000 +0200 +@@ -763,6 +763,18 @@ in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) Default: 100 @@ -20,10 +20,10 @@ diff -aurN linux-4.19.44/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.9 UDP variables: udp_l3mdev_accept - BOOLEAN -diff -aurN linux-4.19.44/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.95/drivers/infiniband/hw/cxgb4/cm.c ---- linux-4.19.44/drivers/infiniband/hw/cxgb4/cm.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/drivers/infiniband/hw/cxgb4/cm.c 2019-06-03 18:26:35.000000000 +0200 -@@ -3777,7 +3777,7 @@ +diff -aurN linux-4.19.53/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.95/drivers/infiniband/hw/cxgb4/cm.c +--- linux-4.19.53/drivers/infiniband/hw/cxgb4/cm.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/drivers/infiniband/hw/cxgb4/cm.c 2019-06-22 05:42:25.000000000 +0200 +@@ -3779,7 +3779,7 @@ */ memset(&tmp_opt, 0, sizeof(tmp_opt)); tcp_clear_options(&tmp_opt); @@ -32,9 +32,9 @@ diff -aurN linux-4.19.44/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.95/driv req = __skb_push(skb, sizeof(*req)); memset(req, 0, sizeof(*req)); -diff -aurN linux-4.19.44/include/linux/skbuff.h mptcp-mptcp_v0.95/include/linux/skbuff.h ---- linux-4.19.44/include/linux/skbuff.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/linux/skbuff.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/linux/skbuff.h mptcp-mptcp_v0.95/include/linux/skbuff.h +--- linux-4.19.53/include/linux/skbuff.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/linux/skbuff.h 2019-06-22 05:42:25.000000000 +0200 @@ -697,7 +697,7 @@ * want to keep them across layers you have to do a skb_clone() * first. This is owned by whoever has the skb queued ATM. @@ -44,9 +44,9 @@ diff -aurN linux-4.19.44/include/linux/skbuff.h mptcp-mptcp_v0.95/include/linux/ union { struct { -diff -aurN linux-4.19.44/include/linux/tcp.h mptcp-mptcp_v0.95/include/linux/tcp.h ---- linux-4.19.44/include/linux/tcp.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/linux/tcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/linux/tcp.h mptcp-mptcp_v0.95/include/linux/tcp.h +--- linux-4.19.53/include/linux/tcp.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/linux/tcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -58,7 +58,7 @@ /* TCP Fast Open */ #define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */ @@ -203,9 +203,9 @@ diff -aurN linux-4.19.44/include/linux/tcp.h mptcp-mptcp_v0.95/include/linux/tcp }; static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) -diff -aurN linux-4.19.44/include/net/inet_common.h mptcp-mptcp_v0.95/include/net/inet_common.h ---- linux-4.19.44/include/net/inet_common.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/inet_common.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/inet_common.h mptcp-mptcp_v0.95/include/net/inet_common.h +--- linux-4.19.53/include/net/inet_common.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/inet_common.h 2019-06-22 05:42:25.000000000 +0200 @@ -2,6 +2,8 @@ #ifndef _INET_COMMON_H #define _INET_COMMON_H @@ -224,9 +224,9 @@ diff -aurN linux-4.19.44/include/net/inet_common.h mptcp-mptcp_v0.95/include/net int inet_release(struct socket *sock); int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags); -diff -aurN linux-4.19.44/include/net/inet_connection_sock.h mptcp-mptcp_v0.95/include/net/inet_connection_sock.h ---- linux-4.19.44/include/net/inet_connection_sock.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/inet_connection_sock.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/inet_connection_sock.h mptcp-mptcp_v0.95/include/net/inet_connection_sock.h +--- linux-4.19.53/include/net/inet_connection_sock.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/inet_connection_sock.h 2019-06-22 05:42:25.000000000 +0200 @@ -29,6 +29,7 @@ struct inet_bind_bucket; @@ -235,9 +235,9 @@ diff -aurN linux-4.19.44/include/net/inet_connection_sock.h mptcp-mptcp_v0.95/in /* * Pointers to address related TCP functions -diff -aurN linux-4.19.44/include/net/inet_sock.h mptcp-mptcp_v0.95/include/net/inet_sock.h ---- linux-4.19.44/include/net/inet_sock.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/inet_sock.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/inet_sock.h mptcp-mptcp_v0.95/include/net/inet_sock.h +--- linux-4.19.53/include/net/inet_sock.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/inet_sock.h 2019-06-22 05:42:25.000000000 +0200 @@ -83,7 +83,7 @@ #define ireq_state req.__req_common.skc_state #define ireq_family req.__req_common.skc_family @@ -256,9 +256,9 @@ diff -aurN linux-4.19.44/include/net/inet_sock.h mptcp-mptcp_v0.95/include/net/i smc_ok : 1; u32 ir_mark; union { -diff -aurN linux-4.19.44/include/net/mptcp.h mptcp-mptcp_v0.95/include/net/mptcp.h ---- linux-4.19.44/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/include/net/mptcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/mptcp.h mptcp-mptcp_v0.95/include/net/mptcp.h +--- linux-4.19.53/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/include/net/mptcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,1490 @@ +/* + * MPTCP implementation @@ -1750,9 +1750,9 @@ diff -aurN linux-4.19.44/include/net/mptcp.h mptcp-mptcp_v0.95/include/net/mptcp +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_H */ -diff -aurN linux-4.19.44/include/net/mptcp_v4.h mptcp-mptcp_v0.95/include/net/mptcp_v4.h ---- linux-4.19.44/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/include/net/mptcp_v4.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/mptcp_v4.h mptcp-mptcp_v0.95/include/net/mptcp_v4.h +--- linux-4.19.53/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/include/net/mptcp_v4.h 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,76 @@ +/* + * MPTCP implementation @@ -1830,9 +1830,9 @@ diff -aurN linux-4.19.44/include/net/mptcp_v4.h mptcp-mptcp_v0.95/include/net/mp +#endif /* CONFIG_MPTCP */ + +#endif /* MPTCP_V4_H_ */ -diff -aurN linux-4.19.44/include/net/mptcp_v6.h mptcp-mptcp_v0.95/include/net/mptcp_v6.h ---- linux-4.19.44/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/include/net/mptcp_v6.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/mptcp_v6.h mptcp-mptcp_v0.95/include/net/mptcp_v6.h +--- linux-4.19.53/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/include/net/mptcp_v6.h 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,77 @@ +/* + * MPTCP implementation @@ -1911,9 +1911,9 @@ diff -aurN linux-4.19.44/include/net/mptcp_v6.h mptcp-mptcp_v0.95/include/net/mp +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_V6_H */ -diff -aurN linux-4.19.44/include/net/net_namespace.h mptcp-mptcp_v0.95/include/net/net_namespace.h ---- linux-4.19.44/include/net/net_namespace.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/net_namespace.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/net_namespace.h mptcp-mptcp_v0.95/include/net/net_namespace.h +--- linux-4.19.53/include/net/net_namespace.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/net_namespace.h 2019-06-22 05:42:25.000000000 +0200 @@ -19,6 +19,7 @@ #include #include @@ -1932,9 +1932,9 @@ diff -aurN linux-4.19.44/include/net/net_namespace.h mptcp-mptcp_v0.95/include/n #if IS_ENABLED(CONFIG_IEEE802154_6LOWPAN) struct netns_ieee802154_lowpan ieee802154_lowpan; #endif -diff -aurN linux-4.19.44/include/net/netns/mptcp.h mptcp-mptcp_v0.95/include/net/netns/mptcp.h ---- linux-4.19.44/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/include/net/netns/mptcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/netns/mptcp.h mptcp-mptcp_v0.95/include/net/netns/mptcp.h +--- linux-4.19.53/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/include/net/netns/mptcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,52 @@ +/* + * MPTCP implementation - MPTCP namespace @@ -1988,9 +1988,9 @@ diff -aurN linux-4.19.44/include/net/netns/mptcp.h mptcp-mptcp_v0.95/include/net +}; + +#endif /* __NETNS_MPTCP_H__ */ -diff -aurN linux-4.19.44/include/net/snmp.h mptcp-mptcp_v0.95/include/net/snmp.h ---- linux-4.19.44/include/net/snmp.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/snmp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/snmp.h mptcp-mptcp_v0.95/include/net/snmp.h +--- linux-4.19.53/include/net/snmp.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/snmp.h 2019-06-22 05:42:25.000000000 +0200 @@ -91,7 +91,6 @@ atomic_long_t mibs[ICMP6MSG_MIB_MAX]; }; @@ -1999,9 +1999,9 @@ diff -aurN linux-4.19.44/include/net/snmp.h mptcp-mptcp_v0.95/include/net/snmp.h /* TCP */ #define TCP_MIB_MAX __TCP_MIB_MAX struct tcp_mib { -diff -aurN linux-4.19.44/include/net/sock.h mptcp-mptcp_v0.95/include/net/sock.h ---- linux-4.19.44/include/net/sock.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/sock.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/sock.h mptcp-mptcp_v0.95/include/net/sock.h +--- linux-4.19.53/include/net/sock.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/sock.h 2019-06-22 05:42:25.000000000 +0200 @@ -810,6 +810,7 @@ SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ SOCK_RCU_FREE, /* wait rcu grace period in sk_destruct() */ @@ -2018,10 +2018,10 @@ diff -aurN linux-4.19.44/include/net/sock.h mptcp-mptcp_v0.95/include/net/sock.h /* Keeping track of sockets in use */ #ifdef CONFIG_PROC_FS -diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h ---- linux-4.19.44/include/net/tcp.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/tcp.h 2019-06-03 18:26:35.000000000 +0200 -@@ -183,6 +183,7 @@ +diff -aurN linux-4.19.53/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h +--- linux-4.19.53/include/net/tcp.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/tcp.h 2019-06-22 05:42:25.000000000 +0200 +@@ -185,6 +185,7 @@ #define TCPOPT_SACK 5 /* SACK Block */ #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ #define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */ @@ -2029,7 +2029,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h #define TCPOPT_FASTOPEN 34 /* Fast open (RFC7413) */ #define TCPOPT_EXP 254 /* Experimental */ /* Magic number to be after the option value for sharing TCP -@@ -239,6 +240,31 @@ +@@ -241,6 +242,31 @@ */ #define TFO_SERVER_WO_SOCKOPT1 0x400 @@ -2061,7 +2061,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h /* sysctl variables for tcp */ extern int sysctl_tcp_max_orphans; -@@ -311,6 +337,96 @@ +@@ -313,6 +339,96 @@ #define TCP_DEC_STATS(net, field) SNMP_DEC_STATS((net)->mib.tcp_statistics, field) #define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val) @@ -2158,7 +2158,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h void tcp_tasklet_init(void); void tcp_v4_err(struct sk_buff *skb, u32); -@@ -410,7 +526,9 @@ +@@ -412,7 +528,9 @@ struct vm_area_struct *vma); void tcp_parse_options(const struct net *net, const struct sk_buff *skb, struct tcp_options_received *opt_rx, @@ -2169,7 +2169,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h const u8 *tcp_parse_md5sig_option(const struct tcphdr *th); /* -@@ -419,6 +537,7 @@ +@@ -421,6 +539,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); void tcp_v4_mtu_reduced(struct sock *sk); @@ -2177,7 +2177,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h void tcp_req_err(struct sock *sk, u32 seq, bool abort); int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb); struct sock *tcp_create_openreq_child(const struct sock *sk, -@@ -525,7 +644,8 @@ +@@ -527,7 +646,8 @@ u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2187,7 +2187,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h u64 cookie_init_timestamp(struct request_sock *req); bool cookie_timestamp_decode(const struct net *net, struct tcp_options_received *opt); -@@ -539,7 +659,8 @@ +@@ -541,7 +661,8 @@ u32 __cookie_v6_init_sequence(const struct ipv6hdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2197,12 +2197,11 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h #endif /* tcp_output.c */ -@@ -575,10 +696,17 @@ +@@ -577,10 +698,16 @@ void tcp_skb_collapse_tstamp(struct sk_buff *skb, const struct sk_buff *next_skb); +u16 tcp_select_window(struct sock *sk); -+int select_size(const struct sock *sk, bool first_skb, bool zc); +bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, + int push_one, gfp_t gfp); + @@ -2215,7 +2214,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h void tcp_skb_mark_lost_uncond_verify(struct tcp_sock *tp, struct sk_buff *skb); void tcp_fin(struct sock *sk); -@@ -622,7 +750,7 @@ +@@ -624,7 +751,7 @@ } /* tcp.c */ @@ -2224,7 +2223,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h /* Read 'sendfile()'-style from a TCP socket */ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc, -@@ -810,6 +938,12 @@ +@@ -812,6 +939,12 @@ u16 tcp_gso_size; }; }; @@ -2237,7 +2236,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ __u8 sacked; /* State flags for SACK. */ -@@ -828,6 +962,14 @@ +@@ -830,6 +963,14 @@ has_rxtstamp:1, /* SKB has a RX timestamp */ unused:5; __u32 ack_seq; /* Sequence number ACK'd */ @@ -2252,7 +2251,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h union { struct { /* There is space for up to 24 bytes */ -@@ -1347,6 +1489,19 @@ +@@ -1349,6 +1490,19 @@ space - (space>>tcp_adv_win_scale); } @@ -2272,7 +2271,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h /* Note: caller must be prepared to deal with negative returns */ static inline int tcp_space(const struct sock *sk) { -@@ -1874,6 +2029,30 @@ +@@ -1876,6 +2030,30 @@ #endif }; @@ -2303,7 +2302,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h struct tcp_request_sock_ops { u16 mss_clamp; #ifdef CONFIG_TCP_MD5SIG -@@ -1884,12 +2063,13 @@ +@@ -1886,12 +2064,13 @@ const struct sock *sk, const struct sk_buff *skb); #endif @@ -2322,7 +2321,7 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h #endif struct dst_entry *(*route_req)(const struct sock *sk, struct flowi *fl, const struct request_sock *req); -@@ -1903,15 +2083,17 @@ +@@ -1905,15 +2084,17 @@ #ifdef CONFIG_SYN_COOKIES static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops, @@ -2341,9 +2340,9 @@ diff -aurN linux-4.19.44/include/net/tcp.h mptcp-mptcp_v0.95/include/net/tcp.h const struct sock *sk, struct sk_buff *skb, __u16 *mss) { -diff -aurN linux-4.19.44/include/net/tcp_states.h mptcp-mptcp_v0.95/include/net/tcp_states.h ---- linux-4.19.44/include/net/tcp_states.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/tcp_states.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/tcp_states.h mptcp-mptcp_v0.95/include/net/tcp_states.h +--- linux-4.19.53/include/net/tcp_states.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/tcp_states.h 2019-06-22 05:42:25.000000000 +0200 @@ -26,6 +26,7 @@ TCP_LISTEN, TCP_CLOSING, /* Now a valid state */ @@ -2360,9 +2359,9 @@ diff -aurN linux-4.19.44/include/net/tcp_states.h mptcp-mptcp_v0.95/include/net/ }; #endif /* _LINUX_TCP_STATES_H */ -diff -aurN linux-4.19.44/include/net/transp_v6.h mptcp-mptcp_v0.95/include/net/transp_v6.h ---- linux-4.19.44/include/net/transp_v6.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/net/transp_v6.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/net/transp_v6.h mptcp-mptcp_v0.95/include/net/transp_v6.h +--- linux-4.19.53/include/net/transp_v6.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/net/transp_v6.h 2019-06-22 05:42:25.000000000 +0200 @@ -58,6 +58,8 @@ /* address family specific functions */ @@ -2372,9 +2371,9 @@ diff -aurN linux-4.19.44/include/net/transp_v6.h mptcp-mptcp_v0.95/include/net/t void inet6_destroy_sock(struct sock *sk); -diff -aurN linux-4.19.44/include/trace/events/tcp.h mptcp-mptcp_v0.95/include/trace/events/tcp.h ---- linux-4.19.44/include/trace/events/tcp.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/trace/events/tcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/trace/events/tcp.h mptcp-mptcp_v0.95/include/trace/events/tcp.h +--- linux-4.19.53/include/trace/events/tcp.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/trace/events/tcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -10,6 +10,7 @@ #include #include @@ -2423,9 +2422,9 @@ diff -aurN linux-4.19.44/include/trace/events/tcp.h mptcp-mptcp_v0.95/include/tr ); #endif /* _TRACE_TCP_H */ -diff -aurN linux-4.19.44/include/uapi/linux/bpf.h mptcp-mptcp_v0.95/include/uapi/linux/bpf.h ---- linux-4.19.44/include/uapi/linux/bpf.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/uapi/linux/bpf.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/uapi/linux/bpf.h mptcp-mptcp_v0.95/include/uapi/linux/bpf.h +--- linux-4.19.53/include/uapi/linux/bpf.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/uapi/linux/bpf.h 2019-06-22 05:42:25.000000000 +0200 @@ -2671,6 +2671,7 @@ BPF_TCP_LISTEN, BPF_TCP_CLOSING, /* Now a valid state */ @@ -2434,9 +2433,9 @@ diff -aurN linux-4.19.44/include/uapi/linux/bpf.h mptcp-mptcp_v0.95/include/uapi BPF_TCP_MAX_STATES /* Leave at the end! */ }; -diff -aurN linux-4.19.44/include/uapi/linux/if.h mptcp-mptcp_v0.95/include/uapi/linux/if.h ---- linux-4.19.44/include/uapi/linux/if.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/uapi/linux/if.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/uapi/linux/if.h mptcp-mptcp_v0.95/include/uapi/linux/if.h +--- linux-4.19.53/include/uapi/linux/if.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/uapi/linux/if.h 2019-06-22 05:42:25.000000000 +0200 @@ -132,6 +132,9 @@ #define IFF_ECHO IFF_ECHO #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ @@ -2447,9 +2446,9 @@ diff -aurN linux-4.19.44/include/uapi/linux/if.h mptcp-mptcp_v0.95/include/uapi/ #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) -diff -aurN linux-4.19.44/include/uapi/linux/mptcp.h mptcp-mptcp_v0.95/include/uapi/linux/mptcp.h ---- linux-4.19.44/include/uapi/linux/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/include/uapi/linux/mptcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/uapi/linux/mptcp.h mptcp-mptcp_v0.95/include/uapi/linux/mptcp.h +--- linux-4.19.53/include/uapi/linux/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/include/uapi/linux/mptcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,149 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* @@ -2600,9 +2599,9 @@ diff -aurN linux-4.19.44/include/uapi/linux/mptcp.h mptcp-mptcp_v0.95/include/ua +}; + +#endif /* _LINUX_MPTCP_H */ -diff -aurN linux-4.19.44/include/uapi/linux/tcp.h mptcp-mptcp_v0.95/include/uapi/linux/tcp.h ---- linux-4.19.44/include/uapi/linux/tcp.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/include/uapi/linux/tcp.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/include/uapi/linux/tcp.h mptcp-mptcp_v0.95/include/uapi/linux/tcp.h +--- linux-4.19.53/include/uapi/linux/tcp.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/include/uapi/linux/tcp.h 2019-06-22 05:42:25.000000000 +0200 @@ -18,9 +18,15 @@ #ifndef _UAPI_LINUX_TCP_H #define _UAPI_LINUX_TCP_H @@ -2688,9 +2687,9 @@ diff -aurN linux-4.19.44/include/uapi/linux/tcp.h mptcp-mptcp_v0.95/include/uapi /* for TCP_MD5SIG socket option */ #define TCP_MD5SIG_MAXKEYLEN 80 -diff -aurN linux-4.19.44/net/core/dev.c mptcp-mptcp_v0.95/net/core/dev.c ---- linux-4.19.44/net/core/dev.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/core/dev.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/core/dev.c mptcp-mptcp_v0.95/net/core/dev.c +--- linux-4.19.53/net/core/dev.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/core/dev.c 2019-06-22 05:42:25.000000000 +0200 @@ -7471,7 +7471,7 @@ dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | @@ -2700,9 +2699,9 @@ diff -aurN linux-4.19.44/net/core/dev.c mptcp-mptcp_v0.95/net/core/dev.c (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | IFF_ALLMULTI)); -diff -aurN linux-4.19.44/net/core/skbuff.c mptcp-mptcp_v0.95/net/core/skbuff.c ---- linux-4.19.44/net/core/skbuff.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/core/skbuff.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/core/skbuff.c mptcp-mptcp_v0.95/net/core/skbuff.c +--- linux-4.19.53/net/core/skbuff.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/core/skbuff.c 2019-06-22 05:42:25.000000000 +0200 @@ -536,7 +536,7 @@ skb_drop_list(&skb_shinfo(skb)->frag_list); } @@ -2712,9 +2711,9 @@ diff -aurN linux-4.19.44/net/core/skbuff.c mptcp-mptcp_v0.95/net/core/skbuff.c { struct sk_buff *list; -diff -aurN linux-4.19.44/net/core/sock.c mptcp-mptcp_v0.95/net/core/sock.c ---- linux-4.19.44/net/core/sock.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/core/sock.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/core/sock.c mptcp-mptcp_v0.95/net/core/sock.c +--- linux-4.19.53/net/core/sock.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/core/sock.c 2019-06-22 05:42:25.000000000 +0200 @@ -140,6 +140,11 @@ #include @@ -2774,9 +2773,9 @@ diff -aurN linux-4.19.44/net/core/sock.c mptcp-mptcp_v0.95/net/core/sock.c mem_cgroup_sk_alloc(newsk); cgroup_sk_alloc(&newsk->sk_cgrp_data); -diff -aurN linux-4.19.44/net/ipv4/af_inet.c mptcp-mptcp_v0.95/net/ipv4/af_inet.c ---- linux-4.19.44/net/ipv4/af_inet.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/af_inet.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/af_inet.c mptcp-mptcp_v0.95/net/ipv4/af_inet.c +--- linux-4.19.53/net/ipv4/af_inet.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/af_inet.c 2019-06-22 05:42:25.000000000 +0200 @@ -104,6 +104,7 @@ #include #include @@ -2840,9 +2839,9 @@ diff -aurN linux-4.19.44/net/ipv4/af_inet.c mptcp-mptcp_v0.95/net/ipv4/af_inet.c /* Setup TCP slab cache for open requests. */ tcp_init(); -diff -aurN linux-4.19.44/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.95/net/ipv4/inet_connection_sock.c ---- linux-4.19.44/net/ipv4/inet_connection_sock.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/inet_connection_sock.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.95/net/ipv4/inet_connection_sock.c +--- linux-4.19.53/net/ipv4/inet_connection_sock.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/inet_connection_sock.c 2019-06-22 05:42:25.000000000 +0200 @@ -23,6 +23,7 @@ #include #include @@ -2900,9 +2899,9 @@ diff -aurN linux-4.19.44/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.95/net/i sock_put(child); cond_resched(); -diff -aurN linux-4.19.44/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.95/net/ipv4/ip_sockglue.c ---- linux-4.19.44/net/ipv4/ip_sockglue.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/ip_sockglue.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.95/net/ipv4/ip_sockglue.c +--- linux-4.19.53/net/ipv4/ip_sockglue.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/ip_sockglue.c 2019-06-22 05:42:25.000000000 +0200 @@ -44,6 +44,8 @@ #endif #include @@ -2942,9 +2941,9 @@ diff -aurN linux-4.19.44/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.95/net/ipv4/ip_so } break; case IP_TTL: -diff -aurN linux-4.19.44/net/ipv4/Kconfig mptcp-mptcp_v0.95/net/ipv4/Kconfig ---- linux-4.19.44/net/ipv4/Kconfig 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/Kconfig 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/Kconfig mptcp-mptcp_v0.95/net/ipv4/Kconfig +--- linux-4.19.53/net/ipv4/Kconfig 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/Kconfig 2019-06-22 05:42:25.000000000 +0200 @@ -680,6 +680,51 @@ bufferbloat, policers, or AQM schemes that do not provide a delay signal. It requires the fq ("Fair Queue") pacing packet scheduler. @@ -3030,9 +3029,9 @@ diff -aurN linux-4.19.44/net/ipv4/Kconfig mptcp-mptcp_v0.95/net/ipv4/Kconfig default "reno" if DEFAULT_RENO default "dctcp" if DEFAULT_DCTCP default "cdg" if DEFAULT_CDG -diff -aurN linux-4.19.44/net/ipv4/syncookies.c mptcp-mptcp_v0.95/net/ipv4/syncookies.c ---- linux-4.19.44/net/ipv4/syncookies.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/syncookies.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/syncookies.c mptcp-mptcp_v0.95/net/ipv4/syncookies.c +--- linux-4.19.53/net/ipv4/syncookies.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/syncookies.c 2019-06-22 05:42:25.000000000 +0200 @@ -16,6 +16,8 @@ #include #include @@ -3146,9 +3145,9 @@ diff -aurN linux-4.19.44/net/ipv4/syncookies.c mptcp-mptcp_v0.95/net/ipv4/syncoo ireq->rcv_wscale = rcv_wscale; ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst); -diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c ---- linux-4.19.44/net/ipv4/tcp.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c +--- linux-4.19.53/net/ipv4/tcp.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp.c 2019-06-22 05:42:25.000000000 +0200 @@ -274,6 +274,7 @@ #include @@ -3157,10 +3156,12 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c #include #include #include -@@ -399,6 +400,24 @@ +@@ -399,6 +400,26 @@ return rate64; } ++static int select_size(const struct sock *sk, bool first_skb, bool zc); ++ +const struct tcp_sock_ops tcp_specific = { + .__select_window = __tcp_select_window, + .select_window = tcp_select_window, @@ -3182,7 +3183,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c /* Address-family independent initialization for a tcp_sock. * * NOTE: A lot of things set to zero explicitly by call to -@@ -452,6 +471,11 @@ +@@ -452,6 +473,11 @@ sk->sk_sndbuf = sock_net(sk)->ipv4.sysctl_tcp_wmem[1]; sk->sk_rcvbuf = sock_net(sk)->ipv4.sysctl_tcp_rmem[1]; @@ -3194,7 +3195,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c sk_sockets_allocated_inc(sk); sk->sk_route_forced_caps = NETIF_F_GSO; } -@@ -466,7 +490,7 @@ +@@ -466,7 +492,7 @@ tcp_init_metrics(sk); tcp_call_bpf(sk, bpf_op, 0, NULL); tcp_init_congestion_control(sk); @@ -3203,7 +3204,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } static void tcp_tx_timestamp(struct sock *sk, u16 tsflags) -@@ -786,6 +810,7 @@ +@@ -786,6 +812,7 @@ int ret; sock_rps_record_flow(sk); @@ -3211,7 +3212,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c /* * We can't seek on a socket input */ -@@ -796,6 +821,16 @@ +@@ -796,6 +823,16 @@ lock_sock(sk); @@ -3228,7 +3229,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c timeo = sock_rcvtimeo(sk, sock->file->f_flags & O_NONBLOCK); while (tss.len) { ret = __tcp_splice_read(sk, &tss); -@@ -899,8 +934,7 @@ +@@ -899,8 +936,7 @@ return NULL; } @@ -3238,7 +3239,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c { struct tcp_sock *tp = tcp_sk(sk); u32 new_size_goal, size_goal; -@@ -928,8 +962,13 @@ +@@ -928,8 +964,13 @@ { int mss_now; @@ -3254,7 +3255,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c return mss_now; } -@@ -948,12 +987,34 @@ +@@ -948,12 +989,34 @@ * is fully established. */ if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) && @@ -3290,7 +3291,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c sk_clear_bit(SOCKWQ_ASYNC_NOSPACE, sk); mss_now = tcp_send_mss(sk, &size_goal, flags); -@@ -1072,7 +1133,8 @@ +@@ -1072,7 +1135,8 @@ int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset, size_t size, int flags) { @@ -3300,7 +3301,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c return sock_no_sendpage_locked(sk, page, offset, size, flags); tcp_rate_check_app_limited(sk); /* is sending application-limited? */ -@@ -1104,14 +1166,14 @@ +@@ -1104,14 +1168,14 @@ * This also speeds up tso_fragment(), since it wont fallback * to tcp_fragment(). */ @@ -3313,11 +3314,11 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } -static int select_size(bool first_skb, bool zc) -+int select_size(const struct sock *sk, bool first_skb, bool zc) ++static int select_size(const struct sock *sk, bool first_skb, bool zc) { if (zc) return 0; -@@ -1221,12 +1283,21 @@ +@@ -1221,12 +1285,21 @@ * is fully established. */ if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) && @@ -3340,7 +3341,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (unlikely(tp->repair)) { if (tp->repair_queue == TCP_RECV_QUEUE) { copied = tcp_send_rcvq(sk, msg, size); -@@ -1282,7 +1353,7 @@ +@@ -1282,7 +1355,7 @@ goto restart; } first_skb = tcp_rtx_and_write_queues_empty(sk); @@ -3349,7 +3350,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c skb = sk_stream_alloc_skb(sk, linear, sk->sk_allocation, first_skb); if (!skb) -@@ -1527,7 +1598,7 @@ +@@ -1527,7 +1600,7 @@ * calculation of whether or not we must ACK for the sake of * a window update. */ @@ -3358,7 +3359,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c { struct tcp_sock *tp = tcp_sk(sk); bool time_to_ack = false; -@@ -1570,7 +1641,7 @@ +@@ -1570,7 +1643,7 @@ /* Optimize, __tcp_select_window() is not cheap. */ if (2*rcv_window_now <= tp->window_clamp) { @@ -3367,7 +3368,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c /* Send ACK now, if this read freed lots of space * in our buffer. Certainly, new_window is new window. -@@ -1686,7 +1757,7 @@ +@@ -1686,7 +1759,7 @@ /* Clean up data we have read: This will do ACK frames. */ if (copied > 0) { tcp_recv_skb(sk, seq, &offset); @@ -3376,7 +3377,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } return copied; } -@@ -1943,6 +2014,16 @@ +@@ -1943,6 +2016,16 @@ lock_sock(sk); @@ -3393,7 +3394,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c err = -ENOTCONN; if (sk->sk_state == TCP_LISTEN) goto out; -@@ -2061,7 +2142,7 @@ +@@ -2061,7 +2144,7 @@ } } @@ -3402,7 +3403,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (copied >= target) { /* Do not sleep, just process backlog. */ -@@ -2152,7 +2233,7 @@ +@@ -2152,7 +2235,7 @@ */ /* Clean up data we have read: This will do ACK frames. */ @@ -3411,7 +3412,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c release_sock(sk); -@@ -2264,7 +2345,7 @@ +@@ -2264,7 +2347,7 @@ [TCP_NEW_SYN_RECV] = TCP_CLOSE, /* should not happen ! */ }; @@ -3420,7 +3421,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c { int next = (int)new_state[sk->sk_state]; int ns = next & TCP_STATE_MASK; -@@ -2294,7 +2375,7 @@ +@@ -2294,7 +2377,7 @@ TCPF_SYN_RECV | TCPF_CLOSE_WAIT)) { /* Clear out any half completed packets. FIN if needed. */ if (tcp_close_state(sk)) @@ -3429,7 +3430,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } } EXPORT_SYMBOL(tcp_shutdown); -@@ -2319,6 +2400,17 @@ +@@ -2319,6 +2402,17 @@ int data_was_unread = 0; int state; @@ -3447,7 +3448,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c lock_sock(sk); sk->sk_shutdown = SHUTDOWN_MASK; -@@ -2363,7 +2455,7 @@ +@@ -2363,7 +2457,7 @@ /* Unread data was tossed, zap the connection. */ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONCLOSE); tcp_set_state(sk, TCP_CLOSE); @@ -3456,7 +3457,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } else if (sock_flag(sk, SOCK_LINGER) && !sk->sk_lingertime) { /* Check zero linger _after_ checking for unread data. */ sk->sk_prot->disconnect(sk, 0); -@@ -2437,7 +2529,7 @@ +@@ -2437,7 +2531,7 @@ struct tcp_sock *tp = tcp_sk(sk); if (tp->linger2 < 0) { tcp_set_state(sk, TCP_CLOSE); @@ -3465,7 +3466,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONLINGER); } else { -@@ -2447,7 +2539,8 @@ +@@ -2447,7 +2541,8 @@ inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); } else { @@ -3475,7 +3476,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c goto out; } } -@@ -2456,7 +2549,7 @@ +@@ -2456,7 +2551,7 @@ sk_mem_reclaim(sk); if (tcp_check_oom(sk, 0)) { tcp_set_state(sk, TCP_CLOSE); @@ -3484,7 +3485,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONMEMORY); } else if (!check_net(sock_net(sk))) { -@@ -2485,15 +2578,6 @@ +@@ -2485,15 +2580,6 @@ } EXPORT_SYMBOL(tcp_close); @@ -3500,7 +3501,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c static void tcp_rtx_queue_purge(struct sock *sk) { struct rb_node *p = rb_first(&sk->tcp_rtx_queue); -@@ -2514,6 +2598,10 @@ +@@ -2514,6 +2600,10 @@ { struct sk_buff *skb; @@ -3511,7 +3512,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c tcp_chrono_stop(sk, TCP_CHRONO_BUSY); while ((skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { tcp_skb_tsorted_anchor_cleanup(skb); -@@ -2548,7 +2636,7 @@ +@@ -2548,7 +2638,7 @@ /* The last check adjusts for discrepancy of Linux wrt. RFC * states */ @@ -3520,7 +3521,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c sk->sk_err = ECONNRESET; } else if (old_state == TCP_SYN_SENT) sk->sk_err = ECONNRESET; -@@ -2566,6 +2654,13 @@ +@@ -2566,6 +2656,13 @@ if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) inet_reset_saddr(sk); @@ -3534,7 +3535,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c sk->sk_shutdown = 0; sock_reset_flag(sk, SOCK_DONE); tp->srtt_us = 0; -@@ -2618,7 +2713,7 @@ +@@ -2618,7 +2715,7 @@ static inline bool tcp_can_repair_sock(const struct sock *sk) { return ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN) && @@ -3543,7 +3544,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } static int tcp_repair_set_window(struct tcp_sock *tp, char __user *optbuf, int len) -@@ -2762,6 +2857,61 @@ +@@ -2762,6 +2859,61 @@ return tcp_fastopen_reset_cipher(net, sk, key, sizeof(key)); } @@ -3605,7 +3606,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c default: /* fallthru */ break; -@@ -2942,6 +3092,12 @@ +@@ -2942,6 +3094,12 @@ break; case TCP_DEFER_ACCEPT: @@ -3618,7 +3619,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c /* Translate value in seconds to number of retransmits */ icsk->icsk_accept_queue.rskq_defer_accept = secs_to_retrans(val, TCP_TIMEOUT_INIT / HZ, -@@ -2969,7 +3125,7 @@ +@@ -2969,7 +3127,7 @@ (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT) && inet_csk_ack_scheduled(sk)) { icsk->icsk_ack.pending |= ICSK_ACK_PUSHED; @@ -3627,7 +3628,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (!(val & 1)) icsk->icsk_ack.pingpong = 1; } -@@ -2979,7 +3135,7 @@ +@@ -2979,7 +3137,7 @@ #ifdef CONFIG_TCP_MD5SIG case TCP_MD5SIG: case TCP_MD5SIG_EXT: @@ -3636,7 +3637,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c err = tp->af_specific->md5_parse(sk, optname, optval, optlen); else err = -EINVAL; -@@ -3038,6 +3194,32 @@ +@@ -3038,6 +3196,32 @@ tp->notsent_lowat = val; sk->sk_write_space(sk); break; @@ -3669,7 +3670,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c case TCP_INQ: if (val > 1 || val < 0) err = -EINVAL; -@@ -3097,7 +3279,7 @@ +@@ -3097,7 +3281,7 @@ } /* Return information about state of tcp endpoint in API format. */ @@ -3678,7 +3679,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c { const struct tcp_sock *tp = tcp_sk(sk); /* iff sk_type == SOCK_STREAM */ const struct inet_connection_sock *icsk = inet_csk(sk); -@@ -3134,7 +3316,8 @@ +@@ -3134,7 +3318,8 @@ return; } @@ -3688,7 +3689,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c info->tcpi_ca_state = icsk->icsk_ca_state; info->tcpi_retransmits = icsk->icsk_retransmits; -@@ -3208,7 +3391,9 @@ +@@ -3208,7 +3393,9 @@ info->tcpi_bytes_retrans = tp->bytes_retrans; info->tcpi_dsack_dups = tp->dsack_dups; info->tcpi_reord_seen = tp->reord_seen; @@ -3699,7 +3700,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c } EXPORT_SYMBOL_GPL(tcp_get_info); -@@ -3353,7 +3538,7 @@ +@@ -3353,7 +3540,7 @@ if (get_user(len, optlen)) return -EFAULT; @@ -3708,7 +3709,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c len = min_t(unsigned int, len, sizeof(info)); if (put_user(len, optlen)) -@@ -3544,6 +3729,87 @@ +@@ -3544,6 +3731,87 @@ } return 0; } @@ -3796,7 +3797,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c #ifdef CONFIG_MMU case TCP_ZEROCOPY_RECEIVE: { struct tcp_zerocopy_receive zc; -@@ -3737,7 +4003,9 @@ +@@ -3737,7 +4005,9 @@ if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV) TCP_INC_STATS(sock_net(sk), TCP_MIB_ATTEMPTFAILS); @@ -3806,7 +3807,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c tcp_clear_xmit_timers(sk); if (req) reqsk_fastopen_remove(sk, req, false); -@@ -3753,6 +4021,8 @@ +@@ -3753,6 +4023,8 @@ int tcp_abort(struct sock *sk, int err) { @@ -3815,7 +3816,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (!sk_fullsock(sk)) { if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); -@@ -3766,7 +4036,7 @@ +@@ -3766,7 +4038,7 @@ } /* Don't race with userspace socket closes such as tcp_close. */ @@ -3824,7 +3825,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (sk->sk_state == TCP_LISTEN) { tcp_set_state(sk, TCP_CLOSE); -@@ -3775,7 +4045,7 @@ +@@ -3775,7 +4047,7 @@ /* Don't race with BH socket closes such as inet_csk_listen_stop. */ local_bh_disable(); @@ -3833,7 +3834,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_err = err; -@@ -3783,14 +4053,14 @@ +@@ -3783,14 +4055,14 @@ smp_wmb(); sk->sk_error_report(sk); if (tcp_need_reset(sk->sk_state)) @@ -3851,9 +3852,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp.c mptcp-mptcp_v0.95/net/ipv4/tcp.c return 0; } EXPORT_SYMBOL_GPL(tcp_abort); -diff -aurN linux-4.19.44/net/ipv4/tcp_diag.c mptcp-mptcp_v0.95/net/ipv4/tcp_diag.c ---- linux-4.19.44/net/ipv4/tcp_diag.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_diag.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_diag.c mptcp-mptcp_v0.95/net/ipv4/tcp_diag.c +--- linux-4.19.53/net/ipv4/tcp_diag.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_diag.c 2019-06-22 05:42:25.000000000 +0200 @@ -34,7 +34,7 @@ r->idiag_wqueue = tp->write_seq - tp->snd_una; } @@ -3863,9 +3864,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_diag.c mptcp-mptcp_v0.95/net/ipv4/tcp_diag } #ifdef CONFIG_TCP_MD5SIG -diff -aurN linux-4.19.44/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.95/net/ipv4/tcp_fastopen.c ---- linux-4.19.44/net/ipv4/tcp_fastopen.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_fastopen.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.95/net/ipv4/tcp_fastopen.c +--- linux-4.19.53/net/ipv4/tcp_fastopen.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_fastopen.c 2019-06-22 05:42:25.000000000 +0200 @@ -9,6 +9,7 @@ #include #include @@ -3915,9 +3916,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.95/net/ipv4/tcp_ /* tcp_conn_request() is sending the SYNACK, * and queues the child into listener accept queue. */ -diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_input.c ---- linux-4.19.44/net/ipv4/tcp_input.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_input.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_input.c +--- linux-4.19.53/net/ipv4/tcp_input.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_input.c 2019-06-22 05:42:25.000000000 +0200 @@ -76,35 +76,15 @@ #include #include @@ -4044,7 +4045,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { const struct tcp_sock *tp = tcp_sk(sk); /* Old crap is replaced with new one. 8) -@@ -1396,6 +1396,13 @@ +@@ -1411,6 +1411,13 @@ int len; int in_sack; @@ -4058,7 +4059,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Normally R but no L won't result in plain S */ if (!dup_sack && (TCP_SKB_CB(skb)->sacked & (TCPCB_LOST|TCPCB_SACKED_RETRANS)) == TCPCB_SACKED_RETRANS) -@@ -2945,7 +2952,7 @@ +@@ -2959,7 +2966,7 @@ */ tcp_update_rtt_min(sk, ca_rtt_us, flag); tcp_rtt_estimator(sk, seq_rtt_us); @@ -4067,7 +4068,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* RFC6298: only reset backoff on valid RTT measurement. */ inet_csk(sk)->icsk_backoff = 0; -@@ -3013,7 +3020,7 @@ +@@ -3027,7 +3034,7 @@ } /* If we get here, the whole TSO packet has not been acked. */ @@ -4076,7 +4077,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); u32 packets_acked; -@@ -3139,6 +3146,8 @@ +@@ -3153,6 +3160,8 @@ */ if (likely(!(scb->tcp_flags & TCPHDR_SYN))) { flag |= FLAG_DATA_ACKED; @@ -4085,7 +4086,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp } else { flag |= FLAG_SYN_ACKED; tp->retrans_stamp = 0; -@@ -3257,7 +3266,7 @@ +@@ -3271,7 +3280,7 @@ return flag; } @@ -4094,7 +4095,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct inet_connection_sock *icsk = inet_csk(sk); struct sk_buff *head = tcp_send_head(sk); -@@ -3329,9 +3338,8 @@ +@@ -3343,9 +3352,8 @@ /* Check that window update is acceptable. * The function assumes that snd_una<=ack<=snd_next. */ @@ -4106,7 +4107,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { return after(ack, tp->snd_una) || after(ack_seq, tp->snd_wl1) || -@@ -3568,7 +3576,7 @@ +@@ -3582,7 +3590,7 @@ } /* This routine deals with incoming acks, but not outgoing ones. */ @@ -4115,7 +4116,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -3681,6 +3689,16 @@ +@@ -3695,6 +3703,16 @@ tcp_rack_update_reo_wnd(sk, &rs); @@ -4132,7 +4133,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (tp->tlp_high_seq) tcp_process_tlp_ack(sk, ack, flag); /* If needed, reset TLP/RTO timer; RACK may later override this. */ -@@ -3780,8 +3798,10 @@ +@@ -3794,8 +3812,10 @@ */ void tcp_parse_options(const struct net *net, const struct sk_buff *skb, @@ -4145,7 +4146,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { const unsigned char *ptr; const struct tcphdr *th = tcp_hdr(skb); -@@ -3865,6 +3885,10 @@ +@@ -3879,6 +3899,10 @@ */ break; #endif @@ -4156,7 +4157,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp case TCPOPT_FASTOPEN: tcp_parse_fastopen_option( opsize - TCPOLEN_FASTOPEN_BASE, -@@ -3932,7 +3956,9 @@ +@@ -3946,7 +3970,9 @@ return true; } @@ -4167,7 +4168,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -4091,6 +4117,11 @@ +@@ -4105,6 +4131,11 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4179,7 +4180,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp inet_csk_schedule_ack(sk); sk->sk_shutdown |= RCV_SHUTDOWN; -@@ -4101,6 +4132,10 @@ +@@ -4115,6 +4146,10 @@ case TCP_ESTABLISHED: /* Move to CLOSE_WAIT */ tcp_set_state(sk, TCP_CLOSE_WAIT); @@ -4190,7 +4191,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp inet_csk(sk)->icsk_ack.pingpong = 1; break; -@@ -4123,9 +4158,16 @@ +@@ -4137,9 +4172,16 @@ tcp_set_state(sk, TCP_CLOSING); break; case TCP_FIN_WAIT2: @@ -4208,7 +4209,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp break; default: /* Only TCP_LISTEN and TCP_CLOSE are left, in these -@@ -4147,6 +4189,10 @@ +@@ -4161,6 +4203,10 @@ if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_state_change(sk); @@ -4219,7 +4220,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Do not send POLL_HUP for half duplex close. */ if (sk->sk_shutdown == SHUTDOWN_MASK || sk->sk_state == TCP_CLOSE) -@@ -4349,6 +4395,9 @@ +@@ -4363,6 +4409,9 @@ *fragstolen = false; @@ -4229,7 +4230,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Its possible this segment overlaps with prior segment in queue */ if (TCP_SKB_CB(from)->seq != TCP_SKB_CB(to)->end_seq) return false; -@@ -4403,7 +4452,7 @@ +@@ -4417,7 +4466,7 @@ /* This one checks to see if we can put data from the * out_of_order queue into the receive_queue. */ @@ -4238,7 +4239,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); __u32 dsack_high = tp->rcv_nxt; -@@ -4426,7 +4475,14 @@ +@@ -4440,7 +4489,14 @@ p = rb_next(p); rb_erase(&skb->rbnode, &tp->out_of_order_queue); @@ -4254,7 +4255,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp SOCK_DEBUG(sk, "ofo packet was already received\n"); tcp_drop(sk, skb); continue; -@@ -4460,6 +4516,9 @@ +@@ -4474,6 +4530,9 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb, unsigned int size) { @@ -4264,7 +4265,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || !sk_rmem_schedule(sk, skb, size)) { -@@ -4474,7 +4533,7 @@ +@@ -4488,7 +4547,7 @@ return 0; } @@ -4273,7 +4274,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); struct rb_node **p, *parent; -@@ -4542,7 +4601,8 @@ +@@ -4556,7 +4615,8 @@ continue; } if (before(seq, TCP_SKB_CB(skb1)->end_seq)) { @@ -4283,7 +4284,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* All the bits are present. Drop. */ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFOMERGE); -@@ -4589,6 +4649,11 @@ +@@ -4603,6 +4663,11 @@ end_seq); break; } @@ -4295,7 +4296,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp rb_erase(&skb1->rbnode, &tp->out_of_order_queue); tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq, TCP_SKB_CB(skb1)->end_seq); -@@ -4600,7 +4665,7 @@ +@@ -4614,7 +4679,7 @@ tp->ooo_last_skb = skb; add_sack: @@ -4304,7 +4305,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_sack_new_ofo_skb(sk, seq, end_seq); end: if (skb) { -@@ -4610,8 +4675,8 @@ +@@ -4624,8 +4689,8 @@ } } @@ -4315,7 +4316,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { int eaten; struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue); -@@ -4685,7 +4750,7 @@ +@@ -4699,7 +4764,7 @@ const struct tcp_sock *tp = tcp_sk(sk); int avail = tp->rcv_nxt - tp->copied_seq; @@ -4324,7 +4325,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp return; sk->sk_data_ready(sk); -@@ -4697,10 +4762,14 @@ +@@ -4711,10 +4776,14 @@ bool fragstolen; int eaten; @@ -4340,7 +4341,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp skb_dst_drop(skb); __skb_pull(skb, tcp_hdr(skb)->doff * 4); -@@ -4728,7 +4797,7 @@ +@@ -4742,7 +4811,7 @@ } eaten = tcp_queue_rcv(sk, skb, 0, &fragstolen); @@ -4349,7 +4350,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_event_data_recv(sk, skb); if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) tcp_fin(sk); -@@ -4750,7 +4819,11 @@ +@@ -4764,7 +4833,11 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); @@ -4362,7 +4363,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_data_ready(sk); return; } -@@ -5098,7 +5171,7 @@ +@@ -5112,7 +5185,7 @@ return -1; } @@ -4371,7 +4372,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { const struct tcp_sock *tp = tcp_sk(sk); -@@ -5133,7 +5206,7 @@ +@@ -5147,7 +5220,7 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4380,7 +4381,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_sndbuf_expand(sk); tp->snd_cwnd_stamp = tcp_jiffies32; } -@@ -5147,10 +5220,11 @@ +@@ -5161,10 +5234,11 @@ sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); /* pairs with tcp_poll() */ smp_mb(); @@ -4395,7 +4396,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_chrono_stop(sk, TCP_CHRONO_SNDBUF_LIMITED); } } -@@ -5178,7 +5252,7 @@ +@@ -5192,7 +5266,7 @@ * we have not received enough bytes to satisfy the condition. */ (tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat || @@ -4404,7 +4405,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* We ACK each frame or... */ tcp_in_quickack_mode(sk) || /* Protocol state mandates a one-time immediate ACK */ -@@ -5313,6 +5387,10 @@ +@@ -5327,6 +5401,10 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4415,7 +4416,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Check if we get a new urgent pointer - normally not. */ if (th->urg) tcp_check_urg(sk, th); -@@ -5455,9 +5533,15 @@ +@@ -5469,9 +5547,15 @@ goto discard; } @@ -4431,7 +4432,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_drop(sk, skb); return false; } -@@ -5514,6 +5598,10 @@ +@@ -5528,6 +5612,10 @@ tp->rx_opt.saw_tstamp = 0; @@ -4442,7 +4443,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* pred_flags is 0xS?10 << 16 + snd_wnd * if header_prediction is to be made * 'S' will always be tp->tcp_header_len >> 2 -@@ -5697,17 +5785,24 @@ +@@ -5711,17 +5799,24 @@ struct tcp_fastopen_cookie *cookie) { struct tcp_sock *tp = tcp_sk(sk); @@ -4469,7 +4470,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp mss = opt.mss_clamp; } -@@ -5731,7 +5826,11 @@ +@@ -5745,7 +5840,11 @@ tcp_fastopen_cache_set(sk, mss, cookie, syn_drop, try_exp); @@ -4482,7 +4483,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp skb_rbtree_walk_from(data) { if (__tcp_retransmit_skb(sk, data, 1)) break; -@@ -5771,9 +5870,13 @@ +@@ -5785,9 +5884,13 @@ struct tcp_sock *tp = tcp_sk(sk); struct tcp_fastopen_cookie foc = { .len = -1 }; int saved_clamp = tp->rx_opt.mss_clamp; @@ -4497,7 +4498,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -5833,6 +5936,35 @@ +@@ -5847,6 +5950,35 @@ tcp_init_wl(tp, TCP_SKB_CB(skb)->seq); tcp_ack(sk, skb, FLAG_SLOWPATH); @@ -4533,7 +4534,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Ok.. it's good. Set up sequence numbers and * move to established. */ -@@ -5859,6 +5991,11 @@ +@@ -5873,6 +6005,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4545,7 +4546,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); tcp_initialize_rcv_mss(sk); -@@ -5882,9 +6019,12 @@ +@@ -5896,9 +6033,12 @@ } if (fastopen_fail) return -1; @@ -4560,7 +4561,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Save one ACK. Data will be ready after * several ticks, if write_pending is set. * -@@ -5923,6 +6063,7 @@ +@@ -5937,6 +6077,7 @@ tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -4568,7 +4569,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5939,6 +6080,11 @@ +@@ -5953,6 +6094,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4580,7 +4581,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; tp->copied_seq = tp->rcv_nxt; tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -@@ -5997,6 +6143,7 @@ +@@ -6011,6 +6157,7 @@ */ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) @@ -4588,7 +4589,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -6039,6 +6186,16 @@ +@@ -6053,6 +6200,16 @@ tp->rx_opt.saw_tstamp = 0; tcp_mstamp_refresh(tp); queued = tcp_rcv_synsent_state_process(sk, skb, th); @@ -4605,7 +4606,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (queued >= 0) return queued; -@@ -6121,6 +6278,8 @@ +@@ -6135,6 +6292,8 @@ if (tp->rx_opt.tstamp_ok) tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; @@ -4614,7 +4615,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (!inet_csk(sk)->icsk_ca_ops->cong_control) tcp_update_pacing_rate(sk); -@@ -6130,6 +6289,30 @@ +@@ -6144,6 +6303,30 @@ tcp_initialize_rcv_mss(sk); tcp_fast_path_on(tp); @@ -4645,7 +4646,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp break; case TCP_FIN_WAIT1: { -@@ -6177,7 +6360,8 @@ +@@ -6191,7 +6374,8 @@ tmo = tcp_fin_time(sk); if (tmo > TCP_TIMEWAIT_LEN) { inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); @@ -4655,7 +4656,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp /* Bad case. We could lose such FIN otherwise. * It is not a big problem, but it looks confusing * and not so rare event. We still can lose it now, -@@ -6186,7 +6370,7 @@ +@@ -6200,7 +6384,7 @@ */ inet_csk_reset_keepalive_timer(sk, tmo); } else { @@ -4664,7 +4665,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp goto discard; } break; -@@ -6194,7 +6378,7 @@ +@@ -6208,7 +6392,7 @@ case TCP_CLOSING: if (tp->snd_una == tp->write_seq) { @@ -4673,7 +4674,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp goto discard; } break; -@@ -6206,6 +6390,9 @@ +@@ -6220,6 +6404,9 @@ goto discard; } break; @@ -4683,7 +4684,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp } /* step 6: check the URG bit */ -@@ -6227,7 +6414,8 @@ +@@ -6241,7 +6428,8 @@ */ if (sk->sk_shutdown & RCV_SHUTDOWN) { if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq && @@ -4693,7 +4694,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA); tcp_reset(sk); return 1; -@@ -6324,6 +6512,8 @@ +@@ -6338,6 +6526,8 @@ ireq->wscale_ok = rx_opt->wscale_ok; ireq->acked = 0; ireq->ecn_ok = 0; @@ -4702,7 +4703,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp ireq->ir_rmt_port = tcp_hdr(skb)->source; ireq->ir_num = ntohs(tcp_hdr(skb)->dest); ireq->ir_mark = inet_request_mark(sk, skb); -@@ -6421,12 +6611,17 @@ +@@ -6435,12 +6625,17 @@ /* TW buckets are converted to open requests without * limitations, they conserve resources and peer is * evidently real one. @@ -4721,7 +4722,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp } if (sk_acceptq_is_full(sk)) { -@@ -6444,8 +6639,8 @@ +@@ -6458,8 +6653,8 @@ tcp_clear_options(&tmp_opt); tmp_opt.mss_clamp = af_ops->mss_clamp; tmp_opt.user_mss = tp->rx_opt.user_mss; @@ -4732,7 +4733,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (want_cookie && !tmp_opt.saw_tstamp) tcp_clear_options(&tmp_opt); -@@ -6460,7 +6655,8 @@ +@@ -6474,7 +6669,8 @@ /* Note: tcp_v6_init_req() might override ir_iif for link locals */ inet_rsk(req)->ir_iif = inet_request_bound_dev_if(sk, skb); @@ -4742,7 +4743,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp if (security_inet_conn_request(sk, skb, req)) goto drop_and_free; -@@ -6496,7 +6692,7 @@ +@@ -6510,7 +6706,7 @@ tcp_ecn_create_request(req, skb, sk, dst); if (want_cookie) { @@ -4751,7 +4752,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp req->cookie_ts = tmp_opt.tstamp_ok; if (!tmp_opt.tstamp_ok) inet_rsk(req)->ecn_ok = 0; -@@ -6511,18 +6707,26 @@ +@@ -6525,18 +6721,26 @@ fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc, dst); } if (fastopen_sk) { @@ -4779,9 +4780,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_input.c mptcp-mptcp_v0.95/net/ipv4/tcp_inp sock_put(fastopen_sk); } else { tcp_rsk(req)->tfo_listener = false; -diff -aurN linux-4.19.44/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.95/net/ipv4/tcp_ipv4.c ---- linux-4.19.44/net/ipv4/tcp_ipv4.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_ipv4.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.95/net/ipv4/tcp_ipv4.c +--- linux-4.19.53/net/ipv4/tcp_ipv4.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_ipv4.c 2019-06-22 05:42:25.000000000 +0200 @@ -67,6 +67,8 @@ #include #include @@ -5228,9 +5229,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.95/net/ipv4/tcp_ipv4 }; EXPORT_SYMBOL(tcp_prot); -diff -aurN linux-4.19.44/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.95/net/ipv4/tcp_minisocks.c ---- linux-4.19.44/net/ipv4/tcp_minisocks.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_minisocks.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.95/net/ipv4/tcp_minisocks.c +--- linux-4.19.53/net/ipv4/tcp_minisocks.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_minisocks.c 2019-06-22 05:42:25.000000000 +0200 @@ -18,11 +18,13 @@ * Jorge Cwik, */ @@ -5449,9 +5450,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.95/net/ipv4/tcp sock_put(child); return ret; } -diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_output.c ---- linux-4.19.44/net/ipv4/tcp_output.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_output.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_output.c +--- linux-4.19.53/net/ipv4/tcp_output.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_output.c 2019-06-22 05:42:25.000000000 +0200 @@ -36,6 +36,12 @@ #define pr_fmt(fmt) "TCP: " fmt @@ -5752,7 +5753,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); -@@ -1364,7 +1400,7 @@ +@@ -1369,7 +1405,7 @@ /* This is similar to __pskb_pull_tail(). The difference is that pulled * data is not copied, but immediately discarded. */ @@ -5761,7 +5762,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { struct skb_shared_info *shinfo; int i, k, eat; -@@ -1587,6 +1623,7 @@ +@@ -1591,6 +1627,7 @@ return mss_now; } @@ -5769,7 +5770,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou /* RFC2861, slow part. Adjust cwnd, after it was not full during one rto. * As additional protections, we do not touch cwnd in retransmission phases, -@@ -1610,7 +1647,7 @@ +@@ -1614,7 +1651,7 @@ tp->snd_cwnd_stamp = tcp_jiffies32; } @@ -5778,7 +5779,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops; struct tcp_sock *tp = tcp_sk(sk); -@@ -1668,8 +1705,8 @@ +@@ -1672,8 +1709,8 @@ * But we can avoid doing the divide again given we already have * skb_pcount = skb->len / mss_now */ @@ -5789,7 +5790,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { if (skb->len < tcp_skb_pcount(skb) * mss_now) tp->snd_sml = TCP_SKB_CB(skb)->end_seq; -@@ -1728,11 +1765,11 @@ +@@ -1732,11 +1769,11 @@ } /* Returns the portion of skb which can be sent right away */ @@ -5806,7 +5807,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { const struct tcp_sock *tp = tcp_sk(sk); u32 partial, needed, window, max_len; -@@ -1762,13 +1799,14 @@ +@@ -1766,13 +1803,14 @@ /* Can at least one segment of SKB be sent right now, according to the * congestion window rules? If so, return how many segments are allowed. */ @@ -5824,7 +5825,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou tcp_skb_pcount(skb) == 1) return 1; -@@ -1783,12 +1821,13 @@ +@@ -1787,12 +1825,13 @@ halfcwnd = max(cwnd >> 1, 1U); return min(halfcwnd, cwnd - in_flight); } @@ -5839,7 +5840,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { int tso_segs = tcp_skb_pcount(skb); -@@ -1803,8 +1842,8 @@ +@@ -1807,8 +1846,8 @@ /* Return true if the Nagle test allows this packet to be * sent now. */ @@ -5850,7 +5851,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { /* Nagle rule does not apply to frames, which sit in the middle of the * write_queue (they have no chances to get new data). -@@ -1816,7 +1855,8 @@ +@@ -1820,7 +1859,8 @@ return true; /* Don't use the nagle rule for urgent data (or for the final FIN). */ @@ -5860,7 +5861,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou return true; if (!tcp_nagle_check(skb->len < cur_mss, tp, nonagle)) -@@ -1826,9 +1866,8 @@ +@@ -1830,9 +1870,8 @@ } /* Does at least the first segment of SKB fit into the send window? */ @@ -5872,7 +5873,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { u32 end_seq = TCP_SKB_CB(skb)->end_seq; -@@ -1837,6 +1876,7 @@ +@@ -1841,6 +1880,7 @@ return !after(end_seq, tcp_wnd_end(tp)); } @@ -5880,7 +5881,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou /* Trim TSO SKB to LEN bytes, put the remaining data into a new packet * which is put after SKB on the list. It is very much like -@@ -1989,7 +2029,7 @@ +@@ -1993,7 +2033,7 @@ } /* If this packet won't get more data, do not wait. */ @@ -5889,7 +5890,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou goto send_now; return true; -@@ -2292,7 +2332,7 @@ +@@ -2296,7 +2336,7 @@ * Returns true, if no segments are in flight and we have queued segments, * but cannot send anything now because of SWS or another problem. */ @@ -5898,7 +5899,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou int push_one, gfp_t gfp) { struct tcp_sock *tp = tcp_sk(sk); -@@ -2306,7 +2346,12 @@ +@@ -2310,7 +2350,12 @@ sent_pkts = 0; tcp_mstamp_refresh(tp); @@ -5912,7 +5913,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou /* Do MTU probing. */ result = tcp_mtu_probe(sk); if (!result) { -@@ -2403,7 +2448,8 @@ +@@ -2407,7 +2452,8 @@ if (push_one != 2) tcp_schedule_loss_probe(sk, false); is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd); @@ -5922,7 +5923,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou return false; } return !tp->packets_out && !tcp_write_queue_empty(sk); -@@ -2486,7 +2532,7 @@ +@@ -2490,7 +2536,7 @@ skb = tcp_send_head(sk); if (skb && tcp_snd_wnd_test(tp, skb, mss)) { pcount = tp->packets_out; @@ -5931,7 +5932,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou if (tp->packets_out > pcount) goto probe_sent; goto rearm_timer; -@@ -2550,8 +2596,8 @@ +@@ -2554,8 +2600,8 @@ if (unlikely(sk->sk_state == TCP_CLOSE)) return; @@ -5942,7 +5943,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou tcp_check_probe_timer(sk); } -@@ -2564,7 +2610,8 @@ +@@ -2568,7 +2614,8 @@ BUG_ON(!skb || skb->len < mss_now); @@ -5952,7 +5953,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou } /* This function returns the amount that we can raise the -@@ -2786,6 +2833,10 @@ +@@ -2790,6 +2837,10 @@ if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) return; @@ -5963,7 +5964,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou skb_rbtree_walk_from_safe(skb, tmp) { if (!tcp_can_collapse(sk, skb)) break; -@@ -3255,7 +3306,7 @@ +@@ -3259,7 +3310,7 @@ /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ th->window = htons(min(req->rsk_rcv_wnd, 65535U)); @@ -5972,7 +5973,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou th->doff = (tcp_header_size >> 2); __TCP_INC_STATS(sock_net(sk), TCP_MIB_OUTSEGS); -@@ -3336,13 +3387,13 @@ +@@ -3340,13 +3391,13 @@ if (rcv_wnd == 0) rcv_wnd = dst_metric(dst, RTAX_INITRWND); @@ -5993,7 +5994,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou tp->rx_opt.rcv_wscale = rcv_wscale; tp->rcv_ssthresh = tp->rcv_wnd; -@@ -3367,6 +3418,36 @@ +@@ -3371,6 +3422,36 @@ inet_csk(sk)->icsk_rto = tcp_timeout_init(sk); inet_csk(sk)->icsk_retransmits = 0; tcp_clear_retrans(tp); @@ -6030,7 +6031,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou } static void tcp_connect_queue_skb(struct sock *sk, struct sk_buff *skb) -@@ -3629,6 +3710,7 @@ +@@ -3633,6 +3714,7 @@ { __tcp_send_ack(sk, tcp_sk(sk)->rcv_nxt); } @@ -6038,7 +6039,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou /* This routine sends a packet with an out of date sequence * number. It assumes the other end will try to ack it. -@@ -3641,7 +3723,7 @@ +@@ -3645,7 +3727,7 @@ * one is with SEG.SEQ=SND.UNA to deliver urgent pointer, another is * out-of-date with SND.UNA-1 to probe window. */ @@ -6047,7 +6048,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; -@@ -3728,7 +3810,7 @@ +@@ -3732,7 +3814,7 @@ unsigned long probe_max; int err; @@ -6056,9 +6057,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_output.c mptcp-mptcp_v0.95/net/ipv4/tcp_ou if (tp->packets_out || tcp_write_queue_empty(sk)) { /* Cancel probe timer, if it is not required. */ -diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_timer.c ---- linux-4.19.44/net/ipv4/tcp_timer.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv4/tcp_timer.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_timer.c +--- linux-4.19.53/net/ipv4/tcp_timer.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv4/tcp_timer.c 2019-06-22 05:42:25.000000000 +0200 @@ -20,6 +20,7 @@ #include @@ -6085,7 +6086,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim tcp_done(sk); __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONMEMORY); return 1; -@@ -185,9 +186,9 @@ +@@ -186,9 +187,9 @@ * after "boundary" unsuccessful, exponentially backed-off * retransmissions with an initial RTO of TCP_RTO_MIN. */ @@ -6098,7 +6099,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim { const unsigned int rto_base = TCP_RTO_MIN; unsigned int linear_backoff_thresh, start_ts; -@@ -213,7 +214,7 @@ +@@ -214,7 +215,7 @@ } /* A write timeout has occurred. Process the after effects. */ @@ -6107,7 +6108,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -228,6 +229,17 @@ +@@ -229,6 +230,17 @@ sk_rethink_txhash(sk); } retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; @@ -6125,7 +6126,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim expired = icsk->icsk_retransmits >= retry_until; } else { if (retransmits_timed_out(sk, net->ipv4.sysctl_tcp_retries1, 0)) { -@@ -322,18 +334,22 @@ +@@ -323,18 +335,22 @@ struct inet_connection_sock *icsk = from_timer(icsk, t, icsk_delack_timer); struct sock *sk = &icsk->icsk_inet.sk; @@ -6152,7 +6153,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim sock_put(sk); } -@@ -595,7 +611,7 @@ +@@ -596,7 +612,7 @@ break; case ICSK_TIME_RETRANS: icsk->icsk_pending = 0; @@ -6161,7 +6162,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim break; case ICSK_TIME_PROBE0: icsk->icsk_pending = 0; -@@ -612,16 +628,19 @@ +@@ -613,16 +629,19 @@ struct inet_connection_sock *icsk = from_timer(icsk, t, icsk_retransmit_timer); struct sock *sk = &icsk->icsk_inet.sk; @@ -6184,7 +6185,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim sock_put(sk); } -@@ -651,11 +670,12 @@ +@@ -652,11 +671,12 @@ struct sock *sk = from_timer(sk, t, sk_timer); struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); @@ -6199,7 +6200,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim /* Try again later. */ inet_csk_reset_keepalive_timer (sk, HZ/20); goto out; -@@ -667,16 +687,31 @@ +@@ -668,16 +688,31 @@ } tcp_mstamp_refresh(tp); @@ -6233,7 +6234,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim goto death; } -@@ -701,11 +736,11 @@ +@@ -702,11 +737,11 @@ icsk->icsk_probes_out > 0) || (icsk->icsk_user_timeout == 0 && icsk->icsk_probes_out >= keepalive_probes(tp))) { @@ -6247,7 +6248,7 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim icsk->icsk_probes_out++; elapsed = keepalive_intvl_when(tp); } else { -@@ -729,7 +764,7 @@ +@@ -730,7 +765,7 @@ tcp_done(sk); out: @@ -6256,9 +6257,9 @@ diff -aurN linux-4.19.44/net/ipv4/tcp_timer.c mptcp-mptcp_v0.95/net/ipv4/tcp_tim sock_put(sk); } -diff -aurN linux-4.19.44/net/ipv6/addrconf.c mptcp-mptcp_v0.95/net/ipv6/addrconf.c ---- linux-4.19.44/net/ipv6/addrconf.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv6/addrconf.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv6/addrconf.c mptcp-mptcp_v0.95/net/ipv6/addrconf.c +--- linux-4.19.53/net/ipv6/addrconf.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv6/addrconf.c 2019-06-22 05:42:25.000000000 +0200 @@ -917,6 +917,7 @@ kfree_rcu(ifp, rcu); @@ -6267,9 +6268,9 @@ diff -aurN linux-4.19.44/net/ipv6/addrconf.c mptcp-mptcp_v0.95/net/ipv6/addrconf static void ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) -diff -aurN linux-4.19.44/net/ipv6/af_inet6.c mptcp-mptcp_v0.95/net/ipv6/af_inet6.c ---- linux-4.19.44/net/ipv6/af_inet6.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv6/af_inet6.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv6/af_inet6.c mptcp-mptcp_v0.95/net/ipv6/af_inet6.c +--- linux-4.19.53/net/ipv6/af_inet6.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv6/af_inet6.c 2019-06-22 05:42:25.000000000 +0200 @@ -107,8 +107,7 @@ return (struct ipv6_pinfo *)(((u8 *)sk) + offset); } @@ -6280,9 +6281,9 @@ diff -aurN linux-4.19.44/net/ipv6/af_inet6.c mptcp-mptcp_v0.95/net/ipv6/af_inet6 { struct inet_sock *inet; struct ipv6_pinfo *np; -diff -aurN linux-4.19.44/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.95/net/ipv6/ipv6_sockglue.c ---- linux-4.19.44/net/ipv6/ipv6_sockglue.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv6/ipv6_sockglue.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.95/net/ipv6/ipv6_sockglue.c +--- linux-4.19.53/net/ipv6/ipv6_sockglue.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv6/ipv6_sockglue.c 2019-06-22 05:42:25.000000000 +0200 @@ -48,6 +48,8 @@ #include #include @@ -6306,9 +6307,9 @@ diff -aurN linux-4.19.44/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.95/net/ipv6/ipv sk->sk_socket->ops = &inet_stream_ops; sk->sk_family = PF_INET; tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); -diff -aurN linux-4.19.44/net/ipv6/syncookies.c mptcp-mptcp_v0.95/net/ipv6/syncookies.c ---- linux-4.19.44/net/ipv6/syncookies.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv6/syncookies.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv6/syncookies.c mptcp-mptcp_v0.95/net/ipv6/syncookies.c +--- linux-4.19.53/net/ipv6/syncookies.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv6/syncookies.c 2019-06-22 05:42:25.000000000 +0200 @@ -20,6 +20,8 @@ #include #include @@ -6390,9 +6391,9 @@ diff -aurN linux-4.19.44/net/ipv6/syncookies.c mptcp-mptcp_v0.95/net/ipv6/syncoo ireq->rcv_wscale = rcv_wscale; ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst); -diff -aurN linux-4.19.44/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.95/net/ipv6/tcp_ipv6.c ---- linux-4.19.44/net/ipv6/tcp_ipv6.c 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/ipv6/tcp_ipv6.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.95/net/ipv6/tcp_ipv6.c +--- linux-4.19.53/net/ipv6/tcp_ipv6.c 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/ipv6/tcp_ipv6.c 2019-06-22 05:42:25.000000000 +0200 @@ -61,6 +61,8 @@ #include #include @@ -6975,9 +6976,9 @@ diff -aurN linux-4.19.44/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.95/net/ipv6/tcp_ipv6 }; /* thinking of making this const? Don't. -diff -aurN linux-4.19.44/net/Kconfig mptcp-mptcp_v0.95/net/Kconfig ---- linux-4.19.44/net/Kconfig 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/Kconfig 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/Kconfig mptcp-mptcp_v0.95/net/Kconfig +--- linux-4.19.53/net/Kconfig 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/Kconfig 2019-06-22 05:42:25.000000000 +0200 @@ -89,6 +89,7 @@ source "net/ipv4/Kconfig" source "net/ipv6/Kconfig" @@ -6986,9 +6987,9 @@ diff -aurN linux-4.19.44/net/Kconfig mptcp-mptcp_v0.95/net/Kconfig endif # if INET -diff -aurN linux-4.19.44/net/Makefile mptcp-mptcp_v0.95/net/Makefile ---- linux-4.19.44/net/Makefile 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/net/Makefile 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/Makefile mptcp-mptcp_v0.95/net/Makefile +--- linux-4.19.53/net/Makefile 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/net/Makefile 2019-06-22 05:42:25.000000000 +0200 @@ -20,6 +20,7 @@ obj-$(CONFIG_XFRM) += xfrm/ obj-$(CONFIG_UNIX) += unix/ @@ -6997,9 +6998,9 @@ diff -aurN linux-4.19.44/net/Makefile mptcp-mptcp_v0.95/net/Makefile obj-$(CONFIG_BPFILTER) += bpfilter/ obj-$(CONFIG_PACKET) += packet/ obj-$(CONFIG_NET_KEY) += key/ -diff -aurN linux-4.19.44/net/mptcp/Kconfig mptcp-mptcp_v0.95/net/mptcp/Kconfig ---- linux-4.19.44/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/Kconfig 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/Kconfig mptcp-mptcp_v0.95/net/mptcp/Kconfig +--- linux-4.19.53/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/Kconfig 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,146 @@ +# +# MPTCP configuration @@ -7147,9 +7148,9 @@ diff -aurN linux-4.19.44/net/mptcp/Kconfig mptcp-mptcp_v0.95/net/mptcp/Kconfig + default "redundant" if DEFAULT_REDUNDANT + default "default" + -diff -aurN linux-4.19.44/net/mptcp/Makefile mptcp-mptcp_v0.95/net/mptcp/Makefile ---- linux-4.19.44/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/Makefile 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/Makefile mptcp-mptcp_v0.95/net/mptcp/Makefile +--- linux-4.19.53/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/Makefile 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,24 @@ +# +## Makefile for MultiPath TCP support code. @@ -7175,9 +7176,9 @@ diff -aurN linux-4.19.44/net/mptcp/Makefile mptcp-mptcp_v0.95/net/mptcp/Makefile +obj-$(CONFIG_MPTCP_BLEST) += mptcp_blest.o + +mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o -diff -aurN linux-4.19.44/net/mptcp/mctcp_desync.c mptcp-mptcp_v0.95/net/mptcp/mctcp_desync.c ---- linux-4.19.44/net/mptcp/mctcp_desync.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mctcp_desync.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mctcp_desync.c mptcp-mptcp_v0.95/net/mptcp/mctcp_desync.c +--- linux-4.19.53/net/mptcp/mctcp_desync.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mctcp_desync.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,193 @@ +/* + * Desynchronized Multi-Channel TCP Congestion Control Algorithm @@ -7372,9 +7373,9 @@ diff -aurN linux-4.19.44/net/mptcp/mctcp_desync.c mptcp-mptcp_v0.95/net/mptcp/mc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MCTCP: DESYNCHRONIZED MULTICHANNEL TCP CONGESTION CONTROL"); +MODULE_VERSION("1.0"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.95/net/mptcp/mptcp_balia.c ---- linux-4.19.44/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_balia.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.95/net/mptcp/mptcp_balia.c +--- linux-4.19.53/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_balia.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,261 @@ +/* + * MPTCP implementation - Balia Congestion Control @@ -7637,9 +7638,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.95/net/mptcp/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP BALIA CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.95/net/mptcp/mptcp_binder.c ---- linux-4.19.44/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_binder.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.95/net/mptcp/mptcp_binder.c +--- linux-4.19.53/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_binder.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,494 @@ +#include + @@ -8135,9 +8136,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.95/net/mptcp/mp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("BINDER MPTCP"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c ---- linux-4.19.44/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c +--- linux-4.19.53/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,475 @@ +// SPDX-License-Identifier: GPL-2.0 +/* MPTCP Scheduler to reduce HoL-blocking and spurious retransmissions. @@ -8614,9 +8615,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("BLEST scheduler for MPTCP, based on default minimum RTT scheduler"); +MODULE_VERSION("0.95"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.95/net/mptcp/mptcp_coupled.c ---- linux-4.19.44/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_coupled.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.95/net/mptcp/mptcp_coupled.c +--- linux-4.19.53/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_coupled.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,262 @@ +/* + * MPTCP implementation - Linked Increase congestion control Algorithm (LIA) @@ -8880,9 +8881,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.95/net/mptcp/m +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP LINKED INCREASE CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c ---- linux-4.19.44/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c +--- linux-4.19.53/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,3124 @@ +/* + * MPTCP implementation - MPTCP-control @@ -12008,9 +12009,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptc +mptcp_sock_cache_failed: + mptcp_init_failed = true; +} -diff -aurN linux-4.19.44/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.95/net/mptcp/mptcp_fullmesh.c ---- linux-4.19.44/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_fullmesh.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.95/net/mptcp/mptcp_fullmesh.c +--- linux-4.19.53/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_fullmesh.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,1941 @@ +#include +#include @@ -13953,9 +13954,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.95/net/mptcp/ +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Full-Mesh MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_input.c mptcp-mptcp_v0.95/net/mptcp/mptcp_input.c ---- linux-4.19.44/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_input.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_input.c mptcp-mptcp_v0.95/net/mptcp/mptcp_input.c +--- linux-4.19.53/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_input.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,2400 @@ +/* + * MPTCP implementation - Sending side @@ -16357,9 +16358,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_input.c mptcp-mptcp_v0.95/net/mptcp/mpt + tcp_set_rto(sk); + mptcp_set_rto(sk); +} -diff -aurN linux-4.19.44/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv4.c ---- linux-4.19.44/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv4.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv4.c +--- linux-4.19.53/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv4.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,427 @@ +/* + * MPTCP implementation - IPv4-specific functions @@ -16788,9 +16789,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.95/net/mptcp/mptc + kmem_cache_destroy(mptcp_request_sock_ops.slab); + kfree(mptcp_request_sock_ops.slab_name); +} -diff -aurN linux-4.19.44/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv6.c ---- linux-4.19.44/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv6.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv6.c +--- linux-4.19.53/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ipv6.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,475 @@ +/* + * MPTCP implementation - IPv6-specific functions @@ -17267,9 +17268,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.95/net/mptcp/mptc + kmem_cache_destroy(mptcp6_request_sock_ops.slab); + kfree(mptcp6_request_sock_ops.slab_name); +} -diff -aurN linux-4.19.44/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ndiffports.c ---- linux-4.19.44/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ndiffports.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ndiffports.c +--- linux-4.19.53/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ndiffports.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,174 @@ +#include + @@ -17445,9 +17446,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.95/net/mptc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("NDIFF-PORTS MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_netlink.c mptcp-mptcp_v0.95/net/mptcp/mptcp_netlink.c ---- linux-4.19.44/net/mptcp/mptcp_netlink.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_netlink.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_netlink.c mptcp-mptcp_v0.95/net/mptcp/mptcp_netlink.c +--- linux-4.19.53/net/mptcp/mptcp_netlink.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_netlink.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,1277 @@ +// SPDX-License-Identifier: GPL-2.0 +/* MPTCP implementation - Netlink Path Manager @@ -18726,9 +18727,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_netlink.c mptcp-mptcp_v0.95/net/mptcp/m +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP netlink-based path manager"); +MODULE_ALIAS_GENL_FAMILY(MPTCP_GENL_NAME); -diff -aurN linux-4.19.44/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.95/net/mptcp/mptcp_olia.c ---- linux-4.19.44/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_olia.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.95/net/mptcp/mptcp_olia.c +--- linux-4.19.53/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_olia.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,318 @@ +/* + * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL: @@ -19048,9 +19049,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.95/net/mptcp/mptc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c ---- linux-4.19.44/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c +--- linux-4.19.53/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,1929 @@ +/* + * MPTCP implementation - Sending side @@ -20981,9 +20982,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mp + return max(xmit_size_goal, mss_now); +} + -diff -aurN linux-4.19.44/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.95/net/mptcp/mptcp_pm.c ---- linux-4.19.44/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_pm.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.95/net/mptcp/mptcp_pm.c +--- linux-4.19.53/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_pm.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,226 @@ +/* + * MPTCP implementation - MPTCP-subflow-management @@ -21211,9 +21212,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ + return mptcp_set_default_path_manager(CONFIG_DEFAULT_MPTCP_PM); +} +late_initcall(mptcp_path_manager_default); -diff -aurN linux-4.19.44/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.95/net/mptcp/mptcp_redundant.c ---- linux-4.19.44/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_redundant.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.95/net/mptcp/mptcp_redundant.c +--- linux-4.19.53/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_redundant.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,389 @@ +/* + * MPTCP Scheduler to reduce latency and jitter. @@ -21604,9 +21605,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.95/net/mptcp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("REDUNDANT MPTCP"); +MODULE_VERSION("0.90"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.95/net/mptcp/mptcp_rr.c ---- linux-4.19.44/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_rr.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.95/net/mptcp/mptcp_rr.c +--- linux-4.19.53/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_rr.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,309 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + @@ -21917,9 +21918,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("ROUNDROBIN MPTCP"); +MODULE_VERSION("0.89"); -diff -aurN linux-4.19.44/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.95/net/mptcp/mptcp_sched.c ---- linux-4.19.44/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_sched.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.95/net/mptcp/mptcp_sched.c +--- linux-4.19.53/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_sched.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,635 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + @@ -22556,9 +22557,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.95/net/mptcp/mpt + return mptcp_set_default_scheduler(CONFIG_DEFAULT_MPTCP_SCHED); +} +late_initcall(mptcp_scheduler_default); -diff -aurN linux-4.19.44/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.95/net/mptcp/mptcp_wvegas.c ---- linux-4.19.44/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 -+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_wvegas.c 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.95/net/mptcp/mptcp_wvegas.c +--- linux-4.19.53/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.95/net/mptcp/mptcp_wvegas.c 2019-06-22 05:42:25.000000000 +0200 @@ -0,0 +1,271 @@ +/* + * MPTCP implementation - WEIGHTED VEGAS @@ -22831,9 +22832,9 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.95/net/mptcp/mp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP wVegas"); +MODULE_VERSION("0.1"); -diff -aurN linux-4.19.44/tools/include/uapi/linux/bpf.h mptcp-mptcp_v0.95/tools/include/uapi/linux/bpf.h ---- linux-4.19.44/tools/include/uapi/linux/bpf.h 2019-05-16 19:41:32.000000000 +0200 -+++ mptcp-mptcp_v0.95/tools/include/uapi/linux/bpf.h 2019-06-03 18:26:35.000000000 +0200 +diff -aurN linux-4.19.53/tools/include/uapi/linux/bpf.h mptcp-mptcp_v0.95/tools/include/uapi/linux/bpf.h +--- linux-4.19.53/tools/include/uapi/linux/bpf.h 2019-06-19 08:18:07.000000000 +0200 ++++ mptcp-mptcp_v0.95/tools/include/uapi/linux/bpf.h 2019-06-22 05:42:25.000000000 +0200 @@ -2671,6 +2671,7 @@ BPF_TCP_LISTEN, BPF_TCP_CLOSING, /* Now a valid state */