freebsd-dev/sys
Marius Strobl 3d10e9ed62 o Use iflib_fast_intr_rxtx() also for "legacy" interrupts, i. e. INTx and
MSI. Unlike as with iflib_fast_intr_ctx(), the former will also enqueue
  _task_fn_tx() in addition to _task_fn_rx() if appropriate, bringing TCP
  TX throughput of EM-class devices on par with the MSI-X case and, thus,
  close to wirespeed/pre-iflib(4) times again. [1]
  Note that independently of the interrupt type, the UDP performance with
  these MACs still is abysmal and nowhere near to where it was before the
  conversion of em(4) to iflib(4).
o In iflib_init_locked(), announce which free list failed to set up.
o In _task_fn_tx() when running netmap(4), issue ifdi_intr_enable instead
  of the ifdi_tx_queue_intr_enable method in case of a "legacy" interrupt
  as the latter is valid with MSI-X only.
o Instead of adding the missing - and apparently convoluted enough that a
  DBG_COUNTER_INC was put into a wrong spot in _task_fn_rx() - checks for
  ifdi_{r,t}x_queue_intr_enable being available in the MSI-X case also to
  iflib_fast_intr_rxtx(), factor these out to iflib_device_register() and
  make the checks fail gracefully rather than panic. This avoids invoking
  the checks at runtime over and over again in iflib_fast_intr_rxtx() and
  _task_fn_{r,t}x() - even if it's just in case of INVARIANTS - and makes
  these functions more readable.
o In iflib_rx_structures_setup(), only initialize LRO resources if device
  and driver have LRO capability in order to not waste memory. Also, free
  the LRO resources again if setting them up fails for one of the queues.
  However, don't bother invoking iflib_rx_sds_free() in that case because
  iflib_rx_structures_setup() doesn't call iflib_rxsd_alloc() either (and
  iflib_{device,pseudo}_register() will issue iflib_rx_sds_free() in case
  of failure via iflib_rx_structures_free(), but there definitely is some
  asymmetry left to be fixed, though).
o Similarly, free LRO resources again in iflib_rx_structures_free().
o In iflib_irq_set_affinity(), handle get_core_offset() errors gracefully
  instead of panicing (but only in case of INVARIANTS). This is a follow-
  up to r344132, as such driver bugs shouldn't be fatal.
o Likewise, handle unknown iflib_intr_type_t in iflib_irq_alloc_generic()
  gracefully, too.
o Bring yet more sanity to iflib_msix_init():
  - If the device doesn't provide enough MSI-X vectors or not all vectors
    can be allocate so the expected number of queues in addition to admin
    interrupts can't be supported, try MSI next (and then INTx) as proper
    MSI-X vector distribution can't be assured in such cases. In essence,
    this change brings r254008 forward to iflib(4). Also, this is the fix
    alluded to in the commit message of r343934.
  - If the MSI-X allocation has failed, don't prematurely announce MSI is
    going to be used as the latter in fact may not be available either.
  - When falling back to MSI, only release the MSI-X table resource again
    if it was allocated in iflib_msix_init(), i. e. isn't supplied by the
    driver, in the first place.
o In mp_ndesc_handler(), handle unknown type arguments gracefully, too.

PR:		235031 (likely) [1]
Reviewed by:	shurd
Differential Revision:	https://reviews.freebsd.org/D20175
2019-05-07 08:28:35 +00:00
..
amd64 x86: Implement MWAIT support for stopping a CPU 2019-05-04 20:34:26 +00:00
arm Add a COMPAT_FREEBSD12 kernel option. 2019-05-02 18:10:23 +00:00
arm64 Reformat arm64 linux syscalls.master per current style 2019-05-06 16:07:14 +00:00
bsm
cam Drop periph lock around cam_periph_unmapmem(). 2019-05-06 19:08:03 +00:00
cddl Add mutex_destroy() missed in r334844. 2019-04-26 19:02:21 +00:00
compat Remove wrong copyright line. Discussed with Carlos Neira. 2019-05-07 05:08:13 +00:00
conf Add a COMPAT_FREEBSD12 kernel option. 2019-05-02 18:10:23 +00:00
contrib Left justify a function header brace as it should be. 2019-04-28 04:05:43 +00:00
crypto
ddb
dev List-ify kernel dump device configuration 2019-05-06 18:24:07 +00:00
dts arm64: Add support for NanoPI NEO2 2019-05-02 12:56:13 +00:00
fs Do not flush NFS node from NFS VOP_SET_TEXT(). 2019-05-06 08:49:43 +00:00
gdb
geom List-ify kernel dump device configuration 2019-05-06 18:24:07 +00:00
gnu Import DTS files from Linux 5.0 2019-04-10 18:15:36 +00:00
i386 x86: Implement MWAIT support for stopping a CPU 2019-05-04 20:34:26 +00:00
isa
kern The intention of the blist cursor is for the search for free blocks to 2019-05-06 22:12:15 +00:00
kgssapi
libkern Revert r346410 and r346411 2019-04-19 22:08:17 +00:00
mips Add a COMPAT_FREEBSD12 kernel option. 2019-05-02 18:10:23 +00:00
modules The build process generates assym.inc from genassym.o, so don't forget 2019-05-06 18:46:42 +00:00
net o Use iflib_fast_intr_rxtx() also for "legacy" interrupts, i. e. INTx and 2019-05-07 08:28:35 +00:00
net80211 net80211: correct check for SMPS node flags updates 2019-03-18 02:40:22 +00:00
netgraph Remove 'dir' argument in ng_ipfw_input, since ip_fw_args now has this info. 2019-03-14 22:30:05 +00:00
netinet List-ify kernel dump device configuration 2019-05-06 18:24:07 +00:00
netinet6 Track TCP connection's NUMA domain in the inpcb 2019-04-25 15:37:28 +00:00
netipsec Replace read_random(9) with more appropriate arc4rand(9) KPIs 2019-04-04 01:02:50 +00:00
netpfil Add IPv6 support for O_IPLEN opcode. 2019-04-29 09:33:16 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed
opencrypto Don't panic for empty CCM requests. 2019-04-24 23:27:39 +00:00
powerpc powerpc/booke: Use #ifdef __powerpc64__ instead of hw_direct_map in places 2019-05-05 20:23:43 +00:00
riscv Deactivate IRQ resource by calling to intr_deactivate_irq(). 2019-05-01 15:03:12 +00:00
rpc Fix malloc stats for the RPCSEC_GSS server code when DEBUG is enabled. 2019-04-04 01:23:06 +00:00
security When MAC is enabled and a policy module is loaded, don't unconditionally 2019-05-03 20:38:43 +00:00
sparc64 Add a COMPAT_FREEBSD12 kernel option. 2019-05-02 18:10:23 +00:00
sys List-ify kernel dump device configuration 2019-05-06 18:24:07 +00:00
teken
tests
tools
ufs Ensure that error is initialized in ufs_bmap_seekdata(). 2019-05-05 16:57:03 +00:00
vm Noted by: alc 2019-05-06 08:46:11 +00:00
x86 amd64: fix BUS_SPACE_MAXSIZE to 64bit max value. 2019-05-07 01:18:57 +00:00
xdr
xen
Makefile