|WARNING| argparse: support range step for corelist parsing
fengchengwen
fengchengwen at huawei.com
Mon Oct 19 10:27:35 CEST 2026
On 10/16/2026 6:09 PM, dpdklab at iol.unh.edu wrote:
> Test-Label: ai-code-review
> Test-Status: WARNING
> https://dpdk.org/patch/171477
>
> _AI Code Review_
>
> === Patch Review: series.patch (via Claude) ===
> Review date: 2026-10-16
>
> # DPDK Patch Review
>
> ## Patch: argparse: support range step for corelist parsing
>
> This patch adds stride/step syntax (`start-end:step`) to the EAL corelist parser to help users skip sibling cores more easily (e.g., `-l 0-126:2` instead of `-l 0,2,4,6...126`).
>
> ---
>
> ## ERRORS
>
> None identified.
>
> ---
>
> ## WARNINGS
>
> ### 1. Missing release notes update
>
> The patch adds new API functionality (range step syntax in corelist parsing) but does not update the release notes.
>
> **Location:** No changes to `doc/guides/rel_notes/release_*.rst`
>
> **Why it matters:** User-visible feature additions require release notes per DPDK guidelines.
>
> **Suggested fix:** Add a feature note in the current release notes file under the appropriate section:
>
> ```rst
> * **argparse: Added step syntax for corelist ranges.**
>
> The corelist parser now supports stride/step syntax for core ranges.
> For example, ``-l 0-126:2`` selects cores 0, 2, 4, ..., 126.
> This is useful for skipping sibling cores on systems with SMT/hyperthreading.
OK, will done in v2
> ```
>
> ---
>
> ### 2. Test coverage: missing zero-step test case
>
> The patch adds validation that step must be positive (`if (idx == 0)`) but does not include a test case for step=0.
>
> **Location:** `app/test/test_argparse.c` line 605-613 validates step > 0, but no test exercises `"1-5:0"`.
>
> **Why it matters:** Untested error paths may hide bugs. The zero-step case is explicitly rejected in code but not verified in the test suite.
>
> **Suggested fix:** Add a test case:
>
> ```c
> char *corelist_invalid_range_step_zero = test_strdup("1-5:0");
> /* ... later in test ... */
> CPU_ZERO(&val_cpuset);
> ret = rte_argparse_parse_type(corelist_invalid_range_step_zero,
> RTE_ARGPARSE_VALUE_TYPE_CORELIST, &val_cpuset);
> TEST_ASSERT(ret != 0, "Argparse parse type for corelist (step zero) should have failed!");
> ```
OK, will done in v2
>
> ---
>
> ## INFO
>
> ### 1. Code clarity: `max` variable initialization
>
> The patch changes `max` from a local variable declared inside the loop (`int32_t max;`) to a variable declared at function scope and initialized to `-1`.
>
> **Location:** `lib/argparse/rte_argparse.c:578` and line 590 (removed local declaration)
>
> **Observation:** This is correct. The variable needs to persist across loop iterations for the new step logic. The change does not introduce a bug and improves correctness.
>
> ---
>
> ### 2. Documentation matches implementation
>
> The documentation in `doc/guides/prog_guide/argparse_lib.rst` accurately describes the new step syntax with examples. Cross-checked against the implementation logic.
>
> ---
>
> ### 3. Test coverage is comprehensive
>
> The test suite covers:
> - Valid step syntax: `1-5:2`, mixed with commas, reverse ranges with step
> - Invalid cases: incomplete step syntax, double colons, negative step, extra colons
> - Edge cases: step larger than range size (e.g., `12-16:3` correctly sets 12, 15)
>
> The tests verify both that cores in range are set and cores outside range are not set, which is thorough.
>
> ---
>
> ### 4. Variable naming: `is_step` boolean
>
> The patch introduces `bool is_step` at line 576. This follows DPDK guidelines for boolean variable naming (using `bool` from `<stdbool.h>`).
The original rte_argparse library already include <stdbool.h> in rte_argparse.h
>
> ---
>
> Review-Result: WARNING
More information about the dev
mailing list