gld_mac_info

- Generic LAN Driver MAC info data structure

Synopsis

#include <sys/gld.h>

Interface Level

Solaris architecture specific (Solaris DDI).

Description

The Generic LAN Driver (GLD) Media Access Control (MAC) information (gld_mac_info) structure
is the main data interface between the device-specific driver and GLD. It contains
data required by GLD and a pointer to an optional additional driver-specific
information structure.

The gld_mac_info structure should be allocated using gld_mac_alloc() and deallocated using gld_mac_free().
Drivers can make no assumptions about the length of this structure, which
might be different in different releases of Solaris and/or GLD. Structure members private
to GLD, not documented here, should not be set or read by
the device-specific driver.

Below is a description of the members of the gld_mac_info structure that
are visible to the device driver.

gldm_private

This structure member is private to the device-specific driver and is not used or modified by GLD. Conventionally, this is used as a pointer to private data, pointing to a driver-defined and driver-allocated per-instance data structure.

The following group of structure members must be set by the driver
before calling gld_register(), and should not thereafter be modified by the driver;
gld_register() can use or cache the values of some of these structure
members, so changes made by the driver after calling gld_register() might cause unpredicted
results.

Pointer to a string containing a short description of the device. It is used to identify the device in system messages.

gldm_type

The type of device the driver handles. The values currently supported by GLD are DL_ETHER (IEEE 802.3 and Ethernet Bus), DL_TPR (IEEE 802.5 Token Passing Ring), and DL_FDDI (ISO 9314-2 Fibre Distributed Data Interface). This structure member must be correctly set for GLD to function properly.

Note - Support for the DL_TPR and DL_FDDI media types is obsolete and may be removed in a future release of Solaris.

gldm_minpkt

Minimum ServiceDataUnit size — the minimum packet size, not including the MAC header, that the device will transmit. This can be zero if the device-specific driver can handle any required padding.

gldm_maxpkt

Maximum ServiceDataUnit size — the maximum size of packet, not including the MAC header, that can be transmitted by the device. For Ethernet, this number is 1500.

gldm_addrlen

The length in bytes of physical addresses handled by the device. For Ethernet, Token Ring, and FDDI, the value of this structure member should be 6.

gldm_saplen

The length in bytes of the Service Access Point (SAP) address used by the driver. For GLD-based drivers, this should always be set to -2, to indicate that two-byte SAP values are supported and that the SAP appears after the physical address in a DLSAP address. See the description under ``Message DL_INFO_ACK'' in the DLPI specification for more details.

gldm_broadcast_addr

Pointer to an array of bytes of length gldm_addrlen containing the broadcast address to be used for transmit. The driver must allocate space to hold the broadcast address, fill it in with the appropriate value, and set gldm_broadcast_addr to point at it. For Ethernet, Token Ring, and FDDI, the broadcast address is normally 0xFF-FF-FF-FF-FF-FF.

gldm_vendor_addr

Pointer to an array of bytes of length gldm_addrlen containing the vendor-provided network physical address of the device. The driver must allocate space to hold the address, fill it in with information read from the device, and set gldm_vendor_addr to point at it.

gldm_ppa

The Physical Point of Attachment (PPA) number for this instance of the device. Normally this should be set to the instance number, returned from ddi_get_instance(9F).