packet - add packet_size

This saves some processing at runtime.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Added designs.nfv.nfv.

This is currently a simple application that connects one vhost_user
interface with one intel10g interface.

Fixes in the original version - pci, rx/tx naming, update to latest
intel args passing.

Signed-off-by: Luke Gorrie <luke@snabb.co>
Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Align to latest vhost-user-v9

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Decouple form intel10g

For the selftest we'll use a non-HW dependent setup:

vhost -> tee -> sink

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Fix process_qemu_requests when QEMU goes down

vhost_user_receive will return 0 when the other end closed
the socket. In such case shut vhost_user operation.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Lower the rate of qemu process polling

Once vhost_user is UP it will have almos no communication so no
need to process it that often. Add a counter and use it to lower
the syscalls.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
vhost_user add link_down_proc

Add a callback to execute when the other end shuts.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
vhost_user set_vring_addr

used and avail will be pointers

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Enhance virtio.h with more feature bits

These are not used now - but may be usefull in the future. Enumerate them
now for completeness.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Extract the virtio-net device code into a separate module

No features are supported in this implementation
This will result in having the following descriptor layout for both RX/TX:

 - virtio_header
 - data buffer

The buffer origin struct is extended to include the information needed
to access the virtio header.

no-IOMMU - translate all virtual addesses to physical

NOTE: This is slow! Using pread for each packet ...

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
[virtio] Enable CSUM feature and handle multibuffers

The VIRTIO_NET_F_CSUM feature enables also scatter gather I/O
in the current Linux virtio-net driver TX path.

Here we enable this feature and hanle the RX multibuffer packets.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>