Programmer’s Guide
- 1. Introduction
 - 2. Overview
 - 3. Source Organization
 - 4. Environment Abstraction Layer
- 4.1. EAL in a Linux-userland Execution Environment
- 4.1.1. Initialization and Core Launching
 - 4.1.2. Shutdown and Cleanup
 - 4.1.3. Multi-process Support
 - 4.1.4. Memory Mapping Discovery and Memory Reservation
 - 4.1.5. Support for Externally Allocated Memory
 - 4.1.6. Per-lcore and Shared Variables
 - 4.1.7. Logs
 - 4.1.8. CPU Feature Identification
 - 4.1.9. User Space Interrupt Event
 - 4.1.10. Block list
 - 4.1.11. Misc Functions
 - 4.1.12. IOVA Mode Detection
 - 4.1.13. IOVA Mode Configuration
 - 4.1.14. Max SIMD bitwidth
 
 - 4.2. Memory Segments and Memory Zones (memzone)
 - 4.3. Multiple pthread
 - 4.4. Malloc
 
 - 4.1. EAL in a Linux-userland Execution Environment
 - 5. Service Cores
 - 6. Trace Library
 - 7. RCU Library
 - 8. Ring Library
 - 9. Stack Library
 - 10. Mempool Library
 - 11. Mbuf Library
 - 12. Poll Mode Driver
 - 13. Generic flow API (rte_flow)
- 13.1. Overview
 - 13.2. Flow rule
 - 13.3. Rules management
 - 13.4. Flow engine configuration
 - 13.5. Asynchronous operations
- 13.5.1. Enqueue creation operation
 - 13.5.2. Enqueue destruction operation
 - 13.5.3. Enqueue indirect action creation operation
 - 13.5.4. Enqueue indirect action destruction operation
 - 13.5.5. Enqueue indirect action update operation
 - 13.5.6. Enqueue indirect action query operation
 - 13.5.7. Push enqueued operations
 - 13.5.8. Pull enqueued operations
 
 - 13.6. Flow isolated mode
 - 13.7. Verbose error reporting
 - 13.8. Helpers
 - 13.9. Caveats
 - 13.10. PMD interface
 - 13.11. Device compatibility
 
 - 14. Switch Representation within DPDK Applications
 - 15. Traffic Metering and Policing API
 - 16. Traffic Management API
 - 17. Wireless Baseband Device Library
- 17.1. Design Principles
 - 17.2. Device Management
 - 17.3. Device Operation Capabilities
 - 17.4. Operation Processing
- 17.4.1. Enqueue / Dequeue Burst APIs
 - 17.4.2. Operation Representation
 - 17.4.3. Operation Management and Allocation
 - 17.4.4. BBDEV Inbound/Outbound Memory
 - 17.4.5. BBDEV Turbo Encode Operation
 - 17.4.6. BBDEV Turbo Decode Operation
 - 17.4.7. BBDEV LDPC Encode Operation
 - 17.4.8. BBDEV LDPC Decode Operation
 - 17.4.9. BBDEV FFT Operation
 
 - 17.5. Sample code
 
 - 18. Cryptography Device Library
 - 19. Compression Device Library
 - 20. RegEx Device Library
 - 21. DMA Device Library
 - 22. General-Purpose Graphics Processing Unit Library
 - 23. Security Library
 - 24. Rawdevice Library
 - 25. Link Bonding Poll Mode Driver Library
- 25.1. Link Bonding Modes Overview
 - 25.2. Implementation Details
 - 25.3. Using Link Bonding Devices
 - 25.4. Testpmd driver specific commands
- 25.4.1. create bonded device
 - 25.4.2. add bonding slave
 - 25.4.3. remove bonding slave
 - 25.4.4. set bonding mode
 - 25.4.5. set bonding primary
 - 25.4.6. set bonding mac
 - 25.4.7. set bonding balance_xmit_policy
 - 25.4.8. set bonding mon_period
 - 25.4.9. set bonding lacp dedicated_queue
 - 25.4.10. set bonding agg_mode
 - 25.4.11. show bonding config
 - 25.4.12. show bonding lacp info
 
 
 - 26. Timer Library
 - 27. Hash Library
