svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
gld_mac_info(9s)
gld_mac_info(9S) Kernel & Driver Data Structures 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 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 differ‐
ent 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_tgldm_cookie; /* Device's interrupt */
/* block cookie */
int gldm_margin /* accepted data beyond */
/*gldm_maxpkt */
uint32_t gldm_capabilities; /* Device capabilities */
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. Convention‐
ally, this is used as a pointer to private data, point‐
ing to a driver-defined and driver-allocated per-in‐
stance data structure.
The following group of structure members must be set by the driver be‐
fore 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_reg‐
ister() 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 descrip‐
tion of the device. It is used to identify the
device in system messages.
gldm_type The type of device the driver handles. The val‐
ues 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.
Support for the DL_TPR and DL_FDDI media types
is obsolete and may be removed in a future re‐
lease of Solaris.
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 re‐
quired 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 Eth‐
ernet, this number is 1500.
gldm_addrlen The length in bytes of physical addresses han‐
dled 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 ad‐
dress in a DLSAP address. See the description
under "Message DL_INFO_ACK" in the DLPI speci‐
fication for more details.
gldm_broadcast_addr Pointer to an array of bytes of length gldm_ad‐
drlen 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_broad‐
cast_addr to point at it. For Ethernet, Token
Ring, and FDDI, the broadcast address is nor‐
mally 0xFF-FF-FF-FF-FF-FF.
gldm_vendor_addr Pointer to an array of bytes of length gldm_ad‐
drlen 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.
gldm_margin Drivers set this value to the amount of data in
bytes that the device can transmit beyond
gldm_maxpkt. For example, if an Ethernet device
can handle packets whose payload section is no
greater than 1522 bytes and the gldm_maxpkt is
set to 1500 (as is typical for Ethernet), then
gldm_margin is set to 22. The registered
gldm_margin value is reported in acknowledg‐
ments of the DLIOCMARGININFO ioctl (see
dlpi(4P)).
gldm_capabilities Bit-field of device capabilities. If the device
is capable of reporting media link state, the
GLD_CAP_LINKSTATE bit should be set.
SEE ALSO
gld(4D), dlpi(4P), attach(9E), gld(9E), ddi_add_intr(9F), gld(9F),
gld_stats(9S)
Writing Device Drivers in Oracle Solaris 11.4
Oracle Solaris 11.4 11 May 2021 gld_mac_info(9S)