Sun Microsystems, Inc.
spacerspacer
spacer www.sun.com docs.sun.com |
spacer
black dot
 
 
16.  Drivers for Network Devices Generic LAN Driver Overview Network Statistics  Previous   Contents   Next 
   
 
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.

 
 
 
  Previous   Contents   Next