|SUCCESS| [v4,9/9] ci: run reference binaries against current ABI
dpdklab at iol.unh.edu
dpdklab at iol.unh.edu
Tue Sep 22 12:41:51 CEST 2026
Test-Label: ai-code-review
Test-Status: SUCCESS
https://dpdk.org/patch/169900
_AI Code Review_
=== Patch Review: series.patch (via Claude) ===
Review date: 2026-09-22
# DPDK Patch Review
## Patch 1/9: bbdev: add per-queue statistics API
### Errors
None.
### Warnings
None.
### Info
- New experimental API correctly marked with `__rte_experimental` and `RTE_EXPORT_EXPERIMENTAL_SYMBOL`
- Release notes updated appropriately
- API follows DPDK naming conventions
- Documentation includes proper Doxygen comments with return values
- Error handling is appropriate (checks for NULL stats pointer, validates dev_id and queue_id)
---
## Patch 2/9: hash: fix GFNI stubs export
### Errors
None.
### Warnings
None.
### Info
- Correctly changes `RTE_EXPORT_INTERNAL_SYMBOL` to `RTE_EXPORT_SYMBOL` for GFNI stubs
- Removes incorrect `__rte_internal` tags from header declarations
- This is correct: these functions are part of an inlined public API and must be externally visible
- The commit message and reasoning are sound
---
## Patch 3/9: test: uninline helper for forking
### Errors
None.
### Warnings
None.
### Info
- Moves inline functions from `process.h` to `process.c`, removing the need for `ALLOW_INTERNAL_API` in header consumers
- Function declarations and definitions are consistent
- No functional changes, just code organization
- Proper separation of internal API usage to `.c` file
---
## Patch 4/9: test/bonding: get MAC address with public API
### Errors
None.
### Warnings
None.
### Info
- Replaces direct access to `rte_eth_devices[].data->mac_addrs` with `rte_eth_macaddr_get()` public API
- Removes dependency on internal `ethdev_driver.h` header
- Changes from pointer to structure for `member_mac1` and `member_mac2` variables, which is correct given the API change
---
## Patch 5/9: test/devargs: rely on net null driver
### Errors
None.
### Warnings
None.
### Info
- Switches from `net_ring` to `net_null` driver for testing
- Removes use of internal `bus_driver.h`, replaces with public `rte_bus.h`
- Simplifies test cases by removing driver-specific conditional logic
- This is a sensible change for standardization
---
## Patch 6/9: test/vdev: find device with public API
### Errors
None.
### Warnings
None.
### Info
- Replaces internal `vdev_bus->find_device()` calls with public `RTE_DEV_FOREACH()` iterator
- Simplifies code by removing unnecessary kvargs parsing
- Uses public API exclusively, removing dependency on internal bus driver API
- Functionally equivalent but cleaner and more maintainable
---
## Patch 7/9: test: limit internal API usage
### Errors
None.
### Warnings
None.
### Info
- Removes global `ALLOW_INTERNAL_API` from app/test meson.build
- Adds `#define ALLOW_INTERNAL_API` only to specific files that genuinely need it:
- `process.c`: uses `rte_eal_get_runtime_dir()` and other internal EAL APIs
- `test_devargs.c`: tests internal devargs parsing
- `test_external_mem.c`: tests internal memory management
- `test_malloc.c`: tests internal malloc implementation
- `test_mempool.c`: tests internal mempool structures
- `test_pdump.c`: tests internal pdump functionality
- `virtual_pmd.c`: implements a test PMD requiring driver internals
- This is the correct approach: restrict internal API usage to only where necessary
---
## Patch 8/9: ci: make ABI reference generation faster
### Errors
None.
### Warnings
None.
### Info
- Optimizes ABI reference generation by:
- Disabling header checks (`-Dcheck_includes=false`)
- Disabling developer mode (`-Ddeveloper_mode=disabled`)
- Skipping all applications (`-Ddisable_apps=*`)
- Skipping documentation (`-Denable_docs=false`)
- Skipping examples (`-Dexamples=`)
- Only builds shared libraries and drivers, which is all that's needed for ABI checking
- Sensible optimization for CI performance
---
## Patch 9/9: ci: run reference binaries against current ABI
### Errors
None.
### Warnings
None.
### Info
- Adds runtime ABI compatibility testing by:
- Building testpmd and dpdk-test from the reference release
- Running reference binaries against current libraries
- Automatically skipping tests that didn't exist in reference release
- Catches runtime ABI breaks that static checks might miss (e.g., experimental symbols promoted to stable without aliases)
- Uses meson introspect to generate test lists
- Properly handles coredump detection and cleanup
- Well-structured CI enhancement
---
## Summary
All nine patches in this series are **clean and correct**. The series systematically:
1. Adds a proper per-queue stats API for bbdev
2. Fixes incorrect internal symbol marking in hash library
3. Refactors test helper code to reduce internal API exposure
4. Migrates tests to use public APIs where possible
5. Standardizes on the net_null driver for portability
6. Restricts ALLOW_INTERNAL_API to only files that genuinely need it
7. Optimizes CI ABI checking performance
8. Adds runtime ABI compatibility validation
No correctness bugs, style violations, or API issues were found. The changes improve code quality, reduce internal API dependencies, and enhance CI coverage.
More information about the test-report
mailing list