QSEBK Back to Index page
 
Prolog 
Control Block Contents 
   QSEBK DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  QSEBK Prolog Top of page
 
 NAME       : HCPQSEBK
 DESCRIPTION: EQDIO HCPQSEND Queue Management Block
 DSECT      : QSEBK
 FUNCTION   : The QSEBK is an extension to the NICBK that is used for
              managing HCPQSEND SEND_REQUESTs. HCPQSEND is used only for
              EQDIO while the NICBK is used for both EQDIO and non-EQDIO
              NICs. Keeping this information in a separate extension
              avoids a large extension to the main NICBK when the NIC
              is not EQDIO.
              This control block is used in conjunction with the HCPQSEND
              portion of the NICBK.
 LOCATED BY : NICBK field NICQSEBK of the associated NICBK.
              SLMBK field SLMQSEHD for QSEBK Mgt Queue.
              QSEBK fields QSSEPREV/QSENEXT for QSEBK Mgt Queue.
 CREATED BY : HCPIQHAP when a EQDIO adapter is added to a vSwitch.
 DELETED BY : HCPIQHDP when a EQDIO adapter is deleted from a vSwitch.
 REFERENCES : Requires GALPL
              - an instance of GALPL is contained in this block.
 SERIALIZED : NICQSLCK in the HCPQSEND portion of the associated NICBK
              serializes the creation and destruction of this block
              and updates to its pointer at NICQSEBK in the NICBK.
              Updates to the QSEBK chain at SLMQSEHD in the SLMBK require
              SLMQSLCK and NICQSLCK exclusive. Locking hierarchy requires
              SLMQSLCK to be acquired first.
              The incrementing of counters in this block could be
              done using interlocked update and a share of NICQSLCK
              if NICQSLCK exclusive isn't required for other reasons.
              Therefore, all counter updates are done using interlocked
              update even when NICQSLCK is held exclusive.
              Updates to the SREBK chain pointers QSESRNXT and QSESRPRV,
              and initialization and destruction of the hash table at
              QSEHSHTB, are serialized by NICQSLCK.
              QSEHSHTB hash table operations are serialized by GALLOCK,
              which is defined as part of the hash table GALPL structure.
              Addition or removal of an SREBK to/from the SREBK queue
              and the hash table must be done under a single hold of
              NICQSLCK exclusive. This is necessary to prevent an
              opening for a deactivate event or timeout processing from
              running between those steps.
 RELOCATION CONSIDERATIONS : None
 COMPATIBILITY AND MIGRATION CONCERNS : None
 NOTES      : NICQSLCK is in the destroyed state when NICQSEBK=0, there
              is no QSEBK. NICQSEBK=0 indicates that the port is not
              activated for HCPQSEND.
              At the time this block is created and initialized, the
              HCPQSEND section of the NICBK is also initialized.
              This includes initializing NICQSLCK for use.
              When this block is destroyed, HCPQSEND section of the NICBK
              is also cleaned up.  This includes destroying NICQSLCK.
              Timeout checks by HCPIQHTC find the SREBK chains in the
              QSEBKs by following a chain of registered QSEBKs anchored
              in the SLMBK (SLMQSEHD). Timeout check processing holds
              SLMQSLCK exclusive to protect the chain while it runs.
              It acquires NICQSLCK exclusive for the processing of each
              NIC's SREBK chain.
              See HCPIQHAP prolog for a description of the QSEBK chain
              anchored at SLMQSEHD of the SLMBK.
              If a task holds SLMQSLCK, then it can safely traverse the
              QSEBK chain. At each QSEBK it can safely traverse from
              the QSEBK to NICBK using QSENICBK because it holds the
              SLMQSLCK. This allows it to acquire NICQSLCK safely.
              NICRFCTR is incremented in the associated NICBK while
              the QSEBK is in the chain ensuring the structures remain
              intact while the port is activated for HCPQSEND.
              The sequence number NICQSSEQ is used to set a unique IPCSEQ
              value for every SEND and SEND_REQUEST to the adapter
              associated with the activated port. The sequence number
              is also used to form the key for the hash table QSEHSHTB.
 
 
  QSEBK Control Block Content Top of page
 

 QSEBK DSECT Top of page
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure QSEBK EQDIO HCPQSEND Queue Management Block 0000 0 Dbl-Word 8 QSEPTRS (0) SLMQSEHD pointers 0000 0 Address 4 QSENEXT Next QSEBK in the SLMQSEHD chain 0004 4 Address 4 QSEPREV Prev QSEBK in the SLMQSEHD chain 0008 8 Address 4 QSESREHD First SREBK in the chain 000C 12 Signed 4 QSENICBK Associated NICBK QUEUE Statistics These fields are updated using interlocked updates, but at least a share of NICQSLCK is required to protect the QSEBK while it is being accessed. However, functions that update the QSEBK currently all require NICQSLCK exclusive. QSEQUECT = QSEACTCT+QSEREPCT+QSETMOCT+QSEERRCT+QSEDEACT QSEACTCT = QSEQUECT-QSEREPCT+QSETMOCT+QSEERRCT+QSEDEACT 0010 16 Signed 4 QSEQUECT Ct NDMBKs queued, (Calls to HCPIQPAQ) 0014 20 Signed 4 QSEACTCT Count SEND_REQUESTS active and waiting for a response. 0018 24 Signed 4 QSEREPCT Ct SEND_REQUESTS dequeued when a reply was received. 001C 28 Signed 4 QSETMOCT Ct SEND_REQUESTS dequeued due to a timeout. 0020 32 Signed 4 QSEERRCT Ct SEND_REQUESTS dequeued due to an error in transmission. 0024 36 Signed 4 QSEDEACT Ct SEND_REQUESTS dequeued due to a deactivation. Hash Table for active SEND_REQUESTs QSEHSHTB is a hash table mapped by GALPL COPY and managed using services in HCPGAL. The hash table is defined to be large enough for 64K entries, which is the capacity of the sequence number. Architecture's uniqueness requirement on the sequence number would be violated if the sequence number wrapped back to a number still in use. 00000058 QSEGALCT 88 Number of GALPL entries 0028 40 Character 480 QSEHSHTB Hash table for outstanding SEND_REQUESTs. 00000041 QSESIZE (*-QSEBK+7)/8 Size in double words 00000208 QSEBSIZE QSESIZE*8 Size in bytes
 
 
  QSEBK Storage Layout Top of page
 
          
