virtio — archive
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
— [Date Index]
| [Thread Index]
| [Month Index]
| [List Home]
[PATCH requirements 0/7] virtio net new features requirements
On Fri, Jun 02, 2023 at 01:03:00AM +0300, Parav Pandit wrote:
> Add requirements for the low latency transmit queue.
>
> Signed-off-by: Parav Pandit <[email protected]>
> ---
> net-workstream/features-1.4.md | 73 ++++++++++++++++++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/net-workstream/features-1.4.md b/net-workstream/features-1.4.md
> index 03b4eb3..55f1b1f 100644
> --- a/net-workstream/features-1.4.md
> +++ b/net-workstream/features-1.4.md
> @@ -7,6 +7,7 @@ together is desired while updating the virtio net interface.
>
> # 2. Summary
> 1. Device counters visible to the driver
> +2. Low latency tx virtqueue for PCI transport
>
> # 3. Requirements
> ## 3.1 Device counters
> @@ -34,3 +35,75 @@ together is desired while updating the virtio net interface.
>
descriptors
> 2. le64 tx_gso_pkts: Packets send as host GSO sequence
> 3. le64 tx_pkts: Total packets send by the device
> +
> +## 3.2 Low PCI latency virtqueues
> +### 3.2.1 Low PCI latency tx virtqueue
> +1. Packet transmit descriptor should contain data descriptors count without any
> +
indirection and without any O(N) search to find the end of a packet stream.
> +
For example, a packet transmit descriptor (called vnet_tx_hdr_desc
> +
subsequently) to contain a field num_next_desc for the packet stream
> +
indicating that a packet is located N data descriptors.
> +
> +2. Packet transmit descriptor should contain segmentation offload-related fields
> +
without any indirection. For example, packet transmit descriptor to contain
> +
gso_type, gso_size/mss, header length, csum placement byte offset, and
> +
csum start.
> +
> +3. Packet transmit descriptor should be able to place a small size packet that
> +
does not have any L4 data after the vnet_tx_hdr_desc in the virtqueue memory.
> +
For example a TCP ack only packet can fit in a descriptor memory which
> +
otherwise consume more than 25% of metadata to describe the packet.
For IPv6? With all the crazy options? Are you sure?
> +
> +4. Packet transmit descriptor should be able to place a full GSO header (L2 to
> +
L4) after header descriptor and before data descriptors. For example, the
> +
GSO header is placed after struct vnet_tx_hdr_desc in the virtqueue memory.
> +
When such a GSO header is positioned adjacent to the packet transmit
> +
descriptor, and when the GSO header is not aligned to 16B, the following
> +
data descriptor to start on the 8B aligned boundary.
> +
These alignments are weirdly specific.
Are these achievable with existing VQ designs? If not this specific part
is not going to be a network specific thing. which is ok but maybe
mention this.
> +5. An example of the above requirements at high level is:
> +
> +```
> +struct vitio_packed_q_desc {
> +
/* current desc for reference */
> +
u64 address;
> +
u32 len;
> +
u16 id;
> +
u16 flags;
> +};
> +
> +/* Constant size header descriptor for tx packets */
> +struct vnet_tx_hdr_desc {
> +
u16 flags; /* indicate how to parse next fields */
> +
u16 id; /* desc id to come back in completion */
> +
u8 num_next_desc; /* indicates the number of the next 16B data desc for this
> +
* buffer.
> +
*/
> +
u8 gso_type;
> +
le16 gso_hdr_len;
> +
le16 gso_size;
> +
le16 csum_start;
> +
le16 csum_offset;
> +
u8 inline_pkt_len; /* indicates the length of the inline packet after this
> +
* desc
> +
*/
> +
u8 reserved;
> +
u8 padding[];
> +};
> +
> +/* Example of a short packet or GSO header placed in the desc section of the vq
> + */
> +struct vnet_tx_small_pkt_desc {
> +
u8 raw_pkt[128];
> +};
> +
> +/* Example of header followed by data descriptor */
> +struct vnet_tx_hdr_desc hdr_desc;
> +struct vnet_data_desc desc[2];
> +
> +```
Seems to assume huge descriptors, apparently of variable size.
Are fixed size descriptors valuable?
> +6. Ability to zero pad the transmit completion when the transmit completion is
> + shorter than the CPU cache line size.
> +
> +7. Ability to place all transmit completion together with it per packet stream
> +
transmit timestamp using single PCIe transcation.
I can't decipher the last two ones. Part of it is using non virtio
terminology, part referring to PCI/CPU unnecessarily, part
weird grammar.
> --
> 2.26.2
>
>
> This publicly archived list offers a means to provide input to the
> OASIS Virtual I/O Device (VIRTIO)
TC.
>
> In order to verify user consent to the Feedback License terms and
> to minimize spam in the list archive, subscription is required
> before posting.
>
> Subscribe: [email protected]
> Unsubscribe: [email protected]
> List help: [email protected]
> List archive: https://lists.oasis-open.org/archives/virtio-comment/
> Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
> List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
> Committee: https://www.oasis-open.org/committees/virtio/
> Join OASIS: https://www.oasis-open.org/join/
>
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
— [Date Index]
| [Thread Index]
| [Month Index]
| [List Home]