public inbox for virtio-comment@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH 0/3] virtio-net: Define cvq configuration related device parts
@ 2024-10-18 13:17 Parav Pandit
  2024-10-18 13:17 ` [PATCH 1/3] device-parts: editorial: Replace duplicated part type Parav Pandit
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 13:17 UTC (permalink / raw)
  To: virtio-comment, mst, cohuck, mvaralar; +Cc: shahafs, Parav Pandit

virtio net driver sends the control virtqueue commands for
device configuration. Such driver configuration is currently
not captured in the device parts.

This series adds several of such device parts which represents
the network device specific configuration.

It is done by utilizing the existing device parts structure.
A new generic selector format is added to enable device type
specific device parts.

This series also reuses the existing control virtqueue command
structures, fields, and values to define the network device parts.

Patch summary:
patch-1 fixes a duplicate part name
patch-2 adds device type specific raw selector
patch-3 defines several cvq command related device parts

Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209

Parav Pandit (3):
  device-parts: editorial: Replace duplicated part type
  device-parts: Add device type specific raw selector
  virtio-net: Define cvq configuration related device parts

 device-parts.tex                 |  6 ++-
 device-types/net/description.tex | 90 ++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 1 deletion(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] device-parts: editorial: Replace duplicated part type
  2024-10-18 13:17 [PATCH 0/3] virtio-net: Define cvq configuration related device parts Parav Pandit
@ 2024-10-18 13:17 ` Parav Pandit
  2024-10-18 15:57   ` Matias Ezequiel Vara Larsen
  2024-10-18 13:17 ` [PATCH 2/3] device-parts: Add device type specific raw selector Parav Pandit
  2024-10-18 13:17 ` [PATCH 3/3] virtio-net: Define cvq configuration related device parts Parav Pandit
  2 siblings, 1 reply; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 13:17 UTC (permalink / raw)
  To: virtio-comment, mst, cohuck, mvaralar; +Cc: shahafs, Parav Pandit

Device part type VIRTIO_DEV_PART_VQ_CFG was duplicated in
the description; it is supposed to be VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
Fix it.

Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
Fixes: 617aa2d62a88 ("Signed-off-by: Parav Pandit <parav@nvidia.com>")
Signed-off-by: Parav Pandit <parav@nvidia.com>
---
 device-parts.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/device-parts.tex b/device-parts.tex
index 7197929..e59c0f9 100644
--- a/device-parts.tex
+++ b/device-parts.tex
@@ -75,7 +75,7 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
 
 \field{selector.vq_index.index} is the index of the virtqueue. It is valid
 only when the \field{part_type} is VIRTIO_DEV_PART_VQ_CFG or
-VIRTIO_DEV_PART_VQ_CFG.
+VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
 
 \subsection{Common device parts}\label{sec:Basic Facilities of a Virtio Device / Device parts / Common device parts}
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] device-parts: Add device type specific raw selector
  2024-10-18 13:17 [PATCH 0/3] virtio-net: Define cvq configuration related device parts Parav Pandit
  2024-10-18 13:17 ` [PATCH 1/3] device-parts: editorial: Replace duplicated part type Parav Pandit
