diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:00 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:00 +0000 |
commit | 9e3bbf26a9a1fad9d718cd990fc7ac8401906c13 (patch) | |
tree | 9d4b7631480239c0ff0b034b56d8da85c4ccb92d /sys/dev/ioat/ioat_internal.h | |
parent | 6aa2fe8969e275faa2fbd6e80ebfb91ac2bddc40 (diff) | |
download | src-9e3bbf26a9a1fad9d718cd990fc7ac8401906c13.tar.gz src-9e3bbf26a9a1fad9d718cd990fc7ac8401906c13.zip |
ioat: Dedupe operation enqueue logic
Add generic hw descriptor struct and generic control flags struct, in
preparation for other kinds of IOAT operation.
Sponsored by: EMC / Isilon Storage Division
Notes
Notes:
svn path=/head/; revision=290020
Diffstat (limited to 'sys/dev/ioat/ioat_internal.h')
-rw-r--r-- | sys/dev/ioat/ioat_internal.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sys/dev/ioat/ioat_internal.h b/sys/dev/ioat/ioat_internal.h index 87e52f13c6c1..2ca1ac65d805 100644 --- a/sys/dev/ioat/ioat_internal.h +++ b/sys/dev/ioat/ioat_internal.h @@ -122,10 +122,39 @@ SYSCTL_DECL(_hw_ioat); extern int g_ioat_debug_level; +struct generic_dma_control { + uint32_t int_enable:1; + uint32_t src_snoop_disable:1; + uint32_t dest_snoop_disable:1; + uint32_t completion_update:1; + uint32_t fence:1; + uint32_t reserved1:1; + uint32_t src_page_break:1; + uint32_t dest_page_break:1; + uint32_t bundle:1; + uint32_t dest_dca:1; + uint32_t hint:1; + uint32_t reserved2:13; + uint32_t op:8; +}; + +struct ioat_generic_hw_descriptor { + uint32_t size; + union { + uint32_t control_raw; + struct generic_dma_control control_generic; + } u; + uint64_t src_addr; + uint64_t dest_addr; + uint64_t next; + uint64_t reserved[4]; +}; + struct ioat_dma_hw_descriptor { uint32_t size; union { uint32_t control_raw; + struct generic_dma_control control_generic; struct { uint32_t int_enable:1; uint32_t src_snoop_disable:1; @@ -156,6 +185,7 @@ struct ioat_fill_hw_descriptor { uint32_t size; union { uint32_t control_raw; + struct generic_dma_control control_generic; struct { uint32_t int_enable:1; uint32_t reserved:1; @@ -183,6 +213,7 @@ struct ioat_xor_hw_descriptor { uint32_t size; union { uint32_t control_raw; + struct generic_dma_control control_generic; struct { uint32_t int_enable:1; uint32_t src_snoop_disable:1; @@ -220,6 +251,7 @@ struct ioat_pq_hw_descriptor { uint32_t size; union { uint32_t control_raw; + struct generic_dma_control control_generic; struct { uint32_t int_enable:1; uint32_t src_snoop_disable:1; @@ -261,6 +293,7 @@ struct ioat_pq_update_hw_descriptor { uint32_t size; union { uint32_t control_raw; + struct generic_dma_control control_generic; struct { uint32_t int_enable:1; uint32_t src_snoop_disable:1; @@ -300,6 +333,7 @@ struct bus_dmadesc { struct ioat_descriptor { struct bus_dmadesc bus_dmadesc; union { + struct ioat_generic_hw_descriptor *generic; struct ioat_dma_hw_descriptor *dma; struct ioat_fill_hw_descriptor *fill; struct ioat_xor_hw_descriptor *xor; |