*** QSEBK - EQDIO HCPQSEND Queue Management Block
*
*     +---------------------------+---------------------------+
*   0 |         QSENEXT           |         QSEPREV           |
*     +---------------------------+---------------------------+
*   8 |         QSESREHD          |         QSENICBK          |
*     +---------------------------+---------------------------+
*  10 |         QSEQUECT          |         QSEACTCT          |
*     +---------------------------+---------------------------+
*  18 |         QSEREPCT          |         QSETMOCT          |
*     +---------------------------+---------------------------+
*  20 |         QSEERRCT          |         QSEDEACT          |
*     +---------------------------+---------------------------+
*  28 |                                                       |
*     =                       QSEHSHTB                        =
*     |                                                       |
*     +-------------------------------------------------------+
* 208
*
*** QSEBK - EQDIO HCPQSEND Queue Management Block
 
 
  QSEBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
QSEACTCT       0014
QSEBSIZE       0028 00000208
QSEDEACT       0024
QSEERRCT       0020
QSEGALCT       0024 00000058
QSEHSHTB       0028
QSENEXT        0000
QSENICBK       000C
QSEPREV        0004
QSEPTRS        0000
QSEQUECT       0010
QSEREPCT       0018
QSESIZE        0028 00000041
QSESREHD       0008
QSETMOCT       001C
 
This information is based on z/VM 7.5.0 Last updated on 22 Jun 2026 at 11:15:10 EDT.
Copyright IBM Corporation, 1990, 2026