gld_mac_info(9s) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

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)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3