summaryrefslogtreecommitdiffstats
path: root/share/man
diff options
context:
space:
mode:
authorcem <cem@FreeBSD.org>2015-12-14 22:01:52 +0000
committercem <cem@FreeBSD.org>2015-12-14 22:01:52 +0000
commitae2a2410dfbb8af28cde979e8837897684afd270 (patch)
tree955d97b497debea48deac66a6283d834a31824d2 /share/man
parentd831f84b445f319248306063b703630000fe0128 (diff)
downloadFreeBSD-src-ae2a2410dfbb8af28cde979e8837897684afd270.zip
FreeBSD-src-ae2a2410dfbb8af28cde979e8837897684afd270.tar.gz
ioat(4): Add support for interrupt coalescing
In I/OAT, this is done through the INTRDELAY register. On supported platforms, this register can coalesce interrupts in a set period to avoid excessive interrupt load for small descriptor workflows. The period is configurable anywhere from 1 microsecond to 16.38 milliseconds, in microsecond granularity. Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'share/man')
-rw-r--r--share/man/man4/ioat.420
1 files changed, 19 insertions, 1 deletions
diff --git a/share/man/man4/ioat.4 b/share/man/man4/ioat.4
index faa22ae..7ba7768 100644
--- a/share/man/man4/ioat.4
+++ b/share/man/man4/ioat.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd December 9, 2015
+.Dd December 14, 2015
.Dt IOAT 4
.Os
.Sh NAME
@@ -63,6 +63,10 @@ In
.Fn ioat_get_dmaengine "uint32_t channel_index"
.Ft void
.Fn ioat_put_dmaengine "bus_dmaengine_t dmaengine"
+.Ft int
+.Fn ioat_set_interrupt_coalesce "bus_dmaengine_t dmaengine" "uint16_t delay"
+.Ft uint16_t
+.Fn ioat_get_max_coalesce_period "bus_dmaengine_t dmaengine"
.Ft void
.Fn ioat_acquire "bus_dmaengine_t dmaengine"
.Ft void
@@ -129,6 +133,20 @@ flag.
For example, a user might submit multiple operations to the same channel and
only enable an interrupt and callback for the last operation.
.Pp
+The hardware can delay and coalesce interrupts on a given channel for a
+configurable period of time, in microseconds.
+This may be desired to reduce the processing and interrupt overhead per
+descriptor, especially for workflows consisting of many small operations.
+Software can control this on a per-channel basis with the
+.Fn ioat_set_interrupt_coalesce
+API.
+The
+.Fn ioat_get_max_coalesce_period
+API can be used to determine the maximum coalescing period supported by the
+hardware, in microseconds.
+Current platforms support up to a 16.383 millisecond coalescing period.
+Optimal configuration will vary by workflow and desired operation latency.
+.Pp
All operations are safe to use in a non-blocking context with the
.Ar DMA_NO_WAIT
flag.
OpenPOWER on IntegriCloud