From: Luca Vizzarro <luca.vizzarro@arm.com>
To: Andrew Bailey <abailey@iol.unh.edu>
Cc: dev@dpdk.org, dmarx@iol.unh.edu, ivan.malov@arknetworks.am,
probb@iol.unh.edu
Subject: Re: [PATCH v2 2/3] dts: add TX offload capabilities to NIC capabilities
Date: Thu, 4 Sep 2025 15:47:44 +0100 [thread overview]
Message-ID: <175699721629.86089.8162277951767695455.luca.vizzarro@arm.com> (raw)
In-Reply-To: <20250903180414.83001-3-abailey@iol.unh.edu>
Copying reply from v1.
On Wed, Sep 03, 2025 at 02:04:13PM +0000, Andrew Bailey wrote:
> diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
> index 4d9caceb37..dfd83ebdb3 100644
> --- a/dts/framework/remote_session/testpmd_shell.py
> +++ b/dts/framework/remote_session/testpmd_shell.py
> @@ -1285,6 +1285,99 @@ class TestPmdVerbosePacket(TextParser):
> )
>
>
> +class TxOffloadCapability(Flag):
> + """TX offload capabilities of a device.
> +
> + The flags are taken from ``lib/ethdev/rte_ethdev.h``.
> + They're prefixed with ``RTE_ETH_TX_OFFLOAD`` in ``lib/ethdev/rte_ethdev.h``
> + instead of ``TX_OFFLOAD``, which is what testpmd changes the prefix to.
> + The values are not contiguous, so the correspondence is preserved
> + by specifying concrete values interspersed between auto() values.
> +
> + The ``TX_OFFLOAD`` prefix has been preserved so that the same flag names can be used
> + in :class:`NicCapability`. The prefix is needed in :class:`NicCapability` since there's
> + no other qualifier which would sufficiently distinguish it from other capabilities.
> +
> + References:
> + DPDK lib: ``lib/ethdev/rte_ethdev.h``
> + testpmd display function: ``app/test-pmd/cmdline.c:print_rx_offloads()``
> + """
> +
> + TX_OFFLOAD_VLAN_INSERT = auto()
> + TX_OFFLOAD_IPV4_CKSUM = auto()
> + TX_OFFLOAD_UDP_CKSUM = auto()
> + TX_OFFLOAD_TCP_CKSUM = auto()
> + TX_OFFLOAD_SCTP_CKSUM = auto()
> + TX_OFFLOAD_TCP_TSO = auto()
> + TX_OFFLOAD_UDP_TSO = auto()
> + TX_OFFLOAD_OUTER_IPV4_CKSUM = auto()
> + TX_OFFLOAD_QINQ_INSERT = auto()
> + TX_OFFLOAD_VXLAN_TNL_TSO = auto()
> + TX_OFFLOAD_GRE_TNL_TSO = auto()
> + TX_OFFLOAD_IPIP_TNL_TSO = auto()
> + TX_OFFLOAD_GENEVE_TNL_TSO = auto()
> + TX_OFFLOAD_MACSEC_INSERT = auto()
> + TX_OFFLOAD_MT_LOCKFREE = auto()
> + TX_OFFLOAD_MULTI_SEGS = auto()
> + TX_OFFLOAD_MBUF_FAST_FREE = auto()
> + TX_OFFLOAD_SECURITY = auto()
> + TX_OFFLOAD_UDP_TNL_TSO = auto()
> + TX_OFFLOAD_IP_TNL_TSO = auto()
> + TX_OFFLOAD_OUTER_UDP_CKSUM = auto()
> + TX_OFFLOAD_SEND_ON_TIMESTAMP = auto()
> +
> + @classmethod
> + def from_string(cls, line: str) -> Self:
> + """Make an instance from a string containing the flag names separated with a space.
> +
> + Args:
> + line: The line to parse.
> +
> + Returns:
> + A new instance containing all found flags.
> + """
> + flag = cls(0)
> + for flag_name in line.split():
> + flag |= cls[f"TX_OFFLOAD_{flag_name}"]
> + return flag
> +
> + @classmethod
> + def make_parser(cls, per_port: bool) -> ParserFn:
> + """Make a parser function.
> +
> + Args:
> + per_port: If :data:`True`, will return capabilities per port. If :data:`False`,
> + will return capabilities per queue.
> +
> + Returns:
> + ParserFn: A dictionary for the `dataclasses.field` metadata argument containing a
> + parser function that makes an instance of this flag from text.
> + """
> + granularity = "Port" if per_port else "Queue"
> + return TextParser.wrap(
> + TextParser.find(rf"Per {granularity}\s+:(.*)$", re.MULTILINE),
> + cls.from_string,
> + )
The above is creating a lot of duplication. I'd personally implement the
functions in a class that the flags RxOffload and TxOffload can inherit
from. You can deal with `cls[f"TX_OFFLOAD_{flag_name}"]` by introducing
a "PREFIX" ClassVar for all the classes where you can specify it:
PREFIX: ClassVar[str] = "TX_OFFLOAD_"
...
cls[f"{cls.PREFIX}{flag_name}"]
next prev parent reply other threads:[~2025-09-04 14:47 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-02 14:27 [PATCH v1 0/3] dts: add tx_offload support in dts Andrew Bailey
2025-09-02 14:27 ` [PATCH v1 1/3] dts: allow mbuf_fast_free to be set with testpmd shell Andrew Bailey
2025-09-02 19:37 ` Ivan Malov
2025-09-02 19:48 ` Ivan Malov
2025-09-02 14:27 ` [PATCH v1 2/3] dts: add TX offload capabilities to NIC capabilities Andrew Bailey
2025-09-04 14:43 ` Luca Vizzarro
2025-09-04 14:45 ` Luca Vizzarro
2025-09-02 14:27 ` [PATCH v1 3/3] dts: update tx_offload test from old dts Andrew Bailey
2025-09-03 18:04 ` [PATCH v2 0/3] dts: add tx_offlaod support in dts Andrew Bailey
2025-09-03 18:04 ` [PATCH v2 1/3] dts: allow mbuf_fast_free to be set with testpmd shell Andrew Bailey
2025-09-04 15:15 ` Luca Vizzarro
2025-09-04 21:18 ` Patrick Robb
2025-09-03 18:04 ` [PATCH v2 2/3] dts: add TX offload capabilities to NIC capabilities Andrew Bailey
2025-09-03 18:36 ` Patrick Robb
2025-09-04 14:47 ` Luca Vizzarro [this message]
2025-09-03 18:04 ` [PATCH v2 3/3] dts: update tx_offload test from old dts Andrew Bailey
2025-09-04 15:25 ` Luca Vizzarro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=175699721629.86089.8162277951767695455.luca.vizzarro@arm.com \
--to=luca.vizzarro@arm.com \
--cc=abailey@iol.unh.edu \
--cc=dev@dpdk.org \
--cc=dmarx@iol.unh.edu \
--cc=ivan.malov@arknetworks.am \
--cc=probb@iol.unh.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).