@ 2024-10-18 13:17 ` Parav Pandit
  2024-10-18 16:13   ` Matias Ezequiel Vara Larsen
  2024-10-18 13:17 ` [PATCH 3/3] virtio-net: Define cvq configuration related device parts Parav Pandit
  2 siblings, 1 reply; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 13:17 UTC (permalink / raw)
  To: virtio-comment, mst, cohuck, mvaralar; +Cc: shahafs, Parav Pandit

The subsequent patch defines the device-type-specific parts. For
these parts, the raw selector format is defined to ensure that
each device type can specify its format accurately.

Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
Signed-off-by: Parav Pandit <parav@nvidia.com>
---
 device-parts.tex | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/device-parts.tex b/device-parts.tex
index e59c0f9..ee743c2 100644
--- a/device-parts.tex
+++ b/device-parts.tex
@@ -21,6 +21,7 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
                         le16 index;
                         u8 reserved[6];
                 } vq_index;
+		u8 device_type_raw[8];
         } selector;
         le32 length;
 };
@@ -77,6 +78,9 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
 only when the \field{part_type} is VIRTIO_DEV_PART_VQ_CFG or
 VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
 
+\field{selector.device_type_raw} is only used when a device-specific part is
+utilized, with \field{part_type} ranging from 0x0200 to 0x05FF.
+
 \subsection{Common device parts}\label{sec:Basic Facilities of a Virtio Device / Device parts / Common device parts}
 
 Common parts are independent of the device type.
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] virtio-net: Define cvq configuration related device parts
  2024-10-18 13:17 [PATCH 0/3] virtio-net: Define cvq configuration related device parts Parav Pandit
  2024-10-18 13:17 ` [PATCH 1/3] device-parts: editorial: Replace duplicated part type Parav Pandit
  2024-10-18 13:17 ` [PATCH 2/3] device-parts: Add device type specific raw selector Parav Pandit
@ 2024-10-18 13:17 ` Parav Pandit
  2024-10-18 16:24   ` Matias Ezequiel Vara Larsen
  2 siblings, 1 reply; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 13:17 UTC (permalink / raw)
  To: virtio-comment, mst, cohuck, mvaralar; +Cc: shahafs, Parav Pandit

virtio net driver sends the control virtqueue commands for
device configuration. Such driver configuration is currently
not captured in the device parts.

This series adds several of such device parts which represents
the network device specific configuration.

It is done by utilizing the existing device parts structure.
A new generic selector format is added to enable device type
specific device parts.

This series also reuses the existing control virtqueue command
structures, fields, and values to define the network device parts.

Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
Signed-off-by: Parav Pandit <parav@nvidia.com>
---
 device-types/net/description.tex | 90 ++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/device-types/net/description.tex b/device-types/net/description.tex
index e45ecbd..a5c6975 100644
--- a/device-types/net/description.tex
+++ b/device-types/net/description.tex
@@ -433,6 +433,96 @@ \subsection{Device resource objects}\label{sec:Device Types / Network Device / D
 \hline
 \end{tabularx}
 
+\subsection{Device parts}\label{sec:Device Types / Network Device / Device parts}
+
+Network device parts represent the configuration done by the driver using control
+virtqueue commands. Network device part is in the format of
+\field{struct virtio_dev_part}.
+
+\begin{tabularx}{\textwidth}{ |l||l|X| }
+\hline
+Type & Name & Description \\
+\hline \hline
+0x200 & VIRTIO_NET_DEV_PART_CVQ_CFG_PART & Represents device configuration done through a control virtqueue command, see \ref{sec:Device Types / Network Device / Device parts / VIRTIO-NET-DEV-PART-CVQ-CFG-PART} \\
+\hline
+0x201 - 0x5FF & - & reserved for future \\
+\hline
+\hline
+\end{tabularx}
+
+\subsubsection{VIRTIO_NET_DEV_PART_CVQ_CFG_PART}\label{sec:Device Types / Network Device / Device parts / VIRTIO-NET-DEV-PART-CVQ-CFG-PART}
+
+For VIRTIO_NET_DEV_PART_CVQ_CFG_PART, \field{part_type} is set to 0x200. The
+VIRTIO_NET_DEV_PART_CVQ_CFG_PART part indicates configuration performed by the
+driver using a control virtqueue command.
+
+\begin{lstlisting}
+struct virtio_net_dev_part_cvq_selector {
+        u8 class;
+        u8 command;
+        u8 reserved[6];
+};
+\end{lstlisting}
+
+There is one device part of type VIRTIO_NET_DEV_PART_CVQ_CFG_PART for each
+individual configuration. Each part is identified by a unique selector value.
+The selector, \field{device_type_raw}, is in the format
+\field{struct virtio_net_dev_part_cvq_selector}.
+
+The selector consists of two fields: \field{class} and \field{command}. These
+fields correspond to the \field{class} and \field{command} defined in
+\field{struct virtio_net_ctrl}, as described in the relevant sections of
+\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue}.
+
+The value corresponding to each part’s selector follows the same format as the
+respective \field{command-specific-data} described in the relevant sections of
+\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue}.
+
+For example, when the \field{class} is VIRTIO_NET_CTRL_MAC, the \field{command}
+can be either VIRTIO_NET_CTRL_MAC_TABLE_SET or VIRTIO_NET_CTRL_MAC_ADDR_SET;
+when \field{command} is set to VIRTIO_NET_CTRL_MAC_TABLE_SET, \field{value}
+is in the format of \field{struct virtio_net_ctrl_mac}.
+
+Supported selctors are listed in the table:
+
+\begin{tabularx}{\textwidth}{ |l|X| }
+\hline
+Class selector & Command selector \\
+\hline \hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_PROMISC \\
+\hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_ALLMULTI \\
+\hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_ALLUNI \\
+\hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOMULTI \\
+\hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOUNI \\
+\hline
+VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOBCAST \\
+\hline
+VIRTIO_NET_CTRL_MAC & VIRTIO_NET_CTRL_MAC_TABLE_SET \\
+\hline
+VIRTIO_NET_CTRL_MAC & VIRTIO_NET_CTRL_MAC_ADDR_SET \\
+\hline
+VIRTIO_NET_CTRL_VLAN & VIRTIO_NET_CTRL_VLAN_ADD \\
+\hline
+VIRTIO_NET_CTRL_ANNOUNCE & VIRTIO_NET_CTRL_ANNOUNCE_ACK \\
+\hline
+VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET \\
+\hline
+VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_RSS_CONFIG \\
+\hline
+VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_HASH_CONFIG \\
+\hline
+\hline
+\end{tabularx}
+
+For command selector VIRTIO_NET_CTRL_VLAN_ADD, device part consists of a whole
+VLAN table.
+
+\field{reserved} is reserved and set to zero.
+
 \subsection{Device Operation}\label{sec:Device Types / Network Device / Device Operation}
 
 Packets are transmitted by placing them in the
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] device-parts: editorial: Replace duplicated part type
  2024-10-18 13:17 ` [PATCH 1/3] device-parts: editorial: Replace duplicated part type Parav Pandit
