gld_mac_info(9S)
NAME
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 inter-
face 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.
STRUCTURE MEMBERS
caddr_t gldm_private; /* Driver private data */
int (*gldm_reset)(); /* Reset device */
int (*gldm_start)(); /* Start device */
int (*gldm_stop)(); /* Stop device */
int (*gldm_set_mac_addr)(); /* Set device phys addr */
int (*gldm_set_multicast)(); /* Set/delete */
/* multicast address */
int (*gldm_set_promiscuous)(); /* Set/reset */
/* promiscuous mode */
int (*gldm_send)(); /* Transmit routine */
u_int (*gldm_intr)(); /* Interrupt handler */
int (*gldm_get_stats)(); /* Get device statistics */
int (*gldm_ioctl)(); /* Driver-specific ioctls */
char *gldm_ident; /* Driver identity string */
uint32_t gldm_type; /* Device type */
uint32_t gldm_minpkt; /* Minimum packet size */
/* accepted by driver */
uint32_t gldm_maxpkt; /* Maximum packet size */
/* accepted by driver */
uint32_t gldm_addrlen; /* Physical address */
/* length */
int32_t gldm_saplen; /* SAP length for */
/* DL_INFO_ACK */
unsigned char *gldm_broadcast_addr; /* Physical broadcast */
/* addr */
unsigned char *gldm_vendor_addr; /* Factory MAC address */
t_uscalar_t gldm_ppa; /* Physical Point of */
/* Attachment (PPA) number */
dev_info_t *gldm_devinfo; /* Pointer to device's */
/* dev_info node */
ddi_iblock_cookie_t gldm_cookie; /* Device's interrupt */
/* block cookie */
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.
gldm_reset
Pointer to driver entry point; see gld(9E).
gldm_start
Pointer to driver entry point; see gld(9E).
gldm_stop
Pointer to driver entry point; see gld(9E).
gldm_set_mac_addr
Pointer to driver entry point; see gld(9E).
gldm_set_multicast
Pointer to driver entry point; see gld(9E).
gldm_set_promiscuous
Pointer to driver entry point; see gld(9E).
gldm_send
Pointer to driver entry point; see gld(9E).
gldm_intr
Pointer to driver entry point; see gld(9E).
gldm_get_stats
Pointer to driver entry point; see gld(9E).
gldm_ioctl
Pointer to driver entry point; can be NULL; see
gld(9E).
gldm_ident
Pointer to a string containing a short description of
the device. It is used to identify the device in sys-
tem 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.
gldm_minpkt
Minimum Service Data Unit 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 Service Data Unit 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).
gldm_devinfo
Pointer to the dev_info node for this device.
gldm_cookie
The interrupt block cookie returned by
ddi_get_iblock_cookie(9F), ddi_add_intr(9F),
ddi_get_soft_iblock_cookie(9F), or
ddi_add_softintr(9F). This must correspond to the
device's receive interrupt, from which gld_recv() is
called.
SEE ALSO
gld(7D), gld(9F), gld(9E), gld_stats(9S), dlpi(7P),
attach(9E), ddi_add_intr(9F).
Writing Device Drivers
Man(1) output converted with
man2html