@@ -1424,7 +1424,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_context *subflow)
* returns the subflow that will transmit the next DSS
* additionally updates the rtx timeout
*/
-static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
+struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
{
struct subflow_send_info send_info[SSK_MODE_MAX];
struct mptcp_subflow_context *subflow;
@@ -2614,6 +2614,7 @@ static int __mptcp_init_sock(struct sock *sk)
msk->recovery = false;
mptcp_pm_data_init(msk);
+ mptcp_sched_data_init(sk);
/* re-use the csk retrans timer for MPTCP-level retrans */
timer_setup(&msk->sk.icsk_retransmit_timer, mptcp_retransmit_timer, 0);
@@ -614,7 +614,9 @@ int mptcp_register_scheduler(const struct net *net,
struct mptcp_sched_ops *sched);
void mptcp_unregister_scheduler(const struct net *net,
struct mptcp_sched_ops *sched);
+struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk);
void mptcp_sched_init(void);
+void mptcp_sched_data_init(struct sock *sk);
static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *subflow)
{
@@ -23,6 +23,12 @@ struct sched_pernet {
struct list_head sched_list;
};
+static struct mptcp_sched_ops mptcp_sched_default = {
+ .get_subflow = mptcp_subflow_get_send,
+ .name = "default",
+ .owner = THIS_MODULE,
+};
+
static struct sched_pernet *sched_get_pernet(const struct net *net)
{
return net_generic(net, sched_pernet_id);
@@ -70,6 +76,9 @@ void mptcp_unregister_scheduler(const struct net *net,
{
struct sched_pernet *pernet = sched_get_pernet(net);
+ if (sched == &mptcp_sched_default)
+ return;
+
spin_lock(&pernet->lock);
list_del_rcu(&sched->list);
spin_unlock(&pernet->lock);
@@ -111,3 +120,8 @@ void mptcp_sched_init(void)
if (register_pernet_subsys(&mptcp_sched_pernet_ops) < 0)
panic("Failed to register MPTCP sched pernet subsystem.\n");
}
+
+void mptcp_sched_data_init(struct sock *sk)
+{
+ mptcp_register_scheduler(sock_net(sk), &mptcp_sched_default);
+}
This patch defined the default packet scheduler mptcp_sched_default, registered it in mptcp_sched_init(). Signed-off-by: Geliang Tang <geliang.tang@suse.com> --- net/mptcp/protocol.c | 3 ++- net/mptcp/protocol.h | 2 ++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-)