Skip to content

Commit 7aab6a7

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
mptcp: pm: userspace: register mptcp_userspace_pm
This patch defines the original userspace path manager as a new struct mptcp_pm_ops named "mptcp_userspace_pm", and register it in mptcp_pm_data_init(). Only get_local_id() and get_priority() interfaces are implemented here. mptcp_userspace_pm_is_backup() becomes a wrapper of get_priority(). Signed-off-by: Geliang Tang <[email protected]>
1 parent 83c3781 commit 7aab6a7

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

net/mptcp/pm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk)
665665
void __init mptcp_pm_init(void)
666666
{
667667
mptcp_pm_nl_init();
668+
mptcp_userspace_pm_init();
668669
}
669670

670671
/* Must be called with rcu read lock held */

net/mptcp/pm_userspace.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,10 @@ int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
150150
return mptcp_userspace_pm_append_new_local_addr(msk, skc, true);
151151
}
152152

153-
bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk,
154-
struct mptcp_addr_info *skc)
153+
static bool mptcp_userspace_pm_get_priority(struct mptcp_sock *msk,
154+
struct mptcp_pm_param *param)
155155
{
156+
struct mptcp_addr_info *skc = &param->addr;
156157
struct mptcp_pm_addr_entry *entry;
157158
bool backup;
158159

@@ -164,6 +165,15 @@ bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk,
164165
return backup;
165166
}
166167

168+
bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk,
169+
struct mptcp_addr_info *skc)
170+
{
171+
struct mptcp_pm_param param;
172+
173+
mptcp_pm_param_set_contexts(&param, NULL, skc);
174+
return mptcp_userspace_pm_get_priority(msk, &param);
175+
}
176+
167177
static struct mptcp_sock *mptcp_userspace_pm_get_sock(const struct genl_info *info)
168178
{
169179
struct mptcp_sock *msk;
@@ -687,3 +697,15 @@ int mptcp_userspace_pm_get_addr(u8 id, struct mptcp_pm_addr_entry *addr,
687697
sock_put(sk);
688698
return ret;
689699
}
700+
701+
static struct mptcp_pm_ops mptcp_userspace_pm = {
702+
.get_local_id = mptcp_userspace_pm_get_local_id,
703+
.get_priority = mptcp_userspace_pm_get_priority,
704+
.type = MPTCP_PM_TYPE_USERSPACE,
705+
.owner = THIS_MODULE,
706+
};
707+
708+
void __init mptcp_userspace_pm_init(void)
709+
{
710+
mptcp_pm_register(&mptcp_userspace_pm);
711+
}

net/mptcp/protocol.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,6 +1152,7 @@ static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *subflo
11521152
}
11531153

11541154
void __init mptcp_pm_nl_init(void);
1155+
void __init mptcp_userspace_pm_init(void);
11551156
void mptcp_pm_nl_work(struct mptcp_sock *msk);
11561157
unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk);
11571158
unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk);

0 commit comments

Comments
 (0)