@ 2024-10-18 15:57   ` Matias Ezequiel Vara Larsen
  0 siblings, 0 replies; 10+ messages in thread
From: Matias Ezequiel Vara Larsen @ 2024-10-18 15:57 UTC (permalink / raw)
  To: Parav Pandit; +Cc: virtio-comment, mst, cohuck, shahafs

On Fri, Oct 18, 2024 at 04:17:39PM +0300, Parav Pandit wrote:
> Device part type VIRTIO_DEV_PART_VQ_CFG was duplicated in
> the description; it is supposed to be VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
> Fix it.
> 
> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> Fixes: 617aa2d62a88 ("Signed-off-by: Parav Pandit <parav@nvidia.com>")
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> ---
>  device-parts.tex | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>

> 
> diff --git a/device-parts.tex b/device-parts.tex
> index 7197929..e59c0f9 100644
> --- a/device-parts.tex
> +++ b/device-parts.tex
> @@ -75,7 +75,7 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
>  
>  \field{selector.vq_index.index} is the index of the virtqueue. It is valid
>  only when the \field{part_type} is VIRTIO_DEV_PART_VQ_CFG or
> -VIRTIO_DEV_PART_VQ_CFG.
> +VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
>  
>  \subsection{Common device parts}\label{sec:Basic Facilities of a Virtio Device / Device parts / Common device parts}
>  
> -- 
> 2.34.1
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] device-parts: Add device type specific raw selector
  2024-10-18 13:17 ` [PATCH 2/3] device-parts: Add device type specific raw selector Parav Pandit
