Message ID | 268ae875a7e4546922c30a974f9d675562b632e0.1631011068.git.geliangtang@xiaomi.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
Series | round-robin packet scheduler support | expand |
Hi, On Tue, 2021-09-07 at 18:41 +0800, Geliang Tang wrote: > From: Geliang Tang <geliangtang@xiaomi.com> > > This patch added a new sysctl, named scheduler, to support for selection > of different schedulers. > > Signed-off-by: Geliang Tang <geliangtang@xiaomi.com> > --- > Documentation/networking/mptcp-sysctl.rst | 8 ++++++++ > net/mptcp/ctrl.c | 14 ++++++++++++++ > net/mptcp/protocol.h | 3 +++ > 3 files changed, 25 insertions(+) > > diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/networking/mptcp-sysctl.rst > index b0d4da71e68e..ecd593c44e26 100644 > --- a/Documentation/networking/mptcp-sysctl.rst > +++ b/Documentation/networking/mptcp-sysctl.rst > @@ -57,3 +57,11 @@ stale_loss_cnt - INTEGER > This is a per-namespace sysctl. > > Default: 4 > + > +scheduler - STRING > + Select the scheduler of your choice. > + > + Support for selection of different schedulers. This is a per-namespace > + sysctl. > + > + Default: "default" > diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c > index 8b235468c88f..369369b0b17e 100644 > --- a/net/mptcp/ctrl.c > +++ b/net/mptcp/ctrl.c > @@ -26,6 +26,7 @@ struct mptcp_pernet { > u8 mptcp_enabled; > u8 checksum_enabled; > u8 allow_join_initial_addr_port; > + char scheduler[MPTCP_SCHED_NAME_MAX]; > }; > > static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) > @@ -58,6 +59,11 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net) > return mptcp_get_pernet(net)->stale_loss_cnt; > } > > +char *mptcp_get_scheduler(struct net *net) I think it should returns 'const char *' and even the 'net' argument should be const. Cheers, Paolo
diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/networking/mptcp-sysctl.rst index b0d4da71e68e..ecd593c44e26 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -57,3 +57,11 @@ stale_loss_cnt - INTEGER This is a per-namespace sysctl. Default: 4 + +scheduler - STRING + Select the scheduler of your choice. + + Support for selection of different schedulers. This is a per-namespace + sysctl. + + Default: "default" diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 8b235468c88f..369369b0b17e 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -26,6 +26,7 @@ struct mptcp_pernet { u8 mptcp_enabled; u8 checksum_enabled; u8 allow_join_initial_addr_port; + char scheduler[MPTCP_SCHED_NAME_MAX]; }; static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -58,6 +59,11 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net) return mptcp_get_pernet(net)->stale_loss_cnt; } +char *mptcp_get_scheduler(struct net *net) +{ + return mptcp_get_pernet(net)->scheduler; +} + static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled = 1; @@ -65,6 +71,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) pernet->checksum_enabled = 0; pernet->allow_join_initial_addr_port = 1; pernet->stale_loss_cnt = 4; + strcpy(pernet->scheduler, "default"); } #ifdef CONFIG_SYSCTL @@ -108,6 +115,12 @@ static struct ctl_table mptcp_sysctl_table[] = { .mode = 0644, .proc_handler = proc_douintvec_minmax, }, + { + .procname = "scheduler", + .maxlen = MPTCP_SCHED_NAME_MAX, + .mode = 0644, + .proc_handler = proc_dostring, + }, {} }; @@ -128,6 +141,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) table[2].data = &pernet->checksum_enabled; table[3].data = &pernet->allow_join_initial_addr_port; table[4].data = &pernet->stale_loss_cnt; + table[5].data = &pernet->scheduler; hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 99a23fff7b03..305d373332b7 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -206,6 +206,8 @@ struct mptcp_pm_data { struct mptcp_rm_list rm_list_rx; }; +#define MPTCP_SCHED_NAME_MAX 16 + struct mptcp_data_frag { struct list_head list; u64 data_seq; @@ -564,6 +566,7 @@ unsigned int mptcp_get_add_addr_timeout(const struct net *net); int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); +char *mptcp_get_scheduler(struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk);