freebsd-dev/sys/conf
Sean Bruno 23c9098b2a Change EM_MULTIQUEUE to a real kernconf entry and enable support for
up to 2 rx/tx queues for the 82574.

Program the 82574 to enable 5 msix vectors, assign 1 to each rx queue,
1 to each tx queue and 1 to the link handler.

Inspired by DragonFlyBSD, enable some RSS logic for handling tx queue
handling/processing.

Move multiqueue handler functions so that they line up better in a diff
review to if_igb.c

Always enqueue tx work to be done in em_mq_start, if unable to acquire
the TX lock, then this will be processed in the background later by the
taskqueue.  Remove mbuf argument from em_start_mq_locked() as the work
is always enqueued.  (stolen from igb)

Setup TARC, TXDCTL and RXDCTL registers for better performance and stability
in multiqueue and singlequeue implementations. Handle Intel errata  3 and
generic multiqueue behavior with the initialization of TARC(0) and TARC(1)

Bind interrupt threads to cpus in order.  (stolen from igb)

Add 2 new DDB functions, one to display the queue(s) and their settings and
one to reset the adapter.  Primarily used for debugging.

In the multiqueue configuration, bump RXD and TXD ring size to max for the
adapter (4096).  Setup an RDTR of 64 and an RADV of 128 in multiqueue configuration
to cut down on the number of interrupts.  RADV was arbitrarily set to 2x RDTR
and can be adjusted as needed.

Cleanup the display in top a bit to make it clearer where the taskqueue threads
are running and what they should be doing.

Ensure that both queues are processed by em_local_timer() by writing them both
to the IMS register to generate soft interrupts.

Ensure that an soft interrupt is generated when em_msix_link() is run so that
any races between assertion of the link/status interrupt and a rx/tx interrupt
are handled.

Document existing tuneables: hw.em.eee_setting, hw.em.msix, hw.em.smart_pwr_down, hw.em.sbp

Document use of hw.em.num_queues and the new kernel option EM_MULTIQUEUE

Thanks to Intel for their continued support of FreeBSD.

Reviewed by:	erj jfv hiren gnn wblock
Obtained from:	Intel Corporation
MFC after:	2 weeks
Relnotes:	Yes
Sponsored by:	Limelight Networks
Differential Revision:	https://reviews.freebsd.org/D1994
2015-06-03 18:01:09 +00:00
..
config.mk Populate new KERN_OPTS from all the opt_*.h files in 2015-02-18 15:25:19 +00:00
dtb.mk Prefer install over mkdir to create the directory. Add test to ensure 2015-02-09 16:29:44 +00:00
files Add USB MIDI template for USB device side mode. 2015-06-01 11:24:34 +00:00
files.amd64 sfxge: add 7xxx NICs family support 2015-05-25 08:34:55 +00:00
files.arm Add the gic to files.arm under "device gic" and use it with the 2015-05-10 09:33:03 +00:00
files.arm64 Add Performance Monitoring Counters support for AArch64. 2015-05-19 15:25:47 +00:00
files.i386 For objcopy, use --input-target and --output-target 2015-05-25 01:07:55 +00:00
files.mips Add support for the MIPS74K SoC family performance counters events. 2015-04-05 02:57:02 +00:00
files.pc98 MFi386: r283407 2015-05-26 14:08:32 +00:00
files.powerpc Add a PCI bridge for the Freescale PCIe Root Complex 2015-05-11 20:58:05 +00:00
files.sparc64 Add a simple unaccelerated vt(4) framebuffer driver for Sun framebuffers 2014-08-05 18:19:51 +00:00
kern.mk Only include CWARNFLAGS once to reduce command line size from ~1400 2015-04-28 23:54:55 +00:00
kern.opts.mk Add a note of clarification. MK_* variables only control what modules 2015-03-27 17:36:22 +00:00
kern.post.mk Truncate the ctfmerge command line, like we do with SYSTEM_LD. 2014-08-12 23:48:37 +00:00
kern.pre.mk Only include CWARNFLAGS once to reduce command line size from ~1400 2015-04-28 23:54:55 +00:00
kmod_syms.awk
kmod.mk Create a separate kobj interface for leaf-driver PCI IOV methods. 2015-05-28 22:01:50 +00:00
ldscript.amd64
ldscript.arm
ldscript.arm64 Bring in the start of the arm64 kernel. 2015-04-13 14:43:10 +00:00
ldscript.i386
ldscript.mips
ldscript.mips.cfe
ldscript.mips.mips64
ldscript.mips.octeon1
ldscript.powerpc Refactor PowerPC (especially AIM) init sequence to be less baroque. 2015-01-18 18:32:43 +00:00
ldscript.powerpc64 Refactor PowerPC (especially AIM) init sequence to be less baroque. 2015-01-18 18:32:43 +00:00
ldscript.sparc64
Makefile.amd64 Clang's 3.5 integrated assembler now handles these files correctly (it 2015-01-05 12:28:22 +00:00
Makefile.arm Since for clang 3.5.0 ARM EHABI is now the default, the -mllvm 2014-11-26 23:28:16 +00:00
Makefile.arm64 Bring in the start of the arm64 kernel. 2015-04-13 14:43:10 +00:00
Makefile.i386 Clang's 3.5 integrated assembler now handles these files correctly (it 2015-01-05 12:28:22 +00:00
Makefile.mips
Makefile.pc98 Fix kernel build ${MACHINE} path 2015-04-16 22:34:10 +00:00
Makefile.powerpc Make 32-bit PowerPC kernels, like 64-bit PowerPC kernels, position-independent 2015-03-07 20:14:46 +00:00
Makefile.sparc64
makeLINT.mk
makeLINT.sed
newvers.sh newvers.sh: remove 'X' hack from shell script 2015-04-08 04:01:02 +00:00
NOTES Change EM_MULTIQUEUE to a real kernconf entry and enable support for 2015-06-03 18:01:09 +00:00
options Change EM_MULTIQUEUE to a real kernconf entry and enable support for 2015-06-03 18:01:09 +00:00
options.amd64 Microsoft vmbus, storage and other related driver enhancements for HyperV. 2015-04-29 10:12:34 +00:00
options.arm Add support for getting the memory map from EFI if it has been pased in 2015-05-24 16:11:30 +00:00
options.arm64 Allow the arm64 config file to define SOCDEV_PA and SOCDEV_VA that may be 2015-04-28 17:02:43 +00:00
options.i386 Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
options.mips Introduce opt_netfpga.h and allow setting NF10BMAC_64BIT from mips kernel 2014-06-26 17:20:45 +00:00
options.pc98 Reduce diffs against i386. 2014-10-04 05:03:39 +00:00
options.powerpc Remove FreeBSD/wii. 2015-02-10 06:35:16 +00:00
options.sparc64
systags.sh
WITHOUT_SOURCELESS
WITHOUT_SOURCELESS_HOST
WITHOUT_SOURCELESS_UCODE The sn driver doesn't actually include microcode at the current time, 2014-12-30 02:39:44 +00:00