@ 2024-10-18 16:13   ` Matias Ezequiel Vara Larsen
  2024-10-18 16:52     ` Parav Pandit
  0 siblings, 1 reply; 10+ messages in thread
From: Matias Ezequiel Vara Larsen @ 2024-10-18 16:13 UTC (permalink / raw)
  To: Parav Pandit; +Cc: virtio-comment, mst, cohuck, shahafs

On Fri, Oct 18, 2024 at 04:17:40PM +0300, Parav Pandit wrote:
> The subsequent patch defines the device-type-specific parts. For
> these parts, the raw selector format is defined to ensure that
> each device type can specify its format accurately.
> 
> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> ---
>  device-parts.tex | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/device-parts.tex b/device-parts.tex
> index e59c0f9..ee743c2 100644
> --- a/device-parts.tex
> +++ b/device-parts.tex
> @@ -21,6 +21,7 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
>                          le16 index;
>                          u8 reserved[6];
>                  } vq_index;
> +		u8 device_type_raw[8];
>          } selector;
>          le32 length;
>  };
> @@ -77,6 +78,9 @@ \section{Device parts}\label{sec:Basic Facilities of a Virtio Device / Device pa
>  only when the \field{part_type} is VIRTIO_DEV_PART_VQ_CFG or
>  VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
>  
> +\field{selector.device_type_raw} is only used when a device-specific part is
> +utilized, with \field{part_type} ranging from 0x0200 to 0x05FF.

Why is important here to mention the range of `part_type`?

Matias


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] virtio-net: Define cvq configuration related device parts
  2024-10-18 13:17 ` [PATCH 3/3] virtio-net: Define cvq configuration related device parts Parav Pandit
@ 2024-10-18 16:24   ` Matias Ezequiel Vara Larsen
  2024-10-18 16:54     ` Parav Pandit
  0 siblings, 1 reply; 10+ messages in thread
From: Matias Ezequiel Vara Larsen @ 2024-10-18 16:24 UTC (permalink / raw)
  To: Parav Pandit; +Cc: virtio-comment, mst, cohuck, shahafs

On Fri, Oct 18, 2024 at 04:17:41PM +0300, Parav Pandit wrote:
> virtio net driver sends the control virtqueue commands for
> device configuration. Such driver configuration is currently
> not captured in the device parts.
> 
> This series adds several of such device parts which represents
> the network device specific configuration.
> 
> It is done by utilizing the existing device parts structure.
> A new generic selector format is added to enable device type
> specific device parts.
> 
> This series also reuses the existing control virtqueue command
> structures, fields, and values to define the network device parts.
> 
> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> ---
>  device-types/net/description.tex | 90 ++++++++++++++++++++++++++++++++
>  1 file changed, 90 insertions(+)
> 
> diff --git a/device-types/net/description.tex b/device-types/net/description.tex
> index e45ecbd..a5c6975 100644
> --- a/device-types/net/description.tex
> +++ b/device-types/net/description.tex
> @@ -433,6 +433,96 @@ \subsection{Device resource objects}\label{sec:Device Types / Network Device / D
>  \hline
>  \end{tabularx}
>  
> +\subsection{Device parts}\label{sec:Device Types / Network Device / Device parts}
> +
> +Network device parts represent the configuration done by the driver using control
> +virtqueue commands. Network device part is in the format of
> +\field{struct virtio_dev_part}.
> +
> +\begin{tabularx}{\textwidth}{ |l||l|X| }
> +\hline
> +Type & Name & Description \\
> +\hline \hline
> +0x200 & VIRTIO_NET_DEV_PART_CVQ_CFG_PART & Represents device configuration done through a control virtqueue command, see \ref{sec:Device Types / Network Device / Device parts / VIRTIO-NET-DEV-PART-CVQ-CFG-PART} \\
> +\hline
> +0x201 - 0x5FF & - & reserved for future \\
> +\hline
> +\hline
> +\end{tabularx}
> +
> +\subsubsection{VIRTIO_NET_DEV_PART_CVQ_CFG_PART}\label{sec:Device Types / Network Device / Device parts / VIRTIO-NET-DEV-PART-CVQ-CFG-PART}
> +
> +For VIRTIO_NET_DEV_PART_CVQ_CFG_PART, \field{part_type} is set to 0x200. The
> +VIRTIO_NET_DEV_PART_CVQ_CFG_PART part indicates configuration performed by the
> +driver using a control virtqueue command.
> +
> +\begin{lstlisting}
> +struct virtio_net_dev_part_cvq_selector {
> +        u8 class;
> +        u8 command;
> +        u8 reserved[6];
> +};
> +\end{lstlisting}
> +
> +There is one device part of type VIRTIO_NET_DEV_PART_CVQ_CFG_PART for each
> +individual configuration. Each part is identified by a unique selector value.
> +The selector, \field{device_type_raw}, is in the format
> +\field{struct virtio_net_dev_part_cvq_selector}.
> +
> +The selector consists of two fields: \field{class} and \field{command}. These
> +fields correspond to the \field{class} and \field{command} defined in
> +\field{struct virtio_net_ctrl}, as described in the relevant sections of
> +\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue}.
> +
> +The value corresponding to each part’s selector follows the same format as the
> +respective \field{command-specific-data} described in the relevant sections of
> +\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue}.
> +
> +For example, when the \field{class} is VIRTIO_NET_CTRL_MAC, the \field{command}
> +can be either VIRTIO_NET_CTRL_MAC_TABLE_SET or VIRTIO_NET_CTRL_MAC_ADDR_SET;
> +when \field{command} is set to VIRTIO_NET_CTRL_MAC_TABLE_SET, \field{value}
> +is in the format of \field{struct virtio_net_ctrl_mac}.
> +
> +Supported selctors are listed in the table:

s/selctors/selectors

> +
> +\begin{tabularx}{\textwidth}{ |l|X| }
> +\hline
> +Class selector & Command selector \\
> +\hline \hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_PROMISC \\
> +\hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_ALLMULTI \\
> +\hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_ALLUNI \\
> +\hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOMULTI \\
> +\hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOUNI \\
> +\hline
> +VIRTIO_NET_CTRL_RX & VIRTIO_NET_CTRL_RX_NOBCAST \\
> +\hline
> +VIRTIO_NET_CTRL_MAC & VIRTIO_NET_CTRL_MAC_TABLE_SET \\
> +\hline
> +VIRTIO_NET_CTRL_MAC & VIRTIO_NET_CTRL_MAC_ADDR_SET \\
> +\hline
> +VIRTIO_NET_CTRL_VLAN & VIRTIO_NET_CTRL_VLAN_ADD \\
> +\hline
> +VIRTIO_NET_CTRL_ANNOUNCE & VIRTIO_NET_CTRL_ANNOUNCE_ACK \\
> +\hline
> +VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET \\
> +\hline
> +VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_RSS_CONFIG \\
> +\hline
> +VIRTIO_NET_CTRL_MQ & VIRTIO_NET_CTRL_MQ_HASH_CONFIG \\
> +\hline
> +\hline
> +\end{tabularx}
> +
> +For command selector VIRTIO_NET_CTRL_VLAN_ADD, device part consists of a whole
> +VLAN table.
> +
> +\field{reserved} is reserved and set to zero.
> +
>  \subsection{Device Operation}\label{sec:Device Types / Network Device / Device Operation}
>  
>  Packets are transmitted by placing them in the
> -- 
> 2.34.1
> 

Reviewed-by: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 2/3] device-parts: Add device type specific raw selector
  2024-10-18 16:13   ` Matias Ezequiel Vara Larsen
