[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]