Loading include/uapi/linux/tcp.h +1 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ enum { #define TCP_TX_DELAY 37 /* delay outgoing packets by XX usec */ #define TCP_IS_MPTCP 43 #define TCP_REPAIR_ON 1 #define TCP_REPAIR_OFF 0 Loading net/ipv4/tcp.c +3 −0 Original line number Diff line number Diff line Loading @@ -4297,6 +4297,9 @@ int do_tcp_getsockopt(struct sock *sk, int level, return err; } #endif case TCP_IS_MPTCP: val = 0; break; default: return -ENOPROTOOPT; } Loading net/mptcp/sockopt.c +2 −0 Original line number Diff line number Diff line Loading @@ -1401,6 +1401,8 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock *msk, int optname, READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_keepalive_probes)); case TCP_NOTSENT_LOWAT: return mptcp_put_int_option(msk, optval, optlen, msk->notsent_lowat); case TCP_IS_MPTCP: return mptcp_put_int_option(msk, optval, optlen, 1); } return -EOPNOTSUPP; } Loading net/mptcp/subflow.c +2 −2 Original line number Diff line number Diff line Loading @@ -904,7 +904,7 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, } /* check for expected invariant - should never trigger, just help * catching eariler subtle bugs * catching earlier subtle bugs */ WARN_ON_ONCE(child && *own_req && tcp_sk(child)->is_mptcp && (!mptcp_subflow_ctx(child) || Loading Loading @@ -1265,7 +1265,7 @@ static void mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk) struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); unsigned long fail_tout; /* greceful failure can happen only on the MPC subflow */ /* graceful failure can happen only on the MPC subflow */ if (WARN_ON_ONCE(ssk != READ_ONCE(msk->first))) return; Loading Loading
include/uapi/linux/tcp.h +1 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ enum { #define TCP_TX_DELAY 37 /* delay outgoing packets by XX usec */ #define TCP_IS_MPTCP 43 #define TCP_REPAIR_ON 1 #define TCP_REPAIR_OFF 0 Loading
net/ipv4/tcp.c +3 −0 Original line number Diff line number Diff line Loading @@ -4297,6 +4297,9 @@ int do_tcp_getsockopt(struct sock *sk, int level, return err; } #endif case TCP_IS_MPTCP: val = 0; break; default: return -ENOPROTOOPT; } Loading
net/mptcp/sockopt.c +2 −0 Original line number Diff line number Diff line Loading @@ -1401,6 +1401,8 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock *msk, int optname, READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_keepalive_probes)); case TCP_NOTSENT_LOWAT: return mptcp_put_int_option(msk, optval, optlen, msk->notsent_lowat); case TCP_IS_MPTCP: return mptcp_put_int_option(msk, optval, optlen, 1); } return -EOPNOTSUPP; } Loading
net/mptcp/subflow.c +2 −2 Original line number Diff line number Diff line Loading @@ -904,7 +904,7 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, } /* check for expected invariant - should never trigger, just help * catching eariler subtle bugs * catching earlier subtle bugs */ WARN_ON_ONCE(child && *own_req && tcp_sk(child)->is_mptcp && (!mptcp_subflow_ctx(child) || Loading Loading @@ -1265,7 +1265,7 @@ static void mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk) struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); unsigned long fail_tout; /* greceful failure can happen only on the MPC subflow */ /* graceful failure can happen only on the MPC subflow */ if (WARN_ON_ONCE(ssk != READ_ONCE(msk->first))) return; Loading