@ 2024-10-18 16:52     ` Parav Pandit
  2024-10-21 17:58       ` Matias Ezequiel Vara Larsen
  0 siblings, 1 reply; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 16:52 UTC (permalink / raw)
  To: Matias Ezequiel Vara Larsen
  Cc: virtio-comment@lists.linux.dev, mst@redhat.com, cohuck@redhat.com,
	Shahaf Shuler



> From: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>
> Sent: Friday, October 18, 2024 9:43 PM
> 
> On Fri, Oct 18, 2024 at 04:17:40PM +0300, Parav Pandit wrote:
> > The subsequent patch defines the device-type-specific parts. For these
> > parts, the raw selector format is defined to ensure that each device
> > type can specify its format accurately.
> >
> > Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> > Signed-off-by: Parav Pandit <parav@nvidia.com>
> > ---
> >  device-parts.tex | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/device-parts.tex b/device-parts.tex index
> > e59c0f9..ee743c2 100644
> > --- a/device-parts.tex
> > +++ b/device-parts.tex
> > @@ -21,6 +21,7 @@ \section{Device parts}\label{sec:Basic Facilities of a
> Virtio Device / Device pa
> >                          le16 index;
> >                          u8 reserved[6];
> >                  } vq_index;
> > +		u8 device_type_raw[8];
> >          } selector;
> >          le32 length;
> >  };
> > @@ -77,6 +78,9 @@ \section{Device parts}\label{sec:Basic Facilities of
> > a Virtio Device / Device pa  only when the \field{part_type} is
> > VIRTIO_DEV_PART_VQ_CFG or  VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
> >
> > +\field{selector.device_type_raw} is only used when a device-specific
> > +part is utilized, with \field{part_type} ranging from 0x0200 to 0x05FF.
> 
> Why is important here to mention the range of `part_type`?
>
Not a lot.
If the rest of the text about device specific part... is clear enough than we can drop mentioning the range.
 
> Matias


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 3/3] virtio-net: Define cvq configuration related device parts
  2024-10-18 16:24   ` Matias Ezequiel Vara Larsen
@ 2024-10-18 16:54     ` Parav Pandit
  0 siblings, 0 replies; 10+ messages in thread
