|
NAME : HCPMSVBK
DESCRIPTION: Mappings for MAC Services Control Block
DSECT : MSVBK
FUNCTION :
The MSVBK structure keeps track of MAC Addresses and
their attributes for a specific network device.
Important Notice: The MSVBK Block is transmitted by Live
Guest Migration (LGR) from this system
to another. Therefore, any changes
made to this control block must have
corresponding code in LGR logic to
copy the bit or byte.
LOCATED By -
We keep track of all allocated MSVBKs via the "Assigned
MAC MLT Table" anchored off SLMMACTB in the "System
Management Block" (SLMBK). Depending if the MSVBK is
locally or remotely owned, we also maintain the
following MSVBK queues:
VMDMSVBK = Chain for "Locally Owned" VDEV MSVBKs
assigned to a specific guest. Anchored from
the BASE VMDBK only.
SLMMSVBK = Chain for "Locally Owned" VSWITCH MSVBKs
anchored by SLMMSVBK.
ASSIGNED = "Remotely Owned" VDEV MSVBKs for a MAC
MAC MLT currently in use by another system in a
SSI cluster.
A MSVBK that is only "Remotely Owned" is NOT
anchored off any queue in the system. The
only pointer to a "Remotely Owned" MSVBK is
the "Assigned MAC MLT". Only a *NETWORK
operation code 1 "Release MAC Request" or an
operation code 2 "Synchronize MAC Table" will
delete a MSVBK that is "Remotely Own".
CREATED BY :
VDEV MSVBK
Created by the SET NIC MACID CP Command or the
*NETWORK System Service (HCPMLMAM)
VSWITCH MSVBK
Created by entry point HCPMLMVS.
DELETED BY :
VDEV MSVBK
Deleted at virtual machine LOGOFF or by the *NETWORK
System Service.
VSWITCH MSVBK
Deleted at DETACH VSWITCH by HCPMLMVS.
SERIALIZED :
For VDEV MSVBKs:
Compare and swap logic serializes additions to the
MSVBK chain.
For VSWITCH MSVBKs:
The SLMMACLK serializes changes to the chain. An
MSVBK is created at VSWITCH LANBK creation and
deleted by DETACH VSWITCH.
MSVLKWRD serializes changes to a single MSVBK.
RELOCATION CONSIDERATIONS : This control block is relocated as part of a live
guest relocation (LGR). The bits and fields that
need to be relocated are defined in the
corresponding LGRMSVBK COPY file. Whenever changes
are made to this control block, consideration must
be given to any effects these changes will have on
a relocation. If any new fields or bits are
defined, they may need to be relocated. If
existing bits or fields are changed, corresponding
modifications may be required in the LGR version of
this control block. Consider also the effects of
these changes on a relocation involving a back-level
release of CP.
GENERAL NOTES :
. There are three MAC fields and three MAC status flags.
1) CURRENT MAC Address
The MAC Address currently assigned and possibly
in use by the network device.
2) PENDING MAC Address
The MAC Address to be assigned to the network
device when the guest reestablishes a QDIO
Connection.
3) ADAPTER MAC Address
The default MAC Address for a simulated network
adapter. This MAC Address will be used when
a QDIO Connection is established on a device
associated with the NIC that doesn't have an
explicit MAC Address assigned by the SET NIC
MACID CP Command.
A pending MAC is set and allocated when a SET NIC MACID
is issued and its possible that the guest may still be
using the current MAC for an active network connection.
We don't want to release the current MAC until the
guest retrieves the MAC Address again. This typically
occurs when activating a new network connection either
through a Diagnose or SSCH Instruction. At which time
a pending MAC Address will be promoted to the current
MAC Address.
2. AN MSVBK IS ALLOCATED AT THE FOLLOWING TIMES:
- DEFINE NIC: A VDEV MSVBK is created for an ADAPTER
MAC Address and it is assigned for the base (first)
device number associated with the NIC. The MSVBK
is added to the guest's BASE VMDMSVBK anchor.
- SET NIC MACID command: An MSVBK is created for a
network device that is currently in or will be added
to a virtual machine's I/O configuration. The MSVBK
is linked to the guest's BASE VMDMSVBK anchor.
- DIAG X'26C', SUBCODE X'30', OPCODE X'00': An MSVBK
is created if one does not exist for the device
number requested in the diagnose parameters. This is
how it is created for a dedicated device if no SET
NIC MACID command was issued. The MSVBK is added to
the guest's BASE VMDMSVBK anchor.
- VSWITCH RDEV initialization: (HCPVLCCN call to
HCPMLMVR) when doing back end of initialization. The
MSVBK is added to the Controller's BASE VMDMSVBK
anchor.
- DEFINE VSWITCH: (HCPSWMMA call to HCPMLMVS). The
MSVBK is added to the SLMMSVBK anchor.
- *NETWORK System Service. The MSVBK is added to the
Assigned MAC MLT for "Remotely Owned" MAC Addresses.
. MACs allocated for simulated devices (guest NICs),
dedicated devices, or SET NIC MACID commands, are
released under the following circumstances.
a) LOGOFF: All local MAC addresses are released.
b) DIAG X'26C', Subcode X'30', Opcode X'00'issued:
A pending MAC is promoted to the current MAC if
the QDIO Connection is NOT activated.
c) DETACH NIC: If a pending MAC is defined, the current
MAC is freed and the pending MAC is promoted to the
current MAC.
d) SET NIC MACID command issued for the device number:
If a pending MAC is defined and allocated, the
pending MAC is freed and the definition replaced.
e) DIAG X'2A8', Operation Code 0 "Query" issued:
A pending MAC is promoted to the current MAC if
the QDIO Connection is NOT activated.
f) Device Reset will promote a pending MAC address to
the current MAC. The old current MAC is released.
. A MAC allocated for a VSWITCH RDEV is released when the
RDEV connection is broken (HCPVLCDC call to HCPMLMVR).
. A MAC allocated for a VSWITCH is released at DETACH
VSWITCH (HCPVLFRL call to HCPMLMVS).
. A "Remotely Owned" MAC will be removed from the
Assigned MAC MLT by the *NETWORK System Service
when it is no longer being used by active SSI cluster
member.
| |