How to use the HP-UX Portable Image Tool for Integrity fluid cross-technology moves
4
Ethernet drivers
Hardware dependent modules (HDM) determine the MAC address of the networking device and sets the Infrastructure
LAN (ILAN) interface data structure. ILAN then invokes the new GIO interface with the MAC address of the device to
reassign the PI configuration based on the MAC address. If an instance number has been reserved for this MAC address,
GIO reassigns the PI configuration instance number to this MAC address. ILAN then invokes HDM property interface to
reset the PPA in the HDM data structures, invokes DLPI property interface to set the new PPA for the DLPI instance and
then communicates the MAC address for the DLPI instance.
Data Link Provider Interface (DLPI)
When the driver to GIO call to reassign the instance number succeeds, DLPI is invoked with dlpi_prop call to update the
instance number of the DLPI instance prior to setting the MAC address in the DLPI instance. This will be reflected by tools
such as lanscan.
Flow of operation
A new KC tunable called portable_image introduced that defaults to 0 (disable). The user will have to manually set this
KC tunable as part of the initial activation of LS on a V or P. The HP-UX PI startup and shutdown scripts do not do
anything (restore or save) if this KC tunable is not enabled. Since there is no configuration saved, IOI will default to its
hardware path based instance number assignment.
After enabling HP-UX PI by executing the following command: kctune gio_portable_image=1 or
/opt/network/bin/hpuxpitool –e, whenever the source is shutdown, HP-UX PI shutdown script is executed.
This saves the <H/W path, class of device, instance number, driver name, MAC address1, MAC address2 …> information
in KRS for every networking device (as determined by nwmgr output). The HP-UX PI script also stores the driver type
associated with the networking interface on the source.
When the target is booted, IOI initially reads KRS and reserves the instance numbers specified in the file for the specified
class of device and frees up ioconfig records that have these instance numbers. If there is no KRS entry, then IOI will
default the instance number assignment to the traditional hardware path model. When the devices are scanned and
claimed (during attach), it assigns initial instance numbers based on the new hardware paths and ioconfig.
Later the driver init() entry point is invoked. Different Ethernet drivers (HDM) determine the MAC address at different
points in the init sequence. The common Ethernet driver infrastructure ILAN gets the MAC address from the HDM and
communicates this to DLPI (using dlpi_prop() interface) as part of an internal reset during init. Prior to communicating
the MAC address to DLPI, ILAN invokes a newly created GIO routine passing in the I/O node (from isc) and the MAC
address. IOI determines the hardware path from the I/O node, compares the ILAN provided MAC address with that in the
saved /stand/<class>_ioconfig information on the source, updates the ioconfig information with the new hardware path,
and returns the matching instance number, if any. If the instance number changes, ILAN updates its instance number and
communicates the instance number to DLPI using a newly defined property in dlpi_prop() interface. Thus, devices that
have DRV_INSTANCE_REPLACEABLE flag set and have matching MAC addresses to the source configuration will have
their instance numbers reassigned by IOI. Devices that do not have a matching MAC address will not have their instance
numbers reassigned, but will have instance numbers that do not conflict with the source configuration.
The only item to fix-up on the target is the driver configuration file. The HP-UX PI startup script determines the
driver type associated with the networking interface on the source and the target and updates the appropriate
driver configuration file on the target with any non-driver specific configuration (e.g., MTU, station address, etc.).
Driver specific information (e.g., CKO, TSO, etc.) are ignored.
Example scenario:
Source has one igelan adapter at lan0 with ioconfig record <HWP-A, lan, 0>. <HWP-A, lan, 0, igelan, MAC-A> is saved by
HP-UX PI shutdown script on the source. When the target is booted up, instance number 0 is reserved by IOI. When two
lan devices are scanned, they get instance numbers 1 and 2. ioconfig records now have three entries <HWP-A, lan, 0>,
<HWP-1, lan, 1>, <HWP-2, lan, 2>. lan1 driver determines its MAC address MAC-B and calls io_node_reassign_instance()
and retains its instance number. lan2 determines its MAC address MAC-A and calls io_node_reassign_instance() and gets
reassigned instance number 0. ioconfig records now has two entries <HWP-2, lan, 0> and <HWP-1, lan, 1>.