From: Parav Pandit @ 2024-10-18 16:54 UTC (permalink / raw)
  To: Matias Ezequiel Vara Larsen
  Cc: virtio-comment@lists.linux.dev, mst@redhat.com, cohuck@redhat.com,
	Shahaf Shuler



> From: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>
> Sent: Friday, October 18, 2024 9:55 PM
> 
> On Fri, Oct 18, 2024 at 04:17:41PM +0300, Parav Pandit wrote:
> > virtio net driver sends the control virtqueue commands for device
> > configuration. Such driver configuration is currently not captured in
> > the device parts.
> >
> > This series adds several of such device parts which represents the
> > network device specific configuration.
> >
> > It is done by utilizing the existing device parts structure.
> > A new generic selector format is added to enable device type specific
> > device parts.
> >
> > This series also reuses the existing control virtqueue command
> > structures, fields, and values to define the network device parts.
> >
> > Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> > Signed-off-by: Parav Pandit <parav@nvidia.com>
> > ---
> >  device-types/net/description.tex | 90
> > ++++++++++++++++++++++++++++++++
> >  1 file changed, 90 insertions(+)
> >
> > diff --git a/device-types/net/description.tex
> > b/device-types/net/description.tex
> > index e45ecbd..a5c6975 100644
> > --- a/device-types/net/description.tex
> > +++ b/device-types/net/description.tex
> > @@ -433,6 +433,96 @@ \subsection{Device resource
> > objects}\label{sec:Device Types / Network Device / D  \hline
> > \end{tabularx}
> >
> > +\subsection{Device parts}\label{sec:Device Types / Network Device /
> > +Device parts}
> > +
> > +Network device parts represent the configuration done by the driver
> > +using control virtqueue commands. Network device part is in the
> > +format of \field{struct virtio_dev_part}.
> > +
> > +\begin{tabularx}{\textwidth}{ |l||l|X| } \hline Type & Name &
> > +Description \\ \hline \hline
> > +0x200 & VIRTIO_NET_DEV_PART_CVQ_CFG_PART & Represents device
> > +configuration done through a control virtqueue command, see
> > +\ref{sec:Device Types / Network Device / Device parts /
> > +VIRTIO-NET-DEV-PART-CVQ-CFG-PART} \\ \hline
> > +0x201 - 0x5FF & - & reserved for future \\ \hline \hline
> > +\end{tabularx}
> > +
> >
> +\subsubsection{VIRTIO_NET_DEV_PART_CVQ_CFG_PART}\label{sec:Device
> > +Types / Network Device / Device parts /
> > +VIRTIO-NET-DEV-PART-CVQ-CFG-PART}
> > +
> > +For VIRTIO_NET_DEV_PART_CVQ_CFG_PART, \field{part_type} is set to
> > +0x200. The VIRTIO_NET_DEV_PART_CVQ_CFG_PART part indicates
> > +configuration performed by the driver using a control virtqueue
> command.
> > +
> > +\begin{lstlisting}
> > +struct virtio_net_dev_part_cvq_selector {
> > +        u8 class;
> > +        u8 command;
> > +        u8 reserved[6];
> > +};
> > +\end{lstlisting}
> > +
> > +There is one device part of type VIRTIO_NET_DEV_PART_CVQ_CFG_PART
> for
> > +each individual configuration. Each part is identified by a unique selector
> value.
> > +The selector, \field{device_type_raw}, is in the format \field{struct
> > +virtio_net_dev_part_cvq_selector}.
> > +
> > +The selector consists of two fields: \field{class} and
> > +\field{command}. These fields correspond to the \field{class} and
> > +\field{command} defined in \field{struct virtio_net_ctrl}, as
> > +described in the relevant sections of \ref{sec:Device Types / Network
> Device / Device Operation / Control Virtqueue}.
> > +
> > +The value corresponding to each part’s selector follows the same
> > +format as the respective \field{command-specific-data} described in
> > +the relevant sections of \ref{sec:Device Types / Network Device / Device
> Operation / Control Virtqueue}.
> > +
> > +For example, when the \field{class} is VIRTIO_NET_CTRL_MAC, the
> > +\field{command} can be either VIRTIO_NET_CTRL_MAC_TABLE_SET or
> > +VIRTIO_NET_CTRL_MAC_ADDR_SET; when \field{command} is set to
> > +VIRTIO_NET_CTRL_MAC_TABLE_SET, \field{value} is in the format of
> \field{struct virtio_net_ctrl_mac}.
> > +
> > +Supported selctors are listed in the table:
> 
> s/selctors/selectors
>
I ran codespell tool but pity it didn’t catch this.
Need to look for another one.
Will fix this.
 
> > +
> > +\begin{tabularx}{\textwidth}{ |l|X| } \hline Class selector & Command
> > +selector \\ \hline \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_PROMISC \\ \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_ALLMULTI \\ \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_ALLUNI \\ \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_NOMULTI \\ \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_NOUNI \\ \hline VIRTIO_NET_CTRL_RX &
> > +VIRTIO_NET_CTRL_RX_NOBCAST \\ \hline VIRTIO_NET_CTRL_MAC &
> > +VIRTIO_NET_CTRL_MAC_TABLE_SET \\ \hline VIRTIO_NET_CTRL_MAC &
> > +VIRTIO_NET_CTRL_MAC_ADDR_SET \\ \hline VIRTIO_NET_CTRL_VLAN &
> > +VIRTIO_NET_CTRL_VLAN_ADD \\ \hline VIRTIO_NET_CTRL_ANNOUNCE &
> > +VIRTIO_NET_CTRL_ANNOUNCE_ACK \\ \hline VIRTIO_NET_CTRL_MQ &
> > +VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET \\ \hline VIRTIO_NET_CTRL_MQ &
> > +VIRTIO_NET_CTRL_MQ_RSS_CONFIG \\ \hline VIRTIO_NET_CTRL_MQ &
> > +VIRTIO_NET_CTRL_MQ_HASH_CONFIG \\ \hline \hline \end{tabularx}
> > +
> > +For command selector VIRTIO_NET_CTRL_VLAN_ADD, device part consists
> > +of a whole VLAN table.
> > +
> > +\field{reserved} is reserved and set to zero.
> > +
> >  \subsection{Device Operation}\label{sec:Device Types / Network Device
> > / Device Operation}
> >
> >  Packets are transmitted by placing them in the
> > --
> > 2.34.1
> >
> 
> Reviewed-by: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>

Thanks.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] device-parts: Add device type specific raw selector
  2024-10-18 16:52     ` Parav Pandit
@ 2024-10-21 17:58       ` Matias Ezequiel Vara Larsen
  0 siblings, 0 replies; 10+ messages in thread
