diff options
author | cem <cem@FreeBSD.org> | 2015-12-14 22:01:52 +0000 |
---|---|---|
committer | cem <cem@FreeBSD.org> | 2015-12-14 22:01:52 +0000 |
commit | ae2a2410dfbb8af28cde979e8837897684afd270 (patch) | |
tree | 955d97b497debea48deac66a6283d834a31824d2 /share/man | |
parent | d831f84b445f319248306063b703630000fe0128 (diff) | |
download | FreeBSD-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.4 | 20 |
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. |