@eugeneia eugeneia released this Dec 12, 2017 · 1043 commits to master since this release

Assets 2

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 to rate_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):

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