Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Geliang Tang and committed by
David S. Miller
fc3c82ee fe3ab1cb

+25 -1
+8
Documentation/networking/mptcp-sysctl.rst
··· 24 24 sysctl. 25 25 26 26 Default: 120 27 + 28 + checksum_enabled - BOOLEAN 29 + Control whether DSS checksum can be enabled. 30 + 31 + DSS checksum can be enabled if the value is nonzero. This is a 32 + per-namespace sysctl. 33 + 34 + Default: 0
+16
net/mptcp/ctrl.c
··· 23 23 24 24 u8 mptcp_enabled; 25 25 unsigned int add_addr_timeout; 26 + u8 checksum_enabled; 26 27 }; 27 28 28 29 static struct mptcp_pernet *mptcp_get_pernet(struct net *net) ··· 41 40 return mptcp_get_pernet(net)->add_addr_timeout; 42 41 } 43 42 43 + int mptcp_is_checksum_enabled(struct net *net) 44 + { 45 + return mptcp_get_pernet(net)->checksum_enabled; 46 + } 47 + 44 48 static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) 45 49 { 46 50 pernet->mptcp_enabled = 1; 47 51 pernet->add_addr_timeout = TCP_RTO_MAX; 52 + pernet->checksum_enabled = 0; 48 53 } 49 54 50 55 #ifdef CONFIG_SYSCTL ··· 72 65 .mode = 0644, 73 66 .proc_handler = proc_dointvec_jiffies, 74 67 }, 68 + { 69 + .procname = "checksum_enabled", 70 + .maxlen = sizeof(u8), 71 + .mode = 0644, 72 + .proc_handler = proc_dou8vec_minmax, 73 + .extra1 = SYSCTL_ZERO, 74 + .extra2 = SYSCTL_ONE 75 + }, 75 76 {} 76 77 }; 77 78 ··· 97 82 98 83 table[0].data = &pernet->mptcp_enabled; 99 84 table[1].data = &pernet->add_addr_timeout; 85 + table[2].data = &pernet->checksum_enabled; 100 86 101 87 hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); 102 88 if (!hdr)
+1 -1
net/mptcp/protocol.h
··· 542 542 543 543 int mptcp_is_enabled(struct net *net); 544 544 unsigned int mptcp_get_add_addr_timeout(struct net *net); 545 - static inline int mptcp_is_checksum_enabled(struct net *net) { return false; } 545 + int mptcp_is_checksum_enabled(struct net *net); 546 546 void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, 547 547 struct mptcp_options_received *mp_opt); 548 548 bool mptcp_subflow_data_available(struct sock *sk);