align_errors | Packets received with framing errors (not an integral number of octets) (long) |
fcs_errors | Packets received with CRC errors (long) |
duplex | Current duplex mode of the interface (string) |
carrier_errors | Number of times carrier was lost or never detected on a transmission attempt (long) |
collisions | Ethernet collisions during transmit (long) |
ex_collisions | Frames where excess collisions occurred on transmit, causing transmit failure (long) |
tx_late_collisions | Number of times a transmit collision occurred late (after 512 bit times) (long) |
defer_xmts | Packets without collisions where first transmit attempt was delayed because the medium was busy (long) |
first_collisions | Packets successfully transmitted with exactly one collision |
multi_collisions | Packets successfully transmitted with multiple collisions |
sqe_errors | Number of times SQE test error was reported |
macxmt_errors | Packets encountering transmit MAC failures, except carrier and collision failures |
macrcv_errors | Packets received with MAC errors, except align_errors, fcs_errors, and toolong_errors |
toolong_errors | Packets received larger than the maximum permitted length |
runt_errors | Packets received smaller than the minimum permitted length (long) |
The following group of statistics applies to networks of type DL_TPR; these are maintained by device-specific drivers of that type, as shown above.
line_errors | Packets received with non-data bits or FCS errors |
burst_errors | Number of times an absence of transitions for five half-bit timers was detected |
signal_losses | Number of times loss of signal condition on the ring was detected |
ace_errors | Number of times an AMP or SMP frame, in which A is equal to C is equal to 0, was followed by another such SMP frame without an intervening AMP frame |
internal_errors | Number of times the station recognized an internal error |
lost_frame_errors | Number of times the TRR timer expired during transmit |
frame_copied_errors | Number of times a frame addressed to this station was received with the FS field `A' bit set to 1 |
token_errors | Number of times the station acting as the active monitor recognized an error condition that needed a token transmitted |
freq_errors | Number of times the frequency of the incoming signal differed from the expected frequency |
The following group of statistics applies to networks of type DL_FDDI; these are maintained by device-specific drivers of that type, as shown above
mac_errors | Frames detected in error by this MAC that had not been detected in error by another MAC |
mac_lost_errors | Frames received with format errors such that the frame was stripped |
mac_tokens | Number of tokens received (total of non-restricted and restricted) |
mac_tvx_expired | Number of times that TVX has expired |
mac_late | Number of TRT expirations since this MAC was reset or a token was received |
mac_ring_ops | Number of times the ring has entered the ``Ring Operational'' state from the ``Ring Not Operational'' state |
Declarations and Data Structures
This section describes the gld_mac_info(9S) and gld_stats structures.
gld_mac_info Structure
The GLD 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.
Allocate the gld_mac_info structure using gld_mac_alloc() and deallocate it using gld_mac_free(). Drivers must not make any assumptions about the length of this structure, which might vary in different releases of Solaris, GLD, or both. Structure members private to GLD, not documented here, should not be set or read by the device-specific driver.
The gld_mac_info(9S) structure contains the following fields.
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 addr */ int (*gldm_set_promiscuous)(); /* Set/reset promiscuous mode */ int (*gldm_send)(); /* Transmit routine */ uint_t (*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 */ |
The gldm_private structure member is visible to the device driver; it is also 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. Because gld_register() might use or cache the values of some of these structure members, changes made by the driver after calling gld_register() might cause unpredictable results.