netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf 00/11] bpf sockmap fixes
@ 2023-03-21 21:52 John Fastabend
  2023-03-21 21:52 ` [PATCH bpf 01/11] bpf: sockmap, pass skb ownership through read_skb John Fastabend
                   ` (10 more replies)
  0 siblings, 11 replies; 17+ messages in thread
From: John Fastabend @ 2023-03-21 21:52 UTC (permalink / raw)
  To: jakub, daniel, lmb, cong.wang
  Cc: bpf, john.fastabend, netdev, edumazet, ast, andrii, will

Fixes for sockmap running against NGINX TCP tests and also on an
underprovisioned VM so that we hit error (ENOMEM) cases regularly.

The first 3 patches fix cases related to ENOMEM that were either
causing splats or data hangs.

Then 4-7 resolved cases found when running NGINX with its sockets
assigned to sockmap. These mostly have to do with handling fin/shutdown
incorrectly and ensuring epoll_wait works as expected.

Patches 8 and 9 extract some of the logic used for sockmap_listen tests
so that we can use it in other tests because it didn't make much
sense to me to add tests to the sockmap_listen cases when here we
are testing send/recv *basic* cases.

Finally patches 10 and 11 add the new tests to ensure we handle
ioctl(FIONREAD) and shutdown correctly.

To test the series I ran the NGINX compliance tests and the sockmap
selftests.

There are some more things to be done here, but these 11 patches
stand on their own in my opionion and fix issues we are having in
CI now. For bpf-next we can fixup/improve selftests to use the
ASSERT_* in sockmap_helpers, streamline some of the testing, and
add more tests. We also still are debugging a few additional flakes
patches coming soon.

John Fastabend (11):
  bpf: sockmap, pass skb ownership through read_skb
  bpf: sockmap, convert schedule_work into delayed_work
  bpf: sockmap, improved check for empty queue
  bpf: sockmap, handle fin correctly
  bpf: sockmap, TCP data stall on recv before accept
  bpf: sockmap, wake up polling after data copy
  bpf: sockmap incorrectly handling copied_seq
  bpf: sockmap, pull socket helpers out of listen test for general use
  bpf: sockmap, build helper to create connected socket pair
  bpf: sockmap, test shutdown() correctly exits epoll and recv()=0
  bpf: sockmap, test FIONREAD returns correct bytes in rx buffer

 include/linux/skmsg.h                         |   2 +-
 include/net/tcp.h                             |   1 +
 net/core/skmsg.c                              |  58 ++-
 net/core/sock_map.c                           |   3 +-
 net/ipv4/tcp.c                                |   9 -
 net/ipv4/tcp_bpf.c                            |  81 +++-
 net/ipv4/udp.c                                |   5 +-
 net/unix/af_unix.c                            |   5 +-
 .../selftests/bpf/prog_tests/sockmap_basic.c  | 119 +++++-
 .../bpf/prog_tests/sockmap_helpers.h          | 374 ++++++++++++++++++
 .../selftests/bpf/prog_tests/sockmap_listen.c | 352 +----------------
 .../bpf/progs/test_sockmap_pass_prog.c        |  32 ++
 12 files changed, 659 insertions(+), 382 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h
 create mode 100644 tools/testing/selftests/bpf/progs/test_sockmap_pass_prog.c

-- 
2.33.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2023-03-22  5:39 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-21 21:52 [PATCH bpf 00/11] bpf sockmap fixes John Fastabend
2023-03-21 21:52 ` [PATCH bpf 01/11] bpf: sockmap, pass skb ownership through read_skb John Fastabend
2023-03-21 21:52 ` [PATCH bpf 02/11] bpf: sockmap, convert schedule_work into delayed_work John Fastabend
2023-03-21 21:52 ` [PATCH bpf 03/11] bpf: sockmap, improved check for empty queue John Fastabend
2023-03-21 21:52 ` [PATCH bpf 04/11] bpf: sockmap, handle fin correctly John Fastabend
2023-03-21 21:52 ` [PATCH bpf 05/11] bpf: sockmap, TCP data stall on recv before accept John Fastabend
2023-03-21 22:07   ` Eric Dumazet
2023-03-21 22:09     ` John Fastabend
2023-03-21 21:52 ` [PATCH bpf 06/11] bpf: sockmap, wake up polling after data copy John Fastabend
2023-03-21 21:52 ` [PATCH bpf 07/11] bpf: sockmap incorrectly handling copied_seq John Fastabend
2023-03-22  3:10   ` Eric Dumazet
2023-03-22  5:39     ` John Fastabend
2023-03-21 21:52 ` [PATCH bpf 08/11] bpf: sockmap, pull socket helpers out of listen test for general use John Fastabend
2023-03-21 21:52 ` [PATCH bpf 09/11] bpf: sockmap, build helper to create connected socket pair John Fastabend
2023-03-21 21:52 ` [PATCH bpf 10/11] bpf: sockmap, test shutdown() correctly exits epoll and recv()=0 John Fastabend
2023-03-21 22:11   ` John Fastabend
2023-03-21 21:52 ` [PATCH bpf 11/11] bpf: sockmap, test FIONREAD returns correct bytes in rx buffer John Fastabend

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).