From: Matias Ezequiel Vara Larsen @ 2024-10-21 17:58 UTC (permalink / raw)
  To: Parav Pandit
  Cc: virtio-comment@lists.linux.dev, mst@redhat.com, cohuck@redhat.com,
	Shahaf Shuler

On Fri, Oct 18, 2024 at 04:52:31PM +0000, Parav Pandit wrote:
> 
> 
> > From: Matias Ezequiel Vara Larsen <mvaralar@redhat.com>
> > Sent: Friday, October 18, 2024 9:43 PM
> > 
> > On Fri, Oct 18, 2024 at 04:17:40PM +0300, Parav Pandit wrote:
> > > The subsequent patch defines the device-type-specific parts. For these
> > > parts, the raw selector format is defined to ensure that each device
> > > type can specify its format accurately.
> > >
> > > Fixes: https://github.com/oasis-tcs/virtio-spec/issues/209
> > > Signed-off-by: Parav Pandit <parav@nvidia.com>
> > > ---
> > >  device-parts.tex | 4 ++++
> > >  1 file changed, 4 insertions(+)
> > >
> > > diff --git a/device-parts.tex b/device-parts.tex index
> > > e59c0f9..ee743c2 100644
> > > --- a/device-parts.tex
> > > +++ b/device-parts.tex
> > > @@ -21,6 +21,7 @@ \section{Device parts}\label{sec:Basic Facilities of a
> > Virtio Device / Device pa
> > >                          le16 index;
> > >                          u8 reserved[6];
> > >                  } vq_index;
> > > +		u8 device_type_raw[8];
> > >          } selector;
> > >          le32 length;
> > >  };
> > > @@ -77,6 +78,9 @@ \section{Device parts}\label{sec:Basic Facilities of
> > > a Virtio Device / Device pa  only when the \field{part_type} is
> > > VIRTIO_DEV_PART_VQ_CFG or  VIRTIO_DEV_PART_VQ_NOTIFY_CFG.
> > >
> > > +\field{selector.device_type_raw} is only used when a device-specific
> > > +part is utilized, with \field{part_type} ranging from 0x0200 to 0x05FF.
> > 
> > Why is important here to mention the range of `part_type`?
> >
> Not a lot.
> If the rest of the text about device specific part... is clear enough than we can drop mentioning the range.
>  
Thanks, I just asked because I though I was missing something.

Matias


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-10-21 17:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-18 13:17 [PATCH 0/3] virtio-net: Define cvq configuration related device parts Parav Pandit
2024-10-18 13:17 ` [PATCH 1/3] device-parts: editorial: Replace duplicated part type Parav Pandit
2024-10-18 15:57   ` Matias Ezequiel Vara Larsen
2024-10-18 13:17 ` [PATCH 2/3] device-parts: Add device type specific raw selector Parav Pandit
2024-10-18 16:13   ` Matias Ezequiel Vara Larsen
2024-10-18 16:52     ` Parav Pandit
2024-10-21 17:58       ` Matias Ezequiel Vara Larsen
2024-10-18 13:17 ` [PATCH 3/3] virtio-net: Define cvq configuration related device parts Parav Pandit
2024-10-18 16:24   ` Matias Ezequiel Vara Larsen
2024-10-18 16:54     ` Parav Pandit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox