[PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1

Geliang Tang posted 9 patches 1 year, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/cover.1668151131.git.geliang.tang@suse.com
Maintainers: Mat Martineau <mathew.j.martineau@linux.intel.com>, Matthieu Baerts <matthieu.baerts@tessares.net>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, Martin KaFai Lau <martin.lau@linux.dev>, Song Liu <song@kernel.org>, Yonghong Song <yhs@fb.com>, John Fastabend <john.fastabend@gmail.com>, KP Singh <kpsingh@kernel.org>, Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>, Jiri Olsa <jolsa@kernel.org>, Mykola Lysenko <mykolal@fb.com>, Shuah Khan <shuah@kernel.org>
include/net/mptcp.h                           |   6 +-
net/mptcp/bpf.c                               |   1 +
net/mptcp/pm.c                                |   9 +-
net/mptcp/pm_netlink.c                        |   3 -
net/mptcp/protocol.c                          | 161 +++++++++---------
net/mptcp/protocol.h                          |   1 -
net/mptcp/sched.c                             |  21 ++-
tools/testing/selftests/bpf/bpf_tcp_helpers.h |   8 +-
.../selftests/bpf/progs/mptcp_bpf_bkup.c      |  10 +-
.../selftests/bpf/progs/mptcp_bpf_first.c     |  10 +-
.../selftests/bpf/progs/mptcp_bpf_rr.c        |  10 +-
11 files changed, 143 insertions(+), 97 deletions(-)
[PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Geliang Tang 1 year, 4 months ago
v19:
 - update patch 1.
 - split "BPF redundant scheduler" into two parts.
 - rebased on "export/20221111T055536".

Geliang Tang (9):
  mptcp: refactor push_pending logic
  mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
  mptcp: add sched_data_set_contexts helper
  Squash to "mptcp: add struct mptcp_sched_ops"
  Squash to "bpf: Add bpf_mptcp_sched_ops"
  Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
  Squash to "selftests/bpf: Add bpf_first scheduler"
  Squash to "selftests/bpf: Add bpf_bkup scheduler"
  Squash to "selftests/bpf: Add bpf_rr scheduler"

 include/net/mptcp.h                           |   6 +-
 net/mptcp/bpf.c                               |   1 +
 net/mptcp/pm.c                                |   9 +-
 net/mptcp/pm_netlink.c                        |   3 -
 net/mptcp/protocol.c                          | 161 +++++++++---------
 net/mptcp/protocol.h                          |   1 -
 net/mptcp/sched.c                             |  21 ++-
 tools/testing/selftests/bpf/bpf_tcp_helpers.h |   8 +-
 .../selftests/bpf/progs/mptcp_bpf_bkup.c      |  10 +-
 .../selftests/bpf/progs/mptcp_bpf_first.c     |  10 +-
 .../selftests/bpf/progs/mptcp_bpf_rr.c        |  10 +-
 11 files changed, 143 insertions(+), 97 deletions(-)

-- 
2.35.3
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Matthieu Baerts 1 year, 4 months ago
Hi Geliang, Mat,

On 11/11/2022 08:47, Geliang Tang wrote:
> v19:
>  - update patch 1.
>  - split "BPF redundant scheduler" into two parts.
>  - rebased on "export/20221111T055536".
> 
> Geliang Tang (9):
>   mptcp: refactor push_pending logic
>   mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
>   mptcp: add sched_data_set_contexts helper
>   Squash to "mptcp: add struct mptcp_sched_ops"
>   Squash to "bpf: Add bpf_mptcp_sched_ops"
>   Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
>   Squash to "selftests/bpf: Add bpf_first scheduler"
>   Squash to "selftests/bpf: Add bpf_bkup scheduler"
>   Squash to "selftests/bpf: Add bpf_rr scheduler"

Thank you for the patches and the reviews!

I just applied them (+ an additional squash-to patch) in our tree (feat.
for other trees (bpf)) with Mat's RvB tag.

Patches 1/9 and 2/9 have been added at the beginning. Patch 3/9 depends
on "mptcp: add struct mptcp_sched_ops" and it has been applied just
before "bpf: Add bpf_mptcp_sched_ops" as mentioned by Geliang.

Please also note that patch 5/9 has been squashed in "selftests/bpf: Add
mptcp sched structs" instead of "bpf: Add bpf_mptcp_sched_ops. Do not
hesitate to tell me if something is not OK!

New patches for t/upstream:
- 602fba0955d1: mptcp: refactor push_pending logic
- 343f8eed9abb: mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
- Results: 69720c6cd168..ac857086fdb8 (export)

- 65e9504361f6: mptcp: add sched_data_set_contexts helper
- Results: ac857086fdb8..ae9c4d4cf58f (export)

- 82721c73112e: "squashed" patch 4/9 in "mptcp: add struct mptcp_sched_ops"
- a7c2367dd1d2: "squashed" patch 5/9 in "selftests/bpf: Add mptcp sched
structs"
- ee74ff707e4b: "squashed" patch 6/9 in "bpf: Add bpf_mptcp_sched_kfunc_set"
- 813537758eb5: "squashed" patch 7/9 in "selftests/bpf: Add bpf_first
scheduler"
- 762c5b194975: "squashed" patch 8/9 in "selftests/bpf: Add bpf_bkup
scheduler"
- 5db53c2d3ef6: "squashed" patch 9/9 in "selftests/bpf: Add bpf_rr
scheduler"
- Results: ae9c4d4cf58f..0814e9ff0a94 (export)

- 7b3058027867: "squashed" in "mptcp: refactor push_pending logic"
- Results: 0814e9ff0a94..d98411bcedd1 (export)

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20221118T145003

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Geliang Tang 1 year, 3 months ago
On Fri, Nov 18, 2022 at 03:52:38PM +0100, Matthieu Baerts wrote:
> Hi Geliang, Mat,
> 
> On 11/11/2022 08:47, Geliang Tang wrote:
> > v19:
> >  - update patch 1.
> >  - split "BPF redundant scheduler" into two parts.
> >  - rebased on "export/20221111T055536".
> > 
> > Geliang Tang (9):
> >   mptcp: refactor push_pending logic
> >   mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
> >   mptcp: add sched_data_set_contexts helper
> >   Squash to "mptcp: add struct mptcp_sched_ops"
> >   Squash to "bpf: Add bpf_mptcp_sched_ops"
> >   Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"

Hi Matt,

The commit logs in these three patches become mismatched since the squashed
code, please update them for me:

'''
mptcp: add struct mptcp_sched_ops

This patch defines struct mptcp_sched_ops, which has three struct members,
name, owner and list, and four function pointers: init(), release(),
data_init() and get_subflow().

The scheduler functions data_init() and get_subflow() have a struct
mptcp_sched_data parameter, which contains a reinject flag and a
mptcp_subflow_context array.

Add the scheduler registering, unregistering and finding functions to add,
delete and find a packet scheduler on the global list mptcp_sched_list.


bpf: Add bpf_mptcp_sched_kfunc_set

This patch adds a new struct btf_kfunc_id_set for MPTCP scheduler. Add
mptcp_subflow_set_scheduled() and mptcp_sched_data_set_contexts() helpers
into this id_set, and register it in bpf_mptcp_sched_kfunc_init() to make
sure these helpers can be accessed from the BPF context.


selftests/bpf: Add mptcp sched structs

This patch adds three MPTCP scheduler structures: struct mptcp_sched_ops,
struct mptcp_sched_data and struct mptcp_subflow_context; and exports
mptcp_subflow_set_scheduled() and mptcp_sched_data_set_contexts() helpers
for bpf selftests.
'''

Thanks,
-Geliang

> >   Squash to "selftests/bpf: Add bpf_first scheduler"
> >   Squash to "selftests/bpf: Add bpf_bkup scheduler"
> >   Squash to "selftests/bpf: Add bpf_rr scheduler"
> 
> Thank you for the patches and the reviews!
> 
> I just applied them (+ an additional squash-to patch) in our tree (feat.
> for other trees (bpf)) with Mat's RvB tag.
> 
> Patches 1/9 and 2/9 have been added at the beginning. Patch 3/9 depends
> on "mptcp: add struct mptcp_sched_ops" and it has been applied just
> before "bpf: Add bpf_mptcp_sched_ops" as mentioned by Geliang.
> 
> Please also note that patch 5/9 has been squashed in "selftests/bpf: Add
> mptcp sched structs" instead of "bpf: Add bpf_mptcp_sched_ops. Do not
> hesitate to tell me if something is not OK!
> 
> New patches for t/upstream:
> - 602fba0955d1: mptcp: refactor push_pending logic
> - 343f8eed9abb: mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
> - Results: 69720c6cd168..ac857086fdb8 (export)
> 
> - 65e9504361f6: mptcp: add sched_data_set_contexts helper
> - Results: ac857086fdb8..ae9c4d4cf58f (export)
> 
> - 82721c73112e: "squashed" patch 4/9 in "mptcp: add struct mptcp_sched_ops"
> - a7c2367dd1d2: "squashed" patch 5/9 in "selftests/bpf: Add mptcp sched
> structs"
> - ee74ff707e4b: "squashed" patch 6/9 in "bpf: Add bpf_mptcp_sched_kfunc_set"
> - 813537758eb5: "squashed" patch 7/9 in "selftests/bpf: Add bpf_first
> scheduler"
> - 762c5b194975: "squashed" patch 8/9 in "selftests/bpf: Add bpf_bkup
> scheduler"
> - 5db53c2d3ef6: "squashed" patch 9/9 in "selftests/bpf: Add bpf_rr
> scheduler"
> - Results: ae9c4d4cf58f..0814e9ff0a94 (export)
> 
> - 7b3058027867: "squashed" in "mptcp: refactor push_pending logic"
> - Results: 0814e9ff0a94..d98411bcedd1 (export)
> 
> Tests are now in progress:
> 
> https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20221118T145003
> 
> Cheers,
> Matt
> -- 
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Matthieu Baerts 1 year, 3 months ago
Hi Geliang,

On 09/12/2022 04:18, Geliang Tang wrote:
> On Fri, Nov 18, 2022 at 03:52:38PM +0100, Matthieu Baerts wrote:
>> Hi Geliang, Mat,
>>
>> On 11/11/2022 08:47, Geliang Tang wrote:
>>> v19:
>>>  - update patch 1.
>>>  - split "BPF redundant scheduler" into two parts.
>>>  - rebased on "export/20221111T055536".
>>>
>>> Geliang Tang (9):
>>>   mptcp: refactor push_pending logic
>>>   mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
>>>   mptcp: add sched_data_set_contexts helper
>>>   Squash to "mptcp: add struct mptcp_sched_ops"
>>>   Squash to "bpf: Add bpf_mptcp_sched_ops"
>>>   Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
> 
> Hi Matt,
> 
> The commit logs in these three patches become mismatched since the squashed
> code, please update them for me:

Good catch!

Sure, just did:

New patches for t/upstream:
- 8685053d6d06: tg:msg: update as requested by Geliang
- b81ee295d042: tg:msg: update as requested by Geliang
- e399a35fdc24: tg:msg: update as requested by Geliang
- Results: 6d7665253eef..8ef79d8e4dfb (export)

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20221214T173325

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Geliang Tang 1 year, 4 months ago
On Fri, Nov 18, 2022 at 03:52:38PM +0100, Matthieu Baerts wrote:
> Hi Geliang, Mat,
> 
> On 11/11/2022 08:47, Geliang Tang wrote:
> > v19:
> >  - update patch 1.
> >  - split "BPF redundant scheduler" into two parts.
> >  - rebased on "export/20221111T055536".
> > 
> > Geliang Tang (9):
> >   mptcp: refactor push_pending logic
> >   mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
> >   mptcp: add sched_data_set_contexts helper
> >   Squash to "mptcp: add struct mptcp_sched_ops"
> >   Squash to "bpf: Add bpf_mptcp_sched_ops"
> >   Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
> >   Squash to "selftests/bpf: Add bpf_first scheduler"
> >   Squash to "selftests/bpf: Add bpf_bkup scheduler"
> >   Squash to "selftests/bpf: Add bpf_rr scheduler"
> 
> Thank you for the patches and the reviews!
> 
> I just applied them (+ an additional squash-to patch) in our tree (feat.
> for other trees (bpf)) with Mat's RvB tag.
> 
> Patches 1/9 and 2/9 have been added at the beginning. Patch 3/9 depends
> on "mptcp: add struct mptcp_sched_ops" and it has been applied just
> before "bpf: Add bpf_mptcp_sched_ops" as mentioned by Geliang.
> 
> Please also note that patch 5/9 has been squashed in "selftests/bpf: Add
> mptcp sched structs" instead of "bpf: Add bpf_mptcp_sched_ops. Do not
> hesitate to tell me if something is not OK!

Yes, it should be squashed in "selftests/bpf: Add mptcp sched structs".
Thanks for fix this.

-Geliang

> 
> New patches for t/upstream:
> - 602fba0955d1: mptcp: refactor push_pending logic
> - 343f8eed9abb: mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
> - Results: 69720c6cd168..ac857086fdb8 (export)
> 
> - 65e9504361f6: mptcp: add sched_data_set_contexts helper
> - Results: ac857086fdb8..ae9c4d4cf58f (export)
> 
> - 82721c73112e: "squashed" patch 4/9 in "mptcp: add struct mptcp_sched_ops"
> - a7c2367dd1d2: "squashed" patch 5/9 in "selftests/bpf: Add mptcp sched
> structs"
> - ee74ff707e4b: "squashed" patch 6/9 in "bpf: Add bpf_mptcp_sched_kfunc_set"
> - 813537758eb5: "squashed" patch 7/9 in "selftests/bpf: Add bpf_first
> scheduler"
> - 762c5b194975: "squashed" patch 8/9 in "selftests/bpf: Add bpf_bkup
> scheduler"
> - 5db53c2d3ef6: "squashed" patch 9/9 in "selftests/bpf: Add bpf_rr
> scheduler"
> - Results: ae9c4d4cf58f..0814e9ff0a94 (export)
> 
> - 7b3058027867: "squashed" in "mptcp: refactor push_pending logic"
> - Results: 0814e9ff0a94..d98411bcedd1 (export)
> 
> Tests are now in progress:
> 
> https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20221118T145003
> 
> Cheers,
> Matt
> -- 
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Mat Martineau 1 year, 4 months ago
On Fri, 11 Nov 2022, Geliang Tang wrote:

> v19:
> - update patch 1.
> - split "BPF redundant scheduler" into two parts.
> - rebased on "export/20221111T055536".
>

Thanks Geliang.

I think v19 (part 1) looks ok for the export branch. simult_flows.sh was 
slightly faster (small sample size :) ) on my VM, for what it's worth.

Looks like the first three patches go at the beginning of the "features 
net-next-next" section, correct?

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>

> Geliang Tang (9):
>  mptcp: refactor push_pending logic
>  mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
>  mptcp: add sched_data_set_contexts helper
>  Squash to "mptcp: add struct mptcp_sched_ops"
>  Squash to "bpf: Add bpf_mptcp_sched_ops"
>  Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
>  Squash to "selftests/bpf: Add bpf_first scheduler"
>  Squash to "selftests/bpf: Add bpf_bkup scheduler"
>  Squash to "selftests/bpf: Add bpf_rr scheduler"
>
> include/net/mptcp.h                           |   6 +-
> net/mptcp/bpf.c                               |   1 +
> net/mptcp/pm.c                                |   9 +-
> net/mptcp/pm_netlink.c                        |   3 -
> net/mptcp/protocol.c                          | 161 +++++++++---------
> net/mptcp/protocol.h                          |   1 -
> net/mptcp/sched.c                             |  21 ++-
> tools/testing/selftests/bpf/bpf_tcp_helpers.h |   8 +-
> .../selftests/bpf/progs/mptcp_bpf_bkup.c      |  10 +-
> .../selftests/bpf/progs/mptcp_bpf_first.c     |  10 +-
> .../selftests/bpf/progs/mptcp_bpf_rr.c        |  10 +-
> 11 files changed, 143 insertions(+), 97 deletions(-)
>
> -- 
> 2.35.3
>
>
>

--
Mat Martineau
Intel
Re: [PATCH mptcp-next v19 0/9] BPF redundant scheduler, part 1
Posted by Geliang Tang 1 year, 4 months ago
On Tue, Nov 15, 2022 at 04:41:15PM -0800, Mat Martineau wrote:
> On Fri, 11 Nov 2022, Geliang Tang wrote:
> 
> > v19:
> > - update patch 1.
> > - split "BPF redundant scheduler" into two parts.
> > - rebased on "export/20221111T055536".
> > 
> 
> Thanks Geliang.
> 
> I think v19 (part 1) looks ok for the export branch. simult_flows.sh was
> slightly faster (small sample size :) ) on my VM, for what it's worth.
> 
> Looks like the first three patches go at the beginning of the "features
> net-next-next" section, correct?

