I am sponsoring this case on behalf of Bruce Curtis.  It requests Patch
binding, and is being marked as a Closed Approved Automatic as the only
non-private interfaces are new driver names.  If anyone belives this is
not a self-review, it can be turned into a fasttrack.



1.  Introduction - TCP/IP support for Intel I/OAT hardware

        Author: Bruce.Curtis at Sun.COM

        Date: 04/11/2008

        All new Sun Intel based platforms have Intel I/OAT (I/O Acceleration
        Technology) hardware.

        The first such hardware is an on-systemboard asynchronous DMA engine
        code named Crystal Beach.

        Through a set of RFEs Solaris will use this hardware to implement
        TCP receive side zero CPU copy via a socket.

        This is a transparent implementation, i.e. no user-land application
        changes are required. No new APIs are introduced nor any changes to
        existing APIs.

2. Type of Release - Patch

        This is a patch as this new feature is targeting an S10 update.

3. Project Dependencies - None

        This new feature doesn't depend on any other project nor does
        any other project depend on it.

4. Project Architecture

        The new feature is implemented as specified in 4 RFEs:

          6582335 TCP/IP receive-side zero CPU copy for support
                  of Intel I/OAT hardware

          6582330 sodirect - socket direct, for support of Intel
                  I/OAT hardware

          6582323 uioa - uio asynchronous, for support of Intel
                  I/OAT hardware

          6567008 driver for intel ioat v1 & v2 DMA engine needed

        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


Reply via email to