On Tue, Mar 08, 2022 at 03:57:56PM +0100, Toke Høiland-Jørgensen wrote: > This series adds support for transmitting packets using XDP in > bpf_prog_run(), by enabling a new mode "live packet" mode which will handle > the XDP program return codes and redirect the packets to the stack or other > devices. > > The primary use case for this is testing the redirect map types and the > ndo_xdp_xmit driver operation without an external traffic generator. But it > turns out to also be useful for creating a programmable traffic generator > in XDP, as well as injecting frames into the stack. A sample traffic > generator, which was included in previous versions of the series, but now > moved to xdp-tools, transmits up to 9 Mpps/core on my test machine. > > To transmit the frames, the new mode instantiates a page_pool structure in > bpf_prog_run() and initialises the pages to contain XDP frames with the > data passed in by userspace. These frames can then be handled as though > they came from the hardware XDP path, and the existing page_pool code takes > care of returning and recycling them. The setup is optimised for high > performance with a high number of repetitions to support stress testing and > the traffic generator use case; see patch 1 for details. > > v10: > - Only propagate memory allocation errors from xdp_test_run_batch() Other than a case in patch 1. The set lgtm. Acked-by: Martin KaFai Lau <kafai@xxxxxx> > - Get rid of BPF_F_TEST_XDP_RESERVED; batch_size can be used to probe > - Check that batch_size is unset in non-XDP test_run funcs > - Lower the number of repetitions in the selftest to 10k > - Count number of recycled pages in the selftest > - Fix a few other nits from Martin, carry forward ACKs