Make 'Source' use external rx_buffer_freelist

Packet size can be passed as :new argument - defaults to 60.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
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>
Make API modules global.

Renamed 'app' to 'engine' in the global table.
Rename 'snabbswitch' command to 'snabb'.

Short and sweet!

Adds a 'make install' target to install as /usr/local/bin/snabb.

snabbswitch/src/snabbswitch is created as a symlink for compatibility.
New hashbang-friendly (#!) command-line syntax.

The command-line syntax is now:

    snabb [options] <script> [args...]

where <script> is the path to a Lua script.

This is compatible with #! scripts. For example:

  #!/usr/bin/env snabb
  c = config.new()
  config.app(c, ...)
  config.link(a, ...)
  ...
  engine.main(c)
snabb: Added -P <pathspec> argument.

This is used to set the Lua package.path variable i.e. to specify
paths on the filesystem where Lua code can be automatically found by
require().

For example, to pick up modules in /usr/lib/snabb/ you would use:

  snabb -P '/usr/lib/snabb/?.lua' ...

The default value for package.path is now '' so that no modules are
picked up by accident.
Removed old unused files from scripts/
loadgen: Now an executable Unix script.

(Used to be a Lua module compiled into snabbswitch.)
Removed obsolete designs/ subdirectories.
loadgen/README: Updated for new './loadgen' script syntax.