From patchwork Fri Mar 7 11:36:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006331 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9573F20764E for ; Fri, 7 Mar 2025 11:37:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347421; cv=none; b=tOchXY4B6G5dFwXceA5fqdasHVMPvNx0hX99Az8LQ+deuGslNuwgy6e6zWeItgGjdH2+bjb83H7Z5h8yyBU5Jr+Xdt4I8CnqI2OrTyrxDItu8acg/q54F72lM6Z7+jwC4gc2jZACrH2MPAfoqiX001xG8fvHePJdaBYAONZcsjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347421; c=relaxed/simple; bh=qtm12duyYEtXIEeOzHi1drQznTkTzUvWb4H6rcxQYEM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FwbNLva6FNcYQEO+Vvl7R3vIhvVKQ2zw9NdKIJiAY3LTLVM0rjBPxVNwHORI/AzmQJV3/pLXOhQLgyokHCc2Zo3G+E3ZgMSkOMEA8BtZiHM1fa45MbnJqlMus6jAQm/1A8073gEoB9nEsZHyCnSUOAb2PX4j6b72pOJbhsYlCSw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZCsikcS1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZCsikcS1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7462C4CEE5; Fri, 7 Mar 2025 11:36:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347421; bh=qtm12duyYEtXIEeOzHi1drQznTkTzUvWb4H6rcxQYEM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZCsikcS1hShMrzBaCizblO2JZYXg+ixVfv/+NBcalukArok/WOU8xC9mJBFdEUVy+ MEcxY7P9gTTszrSX5urOk1tW5d+M9Iu6SjevuSJ1Ijn8BLy6YEDHuePzDiKP3k97Q/ 0LRcmm6XUpl81+4bGDjfFF3iqo4W49dMncmLvMOZESaLq+d32juKni86zsjG9Tu6c8 6jdEv3NWsuxYNk6QdSO3zvk7bD9NiZpeNzpKY5sCiCncFQ0ACqQtk9CMgDL5Lpfe2u 5bhlwZ8gsZyDebT3RJ4GDfT+uKwoiSQZaUa6p+y0dYEa55FfZ7T2JewulSkqYz9P+2 dK7n5y1CeI8sw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 01/11] Revert "mptcp: sched: remove mptcp_sched_data" Date: Fri, 7 Mar 2025 19:36:42 +0800 Message-ID: <9a414d874ffc0dfc9849513c3faf293b13ddeaf0.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Add back struct mptcp_sched_data. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 +++++++++++-- net/mptcp/sched.c | 18 +++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index e9832a8f981e..2c85ca92bb1c 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -100,9 +100,18 @@ struct mptcp_out_options { #define MPTCP_SCHED_MAX 128 #define MPTCP_SCHED_BUF_MAX (MPTCP_SCHED_NAME_MAX * MPTCP_SCHED_MAX) +#define MPTCP_SUBFLOWS_MAX 8 + +struct mptcp_sched_data { + u8 subflows; + struct mptcp_subflow_context *contexts[MPTCP_SUBFLOWS_MAX]; +}; + struct mptcp_sched_ops { - int (*get_send)(struct mptcp_sock *msk); - int (*get_retrans)(struct mptcp_sock *msk); + int (*get_send)(struct mptcp_sock *msk, + struct mptcp_sched_data *data); + int (*get_retrans)(struct mptcp_sock *msk, + struct mptcp_sched_data *data); char name[MPTCP_SCHED_NAME_MAX]; struct module *owner; diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index f09f7eb1d63f..c16c6fbd4ba2 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -16,7 +16,8 @@ static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); -static int mptcp_sched_default_get_send(struct mptcp_sock *msk) +static int mptcp_sched_default_get_send(struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct sock *ssk; @@ -28,7 +29,8 @@ static int mptcp_sched_default_get_send(struct mptcp_sock *msk) return 0; } -static int mptcp_sched_default_get_retrans(struct mptcp_sock *msk) +static int mptcp_sched_default_get_retrans(struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct sock *ssk; @@ -155,6 +157,7 @@ void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow, int mptcp_sched_get_send(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; + struct mptcp_sched_data *data = NULL; msk_owned_by_me(msk); @@ -175,13 +178,14 @@ int mptcp_sched_get_send(struct mptcp_sock *msk) } if (msk->sched == &mptcp_sched_default || !msk->sched) - return mptcp_sched_default_get_send(msk); - return msk->sched->get_send(msk); + return mptcp_sched_default_get_send(msk, data); + return msk->sched->get_send(msk, data); } int mptcp_sched_get_retrans(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; + struct mptcp_sched_data *data = NULL; msk_owned_by_me(msk); @@ -195,8 +199,8 @@ int mptcp_sched_get_retrans(struct mptcp_sock *msk) } if (msk->sched == &mptcp_sched_default || !msk->sched) - return mptcp_sched_default_get_retrans(msk); + return mptcp_sched_default_get_retrans(msk, data); if (msk->sched->get_retrans) - return msk->sched->get_retrans(msk); - return msk->sched->get_send(msk); + return msk->sched->get_retrans(msk, data); + return msk->sched->get_send(msk, data); } From patchwork Fri Mar 7 11:36:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006332 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67A65211276 for ; Fri, 7 Mar 2025 11:37:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347423; cv=none; b=LoDY4lJuKK18JNtbgBCco5RnnhpAbduAW9UWlEBTS+3+m3QXpccB9oR96KRA1RLx00WXpZGpOYs5p5MXjpWmJt1RrwPkF2tujjjrtIjRc9ar8nucgKum6O2AoSyfjjZ511kOx/V9qs7N8iQk8EJsdJ5lJAhklXDB3aYV+0xByyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347423; c=relaxed/simple; bh=b16Q6fSumuUi3HtDy3WcBkhR5s9z7broAKftP81G/s8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NWiSIUtS5GXwCGyuWXTZV0xAcdcKUMJU3/ZYIa74LWUMdgBefnAkf0TXa0OJzavhCajqhxJzikOqtoLd0k3KgH0HJ7dzuIo13V1yc5phzw5aV2Zt3xZYjbP23YnNKR7UQMBgCKqwLFM5ndzha1FG079w2Daj2XOXcm1d9lFZ6AA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KOqKHEFk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KOqKHEFk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C0F0BC4CED1; Fri, 7 Mar 2025 11:37:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347422; bh=b16Q6fSumuUi3HtDy3WcBkhR5s9z7broAKftP81G/s8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KOqKHEFkjA/Y3sf9RX3i0+CkXTbejy9wWzu0XAzPRsTpB+wNCaa5yU1bbZ6C03IrU GS7gUTODCebCJ9VsDS6bK0bPRRPVIftR5uyPzD7UmbK/eSgX1BbvYaYJM5aEDin0vg 31cFy7IEyEK+prbZLnrjTnxg5R0O96YeMj8DsByPXXv9DRrysTQgUpGPkIZH+p+FzH j0rcR/rI2XYKhVlRexJuKhfN1TNAwBZUC3R8aG4iBtdQV8SpjpimE/lRcwIQNNIKh2 srEkma/vxpw1jqUk9Fb+buz6Cn7tO+dm5wH3Xiqp3pfrWkNnRk7NopUCDedRTG6oSU 6SjhxN9ur+eAQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 02/11] Squash to "bpf: Add bpf_mptcp_sched_ops" Date: Fri, 7 Mar 2025 19:36:43 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index c0da9ac077e4..3921261b4fd4 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -156,12 +156,14 @@ static int bpf_mptcp_sched_init(struct btf *btf) return 0; } -static int __bpf_mptcp_sched_get_send(struct mptcp_sock *msk) +static int __bpf_mptcp_sched_get_send(struct mptcp_sock *msk, + struct mptcp_sched_data *data) { return 0; } -static int __bpf_mptcp_sched_get_retrans(struct mptcp_sock *msk) +static int __bpf_mptcp_sched_get_retrans(struct mptcp_sock *msk, + struct mptcp_sched_data *data) { return 0; } From patchwork Fri Mar 7 11:36:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006333 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31C852153D5 for ; Fri, 7 Mar 2025 11:37:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347425; cv=none; b=ipJCymhFTtak2I0R+ARvGo1BcC3+ENNUsReb388BEq401vO00hWLIDdSZpHWvIpBvlQRNSAzFoaSymtti23HGiO5cevAEvt+IYwyEWNLzIU1oMEsNSfzpx1RUc5OR7JNPJvIXX8srQOJTPO0E35SeyeWFB2LlvsEySSWD0osXdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347425; c=relaxed/simple; bh=a0YkX2PS2JCc49Jh6btHmApqKwX4jkIiDpRgiEVF5AQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AUPqcBryMjrd2uVy6Ve3dCi5+LvMs4jj/Rw4E4z878tFX4LNG15qNZqu+HNrM3/rZJLPMnZqL9h1ljw5uG8h7s7YpI/nBGF0DY9UAenkZUmVm2XABMmFjqPUIV1s9cePg4lm+wVGJhYytfh6MtOjFfF435A2IA4QgpBrKuqnICA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=H0tFFalc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="H0tFFalc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 81AE3C4CEE5; Fri, 7 Mar 2025 11:37:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347425; bh=a0YkX2PS2JCc49Jh6btHmApqKwX4jkIiDpRgiEVF5AQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H0tFFalcZMcfrvJIlqr9jQC9TPvVt7l+aGxED+fJzAadLqEFKt5/7b6+s/dDA8VVa Vp3zpqZCnX/9qDaBQd6tvDKt7piKRu1dVp+I6++7SzuTr/WqP5vd3QNs+LL+7OdcVt EcmNm3CUZASXN/36IH5HRXHrgbKsmKgLzjjfvM2DCUCkxsvCouw5DYGBZspPTO8rsf Z6C3jzo4QuHh/pLvHFmf7Vs8up2lvQH/0jcet3KFSx64IAg7X0G4qr2+5AogAqmo7e WuI17f/XpmhenWPdPKRab4hPNWwFeC1JhDyVkUZjmabG3KeqL/Lt6BQYLzIuUuHEC5 +Ss4PM/HpYM7w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Mat Martineau Subject: [PATCH mptcp-next v2 03/11] mptcp: add bpf_iter_task for mptcp_sched_data Date: Fri, 7 Mar 2025 19:36:44 +0800 Message-ID: <620223de348631c8b8bf798b46c18002160c9235.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang To make sure the mptcp_subflow bpf_iter is running in the MPTCP context. This patch adds a simplified version of tracking for it: 1. Add a 'struct task_struct *bpf_iter_task' field to struct mptcp_sched_data. 2. Do a WRITE_ONCE(data->bpf_iter_task, current) before calling a MPTCP BPF hook, and WRITE_ONCE(data->bpf_iter_task, NULL) after the hook returns. 3. In bpf_iter_mptcp_subflow_new(), check "READ_ONCE(data->bpf_scheduler_task) == current" to confirm the correct task, return -EINVAL if it doesn't match. Also creates helpers for setting, clearing and checking that value. Suggested-by: Mat Martineau Signed-off-by: Geliang Tang --- include/net/mptcp.h | 1 + net/mptcp/protocol.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 2c85ca92bb1c..bd3d1b3654dd 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -105,6 +105,7 @@ struct mptcp_out_options { struct mptcp_sched_data { u8 subflows; struct mptcp_subflow_context *contexts[MPTCP_SUBFLOWS_MAX]; + struct task_struct *bpf_iter_task; }; struct mptcp_sched_ops { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3492b256ecba..0875b3cf4aba 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1291,4 +1291,23 @@ mptcp_token_join_cookie_init_state(struct mptcp_subflow_request_sock *subflow_re static inline void mptcp_join_cookie_init(void) {} #endif +static inline void mptcp_sched_set_bpf_iter_task(struct mptcp_sched_data *data) +{ + WRITE_ONCE(data->bpf_iter_task, current); +} + +static inline void mptcp_sched_clear_bpf_iter_task(struct mptcp_sched_data *data) +{ + WRITE_ONCE(data->bpf_iter_task, NULL); +} + +static inline bool mptcp_sched_check_bpf_iter_task(struct mptcp_sched_data *data) +{ + struct task_struct *task = READ_ONCE(data->bpf_iter_task); + + if (task && task == current) + return true; + return false; +} + #endif /* __MPTCP_PROTOCOL_H */ From patchwork Fri Mar 7 11:36:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006334 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 906F920E717 for ; Fri, 7 Mar 2025 11:37:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347427; cv=none; b=qvmtjovKP/H52UJ3q3dYeWVaYWB+GHx2cqycwNN9tbIuHw9BUkRAgUVtLHejPRfhxFT+Rt5gaVduW56dOC7CUQkS4InI0lCAm90JWf96Z2E8Z/g0r1+8AXsa+gabQgJL9iNBcc+PlnF2Al0dUZLJnXUWbSD5K7AvyRuibONWAa8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347427; c=relaxed/simple; bh=4zDTzs/dsrlDyQcA6b/rZ6+Zut62yH8ZjdgFlSDWeRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FZ5aZEpN4Rckre/pmIZktFNLPq7wx3c+9L0jik/4PcT24Daieg/dcGSJV8lV3W6/NyO5rGlDlC3bPJ96AMDmUTsj0+I+s+At4dw42dqPlhPCSJxzUfBS4lgD35xcolx98RRaD5k3fD4Uzfnw1m2gw5YFugV7mqSrxCrPmy6JL3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HOKscJB+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HOKscJB+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6CD2C4CED1; Fri, 7 Mar 2025 11:37:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347427; bh=4zDTzs/dsrlDyQcA6b/rZ6+Zut62yH8ZjdgFlSDWeRA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HOKscJB+DqjeC0l1/wL//5NIrRRQJuTAQ7vBhDV0WmKyl/DpQ7+BK+mCf+qNUJg9Y ShoPHzDi0Fwn04jeSpaLLxwzjfQeFnKt3QbY03CZ6o551W+dfI+nypKYmUZgfbxhg7 fadXMXPuMnzwFPf1qpHpllPgwhWAugb8YtFDnjQlxCWseKB6cIN4dk8MnKHcxqYGFO Qo3/J4DYWcm/++C5L+YRj+KmEj1oPGWGNwWXlE8dzEnHXZKa0GtVXqXPpUEW6i2GK2 hbx95Kpk3MTYmdHkzXVPSaoS9VUpGzEyTGKo0QOPFENYBdcpcdTj0qU0rVApC61tDO F+9cI7SzCiOdg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 04/11] mptcp: set and clear bpf_iter_task Date: Fri, 7 Mar 2025 19:36:45 +0800 Message-ID: <13fa1f655448b76ce1a3dfabbdfdcc13c49d43ad.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Set bpf_iter_task before invoking get_send() and get_retrans(), and clear it afterwords. Signed-off-by: Geliang Tang --- net/mptcp/sched.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index c16c6fbd4ba2..ffb531b5a4d6 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -157,7 +157,8 @@ void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow, int mptcp_sched_get_send(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; - struct mptcp_sched_data *data = NULL; + struct mptcp_sched_data data; + int ret; msk_owned_by_me(msk); @@ -178,14 +179,20 @@ int mptcp_sched_get_send(struct mptcp_sock *msk) } if (msk->sched == &mptcp_sched_default || !msk->sched) - return mptcp_sched_default_get_send(msk, data); - return msk->sched->get_send(msk, data); + return mptcp_sched_default_get_send(msk, &data); + + mptcp_sched_set_bpf_iter_task(&data); + ret = msk->sched->get_send(msk, &data); + mptcp_sched_clear_bpf_iter_task(&data); + + return ret; } int mptcp_sched_get_retrans(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; - struct mptcp_sched_data *data = NULL; + struct mptcp_sched_data data; + int ret; msk_owned_by_me(msk); @@ -199,8 +206,14 @@ int mptcp_sched_get_retrans(struct mptcp_sock *msk) } if (msk->sched == &mptcp_sched_default || !msk->sched) - return mptcp_sched_default_get_retrans(msk, data); + return mptcp_sched_default_get_retrans(msk, &data); + + mptcp_sched_set_bpf_iter_task(&data); if (msk->sched->get_retrans) - return msk->sched->get_retrans(msk, data); - return msk->sched->get_send(msk, data); + ret = msk->sched->get_retrans(msk, &data); + else + ret = msk->sched->get_send(msk, &data); + mptcp_sched_clear_bpf_iter_task(&data); + + return ret; } From patchwork Fri Mar 7 11:36:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006335 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D7C520764E for ; Fri, 7 Mar 2025 11:37:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347429; cv=none; b=u4rnTIIKlfsHP25CoFEQ6RFDHpKwYcnSUqS3koRy/SswQCtGanKEdGJpk7qkjk9TZVuqGRuO1LeMwkYNSh8E7kq9bmGV054tVE6J8VI4uMSRSpMs4cOOf2yZ1+RdjR6ZS1KE9/DyeIbBjyzzLrHnGuOg/A5JZGNFEDucCSCY8KA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347429; c=relaxed/simple; bh=xbEhIae6+cUr0/qPNbV2DDzI0yfracOJs8dci9P/Qw4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ef2ru7lemDJOfESrvIHuccKahcblAP9i/PAeem0f20hdJKUPro02yomrr9oLRErLZYPvp3WeKR917DPQ1i/nna0/wL+JG4uHYEOj4dNbcqnC3xR1SgaTRSWotzH0BUi24BNdYG9zlbuNlU/ocRFAe7TgAAzoEm7jHoleArFpojM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lfE745nW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lfE745nW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 992BCC4CEE5; Fri, 7 Mar 2025 11:37:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347428; bh=xbEhIae6+cUr0/qPNbV2DDzI0yfracOJs8dci9P/Qw4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lfE745nWvrqOAJJHa742ZH1XuwWhHzwKg1pdopKVQ3rkl4LiPcEs0riKBXRE/rROJ qpfyaIdoQJotSyydB1GHNCbEqZzENlKAzmMmb0N42qZmC2r0iRzrLZQDa2x3Zvmlxu 985+lfWkPGrjo4pAnO1no5c9jterLGG3bI3ePPBToCCuliWJpjNR3Dr6Q9f3K9NZsU I2CE5NxA6OiPOMoC/0g156lr84z0GBrFDGMdgASVUDhf/9odTvC2O43F4Z0nDvkNCZ ov6HWtHw6EyuL+eyFuzz8eKvAIkwyeX3Y92KDOc/kcinzx1og9bexFtu9tbHSWwDQ8 cVbF6AClb9Vkw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 05/11] mptcp: add mptcp_subflow_sched bpf_iter Date: Fri, 7 Mar 2025 19:36:46 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Add a new bpt_iter mptcp_subflow_sched, it's a wrapper of mptcp_subflow. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 3921261b4fd4..c31f7b407b84 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -288,6 +288,31 @@ bpf_iter_mptcp_subflow_destroy(struct bpf_iter_mptcp_subflow *it) { } +struct bpf_iter_mptcp_subflow_sched { + struct bpf_iter_mptcp_subflow it; +}; + +__bpf_kfunc static int +bpf_iter_mptcp_subflow_sched_new(struct bpf_iter_mptcp_subflow_sched *it, + struct sock *sk, struct mptcp_sched_data *data) +{ + if (!mptcp_sched_check_bpf_iter_task(data)) + return -EINVAL; + + return bpf_iter_mptcp_subflow_new(&it->it, sk); +} + +__bpf_kfunc static struct mptcp_subflow_context * +bpf_iter_mptcp_subflow_sched_next(struct bpf_iter_mptcp_subflow_sched *it) +{ + return bpf_iter_mptcp_subflow_next(&it->it); +} + +__bpf_kfunc static void +bpf_iter_mptcp_subflow_sched_destroy(struct bpf_iter_mptcp_subflow_sched *it) +{ +} + __bpf_kfunc static bool bpf_mptcp_subflow_queues_empty(struct sock *sk) { return tcp_rtx_queue_empty(sk); @@ -312,6 +337,9 @@ BTF_ID_FLAGS(func, bpf_mptcp_subflow_tcp_sock, KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_new, KF_ITER_NEW | KF_TRUSTED_ARGS) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_next, KF_ITER_NEXT | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_destroy, KF_ITER_DESTROY) +BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_sched_new, KF_ITER_NEW | KF_TRUSTED_ARGS) +BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_sched_next, KF_ITER_NEXT | KF_RET_NULL) +BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_sched_destroy, KF_ITER_DESTROY) BTF_ID_FLAGS(func, mptcp_subflow_set_scheduled) BTF_ID_FLAGS(func, mptcp_subflow_active) BTF_ID_FLAGS(func, mptcp_set_timeout) From patchwork Fri Mar 7 11:36:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006336 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD1802153D5 for ; Fri, 7 Mar 2025 11:37:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347430; cv=none; b=nmE/erg5c3mt5n3HkY2/4J3CrDBfGSYgqyogtz6YGA9fuzo0iayU/QBBLs+e7D9F+iRZH/lO5khcHQOutgVPv0am2sD+AqG194JY6qHLyDUxl//Li8RbO2/iTdxn3gLAXxCNb3YNuQYBKmhfln/agXuR4OMk+ky8w9B+YfuLunc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347430; c=relaxed/simple; bh=aWbuzqhrMGMpWk2fN1unZjqdZve99T/YrAOS7/lYdwE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oa2civcW2D8p1jcz9Dz3vHA8LCeGsb4uMSAFqwhcRP97RaLPE0Q0jI4mh5Bkn/kIAo1o1aQIWjAnA4V/Q2F2tyfVfHzwt/NCrm43y1Inhmnx0MKDbDTaKgYRDFiafQh3RPOSCFaestoasM72V1yKn6U1n+FumzFg1Sjriw5Mmks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pRk6P8iq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pRk6P8iq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73681C4CED1; Fri, 7 Mar 2025 11:37:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347430; bh=aWbuzqhrMGMpWk2fN1unZjqdZve99T/YrAOS7/lYdwE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pRk6P8iqiGpCeEuMpP241RuCEjj2U6hBp6U3sgXJBwVpX6wQbf5Lohh/WV+nH/qwS JzkAi1CZ9lnOJnOh64JNUwa5gCKLTktoNdbB3cWNcTJGVdw2bpEwABkHYj4HKG4MQV XAz2dB0bwi15YFqzAHoqqVT29v/0aOIEMQhnrTQ4WJnMPJIdfcuOYsGS48/TqNIEGX J9X2mWNXPrhydBpEEHu3gTOSqgDNbg+eW+Cht0Czh/Xm3f3aZmbWjqZm5ImdiRDR3a lRKtjlaeSBBlXnUMYrYKtwv6s1+sYueXGVq3ZQkF98dyOYlfpP638zp4w713odapjl AAsoIrp07swag== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 06/11] Squash to "selftests/bpf: Add bpf_first scheduler & test" Date: Fri, 7 Mar 2025 19:36:47 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf_first.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c index d71c50c7f441..73b18eeeb62f 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -17,7 +17,8 @@ void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_first_get_send, struct mptcp_sock *msk) +int BPF_PROG(bpf_first_get_send, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct mptcp_subflow_context *subflow; From patchwork Fri Mar 7 11:36:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006337 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B560220E717 for ; Fri, 7 Mar 2025 11:37:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347432; cv=none; b=rrTRy8XzcSG5Nlto2EdK5athQjIK6N7XKRErw0r7ZAgTtkdnOlnt/mWVNM+B+3tG0eTog08rTZXqpvRcqJkq8ZP/2L3FRtgsa9hqFKFI2kYRg5Gf/OUTg8sqJFGl1+X1OCXahboXrVuYWVPaNmyInB0KGYgJ9G83Ah11h8jVm4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347432; c=relaxed/simple; bh=HKslCYctT5QqivpEi7lFeV//upoEgKJM1NPTc3aKgeU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jx7NYjMzGMh6L1yASGbQ70T53aBbPx/uXvQdiN5R2pVYdrpBVR4pOIOj6rAr/oPiGYb1yiYv6J3nD3/8iVRC/XUYJBTEyKi4j/mg4PokPHgKPsztS++Zg6fdcK9XOjCxCrj3+hCWGQMsc17r2/+U8FjwpiX/5EdO1hBUQlJp5kU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nad/pwYS; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nad/pwYS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4CC9AC4CEE5; Fri, 7 Mar 2025 11:37:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347432; bh=HKslCYctT5QqivpEi7lFeV//upoEgKJM1NPTc3aKgeU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nad/pwYSH6qLIkDG3OGLsTIPfTLbT575dfg+JFUICJUlmTiKdfKR+msBm0yUBlv6o OGGb1Rcb3F185Jz904C+pvs9M0A2zJEzrzv6A80wh2ilkUEAaB5TzufvHznKAUNv7J Oxf9iKk4VUy/xfrnzq96mgjUpGx7/mhVPKvKTmpK79ElW/AhM1pMTN5NCkJsERunC+ wwn/mFrqXrrAuRk8HAkVlNKT8w/4h4t6H2t8X8yCpc8rOMhLuLKLkIJ/U9z9ysfLEP 6GhRi2mwUS893gj3nDYw67HeiUrG+bpK/K2KND6g0VQcxz8t3mh4I1ZBd+1yaVOgsT tq1Y+4b5uPsQA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 07/11] Squash to "selftests/bpf: Add bpf_bkup scheduler & test" Date: Fri, 7 Mar 2025 19:36:48 +0800 Message-ID: <60315b82855c6d6f0763aca4162bdfc10657edb3.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Use mptcp_subflow_sched iter instead of mptcp_subflow. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_experimental.h | 9 +++++++++ tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing/selftests/bpf/bpf_experimental.h index 6a96c56f0725..b8edad5c8bf0 100644 --- a/tools/testing/selftests/bpf/bpf_experimental.h +++ b/tools/testing/selftests/bpf/bpf_experimental.h @@ -583,6 +583,15 @@ bpf_iter_mptcp_subflow_next(struct bpf_iter_mptcp_subflow *it) __weak __ksym; extern void bpf_iter_mptcp_subflow_destroy(struct bpf_iter_mptcp_subflow *it) __weak __ksym; +struct bpf_iter_mptcp_subflow_sched; +extern int bpf_iter_mptcp_subflow_sched_new(struct bpf_iter_mptcp_subflow_sched *it, + struct sock *sk, + struct mptcp_sched_data *data) __weak __ksym; +extern struct mptcp_subflow_context * +bpf_iter_mptcp_subflow_sched_next(struct bpf_iter_mptcp_subflow_sched *it) __weak __ksym; +extern void +bpf_iter_mptcp_subflow_sched_destroy(struct bpf_iter_mptcp_subflow_sched *it) __weak __ksym; + extern int bpf_wq_init(struct bpf_wq *wq, void *p__map, unsigned int flags) __weak __ksym; extern int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) __weak __ksym; extern int bpf_wq_set_callback_impl(struct bpf_wq *wq, diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c index 284cca708de0..1719b0b2a182 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c @@ -17,11 +17,12 @@ void BPF_PROG(mptcp_sched_bkup_release, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_bkup_get_send, struct mptcp_sock *msk) +int BPF_PROG(bpf_bkup_get_send, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct mptcp_subflow_context *subflow; - bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + bpf_for_each(mptcp_subflow_sched, subflow, (struct sock *)msk, data) { if (!BPF_CORE_READ_BITFIELD_PROBED(subflow, backup) || !BPF_CORE_READ_BITFIELD_PROBED(subflow, request_bkup)) { mptcp_subflow_set_scheduled(subflow, true); From patchwork Fri Mar 7 11:36:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006338 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C34220764E for ; Fri, 7 Mar 2025 11:37:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347434; cv=none; b=teO62yQ/wi411Iit+ig+A827ZYoeh1LQWc8dWurY15/GmvFYsHXTTyoWnByve4MSEPk0NYMkDIoQzZujeEOZJtTCkqfpYZO6FUk3cUgApw+SBU9nG7xQqJttLQEw2J6sJet+/qKmC5DJOYuUdrnZ0br8UPWG8CThV1mGYMAmPcc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347434; c=relaxed/simple; bh=PQq1+Si2TDZR9w5xB3kALelxy2NlKHXh4/kK9wqlezI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AVY6RPZrlc03fg3P8oepUrnBpJPpsM4FrrXcy9YDGQ5s4b8j/w5kP/FBSkq2kV68SgdJMJhDxRt4mey5R9MFvUk1rv+PNL8qn4o7UWLK5r8NMmvDSLuM0x/gsheSyDheCMmpIW+JJYE3inieO8y+T7Lh20irAwK8hex1HxYYr4Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fEy1ltvr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fEy1ltvr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F7B6C4CEE5; Fri, 7 Mar 2025 11:37:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347434; bh=PQq1+Si2TDZR9w5xB3kALelxy2NlKHXh4/kK9wqlezI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fEy1ltvrOPxVUEl+MM9CHnsvrlZtLlecfJxWMZq5lmN/EoCjHz7JdIwT+omN0M0Z4 jBbZZm8FXhEWx8Kv+4cZNCrlvA5xplhVKYYEODbk/jxmeScA5hquRLlz7/BQbZ6NED PuO/STZ+gvWBD2VKHAD3eOfppNPVeF8raDtbtdggdwomoo1THqmBJE3W/MPjMbvBAD /RdrDmyhC4c2ulthXVckvBPyngJw5ZF+fpjtGKD6eVJAk0ECRA+4Qk9s37V0I7r9J7 Br65jwbUA8RsQEyzqBqJ7hdybhHXOX5Wc2z1BM3BTX1iVSPqc9JQqlT5wuJ/eGBQsg Bo58iCLGq9+5A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 08/11] Squash to "selftests/bpf: Add bpf_rr scheduler & test" Date: Fri, 7 Mar 2025 19:36:49 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Use mptcp_subflow_sched iter instead of mptcp_subflow. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c index 5128a886119d..5a3910fb0aa7 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -31,7 +31,8 @@ void BPF_PROG(mptcp_sched_rr_release, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_rr_get_send, struct mptcp_sock *msk) +int BPF_PROG(bpf_rr_get_send, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct mptcp_subflow_context *subflow, *next; struct mptcp_rr_storage *ptr; @@ -48,9 +49,9 @@ int BPF_PROG(bpf_rr_get_send, struct mptcp_sock *msk) if (!ptr->last_snd) goto out; - bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + bpf_for_each(mptcp_subflow_sched, subflow, (struct sock *)msk, data) { if (mptcp_subflow_tcp_sock(subflow) == ptr->last_snd) { - subflow = bpf_iter_mptcp_subflow_next(&___it); + subflow = bpf_iter_mptcp_subflow_sched_next(&___it); if (!subflow) break; From patchwork Fri Mar 7 11:36:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006339 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CABD20764E for ; Fri, 7 Mar 2025 11:37:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347436; cv=none; b=d1RTKyDKhDjc6gMnOwgeEJdbAneJgLXzax8Y+Uscwr9qPQ5aybW6vLIgI676iZMHBD/3/VmfgJFKzOnxIDquIGgbJq4ibZL/hE1wX6QZrF1eKXZN+gWhgLX97Zf9fhydDQQLd7YpUyLuIetHheVBQ0I7ANyCkojgH8e9Y8/bp7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347436; c=relaxed/simple; bh=Jf3swzHMNlelms5dwP07gBh3SoI0GP/HB2I7Wzx9tNU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kBYCTTwO8EguJn/stTl+LtNoqLYs7zxhWcc8e9d7N6bcoM7G7e4IapJeVGuf+sTpef0+TEV/GkV6g+vU3D6b0ULHGt70PDcIVdwkzmx4BZybpUY9IUGY1+Ij4vFx1VWw2NA5c/zr3L/UXChfUPYKnOreHy8f8RHF17nKo3tBRP4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gdBDfcKC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gdBDfcKC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 18F62C4CEE5; Fri, 7 Mar 2025 11:37:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347436; bh=Jf3swzHMNlelms5dwP07gBh3SoI0GP/HB2I7Wzx9tNU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gdBDfcKCJIlT0kpIBs7+eJW7DeDzJ4CBJxAzlN7rqnhrY68hN0oLOL2EixqVuNlWu +D0TcHHNRr4J4YY0QLku+uJ0yxQj1dDiHNrzBuJZlkdBwmGxoiUZLm0CoIU6oqRDLS 7MgRfKD+Uyw+EujbSLM/ZODNVynHuj59CL7DqMPg4afRAz5MpLxX1tWALhUIkxXaVK fRBCzZuAb2u9G3QEoBB0/FSkXYxp8S5MZQYtNZhfYblawSQ4g4AlemOBaDxfRR69Q8 n+TGznxYqsgcaOsnbDrdZvNS5RO5Ccqpa5BA3P8YmXXgU8Ub4MGPgojzCmL4nGTSyP vyzSnScDGzueQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 09/11] Squash to "selftests/bpf: Add bpf_red scheduler & test" Date: Fri, 7 Mar 2025 19:36:50 +0800 Message-ID: <4be1e6de325f6088f80af729b3237bcee450d9f2.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Use mptcp_subflow_sched iter instead of mptcp_subflow. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf_red.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c index b2efd6db7f8b..64bf3c48cc82 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c @@ -17,11 +17,12 @@ void BPF_PROG(mptcp_sched_red_release, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_red_get_send, struct mptcp_sock *msk) +int BPF_PROG(bpf_red_get_send, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct mptcp_subflow_context *subflow; - bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) + bpf_for_each(mptcp_subflow_sched, subflow, (struct sock *)msk, data) mptcp_subflow_set_scheduled(subflow, true); return 0; From patchwork Fri Mar 7 11:36:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006340 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23FEE20764E for ; Fri, 7 Mar 2025 11:37:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347438; cv=none; b=B2ElZw1zIZb+pGgDTh6C6kmbqN3jyBNzVCVuMbx85pEF2qkgwfGGGqMF6iSdT/Kc8U07+jUAJeFMyFnfTUYtmp95V+TK8dk0/9r8FKGvRwsC8riT14JH/tMHEZ3dMh7HduD3O6E4cf6amJ3EYh0TfBLTfhemLCXTL4aMTkpoKXY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347438; c=relaxed/simple; bh=/Illmz1o/zIazsySjVDcDkIezFG7hvXGnJQKvjRny9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GpWLgoy2ZYcUwzUwFDElTgCsys+v6p2mVu2SNLioNpRvWkI3c50zXHmHgz42T+BYAf6BmmpkFzduLKqr4Mx0cPtrJDHAUCIqUk3ShvOTtK50Jt4DppX59kj+qbDFg2Zd+qsWYebxiWnGeMU8B4Jq/8Gb8rn6y5hAbHZFRJeK/fM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cGuAVnwc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cGuAVnwc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7549C4CED1; Fri, 7 Mar 2025 11:37:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347438; bh=/Illmz1o/zIazsySjVDcDkIezFG7hvXGnJQKvjRny9I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cGuAVnwc3idd6fYmasmO9EyoQtETwymeMeVr+GlyROOnJDE8kgLU1bOo6UvEQ7496 0fU6+raic2mK6B1D9MtAZGNwXfQKDVgsfMgdcvd/ol7wasm/DWFF7zMp5cwtQ5AT6G 7u7dYwK8XmqwMcb4EwMAc559THW6P6Vz2Q7H0xDDnwgdbozXDr4QjmW/hMggVHKCsh AUipjqOPohmAO9L1THdcvraiJh1eAd+Wqmjlfb1ZOoTfs2nE/vt52epG4O+3dU/lOG +ZVhC0eGkVzjRxrcRL7gA0ZhUTY01bDUGuBeKnVi9OlP2137/babQinCTLzOChSm3E HKZZHDr6QFfkA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 10/11] Squash to "selftests/bpf: Add bpf_burst scheduler & test" Date: Fri, 7 Mar 2025 19:36:51 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Keep mptcp scheduler API unchanged. Use mptcp_subflow_sched iter instead of mptcp_subflow. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c index 6d930ff0f09f..3828af40fa50 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c @@ -50,7 +50,8 @@ void BPF_PROG(mptcp_sched_burst_release, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) +int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -66,7 +67,7 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) send_info[i].linger_time = -1; } - bpf_for_each(mptcp_subflow, subflow, sk) { + bpf_for_each(mptcp_subflow_sched, subflow, sk, data) { bool backup = subflow->backup || subflow->request_bkup; ssk = mptcp_subflow_tcp_sock(subflow); @@ -120,13 +121,14 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk) } SEC("struct_ops") -int BPF_PROG(bpf_burst_get_retrans, struct mptcp_sock *msk) +int BPF_PROG(bpf_burst_get_retrans, struct mptcp_sock *msk, + struct mptcp_sched_data *data) { struct sock *backup = NULL, *pick = NULL; struct mptcp_subflow_context *subflow; int min_stale_count = INT_MAX; - bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + bpf_for_each(mptcp_subflow_sched, subflow, (struct sock *)msk, data) { struct sock *ssk = bpf_mptcp_subflow_tcp_sock(subflow); if (!ssk || !mptcp_subflow_active(subflow)) From patchwork Fri Mar 7 11:36:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 14006341 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 664F625771 for ; Fri, 7 Mar 2025 11:37:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347441; cv=none; b=oG+9Jnhc42o8TPY/G2BfG/d0UB6x923ZysRPJ8/0Jp0VBcNAAhRHZ9yamDfYum688k70dLj3LBgX9ZSLv2ZLCU3la/UPOdM9lKw9ctSkgiw0biDmEptcEmZjABXVd6NN6mspboCjeOGiA4I8GOPkhUNer3Zc74j9N4wP+XjPpiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741347441; c=relaxed/simple; bh=hqW7ItUM/XSfB36ILy7bSow0nePwi9oZ4mxqFS0CFfc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=REXCHOT0AyorjCFDqHYB7nqIQhe5s+0czg8yVVE60b27iuKzblmctLIlAY7e0YxJdSuALOQKOrEgI21RN3PsnF5BJaAlJ0X8w+ZeVZ8YqAw0+Bw1AVt5bHpcZ5i86aK/Dr5YdylD5pzAzFwKrVYTRx/jgh3k1ZkWpmi6nLgF6OM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ujaa/Sgr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ujaa/Sgr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7B77C4CEE5; Fri, 7 Mar 2025 11:37:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741347439; bh=hqW7ItUM/XSfB36ILy7bSow0nePwi9oZ4mxqFS0CFfc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ujaa/SgrSmPeI0PTbr4GAiDcyYgvKOjEAXyynOg6DRcB55nKCzJC2jcmNULMa5ocX hyBeWMx4SA2JyQjFre9YDaQBKjRrkCkM6paM/kEJQGp58FcTESo9bgjx6Oe7cspJn8 A6oAp6S7fOZljY4XIPzzQhd1Hb2PTe92BS3vLNBiEPzEBoLLJASe0Agh0RcveQYyZF ZT/0bU6URJKHu1pcCz+/wJSpIYMGrbCFzbVaI/bc7zEIhAn1SOOlYtmOhH3yP3nCBY S4e8fmXKpVAEU9HIqb9C3/nbiMsI+E0hCOB8GTMtNRAVOVJv6quayncaHyDU1MZmLC hfWuDHvVIk7DQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 11/11] mptcp: drop subflow contexts in mptcp_sched_data Date: Fri, 7 Mar 2025 19:36:52 +0800 Message-ID: <54a6a158b655f9e19588a1460867316f6d0cef64.1741347233.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang The mptcp_subflow_sched bpf_iter is added now, it's better to use the helper bpf_for_each(mptcp_subflow_sched) to traverse all subflows on the conn_list of an MPTCP socket and then call kfunc to modify the fields of each subflow in the WIP MPTCP BPF packet scheduler examples, instead of converting them to a fixed array. With this helper, we can get rid of this subflow array "contexts" and the size of it "subflows" in struct mptcp_sched_data. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index bd3d1b3654dd..0083af204000 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -100,11 +100,7 @@ struct mptcp_out_options { #define MPTCP_SCHED_MAX 128 #define MPTCP_SCHED_BUF_MAX (MPTCP_SCHED_NAME_MAX * MPTCP_SCHED_MAX) -#define MPTCP_SUBFLOWS_MAX 8 - struct mptcp_sched_data { - u8 subflows; - struct mptcp_subflow_context *contexts[MPTCP_SUBFLOWS_MAX]; struct task_struct *bpf_iter_task; };