DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com,
	jspewock@iol.unh.edu, probb@iol.unh.edu, paul.szczepanek@arm.com,
	yoan.picchi@foss.arm.com, Luca.Vizzarro@arm.com
Cc: dev@dpdk.org, "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Subject: [PATCH v9 15/21] dts: os session docstring update
Date: Mon,  4 Dec 2023 11:24:23 +0100	[thread overview]
Message-ID: <20231204102429.106709-16-juraj.linkes@pantheon.tech> (raw)
In-Reply-To: <20231204102429.106709-1-juraj.linkes@pantheon.tech>

Format according to the Google format and PEP257, with slight
deviations.

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
 dts/framework/testbed_model/os_session.py | 272 ++++++++++++++++------
 1 file changed, 205 insertions(+), 67 deletions(-)

diff --git a/dts/framework/testbed_model/os_session.py b/dts/framework/testbed_model/os_session.py
index 76e595a518..ac6bb5e112 100644
--- a/dts/framework/testbed_model/os_session.py
+++ b/dts/framework/testbed_model/os_session.py
@@ -2,6 +2,26 @@
 # Copyright(c) 2023 PANTHEON.tech s.r.o.
 # Copyright(c) 2023 University of New Hampshire
 
+"""OS-aware remote session.
+
+DPDK supports multiple different operating systems, meaning it can run on these different operating
+systems. This module defines the common API that OS-unaware layers use and translates the API into
+OS-aware calls/utility usage.
+
+Note:
+    Running commands with administrative privileges requires OS awareness. This is the only layer
+    that's aware of OS differences, so this is where non-privileged command get converted
+    to privileged commands.
+
+Example:
+    A user wishes to remove a directory on a remote :class:`~.sut_node.SutNode`.
+    The :class:`~.sut_node.SutNode` object isn't aware what OS the node is running - it delegates
+    the OS translation logic to :attr:`~.node.Node.main_session`. The SUT node calls
+    :meth:`~OSSession.remove_remote_dir` with a generic, OS-unaware path and
+    the :attr:`~.node.Node.main_session` translates that to ``rm -rf`` if the node's OS is Linux
+    and other commands for other OSs. It also translates the path to match the underlying OS.
+"""
+
 from abc import ABC, abstractmethod
 from collections.abc import Iterable
 from ipaddress import IPv4Interface, IPv6Interface
@@ -28,10 +48,16 @@
 
 
 class OSSession(ABC):
-    """
-    The OS classes create a DTS node remote session and implement OS specific
+    """OS-unaware to OS-aware translation API definition.
+
+    The OSSession classes create a remote session to a DTS node and implement OS specific
     behavior. There a few control methods implemented by the base class, the rest need
-    to be implemented by derived classes.
+    to be implemented by subclasses.
+
+    Attributes:
+        name: The name of the session.
+        remote_session: The remote session maintaining the connection to the node.
+        interactive_session: The interactive remote session maintaining the connection to the node.
     """
 
     _config: NodeConfiguration
@@ -46,6 +72,15 @@ def __init__(
         name: str,
         logger: DTSLOG,
     ):
+        """Initialize the OS-aware session.
+
+        Connect to the node right away and also create an interactive remote session.
+
+        Args:
+            node_config: The test run configuration of the node to connect to.
+            name: The name of the session.
+            logger: The logger instance this session will use.
+        """
         self._config = node_config
         self.name = name
         self._logger = logger
@@ -53,15 +88,15 @@ def __init__(
         self.interactive_session = create_interactive_session(node_config, logger)
 
     def close(self, force: bool = False) -> None:
-        """
-        Close the remote session.
+        """Close the underlying remote session.
+
+        Args:
+            force: Force the closure of the connection.
         """
         self.remote_session.close(force)
 
     def is_alive(self) -> bool:
