[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210311152910.56760-1-maciej.fijalkowski@intel.com>
Date: Thu, 11 Mar 2021 16:28:53 +0100
From: Maciej Fijalkowski <maciej.fijalkowski@...el.com>
To: bpf@...r.kernel.org, netdev@...r.kernel.org, daniel@...earbox.net,
ast@...nel.org
Cc: bjorn.topel@...el.com, magnus.karlsson@...el.com,
ciara.loftus@...el.com, john.fastabend@...il.com, toke@...hat.com,
Maciej Fijalkowski <maciej.fijalkowski@...el.com>
Subject: [PATCH v2 bpf-next 00/17] AF_XDP selftests improvements & bpf_link
--------------------------------------------------
v1 of xsk's bpf_link support can be found here:
https://lore.kernel.org/bpf/20210215154638.4627-1-maciej.fijalkowski@intel.com/
Changes since v1:
- selftests improvements and test case for bpf_link persistence itself
- do not unload netlink-based prog when --force flag is set (John)
- simplify return semantics in xsk_link_lookup (John)
--------------------------------------------------
This set is another approach towards addressing the below issue:
// load xdp prog and xskmap and add entry to xskmap at idx 10
$ sudo ./xdpsock -i ens801f0 -t -q 10
// add entry to xskmap at idx 11
$ sudo ./xdpsock -i ens801f0 -t -q 11
terminate one of the processes and another one is unable to work due to
the fact that the XDP prog was unloaded from interface.
Previous attempt was, to put it mildly, a bit broken, as there was no
synchronization between updates to additional map, as Bjorn pointed out.
See https://lore.kernel.org/netdev/20190603131907.13395-5-maciej.fijalkowski@intel.com/
In the meantime bpf_link was introduced and it seems that it can address
the issue of refcounting the XDP prog on interface.
Although the bpf_link is the meat of the set, selftests improvements are a
bigger part of it. Overall, we've been able to reduce the complexity of xsk
selftests by removing a bunch of synchronization resources and
simplifying logic and structs.
Last but not least, for multiqueue veth working with AF-XDP, ethtool's
get_channels API needs to be implemented, so it's also included in that
set.
Note also that in order to make it work, a commit from bpf tree:
veth: store queue_mapping independently of XDP prog presence
https://lore.kernel.org/bpf/20210303152903.11172-1-maciej.fijalkowski@intel.com/
is needed.
Thanks,
Maciej
Björn Töpel (3):
selftests: xsk: remove thread attribute
selftest: xsk: Remove mutex and condition variable
selftests: xsk: Remove unused defines
Maciej Fijalkowski (14):
selftests: xsk: don't call worker_pkt_dump() for stats test
selftests: xsk: remove struct ifaceconfigobj
selftests: xsk: remove unused function
selftests: xsk: remove inline keyword from source file
selftests: xsk: simplify frame traversal in dumping thread
libbpf: xsk: use bpf_link
samples: bpf: do not unload prog within xdpsock
selftests: xsk: remove thread for netns switch
selftests: xsk: split worker thread
selftests: xsk: remove Tx synchronization resources
selftests: xsk: refactor teardown/bidi test cases and testapp_validate
selftests: xsk: remove sync_mutex_tx and atomic var
veth: implement ethtool's get_channels() callback
selftests: xsk: implement bpf_link test
drivers/net/veth.c | 12 +
samples/bpf/xdpsock_user.c | 55 +-
tools/lib/bpf/xsk.c | 139 ++++-
tools/testing/selftests/bpf/test_xsk.sh | 2 +-
tools/testing/selftests/bpf/xdpxceiver.c | 699 ++++++++++-------------
tools/testing/selftests/bpf/xdpxceiver.h | 49 +-
6 files changed, 479 insertions(+), 477 deletions(-)
--
2.20.1
Powered by blists - more mailing lists