- 27.1. Hash API Overview
 - 27.2. Multi-process support
 - 27.3. Multi-thread support
 - 27.4. Extendable Bucket Functionality support
 - 27.5. Implementation Details (non Extendable Bucket Case)
 - 27.6. Implementation Details (with Extendable Bucket)
 - 27.7. Entry distribution in hash table
 - 27.8. Use Case: Flow Classification
 - 27.9. References
 
 - 28. Toeplitz Hash Library
 - 29. Elastic Flow Distributor Library
 - 30. Membership Library
 - 31. LPM Library
 - 32. LPM6 Library
 - 33. FIB Library
 - 34. RIB Library
 - 35. Flow Classification Library
 - 36. Packet Distributor Library
 - 37. Reorder Library
 - 38. IP Fragmentation and Reassembly Library
 - 39. Generic Receive Offload Library
 - 40. Generic Segmentation Offload Library
 - 41. Packet Capture Next Generation Library
 - 42. Packet Capture Library
 - 43. Multi-process Support
 - 44. Kernel NIC Interface
 - 45. Thread Safety of DPDK Functions
 - 46. Event Device Library
 - 47. Event Ethernet Rx Adapter Library
- 47.1. API Walk-through
- 47.1.1. Creating an Adapter Instance
 - 47.1.2. Adding Rx Queues to the Adapter Instance
 - 47.1.3. Querying Adapter Capabilities
 - 47.1.4. Configuring the Service Function
 - 47.1.5. Starting the Adapter Instance
 - 47.1.6. Getting Adapter Statistics
 - 47.1.7. Getting Adapter queue config
 - 47.1.8. Getting and resetting Adapter queue stats
 - 47.1.9. Getting Adapter Instance ID
 - 47.1.10. Interrupt Based Rx Queues
 - 47.1.11. Rx Callback for SW Rx Adapter
 - 47.1.12. Rx event vectorization
 - 47.1.13. Rx event vectorization for SW Rx adapter
 
 
 - 47.1. API Walk-through
 - 48. Event Ethernet Tx Adapter Library
- 48.1. API Walk-through
- 48.1.1. Creating an Adapter Instance
 - 48.1.2. Adding Tx Queues to the Adapter Instance
 - 48.1.3. Querying Adapter Capabilities
 - 48.1.4. Linking a Queue to the Adapter’s Event Port
 - 48.1.5. Configuring the Service Function
 - 48.1.6. Starting the Adapter Instance
 - 48.1.7. Enqueuing Packets to the Adapter
 - 48.1.8. Getting Adapter Statistics
 - 48.1.9. Getting Adapter Instance ID
 - 48.1.10. Tx event vectorization
 - 48.1.11. Queue start/stop
 
 
 - 48.1. API Walk-through
 - 49. Event Timer Adapter Library
 - 50. Event Crypto Adapter Library
- 50.1. Adapter Mode
 - 50.2. API Overview
- 50.2.1. Create an adapter instance
 - 50.2.2. Querying adapter capabilities
 - 50.2.3. Adding queue pair to the adapter instance
 - 50.2.4. Configure the service function
 - 50.2.5. Set event request/response information
 - 50.2.6. Enable event vectorization
 - 50.2.7. Start the adapter instance
 - 50.2.8. Get adapter statistics
 
 
 - 51. Quality of Service (QoS) Framework
 - 52. Power Management
- 52.1. CPU Frequency Scaling
 - 52.2. Core-load Throttling through C-States
 - 52.3. Per-core Turbo Boost
 - 52.4. Use of Power Library in a Hyper-Threaded Environment
 - 52.5. API Overview of the Power Library
 - 52.6. User Cases
 - 52.7. Empty Poll API
 - 52.8. User Cases
 - 52.9. Ethernet PMD Power Management API
 - 52.10. Intel Uncore API
 - 52.11. References
 
 - 53. Packet Classification and Access Control
 - 54. Packet Framework
 - 55. Vhost Library
 - 56. Metrics Library
 - 57. Telemetry Library
 - 58. Berkeley Packet Filter Library
 - 59. IPsec Packet Processing Library
 - 60. Graph Library and Inbuilt Nodes
- 60.1. Features
 - 60.2. Advantages of Graph architecture
 - 60.3. Performance tuning parameters
 - 60.4. Programming model
- 60.4.1. Anatomy of Node:
 - 60.4.2. Node creation and registration
 - 60.4.3. Link the Nodes to create the graph topology
 - 60.4.4. Create the graph object
 - 60.4.5. Multicore graph processing
 - 60.4.6. In fast path
 - 60.4.7. Context update when graph walk in action
 - 60.4.8. Get the node statistics using graph cluster
 - 60.4.9. Node writing guidelines
 - 60.4.10. Static nodes
 - 60.4.11. Intermediate nodes
 
 - 60.5. Graph object memory layout
 - 60.6. Inbuilt Nodes
 
 - 61. Installing DPDK Using the meson build system
 - 62. Running DPDK Unit Tests with Meson
 - 63. Building Your Own Application
 - 64. Performance Optimization Guidelines
 - 65. Writing Efficient Code
 - 66. Link Time Optimization
 - 67. Profile Your Application
 - 68. Running AddressSanitizer
 - 69. Glossary