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. Lock annotations
- 4.1.13. IOVA Mode Detection
- 4.1.14. IOVA Mode Configuration
- 4.1.15. 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. Log Library
- 6. Argparse Library
- 7. Command-line Library
- 8. Service Cores
- 9. Trace Library
- 10. RCU Library
- 11. Ring Library
- 12. Stack Library
- 13. Mempool Library
- 14. Mbuf Library
- 15. Poll Mode Driver
- 16. Generic flow API (rte_flow)
- 16.1. Overview
- 16.2. Flow rule
- 16.3. Rules management
- 16.4. Flow engine configuration
- 16.5. Asynchronous operations
- 16.5.1. Enqueue creation operation
- 16.5.2. Enqueue creation by index operation
- 16.5.3. Enqueue destruction operation
- 16.5.4. Enqueue update operation
- 16.5.5. Enqueue indirect action creation operation
- 16.5.6. Enqueue indirect action destruction operation
- 16.5.7. Enqueue indirect action update operation
- 16.5.8. Enqueue indirect action query operation
- 16.5.9. Push enqueued operations
- 16.5.10. Pull enqueued operations
- 16.5.11. Calculate hash
- 16.5.12. Calculate encapsulation hash
- 16.6. Flow isolated mode
- 16.7. Verbose error reporting
- 16.8. Helpers
- 16.9. Caveats
- 16.10. PMD interface
- 16.11. Device compatibility
- 17. Switch Representation within DPDK Applications
- 18. Traffic Metering and Policing API
- 19. Traffic Management API
- 20. Wireless Baseband Device Library
- 20.1. Design Principles
- 20.2. Device Management
- 20.3. Device Operation Capabilities
- 20.4. Operation Processing
- 20.4.1. Enqueue / Dequeue Burst APIs
- 20.4.2. Operation Representation
- 20.4.3. Operation Management and Allocation
- 20.4.4. BBDEV Inbound/Outbound Memory
- 20.4.5. BBDEV Turbo Encode Operation
- 20.4.6. BBDEV Turbo Decode Operation
- 20.4.7. BBDEV LDPC Encode Operation
- 20.4.8. BBDEV LDPC Decode Operation
- 20.4.9. BBDEV FFT Operation
- 20.4.10. BBDEV MLD-TS Operation
- 20.5. Sample code
- 21. Cryptography Device Library
- 22. Compression Device Library
- 23. RegEx Device Library
- 24. Machine Learning Device Library
- 24.1. Design Principles
- 24.2. Device Operations
- 24.2.1. Device Creation
- 24.2.2. Device Identification
- 24.2.3. Device Features and Capabilities
- 24.2.4. Device Configuration
- 24.2.5. Configuration of Queue Pairs
- 24.2.6. Logical Cores, Memory and Queues Pair Relationships
- 24.2.7. Configuration of Machine Learning models
- 24.2.8. Enqueue / Dequeue
- 24.2.9. Quantize and Dequantize
- 25. DMA Device Library
- 26. General-Purpose Graphics Processing Unit Library
- 27. Security Library
- 28. Rawdevice Library
- 29. Link Bonding Poll Mode Driver Library
- 29.1. Link Bonding Modes Overview
- 29.2. Implementation Details
- 29.3. Using Link Bonding Devices
- 29.4. Testpmd driver specific commands
- 29.4.1. create bonding device
- 29.4.2. add bonding member
- 29.4.3. remove bonding member
- 29.4.4. set bonding mode
- 29.4.5. set bonding primary
- 29.4.6. set bonding mac
- 29.4.7. set bonding balance_xmit_policy
- 29.4.8. set bonding mon_period
- 29.4.9. set bonding lacp dedicated_queue
- 29.4.10. set bonding agg_mode
- 29.4.11. show bonding config
- 30. Timer Library
- 31. Hash Library
- 31.1. Hash API Overview
- 31.2. Multi-process support
- 31.3. Multi-thread support
- 31.4. Extendable Bucket Functionality support
- 31.5. Implementation Details (non Extendable Bucket Case)
- 31.6. Implementation Details (with Extendable Bucket)
- 31.7. Entry distribution in hash table
- 31.8. Use Case: Flow Classification
- 31.9. References
- 32. Toeplitz Hash Library
- 33. Elastic Flow Distributor Library
- 34. Membership Library
- 35. LPM Library
- 36. LPM6 Library
- 37. FIB Library
- 38. RIB Library
- 39. Packet Distributor Library
- 40. Reorder Library
- 41. IP Fragmentation and Reassembly Library
- 42. Generic Receive Offload Library
- 43. Generic Segmentation Offload Library
- 44. IPsec Packet Processing Library
- 45. PDCP Protocol Processing Library
- 46. Packet Capture Next Generation Library
- 47. Packet Capture Library
- 48. Multi-process Support
- 49. Thread Safety of DPDK Functions
- 50. Event Device Library
- 50.1. Event struct
- 50.2. API Walk-through
- 50.2.1. Init and Config
- 50.2.2. Setting up Queues
- 50.2.3. Setting up Ports
- 50.2.4. Linking Queues and Ports
- 50.2.5. Linking Queues to Ports with link profiles
- 50.2.6. Starting the EventDev
- 50.2.7. Ingress of New Events
- 50.2.8. Forwarding of Events
- 50.2.9. Egress of Events
- 50.2.10. Quiescing Event Ports
- 50.2.11. Stopping the EventDev
- 50.3. Summary
- 51. Event Ethernet Rx Adapter Library
- 51.1. API Walk-through
- 51.1.1. Creating an Adapter Instance
- 51.1.2. Event device configuration for service based adapter
- 51.1.3. Adding Rx Queues to the Adapter Instance
- 51.1.4. Querying Adapter Capabilities
- 51.1.5. Configuring the Service Function
- 51.1.6. Starting the Adapter Instance
- 51.1.7. Getting Adapter Statistics
- 51.1.8. Getting Adapter queue config
- 51.1.9. Set/Get adapter runtime configuration parameters
- 51.1.10. Getting and resetting Adapter queue stats
- 51.1.11. Getting Adapter Instance ID
- 51.1.12. Interrupt Based Rx Queues
- 51.1.13. Rx Callback for SW Rx Adapter
- 51.1.14. Rx event vectorization
- 51.1.15. Rx event vectorization for SW Rx adapter
- 51.1. API Walk-through
- 52. Event Ethernet Tx Adapter Library
- 52.1. API Walk-through
- 52.1.1. Creating an Adapter Instance
- 52.1.2. Event device configuration for service based adapter
- 52.1.3. Adding Tx Queues to the Adapter Instance
- 52.1.4. Querying Adapter Capabilities
- 52.1.5. Linking a Queue to the Adapter’s Event Port
- 52.1.6. Configuring the Service Function
- 52.1.7. Starting the Adapter Instance
- 52.1.8. Enqueuing Packets to the Adapter
- 52.1.9. Getting Adapter Statistics
- 52.1.10. Getting Adapter Instance ID
- 52.1.11. Tx event vectorization
- 52.1.12. Queue start/stop
- 52.1.13. Set/Get adapter runtime configuration parameters
- 52.1. API Walk-through
- 53. Event Timer Adapter Library
- 54. Event Crypto Adapter Library
- 54.1. Adapter Mode
- 54.2. API Overview
- 54.2.1. Create an adapter instance
- 54.2.2. Event device configuration for service based adapter
- 54.2.3. Querying adapter capabilities
- 54.2.4. Adding queue pair to the adapter instance
- 54.2.5. Configure the service function
- 54.2.6. Set event request/response information
- 54.2.7. Enable event vectorization
- 54.2.8. Start the adapter instance
- 54.2.9. Get adapter statistics
- 54.2.10. Set/Get adapter runtime configuration parameters
- 55. Event DMA Adapter Library
- 55.1. Adapter Modes
- 55.2. API Overview
- 55.2.1. Create an adapter instance
- 55.2.2. Event device configuration for service based adapter
- 55.2.3. Querying adapter capabilities
- 55.2.4. Adding vchan to the adapter instance
- 55.2.5. Configuring service function
- 55.2.6. Set event response information
- 55.2.7. Start the adapter instance
- 55.2.8. Get adapter statistics
- 55.2.9. Set/Get adapter runtime configuration parameters
- 56. Dispatcher Library
- 57. Quality of Service (QoS) Framework
- 58. Power Management
- 59. Packet Classification and Access Control
- 60. Packet Framework
- 61. Vhost Library
- 62. Metrics Library
- 63. Telemetry Library
- 64. Berkeley Packet Filter Library
- 65. Graph Library and Inbuilt Nodes
- 65.1. Features
- 65.2. Advantages of Graph architecture
- 65.3. Performance tuning parameters
- 65.4. Programming model
- 65.4.1. Anatomy of Node:
- 65.4.2. Node creation and registration
- 65.4.3. Link the Nodes to create the graph topology
- 65.4.4. Create the graph object
- 65.4.5. Graph models
- 65.4.6. In fast path
- 65.4.7. Context update when graph walk in action
- 65.4.8. Get the node statistics using graph cluster
- 65.4.9. Node writing guidelines
- 65.4.10. Static nodes
- 65.4.11. Intermediate nodes
- 65.5. Graph object memory layout
- 65.6. Inbuilt Nodes
- 66. Pointer Compression Library
- 67. Installing DPDK Using the meson build system
- 68. Running DPDK Unit Tests with Meson
- 69. Building Your Own Application
- 70. Performance Optimization Guidelines
- 71. Writing Efficient Code
- 72. Link Time Optimization
- 73. Profile Your Application
- 74. Running AddressSanitizer
- 75. Glossary