Yes, the first two patches ("mptcp: refactor push_pending logic" and
"mptcp: drop last_snd and MPTCP_RESET_SCHEDULER") go at the beginning
of the "features net-next-next" section. But the third one "mptcp: add
sched_data_set_contexts helper" should be inserted between the commits
"mptcp: add scheduled in mptcp_subflow_context" and "bpf: Add
bpf_mptcp_sched_ops".

Thanks,
-Geliang

> 
> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
> 
> > Geliang Tang (9):
> >  mptcp: refactor push_pending logic
> >  mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
> >  mptcp: add sched_data_set_contexts helper
> >  Squash to "mptcp: add struct mptcp_sched_ops"
> >  Squash to "bpf: Add bpf_mptcp_sched_ops"
> >  Squash to "bpf: Add bpf_mptcp_sched_kfunc_set"
> >  Squash to "selftests/bpf: Add bpf_first scheduler"
> >  Squash to "selftests/bpf: Add bpf_bkup scheduler"
> >  Squash to "selftests/bpf: Add bpf_rr scheduler"
> > 
> > include/net/mptcp.h                           |   6 +-
> > net/mptcp/bpf.c                               |   1 +
> > net/mptcp/pm.c                                |   9 +-
> > net/mptcp/pm_netlink.c                        |   3 -
> > net/mptcp/protocol.c                          | 161 +++++++++---------
> > net/mptcp/protocol.h                          |   1 -
> > net/mptcp/sched.c                             |  21 ++-
> > tools/testing/selftests/bpf/bpf_tcp_helpers.h |   8 +-
> > .../selftests/bpf/progs/mptcp_bpf_bkup.c      |  10 +-
> > .../selftests/bpf/progs/mptcp_bpf_first.c     |  10 +-
> > .../selftests/bpf/progs/mptcp_bpf_rr.c        |  10 +-
> > 11 files changed, 143 insertions(+), 97 deletions(-)
> > 
> > -- 
> > 2.35.3
> > 
> > 
> > 
> 
> --
> Mat Martineau
> Intel