<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
  <title xml:id="dbdoclet.50569384_75285">A Protocol for VNIC Communications</title>

  <section>
    <title>Introduction</title>
    <para>The VNIC protocol defined in this chapter defines the protocol to be
    used with VNIC virtual IOA, as defined in 
    <xref linkend="dbdoclet.50569366_19541" />. VNIC provides a mechanism which
    minimizes the number of times data is copied within the memory of the
    physical system. The virtual I/O model described herein allows for either
    zero copy using the redirected DMA or single copy when the data is first
    moved to the memory space of firmware before being DMAed to the client
    partition.</para>
    <para>This protocol is designed to fulfill the following
    requirements:</para>

    <orderedlist>		      
      <listitem>
        <para>Fast, efficient transfer and reception of Ethernet frames</para>
      </listitem>

      <listitem>
        <para>Exploitation of adapter multiple transmit and receive queue
        support.</para>
      </listitem>

      <listitem>
        <para>Partition mobility capable</para>
      </listitem>

      <listitem>
        <para>Promiscuous mode support</para>
      </listitem>

      <listitem>
        <para>Stateless TCP and IP checksum offload</para>
      </listitem>

      <listitem>
        <para>TCP large send offload</para>
      </listitem>

      <listitem>
        <para>Multiple interrupt source support</para>
      </listitem>

      <listitem>
        <para>Notification of physical Ethernet link state</para>
      </listitem>

      <listitem>
        <para>Physical Ethernet link state control if configured</para>
      </listitem>

      <listitem>
        <para>Statistics, trace, and dump support</para>
      </listitem>

      <listitem>
        <para>Extensible protocol for future functional additions</para>
      </listitem>
    </orderedlist>		      
  </section>

  <section>
    <title>VNIC Adapter</title>
    <para>The intent of this protocol is to support the implementation, within
    the client logical partition, of a VNIC adapter device driver (VNIC client)
    which is functionally similar to a physical Ethernet adapter device driver.
    The VNIC can send and receive Ethernet packets, add receive buffers to the
    virtualized hardware, handle physical and logical link status, acquire
    hardware statistics, and utilize advanced hardware features like checksum
    offload. The VNIC interface also provides tracing, logging, and dumping
    facilities.</para>
    <para>It is the firm intent of this protocol that no changes be required in
    any layer 3 or higher communication protocol (e.g. TCP, IP, etc.).</para>
    <para>A partition may have multiple VNIC Adapters.</para>
  </section>
  <section>
    <title>Zero Copy DMA Models</title>
    <para>Unlike the Interpartition Logical LAN option (See 
    <xref linkend="dbdoclet.50569348_71217" />), the VNIC protocol allows for
    the physical Ethernet adapter associated with the VNIC device to securely
    target memory pages associated with a VNIC adapter for virtual I/O
    operations. LoPAR defines two modes of LRDMA (See 
    <xref linkend="dbdoclet.50569348_71217" />).</para>
    <para>The use of Redirected RDMA is completely invisible to the VNIC
    adapter, and has no impact on the VNIC protocol defined here. It is left
    entirely to the discretion of the server firmware whether it first moves
    data from a physical adapter into its own memory before moving (DMAing) the
    data to the VNIC adapter, or whether the physical adapter sets up the I/O
    request in such a way that the physical device DMAs directly to the memory
    of the client adapter. The virtualizing firmware uses the RDMA mode that
    best suits its needs for a given virtual I/O operation.</para>
  </section>
  <section>
    <title>Protocol Overview</title>

    <para>The CRQ and Sub-CRQ facilities as defined in 
    <xref linkend="dbdoclet.50569348_71217" /> are used to send and receive VNIC
    commands to system firmware. The different VNIC command types are defined
    in 
    <xref linkend="dbdoclet.50569384_47161" />.</para>
    <para>Throughout this document, boolean values assume 0 to be false, 1 to
    be true. Unless otherwise specified, all lengths are expected to be given
    in terms of bytes. Any setting or capability changed or enabled after a
    successful H_REGISTER_CRQ will be cleared when H_FREE_CRQ is
    performed.</para>
    <para>The format of a VNIC command is shown in 
    <xref linkend="dbdoclet.50569384_96342" />. The Command Type field of the
    VNIC command is defined in 
    <xref linkend="dbdoclet.50569384_47161" />. The Return Code for a a VNIC
    command is always at offset 12 in the response, as shown in 
    <xref linkend="dbdoclet.50569384_96342" />.</para>
    <para>All VNIC commands have VNIC command values from 0x0 to 0x7F. Each
    response to a VNIC command has a VNIC command value that is equal to the
    command with the 0x80 bit in the command turned on.</para>
    <para>In the event firmware receives a command it doesn&#8217;t understand,
    a response will be returned with an UnknownCommand return code set at
    offset 12, and the VNIC command type set to the passed in command type with
    the 0x80 bit turned on.</para>

    <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_96342">
      <title>Format of the VNIC command</title>
      <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
      <tgroup cols="9">
        <colspec colname="c1" colwidth="11*" align="center" />
        <colspec colname="c2" colwidth="11*" align="center" />
        <colspec colname="c3" colwidth="11*" align="center" />
        <colspec colname="c4" colwidth="11*" align="center" />
        <colspec colname="c5" colwidth="11*" align="center" />
        <colspec colname="c6" colwidth="11*" align="center" />
        <colspec colname="c7" colwidth="11*" align="center" />
        <colspec colname="c8" colwidth="11*" align="center" />
        <colspec colname="c9" colwidth="11*" align="center" />
        <thead>
          <row>
            <entry>
              <para><emphasis role="bold">Byte Offset</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">0</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">1</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">2</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">3</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">4</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">5</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">6</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">7</emphasis></para>
            </entry>
          </row>
        </thead>
        <tbody valign="middle">
          <row>
            <entry>
              <para>0x00</para>
            </entry>
            <entry>
              <para>0x80</para>
            </entry>
            <entry>
              <para>Command Type</para>
            </entry>
            <entry nameend="c9" namest="c4">
              <para>Command dependent</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>0x08</para>
            </entry>
            <entry nameend="c5" namest="c2">
              <para>Command dependent</para>
            </entry>
            <entry nameend="c9" namest="c6">
              <para>Return Code or Command Dependent</para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <para>&#160;</para>
    <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_76174">
      <title>VNIC Return Code</title>
      <?dbhtml table-width="80%" ?><?dbfo table-width="80%" ?>
      <tgroup cols="4">
        <colspec colname="c1" colwidth="30*" align="center" />
        <colspec colname="c2" colwidth="10*" align="center" />
        <colspec colname="c3" colwidth="10*" align="center" />
        <colspec colname="c4" colwidth="50*" />
        <thead>
          <row>
            <entry>
              <para>
                <emphasis role="bold">Field Name</emphasis>
              </para>
            </entry>
            <entry>
              <para>
                <emphasis role="bold">Byte Offset</emphasis>
              </para>
            </entry>
            <entry>
              <para>
                <emphasis role="bold">Length</emphasis>
              </para>
            </entry>
            <entry align="center">
              <para>
                <emphasis role="bold">Definition</emphasis>
              </para>
            </entry>
          </row>
        </thead>
        <tbody valign="middle">
          <row>
            <entry>
              <para>Architected Return Value</para>
            </entry>
            <entry>
              <para>0</para>
            </entry>
            <entry>
              <para>1</para>
            </entry>
            <entry>
              <para>This field contains a value from 
              <xref linkend="dbdoclet.50569384_14812" />that contains the high
              level return code for the operation.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>Detailed Error Data</para>
            </entry>
            <entry>
              <para>1</para>
            </entry>
            <entry>
              <para>3</para>
            </entry>
            <entry>
              <para>This field contains an unarchitected detailed error code
              that can be used by firmware to further classify the error
              returned in the architected return value.</para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <para>&#160;</para>
    <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_47161">
      <title>VNIC Command Types</title>
      <tgroup cols="5">
        <colspec colname="c1" colwidth="30*" align="center" />
        <colspec colname="c2" colwidth="10*" align="center" />
        <colspec colname="c3" colwidth="15*" align="center" />
        <colspec colname="c4" colwidth="22*" />
        <colspec colname="c5" colwidth="23*" />
        <thead>
          <row>
            <entry>
              <para><emphasis role="bold">Command Type</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">Command value</emphasis></para>
            </entry>
            <entry>
              <para><emphasis role="bold">Sent by</emphasis></para>
            </entry>
            <entry align="center">
              <para><emphasis role="bold">Description</emphasis></para>
            </entry>
            <entry align="center">
              <para><emphasis role="bold">Location</emphasis></para>
            </entry>
          </row>
        </thead>
        <tbody valign="middle">
          <row>
            <entry>
              <para>VERSION_EXCHANGE</para>
            </entry>
            <entry>
              <para>0x01</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to inform firmware of level of protocol VNIC
              supports</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_34836" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>VERSION_EXCHANGE_RSP</para>
            </entry>
            <entry>
              <para>0x81</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to inform VNIC of level of protocol firmware
              supports</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_34836" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_CAPABILITY</para>
            </entry>
            <entry>
              <para>0x02</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Query firmware for a specific VNIC capability</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_72910" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_CAPABILITY_RSP</para>
            </entry>
            <entry>
              <para>0x82</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response for a QUERY_CAPABILITY</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_72910" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_CAPABILITY</para>
            </entry>
            <entry>
              <para>0x03</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request firmware to start using a specific capability
              value</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_72910" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_CAPABILITY_RSP</para>
            </entry>
            <entry>
              <para>0x83</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response from firmware to a REQUEST_CAPABILITY
              command</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_72910" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>LOGIN</para>
            </entry>
            <entry>
              <para>0x04</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to exchange Sub-CRQ information with system firmware
              in preparation for functional use of the virtualized
              adapter</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_24033" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>LOGIN_RSP</para>
            </entry>
            <entry>
              <para>0x84</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response from firmware with firmware&#8217;s Sub-CRQ
              information in preparation for functional use.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_24033" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_PHYS_PARMS</para>
            </entry>
            <entry>
              <para>0x05</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by VNIC client to enquire about physical port
              parameters such as line speed, duplex setting, etc.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_PHYS_PARMS_RSP</para>
            </entry>
            <entry>
              <para>0x85</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>A response to the QUERY_PHYS_PARMS request containing the
              requested information</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_PHYS_CAPABILITIES</para>
            </entry>
            <entry>
              <para>0x06</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by VNIC client to enquire about physical port
              capabilities such as line speed.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_PHYS_CAPABILITIES_RSP</para>
            </entry>
            <entry>
              <para>0x86</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>A response to the QUERY_PHYS_CAPABILITIES request
              containing the requested information.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>SET_PHYS_PARMS</para>
            </entry>
            <entry>
              <para>0x07</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by the VNIC to set physical port parameters such as
              line speed if allowed.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>SET_PHYS_PARMS_RSP</para>
            </entry>
            <entry>
              <para>0x87</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response indicating status of SET_PHYS_PARMS request</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_19462" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>ERROR_INDICATION</para>
            </entry>
            <entry>
              <para>0x08</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to indicate to either side of an error
              condition.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_92282" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_ERROR_INFO</para>
            </entry>
            <entry>
              <para>0x09</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to request detailed error data about a previous
              asynchronous error condition</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_92282" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_ERROR_RSP</para>
            </entry>
            <entry>
              <para>0x89</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to return detailed error data in response to a
              request</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_92282" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DUMP_SIZE</para>
            </entry>
            <entry>
              <para>0x0A</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to request an estimate of how much size a VNIC
              collected debug dump will require.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_70585" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DUMP_SIZE_RSP</para>
            </entry>
            <entry>
              <para>0x8A</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to inform VNIC of the dump size estimate.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_70585" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DUMP</para>
            </entry>
            <entry>
              <para>0x0B</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to request firmware to perform an adapter &amp;
              firmware dump to assist in problem determination</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_70585" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DUMP_RSP</para>
            </entry>
            <entry>
              <para>0x8B</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to inform VNIC Client when the requested dump has been
              completed</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_70585" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>LOGICAL_LINK_STATE</para>
            </entry>
            <entry>
              <para>0x0C</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by VNIC Client to tell firmware to start and stop
              packet reception</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_63487" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>LOGICAL_LINK_STATE_RSP</para>
            </entry>
            <entry>
              <para>0x8C</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to inform VNIC Client of the status of the LINK_STATE
              request</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_63487" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_STATISTICS</para>
            </entry>
            <entry>
              <para>0x0D</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used to retrieve standard network adapter statistics
              (bytes/packet sent/rcvd, etc.)</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_18536" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_STATISTICS_RSP</para>
            </entry>
            <entry>
              <para>0x8D</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Used to inform VNIC Client when statistics were
              successfully collected</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_18536" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_RAS_COMP_NUM</para>
            </entry>
            <entry>
              <para>0x0E</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by VNIC Client to retrieve the number of independent
              firmware components that can have their RAS capabilities
              controlled in firmware associated with the VNIC</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_RAS_COMP_NUM_RSP</para>
            </entry>
            <entry>
              <para>0x8E</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to the REQUEST_RAS_COMP_NUM command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_RAS_COMPS</para>
            </entry>
            <entry>
              <para>0x0F</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Used by VNIC Client to retrieve the list of component ids
              that can have their RAS capabilities controlled in firmware for
              this VNIC.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_RAS_COMPS_RSP</para>
            </entry>
            <entry>
              <para>0x8F</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to the REQUEST_RAS_COMPS_RSP.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CONTROL_RAS</para>
            </entry>
            <entry>
              <para>0x10</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request firmware to modify RAS characteristics to allow for
              easier problem determination.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CONTROL_RAS_RSP</para>
            </entry>
            <entry>
              <para>0x90</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to the CONTROL_RAS command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>COLLECT_FW_TRACE</para>
            </entry>
            <entry>
              <para>0x11</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>This allows the VNIC Client to collect a trace for a
              firmware component.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>COLLECT_FW_TRACE_RSP</para>
            </entry>
            <entry>
              <para>0x91</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Inform VNIC Client the trace collection is complete</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_69706" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>LINK_STATE_INDICATION</para>
            </entry>
            <entry>
              <para>0x12</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Inform VNIC Client of link state changes.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_64394" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CHANGE_MAC_ADDR</para>
            </entry>
            <entry>
              <para>0x13</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request system firmware to change the current VNIC MAC
              address</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_73515" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CHANGE_MAC_ADDR_RSP</para>
            </entry>
            <entry>
              <para>0x93</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Inform VNIC Client of MAC address change request
              status</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_73515" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>MULTICAST_CTRL</para>
            </entry>
            <entry>
              <para>0x14</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request system firmware to change current multicast MAC
              address settings</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_44489" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>MULTICAST_CTRL_RSP</para>
            </entry>
            <entry>
              <para>0x94</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Inform VNIC Client of multicast response</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_44489" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>GET_VPD_SIZE</para>
            </entry>
            <entry>
              <para>0x15</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Query firmware for the size of VPD</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_64959" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>GET_VPD_SIZE_RSP</para>
            </entry>
            <entry>
              <para>0x95</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Return the size of VPD to VNIC client</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_64959" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>GET_VPD</para>
            </entry>
            <entry>
              <para>0x16</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request system firmware to return VPD associated with
              adapter.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_64959" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>GET_VPD_RSP</para>
            </entry>
            <entry>
              <para>0x96</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to GET_VPD.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_64959" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>TUNE</para>
            </entry>
            <entry>
              <para>0x17</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Pass debugging information to system firmware</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_82039" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>TUNE_RSP</para>
            </entry>
            <entry>
              <para>0x97</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to TUNE command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_82039" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_IP_OFFLOAD</para>
            </entry>
            <entry>
              <para>0x18</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request details about TCP, UDP, and IP offload
              capabilities</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_86912" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>QUERY_IP_OFFLOAD_RSP</para>
            </entry>
            <entry>
              <para>0x98</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to QUERY_IP_OFFLOAD command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_86912" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CONTROL_IP_OFFLOAD</para>
            </entry>
            <entry>
              <para>0x19</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Enable and disable TCP, UDP, and IP offload
              capabilities</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_86912" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>CONTROL_IP_OFFLOAD_RSP</para>
            </entry>
            <entry>
              <para>0x99</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to CONTROL_IP_OFFLOAD command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_86912" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>ACL_CHANGE_INDICATION</para>
            </entry>
            <entry>
              <para>0x1A</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Inform VNIC client of dynamic changes to access
              controls</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_15227" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>ACL_QUERY</para>
            </entry>
            <entry>
              <para>0x1B</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request information about access control limitations in
              place for this VNIC.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_15227" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>ACL_QUERY_RSP</para>
            </entry>
            <entry>
              <para>0x9B</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to ACL_QUERY command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_15227" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DEBUG_STATS</para>
            </entry>
            <entry>
              <para>0x1C</para>
            </entry>
            <entry>
              <para>VNIC Client</para>
            </entry>
            <entry>
              <para>Request unarchitected statistics block used for debugging
              firmware problems.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_18536" />
              </para>
            </entry>
          </row>
          <row>
            <entry>
              <para>REQUEST_DEBUG_STATS_RSP</para>
            </entry>
            <entry>
              <para>0x9C</para>
            </entry>
            <entry>
              <para>Firmware</para>
            </entry>
            <entry>
              <para>Response to REQUEST_DEBUG_STATS command.</para>
            </entry>
            <entry>
              <para>
                <xref linkend="dbdoclet.50569384_18536" />
              </para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <para>&#160;</para>
    <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_14812">
      <title>VNIC Architected Return Values</title>
      <?dbhtml table-width="75%" ?><?dbfo table-width="75%" ?>
      <tgroup cols="3">
        <colspec colname="c1" colwidth="30*" align="center" />
        <colspec colname="c2" colwidth="20*" align="center" />
        <colspec colname="c3" colwidth="50*" />
        <thead>
          <row>
            <entry>
              <para>
                <emphasis role="bold">Return Code</emphasis>
              </para>
            </entry>
            <entry>
              <para>
                <emphasis role="bold">Value</emphasis>
              </para>
            </entry>
            <entry align="center">
              <para>
                <emphasis role="bold">Definition</emphasis>
              </para>
            </entry>
          </row>
        </thead>
        <tbody valign="middle">
          <row>
            <entry>
              <para>Success</para>
            </entry>
            <entry>
              <para>0</para>
            </entry>
            <entry>
              <para>The requested operation completed successfully.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>PartialSuccess</para>
            </entry>
            <entry>
              <para>1</para>
            </entry>
            <entry>
              <para>The requested operation completed partially successful. The
              parameters were valid, but not all resources could be obtained to
              completely satisfy the command. Check the specific function
              definition for details.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>Permission</para>
            </entry>
            <entry>
              <para>2</para>
            </entry>
            <entry>
              <para>The request called for permissions not available.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>NoMemory</para>
            </entry>
            <entry>
              <para>3</para>
            </entry>
            <entry>
              <para>The request failed due to insufficient memory.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>Parameter</para>
            </entry>
            <entry>
              <para>4</para>
            </entry>
            <entry>
              <para>One or more parameters were in error in the request.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>UnknownCommand</para>
            </entry>
            <entry>
              <para>5</para>
            </entry>
            <entry>
              <para>The specific VNIC command is unknown.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>Aborted</para>
            </entry>
            <entry>
              <para>6</para>
            </entry>
            <entry>
              <para>The command was aborted by some other action.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>InvalidState</para>
            </entry>
            <entry>
              <para>7</para>
            </entry>
            <entry>
              <para>The requested command is invalid at this time.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>InvalidIOBA</para>
            </entry>
            <entry>
              <para>8</para>
            </entry>
            <entry>
              <para>An I/O bus address passed as a parameter was
              invalid.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>InvalidLength</para>
            </entry>
            <entry>
              <para>9</para>
            </entry>
            <entry>
              <para>A length passed as a parameter was invalid.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>UnsupportedOption</para>
            </entry>
            <entry>
              <para>10</para>
            </entry>
            <entry>
              <para>A reserved value or option was used on an existing command
              that system firmware does not support.</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>Reserved</para>
            </entry>
            <entry>
              <para>11-255</para>
            </entry>
            <entry>
              <para>These return codes are reserved.</para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
  </section>
  <section xml:id="dbdoclet.50569384_61724">
    <title>Typical VNIC Protocol Flows</title>
    <section>
      <title>Boot Flow</title>
      <para>This section gives an overview of the typical VNIC startup
      sequence.</para>

      <orderedlist>		      
        <listitem>
          <para>The operating system discovers a VNIC device in the device
          tree.</para>
        </listitem>

        <listitem>
          <para>The operating system instantiates the VNIC client device driver,
          allocates a buffer for the VNIC CRQ, which is then TCE-mapped using the
          VNIC&#8217;s TCE table. Since the VNIC protocol is a command/response
          protocol, the VNIC client should allocate a CRQ buffer big enough to
          handle a response for every command it wishes to have outstanding
          concurrently with firmware with an allowance for unsolicited asynchronous
          error and link state change CRQ events.</para>
        </listitem>

        <listitem>
          <para>VNIC client calls H_REG_CRQ specifying the unit address and IOBA
          of the CRQ page(s), and waits for either H_Success or an INITIALIZATION
          message as defined in 
          <xref linkend="dbdoclet.50569348_48491" />.</para>
        </listitem>

        <listitem>
          <para>VNIC client sends either an INITIALIZATION_COMPLETE or an
          INITIALIZATION message to firmware using H_SEND_CRQ, as defined in 
          <xref linkend="dbdoclet.50569348_48491" />.</para>
        </listitem>

        <listitem>
          <para>Once the INITIALIZATION and INITIALIZATION_COMPLETE messages
          have been exchanged, the VNIC client sends a VERSION_EXCHANGE using
          H_SEND_CRQ, specifying the latest version of the VNIC protocol supported
          by the VNIC client.</para>
        </listitem>

        <listitem>
          <para>Firmware responds with a VERSION_EXCHANGE_RSP specifying the
          version it supports. Both VNIC client and firmware must support the lower
          of the two versions. Until and unless the VNIC client receives a
          VERSION_EXCHANGE_RSP, no further VNIC commands may be sent.</para>
        </listitem>

        <listitem>
          <para>VNIC client may now use QUERY_CAPABILITY commands to interrogate
          what the firmware supports currently. Multiple QUERY_CAPABILITY commands
          may be send in parallel, up to one for each capability being
          interrogated.</para>
        </listitem>

        <listitem>
          <para>Firmware will respond with QUERY_CAPABILITY_RSP messages for
          each query sent.</para>
        </listitem>

        <listitem>
          <para>Once the queries are returned, the VNIC client uses the
          REQUEST_CAPABILITY commands to inform the firmware of the capabilities it
          plans on using. Until the capability has been requested and a successful
          response has been received, it will not function, and commands which use
          the capabilities will fail.</para>
        </listitem>

        <listitem>
          <para>Only the Capability-related commands are usable prior to
          sending a Login command.</para>
        </listitem>

        <listitem>
          <para>The VNIC client determines how many Sub-CRQs to set up based on
          the capabilities negotiated with the server and partition configuration,
          and attempts to set those up by allocating memory, mapping them with
          TCEs, and calling H_REG_SUB_CRQ iteratively for each Sub-CRQ.</para>
        </listitem>

        <listitem>
          <para>Once the VNIC client has successfully gotten each Sub-CRQ it
          needs registered (with some possibly failing due to unavailable
          resources), it parcels them out to specific queues (Transmit Completion
          and Receive Completion), and does a REQUEST_CAPABILITY for the
          appropriate number of each from firmware.</para>
        </listitem>

        <listitem>
          <para>Once the VNIC client has all SubCrqs registered, he sends a
          LOGIN CRQ to the server, specifying each Sub-CRQ handle and purpose as
          defined in the LOGIN command structure, and waits for a LOGIN_RSP which
          includes the server&#8217;s Sub-CRQ handles and purposes.</para>
        </listitem>

        <listitem>
          <para>Once the LOGIN_RSP has been returned successfully, the VNIC
          client is free to utilize the Transmit Submission Sub-CRQs and Receive
          Buffer Add Sub-CRQs, as well as any other VNIC command.</para>
        </listitem>

        <listitem>
          <para>Once the VNIC client is ready to receive frames (for the
          Logical Link State to transition to Link Up), it sends a
          LOGICAL_LINK_STATE command to firmware. If the VNIC client is also in
          control of the physical port, sending the LOGICAL_LINK_STATE command has
          the side effect of initiating physical port link negotiation, as
          appropriate.</para>
        </listitem>

        <listitem>
          <para>The firmware will send a LOGICAL_LINK_STATE_RSP once the link
          state is up.</para>
        </listitem>
      </orderedlist>		      
    </section>

    <section>
      <title>Adapter reboot</title>
      <para>In the event that system firmware encounters an error, needs to
      update the firmware on the adapter, or needs to remove the virtualized
      adapter from the partition, the following flows will happen.</para>

      <orderedlist>		      
        <listitem>
          <para>Firmware will close its CRQ and Sub-CRQs.</para>
        </listitem>

        <listitem>
          <para>VNIC client receives a TRANSPORT_EVENT specifying Partner
          Partition Closed or receives an H_Closed return code on a H_SEND_CRQ or
          H_SEND_SUB_CRQ hypervisor call.</para>
        </listitem>

        <listitem>
          <para>VNIC client closes all Sub-CRQs and CRQ using H_FREE_SUB_CRQ and
          H_FREE_CRQ. (Optionally, only H_FREE_CRQ could be used to close the CRQ
          and all Sub-CRQs.)</para>
        </listitem>

        <listitem>
          <para>VNIC client cleans up all outstanding unacknowledged transmit
          frames.</para>
        </listitem>

        <listitem>
          <para>VNIC client cleans up all receive buffers that had been given to
          the firmware.</para>
        </listitem>

        <listitem>
          <para>VNIC client opens the CRQ, and attempts the boot
          sequence.</para>
        </listitem>
      </orderedlist>		      
    </section>

    <section>
      <title>Partition Mobility</title>
      <para>In the event that an active partition is migrated to a new
      platform, the following sequence takes place.</para>

      <orderedlist>		      
        <listitem>
          <para>VNIC client receives a TRANSPORT_EVENT event specifying Partner
          Partition Suspended (Defined in 
          <xref linkend="dbdoclet.50569348_93265" />).</para>
        </listitem>

        <listitem>
          <para>VNIC client pauses submission of new transmit frames and receive
          add buffers.</para>
        </listitem>

        <listitem>
          <para>VNIC client closes all Sub-CRQs.</para>
        </listitem>

        <listitem>
          <para>VNIC client completes all outstanding unacknowledged transmit
          frames. This may involve queueing them for retransmission once the VNIC
          is recovered, or completing them as dropped, letting higher layers of the
          TCP/IP stack perform retransmission.</para>
        </listitem>

        <listitem>
          <para>VNIC client calls H_ENABLE_CRQ until H_Success is
          returned.</para>
        </listitem>

        <listitem>
          <para>VNIC client attempts the boot sequence.</para>
        </listitem>
      </orderedlist>		      
    </section>

    <section>
      <title>Dump</title>
      <para>Typical dump collection flow:</para>

      <orderedlist>		      
        <listitem>
          <para>VNIC client decides on the need for a VNIC dump.</para>
        </listitem>

        <listitem>
          <para>VNIC client sends a REQUEST_DUMP_SIZE command (see 
          <xref linkend="dbdoclet.50569384_98572" />) to system firmware.</para>
        </listitem>

        <listitem>
          <para>Firmware responds with a REQUEST_DUMP_SIZE_RSP with an estimate
          on the amount of storage required to store the dump into VNIC client
          memory.</para>
        </listitem>

        <listitem>
          <para>VNIC client allocates a buffer big enough to hold the dump, and
          maps it with TCEs.</para>
        </listitem>

        <listitem>
          <para>VNIC client sends a REQUEST_DUMP command (see 
          <xref linkend="dbdoclet.50569384_42328" />) to system firmware containing
          the IOBAs referring to the dump buffer.</para>
        </listitem>

        <listitem>
          <para>System firmware uses the supplied dump buffer to collect the
          memory that&#8217;s previously been registered by firmware as important
          for dumps.</para>
        </listitem>

        <listitem>
          <para>System firmware optionally collects physical adapter debug data
          into the dump buffer as well.</para>
        </listitem>

        <listitem>
          <para>System firmware sends a REQUEST_DUMP_RSP (see 
          <xref linkend="dbdoclet.50569384_99465" />) to the VNIC client,
          indicating the dump is complete.</para>
        </listitem>
      </orderedlist>		      
    </section>

    <section>
      <title>Frame Transmission</title>
      <para>Transmission of Ethernet frames using the VNIC protocol is
      accomplished using two or more Subordinate CRQs. The VNIC client
      allocates one or more Transmit Completion Sub-CRQs and system firmware
      allocates one or more Transmit Submission CRQs. The handles for each are
      exchanged during the LOGIN processing.</para>
      <para>The following numbered sequence details the simplified transmission
      of an Ethernet frame. As with any CRQ or Subordinate CRQ based protocol,
      the listed virtual interrupts may not occur for every CRQ or Sub-CRQ that
      is sent using H_SEND_CRQ, H_SEND_SUB_CRQ, or H_SEND_SUB_CRQ_INDIRECT. It
      is the firm intent of this protocol to allow the VNIC client and system
      firmware to batch frame transmission submission and transmit complete
      indications to minimize the number of virtual interrupts and to make the
      transmission of Ethernet frames as efficient as possible. Multiple
      Sub-CRQs may be presented to either the VNIC or system firmware with a
      single virtual interrupt.</para>

      <orderedlist>		      
        <listitem>
          <para>Operating system chooses a VNIC adapter to use for frame
          transmission.</para>
        </listitem>

        <listitem>
          <para>VNIC client device driver either copies the frame into a private
          buffer that&#8217;s already been mapped via a TCE or maps the frame with
          a TCE.</para>
        </listitem>

        <listitem>
          <para>VNIC client device driver constructs a Transmit Descriptor (or
          multiples) describing the TCE mapped buffer (see 
          <xref linkend="dbdoclet.50569384_46136" />).</para>
        </listitem>

        <listitem>
          <para>VNIC client device driver uses H_SEND_SUB_CRQ to pass the
          Transmit Descriptor to system firmware&#8217;s Transmit Submission
          Sub-CRQ.</para>
        </listitem>

        <listitem>
          <para>System firmware receives the Sub-CRQ event, and transforms it
          into the appropriate format for the specific Ethernet adapter being
          virtualized, and uses its embedded device driver to send the frame out
          the wire. The system firmware uses RDMA to DMA the frame directly from
          the VNIC client.</para>
        </listitem>

        <listitem>
          <para>The physical Ethernet device driver interrupts system firmware
          (or system firmware polls for completion at appropriate times) indicating
          the frame has been successfully transmitted. System firmware constructs a
          Transmit Completion Sub-CRQ event (see 
          <xref linkend="dbdoclet.50569384_32652" />), and places that Sub-CRQ onto
          the Transmit Completion Sub-CRQ.</para>
        </listitem>

        <listitem>
          <para>VNIC client removes the TCE mapping for the frame, and makes it
          available to its network stack.</para>
        </listitem>
      </orderedlist>		      
    </section>

    <section>
      <title>Frame Reception</title>
      <para>Reception of Ethernet frames is accomplished using two or more
      Sub-CRQs, similar to frame transmission. System firmware creates one or
      more Receive Buffer Add Sub-CRQs and the VNIC client creates one or more
      Receive Completion Sub-CRQs.</para>
      <para>The following numbered sequence details the simplified reception of
      an Ethernet frame. As with any CRQ or Subordinate CRQ based protocol, the
      listed virtual interrupts may not occur for every CRQ or Sub-CRQ that is
      sent using H_SEND_CRQ, H_SEND_SUB_CRQ, or H_SEND_SUB_CRQ_INDIRECT. It is
      the firm intent of this protocol to allow the VNIC client and system
      firmware to batch frame reception and buffer adding to minimize the
      number of virtual interrupts and to make the reception of Ethernet frames
      as efficient as possible. Multiple Sub-CRQs may be presented to either
      the VNIC or system firmware with a single virtual interrupt.</para>

      <orderedlist>		      
        <listitem>
          <para>When the VNIC client is started, the VNIC allocates several
          memory buffers to be used to the reception of Ethernet frames. The VNIC
          client maps those buffers with TCEs using its TCE mapping
          services.</para>
        </listitem>

        <listitem>
          <para>For each receive buffer, the VNIC client creates Add Receive
          Buffer Descriptor events (see 
          <xref linkend="dbdoclet.50569384_19523" />), and gives them to system
          firmware via the Receive Buffer Add Sub-CRQ using H_SEND_SUB_CRQ or
          H_SEND_SUB_CRQ_INDIRECT. Once this is done, the VNIC client should not
          use or otherwise modify the receive buffer until it&#8217;s been given
          back to the VNIC client using the Receive Sub-CRQ or the Sub-CRQs and CRQ
          have been freed using H_FREE_SUB_CRQ and H_FREE_CRQ.</para>
        </listitem>

        <listitem>
          <para>As system firmware receives the Receive Buffer Add Sub-CRQ
          events, it uses its physical adapter device driver to add the receive
          buffer to the physical adapter&#8217;s receive queues.</para>
        </listitem>

        <listitem>
          <para>A frame arrives for the physical adapter off of the physical
          wire, and the adapter dmas the frame directly to the VNIC client&#8217;s
          memory for one of the receive buffers.</para>
        </listitem>

        <listitem>
          <para>System firmware receives an interrupt from the physical adapter
          saying a frame has arrived, and uses the information it saves to generate
          a Receive Completion event Sub-CRQ (see 
          <xref linkend="dbdoclet.50569384_54724" />), and places it on the
          appropriate Receive Completion Sub-CRQ.</para>
        </listitem>

        <listitem>
          <para>The VNIC client receives a virtual interrupt for its Receive
          Completion Sub-CRQ, and passes the frame up its network stack.</para>
        </listitem>
      </orderedlist>		      
    </section>
  </section>
  <section>
    <title>VNIC Commands</title>
    <para>All VNIC commands are sent using H_SEND_CRQ.</para>
    <section xml:id="dbdoclet.50569384_34836">
      <title>Version Exchange</title>
      <para>The VERSION_EXCHANGE command as defined in 
      <xref linkend="dbdoclet.50569384_25438" /> allow the VNIC protocol to be
      easily updated in the future. Each side is required to support the
      highest common version of the VNIC protocol specification, as exchanged
      right after the low level CRQ registration flows.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_25438">
        <title>VERSION_EXCHANGE and VERSION_EXCHANGE_RSP
        Command</title>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="30*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="50*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte<?linebreak?>Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field should be either VERSION_EXCHANGE or
                VERSION_EXCHANGE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>Maximum version that VNIC client supports on a
                VERSION_EXCHANGE and the maximum version that system firmware
                supports on a VERSION_EXCHANGE_RSP. Each side must support the
                highest common version between the two versions. A value from 
                <xref linkend="dbdoclet.50569384_19008" /> will be contained in
                this field.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_19008">
        <title>VNIC Protocol Versions</title>
        <?dbhtml table-width="50%" ?><?dbfo table-width="50%" ?>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="50*" align="center" />
          <colspec colname="c2" colwidth="50*" align="center" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Value</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Initial VNIC protocol version</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>2-65535</para>
              </entry>
              <entry>
                <para>Reserved</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_72910">
      <title>VNIC Capabilities</title>
      <para>The VNIC capabilities command as defined in 
      <xref linkend="dbdoclet.50569384_96879" /> is used to create an abstracted
      architecture for discovering and utilizing different NIC advanced
      functions on adapters, in an adapter-independent manner. As new
      capabilities are introduced in adapters, more capability values will be
      added.</para>
      <para>To discover which capabilities a VNIC currently supports, multiple
      QUERY_CAPABILITY commands should be sent from the VNIC client for each
      capability of interest. System firmware will return the current
      capability setting, or a bad return code if the capability isn&#8217;t
      supported. System firmware will return UnsupportedOption for any
      capability it doesn&#8217;t understand.</para>
      <para>If the VNIC client wishes to use one of the supported capabilities,
      it must be enabled via the correct REQUEST_CAPABILITY command. If a
      capability has a variable number of settings (settable via the Number
      field), and system firmware doesn&#8217;t support the value, a
      PartialSuccess return code will be returned with the capped value in the
      response.</para>
      <para>If the VNIC client wishes to use REQUEST_CAPABILITY to determine if
      any specific capabilities are valid without performing QUERY_CAPABILITY
      commands, that&#8217;s acceptable, but there may be side effects as a
      result.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_96879">
        <title>CAPABILITIES Commands</title>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field should be QUERY_CAPABILITIES,
                REQUEST_CAPABILITIES, or their associated responses.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Capability</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This value should be one of the values from 
                <xref linkend="dbdoclet.50569384_72718" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field is used for both REQUESTs and QUERYs. For a
                REQUEST, it&#8217;s the value that the VNIC client wishes to
                use. On any RSP, it&#8217;s the new (or unchanged) current
                value of the capability.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_72718">
        <title>VNIC Capabilities</title>
        <tgroup cols="3">
          <colspec colname="c1" colwidth="25*" align="center" />
          <colspec colname="c2" colwidth="35*" />
          <colspec colname="c3" colwidth="40*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Value</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Behavior</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Minimum Number of firmware-supported Transmit
                Completion/Submission Queues</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>Minimum Number of firmware-supported Receive Completion
                Queues</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>Minimum Number of firmware-supported Receive Buffer Add
                Queues per Receive Completion Queue</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Maximum Number of firmware-supported Transmit
                Completion/Submission Queues</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>5</para>
              </entry>
              <entry>
                <para>Maximum Number of firmware-supported Receive Completion
                Queues</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>Maximum Number of firmware-supported Receive Buffer Add
                Queues per Receive Completion Queue</para>
              </entry>
              <entry>
                <para>- Query-only<?linebreak?>- Integer value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>7</para>
              </entry>
              <entry>
                <para>Requested Number of Transmit Completion/Submission
                Queues</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>Requested Number of Receive Completion Queues</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>Requested Number of Receive Buffer Add Queues per Receive
                Completion Queue</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>Minimum Number of Transmit Entries Per Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>11</para>
              </entry>
              <entry>
                <para>Minimum Number of Receive Buffer Add Entries per
                Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>Maximum Number of Transmit Entries Per Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>13</para>
              </entry>
              <entry>
                <para>Maximum Number of Receive Buffer Add Entries per
                Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>Requested Number of Transmit Entries Per Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>15</para>
              </entry>
              <entry>
                <para>Requested Number of Receive Buffer Add Entries per
                Sub-CRQ</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>TCP/IP offload supported</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Boolean value returned in Number. If TRUE, TCP/IP
                offload commands defined in 
                <xref linkend="dbdoclet.50569384_86912" /> are supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>17</para>
              </entry>
              <entry>
                <para>Promiscuous mode requested</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>- Boolean value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>18</para>
              </entry>
              <entry>
                <para>Promiscuous mode supported</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Boolean value returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>19</para>
              </entry>
              <entry>
                <para>Minimum MTU size</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>Maximum MTU size</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>21</para>
              </entry>
              <entry>
                <para>Requested MTU size</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>
                - Positive integer value set and returned in
                Number<?linebreak?>
                - This setting can impact the minimum number of queues or
                receive buffer sizes supported, and should either be set early
                or other capabilities will need to be reevaluated.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>22</para>
              </entry>
              <entry>
                <para>Maximum Number of Unique Multicast MAC address
                filters</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>- Positive integer value set and returned in Number</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>23</para>
              </entry>
              <entry>
                <para>VLAN Header insertion supported</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>
                - Boolean value returned in Number<?linebreak?>
                - This is controlled on a packet by packet basis in the
                transmit descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>&#160;</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>25</para>
              </entry>
              <entry>
                <para>Maximum Transmit Scatter Gather entries</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>
                - Positive integer value reflecting the maximum number of
                IOBAs that can be used to describe a single frame using
                Transmit Descriptors.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>26</para>
              </entry>
              <entry>
                <para>Receive Scatter/Gather Mode supported</para>
              </entry>
              <entry>
                <para>- Query only<?linebreak?>
                - Boolean value set and returned in Number.<?linebreak?>
                - If supported, this can enable chaining of receive
                buffers together to minimize the amount of memory that needs to
                be added in the form of Receive Buffers (Particularly if Large
                Receive Offload is enabled).</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>27</para>
              </entry>
              <entry>
                <para>Receive Scatter/Gather Mode Requested</para>
              </entry>
              <entry>
                <para>- Settable<?linebreak?>
                - Boolean value set and returned in Number.<?linebreak?>
                - This setting can impact the number of queues or receive
                buffer sizes supported, and should be set before configuring
                those values.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>28-65535</para>
              </entry>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>&#160;</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_24033">
      <title>Login Support</title>
      <para>The use of the LOGIN and LOGIN_RSP commands is defined in 
      <xref linkend="dbdoclet.50569384_61724" />. The format of the LOGIN
      command is defined in 
      <xref linkend="dbdoclet.50569384_74952" />, and the LOGIN_RSP command is
      defined in 
      <xref linkend="dbdoclet.50569384_17449" />.</para>
      <para>There must be exactly one Transmit Submission Sub-CRQ for each
      Transmit Completion Sub-CRQ, and vice versa. Each is implicitly tied to
      the other by virtue of the order each appears in the array of handles in
      the LOGIN Buffer and LOGIN Response buffer. (i.e. The first entry in each
      are associated, the second entry in each are associated, etc.)</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_74952">
        <title>LOGIN Request</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to LOGIN.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer containing the LOGIN Buffer as defined in 
                <xref linkend="dbdoclet.50569384_81443" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the length of the TCE-mapped LOGIN buffer.
                This value should match that as seen in the LOGIN
                Buffer.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_81443">
        <title>LOGIN Buffer</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Total Length</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the total length of the LOGIN
                Buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the version of LOGIN Buffer layout.
                The initial version should be set to 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Transmit Completion Sub-CRQs</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of Transmit Completion
                Sub-CRQs as allocated by the VNIC client.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Transmit Completion Sub-CRQ handles</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN buffer to the
                start of an array of 8 byte elements containing the array of
                Transmit Completion Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Receive Completion Sub-CRQs</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of Receive Completion
                Sub-CRQs as allocated by the VNIC client.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Receive Completion Sub-CRQ handles</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN Buffer to the
                start of an array of 8 byte elements containing the array of
                Receive Completion Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Login Response buffer IOBA</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O buffer address referencing a
                TCE-mapped buffer to be used for the system firmware to place
                its LOGIN Response buffer containing its variable length array
                of Sub-CRQ handles. This can point to the same storage as the
                LOGIN Buffer, as necessary.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Login Response buffer length</para>
              </entry>
              <entry>
                <para>28</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the Login Response
                buffer described in the Login Response buffer IOBA. The VNIC
                client needs to ensure that system firmware will have enough
                space to place each Sub-CRQ handle as requested prior to LOGIN
                using REQUEST_CAPABILITY commands.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Transmit Completion Sub-CRQ handle array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the Sub-CRQ
                handles obtained from H_REGISTER_SUB_CRQ for the Transmit
                Completion Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Receive Completion Sub-CRQ handle array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the Sub-CRQ
                handles obtained from H_REGISTER_SUB_CRQ for the Receive
                Completion Sub-CRQ handles.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_97019">
        <title>LOGIN Response Buffer</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Total Length</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the total length of the Login Response
                Buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the version of LOGIN Response Buffer
                layout. The initial version should be set to 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Transmit Submission Sub-CRQs</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of Transmit Submission
                Sub-CRQs as requested by the VNIC client and allocated by
                firmware.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Transmit Submission Sub-CRQ handles</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN Response Buffer to
                the start of an array of 8 byte elements containing the array
                of Transmit Submission Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Receive Buffer Add Sub-CRQs</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the total number of Receive Buffer
                Add Sub-CRQs as requested by the VNIC client and allocated by
                the firmware. The first n correspond to the first Receive
                Completion Sub-CRQ, the next n to the second, etc., where n is
                the Requested number of Receive Buffer Add Sub-CRQs per Receive
                Completion Queue requested by the VNIC client.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Receive Buffer Add Sub-CRQ handles</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN Response Buffer to
                the start of an array of 8 byte elements containing the array
                of Receive Buffer Add Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Receive Buffer Add Buffer Size</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN Response Buffer to
                the start of an array of 8 byte sizes. There is one size for
                each Receive Buffer Add Sub-CRQ, and each size represents the
                receive buffer size possible for that specific Receive Buffer
                Add Sub-CRQ.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Supported Transmit Descriptors</para>
              </entry>
              <entry>
                <para>28</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of supported Transmit
                Descriptors, as detailed in 
                <xref linkend="dbdoclet.50569384_88683" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to Supported Transmit Descriptors array</para>
              </entry>
              <entry>
                <para>32</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>Offset from the beginning of the LOGIN Response Buffer to
                the start of an array of 1 byte values. There is one value for
                each supported Transmit Descriptor format, sorted so the
                formats with best performance will be first in the
                array.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Transmit Submission Sub-CRQ handle array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the Sub-CRQ
                handles obtained from H_REGISTER_SUB_CRQ for the Transmit
                Submission Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Receive Buffer Add Sub-CRQ handle array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the Sub-CRQ
                handles obtained from H_REGISTER_SUB_CRQ for the Receive Buffer
                Add Sub-CRQ handles.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Receive Buffer Add Buffer Size array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the Receive
                Buffer Sizes must use for the respective Receive Buffer Add
                Sub-CRQs.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Supported Transmit Descriptors array</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is a variable sized array containing the
                performance-order sorted array of one byte supported Transmit
                Descriptor formats.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_17449">
        <title>LOGIN_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to LOGIN_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_19462">
      <title>Physical Port Parameters</title>
      <para>A VNIC client may always use the QUERY_PHYS_PARM command to
      retrieve information about the current physical port state such as
      current link speed and state.</para>
      <para>A VNIC client may always use the QUERY_PHYS_CAPABILITIES command to
      retrieve information about the current capabilities of the physical
      adapter associated with the VNIC, including allowed speed, duplex, and
      ability to modify those values.</para>
      <para>If the VNIC client wishes to determine all bits that are supported
      by firmware, it may choose to send a QUERY_PHYS_CAPABILITIES command with
      no bits turned on. Firmware will respond with all possible bits it
      supports. If the VNIC client wishes to determine if a specific bit
      combination is supported by firmware, it may turn on those specific bit
      combinations. In that case, firmware will validate the combination, and
      validate the specific combination.</para>
      <para>If the system administrator has configured the VNIC to have
      physical port configuration authority, the VNIC client may also use the
      SET_PHYS_PARMS command to change those values.</para>
      <para>The SET_PHYS_PARMS, QUERY_PHYS_PARMS, and QUERY_PHYS_CAPABILITIES
      commands all use a common command format defined in 
      <xref linkend="dbdoclet.50569384_48153" />.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_48153">
        <title>Physical Port Parameters Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be either SET_PHYS_PARMS,
                QUERY_PHYS_PARMS, QUERY_PHYS_CAPABILITIES, or the respective
                response values.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>The following bits are used to either request the
                specific capability on a SET_PHYS_PARMS, indicate the
                capability to use that capability on a QUERY_PHYS_CAPABILITIES,
                or return the current value of the capability on a
                QUERY_PHYS_PARMS command.</para>
                <para>Bit 0: External loopback mode</para>
                <para>Bit 1: Internal loopback mode</para>
                <para>Bit 2: Promiscuous mode</para>
                <para>Bit 3: Physical Link Active (VNIC can communicate onto
                the physical media)</para>
                <para>Bit 4: Autonegotiate Duplex</para>
                <para>Bit 5: Full duplex mode</para>
                <para>Bit 6: Half duplex mode</para>
                <para>Bit 7: If set, the VNIC has the ability to change
                physical port parameters.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: Adapter Logical Link Active (multiple VNICs on the
                same adapter can communicate)</para>
                <para>Bit 1-7: Reserved</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Speed</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>The following bits are used to either request the
                specific speed on a SET_PHYS_PARMS, indicate the capability to
                use that speed on a QUERY_PHYS_CAPABILITIES, or return the
                current speed on a QUERY_PHYS_PARMS command.</para>
                <para>Bit 0: Autonegotiate speed</para>
                <para>Bit 1: 10 megabit speed</para>
                <para>Bit 2: 100 megabit speed</para>
                <para>Bit 3: 1 gigabit speed</para>
                <para>Bit 4: 10 gigabit speed</para>
                <para>Bit 5-31: These bits are reserved, and should be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MTU</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is used to request a MTU for this VNIC client,
                and to return the current MTU setting. If this value exceeds
                the allowed value in the case where there are multiple VNICs
                associated with the same physical adapter, this MTU will be
                capped to an allowable value, and a PartialSuccess return code
                will be returned on the SET_PHYS_PARMS command.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>On a response, this is a return code for the operation as
                defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_63487">
      <title>Logical Link State</title>
      <para>When the VNIC does not have authority to change the physical port
      parameters, the LOGICAL_LINK_STATE command and response provide a method
      for the VNIC to inform system firmware when it&#8217;s ready to receive
      packets. The format of the LOGICAL_LINK_STATE and LOGICAL_LINK_STATE_RSP
      commands is defined in 
      <xref linkend="dbdoclet.50569384_73732" />.</para>
      <para>The current VNIC logical link state will always be returned in the
      Link State field on a LOGICAL_LINK_STATE_RSP.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_73732">
        <title>LOGICAL_LINK_STATE and LOGICAL_LINK_STATE_RSP
        commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be either LOGICAL_LINK_STATE or
                LOGICAL_LINK_STATE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Link State</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is used to request a logical link state change
                by the VNIC client without a corresponding change to the
                physical link state. The intended use for this is when a VNIC
                client is associated with a NIC VF that doesn&#8217;t have
                control over the physical port to control when the VNIC client
                receives incoming frames.</para>
                <para>If this field is a 0, the link should be down, if the
                field is a 1, the link should be up.</para>
                <para>if this field is 0xFF, no logical link state change will
                be done, and the current logical link state will be returned in
                the response.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_86912">
      <title>TCP, UDP, and IP Offload Support</title>
      <para>The QUERY_IP_OFFLOAD command as defined in 
      <xref linkend="dbdoclet.50569384_90384" /> allows the VNIC client to
      determine what facilities exist in the VNIC system firmware, and its
      limitations, if any.</para>
      <para>Based on the capabilities and limitations, the CONTROL_IP_OFFLOAD
      command as defined in 
      <xref linkend="dbdoclet.50569384_70694" /> allows the VNIC client to
      enable appropriate offload capabilities. QUERY_IP_OFFLOAD and
      CONTROL_IP_OFFLOAD must be done prior to successful LOGIN
      exchange.</para>
      <para>All offload parameters are off by default.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_90384">
        <title>QUERY_IP_OFFLOAD and QUERY_IP_OFFLOAD_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be either QUERY_IP_OFFLOAD or
                QUERY_IP_OFFLOAD_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the QUERY_IP_OFFLOAD
                buffer</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to return IP offload
                information. On reception of a successful QUERY_IP_OFFLOAD_RSP,
                the buffer will be filled in with the structure as defined in 
                <xref linkend="dbdoclet.50569384_75230" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_70694">
        <title>CONTROL_IP_OFFLOAD and CONTROL_IP_OFFLOAD_RSP
        Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be CONTROL_IP_OFFLOAD or
                CONTROL_IP_OFFLOAD_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer containing the parameters to enable or
                disable TCP, UDP, and IP offload. The format of this buffer is
                defined in 
                <xref linkend="dbdoclet.50569384_28116" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the CONTROL_IP_OFFLOAD
                buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_75230">
        <title>QUERY_IP_OFFLOAD Buffer</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="30*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="50*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Total Length</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the total length of the QUERY_IP_OFFLOAD
                Buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the version of QUERY_IP_OFFLOAD
                Buffer layout. The initial version should be 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IPv4 Checksum offload supported</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IPv6 Checksum offload supported</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP over IPv4 checksum offload supported</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP over IPv6 checksum offload supported</para>
              </entry>
              <entry>
                <para>11</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>UDP over IPv4 checksum offload supported</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>UDP over IPv6 checksum offload supported</para>
              </entry>
              <entry>
                <para>13</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Large send offload over IPv4 supported</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Large send offload over IPv6 supported</para>
              </entry>
              <entry>
                <para>15</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Large receive offload over IPv4 supported</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Large receive offload over IPv4 supported</para>
              </entry>
              <entry>
                <para>17</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>18</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>This field is reserved, and is set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum IPv4 header size</para>
              </entry>
              <entry>
                <para>32</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of the IPv4 header
                for offload operations, or 0xFFFF if no limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum IPv6 header size</para>
              </entry>
              <entry>
                <para>34</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of the IPv6 header
                for offload operations, or 0xFFFF if no limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum TCP header size</para>
              </entry>
              <entry>
                <para>36</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of the TCP header
                for offload operations, or 0xFFFF if no limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum UDP header size</para>
              </entry>
              <entry>
                <para>38</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of the UDP header
                for offload operations, or 0xFFFF if no limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum Large send offload size</para>
              </entry>
              <entry>
                <para>40</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of a pseudo-frame
                for large send offload operations, or 0xFFFFFFFF if no
                limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Maximum Large receive offload size</para>
              </entry>
              <entry>
                <para>44</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the maximum size of a pseudo-frame
                for large receive offload operations, or 0xFFFFFFFF if no
                limit.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>This field is reserved, and is set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IPv6 Extension Header supported</para>
              </entry>
              <entry>
                <para>64</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a 0 if no extension headers are
                supported.</para>
                <para>This field contains a 1 if extension headers are
                supported with limits</para>
                <para>This field contains a 0xFF if all IPv6 extension headers
                are supported</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP Pseudosum required</para>
              </entry>
              <entry>
                <para>65</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 0 if no pseudosum is required in the
                frame.</para>
                <para>This field is 1 if a standard pseudosum is required to be
                put in the frame.</para>
                <para>All other values are reserved.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>66</para>
              </entry>
              <entry>
                <para>30</para>
              </entry>
              <entry>
                <para>This field is reserved, and is set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of IPv6 extension headers supported</para>
              </entry>
              <entry>
                <para>96</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field must be non zero if the IPv6 Extension Header
                supported field is 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to List of supported IPv6 extension headers</para>
              </entry>
              <entry>
                <para>98</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an offset from the start of the
                QUERY_IP_OFFLOAD buffer to the array of supported extension
                header values.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>102</para>
              </entry>
              <entry>
                <para>154</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Array of IPv6 extension header types</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is an array of one byte values that are the
                extension header types supported by IPv6 offload.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_28116">
        <title>CONTROL_IP_OFFLOAD Buffer</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="30*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="50*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Total Length</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the total length of the CONTROL_IP_OFFLOAD
                Buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the version of CONTROL_IP_OFFLOAD
                Buffer layout. The initial version should be set to 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable IPv4 Checksum offload</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable IPv6 Checksum offload</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable TCP over IPv4 checksum offload</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable TCP over IPv6 checksum offload</para>
              </entry>
              <entry>
                <para>11</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable UDP over IPv4 checksum offload</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable UDP over IPv6 checksum offload</para>
              </entry>
              <entry>
                <para>13</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable Large send offload over IPv4</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable Large send offload over IPv6</para>
              </entry>
              <entry>
                <para>15</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Enable bad packet reception</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 if desired</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>17</para>
              </entry>
              <entry>
                <para>111</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_70585">
      <title>Dump Support</title>
      <para>The dumps collected via the VNIC interface is a smart dump that
      depends upon a working device driver. If the portion of system firmware
      servicing the physical adapter has run into catastrophic problems, an
      entire memory image of the associated firmware will be collected
      automatically, and collected in a similar fashion to platform
      dumps.</para>
      <para>If the VNIC client detects that the VNIC interface is not providing
      the services in the manner it expects, it may utilize the dump support to
      collect focused debugging data collected and stored in VNIC client
      storage that&#8217;s been TCE-mapped.</para>
      <para>The format of the REQUEST_DUMP command is defined in 
      <xref linkend="dbdoclet.50569384_42328" />, and the format of the
      REQUEST_DUMP_RSP command is defined in 
      <xref linkend="dbdoclet.50569384_99465" />.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_98572">
        <title>REQUEST_DUMP_SIZE and REQUEST_DUMP_SIZE_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be either REQUEST_DUMP_SIZE or
                REQUEST_DUMP_SIZE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is set to the estimated length of the VNIC
                dump in the REQUEST_DUMP_RSP if the return code was
                Success.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_42328">
        <title>REQUEST_DUMP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_DUMP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to place the VNIC
                dump.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the VNIC dump
                buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_99465">
        <title>REQUEST_DUMP_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_DUMP_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Dumped Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the amount of data placed into the
                dump buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_69706">
      <title>Reliability, Availability, and Service (RAS) Support</title>
      <para>The VNIC RAS support allows the tracing of information within
      system firmware, and control of consistency checking done by firmware.
      Individual components of firmware will be exposed to the VNIC Client, and
      each component can independently have their tracing and error checking
      levels increased and decreased. Each individual component&#8217;s trace
      information can be collected independently from others.</para>
      <para>Trace entries will be returned to the VNIC client in timebase
      order.</para>
      <para>The upper 16 bits of the trace ID for the Firmware Trace Data
      Format are an AIX RAS tracehook ID, and the lower 16 bits are an AIX RAS
      subhookid.</para>
      <para>Prior to a successful LOGIN request, all components related to the
      VNIC may not be available in the list of components. To get a complete
      list of all possible components, the RAS commands should be delayed until
      after a successful LOGIN unless a pre-LOGIN problem is being
      diagnosed.</para>
      <para>The CONTROL_RAS command can be used to resize the individual
      components&#8217; trace buffers, but due to the limited memory available
      in the system firmware, increasing the sizes of one trace buffer may
      require decreasing the size of a different component&#8217;s trace
      buffer.</para>
      <para>The REQUEST_RAS_COMP_NUM and REQUEST_RAS_COMP_NUM_RSP commands are
      defined in 
      <xref linkend="dbdoclet.50569384_60833" />, and the REQUEST_RAS_COMPS and
      REQUEST_RAS_COMPS_RSP command format is defined in 
      <xref linkend="dbdoclet.50569384_31394" />. The COLLECT_FW_TRACE and
      COLLECT_FW_TRACE_RSP commands are defined in 
      <xref linkend="dbdoclet.50569384_83168" />.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_60833">
        <title>REQUEST_RAS_COMP_NUM and REQUEST_RAS_COMP_NUM_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_RAS_COMP_NUM or
                REQUEST_RAS_COMP_NUM_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Components</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of individual firmware
                components whose RAS characteristics can be independently
                modified.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>On a response, this field will contain a return code for
                the request as defined in 
                <xref linkend="dbdoclet.50569384_76174" />. This field is
                reserved for a request.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>.</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_31394">
        <title>REQUEST_RAS_COMPS and REQUEST_RAS_COMPS_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_RAS_COMPS or
                REQUEST_RAS_COMPS_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address of a TCE-mapped
                buffer containing an array of Firmware Component structures as
                defined in 
                <xref linkend="dbdoclet.50569384_79000" />. The VNIC client
                should ensure the buffer is large enough to contain the number
                of components as returned in a REQUEST_RAS_COMP_NUM_RSP
                command.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the length of the buffer referred to by the
                IOBA field. It should be some multiple of the size of the
                Firmware Component format.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_89550">
        <title>CONTROL_RAS and CONTROL_RAS_RSP Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be CONTROL_RAS or CONTROL_RAS_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a Correlator for a Firmware Component
                as defined in 
                <xref linkend="dbdoclet.50569384_79000" /> that this command
                should act on.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Level</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This value should be a value between 0 and 9, where a
                larger number indicates a higher detail of tracing or error
                checking.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Operation</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field controls what action the CONTROL_RAS command
                performs.</para>
                <para>If this value is a 1, use the Level field to modify the
                current trace level of the specified component.</para>
                <para>If this value is a 2, use the Level field to modify the
                current error checking level of the specified component.</para>
                <para>If this value is a 3, suspend the tracing for the
                specified component that was previously on.</para>
                <para>If this value is a 4, resume the tracing for the
                specified component that was previously suspended.</para>
                <para>If this value is a 5, turn tracing for the specified
                component on.</para>
                <para>If this value is a 6, turn tracing for the specified
                component off.</para>
                <para>If this value is a 7, change the size of the specified
                trace buffer for the specified component.</para>
                <para>All other values are reserved.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Buffer Size</para>
              </entry>
              <entry>
                <para>5</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>If Operation is a 7, this field contains the requested
                size of the specified trace buffer. On a response, will be
                filled in with the current size of the trace buffer.</para>
                <para>For all other Operation values, this field is
                reserved.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_83168">
        <title>COLLECT_FW_TRACE and COLLECT_FW_TRACE_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be COLLECT_FW_TRACE or
                COLLECT_FW_TRACE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a Correlator for a Firmware Component
                as defined in 
                <xref linkend="dbdoclet.50569384_79000" /> that this command
                should act on.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the I/O bus address of a TCE-mapped
                buffer of the indicated size that will be used by firmware to
                return the trace.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Buffer Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the buffer in bytes
                used to collect the trace information. On a COLLECT_FW_RSP,
                this value will indicate how much trace data is actually placed
                in the buffer. The trace data is an array of entries with the
                format as defined in 
                <xref linkend="dbdoclet.50569384_10583" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_10583">
        <title>Firmware Trace Data Entry Format</title>
        <?dbhtml table-width="40%" ?><?dbfo table-width="40%" ?>
        <tgroup cols="3">
          <colspec colname="c1" colwidth="60*" align="center" />
          <colspec colname="c2" colwidth="20*" align="center" />
          <colspec colname="c3" colwidth="20*" align="center" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Trace ID</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number Valid Trace Data</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>5</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>PMC Registers</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Timebase</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Data 1</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Data 2</para>
              </entry>
              <entry>
                <para>32</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Data 3</para>
              </entry>
              <entry>
                <para>40</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Data 4</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Data 5</para>
              </entry>
              <entry>
                <para>56</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_79000">
        <title>Firmware Component Format</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Component Name</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>This field contains an ASCII string containing a readable
                name of the component.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Buffer Size</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the size of the trace buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>52</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a value to be used on a
                COLLECT_FW_TRACE or CONTROL_RAS command to identify which
                component to operate on.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace Level</para>
              </entry>
              <entry>
                <para>53</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field shows the current trace level, as defined in 
                <xref linkend="dbdoclet.50569384_89550" />.</para>
                <para>A value of 0xFF indicates this component does not support
                tracing.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Parent Correlator</para>
              </entry>
              <entry>
                <para>54</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains the correlator of the parent
                component. If this value is 0xFF, there is no parent.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Error Checking</para>
              </entry>
              <entry>
                <para>55</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains the error checking level for this
                component. It contains a value from 0-9, where 0 means no extra
                error checking, and 9 means the highest level of consistency
                checking.</para>
                <para>A value of 0xFF indicates this component does not support
                changing its level of error checking.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Trace State</para>
              </entry>
              <entry>
                <para>56</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>If this field is a 0, the component&#8217;s tracing is
                turned off. If this field is a 1, the component&#8217;s tracing
                is turned on.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>57</para>
              </entry>
              <entry>
                <para>7</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Description</para>
              </entry>
              <entry>
                <para>64</para>
              </entry>
              <entry>
                <para>192</para>
              </entry>
              <entry>
                <para>This field contains an ASCII string containing a readable
                description of the component.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_18536">
      <title>Statistics Support</title>
      <para>The REQUEST_STATISTICS command as defined in 
      <xref linkend="dbdoclet.50569384_28924" /> is used by the VNIC client to
      obtain statistic counters kept by system firmware and the physical
      adapter supporting the VNIC.</para>
      <para>The REQUEST_STATISTICS_RSP command is defined in 
      <xref linkend="dbdoclet.50569384_78993" />.</para>
      <para>In the event a given VNIC does not support the retrieval of certain
      of the statistics, the statistic will have a -1 value returned in
      it.</para>
      <para>The REQUEST_DEBUG_STATS command defined in 
      <xref linkend="dbdoclet.50569384_30474" /> is used by the VNIC client to
      retrieve an unarchitected block of statistics that is implementation
      dependent which may be used to debug firmware problems. This is an
      optional command, and the actual data returned may vary from
      implementation to implementation.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_28924">
        <title>REQUEST_STATISTICS Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_STATISTICS.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: If set, retrieve the physical port statistics. If
                the VNIC doesn&#8217;t have authority to retrieve the physical
                port statistics, the command may fail. If this bit is 0,
                retrieve the logical port statistics.</para>
                <para>Bit 1: If this field is set to 1, clear the statistics.
                If this field is set to 0, do not clear any statistics.</para>
                <para>Bit 2-7: This fields are reserved, and should be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to place the VNIC
                statistics block as defined in 
                <xref linkend="dbdoclet.50569384_71370" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the VNIC statistics
                buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_78993">
        <title>REQUEST_STATISTICS_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_STATISTICS_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_71370">
        <title>VNIC Statistics Version 1</title>
        <?dbhtml table-width="50%" ?><?dbfo table-width="50%" ?>
        <tgroup cols="3">
          <colspec colname="c1" colwidth="60*" align="center" />
          <colspec colname="c2" colwidth="20*" align="center" />
          <colspec colname="c3" colwidth="20*" align="center" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Promiscuous</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Received Packets</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Bytes Received</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Packets Sent</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Bytes Sent</para>
              </entry>
              <entry>
                <para>32</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Unicast Packets Sent</para>
              </entry>
              <entry>
                <para>40</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Unicast Packets Received</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Multicast Packets Sent</para>
              </entry>
              <entry>
                <para>56</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Multicast Packets Received</para>
              </entry>
              <entry>
                <para>64</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Broadcast Packets Sent</para>
              </entry>
              <entry>
                <para>72</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Broadcast Packets Received</para>
              </entry>
              <entry>
                <para>80</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Alignment Errors</para>
              </entry>
              <entry>
                <para>88</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>FCS Errors</para>
              </entry>
              <entry>
                <para>96</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Single Collision Frames</para>
              </entry>
              <entry>
                <para>104</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Multiple Collision Frames</para>
              </entry>
              <entry>
                <para>112</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>SQE Test Errors</para>
              </entry>
              <entry>
                <para>120</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Deferred Transmissions</para>
              </entry>
              <entry>
                <para>128</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Late Collisions</para>
              </entry>
              <entry>
                <para>136</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Excess Collisions</para>
              </entry>
              <entry>
                <para>144</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Internal MAC Transmit Errors</para>
              </entry>
              <entry>
                <para>152</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Carrier Sense</para>
              </entry>
              <entry>
                <para>160</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Too Long Frames</para>
              </entry>
              <entry>
                <para>168</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Internal MAC Receive Errors</para>
              </entry>
              <entry>
                <para>176</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>DMA Receive Overrun</para>
              </entry>
              <entry>
                <para>184</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>DMA Transmit Underrun</para>
              </entry>
              <entry>
                <para>192</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Receive No Resource</para>
              </entry>
              <entry>
                <para>200</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Too Short Frames</para>
              </entry>
              <entry>
                <para>208</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>216</para>
              </entry>
              <entry>
                <para>40</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_30474">
        <title>REQUEST_DEBUG_STATS command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_DEBUG_STATS or
                REQUEST_DEBUG_STATS_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to place the VNIC
                debug statistics block.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the VNIC statistics
                buffer. On a REQUEST_DEBUG_STATS_RSP, contains the amount of
                data filled in.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_92282">
      <title>Error Reporting Support</title>
      <para>If system firmware encounters an error processing requests related
      to the physical adapter being virtualized by the VNIC interface, it will
      generate ERROR_INDICATION commands to the VNIC client, as defined in 
      <xref linkend="dbdoclet.50569384_93668" />. The VNIC client may then, at
      its discretion, obtain detailed error information using the
      REQUEST_ERROR_INFO command as defined in 
      <xref linkend="dbdoclet.50569384_80533" />. It is the intent that the
      VNIC client should log the detailed error information using its normal
      error logging infrastructure and methods.</para>
      <para>The REQUEST_ERROR_INFO_RSP command as defined in 
      <xref linkend="dbdoclet.50569384_80533" /> is used by firmware to indicate
      the successful retrieval of error information. The retrieval of detailed
      error information allows firmware to reuse the resources for tracking
      that error. Detailed error information can only be requested for a
      specific error once.</para>
      <para>If system firmware encounters an error while the VNIC client is not
      connected, firmware will log the detailed error information using
      firmware error logging methods.</para>
      <para>Firmware will have a finite amount of space reserved for storing
      detailed error information. In some situations, some detailed error
      information may be unavailable in response to a REQUEST_ERROR_INFO
      command if too many errors are being logged in firmware. If the detailed
      error information is overwritten prior to the VNIC client performing the
      relative REQUEST_ERROR_INFO command, an error return code will be
      returned.</para>
      <para>If the fatal error bit is set, the VNIC firmware has encountered a
      fatal error preventing it from automatically recovering from the error.
      The VNIC client should use the RAS facilities to collect any error
      information, collect any RAS tracing, statistics, and possibly a dump.
      Once all available error data has been collected, it is the VNIC
      client&#8217;s responsibility to cause the VNIC to restart. This can be
      accomplished in one of two ways: by freeing its CRQ using H_FREE_CRQ, or
      by initiating a VNIC reset using the H_VIOCTL FW_RESET
      subfunction.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_93668">
        <title>ERROR_INDICATION Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be ERROR_INDICATION.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: If this bit is 1, this is a fatal error.</para>
                <para>Bit 1-7: These fields are reserved, and should be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Error Identification</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is set to the error identification number that
                can be used to retrieve detailed information about the error
                using the REQUEST_ERROR_INFO command. If this value is set to
                0, there is no more detailed error information to retrieve, and
                the ERROR_INDICATION contains all relevant information.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Detailed Error Size</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the size of the detailed error
                information associated with the error.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Error Cause</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains a value as detailed in 
                <xref linkend="dbdoclet.50569384_28607" /> showing the cause of
                the error.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_80533">
        <title>REQUEST_ERROR_INFO Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_ERROR_INFO.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Buffer IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the I/O bus address of a TCE-mapped
                buffer to be used by system firmware to write the detailed
                error information into.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Buffer Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the TCE-mapped
                buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Error Identification</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the error identification from an
                ERROR_INDICATION command that specifies which detailed error
                information to obtain.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1">
        <title>REQUEST_ERROR_INFO_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be REQUEST_ERROR_INFO_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Error Identification</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the error identification from an
                ERROR_INDICATION command. This field can be used to correlate
                this response to s REQUEST_ERROR_INFO command, allowing
                multiple requests for errors to be outstanding at the same
                time.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of data successfully
                returned in the TCE-mapped buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_28607">
        <title>Error Cause</title>
        <?dbhtml table-width="40%" ?><?dbfo table-width="40%" ?>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="50*" align="center" />
          <colspec colname="c2" colwidth="50*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Value</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Adapter Problem</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Bus Problem</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Firmware Problem</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Device Driver Problem</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>EEH Recovery</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Firmware Updated</para>
              </entry>
              <entry>
                <para>5</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Low Memory</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>7-65535</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_64394">
      <title>Link State Change</title>
      <para>This LINK_STATE_INDICATION command as defined in 
      <xref linkend="dbdoclet.50569384_57885" /> is an unacknowledged command
      sent by system firmware to inform the VNIC client when the state of the
      link changes. The VNIC client can also use QUERY_PHYS_PARMS at any time
      to poll for link state changes.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_57885">
        <title>LINK_STATE_INDICATION Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be LINK_STATE_INDICATION.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Physical Link State</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>If this field is a 0, the physical link is down, if the
                field is a 1, the physical link is up.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Logical Link State</para>
              </entry>
              <entry>
                <para>5</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>If this field is a 0, the logical link is down and the
                VNIC cannot communicate with other VNICs on the same adapter,
                if the field is a 1, the logical link is up, and the VNIC can
                communicate with other VNICs on the same adapter.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_73515">
      <title>Change MAC Address</title>
      <para>The CHANGE_MAC_ADDR command defined in 
      <xref linkend="dbdoclet.50569384_89331" /> allows the VNIC client to
      change the current MAC address. The request to change may fail due to
      Access Control List entries set up by the administrator.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_89331">
        <title>CHANGE_MAC_ADDR and CHANGE_MAC_ADDR_RSP Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be CHANGE_MAC_ADDR or
                CHANGE_MAC_ADDR_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MAC Address</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field contains the new requested MAC address on a
                CHANGE_MAC_ADDR command, and the current MAC address on a
                CHANGE_MAC_ADDR_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_44489">
      <title>Multicast Support</title>
      <para>The MULTICAST_CTRL command defined in 
      <xref linkend="dbdoclet.50569384_45687" /> allows the VNIC client to
      manage the reception of Multicast Ethernet traffic. Individual multicast
      MAC addresses may be enabled and disabled, as well as all multicast
      traffic.</para>
      <para>The VNIC client can choose to enable more than the maximum unique
      multicast Ethernet addresses as returned in the Capabilities exchange. In
      the event the VNIC client does so, system firmware will either enable the
      MAC address via a non-exact hashing multicast reception mechanism if the
      hardware supports it, or will enable all multicast addresses. When this
      is done, system firmware will report exact matches through the unique
      multicast Ethernet filter via the Exact Match bit defined in the Receive
      Completion Descriptor as defined in 
      <xref linkend="dbdoclet.50569384_54724" />. If the Exact Match bit is
      off, and a multicast packet was returned in the Receive Completion
      Descriptor, the multicast packet either matches a non-exact hashing
      mechanism if one exists or system firmware has enabled all multicast MAC
      address reception.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_45687">
        <title>MULTICAST_CTRL and MULTICAST_CTRL_RSP
        Commands</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be MULTICAST_CTRL or
                MULTICAST_CTRL_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MAC Address</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field contains the new requested multicast MAC
                address, as appropriate for the specific options
                requested.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: Enable specified multicast MAC address</para>
                <para>Bit 1: Disable specified multicast MAC address</para>
                <para>Bit 2: Enable the reception of all multicast MAC
                addresses. This does not affect the multicast addresses enabled
                through Bit 0.</para>
                <para>Bit 3: Disable the reception of all multicast MAC
                addresses. This does not affect the multicast addresses enabled
                through Bit 0.</para>
                <para>Bit 4-7: These bits are reserved, and should be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_64959">
      <title>VPD Support</title>
      <para>The VPD commands may be used by the VNIC client to collect, store,
      and display VPD related to the physical adapter backing the VNIC. As the
      exact adapter may change during partition mobility operations, it is
      suggested this data not be relied upon operationally, and be used with
      the understanding that it may change from request to request.</para>
      <para>The VPD commands are defined in 
      <xref linkend="dbdoclet.50569384_24191" />, 
      <xref linkend="dbdoclet.50569384_29002" />, 
      <xref linkend="dbdoclet.50569384_55363" />, and 
      <xref linkend="dbdoclet.50569384_97352" />.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_24191">
        <title>GET_VPD_SIZE Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be GET_VPD_SIZE.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_29002">
        <title>GET_VPD_SIZE_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be GET_VPD_SIZE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field contains the length of the VPD present.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_55363">
        <title>GET_VPD Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be GET_VPD.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to place the VNIC
                VPD.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the VPD buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_97352">
        <title>GET_VPD_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be GET_VPD_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_15227">
      <title>Access Control Support</title>
      <para>The VNIC may have certain Access Control Lists (ACLs) in effect,
      and some of these may change dynamically. The ACL_CHANGE_INDICATION
      command defined in 
      <xref linkend="dbdoclet.50569384_25994" /> is sent by system firmware to
      the VNIC client in the event any of the ACLs have changed
      dynamically.</para>
      <para>The ACL_QUERY command defined in 
      <xref linkend="dbdoclet.50569384_78341" /> and its associated response
      defined in 
      <xref linkend="dbdoclet.50569384_65642" /> may be used by the VNIC client
      to obtain information about the ACLs in effect to enable earlier error
      checking or ease of use functions.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_25994">
        <title>ACL_CHANGE_INDICATION</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be ACL_CHANGE_INDICATION.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Change Type</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>If this field is a 0, the MAC address ACLs have
                changed.</para>
                <para>If this field is a 1, the VLAN id ACLs have
                changed.</para>
                <para>All other values are reserved.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_78341">
        <title>ACL_QUERY</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be ACL_QUERY.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to place the ACL
                information. Upon reception of a ACL_QUERY_RSP with a Success
                return code, this buffer will be filled in with the structure
                as defined in 
                <xref linkend="dbdoclet.50569384_92066" /></para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Size</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the size of the buffer mapped by the
                IOBA.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_65642">
        <title>ACL_QUERY_RSP</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be ACL_QUERY_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_92066">
        <title>ACL Buffer</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Total Length</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is the total length of the ACL Buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Version</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the version of ACL Buffer layout. The
                initial version should be set to 1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MAC ACLs in effect</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a 1 if there are MAC restrictions in
                effect, zero otherwise.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VLAN id ACLs in effect</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field contains a 1 if there are VLAN id ACLs in
                effect, zero otherwise.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>22</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Allowed MAC addresses</para>
              </entry>
              <entry>
                <para>32</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of allowable MAC
                addresses.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to array of allowed MAC addresses</para>
              </entry>
              <entry>
                <para>36</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an offset from the start of the ACL
                Buffer to an array of six byte MAC addresses.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of allowed VLAN ids</para>
              </entry>
              <entry>
                <para>40</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the number of allowable VLAN
                ids.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to array of allowed VLAN ids</para>
              </entry>
              <entry>
                <para>44</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an offset from the start of the ACL
                buffer to an array of 2 byte VLAN ids.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>48</para>
              </entry>
              <entry>
                <para>80</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Array of allowed MAC addresses</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is the array of six byte MAC addresses, with a size
                as defined in the Number of Allowed MAC address field.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Array of allowed VLAN ids</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>variable</para>
              </entry>
              <entry>
                <para>This is the array of two byte VLAN ids, with a size as
                defined in the Number of Allowed VLAN ids field.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="dbdoclet.50569384_82039">
      <title>Debugging Support</title>
      <para>The TUNE command defined in 
      <xref linkend="dbdoclet.50569384_59278" /> may be used by the VNIC client
      to opaquely pass tuning data from the VNIC client to system firmware. As
      the exact firmware backing a VNIC client may change during partition
      mobility operations, it is suggested this data not be relied upon
      operationally, and be used with the understanding that it may change from
      adapter to adapter.</para>
      <para>A TUNE_RSP command defined in 
      <xref linkend="dbdoclet.50569384_61084" /> will be generated by system
      firmware upon completion of the TUNE command.</para>
      <para>This command is an optional VNIC command, and may not be supported
      for all VNIC implementations or versions of system firmware.</para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_59278">
        <title>TUNE Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be TUNE.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is an I/O bus address referring to a
                TCE-mapped buffer used by system firmware to obtain the tuning
                parameters.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the VPD buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_61084">
        <title>TUNE_RSP Command</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>CRQ Type</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VNIC Command</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field will be TUNE_RSP.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Code</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This is a return code for the operation as defined in 
                <xref linkend="dbdoclet.50569384_76174" />.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
  </section>
  <section>
    <title>Subordinate CRQ Definitions</title>
    <para>Frame transmission and reception is handled through the Subordinate
    CRQ infrastructure, using the H_SEND_SUB_CRQ and H_SEND_SUB_CRQ_INDIRECT
    hypervisor calls.</para>
    <section xml:id="dbdoclet.50569384_88683">
      <title>Frame Transmission</title>
      <para>Since each Transmit Completion Sub-CRQ is tied to a specific
      Transmit Submission Sub-CRQ, the Transmit Descriptor correlator must only
      be unique for a given Transmit Completion Sub-CRQ.</para>
      <para>Several versions of Transmit Descriptors exist. Each version has a
      Descriptor Version byte at byte offset one in the descriptor, which
      specifies the layout of the later thirty bytes. A sorted array is
      returned in the LOGIN response specifying all versions of transmit
      descriptor supported by the VNIC. The versions of the transmit descriptor
      offering the best performance appear in the array first. All VNIC
      versions will support Transmit Descriptor Version Zero defined in 
      <xref linkend="dbdoclet.50569384_46136" />, but that version may not
      offer the best performance.</para>
      <para>Transmit Descriptor Version Two defined in 
      <xref linkend="dbdoclet.50569384_48728" /> is designed to be used in
      combination with a previous use of Transmit Descriptor Version Zero or
      Transmit Descriptor Version One defined in 
      <xref linkend="dbdoclet.50569384_15953" /></para>

      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_46136">
        <title>Transmit Descriptor Version Zero</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This value should be set to 0x80 to indicate a valid
                Sub-CRQ event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Descriptor Version</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 0 for a Version Zero Transmit
                Descriptor</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: If set to 1, this frame should use the large send
                offload feature of the physical adapter, assuming it was
                previously enabled through the use of CONTROL_IP_OFFLOAD
                command.</para>
                <para>Bit 1: If set to 1, this frame should use the IP checksum
                feature of the physical adapter, assuming it was previously
                enabled through the use of CONTROL_IP_OFFLOAD command.</para>
                <para>Bit 2: If set to 1, this frame should use the TCP
                checksum feature of the physical adapter, assuming it was
                previously enabled through the use of CONTROL_IP_OFFLOAD
                command.</para>
                <para>Bit 3: If set to 1, this frame should use the physical
                adapter&#8217;s capability of inserting VLAN headers, using the
                VLAN header field as the source for the values to
                insert.</para>
                <para>Bit 4:If set to 1, this frame should use the UDP checksum
                feature of the physical adapter, assuming it was previously
                enabled through the use of CONTROL_IP_OFFLOAD command.</para>
                <para>Bit 5: If set to 1, this frame spans multiple transmit
                descriptors.</para>
                <para>Bit 6: If set to 1, this frame contains the last fragment
                of a complete packet for transmission.</para>
                <para>Bit 7:If set to 1, this frame requires a transmit
                completion event to be posted to the VNIC client&#8217;s
                Transmit Completion Sub-CRQ. If set to 0, no completion event
                will be generated unless an error occurred.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IP Header offset</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0:If set to zero, this frame contains an IPv4 frame.
                If set to 1, this frames contains an IPv6 frame.</para>
                <para>Bits 1-7: This field should be set to the offset of IP
                header in the first descriptor of a chain if any checksum
                offload or large send offload is enabled.</para>
                <para>If neither checksum offload nor large send offload are
                enabled, this should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP/UDP Header offset or IP Data offset</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>In the first descriptor of a chain, if any checksum
                offload or large send offload function should be done for this
                packet, this field must be set to the offset of the first byte
                of data after the IP header and extension headers.</para>
                <para>If no checksum offload or large send offload function
                should be done for this packet, this field must be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VLAN Header</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>If VLAN header insertion has been enabled, this field
                contains the VLAN header to be inserted if indicated in the
                Flags byte.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MSS Size</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>If large send offload is enabled, this field contains the
                MSS size.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is set to a unique opaque value generated by
                the VNIC client that allows the device driver to correlate a
                transmit submission to an eventual completion. This value must
                be set even if the Completion Required bit is set to 0 in the
                event an error happens.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA1</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the first chunk of the transmit frame for
                this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length1</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This contains the length of the frame fragment pointed to
                by IOBA1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA2</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the second fragment of the transmit frame
                for this descriptor. If the corresponding length field is 0,
                this field is ignored.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length2</para>
              </entry>
              <entry>
                <para>28</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This contains the length of the frame fragment pointed to
                by IOBA2. If IOBA2 is invalid, this field should be set to
                0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_32652">
        <title>Transmit Completion Descriptor</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This value should be set to 0x80 to indicate a valid
                Sub-CRQ event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Number of Completions</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This is the number of return code and correlator pairs of
                this descriptor that are valid. It must be a value from 1 to
                5.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Return Codes</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>10</para>
              </entry>
              <entry>
                <para>This is an array of 5 two byte integer return codes as
                defined in 
                <xref linkend="dbdoclet.50569384_14812" />.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlators</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>This is an array of five four-byte correlator values as
                taken from the Transmit Submission Descriptor.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_15953">
        <title>Transmit Descriptor Version One</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This value should be set to 0x80 to indicate a valid
                Sub-CRQ event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Descriptor Version</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 1 for a Version One Transmit
                Descriptor</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: If set to 1, this frame should use the large send
                offload feature of the physical adapter, assuming it was
                previously enabled through the use of CONTROL_IP_OFFLOAD
                command.</para>
                <para>Bit 1: If set to 1, this frame should use the IP checksum
                feature of the physical adapter, assuming it was previously
                enabled through the use of CONTROL_IP_OFFLOAD command.</para>
                <para>Bit 2: If set to 1, this frame should use the TCP
                checksum feature of the physical adapter, assuming it was
                previously enabled through the use of CONTROL_IP_OFFLOAD
                command.</para>
                <para>Bit 3: If set to 1, this frame should use the physical
                adapter&#8217;s capability of inserting VLAN headers, using the
                VLAN header field as the source for the values to
                insert.</para>
                <para>Bit 4:If set to 1, this frame should use the UDP checksum
                feature of the physical adapter, assuming it was previously
                enabled through the use of CONTROL_IP_OFFLOAD command.</para>
                <para>Bit 5: If set to 1, this frame spans multiple transmit
                descriptors.</para>
                <para>Bit 6: If set to 1, this frame contains the last fragment
                of a complete packet for transmission.</para>
                <para>Bit 7:If set to 1, this frame requires a transmit
                completion event to be posted to the VNIC client&#8217;s
                Transmit Completion Sub-CRQ. If set to 0, no completion event
                will be generated unless an error occurred.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IP Header offset</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0:If set to zero, this frame contains an IPv4 frame.
                If set to 1, this frames contains an IPv6 frame.</para>
                <para>Bits 1-7: This field should be set to the offset of IP
                header in the first descriptor of a chain if any checksum
                offload or large send offload is enabled.</para>
                <para>If neither checksum offload nor large send offload are
                enabled, this should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP/UDP Header offset or IP Data offset</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>In the first descriptor of a chain, if any checksum
                offload or large send offload function should be done for this
                packet, this field must be set to the offset of the first byte
                of data after the IP header and extension headers.</para>
                <para>If no checksum offload or large send offload function
                should be done for this packet, this field must be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>VLAN Header</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>If this frame is a VLAN-tagged frame, this field contains
                the VLAN tag even if it is already present in the frame, and
                even if VLAN offload is disabled. If already present in the
                frame, this merely provides a hint to enable fast transmission
                of this frame. If the VLAN header is not present in the frame,
                this field contains the VLAN header to be inserted if indicated
                in the Flags byte.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MSS Size</para>
              </entry>
              <entry>
                <para>9</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>If large send offload is enabled, this field contains the
                MSS size.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is set to a unique opaque value generated by
                the VNIC client that allows the device driver to correlate a
                transmit submission to an eventual completion. This value must
                be set even if the Completion Required bit is set to 0 in the
                event an error happens.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA1</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the first chunk of the transmit frame for
                this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length1</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This contains the length of the frame fragment pointed to
                by IOBA1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Destination MAC address</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>6</para>
              </entry>
              <entry>
                <para>This field contains the destination MAC address as
                specified in the frame to be sent. The frame still must contain
                this information; this merely provides a hint to enable fast
                transmission of this frame.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Ethertype</para>
              </entry>
              <entry>
                <para>30</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains a copy of the ethertype from the
                specified frame to be sent. The frame still must contain this
                information; this merely provides a hint to enable fast
                transmission of this frame.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_48728">
        <title>Transmit Descriptor Version Two</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This value should be set to 0x80 to indicate a valid
                Sub-CRQ event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Descriptor Version</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is 2 for a Version Two Transmit Descriptor.
                This transmit descriptor should be used following another valid
                Transmit Descriptor Format such as Version Zero or Version One.
                It inherits any advanced features from the previous Transmit
                Descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0-5: These bits are reserved, and should be set to
                0.</para>
                <para>Bit 6: If set to 1, this frame contains the last fragment
                of a complete packet for transmission.</para>
                <para>Bit 7:If set to 1, this frame requires a transmit
                completion event to be posted to the VNIC client&#8217;s
                Transmit Completion Sub-CRQ. If set to 0, no completion event
                will be generated unless an error occurred.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>3</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This field is reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA1</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the first chunk of the transmit frame for
                this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length1</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the frame fragment
                pointed to by IOBA1.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>12</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field is set to a unique opaque value generated by
                the VNIC client that allows the device driver to correlate a
                transmit submission to an eventual completion. This value must
                be set even if the Completion Required bit is set to 0 in the
                event an error happens.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA2</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the second chunk of the transmit frame
                for this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length2</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This contains the length of the frame fragment pointed to
                by IOBA2.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA3</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains an I/O bus address valid for the VNIC
                device that refers to the third chunk of the transmit frame for
                this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length3</para>
              </entry>
              <entry>
                <para>28</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This contains the length of the frame fragment pointed to
                by IOBA3.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section>
      <title>Frame Reception</title>
      <para>Multiple Receive Buffer Add Sub-CRQs can be configured to allow the
      VNIC client to efficiently allocate receive buffers of different sizes.
      In the event multiple Sub-CRQs are allocated for this purpose, it is the
      VNIC client&#8217;s responsibility to always allocate the receive buffer
      size for the Receive Buffer Add Sub-CRQs that are returned by system
      firmware as defined in 
      <xref linkend="dbdoclet.50569384_97019" />.</para>
      <para>System firmware will configure the correct buffer sizes based on
      the current VNIC maximum transmission unit, current number of Receive
      Buffer Add Sub-CRQs, and physical adapter capabilities. In all cases, all
      receive buffers given to an individual Receive Buffer Add Sub-CRQ must be
      of the same size.</para>
      <para>Since a Receive Buffer Correlator may appear on only a single
      Receive Completion Sub-CRQ, the Receive Buffer Correlators must be unique
      for a given Receive Completion Sub-CRQ.</para>
      <para>Since every buffer added to all Receive Buffer Add Sub-CRQs
      associated with a given Receive Completion Sub-CRQ could be received
      simultaneously, each Receive Completion Sub-CRQ should be sized to handle
      every possible buffer given to system firmware on its associated Receive
      Buffer Add Sub-CRQs.</para>
      <para>Some implementations of VNIC devices may have alignment
      requirements. To ensure efficient use of receive buffers, VNIC clients
      are encouraged to use at least cache-line aligned receive buffers.</para>
      <para>.</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_54724">
        <title>Receive Completion Descriptor</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid Sub-CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Flags</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>Bit 0: If this bit is a 1, it indicates system firmware
                has validated the IP checksum field in the referenced packet
                was verified to be good.</para>
                <para>Bit 1: If this bit is a 1, it indicates system firmware
                has validated the TCP/UDP checksum field in the referenced
                packet was verified to be good.</para>
                <para>Bit 2: If this bit is a 1, it indicates this frame
                contains the end of a packet.</para>
                <para>Bit 3: If this bit is a 1, this packet is an exact match
                for one of the requested multicast MAC addresses for this
                VNIC.</para>
                <para>Bit 4: If this bit is a 1, the TCP/UDP checksum field
                contains either the complete TCP/UDP checksum or a partial
                TCP/UDP checksum in the case of an IP fragment packet.</para>
                <para>Bit 5-7: These bits are reserved, and will be set to
                0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Offset to start of frame data</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>This field contains an offset to the start of actual
                frame data in the returned frame.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of valid data in this
                descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field is the correlator taken from the Receive
                Buffer Add descriptor that allows the VNIC client to associate
                this completion with a previously added receive buffer.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>TCP/UDP Checksum</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>2</para>
              </entry>
              <entry>
                <para>If the TCP/UDP checksum bit is a 1, this field contains
                either the complete packet&#8217;s TCP/UDP checksum or a
                partial TCP/UDP checksum in the event the packet is an IP
                fragment.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>18</para>
              </entry>
              <entry>
                <para>14</para>
              </entry>
              <entry>
                <para>These fields are reserved, and will be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>&#160;</para>
      <table frame="all" pgwide="1" xml:id="dbdoclet.50569384_19523">
        <title>Receive Buffer Add Descriptor</title>
        <?dbhtml table-width="90%" ?><?dbfo table-width="90%" ?>
        <tgroup cols="4">
          <colspec colname="c1" colwidth="20*" align="center" />
          <colspec colname="c2" colwidth="10*" align="center" />
          <colspec colname="c3" colwidth="10*" align="center" />
          <colspec colname="c4" colwidth="60*" />
          <thead>
            <row>
              <entry>
                <para>
                  <emphasis role="bold">Field Name</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Byte Offset</emphasis>
                </para>
              </entry>
              <entry>
                <para>
                  <emphasis role="bold">Length</emphasis>
                </para>
              </entry>
              <entry align="center">
                <para>
                  <emphasis role="bold">Definition</emphasis>
                </para>
              </entry>
            </row>
          </thead>
          <tbody valign="middle">
            <row>
              <entry>
                <para>Sub-CRQ Format</para>
              </entry>
              <entry>
                <para>0</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>This should be set to 0x80 to indicate a valid Sub-CRQ
                event.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>1</para>
              </entry>
              <entry>
                <para>7</para>
              </entry>
              <entry>
                <para>This bytes are reserved, and should be set to 0.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Correlator</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>This field is an opaque value that is returned to the
                VNIC client when the buffer described by this descriptor is
                used to receive a frame from the network.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>IOBA</para>
              </entry>
              <entry>
                <para>16</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the I/O bus address for the
                TCE-mapped memory buffer to be used for frame reception.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Length</para>
              </entry>
              <entry>
                <para>20</para>
              </entry>
              <entry>
                <para>4</para>
              </entry>
              <entry>
                <para>This field contains the length of the memory buffer
                described by this descriptor.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>Reserved</para>
              </entry>
              <entry>
                <para>24</para>
              </entry>
              <entry>
                <para>8</para>
              </entry>
              <entry>
                <para>These bytes are reserved, and should be set to 0.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>

    </section>
  </section>
</chapter>
