[PATCH mptcp-next v14 0/6] add skc_to_mptcp_sock

Geliang Tang posted 6 patches 2 years ago
Failed in applying to current master (apply log)
include/linux/bpf.h                           |   9 +
include/linux/btf_ids.h                       |   3 +-
include/uapi/linux/bpf.h                      |   7 +
net/core/filter.c                             |  16 ++
net/mptcp/Makefile                            |   4 +
net/mptcp/bpf.c                               |  22 ++
scripts/bpf_doc.py                            |   2 +
tools/include/uapi/linux/bpf.h                |   7 +
tools/testing/selftests/bpf/bpf_tcp_helpers.h |  12 +
.../testing/selftests/bpf/prog_tests/mptcp.c  | 209 +++++++++++++++---
tools/testing/selftests/bpf/progs/mptcp.c     |  48 ----
.../testing/selftests/bpf/progs/mptcp_sock.c  |  76 +++++++
12 files changed, 331 insertions(+), 84 deletions(-)
create mode 100644 net/mptcp/bpf.c
delete mode 100644 tools/testing/selftests/bpf/progs/mptcp.c
create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sock.c
[PATCH mptcp-next v14 0/6] add skc_to_mptcp_sock
Posted by Geliang Tang 2 years ago
This series addresses to Alexei comments in [1].

[1]
https://lore.kernel.org/netdev/20200922040830.3iis6xiavhvpfq3v@ast-mbp.dhcp.thefacebook.com/

v14:
 - merge the squash-to patch for patch 1.
 - rename progs/mptcp.c to progs/mptcp_sock.c in patch 2.
 - split the token verifying as a new patch from patch 3.
 - update the commit logs.

v13:
 patch 1:
  As Mat mentioned in the "BPF packet scheduler" series, BPF packet
scheduler depends on CONFIG_BPF_SYSCALL. In fact, the series depends on
CONFIG_BPF_SYSCALL too.
  - change "CONFIG_BPF" to "CONFIG_BPF_SYSCALL" in Makefile
  - change "ifdef CONFIG_MPTCP" in include/linux/bpf.h to:
    "#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL)"
  - drop "#ifdef CONFIG_MPTCP" in net/core/filter.c
 patch 2:
  Address to Matt's comments in v12:
  - use bpf_object__find_program_by_name, bpf_object__find_map_by_name
  - use -EIO
  - drop close_client_fd label
  - add more CHECK_FAIL

v12:
 patch 1:
  - merged the squash-to patch for v11.
  - rebased to export/20220324T054815.
 patch 2:
  - fix the libbpf 0.8 build error.
 patch 4:
  - use fgets instead of fread to get null terminated string.

v11:
 - merge "check more values from mptcp_sock" series into this series.
 - patch 2:
   - rebased.
 - patch 3:
   - rebased.
   - add 'Copyright' entry as Matt suggested in v9.
 - patch 4:
   - add test__start_subtest.
   - add some 'Copyright' entries.
 - patch 5:
   - change monitor_log_path to static
   - drop bpf_trace_printk()
 - patch 6:
   - use TCP_CA_NAME_MAX instead of strlen(val.ca_name) in strncmp().
   - use 'sysctl -b net.ipv4.tcp_congestion_control' to get ca_name.

v10:
 - merge the squash-to patch.
 - update patch 3 as Matt suggested.
 - add sync() in get_msk_token() before read().
 - add a comment for get_msk_token().
 - update subjects and commit logs.

v9:
 - update progs/mptcp.c in patch 4 and 5

v8:
 - update as Matt suggested.

v7:
 - parse msk token from the output of 'ip mptcp monitor'.
 - add Nicolas and Matt's SoB tags.

v6:
 - add skc_to_mptcp_sock helper and test

RESEND:
 - fix the CI Build Failure.
v5:
 - fix incorrect token value
 - verify the token in selftest

v4:
 - define bpf_mptcp_sock_proto as a static function, no longer export
   it in linux/bpf.h

v3:
 - use RET_PTR_TO_BTF_ID_OR_NULL instead of RET_PTR_TO_MPTCP_SOCK_OR_NULL
 - add a new bpf_id BTF_SOCK_TYPE_MPTCP

