mptcp: add a new sysctl scheduler
This patch adds a new sysctl, named scheduler, to support for selection of different schedulers. Export mptcp_get_scheduler helper to get this sysctl. Acked-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Geliang Tang <geliang.tang@suse.com> Signed-off-by: Mat Martineau <martineau@kernel.org> Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-4-0c860fb256a8@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
740ebe35bd
commit
e3b2870b6d
3 changed files with 23 additions and 0 deletions
|
@ -74,3 +74,11 @@ stale_loss_cnt - INTEGER
|
||||||
This is a per-namespace sysctl.
|
This is a per-namespace sysctl.
|
||||||
|
|
||||||
Default: 4
|
Default: 4
|
||||||
|
|
||||||
|
scheduler - STRING
|
||||||
|
Select the scheduler of your choice.
|
||||||
|
|
||||||
|
Support for selection of different schedulers. This is a per-namespace
|
||||||
|
sysctl.
|
||||||
|
|
||||||
|
Default: "default"
|
||||||
|
|
|
@ -32,6 +32,7 @@ struct mptcp_pernet {
|
||||||
u8 checksum_enabled;
|
u8 checksum_enabled;
|
||||||
u8 allow_join_initial_addr_port;
|
u8 allow_join_initial_addr_port;
|
||||||
u8 pm_type;
|
u8 pm_type;
|
||||||
|
char scheduler[MPTCP_SCHED_NAME_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mptcp_pernet *mptcp_get_pernet(const struct net *net)
|
static struct mptcp_pernet *mptcp_get_pernet(const struct net *net)
|
||||||
|
@ -69,6 +70,11 @@ int mptcp_get_pm_type(const struct net *net)
|
||||||
return mptcp_get_pernet(net)->pm_type;
|
return mptcp_get_pernet(net)->pm_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *mptcp_get_scheduler(const struct net *net)
|
||||||
|
{
|
||||||
|
return mptcp_get_pernet(net)->scheduler;
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
@ -77,6 +83,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
||||||
pernet->allow_join_initial_addr_port = 1;
|
pernet->allow_join_initial_addr_port = 1;
|
||||||
pernet->stale_loss_cnt = 4;
|
pernet->stale_loss_cnt = 4;
|
||||||
pernet->pm_type = MPTCP_PM_TYPE_KERNEL;
|
pernet->pm_type = MPTCP_PM_TYPE_KERNEL;
|
||||||
|
strcpy(pernet->scheduler, "default");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
|
@ -128,6 +135,12 @@ static struct ctl_table mptcp_sysctl_table[] = {
|
||||||
.extra1 = SYSCTL_ZERO,
|
.extra1 = SYSCTL_ZERO,
|
||||||
.extra2 = &mptcp_pm_type_max
|
.extra2 = &mptcp_pm_type_max
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.procname = "scheduler",
|
||||||
|
.maxlen = MPTCP_SCHED_NAME_MAX,
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = proc_dostring,
|
||||||
|
},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -149,6 +162,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
|
||||||
table[3].data = &pernet->allow_join_initial_addr_port;
|
table[3].data = &pernet->allow_join_initial_addr_port;
|
||||||
table[4].data = &pernet->stale_loss_cnt;
|
table[4].data = &pernet->stale_loss_cnt;
|
||||||
table[5].data = &pernet->pm_type;
|
table[5].data = &pernet->pm_type;
|
||||||
|
table[6].data = &pernet->scheduler;
|
||||||
|
|
||||||
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
||||||
if (!hdr)
|
if (!hdr)
|
||||||
|
|
|
@ -623,6 +623,7 @@ int mptcp_is_checksum_enabled(const struct net *net);
|
||||||
int mptcp_allow_join_id0(const struct net *net);
|
int mptcp_allow_join_id0(const struct net *net);
|
||||||
unsigned int mptcp_stale_loss_cnt(const struct net *net);
|
unsigned int mptcp_stale_loss_cnt(const struct net *net);
|
||||||
int mptcp_get_pm_type(const struct net *net);
|
int mptcp_get_pm_type(const struct net *net);
|
||||||
|
const char *mptcp_get_scheduler(const struct net *net);
|
||||||
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
|
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
|
||||||
const struct mptcp_options_received *mp_opt);
|
const struct mptcp_options_received *mp_opt);
|
||||||
bool __mptcp_retransmit_pending_data(struct sock *sk);
|
bool __mptcp_retransmit_pending_data(struct sock *sk);
|
||||||
|
|
Loading…
Add table
Reference in a new issue