freebsd-dev/sys/dev
Pyun YongHyeon 502be0f749 Do not use interrupt taskqueue on controllers with MSI/MSI-X
capability. One of reason using interrupt taskqueue in re(4) was
to reduce number of TX/RX interrupts under load because re(4)
controllers have no good TX/RX interrupt moderation mechanism.
Basic TX interrupt moderation is done by hardware for most
controllers but RX interrupt moderation through undocumented
register showed poor RX performance so it was disabled in r215025.
Using taskqueue to handle RX interrupt greatly reduced number of
interrupts but re(4) consumed all available CPU cycles to run the
taskqueue under high TX/RX network load.  This can happen even with
RTL810x fast ethernet controller and I believe this is not
acceptable for most systems.

To mitigate the issue, use one-shot timer register to moderate RX
interrupts. The timer register provides programmable one-shot timer
and can be used to suppress interrupt generation. The timer runs at
125MHZ on PCIe controllers so the minimum time allowed for the
timer is 8ns. Data sheet says the register is 32 bits but
experimentation shows only lower 13 bits are valid so maximum time
that can be programmed is 65.528us. This yields theoretical maximum
number of RX interrupts that could be generated per second is about
15260. Combined with TX completion interrupts re(4) shall generate
less than 20k interrupts. This number is still slightly high
compared to other intelligent ethernet controllers but system is
very responsive even under high network load.

Introduce sysctl variable dev.re.%d.int_rx_mod that controls amount
of time to delay RX interrupt processing in units of us. Value 0
completely disables RX interrupt moderation. To provide old
behavior for controllers that have MSI/MSI-X capability, introduce
a new tunable hw.re.intr_filter. If the tunable is set to non-zero
value, driver will use interrupt taskqueue. The default value of
the tunable is 0. This tunable has no effect on controllers that
has no MSI/MSI-X capability or if MSI/MSI-X is explicitly disabled
by administrator.

