|WARNING| [v4,9/9] ci: run reference binaries against current ABI

dpdklab at iol.unh.edu dpdklab at iol.unh.edu
Tue Sep 22 12:21:31 CEST 2026


Test-Label: ai-code-review
Test-Status: WARNING
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 identified.

### Warnings

None identified.

### Info

- New experimental API properly marked with `__rte_experimental` and `RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_bbdev_queue_stats_get, 26.07)` (note: version should be corrected to match current date 2026-09-22, likely `26.11`)
- Release notes updated appropriately
- NULL pointer check on `stats` parameter before dereferencing is correct
- Uses `VALID_DEV_OR_RET_ERR` and `VALID_QUEUE_OR_RET_ERR` macros for validation
- Structure copy `*stats = dev->data->queues[queue_id].queue_stats;` is acceptable for statistics structures

---

## Patch 2/9: hash: fix GFNI stubs export

### Errors

None identified.

### Warnings

None identified.

### Info

- Correctly changes `RTE_EXPORT_INTERNAL_SYMBOL` to `RTE_EXPORT_SYMBOL` for stubs that are part of the public inlined API
- Removes `__rte_internal` tags appropriately
- This allows applications to use the GFNI API without `ALLOW_INTERNAL_API`

---

## Patch 3/9: test: uninline helper for forking

### Errors

None identified.

### Warnings

None identified.

### Info

- Moves inlined helpers from `process.h` to `process.c`, reducing header dependencies
- Removes requirement for consumers of `process.h` to use internal API
- Properly maintains extern declarations for pdump test helpers
- File added to MAINTAINERS correctly

---

## Patch 4/9: test/bonding: get MAC address with public API

### Errors

None identified.

### Warnings

None identified.

### Info

- Replaces direct access to `rte_eth_devices[].data->mac_addrs` with `rte_eth_macaddr_get()` public API
- Changes pointer variables to value variables (`struct rte_ether_addr` instead of `struct rte_ether_addr *`)
- Updates `rte_is_same_ether_addr()` calls from pointer to pointer (was already pointer, now address-of operator added)
- Removes dependency on internal `ethdev_driver.h` header

---

## Patch 5/9: test/devargs: rely on net null driver

### Errors

None identified.

### Warnings

None identified.

### Info

- Standardizes on `net_null` driver instead of `net_ring` for testing
- Removes use of internal `bus_driver.h` API
- Simplifies test cases by using a driver guaranteed to be available

---

## Patch 6/9: test/vdev: find device with public API

### Errors

None identified.

### Warnings

None identified.

### Info

- Replaces internal bus `find_device` API with public `RTE_DEV_FOREACH` iterator
- Simplifies `find_vdev_by_name()` helper to use public API
- Removes use of internal `rte_kvargs` parsing for device matching
- Corrects typo: "unexistant" - "nonexistent"

---

## Patch 7/9: test: limit internal API usage

### Errors

None identified.

### Warnings

None identified.

### Info

- Removes global `-DALLOW_INTERNAL_API` from test meson.build
- Adds `#define ALLOW_INTERNAL_API` to individual test files that genuinely need internal API:
  - `process.c` (uses `rte_devargs`, `rte_eal_driver_path_count`)
  - `test_devargs.c` (validates internal devargs structures)
  - `test_external_mem.c` (tests internal memory APIs)
  - `test_malloc.c` (tests internal malloc APIs)
  - `test_mempool.c` (tests internal mempool APIs)
  - `test_pdump.c` (tests internal pdump APIs)
  - `virtual_pmd.c` (implements a PMD, requires `ethdev_driver.h`)
- This is a good practice change that makes internal API usage explicit and scoped

---

## Patch 8/9: ci: make ABI reference generation faster

### Errors

None identified.

### Warnings

None identified.

### Info

- Optimizes ABI reference generation by:
  - Disabling header checks (`-Dcheck_includes=false`)
  - Disabling developer mode (`-Ddeveloper_mode=disabled`)
  - Disabling all apps (`-Ddisable_apps=*`)
  - Disabling docs (`-Denable_docs=false`)
  - Disabling examples (`-Dexamples=`)
- Only builds shared libraries and drivers needed for ABI comparison
- Reasonable optimization for ABI reference builds

---

## Patch 9/9: ci: run reference binaries against current ABI

### Errors

None identified.

### Warnings

None identified.

### Info

- Adds runtime ABI compatibility testing by running reference binaries against current libraries
- Tests both `dpdk-testpmd` and `dpdk-test` from the reference build with current libraries
- Automatically generates list of tests that existed in reference build
- Uses `DPDK_TEST_SKIP` to skip tests not present in the reference
- Provides additional ABI validation beyond static analysis
- Change from `-Ddisable_apps=*` to `-Denable_apps=test,test-pmd` in patch 8 is intentional to enable this runtime testing
- Good addition to CI validation

---

## Overall Assessment

This patch series is well-structured and correct. The changes systematically reduce internal API usage in the test suite, improve ABI validation, and optimize CI builds. No correctness bugs, style violations, or process issues were identified.

**Summary:**
- **Errors:** 0
- **Warnings:** 0
- **Info:** Multiple informational observations about good practices

All patches are ready for merge.


More information about the test-report mailing list