The data link control (DLC) fiber distributed data interface (FDDI) conforms to generic data link control (GDLC) guidelines except where noted below. Additional structures and definitions for DLC FDDI are found in the /usr/include/sys/fdlextcb.h file.
The following entry points are supported by DLC FDDI:
Note: The dlc prefix is replaced with the fdl prefix for the DLC FDDI device manager.
fdlclose | Fully compatible with the dlcclose GDLC interface. |
fdlconfig | Fully compatible with the dlcconfig GDLC interface. No initialization parameters are required. |
fdlmpx | Fully compatible with the dlcmpx GDLC interface. |
fdlopen | Fully compatible with the dlcopen GDLC interface. |
fdlread | Compatible with the dlcread GDLC
interface with the following conditions:
Kernel receive packet function handlers always have the DLC FDDI 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. |
fdlselect | Fully compatible with the dlcselect GDLC interface. |
fdlwrite | 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. DLC FDDI verifies that the local (source) service access point (SAP) is enabled and that the control byte is UI (0x03). See the DLC FDDI Frame Encapsulation figure for more details. |
fdlioctl | Compatible with the dlcioctl GDLC
interface. The following ioctl operations contain FDDI-specific
conditions on GDLC operations:
The following sections describe these conditions. |
The ioctl subroutine argument structure for enabling a SAP, dlc_esap_arg, has the following specifics:
NTWK | Indicates a teleprocessing network type. |
LINK | Indicates a teleprocessing link type. |
PHYC | Represents a physical network call (teleprocessing). |
ANSW | Indicates a teleprocessing autocall and autoanswer. |
The ioctl subroutine argument structure for starting a link station, dlc_sls_arg, has the following specifics:
STAT | Indicates a station type for SDLC. |
NEGO | Indicates a negotiable station type for SDLC. |
struct fdl_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:
pkt_prty | Specifies the ring-access priority that the user wishes to reserve on transmit packets. Values of 0 to 7 are supported, where 0 is the lowest priority and 7 is the highest priority. |
dyna_wnd | Network congestion causes the local transmit window count to automatically drop to a value of 1. The dynamic window increment specifies the number of consecutive sequenced packets that must be acknowledged by the remote station before the local transmit window count can be increment. This allows a gradual increase in network traffic after a period of congestion. This field can be set to any value from 1 to 255; the recommended value is 1. |
The ioctl subroutine argument structure for altering a link station, dlc_alter_arg, has the following specifics:
SM1, SM2 | Sets SDLC control mode. |
RTE | Alters routing. |
#define FDL_ALTER_PRTY 0x80000000 /* alter packet priority */ #define FDL_ALTER_DYNA 0x40000000 /* alter dynamic window incr*/ struct fdl_alter_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 */ };
#define FDL_ALTER_PRTY 0x80000000 /* alter packet priority */ #define FDL_ALTER_DYNA 0x40000000 /* alter dynamic window incr*/ struct fdl_alter_psd { __ulong32_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 */ };
FDL_ALTER_PRTY | Specifies alter priority. If set to 1, the pkt_prty value field replaces the current priority value being used by the link station. The link station must be started for this alter command to be valid. |
FDL_ALTER_DYNA | Specifies alter dynamic window. If set to 1, the dyna_wnd value field replaces the current dynamic window value being used by the link station. The link station must be started for this alter command to be valid. |
The protocol-specific parameters 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 enter_short_hold option is not supported.
The exit_short_hold option is not supported.
The add_group, or multicast address, option is supported by DLC FDDI as a six-byte value as described above in DLC_ENABLE_SAP (group address).
The grp_addr (group address) field for FDDI contains the full six-byte group address with the individual/group and universal/local control bits located in the most significant bit positions of the first (leftmost) byte.
The add_functional_address option is not supported.
The delete_functional_address option is not supported.
The delete group or multicast option is supported by the DLC FDDI 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 device driver-dependent data returned from DLC FDDI for this ioctl operation is the fddi_ndd_stats_t structure defined in the /usr/include/sys/cdli_fddiuser.h file.
There is no protocol-specific data area supported by DLC FDDI for this ioctl operation.
The ioctype variable returned is defined as a DD_DLC definition and the subtype returned is DS_DLCFDDI.
DLC FDDI is fully compatible with the GDLC interface concerning asynchronous function calls to the kernel mode user.