svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
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-
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_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
release 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
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 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
address 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_addrlen containing the broadcast address
to be used for transmit. The driver must allo‐
cate space to hold the broadcast address, fill
it in with the appropriate value, and set
gldm_broadcast_addr to point at it. For Ether‐
net, 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.
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)