From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-185.mta0.migadu.com (out-185.mta0.migadu.com [91.218.175.185]) (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 082AA1607B4 for ; Fri, 24 Jan 2025 01:38:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.185 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737682735; cv=none; b=umRhiyp4pyXcLJyp6zxX/H/H37YxgcsKKFjE228u58OUQZ5WJT4NzmUFuVnOI3CCWLWIVX3WOjFwRovdhhOnqn4Eq8VZY8FfnomFy9dd19Pw6+8lWnGToJXrRJYT4Kf3rDS0LdYIEWFf26O46Fs5ERu/Uih5X0QZg8wN2QiQBUI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737682735; c=relaxed/simple; bh=/wnClBcqy9IKrjwNnBUNENWd6mxPJwtoFNxLjAZn4HI=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=Fhlg1NS/Q4Nd8+JdQlfZyDdVNvDK2QpHBMDm4QpTKyuxOQlTc/Z0Vh2uJOWq+P86FoT5L5ES8puPwtvfNs8gi4xAN6gr8h/XDB7gaURfMD/HIimWjsys6gN9lkBYTh8LRuLJZIM3dCrALdhziKVEKqVW+hz4bFGtdcApjpG7ESw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=GZLwMxLm; arc=none smtp.client-ip=91.218.175.185 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="GZLwMxLm" Message-ID: <5313b129-72b1-4fdc-954e-e2d0a141a99c@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1737682716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PuF0gN9ro6NkSKhiCAGItV5HEn3Pklvs68VtZ/vAjKU=; b=GZLwMxLmr8EUv1bZOB3dBcC2uVrOJkEOAmHOSVAvZGDxaYihXg/9LaTZYs7L2/4RAi9oWH CJR8XbBtTezqOkGblOibRHvE8+oHFz4F/eNaGUfNaYCSmlclyM85kMsQn6n39UtVxPHpA1 X27+LG2jxP+LfNFH8lOpcz2J5ZQSzm4= Date: Thu, 23 Jan 2025 17:38:28 -0800 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH bpf-next/net v2 7/7] selftests/bpf: Add mptcp_subflow bpf_iter subtest To: Geliang Tang Cc: "Matthieu Baerts (NGI0)" , mptcp@lists.linux.dev, Mat Martineau , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Mykola Lysenko , Shuah Khan , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-kselftest@vger.kernel.org References: <20241219-bpf-next-net-mptcp-bpf_iter-subflows-v2-0-ae244d3cdbbc@kernel.org> <20241219-bpf-next-net-mptcp-bpf_iter-subflows-v2-7-ae244d3cdbbc@kernel.org> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau Content-Language: en-US In-Reply-To: <20241219-bpf-next-net-mptcp-bpf_iter-subflows-v2-7-ae244d3cdbbc@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT On 12/19/24 7:46 AM, Matthieu Baerts (NGI0) wrote: > +SEC("cgroup/getsockopt") > +int iters_subflow(struct bpf_sockopt *ctx) > +{ > + struct mptcp_subflow_context *subflow; > + struct bpf_sock *sk = ctx->sk; > + struct sock *ssk = NULL; > + struct mptcp_sock *msk; > + int local_ids = 0; > + > + if (ctx->level != SOL_TCP || ctx->optname != TCP_IS_MPTCP) > + return 1; > + > + msk = bpf_skc_to_mptcp_sock(sk); > + if (!msk || msk->pm.server_side || !msk->pm.subflows) > + return 1; > + > + msk = bpf_mptcp_sock_acquire(msk); > + if (!msk) > + return 1; > + bpf_for_each(mptcp_subflow, subflow, msk) { > + /* Here MPTCP-specific packet scheduler kfunc can be called: > + * this test is not doing anything really useful, only to > + * verify the iteration works. > + */ > + > + local_ids += subflow->subflow_id; > + > + /* only to check the following kfunc works */ > + ssk = mptcp_subflow_tcp_sock(subflow); It is good to have test cases to exercise the new iter and kfunc. Thanks. However, it seems not useful to show how it will be used in the future packet/subflow scheduler. iiuc, the core piece is in bpf_struct_ops. Without it, it is hard to comment. Any RFC patches ready to be posted? > + } > + > + if (!ssk) > + goto out; > + > + /* assert: if not OK, something wrong on the kernel side */ > + if (ssk->sk_dport != ((struct sock *)msk)->sk_dport) > + goto out; > + > + /* only to check the following kfunc works */ > + subflow = bpf_mptcp_subflow_ctx(ssk); > + if (!subflow || subflow->token != msk->token) > + goto out; > + > + ids = local_ids; > + > +out: > + bpf_mptcp_sock_release(msk); > + return 1; > +}