Such that a new device driver "ioat" interfaces to the on-board I/OAT asynchronous DMA chip, the pseudo driver "dcopy" interfaces to the "ioat" driver, the uioa (uioa asynchronous) extensions to uio (user i/o) interfaces to dcopy, and lastly sockfs and tcp are modified to setup and use sodirect (socket direct) and uioa when a socket read()/recv() system call is made and I/OAT hardware is present and the user buffer is of sufficent size.
Then, TCP payload data copy is accomplished via a DMA by the NIC (as it is for non I/OAT) into a kernel mblk_t's dblk_t data buffer then early in TCP payload processing a 2nd DMA is started from the dblk_t data buffer to the user-land buffer specified and the dblk_t is marked as such.
The mblk_t is processed by the network stack framework as usual but before the read()/recv() returns sockfs checks for the I/OAT DMA completion.
5. Public Interfaces - SUNWdcopy, sys/sodirect.h
Package contains the "ioat" device driver and "dcopy" pseudo driver.
A new include file "sys/sodirect.h" is added to the SUNWhea package as it is included by "sys/sonode.h" and "sys/uio.h".
6. Interface Specification
The commitment level for "SUNWdcopy" and the driver names "ioat" and "dcopy" are: stable
The include file "sys/sodirect.h", and any interfaces contained there in, are: project private
7. Resources and Schedule 7.4. Steering Committee requested information 7.4.1. Consolidation C-team Name: ON 7.5. ARC review type: Automatic 7.6. ARC Exposure: open