[PATCH v5 1/4] dts: add start Tx first method to testpmd shell
Patrick Robb
probb at iol.unh.edu
Tue Jan 20 17:43:56 CET 2026
Hi David,
Dean and I both looked at the patch from Lukas, yes it looks good and I
will add a comment and tag there.
Otherwise, I'm not sure how the patch could have been breaking docs given
our process. Can you please sanity check my process below? Maybe I am
making a silly mistake with validating the docs build.
For the next dts branch, when I'm adding new patches, for each patch:
1. Apply patchseries
2. Run normal checks (checkpatches.sh, check-git-log.sh,
dts-check-format.sh)
3. Perform a doc build like below:
meson setup my-doc-build
ninja -C my-doc-build doc
Then, It quickly does a doc build, and (although I don't always look unless
I'm making a docs change) it is possible to navigate into the build dir
docs dir, and open up the html docs files.
4. Then at the end I push my local branch with the new patches added to the
remote next-dts repo.
So, is my above docs check sufficient, or am I missing a part of the
process?
On Tue, Jan 20, 2026 at 4:13 AM David Marchand <david.marchand at redhat.com>
wrote:
> Hello dts guys,
>
> On Fri, 7 Nov 2025 at 22:50, Dean Marx <dmarx at iol.unh.edu> wrote:
> >
> > Add start tx_first method to testpmd shell, which sends
> > a specified number of burst packets prior to starting
> > packet forwarding.
> >
> > Signed-off-by: Dean Marx <dmarx at iol.unh.edu>
> > Reviewed-by: Luca Vizzarro <luca.vizzarro at arm.com>
> > ---
> > dts/api/testpmd/__init__.py | 21 +++++++++++++++++++++
> > 1 file changed, 21 insertions(+)
> >
> > diff --git a/dts/api/testpmd/__init__.py b/dts/api/testpmd/__init__.py
> > index aadb7f4e70..6d70927660 100644
> > --- a/dts/api/testpmd/__init__.py
> > +++ b/dts/api/testpmd/__init__.py
> > @@ -204,6 +204,27 @@ def start(self, verify: bool = True) -> None:
> > self._logger.debug(f"Failed to start packet forwarding:
> \n{start_cmd_output}")
> > raise InteractiveCommandExecutionError("Testpmd failed
> to start packet forwarding.")
> >
> > + @_requires_started_ports
> > + def start_tx_first(self, burst_num: int, verify: bool = True) ->
> None:
> > + """Start packet forwarding after sending specified number of
> bursts of packets.
> > +
> > + Args:
> > + burst_num: Number of packets to send before stopping
> transmission.
> > + verify: If :data:`True` , a second start command will be
> sent in an attempt to verify
> > + packet forwarding started as expected.
> > +
> > + Raises:
> > + InteractiveCommandExecutionError: If `verify` is
> :data:`True` and forwarding fails to
> > + start or ports fail to come up.
> > + """
> > + self.send_command(f"start tx_first {burst_num if burst_num is
> not None else ""}")
> > + if verify:
> > + # If forwarding was already started, sending "start" again
> should tell us
> > + start_cmd_output = self.send_command("start")
> > + if "Packet forwarding already started" not in
> start_cmd_output:
> > + self._logger.debug(f"Failed to start packet forwarding:
> \n{start_cmd_output}")
> > + raise InteractiveCommandExecutionError("Testpmd failed
> to start packet forwarding.")
> > +
> > def stop(self, verify: bool = True) -> str:
> > """Stop packet forwarding.
> >
>
> I can see (uncaught) warnings in GHA when generating the documentation.
> I don't know if this is something new, or if it was like this from the
> start.
>
> Please have a look.
>
> 2026-01-20T08:16:58.5130393Z [250/252] Generating dts_api_html with a
> custom command
> 2026-01-20T08:16:58.5131324Z WARNING: autodoc: failed to import module
> 'testpmd' from module 'api'; the following exception was raised:
> 2026-01-20T08:16:58.5132132Z Traceback (most recent call last):
> 2026-01-20T08:16:58.5132676Z File
> "/usr/lib/python3/dist-packages/sphinx/ext/autodoc/importer.py", line
> 70, in import_module
> 2026-01-20T08:16:58.5133175Z return importlib.import_module(modname)
> 2026-01-20T08:16:58.5133807Z File
> "/usr/lib/python3.10/importlib/__init__.py", line 126, in
> import_module
> 2026-01-20T08:16:58.5134351Z return
> _bootstrap._gcd_import(name[level:], package, level)
> 2026-01-20T08:16:58.5134771Z File "<frozen importlib._bootstrap>",
> line 1050, in _gcd_import
> 2026-01-20T08:16:58.5135202Z File "<frozen importlib._bootstrap>",
> line 1027, in _find_and_load
> 2026-01-20T08:16:58.5135997Z File "<frozen importlib._bootstrap>",
> line 1006, in _find_and_load_unlocked
> 2026-01-20T08:16:58.5136465Z File "<frozen importlib._bootstrap>",
> line 688, in _load_unlocked
> 2026-01-20T08:16:58.5136900Z File "<frozen
> importlib._bootstrap_external>", line 879, in exec_module
> 2026-01-20T08:16:58.5137348Z File "<frozen
> importlib._bootstrap_external>", line 1017, in get_code
> 2026-01-20T08:16:58.5137795Z File "<frozen
> importlib._bootstrap_external>", line 947, in source_to_code
> 2026-01-20T08:16:58.5138259Z File "<frozen importlib._bootstrap>",
> line 241, in _call_with_frames_removed
> 2026-01-20T08:16:58.5138733Z File
> "/home/runner/work/dpdk/dpdk/dts/api/testpmd/__init__.py", line 230
> 2026-01-20T08:16:58.5139388Z self.send_command(f"start tx_first
> {burst_num if burst_num is not None else ""}")
> 2026-01-20T08:16:58.5139819Z
> ^
> 2026-01-20T08:16:58.5140133Z SyntaxError: f-string: expecting '}'
> 2026-01-20T08:16:58.5140317Z
>
> ...
>
>
> https://github.com/DPDK/dpdk/actions/runs/21163780224/job/60863594703#step:19:9587
>
>
>
> --
> David Marchand
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/dev/attachments/20260120/1e4bdcb5/attachment.htm>
More information about the dev
mailing list