| #
b5458e2c |
| 06-Dec-2024 |
Konstantin Ananyev <konstantin.ananyev@huawei.com> |
ring: introduce staged ordered ring
Staged-Ordered-Ring (SORING) provides a SW abstraction for 'ordered' queues with multiple processing 'stages'. It is based on conventional DPDK rte_ring, re-uses
ring: introduce staged ordered ring
Staged-Ordered-Ring (SORING) provides a SW abstraction for 'ordered' queues with multiple processing 'stages'. It is based on conventional DPDK rte_ring, re-uses many of its concepts, and even substantial part of its code. It can be viewed as an 'extension' of rte_ring functionality. In particular, main SORING properties: - circular ring buffer with fixed size objects - producer, consumer plus multiple processing stages in the middle. - allows to split objects processing into multiple stages. - objects remain in the same ring while moving from one stage to the other, initial order is preserved, no extra copying needed. - preserves the ingress order of objects within the queue across multiple stages, i.e.: at the same stage multiple threads can process objects from the ring in any order, but for the next stage objects will always appear in the original order. - each stage (and producer/consumer) can be served by single and/or multiple threads. - number of stages, size and number of objects in the ring are configurable at ring initialization time.
Data-path API provides four main operations: - enqueue/dequeue works in the same manner as for conventional rte_ring, all rte_ring synchronization types are supported. - acquire/release - for each stage there is an acquire (start) and release (finish) operation. after some objects are 'acquired' - given thread can safely assume that it has exclusive possession of these objects till 'release' for them is invoked. Note that right now user has to release exactly the same number of objects that was acquired before. After 'release', objects can be 'acquired' by next stage and/or dequeued by the consumer (in case of last stage).
Expected use-case: applications that uses pipeline model (probably with multiple stages) for packet processing, when preserving incoming packet order is important. I.E.: IPsec processing, etc.
Signed-off-by: Eimear Morrissey <eimear.morrissey@huawei.com> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
|
Revision tags: v24.11, v24.11-rc4, v24.11-rc3, v24.11-rc2 |
|
| #
f30a1bbd |
| 28-Oct-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
power: rename files for CPU frequency management
This patch renames the existing core power library source files from rte_power.* to rte_power_cpufreq.* for better clarity
Signed-off-by: Sivaprasad
power: rename files for CPU frequency management
This patch renames the existing core power library source files from rte_power.* to rte_power_cpufreq.* for better clarity
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
show more ...
|
|
Revision tags: v24.11-rc1 |
|
| #
7cfcce8e |
| 15-Oct-2024 |
Jun Yang <jun.yang@nxp.com> |
dma/dpaa2: move QDMA header to common driver
Include rte_pmd_dpaax_qdma.h instead of rte_pmd_dpaa2_qdma.h and change code accordingly.
Signed-off-by: Jun Yang <jun.yang@nxp.com>
|
| #
5bce9bed |
| 25-Oct-2024 |
Mattias Rönnblom <mattias.ronnblom@ericsson.com> |
eal: add static per-lcore memory allocation facility
Introduce DPDK per-lcore id variables, or lcore variables for short.
An lcore variable has one value for every current and future lcore id-equip
eal: add static per-lcore memory allocation facility
Introduce DPDK per-lcore id variables, or lcore variables for short.
An lcore variable has one value for every current and future lcore id-equipped thread.
The primary <rte_lcore_var.h> use case is for statically allocating small, frequently-accessed data structures, for which one instance should exist for each lcore.
Lcore variables are similar to thread-local storage (TLS, e.g., C11 _Thread_local), but decoupling the values' life time with that of the threads.
Lcore variables are also similar in terms of functionality provided by FreeBSD kernel's DPCPU_*() family of macros and the associated build-time machinery. DPCPU uses linker scripts, which effectively prevents the reuse of its, otherwise seemingly viable, approach.
The currently-prevailing way to solve the same problem as lcore variables is to keep a module's per-lcore data as RTE_MAX_LCORE-sized array of cache-aligned, RTE_CACHE_GUARDed structs. The benefit of lcore variables over this approach is that data related to the same lcore now is close (spatially, in memory), rather than data used by the same module, which in turn avoid excessive use of padding, polluting caches with unused data.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
| #
1a2b549b |
| 18-Oct-2024 |
Robin Jarry <rjarry@redhat.com> |
net: split IPv4 and IPv6 symbols in separate headers
Split IPv4 and IPv6 symbols in two separate headers. rte_ip4.h and rte_ip6.h, respectively.
Update doxygen index accordingly.
Include rte_ip4.h
net: split IPv4 and IPv6 symbols in separate headers
Split IPv4 and IPv6 symbols in two separate headers. rte_ip4.h and rte_ip6.h, respectively.
Update doxygen index accordingly.
Include rte_ip4.h and rte_ip6.h in rte_ip.h for backward compatibility in applications.
Signed-off-by: Robin Jarry <rjarry@redhat.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
| #
4149b1fb |
| 18-Oct-2024 |
Robin Jarry <rjarry@redhat.com> |
net: split raw checksum functions in separate header
The checksum functions are used by both ipv4 and ipv6 functions. In preparation of moving ipv6 symbols to a new header, move the checksum related
net: split raw checksum functions in separate header
The checksum functions are used by both ipv4 and ipv6 functions. In preparation of moving ipv6 symbols to a new header, move the checksum related symbols to another dedicated header.
Update doxygen index accordingly.
Signed-off-by: Robin Jarry <rjarry@redhat.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
|
Revision tags: v24.07, v24.07-rc4, v24.07-rc3, v24.07-rc2 |
|
| #
7f932642 |
| 12-Jul-2024 |
Juraj Linkeš <juraj.linkes@pantheon.tech> |
dts: add API doc generation
The tool used to generate DTS API docs is Sphinx, which is already in use in DPDK. The same configuration is used to preserve style with one DTS-specific configuration (s
dts: add API doc generation
The tool used to generate DTS API docs is Sphinx, which is already in use in DPDK. The same configuration is used to preserve style with one DTS-specific configuration (so that the DPDK docs are unchanged) that modifies how the sidebar displays the content. There's other Sphinx configuration related to Python docstrings which doesn't affect DPDK doc build. All new configuration is in a conditional block, applied only when DTS API docs are built to not interfere with DPDK doc build.
Sphinx generates the documentation from Python docstrings. The docstring format is the Google format [0] which requires the sphinx.ext.napoleon extension. The other extension, sphinx.ext.intersphinx, enables linking to objects in external documentations, such as the Python documentation.
There is one requirement for building DTS docs - the same Python version as DTS or higher, because Sphinx's autodoc extension imports the code.
The dependencies needed to import the code don't have to be satisfied, as the autodoc extension allows us to mock the imports. The missing packages are taken from the DTS pyproject.toml file.
And finally, the DTS API docs can be accessed from the DPDK API doxygen page.
[0] https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Acked-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Dean Marx <dmarx@iol.unh.edu> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
show more ...
|
| #
99a11976 |
| 09-Aug-2024 |
Mattias Rönnblom <mattias.ronnblom@ericsson.com> |
eal: add bitset type
Introduce a set of functions and macros that operate on sets of bits, kept in arrays of 64-bit words.
RTE bitset is designed for bitsets which are larger than what fits in a si
eal: add bitset type
Introduce a set of functions and macros that operate on sets of bits, kept in arrays of 64-bit words.
RTE bitset is designed for bitsets which are larger than what fits in a single machine word (i.e., 64 bits). For very large bitsets, the <rte_bitmap.h> API may be a more appropriate choice.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
show more ...
|
|
Revision tags: v24.07-rc1 |
|
| #
57cf5b6d |
| 30-Apr-2024 |
Ferruh Yigit <ferruh.yigit@amd.com> |
doc: add power uncore in API index
Add missing power uncore API documentation.
Fixes: ac1edcb6621a ("power: refactor uncore power management API") Cc: stable@dpdk.org
Reported-by: Vipin Varghese <
doc: add power uncore in API index
Add missing power uncore API documentation.
Fixes: ac1edcb6621a ("power: refactor uncore power management API") Cc: stable@dpdk.org
Reported-by: Vipin Varghese <vipin.varghese@amd.com> Signed-off-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
| #
077596a4 |
| 11-Jun-2024 |
Paul Szczepanek <paul.szczepanek@arm.com> |
ptr_compress: add pointer compression library
Add a new utility header for compressing pointers. The provided functions can store pointers as 32-bit or 16-bit offsets.
The compression takes advanta
ptr_compress: add pointer compression library
Add a new utility header for compressing pointers. The provided functions can store pointers as 32-bit or 16-bit offsets.
The compression takes advantage of the fact that pointers are usually located in a limited memory region (like a mempool). We can compress them by converting them to offsets from a base memory address. Offsets can be stored in fewer bytes (dictated by the memory region size and alignment of the pointer). For example: an 8 byte aligned pointer which is part of a 32GB memory pool can be stored in 4 bytes.
Suggested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Signed-off-by: Paul Szczepanek <paul.szczepanek@arm.com> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Nathan Brown <nathan.brown@arm.com> Reviewed-by: Jack Bond-Preston <jack.bond-preston@foss.arm.com> Acked-by: Morten Brørup <mb@smartsharesystems.com>
show more ...
|
|
Revision tags: v24.03, v24.03-rc4, v24.03-rc3, v24.03-rc2, v24.03-rc1 |
|
| #
26bb5c4d |
| 17-Jan-2024 |
Anoob Joseph <anoobj@marvell.com> |
crypto/cnxk: add CPT raw submission PMD API
Added PMD APIs to allow applications to directly submit CPT instructions to hardware.
Signed-off-by: Anoob Joseph <anoobj@marvell.com> Acked-by: Akhil Go
crypto/cnxk: add CPT raw submission PMD API
Added PMD APIs to allow applications to directly submit CPT instructions to hardware.
Signed-off-by: Anoob Joseph <anoobj@marvell.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
show more ...
|
| #
e3e579f5 |
| 26-Jan-2024 |
Chengwen Feng <fengchengwen@huawei.com> |
argparse: introduce argparse library
Introduce argparse library (which was inspired by the thread [1]). This commit provides public API and doc.
[1] https://patchwork.dpdk.org/project/dpdk/patch/20
argparse: introduce argparse library
Introduce argparse library (which was inspired by the thread [1]). This commit provides public API and doc.
[1] https://patchwork.dpdk.org/project/dpdk/patch/20231105054539.22303-2-fengchengwen@huawei.com/
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
show more ...
|
|
Revision tags: v23.11, v23.11-rc4, v23.11-rc3, v23.11-rc2, v23.11-rc1 |
|
| #
58fbbcca |
| 28-Sep-2023 |
Rakesh Kudurumalla <rkudurumalla@marvell.com> |
node: add IPv4 local node to handle local packets
Local or Host destined pkts can be redirected IPv4 local node using IP4 Lookup node entries with prefix of 32 and be redirected to this IP4 local no
node: add IPv4 local node to handle local packets
Local or Host destined pkts can be redirected IPv4 local node using IP4 Lookup node entries with prefix of 32 and be redirected to this IP4 local node for further processing.
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com> Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
show more ...
|
| #
ecca8a0b |
| 12-Oct-2023 |
Mattias Rönnblom <mattias.ronnblom@ericsson.com> |
lib: introduce dispatcher library
The purpose of the dispatcher library is to help reduce coupling in an Eventdev-based DPDK application.
In addition, the dispatcher also provides a convenient and
lib: introduce dispatcher library
The purpose of the dispatcher library is to help reduce coupling in an Eventdev-based DPDK application.
In addition, the dispatcher also provides a convenient and flexible way for the application to use service cores for application-level processing.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Tested-by: Peter Nilsson <peter.j.nilsson@ericsson.com> Reviewed-by: Heng Wang <heng.wang@ericsson.com>
show more ...
|
| #
66a30a29 |
| 29-Sep-2023 |
Amit Prakash Shukla <amitprakashs@marvell.com> |
eventdev/dma: introduce DMA adapter
Introduce event dma adapter interface to transfer packets between dma device and event device.
Signed-off-by: Amit Prakash Shukla <amitprakashs@marvell.com> Acke
eventdev/dma: introduce DMA adapter
Introduce event dma adapter interface to transfer packets between dma device and event device.
Signed-off-by: Amit Prakash Shukla <amitprakashs@marvell.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|
| #
03714a41 |
| 29-Aug-2023 |
Pavan Nikhilesh <pbhagavatula@marvell.com> |
event/cnxk: add event port flow context API
Add event port flow context status APIs.
rte_pmd_cnxk_eventdev_wait_head() - Allows application to wait for the flow context currently held by the event
event/cnxk: add event port flow context API
Add event port flow context status APIs.
rte_pmd_cnxk_eventdev_wait_head() - Allows application to wait for the flow context currently held by the event port to become the HEAD of the flow chain.
rte_pmd_cnxk_eventdev_is_head() - Allows application to test if the flow context currently held by the event port is the HEAD of the flow chain.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|
| #
cc11f659 |
| 03-Oct-2023 |
Akhil Goyal <gakhil@marvell.com> |
net: add headers for TLS/DTLS packets
Added TLS and DTLS packet headers for L4 security applications.
Signed-off-by: Akhil Goyal <gakhil@marvell.com> Signed-off-by: Anoob Joseph <anoobj@marvell.com
net: add headers for TLS/DTLS packets
Added TLS and DTLS packet headers for L4 security applications.
Signed-off-by: Akhil Goyal <gakhil@marvell.com> Signed-off-by: Anoob Joseph <anoobj@marvell.com> Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
show more ...
|
| #
f78c100b |
| 01-Aug-2023 |
Stephen Hemminger <stephen@networkplumber.org> |
remove KNI
The KNI driver had design flaws such as calling userspace with kernel mutex held that made it prone to deadlock. The design also introduced security risks because the kernel driver truste
remove KNI
The KNI driver had design flaws such as calling userspace with kernel mutex held that made it prone to deadlock. The design also introduced security risks because the kernel driver trusted the userspace (DPDK) kni interface. The kernel driver was never reviewed by the upstream kernel community and would never have been accepted.
And since the Linux kernel API is not stable, it was a continual source of maintenance issues especially with distribution kernels.
There are better ways to inject packets into the kernel such as virtio_user, tap and XDP drivers. All of these do not need out of tree kernel drivers.
The deprecation was announced in 22.11 release (see links for the the techboard discussions); and users were directed to alternatives there.
Link: https://mails.dpdk.org/archives/dev/2021-January/197077.html Link: https://mails.dpdk.org/archives/dev/2022-June/243596.html
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
| #
80a08138 |
| 01-Aug-2023 |
Stephen Hemminger <stephen@networkplumber.org> |
remove flow classify library
The flow_classify library was marked for removal last year because there was no maintainer and the functionality is limited.
Signed-off-by: Stephen Hemminger <stephen@n
remove flow classify library
The flow_classify library was marked for removal last year because there was no maintainer and the functionality is limited.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
|
Revision tags: v23.07, v23.07-rc4, v23.07-rc3, v23.07-rc2 |
|
| #
12aa8a16 |
| 20-Jun-2023 |
Jerin Jacob <jerinj@marvell.com> |
doc: add IPv6 lookup node to API index
Add ip6 node public API to doxygen list.
Fixes: 20365d793e45 ("node: add IPv6 lookup node")
Signed-off-by: Jerin Jacob <jerinj@marvell.com> Acked-by: Sunil K
doc: add IPv6 lookup node to API index
Add ip6 node public API to doxygen list.
Fixes: 20365d793e45 ("node: add IPv6 lookup node")
Signed-off-by: Jerin Jacob <jerinj@marvell.com> Acked-by: Sunil Kumar Kori <skori@marvell.com>
show more ...
|
| #
a2bc0584 |
| 14-Jun-2023 |
Zhirun Yan <zhirun.yan@intel.com> |
graph: split graph worker into common and default model
To support multiple graph worker model, split graph into common and default. Naming the current walk function as rte_graph_model_rtc cause the
graph: split graph worker into common and default model
To support multiple graph worker model, split graph into common and default. Naming the current walk function as rte_graph_model_rtc cause the default model is RTC(Run-to-completion).
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Signed-off-by: Cunming Liang <cunming.liang@intel.com> Signed-off-by: Zhirun Yan <zhirun.yan@intel.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|
| #
421073c0 |
| 14-Jun-2023 |
Zhirun Yan <zhirun.yan@intel.com> |
graph: rename rte graph worker header as common
Rename rte_graph_work.h to rte_graph_work_common.h for supporting multiple graph worker model.
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Sig
graph: rename rte graph worker header as common
Rename rte_graph_work.h to rte_graph_work_common.h for supporting multiple graph worker model.
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Signed-off-by: Cunming Liang <cunming.liang@intel.com> Signed-off-by: Zhirun Yan <zhirun.yan@intel.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|
|
Revision tags: v23.07-rc1 |
|
| #
1d0f0957 |
| 23-May-2023 |
Ashwin Sekhar T K <asekhar@marvell.com> |
mempool/cnxk: add API for exchanging mbuf between pools
Add the following cnxk mempool PMD APIs to facilitate exchanging mbufs between pools. - rte_pmd_cnxk_mempool_is_hwpool() - Allows user to chec
mempool/cnxk: add API for exchanging mbuf between pools
Add the following cnxk mempool PMD APIs to facilitate exchanging mbufs between pools. - rte_pmd_cnxk_mempool_is_hwpool() - Allows user to check whether a pool is hwpool or not. - rte_pmd_cnxk_mempool_range_check_disable() - Disables range checking on any rte_mempool. - rte_pmd_cnxk_mempool_mbuf_exchange() - Exchanges mbufs between any two rte_mempool where the range check is disabled.
Signed-off-by: Ashwin Sekhar T K <asekhar@marvell.com>
show more ...
|
| #
a702bd09 |
| 30-May-2023 |
Anoob Joseph <anoobj@marvell.com> |
lib: add PDCP protocol
Add Packet Data Convergence Protocol (PDCP) processing library.
The library is similar to lib_ipsec which provides IPsec processing capabilities in DPDK.
PDCP would involve
lib: add PDCP protocol
Add Packet Data Convergence Protocol (PDCP) processing library.
The library is similar to lib_ipsec which provides IPsec processing capabilities in DPDK.
PDCP would involve roughly the following options, 1. Transfer of user plane data 2. Transfer of control plane data 3. Header compression 4. Uplink data compression 5. Ciphering and integrity protection
PDCP library provides following control path APIs that is used to configure various PDCP entities, 1. rte_pdcp_entity_establish() 2. rte_pdcp_entity_suspend() 3. rte_pdcp_entity_release()
Signed-off-by: Anoob Joseph <anoobj@marvell.com> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Signed-off-by: Volodymyr Fialko <vfialko@marvell.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
show more ...
|
| #
895ec77b |
| 30-May-2023 |
Volodymyr Fialko <vfialko@marvell.com> |
net: add PDCP header
Add PDCP protocol header to be used for supporting PDCP protocol processing.
Signed-off-by: Anoob Joseph <anoobj@marvell.com> Signed-off-by: Kiran Kumar K <kirankumark@marvell.
net: add PDCP header
Add PDCP protocol header to be used for supporting PDCP protocol processing.
Signed-off-by: Anoob Joseph <anoobj@marvell.com> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Signed-off-by: Volodymyr Fialko <vfialko@marvell.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
show more ...
|