|SUCCESS| [v17, 23/23] doc: update release notes with NXP DPAA changes
dpdklab at iol.unh.edu
dpdklab at iol.unh.edu
Tue Sep 29 14:18:10 CEST 2026
Test-Label: ai-code-review
Test-Status: SUCCESS
https://dpdk.org/patch/170170
_AI Code Review_
=== Patch Review: series.patch (via Claude) ===
Review date: 2026-09-29
# DPAA Patch Series Review
## Patch 01/23: net/dpaa: fix device remove
### Errors
None.
### Warnings
None.
### Info
Patch correctly adds NULL check before calling `dpaa_eth_dev_close()` and properly handles the return value.
---
## Patch 02/23: net/dpaa: fix free port resources on close
### Errors
None.
### Warnings
None.
### Info
The patch fixes resource leaks by:
- Freeing `tx_conf_queues` which was never freed after allocation
- Ensuring cleanup runs for offline/ONIC ports before the early return
- Freeing at all error paths where the allocation has occurred
---
## Patch 03/23: bus/dpaa: fix FQD dest wq channel decoding
### Errors
None.
### Warnings
None.
### Info
Corrects the bit field extraction of the FQD `dest_wq` field. The old code extracted channel as bits 2:0 and work queue as bits 15:3, which is inverted. The fix extracts work queue from bits 2:0 and channel from bits 15:3, matching the hardware descriptor layout.
---
## Patch 04/23: bus/dpaa: refine fman naming
### Errors
None.
### Warnings
None.
### Info
Clarifies field names: `ccsr_map` becomes `memac_map`, and `bmi_map` becomes `rx_bmi_map` to distinguish from the separate `tx_bmi_map`. Pure refactoring with no functional change.
---
## Patch 05/23: bus/dpaa: scan max BPID from DTS
### Errors
None.
### Warnings
None.
### Info
Replaces hardcoded maximum pool count with a value derived from the device tree `fsl,bpid-range` property. Correctly validates the range against `BMAN_MAX_POOLS` and warns when clamping.
---
## Patch 06/23: drivers: add process-type guards for secondary process
### Errors
None.
### Warnings
None.
### Info
- `dma/dpaa` correctly rejects probe from secondary (MMIO pointers are primary-only)
- `net/dpaa` remove path correctly distinguishes primary-only cleanup
---
## Patch 07/23: drivers: shutdown DPAA FQ by fq descriptor
### Errors
None.
### Warnings
None.
### Info
Passes the full `struct qman_fq *` to `qman_shutdown_fq()` instead of just the FQID, enabling channel-affine portal access for push-mode Rx queues. The wrapper `qman_shutdown_fq_by_fqid()` preserves the old call sites.
---
## Patch 08/23: drivers: add DPAA cgrid cleanup support
### Errors
None.
### Warnings
None.
### Info
- Adds `qman_pending_fq_by_cgrid()` to find FQs still attached to a CGR
- `dpaa_cgr_stale_fq_cleanup()` shuts down such FQs before deleting the CGR
- Releases CGRIDs via `qman_release_cgrid_range()` in device close and on probe failure
- Fixes the probe error paths which previously freed `cgr_rx`/`cgr_tx` without deleting the CGRs, leaving dangling pointers in the portal's `cgr_cbs` list
---
## Patch 09/23: bus/dpaa: improve FQ shutdown with channel validation
### Errors
None.
### Warnings
None.
### Info
- Replaces hardcoded pool channel check with DTS-derived `dpaa_get_qm_channel_pool()` and `dpaa_get_qm_channel_pool_num()`
- Removes the incorrect dedicated-channel affinity check (portal channel never equals a pool channel, so the old code could never succeed)
- Now correctly subscribes the current portal to the pool channel via SDQCR for pool-channel FQs, and validates that the FQ's dedicated channel matches the portal's own channel for dedicated-channel FQs
- Adds bounds check to drain loop (up to `QMAN_FQRN_WAIT_MAX`) instead of spinning forever
---
## Patch 10/23: drivers: add BMI Tx statistics
### Errors
None.
### Warnings
None.
### Info
Adds Tx BMI statistics counters and extends `fman_if_bmi_stats_get_all()` to return both Rx and Tx. The caller expects a fixed number of values (`FMAN_IF_BMI_STATS_COUNT`), so the helper reports zero for register blocks not mapped for a given port type.
---
## Patch 11/23: net/dpaa: optimize FM deconfig
### Errors
None.
### Warnings
None.
### Info
Consolidates FM deconfiguration to a single location in the device close path, removing a duplicate call. Also moves VSP cleanup to before the final resource release. No functional change to ordering, just removes duplication.
---
## Patch 12/23: net/dpaa: optimize FMC MAC type parsing
### Errors
None.
### Warnings
None.
### Info
For LS104x, MAC9/MAC10 can be 1G/2.5G/10G depending on SerDes. Replaces MAC type + port number arithmetic with parsing the FMC port name directly via `dpaa_port_fmc_get_idx_from_name()`. Handles both `"MAC/N"` and `"OFFLINE/N"` patterns.
---
## Patch 13/23: drivers: release DPAA bpid on driver destructor
### Errors
None.
### Warnings
None.
### Info
- Tracks allocated BPIDs in a per-BPID table (`s_dpaa_bpid_allocated_flag[]`)
- Driver destructor (`RTE_FINI_PRIO(dpaa_mpool_finish, 104)`) releases any BPIDs still marked in use at process exit via `bman_free_bpid()`
- `dpaa_mbuf_free_pool()` clears the per-BPID `mp` and `bp` pointers in `rte_dpaa_bpid_info[]` but does not free the array itself (it is shared hugepage memory referenced by Rx queues including in secondaries)
- Uses `rte_zmalloc()` for `bp_info` to avoid leaving uninitialized fields
- Uses `FSL_BM_BURST_MAX` instead of open-coded 8
---
## Patch 14/23: dma/dpaa: add devargs for SG and errata workaround
### Errors
None.
### Warnings
None.
### Info
Adds three device arguments to control existing features:
- `dpaa_dma_sg_disable`: disables scatter-gather batching
- `dpaa_dma_data_validation`: enables read-back-and-compare data validation (debug only, high cost)
- `dpaa_dma_pci_read_disable`: skips ERR050757 programming (only available when built with `RTE_DMA_DPAA_ERRATA_ERR050757`)
All are runtime controls for code that already existed. Documented in `doc/guides/dmadevs/dpaa.rst`.
---
## Patch 15/23: net/dpaa: support Rx/Tx taildrop threshold devarg
### Errors
None.
### Warnings
None.
### Info
Adds `drv_rx_taildrop` and `drv_tx_taildrop` device arguments to configure per-port taildrop thresholds. `dpaa_get_devargs_int()` helper is added to parse integer devargs. Environment variable `DPAA_TX_TAILDROP_THRESHOLD` is still honored as a fallback for Tx. Both thresholds are reset to defaults at the start of `dpaa_dev_init()`.
---
## Patch 16/23: net/dpaa: support fmcless rxq number as devargs
### Errors
None.
### Warnings
None.
### Info
In FMCLESS mode, default Rx queue count is changed from `rte_lcore_count()` to `DPAA_MAX_NUM_PCD_QUEUES`. A `drv_fmcless_rxq` devarg allows overriding this value. Documented in NIC guide.
---
## Patch 17/23: net/dpaa: support non fmX-macY type of shared Ethernet name
### Errors
None.
### Warnings
None.
### Info
Adds `drv_sh_if_name` device argument to let the application provide the Linux interface name for a shared MAC when it differs from the `fmX-macY` style. Helper `dpaa_get_devargs_str()` is added. Used in `dpaa_eth_dev_configure()` to retrieve MTU via `ioctl(SIOCGIFMTU)`.
---
## Patch 18/23: bus/dpaa: optimize DPAA multi-entry buffer pool operations
### Errors
None.
### Warnings
None.
### Info
- Adds `struct bm_hw_buf_desc` overlay to `union bm_buffer` for 8-byte atomic access to the buffer descriptor
- `bm_buffer_set64_to_be()` writes the whole descriptor in one store, clearing reserved and bpid fields
- `bm_buffer_get64_from_be()` reads the address back
- Release ring entry 0 is written directly, entries 1..n-1 are copied with `memcpy()`
- Uses `FSL_BM_BURST_MAX` instead of hardcoded 8
- Moves `MAX_U48`, `HI16_OF_U48`, `LO32_OF_U48`, `U48_BY_HI16_LO32` to header
- Drops standalone `bman_hw_extract_addr()` in favor of new macro
---
## Patch 19/23: bus/dpaa: improve log macro usages
### Errors
None.
### Warnings
None.
### Info
Replaces `DPAA_BUS_LOG(LEVEL, ...)` with shorthand macros (`DPAA_BUS_INFO`, `DPAA_BUS_ERR`, `DPAA_BUS_WARN`, `DPAA_BUS_DEBUG`) for consistency. Adds `DPAA_BUS_NOTICE` macro.
---
## Patch 20/23: net/dpaa: enhance VSP port support
### Errors
None.
### Warnings
None.
### Info
- Adds `fman_onic` handling to `get_rx_port_type()` so ONIC ports map to `OH_OFFLINE_PARSING`
- Replaces parallel `vsp_handle[]` and `vsp_bpid[]` arrays with `struct dpaa_if_vsp` holding handle + pool array
- Bounds VSP ID against `DPAA_VSP_PROFILE_MAX_NUM` in `dpaa_eth_rx_queue_bp_check()` before indexing
- Moves shared-MAC base profile special case earlier in `dpaa_port_vsp_update()`
- Returns `-EINVAL` instead of `0` when port has no profiles or VSP ID is out of range
- Drops old BPID equality shortcut (VSP now tracks a pool array)
- Skips BMI stats and Rx disable in `dpaa_eth_dev_stop()` for ONIC ports (they have no MAC)
- `dpaa_port_vsp_cleanup()` iterates over `DPAA_VSP_PROFILE_MAX_NUM` to release profiles outside the current window, clears handles after freeing, removes unused `fif` parameter
---
## Patch 21/23: drivers: add offline (O/H) port device support
### Errors
None.
### Warnings
None.
### Info
Adds support for DPAA Offline/Host-command (O/H) port. Selected via `drv_oldev` bus device argument. Associated back-half port is named via `drv_bh_port` device argument. Adds new file `drivers/net/dpaa/dpaa_oldev.c` and header `rte_pmd_dpaa_oldev.h` with experimental APIs for classification and LGW programming. The device is owned by the primary process only; secondary rejects probe.
---
## Patch 22/23: crypto/dpaa_sec: improve crypto fq resource handling
### Errors
None.
### Warnings
None.
### Info
- Allocates multiple FQIDs from kernel by single `ioctl()` instead of one-by-one
- `dpaa_sec_uninit()` now shuts down FQs and releases FQIDs (primary only)
- Probe error paths correctly shut down any created FQs and release the FQID range
- Uses `qman_alloc_fqid_range()` for batch allocation
---
## Patch 23/23: doc: update release notes with NXP DPAA changes
### Errors
None.
### Warnings
None.
### Info
Adds a single "Updated NXP DPAA drivers" entry summarizing the new features and device arguments added by this series. Appropriately placed in the "New Features" section.
---
## Overall Series Assessment
This series is well-constructed and addresses real correctness bugs (resource leaks, use-after-free paths, incorrect bit field extraction, missing bounds checks) alongside adding new features (offline port support, runtime devargs for existing functionality) and refactoring for clarity. The fixes are appropriate for backporting to stable where tagged. The new features are documented and include release notes.
No major correctness issues were identified. The patches follow DPDK coding standards, use proper error handling, and include release note updates where appropriate.
More information about the test-report
mailing list