Signed-off-by: Konstantin Ananyev <konstantin.anan...@intel.com> --- doc/api/doxy-api-index.md | 3 ++- doc/api/doxy-api.conf | 1 + doc/guides/prog_guide/bpf_lib.rst | 38 ++++++++++++++++++++++++++++++++++++++ doc/guides/prog_guide/index.rst | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 doc/guides/prog_guide/bpf_lib.rst
diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md index 2f04619cb..d0c1c37ad 100644 --- a/doc/api/doxy-api-index.md +++ b/doc/api/doxy-api-index.md @@ -133,7 +133,8 @@ The public API headers are grouped by topics: [EFD] (@ref rte_efd.h), [ACL] (@ref rte_acl.h), [member] (@ref rte_member.h), - [flow classify] (@ref rte_flow_classify.h) + [flow classify] (@ref rte_flow_classify.h), + [BPF] (@ref rte_bpf.h) - **containers**: [mbuf] (@ref rte_mbuf.h), diff --git a/doc/api/doxy-api.conf b/doc/api/doxy-api.conf index cda52fdfb..c8eb6d893 100644 --- a/doc/api/doxy-api.conf +++ b/doc/api/doxy-api.conf @@ -42,6 +42,7 @@ INPUT = doc/api/doxy-api-index.md \ lib/librte_acl \ lib/librte_bbdev \ lib/librte_bitratestats \ + lib/librte_bpf \ lib/librte_cfgfile \ lib/librte_cmdline \ lib/librte_compat \ diff --git a/doc/guides/prog_guide/bpf_lib.rst b/doc/guides/prog_guide/bpf_lib.rst new file mode 100644 index 000000000..2fce4cefb --- /dev/null +++ b/doc/guides/prog_guide/bpf_lib.rst @@ -0,0 +1,38 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 Intel Corporation. + +Berkeley Packet Filter Library +============================== + +The DPDK provides an BPF library that gives the ability +to load and execute Enhanced Berkeley Packet Filter (eBPF) bytecode within +user-space dpdk appilication. + +It supports basic set of features from eBPF spec. +Please refer to the +`eBPF spec <https://www.kernel.org/doc/Documentation/networking/filter.txt>` +for more information. +Also it introduces basic framework to load/unload BPF-based filters +on eth devices (right now only via SW RX/TX callbacks). + +The library API provides the following basic operations: + +* Create a new BPF execution context and load user provided eBPF code into it. + +* Destroy an BPF execution context and its runtime structures and free the associated memory. + +* Execute eBPF bytecode associated with provied input parameter. + +* Provide information about natively compield code for given BPF context. + +* Load BPF program from the ELF file and install callback to execute it on given ethdev port/queue. + +Not currently supported eBPF features +------------------------------------- + + - JIT for non X86_64 platforms + - cBPF + - tail-pointer call + - eBPF MAP + - skb + - external function calls for 32-bit platforms diff --git a/doc/guides/prog_guide/index.rst b/doc/guides/prog_guide/index.rst index bbbe7895d..76b079c3f 100644 --- a/doc/guides/prog_guide/index.rst +++ b/doc/guides/prog_guide/index.rst @@ -49,6 +49,7 @@ Programmer's Guide vhost_lib metrics_lib port_hotplug_framework + bpf_lib source_org dev_kit_build_system dev_kit_root_make_help -- 2.13.6