On 09.07.2019 22:35, William Tu wrote: > The patch introduces experimental AF_XDP support for OVS netdev. > AF_XDP, the Address Family of the eXpress Data Path, is a new Linux socket > type built upon the eBPF and XDP technology. It is aims to have comparable > performance to DPDK but cooperate better with existing kernel's networking > stack. An AF_XDP socket receives and sends packets from an eBPF/XDP program > attached to the netdev, by-passing a couple of Linux kernel's subsystems > As a result, AF_XDP socket shows much better performance than AF_PACKET > For more details about AF_XDP, please see linux kernel's > Documentation/networking/af_xdp.rst. Note that by default, this feature is > not compiled in. > > Signed-off-by: William Tu <u9012...@gmail.com> > --- > v14: > * Mainly address issue reported by Ilya > > https://protect2.fireeye.com/url?k=0b6c291c248670fb.0b6da253-6021601b254970fd&u=https://patchwork.ozlabs.org/patch/1118972/ > when doing 'make check-afxdp' > * Fix xdp frame headroom issue > * Fix vlan test cases by disabling txvlan offload > * Skip cvlan > * Document TCP limitation (currently all tcp tests fail due to > kernel veth driver) > * Fix tunnel test cases due to --disable-system (another patch) > * Switch to use pthread_spin_lock, suggested by Ben > * Add coverage counter for debugging > * Fix buffer starvation issue at batch_send reported by Eelco > when using tap device with type=afxdp > > v15: > * address review feedback from Ilay > > https://protect2.fireeye.com/url?k=ceb755d3074c79a5.ceb6de9c-b1b2f6a490a479b8&u=https://patchwork.ozlabs.org/patch/1125476/ > * skip TCP related test cases > * reclaim all CONS_NUM_DESC at complete tx > * add retries to kick_tx > * increase memory pool size > * remove redundant xdp flag and bind flag > * remove unused rx_dropped var > * make tx_dropped counter atomic > * refactor dp_packet_init_afxdp using dp_packet_init__ > * rebase to ovs master, test with latest bpf-next kernel commit > b14a260e33ddb4 > Ilya's kernel patches are required > commit 455302d1c9ae ("xdp: fix hang while unregistering device bound to > xdp socket") > commit 162c820ed896 ("xdp: hold device for umem regardless of zero-copy > mode") > Possible issues: > * still lots of afxdp_cq_skip (ovs-appctl coverage/show) > afxdp_cq_skip 44325273.6/sec 34362312.683/sec 572705.2114/sec total: > 2106010377 > * TODO: > 'make check-afxdp' still not all pass > IP fragmentation expiry test not fix yet, need to implement > deferral memory free, s.t like dpdk_mp_sweep. Currently hit > some missing umem descs when reclaiming. > NSH test case still failed (not due to afxdp) > --- > Documentation/automake.mk | 1 + > Documentation/index.rst | 1 + > Documentation/intro/install/afxdp.rst | 430 ++++++++++++++++ > Documentation/intro/install/index.rst | 1 + > acinclude.m4 | 35 ++ > configure.ac | 1 + > lib/automake.mk | 13 + > lib/dp-packet.c | 23 + > lib/dp-packet.h | 18 +- > lib/dpif-netdev-perf.h | 26 + > lib/netdev-afxdp.c | 933 > ++++++++++++++++++++++++++++++++++ > lib/netdev-afxdp.h | 74 +++ > lib/netdev-linux-private.h | 138 +++++ > lib/netdev-linux.c | 121 ++--- > lib/netdev-provider.h | 3 + > lib/netdev.c | 11 + > lib/util.c | 92 +++- > lib/util.h | 5 + > lib/xdpsock.c | 170 +++++++ > lib/xdpsock.h | 103 ++++ > tests/automake.mk | 16 + > tests/system-afxdp-macros.at | 39 ++ > tests/system-afxdp-testsuite.at | 26 + > tests/system-traffic.at | 2 + > vswitchd/vswitch.xml | 15 + > 25 files changed, 2189 insertions(+), 108 deletions(-) > create mode 100644 Documentation/intro/install/afxdp.rst > create mode 100644 lib/netdev-afxdp.c > create mode 100644 lib/netdev-afxdp.h > create mode 100644 lib/netdev-linux-private.h > create mode 100644 lib/xdpsock.c > create mode 100644 lib/xdpsock.h > create mode 100644 tests/system-afxdp-macros.at > create mode 100644 tests/system-afxdp-testsuite.at
Please, add 'system-afxdp-testsuite' executable and friends to tests/.gitignore. Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev