mptcp: add a new sysctl checksum_enabled
This patch added a new sysctl, named checksum_enabled, to control whether DSS checksum can be enabled. Acked-by: Paolo Abeni <pabeni@redhat.com> Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Geliang Tang <geliangtang@gmail.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
fe3ab1cbd3
commit
fc3c82eebf
@ -24,3 +24,11 @@ add_addr_timeout - INTEGER (seconds)
|
|||||||
sysctl.
|
sysctl.
|
||||||
|
|
||||||
Default: 120
|
Default: 120
|
||||||
|
|
||||||
|
checksum_enabled - BOOLEAN
|
||||||
|
Control whether DSS checksum can be enabled.
|
||||||
|
|
||||||
|
DSS checksum can be enabled if the value is nonzero. This is a
|
||||||
|
per-namespace sysctl.
|
||||||
|
|
||||||
|
Default: 0
|
||||||
|
@ -23,6 +23,7 @@ struct mptcp_pernet {
|
|||||||
|
|
||||||
u8 mptcp_enabled;
|
u8 mptcp_enabled;
|
||||||
unsigned int add_addr_timeout;
|
unsigned int add_addr_timeout;
|
||||||
|
u8 checksum_enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mptcp_pernet *mptcp_get_pernet(struct net *net)
|
static struct mptcp_pernet *mptcp_get_pernet(struct net *net)
|
||||||
@ -40,10 +41,16 @@ unsigned int mptcp_get_add_addr_timeout(struct net *net)
|
|||||||
return mptcp_get_pernet(net)->add_addr_timeout;
|
return mptcp_get_pernet(net)->add_addr_timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mptcp_is_checksum_enabled(struct net *net)
|
||||||
|
{
|
||||||
|
return mptcp_get_pernet(net)->checksum_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
||||||
{
|
{
|
||||||
pernet->mptcp_enabled = 1;
|
pernet->mptcp_enabled = 1;
|
||||||
pernet->add_addr_timeout = TCP_RTO_MAX;
|
pernet->add_addr_timeout = TCP_RTO_MAX;
|
||||||
|
pernet->checksum_enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
@ -65,6 +72,14 @@ static struct ctl_table mptcp_sysctl_table[] = {
|
|||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = proc_dointvec_jiffies,
|
.proc_handler = proc_dointvec_jiffies,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.procname = "checksum_enabled",
|
||||||
|
.maxlen = sizeof(u8),
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = proc_dou8vec_minmax,
|
||||||
|
.extra1 = SYSCTL_ZERO,
|
||||||
|
.extra2 = SYSCTL_ONE
|
||||||
|
},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,6 +97,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
|
|||||||
|
|
||||||
table[0].data = &pernet->mptcp_enabled;
|
table[0].data = &pernet->mptcp_enabled;
|
||||||
table[1].data = &pernet->add_addr_timeout;
|
table[1].data = &pernet->add_addr_timeout;
|
||||||
|
table[2].data = &pernet->checksum_enabled;
|
||||||
|
|
||||||
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
||||||
if (!hdr)
|
if (!hdr)
|
||||||
|
@ -542,7 +542,7 @@ static inline void mptcp_subflow_delegated_done(struct mptcp_subflow_context *su
|
|||||||
|
|
||||||
int mptcp_is_enabled(struct net *net);
|
int mptcp_is_enabled(struct net *net);
|
||||||
unsigned int mptcp_get_add_addr_timeout(struct net *net);
|
unsigned int mptcp_get_add_addr_timeout(struct net *net);
|
||||||
static inline int mptcp_is_checksum_enabled(struct net *net) { return false; }
|
int mptcp_is_checksum_enabled(struct net *net);
|
||||||
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
|
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
|
||||||
struct mptcp_options_received *mp_opt);
|
struct mptcp_options_received *mp_opt);
|
||||||
bool mptcp_subflow_data_available(struct sock *sk);
|
bool mptcp_subflow_data_available(struct sock *sk);
|
||||||
|
Reference in New Issue
Block a user