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 E00FF458AF; Sat, 31 Aug 2024 02:04:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA49C42FA1; Sat, 31 Aug 2024 02:04:03 +0200 (CEST) Received: from mail-io1-f97.google.com (mail-io1-f97.google.com [209.85.166.97]) by mails.dpdk.org (Postfix) with ESMTP id 19D9942F8B for ; Sat, 31 Aug 2024 02:04:02 +0200 (CEST) Received: by mail-io1-f97.google.com with SMTP id ca18e2360f4ac-81f9339e534so96143639f.3 for ; Fri, 30 Aug 2024 17:04:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; t=1725062641; x=1725667441; 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=APiyw2k7zHlTsKVMJNjF1IT+s9GBIGhFTMSGm8NCb+k=; b=doqo26Kuu7K6Szsd1lTztawhDFgGLhZIUBqsddGvGDKvqfHPUCMgTiHHpDyaNDWDLK ti3xk4wR4P9UX7NNaYPUBR+zqAZfp9mS1sTQMbAr4TeFnBoceJqizbx1vNXWxg3Vkwng MU2a7Txqbo8RNDBzgFcuTztK+TuXBXm5FDhDw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725062641; x=1725667441; 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=APiyw2k7zHlTsKVMJNjF1IT+s9GBIGhFTMSGm8NCb+k=; b=hj+PF77pEQiNEdw1l7/Huh/CjaXbKElipzJBBQTDN33R3Y/+5ZExMVqkq4n1qp3Cmd 64WPpQvJZd0snDvN/YElD+XGgI9GpeMX+I3XU6DkNJKOLOPV8xAwTfxuL1bARMEMbAl3 wJMdB0RIv8dF2nKEFkmmG+TPq2M0puxURVmykcJXx0o02TkdAQtt/ltEszUn1qEKA4OW N+o9+nO6sDl/1GK5Vz3fDW/yhLvHD77e6VDolvUDmsvftnFxicwncDL3JVFNG0OqFMoS E5lm7TrVtSkv5tojj3GFKcOOg6FgJSf5O2OszZ6xUDXCgp5WglG5ns8OlXQ6sgRP7/Ev m/vQ== X-Gm-Message-State: AOJu0YxvYHG2G5e5beybSY3AqBjjXGWozBEQi+u0tMV4XPGwLN+WWHDP sL2WF5F1Uf7lLa9huvVYvSJG4SSuWM5dVT6LbgjltvJuG2xZRevA0rGVUD+IdmuCqL4o8VFvoeH YbMSumZk24fu+AjHSal08ALi54ygclC7g X-Google-Smtp-Source: AGHT+IEu4ktsEh1lR+Mr2zvsl/vFw6eDGXSrJ3H17vQLjcEap0/fHLq7nX5ptAFjPK5p/KBxAD7PZbDYDUu9 X-Received: by 2002:a05:6602:6c16:b0:822:43ef:99d1 with SMTP id ca18e2360f4ac-82a10e13d6amr975253839f.2.1725062641281; Fri, 30 Aug 2024 17:04:01 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [132.177.123.84]) by smtp-relay.gmail.com with ESMTPS id 8926c6da1cb9f-4ced2e9cebdsm181645173.68.2024.08.30.17.04.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Aug 2024 17:04:01 -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 3EE78605C380; Fri, 30 Aug 2024 20:04:00 -0400 (EDT) From: jspewock@iol.unh.edu To: Honnappa.Nagarahalli@arm.com, probb@iol.unh.edu, paul.szczepanek@arm.com, juraj.linkes@pantheon.tech, yoan.picchi@foss.arm.com, npratte@iol.unh.edu, wathsala.vithanage@arm.com, Luca.Vizzarro@arm.com, alex.chapman@arm.com, thomas@monjalon.net Cc: dev@dpdk.org, Jeremy Spewock Subject: [RFC PATCH v1 1/5] dts: add TX offload capabilities Date: Fri, 30 Aug 2024 20:00:09 -0400 Message-ID: <20240831000058.23009-2-jspewock@iol.unh.edu> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240831000058.23009-1-jspewock@iol.unh.edu> References: <20240831000058.23009-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 | 382 +++++++++++++----- 1 file changed, 287 insertions(+), 95 deletions(-) diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py index e097a10751..cccc49ce9c 100644 --- a/dts/framework/remote_session/testpmd_shell.py +++ b/dts/framework/remote_session/testpmd_shell.py @@ -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,132 @@ 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"Rx Offloading Capabilities of port (\d+) :") + metadata=TextParser.find_int(r"Offloading Capabilities of port (\d+) :") ) - #: Per-queue Rx offload capabilities. + #: 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.""" + + #: 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 +1566,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. @@ -1855,27 +1946,43 @@ 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: + 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) + self._update_capabilities_from_flag( + supported_capabilities, + unsupported_capabilities, + capabilities_class, + offload_capabilities.per_port, + prefix=f"{offload_type}_OFFLOAD_" + ) + return get_capabilities def _update_capabilities_from_flag( self, @@ -1883,13 +1990,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, @@ -1982,83 +2090,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 = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports L4 checksum offload. + TX_OFFLOAD_UDP_CKSUM = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports L4 checksum offload. + TX_OFFLOAD_TCP_CKSUM = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports inner packet L3 checksum. + TX_OFFLOAD_OUTER_IPV4_CKSUM = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports crypto processing while packet is received in NIC. + TX_OFFLOAD_SECURITY = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_VLAN_INSERT = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_QINQ_INSERT = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_SCTP_CKSUM = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports QinQ (queue in queue) stripping offload. + TX_OFFLOAD_QINQ_STRIP = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload. + TX_OFFLOAD_TCP_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with UDP. + TX_OFFLOAD_UDP_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with VXLAN tunnels. + TX_OFFLOAD_VXLAN_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with GRE tunnels. + TX_OFFLOAD_GRE_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with IPIP tunnels. + TX_OFFLOAD_IPIP_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with IP tunnels. + TX_OFFLOAD_IP_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with GENEVE tunnels. + TX_OFFLOAD_GENEVE_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: Device supports TCP Segmentation Offload with UDP tunnels. + TX_OFFLOAD_UDP_TNL_TSO = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MACSEC_INSERT = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MT_LOCKFREE = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MULTI_SEGS = partial( + TestPmdShell.get_offload_capabilities_func(False) + ) + #: + TX_OFFLOAD_MBUF_FAST_FREE = partial( + TestPmdShell.get_offload_capabilities_func(False) ) #: Device supports Rx queue setup after device started. RUNTIME_RX_QUEUE_SETUP: TestPmdShellCapabilityMethod = partial( -- 2.46.0