diff --git a/Virtualization/ch_virtual_io.xml b/Virtualization/ch_virtual_io.xml
index 78c9fcc..0964645 100644
--- a/Virtualization/ch_virtual_io.xml
+++ b/Virtualization/ch_virtual_io.xml
@@ -2638,7 +2638,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
@@ -2654,7 +2654,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
@@ -2670,7 +2670,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
@@ -2686,7 +2686,25 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
+
+
+
+
+
+ 0x1C
+
+
+ ILLAN_MAC_SCAN
+
+
+ For any ILLAN adapter with the
+ “ibm,trunk-adapter”
+ property
+
+
+
+
@@ -3406,7 +3424,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
VNIC_SERVER_STATUS Subfunction Semantics
This subfunction is used to report the status of the physical
@@ -3444,7 +3462,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
GET_SESSION_TOKEN Subfunction Semantics
This subfunction is used to obtain a session token from a VNIC client adapter.
@@ -3468,7 +3486,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
SESSION_ERROR_DETECTED Subfunction Semantics
This subfunction is used to report that the currently active
@@ -3514,7 +3532,7 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
-
+
GET_VNIC_SERVER_INFO Subfunction Semantics
This subfunction is used to fetch information about a VNIC server
@@ -3692,6 +3710,402 @@ hcall ( const unit64 H_VIOCTL, /* Query/Set behaviors for the virtual IOA */
+
+
+ ILLAN_MAC_SCAN Subfunction Semantics
+
+
+
+ parm-1 is an eight byte output descriptor. The high order
+ byte of an output descriptor is control, the next three bytes are
+ a length field of the buffer in bytes, and the low order four bytes
+ are a TCE mapped I/O address of the start of a buffer in I/O address
+ space. The high order control byte must be set to zero. The TCE mapped
+ I/O address is mapped via the first window pane of the
+ “ibm,my-dma-window”
+ property.
+
+
+
+ Parm-2 and parm-3 should be set to the opaque continuation tokens
+ CT1 and CT2, respectively. These values are returned by the hypervisor
+ through the ILLAN_MAC_SCAN Buffer header when a scan cannot be completed
+ within a single vioctl call. See
+
+ for more information about the values CT1 and CT2. Parm-2 and parm-3
+ should be set to zero when starting a new ILLAN_MAC_SCAN call sequence.
+
+
+
+ Validate that the unit-address corresponds to an active ILLAN
+ trunk adapter, else return H_Parameter.
+
+
+
+ Validate parm-2 and parm-3 are both set to zero, or contain
+ valid continuation tokens, else return H_Parameter.
+
+
+
+ Validate that the I/O address range supplied by parm-1 is large
+ enough to hold the header information for the ILLAN_MAC_SCAN Buffer
+ detailed in
+ ,
+ else return H_Parameter.
+
+
+
+ Validate that the I/O address supplied by parm-1 is 8-byte aligned,
+ else return H_Parameter.
+
+
+
+ If any data transfers to the I/O address range supplied by parm-1
+ fail, return H_Permission.
+
+
+
+ Iterate over all VLAN ids associated with the specified trunk
+ adapter. For each associated VLAN id:
+
+
+
+ Iterate over all ILLAN adapters, barring any adapters
+ with the
+ “ibm,trunk-adapter”
+ property, belonging to the current VLAN id.
+
+
+
+ For each non-trunk ILLAN adapter belonging to the current
+ VLAN id, add a 64-bit value containing the current 12-bit VLAN id
+ and the 48-bit MAC address of the ILLAN adapter to the next vacant
+ entry in the MAC/VID Buffer. Each MAC/VID pair in the buffer
+ is formatted as shown in
+
+ Note that when handling H_IN_PROGRESS return codes, the caller
+ should either copy information from the buffer, immediately
+ process the information in the buffer, or modify the output
+ descriptor to utilize a new, non-overlapping buffer I/O address
+ range after each call. Otherwise, the buffer data will be overwritten
+ on consecutive calls.
+
+
+
+ MAC/VID Pair Entry Format
+
+
+
+
+
+
+
+ Field
+
+
+ Bit Offset
+
+
+ Bit Length
+
+
+
+
+
+
+ RESERVED
+
+
+ 0
+
+
+ 4
+
+
+
+
+ 802.1qVLAND ID
+
+
+ 4
+
+
+ 12
+
+
+
+
+ Adapter MAC Address
+
+
+ 16
+
+
+ 48
+
+
+
+
+
+
+
+
+
+ If at any point during iteration the vioctl call exceeds
+ the maximum allotted time interval, or if the MAC/VID buffer
+ is filled to capacity, do the following:
+
+
+
+ Store 'CT1' and 'CT2' in the buffer header so the
+ operation can be continued on the next call
+
+
+
+ Set 'Num Entries' in the buffer header to the number
+ of valid MAC/VID pairs in the output buffer
+
+
+
+ Set 'Reconfiguration Occurred' based on the rules
+ described in the Dynamic Reconfiguration description item below
+
+
+
+ Return H_IN_PROGRESS.
+
+
+ ILLAN_MAC_SCAN Buffer Format
+
+
+
+
+
+
+
+
+
+
+
+
+ Field
+
+
+ Byte Offset
+
+
+ Byte Length
+
+
+ Description
+
+
+
+
+
+
+ Header
+
+
+ CT1
+
+
+ 0
+
+
+ 8
+
+
+ Continuation token 1 – this value should be used as
+ parm-2 for sequential calls to ILLAN_MAC_SCAN when
+ handling H_IN_PROGRESS return codes
+
+
+
+
+ CT2
+
+
+ 8
+
+
+ 8
+
+
+ Continuation token 2 – this value should be used
+ as parm-3 for sequential calls to ILLAN_MAC_SCAN when
+ handling H_IN_PROGRESS return codes.
+
+
+
+
+ Reserved
+
+
+ 16
+
+
+ 15
+
+
+ This field is reserved and should be set to zero.
+
+
+
+
+ Reconfiguration Occurred
+
+
+ 31
+
+
+ 1
+
+
+
+
+ 0: The data in this buffer is guaranteed to be
+ consistent with the virtual adapter configuration at
+ the point of return
+
+
+ 1: The data in this buffer may contain data
+ inconsistencies due to reconfiguration of
+ ILLAN adapters between consecutive calls
+ to ILLAN_MAC_SCAN. See
+ Dynamic Reconfigurations description below.
+
+
+
+
+
+
+ Num Entries
+
+
+ 32
+
+
+ 8
+
+
+ The number of valid 64-bit MAC/VID pairs in this buffer
+
+
+
+
+ Data
+
+
+ MAC/VID Buffer Start
+
+
+ 40
+
+
+ Variable
+
+
+ A variably-sized, contiguous array of MAC/VID pairs
+ formatted according to
+ .
+ The number of valid entries in this array is
+ specified by the “Num Entries” field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If all MAC addresses were successfully scanned for all VLAN ids on
+ the trunk adapter, do the following:
+
+
+ Set 'CT1' and 'CT2' to zero in the buffer header
+
+
+
+ Set 'Num Entries' in the buffer header to the number of
+ valid MAC/VID pairs in the output buffer
+
+
+
+ Set 'Reconfiguration Occurred' based on the rules described
+ in the Dynamic Reconfiguration section below
+
+
+
+ Return H_SUCCESS.
+
+
+
+
+
+
+ Note that the buffer headers and data are only valid if this
+ vioctl returns H_IN_PROGRESS or H_SUCCESS.
+
+
+
+ Note that any unused buffer space outside of the range determined
+ by the 'Num Entries' field in the ILLAN_MAC_SCAN buffer header is
+ undefined by this architecture.
+
+
+
+ Dynamic Reconfigurations:
+ If the 'Reconfiguration Occurred' field in the ILLAN_MAC_SCAN buffer
+ header is TRUE (1), the data in all MAC/VID buffers in a call sequence
+ may contain inconsistencies due to dynamic reconfiguration events for
+ the trunk adapter itself or any ILLAN adapters associated with the
+ trunk adapter. In this case, all data collected from the call sequence
+ should be utilized with caution, or re-queried. Possible inconsistencies
+ arising from dynamic reconfiguration include the following:
+
+
+ MAC addresses in the buffer may correspond to ILLAN adapters
+ that have been removed from the switch, due to partition suspension,
+ hibernation, adapter disablement, and DLPAR operations
+
+
+
+ MAC addresses corresponding to ILLAN adapters that were
+ added to the virtual switch due to partition resumption,
+ adapter enablement, and DLPAR operations may not be included
+ in the buffer
+
+
+
+ ILLAN adapters may have their VLAN memberships reconfigured,
+ in which case certain VID/MAC pairs in the buffer may no longer
+ be valid, and some valid VID/MAC pairs for ILLAN adapters may
+ not be included in the buffer at all.
+
+
+
+ ILLAN adapters may have their MAC address reconfigured.
+ Both the old and new MAC addresses for the adapter may be included
+ in the buffer, or the old and new MAC addresses for the adapter
+ may not be included in the buffer at all.
+
+
+ Note that even if the value of the 'Reconfiguration Occurred' field is
+ FALSE (0), ILLAN adapter reconfigurations may have occurred immediately
+ after the vioctl completed, and the information in the buffer could be
+ outdated.
+
+
+
+