v2:
 - keep RET_PTR_TO_MPTCP_SOCK_OR_NULL. If we use RET_PTR_TO_BTF_ID_OR_NULL
instead of RET_PTR_TO_MPTCP_SOCK_OR_NULL as Alexei suggested, the
"userspace" tests developed by Nicolas will break.

Geliang Tang (6):
  bpf: add bpf_skc_to_mptcp_sock_proto
  Squash to "selftests: bpf: add MPTCP test base"
  selftests: bpf: test bpf_skc_to_mptcp_sock
  selftests: bpf: verify token of struct mptcp_sock
  selftests: bpf: verify ca_name of struct mptcp_sock
  selftests: bpf: verify first of struct mptcp_sock

 include/linux/bpf.h                           |   9 +
 include/linux/btf_ids.h                       |   3 +-
 include/uapi/linux/bpf.h                      |   7 +
 net/core/filter.c                             |  16 ++
 net/mptcp/Makefile                            |   4 +
 net/mptcp/bpf.c                               |  22 ++
 scripts/bpf_doc.py                            |   2 +
 tools/include/uapi/linux/bpf.h                |   7 +
 tools/testing/selftests/bpf/bpf_tcp_helpers.h |  12 +
 .../testing/selftests/bpf/prog_tests/mptcp.c  | 209 +++++++++++++++---
 tools/testing/selftests/bpf/progs/mptcp.c     |  48 ----
 .../testing/selftests/bpf/progs/mptcp_sock.c  |  76 +++++++
 12 files changed, 331 insertions(+), 84 deletions(-)
 create mode 100644 net/mptcp/bpf.c
 delete mode 100644 tools/testing/selftests/bpf/progs/mptcp.c
 create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sock.c

-- 
2.34.1


Re: [PATCH mptcp-next v14 0/6] add skc_to_mptcp_sock
Posted by Mat Martineau 2 years ago
On Sun, 27 Mar 2022, Geliang Tang wrote:

> This series addresses to Alexei comments in [1].
>
> [1]
> https://lore.kernel.org/netdev/20200922040830.3iis6xiavhvpfq3v@ast-mbp.dhcp.thefacebook.com/
>
> v14:
> - merge the squash-to patch for patch 1.
> - rename progs/mptcp.c to progs/mptcp_sock.c in patch 2.
> - split the token verifying as a new patch from patch 3.
> - update the commit logs.

Looks ok to me, Matthieu had acked the previous rev so he can take another 
look too.

- Mat

