The token-ring data link control (DLCTOKEN) conforms to the generic data link control (GDLC) guidelines except where noted below. Additional structures and definitions for DLCTOKEN can be found in the /usr/include/sys/trlextcb.h file.
Note: The dlc prefix is replaced with the trl prefix for DLCTOKEN.
trlclose | DLCTOKEN is fully compatible with the dlcclose GDLC interface. |
trlconfig | DLCTOKEN is fully compatible with the dlcconfig GDLC interface. No initialization parameters are required. |
trlmpx | DLCTOKEN is fully compatible with the dlcmpx GDLC interface. |
trlopen | DLCTOKEN is fully compatible with the dlcopen GDLC interface. |
trlread | DLCTOKEN is compatible with the dlcread GDLC interface with the following conditions:
|
The following kernel receive packet function handlers always have the DLCTOKEN data link header information within the communications memory buffer (mbuf) and can locate it by subtracting the length passed (in the gdl_io_ext structure) from the data offset field of the mbuf structure.
trlselect | DLCTOKEN is fully compatible with the dlcselect GDLC interface. |
trlwrite | DLCTOKEN is compatible with the dlcwrite GDLC interface, with the exception that network data can only be written as an unnumbered information (UI) packet and must have the complete data link header prefixed to the data. DLCTOKEN verifies that the local (source) service access point (SAP) is enabled and that the control byte is UI (0x03). See the DLCTOKEN Frame Encapsulation figure for more details. |
trlioctl | DLCTOKEN is compatible with the dlcioctl GDLC interface, with conditions on the following operations: |
The ioctl subroutine argument structure for enabling a SAP (dlc_esap_arg) has the following specifics:
The following is an example of a Network Basic Input/Output System (NetBIOS) functional address:
To select the NETBIOS functional address of 0xC000_0000_0080, the functional address mask is set to 0x0000_0080.
Note: DLCTOKEN does not check to determine whether a received packet was accepted by the adapter due to a preset network address, group address, or functional address.
The ioctl subroutine argument structure for starting a link station (dlc_sls_arg) has the following specifics:
STAT | Specifies a station type for SDLC. |
NEGO | Specifies a negotiable station type for SDLC. |
struct trl_start_psd { uchar_t pkt_prty; /* ring access packet priority */ uchar_t dyna_wnd; /* dynamic window increment */ ushort_t reserved; /* currently not used */ };The protocol-specific parameters are:
The ioctl subroutine argument structure for altering an LS (dlc_alter_arg) has the following specifics:
RTE | Alters routing. |
SM1, SM2 | Sets SDLC control mode. |
#define TRL_ALTER_PRTY 0x80000000 /* alter packet priority */ #define TRL_ALTER_DYNA 0x40000000 /* alter dynamic window incr.*/ struct trl_start_psd { ulong_t flags; /* specific alter flags */ uchar_t pkt_prty; /* ring access packet priority value */ uchar_t dyna_wnd; /* dynamic window increment value */ ushort_t reserved; /* currently not used */ };Specific alter flags are:
pkt_prty | Specifies the new priority reservation value for transmit packets. |
dyna_wnd | Specifies the new dynamic window value to control network congestion. |
The device driver-dependent data returned from DLCTOKEN for this ioctl operation is the tok_ndd_stats_t structure defined in the /usr/include/sys/cdli_tokuser.h file.
There is no protocol-specific data area supported by DLCTOKEN for this ioctl operation.
The enter_short_hold option is not supported by DLCTOKEN.
The exit_short_hold option is not supported by DLCTOKEN.
The add_group, or multicast address, option is supported by the DLCTOKEN device manager. This ioctl operation is a four-byte value as described in the DLC_ENABLE_SAP ioctl operation definition.
The len_func_addr_mask (functional address mask length) field must be set to 4, and the func_addr_mask (functional address mask) field must be the logical OR operation with the functional address on the adapter. Only bits 1 through 29 are valid. Bits 0, 30, and 31 are ignored. The most significant two bytes of the full six-byte functional address are automatically compared for 0xC000 by the adapter and cannot be added.
The len_func_addr_mask (functional address mask length) field must be set to 4, and the func_addr_mask (functional address mask) field must have each bit that you wish to reset set to 1 within the functional address on the adapter. Only bits 1 through 29 are valid. Bits 0, 30, and 31 are ignored. The most significant two bytes of the full six-byte functional address are automatically compared for 0xC000 by the adapter and cannot be deleted.
The delete group or multicast option is supported by the DLCTOKEN device manager. The address being removed must match an address that was added with a DLC_ENABLE_SAP or DLC_ADD_GRP ioctl operation.
The ioctype variable returned is defined as a DD_DLC definition, and the subtype returned is DS_DLCTOKEN.