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: [virtio-dev] [PATCH v4] virtio-spec: Introduce new Receive-Segment-Coalescing feature for guest


Changelog:
v3->v4
-- Remove maximum packets size section.
-- Remove useless 'rsc_size' field after checked out the microsoft whql spec again.

v2->v3:
-- Revise flag definition for RSC4/6 to start from 5, add a 'RESERVED'
definition for already used number '2' which stands for historical
meaning of 'VIRTIO_NET_HDR_GSO_TCPV4_ECN'.
-- Add prefix 'rsc_' to new fields in virtio_net_hdr.
-- Drop wrong legacy part.
-- Revise maximum payload size for coalesced packets, also revise max
ip payload from 65536 to 65535 for TSO4/6/UFO.
-- Add default value of new fields member as zero for original packets.
-- Drop redundant hint in 'hdr_len' for RSC header size, both
send/receive should use the same header after the feature was
acknowledged.

v1->v2:
Feature 22 should not be used by device, replacing it with 41 and 42 for
VIRTIO_NET_GUEST_RSC4 and VIRTIO_NET_GUEST_RSC6.
Index: content.tex
===================================================================
--- content.tex	(revision 569)
+++ content.tex	(working copy)
@@ -3086,6 +3086,11 @@

 \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control
     channel.
+
+\item[VIRTIO_NET_F_GUEST_RSC4 (41)] Driver can receive coalesced IPv4 tcp packets.
+
+\item[VIRTIO_NET_F_GUEST_RSC6 (42)] Driver can receive coalesced IPv6 tcp packets.
+
 \end{description}

\subsubsection{Feature bit requirements}\label{sec:Device Types / Network Device / Feature bits / Feature bit requirements}
@@ -3247,8 +3252,12 @@
         u8 flags;
 #define VIRTIO_NET_HDR_GSO_NONE        0
 #define VIRTIO_NET_HDR_GSO_TCPV4       1
+#define VIRTIO_NET_HDR_RESERVED        2
 #define VIRTIO_NET_HDR_GSO_UDP         3
 #define VIRTIO_NET_HDR_GSO_TCPV6       4
+#define VIRTIO_NET_HDR_RSC_NONE        5
+#define VIRTIO_NET_HDR_RSC_TCPV4       6
+#define VIRTIO_NET_HDR_RSC_TCPV6       7
 #define VIRTIO_NET_HDR_GSO_ECN      0x80
         u8 gso_type;
         le16 hdr_len;
@@ -3256,6 +3265,8 @@
         le16 csum_start;
         le16 csum_offset;
         le16 num_buffers;
+        le16 rsc_pkts;
+        le16 rsc_dup_acks;
 };
 \end{lstlisting}

@@ -3514,6 +3525,19 @@
   set: if so, device has validated the packet checksum.
   In case of multiple encapsulated protocols, one level of checksums
   has been validated.
+
+\item If one or both VIRTIO_NET_F_GUEST_RSC4, RSC6 were negotiated,
+  but it is an original packet which didn't coalesce any packet,
+  then the \field{flags} should be set to VIRTIO_NET_HDR_RSC_NONE.
+
+\item If one or both VIRTIO_NET_F_GUEST_RSC4, RSC6 options were negotiated,
+  and \field{flags} is either RSC4 or RSC6, then \field{rsc_pkts} indicates
+ how many packets are coalesced into this packet, otherwise it should be zero.
+
+\item If one or both VIRTIO_NET_F_GUEST_RSC4, RSC6 options were negotiated,
+ and \field{flags} is either RSC4 or RSC6, then \field{rsc_dup_acks} indicates
+  how many duplicated ack packets are coalesced into this packet, otherwise
+  it should be zero.
 \end{enumerate}

 Additionally, VIRTIO_NET_F_GUEST_CSUM, TSO4, TSO6, UDP and ECN



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