Message ID | 5251f022f18eef85a4ddf848cde344dddbb09b99.1741685260.git.tanggeliang@kylinos.cn (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Matthieu Baerts |
Headers | show |
Series | BPF path manager, part 6 | expand |
Context | Check | Description |
---|---|---|
matttbe/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 43 lines checked |
matttbe/shellcheck | success | MPTCP selftests files have not been modified |
matttbe/build | success | Build and static analysis OK |
matttbe/KVM_Validation__normal | success | Success! ✅ |
matttbe/KVM_Validation__debug | success | Success! ✅ |
matttbe/KVM_Validation__btf-normal__only_bpftest_all_ | success | Success! ✅ |
matttbe/KVM_Validation__btf-debug__only_bpftest_all_ | success | Success! ✅ |
On 11/03/2025 10:32, Geliang Tang wrote: > From: Geliang Tang <tanggeliang@kylinos.cn> > > This patch adds a .subflow_established interface for struct mptcp_pm_ops, > and calls pm->ops->subflow_established in from mptcp_pm_worker(). Then > get rid of the corresponding code from __mptcp_pm_kernel_worker(). (...) > diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c > index dc3ab2fa987f..57b32232137e 100644 > --- a/net/mptcp/pm.c > +++ b/net/mptcp/pm.c > @@ -908,6 +908,11 @@ void mptcp_pm_worker(struct mptcp_sock *msk) > if (pm->ops->established) > pm->ops->established(msk); > } > + if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { > + pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); > + if (msk->pm.ops->subflow_established) Same here, no need to schedule the worker if the call is not set. Cheers, Matt
diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 1d69a0fbb032..88e0de990578 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -132,6 +132,7 @@ struct mptcp_pm_ops { const struct mptcp_addr_info *addr); void (*established)(struct mptcp_sock *msk); + void (*subflow_established)(struct mptcp_sock *msk); char name[MPTCP_PM_NAME_MAX]; struct module *owner; diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index dc3ab2fa987f..57b32232137e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -908,6 +908,11 @@ void mptcp_pm_worker(struct mptcp_sock *msk) if (pm->ops->established) pm->ops->established(msk); } + if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { + pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); + if (msk->pm.ops->subflow_established) + msk->pm.ops->subflow_established(msk); + } __mptcp_pm_kernel_worker(msk); spin_unlock_bh(&msk->pm.lock); diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 5c8764db3805..67f30d7c8080 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -372,7 +372,7 @@ static void mptcp_pm_kernel_established(struct mptcp_sock *msk) mptcp_pm_create_subflow_or_signal_addr(msk); } -static void mptcp_pm_nl_subflow_established(struct mptcp_sock *msk) +static void mptcp_pm_kernel_subflow_established(struct mptcp_sock *msk) { mptcp_pm_create_subflow_or_signal_addr(msk); } @@ -1348,10 +1348,6 @@ void __mptcp_pm_kernel_worker(struct mptcp_sock *msk) pm->status &= ~BIT(MPTCP_PM_ADD_ADDR_RECEIVED); mptcp_pm_nl_add_addr_received(msk); } - if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { - pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); - mptcp_pm_nl_subflow_established(msk); - } } static int __net_init pm_nl_init_net(struct net *net) @@ -1479,6 +1475,7 @@ struct mptcp_pm_ops mptcp_pm_kernel = { .subflow_check_next = mptcp_pm_kernel_subflow_check_next, .add_addr_echo = mptcp_pm_kernel_add_addr_echo, .established = mptcp_pm_kernel_established, + .subflow_established = mptcp_pm_kernel_subflow_established, .init = mptcp_pm_kernel_init, .name = "kernel", .owner = THIS_MODULE,