While I'm here cleanup interrupt setup/teardown since re(4) uses
single MSI/MSI-X message at this moment.
2011-01-26 20:25:40 +00:00
..
aac When masking direct and processor devices during an inquiry, properly 2010-12-06 17:06:21 +00:00
acpi_support Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
acpica Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
adb Add support for interpreting taps on ADB touchpads as a button click. 2009-11-28 17:48:25 +00:00
adlink Remove an unnecessary INTR_MPSAFE and a comment suggesting it was 2011-01-06 21:02:14 +00:00
advansys
ae sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
age Forgot to remove unlock of the driver lock from age_start_locked() when 2011-01-13 13:04:49 +00:00
agp Add a driver for the Apple Uninorth AGP host bridge found in all PowerPC 2010-10-31 18:27:05 +00:00
aha
ahb
ahci Add IDs for HighPoint RocketRAID 64x controllers. 2011-01-10 22:27:52 +00:00
aic
aic7xxx Revert r213765. This is required because our build infrastructure uses 2010-10-14 19:19:19 +00:00
alc Correct wrong definition of PM timer mask and adjust L1/PM timer 2011-01-20 18:26:33 +00:00
ale Fix some bugs in my last set of changes to ale(4): 2011-01-18 16:27:40 +00:00
amd Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
amdsbwd amdsbwd: fix nonsensical timeout calculations 2010-05-31 09:07:23 +00:00
amdtemp Restore (undocumented) support for early revisions and add more comments. 2009-09-14 23:08:19 +00:00
amr Fix clang warning on empty statement. 2010-07-28 16:24:11 +00:00
an Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
arcmsr Workaround build for PAE case for now - revert the PHYS 2010-11-14 05:05:41 +00:00
asmc Use %zu for size_t. 2009-09-14 21:33:00 +00:00
asr Don't zero 'Info' after setting it up in the ASR_IOCTL_COMPAT case. 2010-11-25 21:51:43 +00:00
ata ICH7 SATA controller in legacy mode can provide access to SATA registers 2011-01-24 09:24:20 +00:00
ath Add ar5416RestoreChainMask() which will undo any AR5416 specific chainmask 2011-01-26 10:48:29 +00:00
atkbdc Only use the BIOS-supplied IRQ for the atkbdc device for a child atkbd 2010-12-21 12:49:37 +00:00
auxio Enroll these drivers in multipass probing. The motivation behind this 2009-12-22 21:02:46 +00:00
bce sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
bfe Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
bge sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
bktr Fix build on architectures where PAGE_SIZE is a long (sparc64, powerpc). 2010-07-13 19:27:20 +00:00
bm Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
buslogic Remove some always-true comparisons. 2011-01-18 15:23:16 +00:00
bwi Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
bwn Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
cardbus Move the PCI-specific logic of removing a cardbus device into a 2010-01-05 20:42:25 +00:00
cas - Fix and enable support for flow control. 2010-11-22 22:06:30 +00:00
ce Revert r213793. 2010-10-13 17:38:23 +00:00
cfe Start using the 'init_static_kenv()' API provided by r198561 to initialize 2010-08-11 02:13:50 +00:00
cfi Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
ciss Cosmetic: make it less confusing when displaying RAID 1 level, that might 2010-10-02 08:18:19 +00:00
cm Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
cmx
coretemp Catch known CPUs before using IA32_TEMPERATURE_TARGET. 2010-08-04 00:25:13 +00:00
cp Revert r213793. 2010-10-13 17:38:23 +00:00
cpuctl
cpufreq
cs Remove some always-true comparisons. 2011-01-18 15:23:16 +00:00
ct Spell "Hz" correctly wherever it is user-visible. 2010-01-12 17:59:58 +00:00
ctau Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
cx Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
cxgb Introduce signed and unsigned version of CTLTYPE_QUAD, renaming 2011-01-19 23:00:25 +00:00
cy
dc - Even after masking the media with IFM_GMASK the result may have bits 2011-01-14 20:26:59 +00:00
dcons
de Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
digi
dpms Attach dpms(4) to vgapm and make sure to restore DPMS state after 2009-12-15 19:58:23 +00:00
dpt Get rid of #ident, GCC 4.4 warns about it being deprecated. 2010-01-08 17:20:41 +00:00
drm Introduce and use a new VM interface for temporarily pinning pages. This 2010-12-25 21:26:56 +00:00
e1000 Fix for kern/152853, pullup at the wrong point 2011-01-19 18:20:11 +00:00
ed sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
eisa
en Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
ep Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
esp Include <machine/ofw_machdep.h> for OF_getscsinitid(). 2010-05-10 20:02:39 +00:00
et Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
ex Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
exca CardBus instead of cardbus. 2010-01-03 23:26:29 +00:00
fatm Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
fb Fix segment:offset calculation of interrupt vector for relocated video BIOS 2010-09-13 19:58:46 +00:00
fdc Fix a regression from r200554, which broke fdc(4) attachment to acpi(4). 2010-05-30 03:45:41 +00:00
fdt Eliminate FDT_IMMR_VA define. 2010-07-19 18:47:18 +00:00
fe Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
firewire Remove references to MAKEDEV(8) 2010-11-15 05:25:51 +00:00
flash Add s25sl064a, an 8mb SPI flash part. 2010-08-17 16:27:13 +00:00
fxp If RX lockup workaround is enabled, fxp(4) will periodically reset 2010-12-02 03:53:29 +00:00
gem - Fix and enable support for flow control. 2010-11-22 22:13:26 +00:00
glxsb
gpio Add a GPIO driver for the Gateworks Cambria platform. 2010-11-11 20:18:33 +00:00
hatm Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
hifn No need to zero the softc. It's allocated with M_ZERO. 2010-12-18 14:24:24 +00:00
hme Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
hptiop Report transport type in XPT_PATH_INQ. 2010-06-19 13:41:17 +00:00
hptmv Report transport type in XPT_PATH_INQ. 2010-06-19 13:42:14 +00:00
hptrr Pass a format string to make_dev(). 2010-10-13 14:41:52 +00:00
hwpmc Fix two aliases that had the same name but were pointing to different 2010-10-04 17:22:18 +00:00
ic Merge from projects/mips to head by hand: 2010-01-11 04:13:06 +00:00
ichsmb Add support for Intel Cougar Point SMBus controller. 2010-08-27 23:24:08 +00:00
ichwd Use convenience macro for minimum and maximum value capping when 2010-12-08 15:32:54 +00:00
ida
ie Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
ieee488 Implement more of __ibsta: END and SRQI status bits (taken out of the 2010-12-10 22:20:11 +00:00
if_ndis Revert the ndis part of r212122, windrv_stub.c already adds a MODULE_VERSION 2011-01-22 21:33:18 +00:00
iicbus There are PowerMacs which do not have a hwsensor-location property 2011-01-18 21:47:30 +00:00
iir Get rid of #ident. 2010-01-08 20:40:28 +00:00
io - Extract the IODEV_PIO interface from ia64 and make it MI. 2010-04-28 15:38:01 +00:00
ipmi Fix test for double-nul characters that terminate the string table at 2010-07-29 13:46:37 +00:00
ips Fix argument order in a call to mtx_init. 2009-12-17 00:21:12 +00:00
ipw Enable 5.5 and 11Mbit TX rates. 2010-05-11 17:14:17 +00:00
iscsi/initiator Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:23 +00:00
isp Partially revert 208119. We were overwriting tunable settings. 2010-11-27 20:33:08 +00:00
ispfw Update firmware to more recent versions. 2011-01-05 23:15:22 +00:00
iwi sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
iwn Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
ixgb Do not allocate multicast array memory in multicast filter 2010-08-28 00:34:22 +00:00
ixgbe Don't bother to run the flowcontrol code if there 2011-01-22 00:19:15 +00:00
jme - Add a locked variant of jme_start() and invoke it directly while holding 2011-01-13 14:42:43 +00:00
joy
kbd Explicitly tell the compiler that we don't care about the return value 2010-10-13 11:37:12 +00:00
kbdmux Explicitly tell the compiler that we don't care about the return value 2010-10-13 11:37:12 +00:00
ksyms Update d_mmap() to accept vm_ooffset_t and vm_memattr_t. 2009-12-29 21:51:28 +00:00
le Use convenience functions where possible instead of accessing the PCI 2010-12-18 14:21:28 +00:00
led Fix an incorrect use of sbuf_overflowed() after a call to sbuf_finish(). 2010-09-09 18:35:08 +00:00
lge Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
lindev lindev(4) [1] is supposed to be a collection of linux-specific pseudo 2009-09-26 12:45:28 +00:00
lmc Merge amd64 and i386 bus.h and move the resulting header to x86. Replace 2010-12-20 16:39:43 +00:00
malo Use convenience functions where possible instead of accessing the PCI 2010-12-18 14:21:28 +00:00
mc146818 Remove clause 3 from Izumi Tsutsui's licenses. 2009-12-25 22:58:43 +00:00
mca
mcd
md Bio shall not be accessed after g_io_deliver(9). 2011-01-25 14:00:30 +00:00
mem Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
mfi When masking direct and processor devices during an inquiry, properly 2010-12-06 17:02:56 +00:00
mge Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
mii - Allow IFM_FLAG0 to be set indicating that auto-negotiation with manual 2011-01-14 19:39:12 +00:00
mk48txx Fix botches in r201005: 2010-01-01 22:47:53 +00:00
mlx Temporarily revert the new-bus locking for 8.0 release. It will be 2009-08-20 19:17:53 +00:00
mly MFp4: Large set of CAM inprovements. 2010-01-28 08:41:30 +00:00
mmc Fix 32bit bit fields handling. This fixes card serial number fetching. 2011-01-17 19:31:34 +00:00
mn
mps sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
mpt sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
mse
msk Introduce signed and unsigned version of CTLTYPE_QUAD, renaming 2011-01-19 23:00:25 +00:00
mvs Workaround strange situation when EDMA_RESQIP register returns zero instead 2010-10-20 07:47:31 +00:00
mwl The mwl's HAL manages an array of MWL_MBSS_MAX VAPs where the first 8 are 2010-12-31 09:50:15 +00:00
mxge Use a regular taskqueue rather than a fast taskqueue for mxge(4). 2011-01-07 16:07:29 +00:00
my Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
ncv
nfe Reinitialize driver when MTU is changed and driver is running. 2011-01-24 17:53:58 +00:00
nge Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
nmdm
nsp
null Mark /dev/zero and /dev/null as eternal. 2010-08-06 09:47:48 +00:00
nve Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
nvram
nxge Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
ofw Return IEEE 1275 compliant error codes. 2010-11-11 13:42:46 +00:00
patm Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
pbio
pccard Fix typos. 2010-11-09 10:59:09 +00:00
pccbb sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
pcf
pci Don't whine about child drivers calling pci_enable_busmaster(). That is 2010-12-20 14:54:24 +00:00
pcn Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
pdq Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
powermac_nvram Add support for the Sharp/Micron flash chips to powermac_mvram(4). 2010-09-05 20:04:02 +00:00
ppbus bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
ppc Add PCI ID for MCS9901's parallel port. 2010-03-23 20:08:18 +00:00
pst Temporarily revert the new-bus locking for 8.0 release. It will be 2009-08-20 19:17:53 +00:00
pty Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
puc Add Exar octal PCI UART. 2010-12-18 02:54:51 +00:00
quicc Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
ral Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
random Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
rc
re Do not use interrupt taskqueue on controllers with MSI/MSI-X 2011-01-26 20:25:40 +00:00
rndtest
rp These checks against BUSY aren't needed: the newbus layer does this 2009-09-05 08:38:25 +00:00
safe Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
sbni Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
scc
scd
sdhci
sec Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
sf Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
sge Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
si
siba Fix double ;; 2010-12-06 10:24:06 +00:00
siis Add missing part of r217877. 2011-01-26 13:10:07 +00:00
sio
sis Rework RX filter programming by providing separate handler for 2011-01-18 17:50:14 +00:00
sk Fix a long standing bug in programming station address for Yukon 2010-11-06 22:07:22 +00:00
smbus
smc Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
sn Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
snc Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
snp Add ttydisc_rint_simple(). 2009-08-23 08:04:40 +00:00
sound Fix up a few more sysctl(9) mis-typing found in various LINT builds. 2011-01-13 18:20:27 +00:00
speaker
spibus bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
ste sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
stg
stge o Flesh out the generic IEEE 802.3 annex 31B full duplex flow control 2010-11-14 13:26:10 +00:00
streams
sym - On sparc64 obtain the initiator ID from the Open Firmware device tree 2010-04-27 18:05:33 +00:00
syscons Rename a variable to match scvidctl.c. 2010-11-30 17:34:15 +00:00
tdfx Remove references to MAKEDEV(8) 2010-11-15 05:25:51 +00:00
ti Neither the page lock nor the page queues lock is required to unwire and 2010-05-03 15:51:59 +00:00
tl - Add IFM_10_2 and IFM_10_5 media via tlphy(4) only in case the respective 2010-10-24 12:51:02 +00:00
tpm Add tpm(4) driver for Trusted Platform Module. 2010-08-12 00:16:18 +00:00
trm MFp4: Large set of CAM inprovements. 2010-01-28 08:41:30 +00:00
tsec Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
twa Fix a compile problem introduced with r212008 on 32bit: 2010-09-04 16:27:14 +00:00
twe Teach twe driver to report array stripe size to GEOM. 2009-12-25 17:34:43 +00:00
tx Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
txp sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:56 +00:00
uart In uart_tty_outwakeup(), check CTS/RTS flow control settings and 2011-01-24 18:34:16 +00:00
ubsec Cast the bus_size_t to a intmax_t rather than assuming type-punning to 2010-03-29 17:26:24 +00:00
usb Add more sanity checks for USB_HOST_ALIGN input values. Re-factor existing 2011-01-24 17:38:37 +00:00
utopia
vge Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
vkbd
vr Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
vte Remove debugging leftovers. 2010-12-31 01:23:04 +00:00
vx Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
watchdog
wb Fix indentation in r213894. 2010-11-07 12:29:26 +00:00
wds
wi sysctl(8) should use the CTLTYPE to determine the type of data when 2011-01-19 17:04:07 +00:00
wl Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
wpi Pull ieee80211_ratectl_node_init() calls from drivers into net80211. 2011-01-17 20:15:15 +00:00
xe Add new tunable 'net.link.ifqmaxlen' to set default send interface 2010-05-03 07:32:50 +00:00
xen Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
xl Add flow control for 3C905B and newer controllers. Note, these 2010-11-14 23:53:13 +00:00