Message ID | 7b91f66e9fcd99e1e7b10bfead7bc01bdcda114a.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, 44 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 .established interface for struct mptcp_pm_ops, and > calls pm->ops->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 dc7ab696c24b..dc3ab2fa987f 100644 > --- a/net/mptcp/pm.c > +++ b/net/mptcp/pm.c > @@ -903,6 +903,11 @@ void mptcp_pm_worker(struct mptcp_sock *msk) > pm->status &= ~BIT(MPTCP_PM_RM_ADDR_RECEIVED); > mptcp_pm_rm_addr_recv(msk); > } > + if (pm->status & BIT(MPTCP_PM_ESTABLISHED)) { > + pm->status &= ~BIT(MPTCP_PM_ESTABLISHED); > + if (pm->ops->established) Same here, then no need to schedule the worker if !pm->ops->established. Cheers, Matt
diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 1f4d0d3988c1..1d69a0fbb032 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -131,6 +131,8 @@ struct mptcp_pm_ops { void (*add_addr_echo)(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); + void (*established)(struct mptcp_sock *msk); + char name[MPTCP_PM_NAME_MAX]; struct module *owner; struct list_head list; diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index dc7ab696c24b..dc3ab2fa987f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -903,6 +903,11 @@ void mptcp_pm_worker(struct mptcp_sock *msk) pm->status &= ~BIT(MPTCP_PM_RM_ADDR_RECEIVED); mptcp_pm_rm_addr_recv(msk); } + if (pm->status & BIT(MPTCP_PM_ESTABLISHED)) { + pm->status &= ~BIT(MPTCP_PM_ESTABLISHED); + if (pm->ops->established) + pm->ops->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 d5002236fe6e..5c8764db3805 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -367,7 +367,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) mptcp_pm_nl_check_work_pending(msk); } -static void mptcp_pm_nl_fully_established(struct mptcp_sock *msk) +static void mptcp_pm_kernel_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_ESTABLISHED)) { - pm->status &= ~BIT(MPTCP_PM_ESTABLISHED); - mptcp_pm_nl_fully_established(msk); - } if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); mptcp_pm_nl_subflow_established(msk); @@ -1482,6 +1478,7 @@ struct mptcp_pm_ops mptcp_pm_kernel = { .accept_new_subflow = mptcp_pm_kernel_accept_new_subflow, .subflow_check_next = mptcp_pm_kernel_subflow_check_next, .add_addr_echo = mptcp_pm_kernel_add_addr_echo, + .established = mptcp_pm_kernel_established, .init = mptcp_pm_kernel_init, .name = "kernel", .owner = THIS_MODULE,