Snabb 2017.11 “Endive”
This release introduces a driver-agnostic interface to network interface cards
(NIC), and switches over to the new intel_mp driver as the default choice. In
addition, some efforts of making LuaJIT’s compiler more predictable have been
back-ported from RaptorJIT to Snabb. Endive also includes various bug fixes as
usual.
Major Changes
- #1229 Implemented VMDq, VLAN insert/remove for intel_mp driver
- #1199 #1234 #1236 #1248 Implemented driver-agnostic I/O interface
- #1237 Prefer intel_mp as the default driver
- #1242 Introduced
jit.tracebarrier()
primitive, to delimit JIT compiler
traces - #1244 luajit: Record calls to blacklisted functions the same way as calls to
uncompiled functions (this fixes a pathological case where a blacklisting
could cause cascading failures of the JIT compiler)
Minor Changes
- #1225 lib.hash.siphash: avoid ctype diversity for hash functions
- #1230 #1247 #1190 Various intel_mp improvements
- #1228 Fixed a bug in the wrapper of get_mempolicy(2) in ljsyscall
- #1245 In case of a segmentation fault, we now log various interesting details
about the faulting address before exiting - #1235 #1240 #1254 Minor bug fixes and enhancements
Contributors
Alexander Gall (2):
- 35cb3ad: intel_mp: move shm initialization to constructor
- fb46309: siphash: avoid ctype diversity for hash functions
Andy Wingo (24):
- be89a9d: intel_mp app relies on lib.parse to supply default values
- 824af9f: Rename "ndescriptors" intel_mp config arg to "ring_buffer_size"
- 2b551c1: Old intel10g driver supports ring_buffer_size initarg
- 16a16fb: Fix intel1g snabbmark for intel_mp link names
- 125c0f8: Add "rx" and "tx" elements to PCI device info
- 770b536: Update virtual_ether_mux to take NIC link names from PCI info
- aabbaed: Update SnabbVMX lwAFTR setup to take link names from PCI driver
- 2f4ca31: Unconditionally enable VMDq for lwAFTR packetblaster
- 8037e47: Update packetblaster lwaftr to take NIC link names from PCI driver
- a9f39db: Unconditionally turn on VMDq for LISPer
- 9a4c329: Allow LISPer to use any PCI device that has a Snabb driver
- 3f5d3ef: Make snabbnfv traffic resilient regarding NIC link names
- 38b1ef6: Update comment in Snabb NFV's "fuzz" command
- 3260ca9: Update comment in virtio/net_device.lua to point to intel_mp
- 2ec03c0: Standardize on "app:rxdrop()" instead of "app:ingress_packet_drops()"
- c1f3a41: Remove "snabb lwaftr transient"
- 2745c61: Add CSVStatsTimer compatibility hack
- 86f912e: Unconditionally turn on VMDq for the lwAFTR
- dae0c48: Fix SnabbVMX setup for driver independence
- 34a8156: Switch PCI driver to intel_mp
- 60336e3: Port firehose program over to intel_mp
- b9d1d5d: Attempt to fix apps/intel_mp/test_1g_sw_sem.snabb
- 63295d7: Fix adaptation of "snabb snabbnfv traffic" to be driver-agnostic
- 617e157: Early error on incompatible vlan/macaddr/vmdq settings in virtual ether mux
Asumu Takikawa (87):
- efbb5e7: First attempt at VMDq for intel_mp
- 60474bc: Fix up VMDq mode so that it actually runs
- 19edfb1: First attempt at tests for VMDq mode
- 70bd72d: Try testing different MAC addrs with VMDq
- 284ba9f: Fix MAC address registration in VMDq mode
- 70968dd: Add comment explaining some RSS code
- 32857a2: Enable RSS queues via PSRTYPE properly for VMDq
- aca0bf3: Use :bits to set the VMDq RSS mode properly
- cc02601: Remove RSS bit check for setting RETA
- 12a55f0: Fix RTTPCS bit set that had a wrong length arg
- 162eac0: Adjust test to test that both vmdq pools get pkts
- 97e3634: Move MAC pool enable code and make it cross-NIC
- 09c3bc6: Adjust the VMDq initialization assertions
- 6240e9a: Error when the max number of MAC addresses is reached
- cf044c7: Add code for enabling VLAN filtering/tagging
- e314237: Refactor vmdq test script
- 88c0810: Enable VLAN takedown code for VMDq
- c3b58d0: Refactor intel_mp recv test scripts to reduce duplication
- 6991cce: Enable VLAN tag stripping in VMDq mode
- 432e35a: Adjust VLAN test to also test tag insertion
- ec0c436: VMDq settings for transmit queues
- c303d30: Add a test for VLAN tag insertion & VMDq tx
- 45a7494: Set registers needed to make Tx test work
- e8a1c36: Fix assertion for Rx queue num to allow nil
- e1766fb: Adjust intel_mp to error with VMDq on non-82599
- 8e07ff3: Remove unnecessary helper function
- 67420dd: Fix permissions on two intel_mp tests
- e6f2b05: Fix 1q vmdq test and testrecv.lua
- 5dc4dcd: Adjust VLAN test to avoid testing tag insertion
- 590e2ca: Add waits to avoid race conditions in vmdq tests
- c0558d6: Add documentation for new vmdq-related parameters
- f83c609: Refactor vmdq-related assertions
- f31b29a: Adjust VMDq test for 82599 to be more robust
- 871494e: Add VMDq consistency check for intel_mp apps
- 31229a6: Allow mirroring in VMDq mode
- 59deb35: Avoid use of
bits
function in hot code - 2d288c1: Avoid
pairs
in more places in intel_mp - 656ce13: Fix mistake in commit d1b0a87
- f2e8e30: Sort keys in debug prinouts for easier reading
- 5de384a: Fix offsets for QBTC/QPTC registers
- ddf0a24: Add rxcounter support in intel_mp
- 37b7c2b: Add txcounter support in intel_mp
- 142896d: Port Tx rate limit and priority code to intel_mp
- 1cf3239: Fix silly typo in method call
- 071290a: Add code from intel10g for discarding unsent pkts
- 87e0d45: Fix some buggy app teardown code in intel_mp
- d276077: Fix teardown test for this branch
- a236d29: Rename
limit
field torate_limit
- ce2e400: Fix another typo in VLAN code
- f13aa50: Make rx queue numbers relative to the pool number
- 475cc80: Disable MTU check that intel10g disables
- 24ced23: Make txq number relative to the pool number too
- 20bc39c: Adjust the max Rx/Tx queue numbers in VMDq mode
- 0c23646: Fix VLAN tag setting after a NIC app is restarted
- eaab2ef: Shuffle code and refactor check_vmdq method
- 98cecb6: Automatically select available pools in VMDq mode
- 6ea7eeb: Add a test where VMDq pools are auto selected
- 15e4865: Revise intel_mp poolnum docs
- 9007754: Add a fine-grained test for intel_mp auto pools
- ddf3e26: Fix pool lock cleanup for intel_mp
- 5596eab: Minor fixes in intel_mp vmdq code
- e9b8153: Move comment to avoid conflict with newline
- 19e6434: Rename some test files .sh -> .snabb
- c00adf8: Minor improvements to pool selection code
- ee0ce1d: Protect against race conditions in VMDq config
- 9f3074d: Add test ensuring MAC/VLAN indices are set right
- b0b0daa: Adjust sleep time and add
wait
to intel_mp test - 76b3c34: Fix fd cleanup in intel_mp
- 702d01b: Use conf defaults explicitly for consistency
- 4f27b28: Add option to disable rxq/txq in intel_mp
- b9a04a0: Explicitly disable rxq/txq for intel_mp test
- ac2e60c: Update intel_mp README with diagram & methods
- 790786f: Update intel_mp README with all ported config options
- aa81c54: Fix documented max pools/queues in intel_mp README
- f2c673f: Add a reconfig method to intel_mp
- 5ed8e4f: Clear ETQF/ETQS registers on init
- c91f004: Fix RXPBSIZE initialization
- 6823705: Set packet buffer size to max (16KB) via SRRCTL
- ee98e2f: Only sync stats in push if rxq is disabled
- ecb74d3: Cache functions imported from link module
- f858e48: Enable VM TX loopback in VMDq mode
- 033f657: Revert "Add a reconfig method to intel_mp"
- 9c7763c: Add comments and delete commented code in intel_mp
- 67e1776: Adjust ctable selftest to avoid assertion failure
- 8c36d0b: Allow snabbwall to use any NIC that has a Snabb driver
- a0591b4: Make lwaftr loadtest work with any PCI device
- f21e800: Port packetblaster over to intel_mp
Diego Pino Garcia (3):
- 245e0f0: Set mask.size equals to MAX_NUMNODES if lower
- a2fd55f: Rewrite get_maxnumnodes function to not depend on a fixed filesize
- 776601a: Rework readfile function and add comment on how to calculate maxnumnodes
Fabian Bonk (1):
- c76a991: Fix file mode
Luke Gorrie (6):
- c2da4ae: Add jit.tracebarrier() primitive
- bfc8612: core.engine: jit.tracebarrier() before each app callback
- e8c0808: core.engine: jit.tracebarrier() after each app callback too
- 1862084: lj_record.c: Record IFUNC/IFUNCV the same as FUNC/FUNCV
- 0cc1ad9: .version: bump to 2017.11
- 50ced99: engine: Remove jit.barrier() calls around apps (too expensive)
Max Rottenkolber (2):
- e2ef66a: core/memory: log segfault address to stderr for unhandled SIGSEGV
- 7c98e06: core/memory: also log instruction and stack pointers as well as si_errno
Nicola 'tekNico' Larosa (19):
- 6b321ac: Make intel_mp tests run even when either 1G or 10G cards are not present
- a13a385: Disable VMDq check if not in VMDq mode
- 34d2612: Add default for number of pools
- a9d7c31: Remove redundant poolnum check
- 07baa18: Remove another redundant check on poolnum
- 4138072: Replace intel1g with intel_mp in comments and strings
- 9615f89: Remove tabs from testrecv.lua
- 7217501: Remove redundant checks for link in push and pull methods
- 50fcf69: Fix txdesc bug in intel_mp driver
- ae707ce: Allow 64 pools instead of 32, and 2 queues per pool instead of 4
- 0574ad6: Undo wrong change
- 5a6177f: Fix intel_mp test
- fd6e310: Remove duplicate require line
- 31e625e: Add the poll-follower-for-channel fix
- a58fa28: Typo fix to make CI run again
- 299a5a8: Add config defaults for txq and rxq
- d936934: Add default for number of pools (revised)
- 9c0547d: Make IPFIX use generic pci.device_info to load drivers
- c8df78d: Allow lwAFTR to use any Snabb-supported PCI device
krawthekrow (1):
- e45ba27: include ipv4/ipv6 in gre inner protocol list