OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [EXT] [PATCH v3 2/6] virtio-net: Add flow filter capabilities read commands


Hi Parav

> -----Original Message-----
> From: Parav Pandit <parav@nvidia.com>
> Sent: Friday, October 27, 2023 6:23 AM
> To: virtio-comment@lists.oasis-open.org; mst@redhat.com;
> cohuck@redhat.com
> Cc: Satananda Burla <sburla@marvell.com>; shahafs@nvidia.com; si-
> wei.liu@oracle.com; xuanzhuo@linux.alibaba.com; Parav Pandit
> <parav@nvidia.com>; Heng Qi <hengqi@linux.alibaba.com>
> Subject: [EXT] [PATCH v3 2/6] virtio-net: Add flow filter capabilities
> read commands
> 
> External Email
> 
> ----------------------------------------------------------------------
> The device responds flow filter capabilities using two commands.
> One command indicates generic flow filter device limits such as
> number of flow filters, number of flow filter groups, support or
> multiple transports etc.
> 
> The second command indicates supported match types, and fields
> of the packet.
> 
> Fixes: https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__github.com_oasis-2Dtcs_virtio-
> 2Dspec_issues_179&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=NHDPsfcAYlN2z-
> NXHHG4WB09qqS0voo_nf6_kGS625A&m=GknvLw2Qpf9nPonjhWw3_Lc5eykfVdDRg1fga_EJ
> CtMR5FPF3CjtDKJYjCUT1tvU&s=XW811-B24-
> DCa7KJgZdBUlXx9LYmZMzfByaCAlChmi8&e=
> Signed-off-by: Heng Qi <hengqi@linux.alibaba.com>
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> 
> ---
> changelog:
> v1->v2:
> - addressed comments from Satananda
> - added vlan type match field
> - kept space for types between l2, l3, l4 header match types
> - renamed mask to mask_supported with shorter width
> - made more fields reserved for furture
> - addressed comments from Heng
> - grammar correction
> - added field to indicate supported number of actions per flow
>   filter match entry
> - added missing documentation for max_flow_priorities_per_group
> v0->v1:
> - added mask field in the type to indicate supported mask by device
>   and also in later patch to use it to indicate mask on adding
>   flow filter. As a result removed the mask_supported capability
>   field
> ---
>  device-types/net/description.tex | 220 ++++++++++++++++++++++++++++++-
>  1 file changed, 218 insertions(+), 2 deletions(-)
> 
> diff --git a/device-types/net/description.tex b/device-
> types/net/description.tex
> index fc56af6..2aba5d0 100644
> --- a/device-types/net/description.tex
> +++ b/device-types/net/description.tex
> @@ -1173,7 +1173,11 @@ \subsubsection{Flow Filter}\label{sec:Device
> Types / Network Device / Device Ope
>  The device indicates the flow filter capabilities to the driver. These
>  capabilities include various maximum device limits, supported
> transports and
>  supported packet match fields. The driver enables the transport for
> flow
> -filter requests using a control virtqueue command.
> +filter requests using a control virtqueue command. These control
> virtqueue
> +commands are:
> +\ref{sec:Device Types / Network Device / Device Operation / Control
> Virtqueue / Flow Filter / Flow Filter Capabilities Get}
> +and
> +\ref{sec:Device Types / Network Device / Device Operation / Control
> Virtqueue / Flow Filter / Flow Filter Match Capabilities Get}.
> 
>  The device supports transporting flow filter requests on either the
> control
>  virtqueue or on the flow filter virtqueues or on both. However, device
> @@ -1181,6 +1185,8 @@ \subsubsection{Flow Filter}\label{sec:Device Types
> / Network Device / Device Ope
>  at a time, i.e. either control virtqueue or flow filter virtqueues.
>  Once the driver sets the flow filter request transport in the device,
>  the driver can send flow filter request using the enabled transport.
> +The driver enables the transport for flow filter requests using a
> control
> +virtqueue command.
> 
>  The flow filters are grouped using a flow filter group. Each flow
> filter
>  group has a priority. The device first applies the flow filters of the
> highest
> @@ -1247,7 +1253,136 @@ \subsubsection{Flow Filter}\label{sec:Device
> Types / Network Device / Device Ope
>        the flow filters in group_C, the flow filters of next level
> group_B are applied.
>  \end{itemize}
> 
> -\label{sec:Device Types / Network Device / Device Operation / Control
> Virtqueue / Setting Promiscuous Mode}%old label for latexdiff
> +\paragraph{Match Types and Fields}\label{sec:Device Types / Network
> Device / Device Operation / Flow Filter / Match Types and Fields}
> +
> +\begin{lstlisting}
> +struct virtio_net_ff_match_type_cap {
> +        le16 type;
> +        u8 mask_supported;
> +        u8 reserved[5];
> +        le64 fields_bmap;
> +};
> +\end{lstlisting}
> +
> +The \field{type} corresponds to following table:
> +
> +\begin{tabular}{|l|l|l|}
> +\hline
> +Type & Name & Description \\
> +\hline \hline
> +0   & VIRTIO_NET_FF_ETH_HDR & Ethernet header of the packet \\
> +\hline
> +0x1   & VIRTIO_NET_FF_VLAN_TAG_HDR & VLAN tag of the packet \\
> +\hline
> +0x200   & VIRTIO_NET_FF_IPV4_HDR & IPv4 header of the packet \\
This leaves 256 types for L2 and VLAN, do we really need
so many L2 types ?
> +\hline
> +0x300   & VIRTIO_NET_FF_IPV6_HDR & IPv6 header of the packet \\
> +\hline
Can we leave a few bits (4) for L3 headers and start L4 after?
Specifically for IPV6 we may need extension header bits matching in
future. (SPI in ESP extension header for instance). 
> +0x400   & VIRTIO_NET_FF_TCP_HDR & TCP header of the packet \\
> +\hline
> +0x500   & VIRTIO_NET_FF_UDP_HDR & UDP header of the packet \\
 
Regards
Satananda


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]