mptcp: sched: split validation part
A new interface .validate has been added in struct bpf_struct_ops recently. This patch prepares a future struct_ops support by implementing it as a new helper mptcp_validate_scheduler() for struct mptcp_sched_ops. In this helper, check whether the required ops "get_subflow" of struct mptcp_sched_ops has been implemented. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20250413-net-next-mptcp-sched-mib-sft-misc-v2-2-0f83a4350150@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>pull/1112/head
parent
6e83166dd8
commit
760ff07669
|
|
@ -744,6 +744,7 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *info,
|
|||
struct sockaddr_storage *addr,
|
||||
unsigned short family);
|
||||
struct mptcp_sched_ops *mptcp_sched_find(const char *name);
|
||||
int mptcp_validate_scheduler(struct mptcp_sched_ops *sched);
|
||||
int mptcp_register_scheduler(struct mptcp_sched_ops *sched);
|
||||
void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched);
|
||||
void mptcp_sched_init(void);
|
||||
|
|
|
|||
|
|
@ -82,10 +82,23 @@ void mptcp_get_available_schedulers(char *buf, size_t maxlen)
|
|||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
int mptcp_validate_scheduler(struct mptcp_sched_ops *sched)
|
||||
{
|
||||
if (!sched->get_send) {
|
||||
pr_err("%s does not implement required ops\n", sched->name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mptcp_register_scheduler(struct mptcp_sched_ops *sched)
|
||||
{
|
||||
if (!sched->get_send)
|
||||
return -EINVAL;
|
||||
int ret;
|
||||
|
||||
ret = mptcp_validate_scheduler(sched);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
spin_lock(&mptcp_sched_list_lock);
|
||||
if (mptcp_sched_find(sched->name)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue