Skip to content

Commit e3b2870

Browse files
geliangtangkuba-moo
authored andcommitted
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 <[email protected]> Reviewed-by: Mat Martineau <[email protected]> Signed-off-by: Geliang Tang <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 740ebe3 commit e3b2870

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

Documentation/networking/mptcp-sysctl.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,11 @@ stale_loss_cnt - INTEGER
7474
This is a per-namespace sysctl.
7575

7676
Default: 4
77+
78+
scheduler - STRING
79+
Select the scheduler of your choice.
80+
81+
Support for selection of different schedulers. This is a per-namespace
82+
sysctl.
83+
84+
Default: "default"

net/mptcp/ctrl.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ struct mptcp_pernet {
3232
u8 checksum_enabled;
3333
u8 allow_join_initial_addr_port;
3434
u8 pm_type;
35+
char scheduler[MPTCP_SCHED_NAME_MAX];
3536
};
3637

3738
static struct mptcp_pernet *mptcp_get_pernet(const struct net *net)
@@ -69,6 +70,11 @@ int mptcp_get_pm_type(const struct net *net)
6970
return mptcp_get_pernet(net)->pm_type;
7071
}
7172

73+
const char *mptcp_get_scheduler(const struct net *net)
74+
{
75+
return mptcp_get_pernet(net)->scheduler;
76+
}
77+
7278
static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
7379
{
7480
pernet->mptcp_enabled = 1;
@@ -77,6 +83,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
7783
pernet->allow_join_initial_addr_port = 1;
7884
pernet->stale_loss_cnt = 4;
7985
pernet->pm_type = MPTCP_PM_TYPE_KERNEL;
86+
strcpy(pernet->scheduler, "default");
8087
}
8188

8289
#ifdef CONFIG_SYSCTL
@@ -128,6 +135,12 @@ static struct ctl_table mptcp_sysctl_table[] = {
128135
.extra1 = SYSCTL_ZERO,
129136
.extra2 = &mptcp_pm_type_max
130137
},
138+
{
139+
.procname = "scheduler",
140+
.maxlen = MPTCP_SCHED_NAME_MAX,
141+
.mode = 0644,
142+
.proc_handler = proc_dostring,
143+
},
131144
{}
132145
};
133146

@@ -149,6 +162,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
149162
table[3].data = &pernet->allow_join_initial_addr_port;
150163
table[4].data = &pernet->stale_loss_cnt;
151164
table[5].data = &pernet->pm_type;
165+
table[6].data = &pernet->scheduler;
152166

153167
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
154168
if (!hdr)

net/mptcp/protocol.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ int mptcp_is_checksum_enabled(const struct net *net);
623623
int mptcp_allow_join_id0(const struct net *net);
624624
unsigned int mptcp_stale_loss_cnt(const struct net *net);
625625
int mptcp_get_pm_type(const struct net *net);
626+
const char *mptcp_get_scheduler(const struct net *net);
626627
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
627628
const struct mptcp_options_received *mp_opt);
628629
bool __mptcp_retransmit_pending_data(struct sock *sk);

0 commit comments

Comments
 (0)