Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One IO app to rule them all #1043

Closed
wants to merge 26 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e758971
rewrite pci.c in lua, support both flocked and unflocked memory maps
petebristow Apr 16, 2016
e120a99
fix build issues
petebristow Apr 18, 2016
27e4516
move intel1g driver to a new home
petebristow Apr 26, 2016
8788f96
Merge remote-tracking branch 'github/register_bits_bytes' into intel
petebristow Apr 26, 2016
70feb97
Merge remote-tracking branch 'github/races' into intel
petebristow Apr 26, 2016
53a940f
Merge remote-tracking branch 'github/map_pci_memory' into intel
petebristow Apr 26, 2016
8a9bdb2
Merge remote-tracking branch 'github/delayed_start' into intel
petebristow Apr 26, 2016
cdee3fc
rejig intel1g to support multiprocess RSS queues
petebristow Apr 26, 2016
d6b18fb
fix i350 support
petebristow Apr 26, 2016
9f04635
fix typo in variable names in close_pci_resource
petebristow Apr 27, 2016
384e445
add speed tests to intel1g
petebristow May 2, 2016
689c2d1
move to 3 space indents
petebristow May 20, 2016
04d2845
Better tests that reliably pass, minor layout changes
petebristow May 28, 2016
4bf42b2
modularise register definitions to support intel 82599
petebristow Jun 3, 2016
aedf75c
split out some reusable functions
petebristow Jun 3, 2016
39b3fba
working RSS support
petebristow Jun 8, 2016
5f17ea1
rename from intel1g to intel_mp
petebristow Jun 15, 2016
c2b60ab
Replace all the tests and make them all pass.
petebristow Jul 4, 2016
d34a639
support a configurable mtu, based on PR954
petebristow Aug 27, 2016
38701dc
move to no HT cpuids
petebristow Aug 28, 2016
5b8a7d0
Merge branch 'master' into intel_mp-stats
eugeneia Aug 29, 2016
a11714b
intel_mp: updated vendor/model mappings in lib.hardware.pci.
eugeneia Aug 31, 2016
2847e9b
apps.intel.intel_mp: add SHM statistics counters for master.
eugeneia Aug 31, 2016
e6da37d
Move lib.io to program/snabbnfv.
eugeneia Jul 27, 2016
d5f050b
WIP: extend virtual_ether_mux to cover RSS queues.
eugeneia Sep 1, 2016
f38a8c4
Replace virtual_ether_mux with IO macro app from hell.
eugeneia Oct 18, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
698 changes: 0 additions & 698 deletions src/apps/intel/intel1g.lua

This file was deleted.

58 changes: 58 additions & 0 deletions src/apps/intel_mp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Intel i210 / i350 / 82599 driver (apps.intel_mp.intel_mp)

The `intel_mp` app provides drivers for Intel i210/i250/82599 based
network cards. `intel_mp.Intel1g` for i210/i350 and `intel_mp.Intel82559`
The driver exposes multiple rx and tx queues that can be attached to different
processes.

The links are named `input` and `output`.

## Caveats
If attaching multiple processes to a single NIC, performance appears
better with `egine.busywait = false`
intel_mp.Intel82599 can drive a nic @14million pps

## Configuration
- Key **pciaddr**

*Required*. The PCI address of the NIC as a string.

- Key **ndesc**

*Optional*. Number of DMA descriptors to use i.e. size of the DMA
transmit and receive queues. Must be a multiple of 128. Default is not
specified but assumed to be broadly applicable.

- Key **rxq**
*Optional*. The receive queue to attach to, numbered from 0

- Key **txq**
*Optional*. The transmit queue to attach to, numbered from 0

- Key **rsskey**
*Optional*. The rsskey is a 32bit integer that seeds the hash used to
distribute packets across queues. If there are mutliple levels of RSS snabb
devices in the packet flow making this unique will help packet distribution.

- Key **wait_for_link**
*Optional*. Bool, should :new() block until there is a link light or not.

- Key **mtu**
*Optionla* Default: 9014 the maximum packet length sent of received, excluding
the trailing 4byte CRC

### RSS hashing methods
RSS will distribute packets based on as many of the fields below as are present
in the packet
Source / Dest IP address
Source / Dest TCP ports
Source / Dest UDP ports

### Default RSS Queue
Packets that aren't ipv4/ipv6 will be delivered to receive queue 0

### Hardware limits
Each chipset supports a differing number of rx / tx queues
* Intel82599 supports 16 rx and 16 tx queues
* Intel1g i210 supports 4 rx and 4 tx queues
* Intel1g i350 supports 8 rx and 8 tx queues
Loading