%g LAN VCI Specification

LAN VCI Specification


Previous


Chapter 4
DATA STRUCTURES

This section describes the data structures used by the VCI.

For efficiency, the LAN drivers require that the VCIB, VCRP, and DCBE be quadword aligned. The upper VCM must ensure that these data structures are quadword aligned.

All these data structures must exist in system space.

4.1 LAN BLOCK

The LAN block is a LAN driver data structure that is used by the upper VCM for calling the access routines. The fields in this data structure begin with LAN$.

The LAN block fields are defined by $LANUDEF in LANUDEF.MLB.

Table 4-1 describes the fields of the LAN block.

Table 4-1 LAN Block
  ACCESS BY  
FIELD NAME UPPER LAN DESCRIPTION
  VCM DRIVER  
L_VERSION R W LAN VCI version
A_GET_DEVICE R W Address of Get Device routine
A_CREATE_PORT R W Address of Create Port routine
A_DELETE_PORT R W Address of Delete Port routine


Key to Access

Note that although the LAN block may exist, these fields may not be initialized. These fields are initialized when the LAN$L_VERSION field is non-zero. A detailed description of each of these LAN block fields follows:

4.2 LDC

The LDC is a LAN driver data structure that is used by the upper VCM to acquire information about a LAN device. The fields in this data structure begin with LDC$. The LDC data structure is quadword aligned in memory.

The LDC fields are defined by $LDCDEF in LANUDEF.MLB.

Table 4-2 describes the fields of the LDC.

Table 4-2 LDC
  ACCESS BY  
FIELD NAME UPPER LAN DESCRIPTION
  VCM DRIVER  
A_NAME R W Address of device name string
(W)L_TYPE R W Type of medium
(W)L_RCVSIZE R W Minimum number receive ring entries
(B)L_DEVTYPE R W VMS device type


Field name If the field name begins with a letter in parentheses, then the letter in the parentheses is used in the OpenVMS VAX name. Key to Access

Remember that the address of the LDC is returned on calls to the LAN$GET_DEVICE routine. The address of the LDC is also stored (by the LAN driver on a call to VCI$LAN_CREATE_PORT) in the VCIB if the upper VCM decides to use the device; so the upper VCM does not need to save the LDC address in its own data structure. A detailed description of each of these LDC fields follows:

4.3 VCIB

The VCI block is allocated, owned, and deallocated by the upper VCM. Neither VCM is allowed to deallocate a VCI block while the VCI Port for that VCIB is created. The LAN driver never deallocates the VCIB of an upper VCM.

Note that there are fields in the VCIB that are initialized, used, and referenced only by the LAN driver. The size of the VCIB as defined by this specification is the size required by the LAN drivers. The upper VCM is allowed to make the VCIB larger and define its own VCIB fields in the portion of the VCIB following the size needed by the LAN drivers. It is expected that most upper VCMs will do this to allow for context required by the upper VCM.

The registered name for this data structure is VCIB$.

The VCIB fields are defined by $VCIBDEF in LIB.MLB and $VCIBDLLDEF in LANUDEF.MLB.

Table 4-3 describes the fields of the VCIB structure.

Table 4-3 VCIB structure
  ACCESS BY  
FIELD NAME UPPER LAN DESCRIPTION
  VCM DRIVER  
L_FLINK W N Forward queue link
L_BLINK W N Back queue link
W_SIZE RI N Size of structure
B_TYPE RI R Type of structure DYN$C_DECNET
B_SUB_TYPE RI R Subtype of structure DYN$C_NET_VCI_VCIB
L_VCI_ID RI R VCI ID of the upper VCM
W_VERSION_UPPER RI R VCI version of the upper VCM
W_VERSION_LOWER R RI VCI version of the LAN driver
A_PORTMGMT_INITIATE R I Address of Port Management Initiate routine
A_PORTMGMT_COMPLETE I R Address of Port Management Complete routine
A_TRANSMIT_INITIATE R I Address of Transmit Initiate routine
A_TRANSMIT_COMPLETE I R Address of Transmit Complete routine
A_RECEIVE_COMPLETE I R Address of Receive Complete routine
A_REPORT_EVENT I R Address of Report Event routine
A_DLL_INPUT_LIST I R Address of input item list
(W)L_DLL_CLIENT_FLAGS I R Flags specified by upper VCM
(W)L_DLL_FLAGS R I Flags specified by LAN driver
(W)L_DLL_TYPE R I Type of medium
(W)L_DLL_HDR_SIZE R I Maximum header size in bytes
(W)L_DLL_XMT_SIZE R I Maximum transmit size in bytes
(W)L_DLL_CHAIN_SIZE R I Minimum size of 1st entry in chain in bytes
A_LAN_BUILD_HDR R I Address of Build Header routine
A_LAN_TRANSMIT_FRAME R I Address of Transmit Frame routine
A_LAN_TRANSMIT_AVAIL R I Address of longword containing the number of transmit entries available on the device
(W)L_LAN_MAX_RCV I R Maximum number of outstanding receives allowed
(W)L_LAN_OUT_RCV N IW Number of outstanding receives
(W)L_LAN_CLIENT_FLAGS I R Flags specified by upper VCM
(W)L_LAN_FLAGS R I Flags specified by LAN driver
A_LAN_LDC R I Address of LDC structure
K_LAN_FIXED_LENGTH C C Length of the required portion of the VCIB


Field name If the field name begins with a letter in parentheses, then the letter in the parentheses is used in the OpenVMS VAX name. Key to Access

A detailed description of each of these VCIB fields follows:


Previous Next