You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Linux-Architecture-Reference/LoPAR/app_virtual_nic.xml

9911 lines
319 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2016, 2020 OpenPOWER Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<appendix xmlns="http://docbook.org/ns/docbook"
xmlns:xl="http://www.w3.org/1999/xlink"
version="5.0"
xml:lang="en"
xml:id="dbdoclet.50569384_75285">
<title>A Protocol for VNIC Communications</title>
<section>
<title>Introduction</title>
<para>The VNIC protocol defined in this appendix 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>
</appendix>