>
> v13:
> patch 1:
>  As Mat mentioned in the "BPF packet scheduler" series, BPF packet
> scheduler depends on CONFIG_BPF_SYSCALL. In fact, the series depends on
> CONFIG_BPF_SYSCALL too.
>  - change "CONFIG_BPF" to "CONFIG_BPF_SYSCALL" in Makefile
>  - change "ifdef CONFIG_MPTCP" in include/linux/bpf.h to:
>    "#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL)"
>  - drop "#ifdef CONFIG_MPTCP" in net/core/filter.c
> patch 2:
>  Address to Matt's comments in v12:
>  - use bpf_object__find_program_by_name, bpf_object__find_map_by_name
>  - use -EIO
>  - drop close_client_fd label
>  - add more CHECK_FAIL
>
> v12:
> patch 1:
>  - merged the squash-to patch for v11.
>  - rebased to export/20220324T054815.
> patch 2:
>  - fix the libbpf 0.8 build error.
> patch 4:
>  - use fgets instead of fread to get null terminated string.
>
> v11:
> - merge "check more values from mptcp_sock" series into this series.
> - patch 2:
>   - rebased.
> - patch 3:
>   - rebased.
>   - add 'Copyright' entry as Matt suggested in v9.
> - patch 4:
>   - add test__start_subtest.
>   - add some 'Copyright' entries.
> - patch 5:
>   - change monitor_log_path to static
>   - drop bpf_trace_printk()
> - patch 6:
>   - use TCP_CA_NAME_MAX instead of strlen(val.ca_name) in strncmp().
>   - use 'sysctl -b net.ipv4.tcp_congestion_control' to get ca_name.
>
> v10:
> - merge the squash-to patch.
> - update patch 3 as Matt suggested.
> - add sync() in get_msk_token() before read().
> - add a comment for get_msk_token().
> - update subjects and commit logs.
>
> v9:
> - update progs/mptcp.c in patch 4 and 5
>
> v8:
> - update as Matt suggested.
>
> v7:
> - parse msk token from the output of 'ip mptcp monitor'.
> - add Nicolas and Matt's SoB tags.
>
> v6:
> - add skc_to_mptcp_sock helper and test
>
> RESEND:
> - fix the CI Build Failure.
> v5:
> - fix incorrect token value
> - verify the token in selftest
>
> v4:
> - define bpf_mptcp_sock_proto as a static function, no longer export
>   it in linux/bpf.h
>
> v3:
> - use RET_PTR_TO_BTF_ID_OR_NULL instead of RET_PTR_TO_MPTCP_SOCK_OR_NULL
> - add a new bpf_id BTF_SOCK_TYPE_MPTCP
>
> v2:
> - keep RET_PTR_TO_MPTCP_SOCK_OR_NULL. If we use RET_PTR_TO_BTF_ID_OR_NULL
> instead of RET_PTR_TO_MPTCP_SOCK_OR_NULL as Alexei suggested, the
> "userspace" tests developed by Nicolas will break.
>
> Geliang Tang (6):
>  bpf: add bpf_skc_to_mptcp_sock_proto
>  Squash to "selftests: bpf: add MPTCP test base"
>  selftests: bpf: test bpf_skc_to_mptcp_sock
>  selftests: bpf: verify token of struct mptcp_sock
>  selftests: bpf: verify ca_name of struct mptcp_sock
>  selftests: bpf: verify first of struct mptcp_sock
>
> include/linux/bpf.h                           |   9 +
> include/linux/btf_ids.h                       |   3 +-
> include/uapi/linux/bpf.h                      |   7 +
> net/core/filter.c                             |  16 ++
> net/mptcp/Makefile                            |   4 +
> net/mptcp/bpf.c                               |  22 ++
> scripts/bpf_doc.py                            |   2 +
> tools/include/uapi/linux/bpf.h                |   7 +
> tools/testing/selftests/bpf/bpf_tcp_helpers.h |  12 +
> .../testing/selftests/bpf/prog_tests/mptcp.c  | 209 +++++++++++++++---
> tools/testing/selftests/bpf/progs/mptcp.c     |  48 ----
> .../testing/selftests/bpf/progs/mptcp_sock.c  |  76 +++++++
> 12 files changed, 331 insertions(+), 84 deletions(-)
> create mode 100644 net/mptcp/bpf.c
> delete mode 100644 tools/testing/selftests/bpf/progs/mptcp.c
> create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sock.c
>
> -- 
> 2.34.1
>
>
>

--
Mat Martineau
Intel

Re: [PATCH mptcp-next v14 0/6] add skc_to_mptcp_sock
Posted by Matthieu Baerts 1 year, 12 months ago
Hi Geliang, Mat,

On 26/03/2022 17:24, Geliang Tang wrote:
> This series addresses to Alexei comments in [1].
> 
> [1]
> https://lore.kernel.org/netdev/20200922040830.3iis6xiavhvpfq3v@ast-mbp.dhcp.thefacebook.com/
> 
> v14:
>  - merge the squash-to patch for patch 1.
>  - rename progs/mptcp.c to progs/mptcp_sock.c in patch 2.
>  - split the token verifying as a new patch from patch 3.
>  - update the commit logs.

Thank you for this new version and the reviews!

Now in our tree with Mat's ACK:


New patches for t/upstream:

- f12408559134: bpf: add bpf_skc_to_mptcp_sock_proto
- 3666ef4c06e3: "squashed" patch 2/6 in "selftests: bpf: add MPTCP test
base"
- 0e2e98491bb3: selftests: bpf: test bpf_skc_to_mptcp_sock
- fc48505b75eb: selftests: bpf: verify token of struct mptcp_sock
- d74bab4b4875: selftests: bpf: verify ca_name of struct mptcp_sock
- 0b2f88af324f: selftests: bpf: verify first of struct mptcp_sock
- Results: e1bfedef8dde..d2b06f03e554 (export)


Builds and tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220329T195411
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net