-        """
-        Check whether the remote session is still responding.
-        """
+        """Check whether the underlying remote session is still responding."""
         return self.remote_session.is_alive()
 
     def send_command(
@@ -72,10 +107,23 @@ def send_command(
         verify: bool = False,
         env: dict | None = None,
     ) -> CommandResult:
-        """
-        An all-purpose API in case the command to be executed is already
-        OS-agnostic, such as when the path to the executed command has been
-        constructed beforehand.
+        """An all-purpose API for OS-agnostic commands.
+
+        This can be used for an execution of a portable command that's executed the same way
+        on all operating systems, such as Python.
+
+        The :option:`--timeout` command line argument and the :envvar:`DTS_TIMEOUT`
+        environment variable configure the timeout of command execution.
+
+        Args:
+            command: The command to execute.
+            timeout: Wait at most this long in seconds for `command` execution to complete.
+            privileged: Whether to run the command with administrative privileges.
+            verify: If :data:`True`, will check the exit code of the command.
+            env: A dictionary with environment variables to be used with the command execution.
+
+        Raises:
+            RemoteCommandExecutionError: If verify is :data:`True` and the command failed.
         """
         if privileged:
             command = self._get_privileged_command(command)
@@ -89,8 +137,20 @@ def create_interactive_shell(
         privileged: bool,
         app_args: str,
     ) -> InteractiveShellType:
-        """
-        See "create_interactive_shell" in SutNode
+        """Factory for interactive session handlers.
+
+        Instantiate `shell_cls` according to the remote OS specifics.
+
+        Args:
+            shell_cls: The class of the shell.
+            timeout: Timeout for reading output from the SSH channel. If you are
+                reading from the buffer and don't receive any data within the timeout
+                it will throw an error.
+            privileged: Whether to run the shell with administrative privileges.
+            app_args: The arguments to be passed to the application.
+
+        Returns:
+            An instance of the desired interactive application shell.
         """
         return shell_cls(
             self.interactive_session.session,
@@ -114,27 +174,42 @@ def _get_privileged_command(command: str) -> str:
 
     @abstractmethod
     def guess_dpdk_remote_dir(self, remote_dir: str | PurePath) -> PurePath:
-        """
-        Try to find DPDK remote dir in remote_dir.
+        """Try to find DPDK directory in `remote_dir`.
+
+        The directory is the one which is created after the extraction of the tarball. The files
+        are usually extracted into a directory starting with ``dpdk-``.
+
+        Returns:
+            The absolute path of the DPDK remote directory, empty path if not found.
         """
 
     @abstractmethod
     def get_remote_tmp_dir(self) -> PurePath:
-        """
-        Get the path of the temporary directory of the remote OS.
+        """Get the path of the temporary directory of the remote OS.
+
+        Returns:
+            The absolute path of the temporary directory.
         """
 
     @abstractmethod
     def get_dpdk_build_env_vars(self, arch: Architecture) -> dict:
-        """
-        Create extra environment variables needed for the target architecture. Get
-        information from the node if needed.
+        """Create extra environment variables needed for the target architecture.
+
+        Different architectures may require different configuration, such as setting 32-bit CFLAGS.
+
+        Returns:
+            A dictionary with keys as environment variables.
         """
 
     @abstractmethod
     def join_remote_path(self, *args: str | PurePath) -> PurePath:
-        """
-        Join path parts using the path separator that fits the remote OS.
+        """Join path parts using the path separator that fits the remote OS.
+
+        Args:
+            args: Any number of paths to join.
+
+        Returns:
+            The resulting joined path.
         """
 
     @abstractmethod
@@ -143,13 +218,13 @@ def copy_from(
         source_file: str | PurePath,
         destination_file: str | PurePath,
     ) -> None:
-        """Copy a file from the remote Node to the local filesystem.
+        """Copy a file from the remote node to the local filesystem.
 
-        Copy source_file from the remote Node associated with this remote
-        session to destination_file on the local filesystem.
+        Copy `source_file` from the remote node associated with this remote
+        session to `destination_file` on the local filesystem.
 
         Args:
-            source_file: the file on the remote Node.
+            source_file: the file on the remote node.
             destination_file: a file or directory path on the local filesystem.
         """
 
@@ -159,14 +234,14 @@ def copy_to(
         source_file: str | PurePath,
         destination_file: str | PurePath,
     ) -> None:
-        """Copy a file from local filesystem to the remote Node.
+        """Copy a file from local filesystem to the remote node.
 
-        Copy source_file from local filesystem to destination_file
-        on the remote Node associated with this remote session.
+        Copy `source_file` from local filesystem to `destination_file`
+        on the remote node associated with this remote session.
 
         Args:
             source_file: the file on the local filesystem.
-            destination_file: a file or directory path on the remote Node.
+            destination_file: a file or directory path on the remote node.
         """
 
     @abstractmethod
@@ -176,8 +251,12 @@ def remove_remote_dir(
         recursive: bool = True,
         force: bool = True,
     ) -> None:
-        """
-        Remove remote directory, by default remove recursively and forcefully.
+        """Remove remote directory, by default remove recursively and forcefully.
+
+        Args:
+            remote_dir_path: The path of the directory to remove.
+            recursive: If :data:`True`, also remove all contents inside the directory.
+            force: If :data:`True`, ignore all warnings and try to remove at all costs.
         """
 
     @abstractmethod
@@ -186,9 +265,12 @@ def extract_remote_tarball(
         remote_tarball_path: str | PurePath,
         expected_dir: str | PurePath | None = None,
     ) -> None:
-        """
-        Extract remote tarball in place. If expected_dir is a non-empty string, check
-        whether the dir exists after extracting the archive.
+        """Extract remote tarball in its remote directory.
+
+        Args:
+            remote_tarball_path: The path of the tarball on the remote node.
+            expected_dir: If non-empty, check whether `expected_dir` exists after extracting
+                the archive.
         """
 
     @abstractmethod
@@ -201,69 +283,119 @@ def build_dpdk(
         rebuild: bool = False,
         timeout: float = SETTINGS.compile_timeout,
     ) -> None:
-        """
-        Build DPDK in the input dir with specified environment variables and meson
-        arguments.
+        """Build DPDK on the remote node.
+
+        An extracted DPDK tarball must be present on the node. The build consists of two steps::
+
+            meson setup <meson args> remote_dpdk_dir remote_dpdk_build_dir
+            ninja -C remote_dpdk_build_dir
+
+        The :option:`--compile-timeout` command line argument and the :envvar:`DTS_COMPILE_TIMEOUT`
+        environment variable configure the timeout of DPDK build.
+
+        Args:
+            env_vars: Use these environment variables when building DPDK.
+            meson_args: Use these meson arguments when building DPDK.
+            remote_dpdk_dir: The directory on the remote node where DPDK will be built.
+            remote_dpdk_build_dir: The target build directory on the remote node.
+            rebuild: If :data:`True`, do a subsequent build with ``meson configure`` instead
+                of ``meson setup``.
+            timeout: Wait at most this long in seconds for the build execution to complete.
         """
 
     @abstractmethod
     def get_dpdk_version(self, version_path: str | PurePath) -> str:
-        """
-        Inspect DPDK version on the remote node from version_path.
+        """Inspect the DPDK version on the remote node.
+
+        Args:
+            version_path: The path to the VERSION file containing the DPDK version.
+
+        Returns:
+            The DPDK version.
         """
 
     @abstractmethod
     def get_remote_cpus(self, use_first_core: bool) -> list[LogicalCore]:
-        """
-        Compose a list of LogicalCores present on the remote node.
-        If use_first_core is False, the first physical core won't be used.
+        r"""Get the list of :class:`~.cpu.LogicalCore`\s on the remote node.
+
+        Args:
+            use_first_core: If :data:`False`, the first physical core won't be used.
+
+        Returns:
+            The logical cores present on the node.
         """
 
     @abstractmethod
     def kill_cleanup_dpdk_apps(self, dpdk_prefix_list: Iterable[str]) -> None:
-        """
-        Kill and cleanup all DPDK apps identified by dpdk_prefix_list. If
-        dpdk_prefix_list is empty, attempt to find running DPDK apps to kill and clean.
+        """Kill and cleanup all DPDK apps.
+
+        Args:
+            dpdk_prefix_list: Kill all apps identified by `dpdk_prefix_list`.
+                If `dpdk_prefix_list` is empty, attempt to find running DPDK apps to kill and clean.
         """
 
     @abstractmethod
     def get_dpdk_file_prefix(self, dpdk_prefix: str) -> str:
-        """
-        Get the DPDK file prefix that will be used when running DPDK apps.
+        """Make OS-specific modification to the DPDK file prefix.
+
+        Args:
+           dpdk_prefix: The OS-unaware file prefix.
+
+        Returns:
+            The OS-specific file prefix.
         """
 
     @abstractmethod
-    def setup_hugepages(self, hugepage_amount: int, force_first_numa: bool) -> None:
-        """
-        Get the node's Hugepage Size, configure the specified amount of hugepages
+    def setup_hugepages(self, hugepage_count: int, force_first_numa: bool) -> None:
+        """Configure hugepages on the node.
+
+        Get the node's Hugepage Size, configure the specified count of hugepages
         if needed and mount the hugepages if needed.
-        If force_first_numa is True, configure hugepages just on the first socket.
+
+        Args:
+            hugepage_count: Configure this many hugepages.
+            force_first_numa:  If :data:`True`, configure hugepages just on the first numa node.
         """
 
     @abstractmethod
     def get_compiler_version(self, compiler_name: str) -> str:
-        """
-        Get installed version of compiler used for DPDK
+        """Get installed version of compiler used for DPDK.
+
+        Args:
+            compiler_name: The name of the compiler executable.
+
+        Returns:
+            The compiler's version.
         """
 
     @abstractmethod
     def get_node_info(self) -> NodeInfo:
-        """
-        Collect information about the node
+        """Collect additional information about the node.
+
+        Returns:
+            Node information.
         """
 
     @abstractmethod
     def update_ports(self, ports: list[Port]) -> None:
-        """
-        Get additional information about ports:
-            Logical name (e.g. enp7s0) if applicable
-            Mac address
+        """Get additional information about ports from the operating system and update them.
+
+        The additional information is:
+
+            * Logical name (e.g. ``enp7s0``) if applicable,
+            * Mac address.
+
+        Args:
+            ports: The ports to update.
         """
 
     @abstractmethod
     def configure_port_state(self, port: Port, enable: bool) -> None:
-        """
-        Enable/disable port.
+        """Enable/disable `port` in the operating system.
+
+        Args:
+            port: The port to configure.
+            enable: If :data:`True`, enable the port, otherwise shut it down.
         """
 
     @abstractmethod
@@ -273,12 +405,18 @@ def configure_port_ip_address(
         port: Port,
         delete: bool,
     ) -> None:
-        """
-        Configure (add or delete) an IP address of the input port.
+        """Configure an IP address on `port` in the operating system.
+
+        Args:
+            address: The address to configure.
+            port: The port to configure.
+            delete: If :data:`True`, remove the IP address, otherwise configure it.
         """
 
     @abstractmethod
     def configure_ipv4_forwarding(self, enable: bool) -> None:
-        """
-        Enable IPv4 forwarding in the underlying OS.
+        """Enable IPv4 forwarding in the operating system.
+
+        Args:
+            enable: If :data:`True`, enable the forwarding, otherwise disable it.
         """
-- 
2.34.1


  parent reply	other threads:[~2023-12-04 10:26 UTC|newest]

Thread overview: 257+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-23 10:40 [RFC PATCH v1 0/4] dts: add dts api docs Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 3/4] dts: add doc generation Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-04-28 19:33   ` Jeremy Spewock
2023-04-03  9:17 ` [RFC PATCH v1 0/4] dts: add dts api docs Juraj Linkeš
2023-04-03  9:42   ` Bruce Richardson
2023-04-25  8:20     ` Juraj Linkeš
2023-04-25  8:44       ` Bruce Richardson
2023-04-25  8:57         ` Juraj Linkeš
2023-04-25  9:43           ` Bruce Richardson
2023-05-03 11:33             ` Juraj Linkeš
2023-05-04 12:37 ` [RFC PATCH v2 " Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 3/4] dts: add doc generation Juraj Linkeš
2023-05-04 12:45     ` Bruce Richardson
2023-05-05  7:53       ` Juraj Linkeš
2023-05-05 10:24         ` Bruce Richardson
2023-05-05 10:41           ` Juraj Linkeš
2023-05-05 10:56     ` Bruce Richardson
2023-05-05 11:13       ` Juraj Linkeš
2023-05-05 13:28         ` Bruce Richardson
2023-05-09  9:23           ` Juraj Linkeš
2023-05-09  9:40             ` Bruce Richardson
2023-05-10 12:19               ` Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-05-05 14:06   ` [RFC PATCH v2 0/4] dts: add dts api docs Bruce Richardson
2023-05-09 15:28     ` Juraj Linkeš
2023-05-11  8:55     ` Juraj Linkeš
2023-05-11  9:14   ` [RFC PATCH v3 " Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 3/4] dts: add doc generation Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-06-21 18:27       ` Jeremy Spewock
2023-05-17 16:56     ` [RFC PATCH v3 0/4] dts: add dts api docs Bruce Richardson
2023-05-22  9:17       ` Juraj Linkeš
2023-08-31 10:04     ` [RFC PATCH v4 " Juraj Linkeš
2023-08-31 10:04       ` [RFC PATCH v4 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-10-22 14:30         ` Yoan Picchi
2023-10-23  6:44           ` Juraj Linkeš
2023-10-23 11:52             ` Yoan Picchi
2023-10-24  6:39               ` Juraj Linkeš
2023-10-24 12:21                 ` Yoan Picchi
2023-08-31 10:04       ` [RFC PATCH v4 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-10-27 15:27         ` Yoan Picchi
2023-08-31 10:04       ` [RFC PATCH v4 3/4] dts: add doc generation Juraj Linkeš
2023-09-20  7:08         ` Juraj Linkeš
2023-10-26 16:43         ` Yoan Picchi
2023-10-27  9:52           ` Juraj Linkeš
2023-08-31 10:04       ` [RFC PATCH v4 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-09-01 17:02         ` Jeremy Spewock
2023-10-31 12:10         ` Yoan Picchi
2023-11-02 10:17           ` Juraj Linkeš
2023-11-06 17:15       ` [PATCH v5 00/23] dts: add dts api docs Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 01/23] dts: code adjustments for doc generation Juraj Linkeš
2023-11-08 13:35           ` Yoan Picchi
2023-11-15  7:46             ` Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 02/23] dts: add docstring checker Juraj Linkeš
2023-11-07 17:38           ` Yoan Picchi
2023-11-06 17:15         ` [PATCH v5 03/23] dts: add basic developer docs Juraj Linkeš
2023-11-07 14:39           ` Yoan Picchi
2023-11-08  9:01             ` Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 04/23] dts: exceptions docstring update Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 05/23] dts: settings " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 06/23] dts: logger and " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 07/23] dts: dts runner and main " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 08/23] dts: test suite " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 09/23] dts: test result " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 10/23] dts: config " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 11/23] dts: remote session " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 12/23] dts: interactive " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 13/23] dts: port and virtual device " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 14/23] dts: cpu " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 15/23] dts: os session " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 16/23] dts: posix and linux sessions " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 17/23] dts: node " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 18/23] dts: sut and tg nodes " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 19/23] dts: base traffic generators " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 20/23] dts: scapy tg " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 21/23] dts: test suites " Juraj Linkeš
2023-11-06 17:16         ` [PATCH v5 22/23] dts: add doc generation dependencies Juraj Linkeš
2023-11-06 17:16         ` [PATCH v5 23/23] dts: add doc generation Juraj Linkeš
2023-11-08 12:53         ` [PATCH v6 01/23] dts: code adjustments for " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 02/23] dts: add docstring checker Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 03/23] dts: add basic developer docs Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 04/23] dts: exceptions docstring update Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 05/23] dts: settings " Juraj Linkeš
2023-11-08 16:17             ` Yoan Picchi
2023-11-15 10:09               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 06/23] dts: logger and " Juraj Linkeš
2023-11-08 17:14             ` Yoan Picchi
2023-11-15 10:11               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 07/23] dts: dts runner and main " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 08/23] dts: test suite " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 09/23] dts: test result " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 10/23] dts: config " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 11/23] dts: remote session " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 12/23] dts: interactive " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 13/23] dts: port and virtual device " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 14/23] dts: cpu " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 15/23] dts: os session " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 16/23] dts: posix and linux sessions " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 17/23] dts: node " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 18/23] dts: sut and tg nodes " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 19/23] dts: base traffic generators " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 20/23] dts: scapy tg " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 21/23] dts: test suites " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 22/23] dts: add doc generation dependencies Juraj Linkeš
2023-11-08 16:00             ` Yoan Picchi
2023-11-15 10:00               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 23/23] dts: add doc generation Juraj Linkeš
2023-11-15 13:09             ` [PATCH v7 00/21] dts: docstrings update Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-11-16 21:04                 ` Jeremy Spewock
2023-11-20 16:10                   ` Juraj Linkeš
2023-11-20 16:02                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 02/21] dts: add docstring checker Juraj Linkeš
2023-11-20 16:03                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 03/21] dts: add basic developer docs Juraj Linkeš
2023-11-20 16:03                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 04/21] dts: exceptions docstring update Juraj Linkeš
2023-11-20 16:22                 ` Yoan Picchi
2023-11-20 16:35                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 05/21] dts: settings " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 06/21] dts: logger and utils " Juraj Linkeš
2023-11-20 16:23                 ` Yoan Picchi
2023-11-20 16:36                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 07/21] dts: dts runner and main " Juraj Linkeš
2023-11-16 21:51                 ` Jeremy Spewock
2023-11-20 16:13                   ` Juraj Linkeš
2023-11-20 17:43                 ` Yoan Picchi
2023-11-21  9:10                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 08/21] dts: test suite " Juraj Linkeš
2023-11-16 22:16                 ` Jeremy Spewock
2023-11-20 16:25                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 09/21] dts: test result " Juraj Linkeš
2023-11-16 22:47                 ` Jeremy Spewock
2023-11-20 16:33                   ` Juraj Linkeš
2023-11-30 21:20                     ` Jeremy Spewock
2023-11-15 13:09               ` [PATCH v7 10/21] dts: config " Juraj Linkeš
2023-11-21 15:08                 ` Yoan Picchi
2023-11-22 10:42                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 11/21] dts: remote session " Juraj Linkeš
2023-11-21 15:36                 ` Yoan Picchi
2023-11-22 11:13                   ` Juraj Linkeš
2023-11-22 11:25                     ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 12/21] dts: interactive " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 13/21] dts: port and virtual device " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 14/21] dts: cpu " Juraj Linkeš
2023-11-21 17:45                 ` Yoan Picchi
2023-11-22 11:18                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 15/21] dts: os session " Juraj Linkeš
2023-11-22 11:50                 ` Yoan Picchi
2023-11-22 13:27                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-11-22 13:24                 ` Yoan Picchi
2023-11-22 13:35                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 17/21] dts: node " Juraj Linkeš
2023-11-22 12:18                 ` Yoan Picchi
2023-11-22 13:28                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-11-22 13:12                 ` Yoan Picchi
2023-11-22 13:34                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 19/21] dts: base traffic generators " Juraj Linkeš
2023-11-21 16:20                 ` Yoan Picchi
2023-11-22 11:38                   ` Juraj Linkeš
2023-11-22 11:56                     ` Yoan Picchi
2023-11-22 13:11                       ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 20/21] dts: scapy tg " Juraj Linkeš
2023-11-21 16:33                 ` Yoan Picchi
2023-11-22 13:18                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 21/21] dts: test suites " Juraj Linkeš
2023-11-16 17:36                 ` Yoan Picchi
2023-11-20 10:17                   ` Juraj Linkeš
2023-11-20 12:50                     ` Yoan Picchi
2023-11-22 13:40                       ` Juraj Linkeš
2023-11-23 15:13               ` [PATCH v8 00/21] dts: docstrings update Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 02/21] dts: add docstring checker Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 03/21] dts: add basic developer docs Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 04/21] dts: exceptions docstring update Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 05/21] dts: settings " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 06/21] dts: logger and utils " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 07/21] dts: dts runner and main " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 08/21] dts: test suite " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 09/21] dts: test result " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 10/21] dts: config " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 11/21] dts: remote session " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 12/21] dts: interactive " Juraj Linkeš
2023-11-30 21:49                   ` Jeremy Spewock
2023-12-04  9:50                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 13/21] dts: port and virtual device " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 14/21] dts: cpu " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 15/21] dts: os session " Juraj Linkeš
2023-12-01 17:33                   ` Jeremy Spewock
2023-12-04  9:53                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 17/21] dts: node " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-12-01 18:06                   ` Jeremy Spewock
2023-12-04 10:02                     ` Juraj Linkeš
2023-12-04 11:02                       ` Bruce Richardson
2023-11-23 15:13                 ` [PATCH v8 19/21] dts: base traffic generators " Juraj Linkeš
2023-12-01 18:05                   ` Jeremy Spewock
2023-12-04 10:03                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 20/21] dts: scapy tg " Juraj Linkeš
2023-12-01 18:17                   ` Jeremy Spewock
2023-12-04 10:07                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 21/21] dts: test suites " Juraj Linkeš
2023-12-01 16:00                 ` [PATCH v8 00/21] dts: docstrings update Yoan Picchi
2023-12-01 18:23                   ` Jeremy Spewock
2023-12-04 10:24                 ` [PATCH v9 " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 02/21] dts: add docstring checker Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 03/21] dts: add basic developer docs Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 04/21] dts: exceptions docstring update Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 05/21] dts: settings " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 06/21] dts: logger and utils " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 07/21] dts: dts runner and main " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 08/21] dts: test suite " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 09/21] dts: test result " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 10/21] dts: config " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 11/21] dts: remote session " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 12/21] dts: interactive " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 13/21] dts: port and virtual device " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 14/21] dts: cpu " Juraj Linkeš
2023-12-04 10:24                   ` Juraj Linkeš [this message]
2023-12-04 10:24                   ` [PATCH v9 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 17/21] dts: node " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 19/21] dts: base traffic generators " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 20/21] dts: scapy tg " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 21/21] dts: test suites " Juraj Linkeš
2023-12-05 18:39                     ` Jeremy Spewock
2023-12-21 11:48                   ` [PATCH v9 00/21] dts: docstrings update Thomas Monjalon
2023-11-15 13:36             ` [PATCH v1 0/2] dts: api docs generation Juraj Linkeš
2023-11-15 13:36               ` [PATCH v1 1/2] dts: add doc generation dependencies Juraj Linkeš
2023-11-15 13:36               ` [PATCH v1 2/2] dts: add doc generation Juraj Linkeš
2024-01-22 12:00               ` [PATCH v2 0/3] dts: API docs generation Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 2/3] dts: add API doc sources Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 3/3] dts: add API doc generation Juraj Linkeš
2024-01-22 16:35               ` [PATCH v3 0/3] dts: API docs generation Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 2/3] dts: add API doc sources Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 3/3] dts: add API doc generation Juraj Linkeš
2024-01-29 17:09                   ` Jeremy Spewock
     [not found]                   ` <CAJvnSUCNjo0p-yhROF1MNLKhjiAw2QTyTHO2hpOaVVUn0xnJ0A@mail.gmail.com>
2024-02-29 18:12                     ` Nicholas Pratte
2024-04-12 10:14               ` [PATCH v4 0/3] dts: API docs generation Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 2/3] dts: add API doc sources Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 3/3] dts: add API doc generation Juraj Linkeš
2024-04-29 13:49                 ` [PATCH v4 0/3] dts: API docs generation Jeremy Spewock
2024-04-29 14:12                   ` Patrick Robb

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=20231204102429.106709-16-juraj.linkes@pantheon.tech \
    --to=juraj.linkes@pantheon.tech \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=Luca.Vizzarro@arm.com \
    --cc=dev@dpdk.org \
    --cc=jspewock@iol.unh.edu \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    --cc=thomas@monjalon.net \
    --cc=yoan.picchi@foss.arm.com \
    /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).