diff mbox series

[mptcp-next,v1,4/9] mptcp: pm: in-kernel: subflow_established interface

Message ID 91b802cae1b3e338d1d8c311fbabd5842543d9d4.1740047738.git.tanggeliang@kylinos.cn (mailing list archive)
State New
Delegated to: Matthieu Baerts
Headers show
Series BPF path manager, part 5 | expand

Checks

Context Check Description
matttbe/checkpatch success total: 0 errors, 0 warnings, 0 checks, 37 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! ✅

Commit Message

Geliang Tang Feb. 20, 2025, 10:36 a.m. UTC
From: Geliang Tang <tanggeliang@kylinos.cn>

Update mptcp_pm_nl_subflow_established() to match the parameters and
return value of subflow_established() interface and define it as the
interface of the in-kernel netlink PM.

This interface is invoked under holding the msk socket lock.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 net/mptcp/pm_netlink.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 53246a3a1b09..9795f08a33a6 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -652,9 +652,12 @@  static void mptcp_pm_nl_fully_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 int mptcp_pm_nl_subflow_established(struct mptcp_sock *msk,
+					   struct mptcp_pm_param *param)
 {
 	mptcp_pm_create_subflow_or_signal_addr(msk);
+
+	return 0;
 }
 
 /* Fill all the local addresses into the array addrs[],
@@ -927,6 +930,7 @@  static void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk,
 void mptcp_pm_nl_work(struct mptcp_sock *msk)
 {
 	struct mptcp_pm_data *pm = &msk->pm;
+	struct mptcp_pm_param param;
 
 	msk_owned_by_me(msk);
 
@@ -954,7 +958,9 @@  void mptcp_pm_nl_work(struct mptcp_sock *msk)
 	}
 	if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) {
 		pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED);
-		mptcp_pm_nl_subflow_established(msk);
+		msk->pm.ops && msk->pm.ops->subflow_established ?
+			msk->pm.ops->subflow_established(msk, &param) :
+			mptcp_pm_nl_subflow_established(msk, &param);
 	}
 
 	spin_unlock_bh(&msk->pm.lock);
@@ -2416,6 +2422,7 @@  static struct pernet_operations mptcp_pm_pernet_ops = {
 static struct mptcp_pm_ops mptcp_netlink_pm = {
 	.address_announced	= mptcp_pm_nl_address_announced,
 	.address_removed	= mptcp_pm_nl_address_removed,
+	.subflow_established	= mptcp_pm_nl_subflow_established,
 	.get_local_id		= mptcp_pm_nl_get_local_id,
 	.get_priority		= mptcp_pm_nl_get_priority,
 	.type			= MPTCP_PM_TYPE_KERNEL,