From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 43082458F4; Tue, 3 Sep 2024 21:47:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 29CEF410E7; Tue, 3 Sep 2024 21:47:13 +0200 (CEST) Received: from mail-pg1-f227.google.com (mail-pg1-f227.google.com [209.85.215.227]) by mails.dpdk.org (Postfix) with ESMTP id CC3F8410E3 for ; Tue, 3 Sep 2024 21:47:11 +0200 (CEST) Received: by mail-pg1-f227.google.com with SMTP id 41be03b00d2f7-7cd8afc9ff3so5121a12.0 for ; Tue, 03 Sep 2024 12:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; t=1725392831; x=1725997631; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pqb0mo+xatnCzo/UHe+weg5Qcpn595YBKPauPeBPA4M=; b=fEQgC1x6bzX9R9vJRq2eJRJ9zhQm18DhhNqFUbDiLdKH4ToLAn4cDbQ+OFWkoe4lis hrjGYz/LOptKvXq6E7r52fuwthi0jrCV2EEbrh/0hS99IA11Ue+8L3eqOizaQMNOLfKb UPD6t17yXxDZbXOE+O/PGQMuUXxN/Uj5d/hVQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725392831; x=1725997631; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pqb0mo+xatnCzo/UHe+weg5Qcpn595YBKPauPeBPA4M=; b=scGXs9wP3yuUitt3yfbsOihO7RYRYYbc7zZry3nRx2ssXnZf/yYtomUggcUO3tm6KD 0pG0UTQIrw63s0rRlAhjxJ6jyaRN9nLBkOyAzHrImeKTgz54M/8ie/4efEFehNnGhVWs t+Td9ehiwWACoZ1anq0teh2pEzsSWJ4mg35pZHBPWIe2NZQb8Y303ewtC3Hi2GcyhBPM KUueKK7dAg7+kt171M2VucWvkH0kTk6UVN8+q+yMRu61ZDwTnjIouDFZhgoLwP6r0rVf 2DQbww+VOOPdAsU34qh00WSxCWNH5YM4/La9mtuGO0cLXLdaS1vKxlQ06Mo3D0nD2FA8 xWrg== X-Gm-Message-State: AOJu0YxN5CpPWLuHX4MdY3FOm34axeT0B/eOa+vxNDwrMClpxP3B5OjB C3d8NXiojxFKg+HQMKpAXF3rJC5N03qyyVxnWprHbGSGB5kCbqTWVkEBPpk1acGiK/ttSX1ncY+ ghHL1/jKOzPwBqW1AwtiiHU9NvyEUt4TGJXlnda8hf03MPc8Q X-Google-Smtp-Source: AGHT+IFmkk3cC7j9WsI66DF4fgPZA/jKOw/kabshrA4Up5rGRqr7KcE/4B2BBIU/Rk795NK2Zted1UAUcsPI X-Received: by 2002:a17:90a:c794:b0:2d8:25ce:e6e3 with SMTP id 98e67ed59e1d1-2d856a2e852mr29191123a91.5.1725392830708; Tue, 03 Sep 2024 12:47:10 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-2d8446d1dddsm713958a91.16.2024.09.03.12.47.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Sep 2024 12:47:10 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from iol.unh.edu (unknown [IPv6:2606:4100:3880:1257::1083]) by postal.iol.unh.edu (Postfix) with ESMTP id 363CB605C380; Tue, 3 Sep 2024 15:47:09 -0400 (EDT) From: jspewock@iol.unh.edu To: yoan.picchi@foss.arm.com, npratte@iol.unh.edu, juraj.linkes@pantheon.tech, probb@iol.unh.edu, thomas@monjalon.net, paul.szczepanek@arm.com, wathsala.vithanage@arm.com, alex.chapman@arm.com, Luca.Vizzarro@arm.com, Honnappa.Nagarahalli@arm.com Cc: dev@dpdk.org, Jeremy Spewock Subject: [PATCH v2 1/5] dts: add TX offload capabilities Date: Tue, 3 Sep 2024 15:46:24 -0400 Message-ID: <20240903194642.24458-2-jspewock@iol.unh.edu> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240903194642.24458-1-jspewock@iol.unh.edu> References: <20240831000058.23009-1-jspewock@iol.unh.edu> <20240903194642.24458-1-jspewock@iol.unh.edu> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Jeremy Spewock The ability to query RX offloading capabilities of a device already exist, but there are situations in other test suites where skipping a test case/suite based on if a TX capability is missing is also desirable. This patch expands the RX offloading capabilities class to also allow for collecting TX offloading capabilities by creating a common parent class with parsing utility that is generalized to both. Signed-off-by: Jeremy Spewock --- dts/framework/remote_session/testpmd_shell.py | 395 +++++++++++++----- 1 file changed, 297 insertions(+), 98 deletions(-) diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py index 99f327a91b..13001d6666 100644 --- a/dts/framework/remote_session/testpmd_shell.py +++ b/dts/framework/remote_session/testpmd_shell.py @@ -21,7 +21,7 @@ from enum import Flag, auto from functools import partial from pathlib import PurePath -from typing import TYPE_CHECKING, Any, ClassVar, TypeAlias +from typing import TYPE_CHECKING, Any, ClassVar, TypeAlias, cast if TYPE_CHECKING: from enum import Enum as NoAliasEnum @@ -661,55 +661,8 @@ class TestPmdPortStats(TextParser): tx_bps: int = field(metadata=TextParser.find_int(r"Tx-bps:\s+(\d+)")) - -class RxOffloadCapability(Flag): - """Rx offload capabilities of a device.""" - - #: - RX_OFFLOAD_VLAN_STRIP = auto() - #: Device supports L3 checksum offload. - RX_OFFLOAD_IPV4_CKSUM = auto() - #: Device supports L4 checksum offload. - RX_OFFLOAD_UDP_CKSUM = auto() - #: Device supports L4 checksum offload. - RX_OFFLOAD_TCP_CKSUM = auto() - #: Device supports Large Receive Offload. - RX_OFFLOAD_TCP_LRO = auto() - #: Device supports QinQ (queue in queue) offload. - RX_OFFLOAD_QINQ_STRIP = auto() - #: Device supports inner packet L3 checksum. - RX_OFFLOAD_OUTER_IPV4_CKSUM = auto() - #: Device supports MACsec. - RX_OFFLOAD_MACSEC_STRIP = auto() - #: Device supports filtering of a VLAN Tag identifier. - RX_OFFLOAD_VLAN_FILTER = 1 << 9 - #: Device supports VLAN offload. - RX_OFFLOAD_VLAN_EXTEND = auto() - #: Device supports receiving segmented mbufs. - RX_OFFLOAD_SCATTER = 1 << 13 - #: Device supports Timestamp. - RX_OFFLOAD_TIMESTAMP = auto() - #: Device supports crypto processing while packet is received in NIC. - RX_OFFLOAD_SECURITY = auto() - #: Device supports CRC stripping. - RX_OFFLOAD_KEEP_CRC = auto() - #: Device supports L4 checksum offload. - RX_OFFLOAD_SCTP_CKSUM = auto() - #: Device supports inner packet L4 checksum. - RX_OFFLOAD_OUTER_UDP_CKSUM = auto() - #: Device supports RSS hashing. - RX_OFFLOAD_RSS_HASH = auto() - #: Device supports - RX_OFFLOAD_BUFFER_SPLIT = auto() - #: Device supports all checksum capabilities. - RX_OFFLOAD_CHECKSUM = RX_OFFLOAD_IPV4_CKSUM | RX_OFFLOAD_UDP_CKSUM | RX_OFFLOAD_TCP_CKSUM - #: Device supports all VLAN capabilities. - RX_OFFLOAD_VLAN = ( - RX_OFFLOAD_VLAN_STRIP - | RX_OFFLOAD_VLAN_FILTER - | RX_OFFLOAD_VLAN_EXTEND - | RX_OFFLOAD_QINQ_STRIP - ) +class OffloadCapability(Flag): + """Offload capabilities of a device.""" @classmethod def from_string(cls, line: str) -> Self: @@ -723,7 +676,7 @@ def from_string(cls, line: str) -> Self: """ flag = cls(0) for flag_name in line.split(): - flag |= cls[f"RX_OFFLOAD_{flag_name}"] + flag |= cls[flag_name] return flag @classmethod @@ -745,20 +698,130 @@ def make_parser(cls, per_port: bool) -> ParserFn: ) +class RxOffloadCapability(OffloadCapability): + """Rx offload capabilities of a device.""" + + #: Device supports L3 checksum offload. + IPV4_CKSUM = auto() + #: Device supports L4 checksum offload. + UDP_CKSUM = auto() + #: Device supports L4 checksum offload. + TCP_CKSUM = auto() + #: Device supports inner packet L3 checksum. + OUTER_IPV4_CKSUM = auto() + #: Device supports crypto processing while packet is received in NIC. + SECURITY = auto() + #: + VLAN_STRIP = auto() + #: Device supports Large Receive Offload. + TCP_LRO = auto() + #: Device supports QinQ (queue in queue) offload. + QINQ_STRIP = auto() + #: Device supports MACsec. + MACSEC_STRIP = auto() + #: Device supports filtering of a VLAN Tag identifier. + VLAN_FILTER = 1 << 9 + #: Device supports VLAN offload. + VLAN_EXTEND = auto() + #: Device supports receiving segmented mbufs. + SCATTER = 1 << 13 + #: Device supports Timestamp. + TIMESTAMP = auto() + #: Device supports CRC stripping. + KEEP_CRC = auto() + #: Device supports L4 checksum offload. + SCTP_CKSUM = auto() + #: Device supports inner packet L4 checksum. + OUTER_UDP_CKSUM = auto() + #: Device supports RSS hashing. + RSS_HASH = auto() + #: Device supports + BUFFER_SPLIT = auto() + #: Device supports all checksum capabilities. + CHECKSUM = IPV4_CKSUM | UDP_CKSUM | TCP_CKSUM + #: Device supports all VLAN capabilities. + VLAN = VLAN_STRIP | VLAN_FILTER | VLAN_EXTEND | QINQ_STRIP + + +class TxOffloadCapability(OffloadCapability): + """Tx offload capabilities of a device.""" + + #: Device supports L3 checksum offload. + IPV4_CKSUM = auto() + #: Device supports L4 checksum offload. + UDP_CKSUM = auto() + #: Device supports L4 checksum offload. + TCP_CKSUM = auto() + #: Device supports inner packet L3 checksum. + OUTER_IPV4_CKSUM = auto() + #: Device supports crypto processing while packet is received in NIC. + SECURITY = auto() + #: + VLAN_INSERT = auto() + #: + QINQ_INSERT = auto() + #: + SCTP_CKSUM = auto() + #: Device supports QinQ (queue in queue) stripping offload. + QINQ_STRIP = auto() + #: Device supports TCP Segmentation Offload. + TCP_TSO = auto() + #: Device supports TCP Segmentation Offload with UDP. + UDP_TSO = auto() + #: Device supports TCP Segmentation Offload with VXLAN tunnels. + VXLAN_TNL_TSO = auto() + #: Device supports TCP Segmentation Offload with GRE tunnels. + GRE_TNL_TSO = auto() + #: Device supports TCP Segmentation Offload with IPIP tunnels. + IPIP_TNL_TSO = auto() + #: Device supports TCP Segmentation Offload with IP tunnels. + IP_TNL_TSO = auto() + #: Device supports TCP Segmentation Offload with GENEVE tunnels. + GENEVE_TNL_TSO = auto() + #: Device supports TCP Segmentation Offload with UDP tunnels. + UDP_TNL_TSO = auto() + #: + MACSEC_INSERT = auto() + #: + MT_LOCKFREE = auto() + #: + MULTI_SEGS = auto() + #: + MBUF_FAST_FREE = auto() + + @dataclass -class RxOffloadCapabilities(TextParser): - """The result of testpmd's ``show port rx_offload capabilities`` command.""" +class OffloadCapabilities(TextParser): + """The result of testpmd's ``show port rx/tx_offload capabilities`` command.""" + + #: + port_id: int = field(metadata=TextParser.find_int(r"Offloading Capabilities of port (\d+) :")) + #: Per-queue offload capabilities. + per_queue: RxOffloadCapability | TxOffloadCapability + #: Capabilities other than per-queue offload capabilities. + per_port: RxOffloadCapability | TxOffloadCapability + + +@dataclass +class RxOffloadCapabilities(OffloadCapabilities): + """Extends :class:`OffloadCapabilities` with Rx specific functionality.""" #: - port_id: int = field( - metadata=TextParser.find_int(r"Rx Offloading Capabilities of port (\d+) :") - ) - #: Per-queue Rx offload capabilities. per_queue: RxOffloadCapability = field(metadata=RxOffloadCapability.make_parser(False)) - #: Capabilities other than per-queue Rx offload capabilities. + #: per_port: RxOffloadCapability = field(metadata=RxOffloadCapability.make_parser(True)) +@dataclass +class TxOffloadCapabilities(OffloadCapabilities): + """Extends :class:`OffloadCapabilities` with Tx specific functionality.""" + + #: + per_queue: TxOffloadCapability = field(metadata=TxOffloadCapability.make_parser(False)) + #: + per_port: TxOffloadCapability = field(metadata=TxOffloadCapability.make_parser(True)) + + T = TypeVarTuple("T") # type: ignore[misc] @@ -1501,6 +1564,32 @@ def show_port_stats(self, port_id: int) -> TestPmdPortStats: return TestPmdPortStats.parse(output) + def show_port_rx_offload_capabilities(self, port_id: int) -> RxOffloadCapabilities: + """Query the offloading capabilities of a given Rx port. + + Args: + port_id: The ID of the port to query. + + Returns: + Offloading capabilities of the port whose ID matches `port_id`. + """ + command = f"show port {port_id} rx_offload capabilities" + offload_capabilities_out = self.send_command(command) + return RxOffloadCapabilities.parse(offload_capabilities_out) + + def show_port_tx_offload_capabilities(self, port_id: int) -> TxOffloadCapabilities: + """Query the offloading capabilities of a given Tx port. + + Args: + port_id: The ID of the port to query. + + Returns: + Offloading capabilities of the port whose ID matches `port_id`. + """ + command = f"show port {port_id} tx_offload capabilities" + offload_capabilities_out = self.send_command(command) + return TxOffloadCapabilities.parse(offload_capabilities_out) + def _stop_port(self, port_id: int, verify: bool = True) -> None: """Stop port with `port_id` in testpmd. @@ -1856,27 +1945,52 @@ def _close(self) -> None: ====== Capability retrieval methods ====== """ - def get_capabilities_rx_offload( - self, - supported_capabilities: MutableSet["NicCapability"], - unsupported_capabilities: MutableSet["NicCapability"], - ) -> None: - """Get all rx offload capabilities and divide them into supported and unsupported. + @staticmethod + def get_offload_capabilities_func( + is_rx: bool, + ) -> Callable[["TestPmdShell", MutableSet["NicCapability"], MutableSet["NicCapability"]], None]: + """High-order function that returns a method for gathering Rx/Tx offload capabilities. Args: - supported_capabilities: Supported capabilities will be added to this set. - unsupported_capabilities: Unsupported capabilities will be added to this set. + is_rx: If :data:`True` the method that is returned will gather Rx capabilities. If + :data:`False` the returned method will return Tx capabilities. + + Returns: + A method for gathering Rx/Tx offload capabilities that meets the required structure. """ - self._logger.debug("Getting rx offload capabilities.") - command = f"show port {self.ports[0].id} rx_offload capabilities" - rx_offload_capabilities_out = self.send_command(command) - rx_offload_capabilities = RxOffloadCapabilities.parse(rx_offload_capabilities_out) - self._update_capabilities_from_flag( - supported_capabilities, - unsupported_capabilities, - RxOffloadCapability, - rx_offload_capabilities.per_port | rx_offload_capabilities.per_queue, - ) + + def get_capabilities( + self: "TestPmdShell", + supported_capabilities: MutableSet["NicCapability"], + unsupported_capabilities: MutableSet["NicCapability"], + ) -> None: + """Get all rx/tx offload capabilities and divide them into supported and unsupported. + + Args: + self: The shell to get the capabilities from. + supported_capabilities: Supported capabilities will be added to this set. + unsupported_capabilities: Unsupported capabilities will be added to this set. + """ + capabilities_class = RxOffloadCapability if is_rx else TxOffloadCapability + offload_type = "RX" if is_rx else "TX" + offload_capabilities_func = ( + self.show_port_rx_offload_capabilities + if is_rx + else self.show_port_tx_offload_capabilities + ) + offload_capabilities = offload_capabilities_func(self.ports[0].id) + # Cast to the generic type for mypy + per_port = cast(OffloadCapability, offload_capabilities.per_port) + per_queue = cast(OffloadCapability, offload_capabilities.per_queue) + self._update_capabilities_from_flag( + supported_capabilities, + unsupported_capabilities, + capabilities_class, + per_port | per_queue, + prefix=f"{offload_type}_OFFLOAD_", + ) + + return get_capabilities def _update_capabilities_from_flag( self, @@ -1884,13 +1998,14 @@ def _update_capabilities_from_flag( unsupported_capabilities: MutableSet["NicCapability"], flag_class: type[Flag], supported_flags: Flag, + prefix: str = "", ) -> None: """Divide all flags from `flag_class` into supported and unsupported.""" for flag in flag_class: if flag in supported_flags: - supported_capabilities.add(NicCapability[str(flag.name)]) + supported_capabilities.add(NicCapability[f"{prefix}{flag.name}"]) else: - unsupported_capabilities.add(NicCapability[str(flag.name)]) + unsupported_capabilities.add(NicCapability[f"{prefix}{flag.name}"]) def get_capabilities_rxq_info( self, @@ -1983,83 +2098,167 @@ class NicCapability(NoAliasEnum): ) #: RX_OFFLOAD_VLAN_STRIP: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports L3 checksum offload. RX_OFFLOAD_IPV4_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports L4 checksum offload. RX_OFFLOAD_UDP_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports L4 checksum offload. RX_OFFLOAD_TCP_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports Large Receive Offload. RX_OFFLOAD_TCP_LRO: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports QinQ (queue in queue) offload. RX_OFFLOAD_QINQ_STRIP: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports inner packet L3 checksum. RX_OFFLOAD_OUTER_IPV4_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports MACsec. RX_OFFLOAD_MACSEC_STRIP: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports filtering of a VLAN Tag identifier. RX_OFFLOAD_VLAN_FILTER: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports VLAN offload. RX_OFFLOAD_VLAN_EXTEND: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports receiving segmented mbufs. RX_OFFLOAD_SCATTER: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports Timestamp. RX_OFFLOAD_TIMESTAMP: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports crypto processing while packet is received in NIC. RX_OFFLOAD_SECURITY: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports CRC stripping. RX_OFFLOAD_KEEP_CRC: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports L4 checksum offload. RX_OFFLOAD_SCTP_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports inner packet L4 checksum. RX_OFFLOAD_OUTER_UDP_CKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports RSS hashing. RX_OFFLOAD_RSS_HASH: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports scatter Rx packets to segmented mbufs. RX_OFFLOAD_BUFFER_SPLIT: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports all checksum capabilities. RX_OFFLOAD_CHECKSUM: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) ) #: Device supports all VLAN capabilities. RX_OFFLOAD_VLAN: TestPmdShellCapabilityMethod = partial( - TestPmdShell.get_capabilities_rx_offload + TestPmdShell.get_offload_capabilities_func(True) + ) + #: Device supports L3 checksum offload. + TX_OFFLOAD_IPV4_CKSUM: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports L4 checksum offload. + TX_OFFLOAD_UDP_CKSUM: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports L4 checksum offload. + TX_OFFLOAD_TCP_CKSUM: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports inner packet L3 checksum. + TX_OFFLOAD_OUTER_IPV4_CKSUM: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports crypto processing while packet is received in NIC. + TX_OFFLOAD_SECURITY: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_VLAN_INSERT: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_QINQ_INSERT: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_SCTP_CKSUM: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports QinQ (queue in queue) stripping offload. + TX_OFFLOAD_QINQ_STRIP: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload. + TX_OFFLOAD_TCP_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with UDP. + TX_OFFLOAD_UDP_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with VXLAN tunnels. + TX_OFFLOAD_VXLAN_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with GRE tunnels. + TX_OFFLOAD_GRE_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with IPIP tunnels. + TX_OFFLOAD_IPIP_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with IP tunnels. + TX_OFFLOAD_IP_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with GENEVE tunnels. + TX_OFFLOAD_GENEVE_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with UDP tunnels. + TX_OFFLOAD_UDP_TNL_TSO: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MACSEC_INSERT: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MT_LOCKFREE: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MULTI_SEGS: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MBUF_FAST_FREE: TestPmdShellCapabilityMethod = partial( + TestPmdShell.get_offload_capabilities_func(False) ) #: Device supports Rx queue setup after device started. RUNTIME_RX_QUEUE_SETUP: TestPmdShellCapabilityMethod = partial( -- 2.46.0