mc_getcapab(9e) 맨 페이지 - 윈디하나의 솔라나라

개요

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

mc_getcapab(9e)

mac(9E)                       Driver Entry Points                      mac(9E)

NAME
       mac,   mc_getstat,   mc_start,   mc_stop,  mc_setpromisc,  mc_multicst,
       mc_unicst,  mc_tx,  mc_ioctl,  mc_getcapab,   mc_setprop,   mc_getprop,
       mc_propinfo - MAC driver entry points

SYNOPSIS
       #include <sys/mac_provider.h>
       #include <sys/mac_ether.h>

       int prefix_getstat(void *driver_handle, uint_t stat,
            uint64_t *stat_value);


       int prefix_start(void *driver_handle);


       void prefix_stop(void *driver_handle);


       int prefix_setpromisc(void *driver_handle, boolean_t promisc_mode);


       int prefix_multicst(void *driver_handle, boolean_t add,
            const uint8_t *mcast_addr);


       int prefix_unicst(void *driver_handle, const uint8_t *ucast_addr);


       mblk_t *prefix_tx(void *driver_handle, mblk_t *mp_chain);


       void prefix_ioctl(void *driver_handle, queue_t *q, mblk_t *mp);


       boolean_t prefix_getcapab(void *driver_handle, mac_capab_t cap,
            void *cap_data);


       int prefix_setprop(void *driver_handle, const char *prop_name,
            mac_prop_id_t prop_id, uint_t prop_val_size,
            const void *prop_val);


       int prefix_getprop(void *driver_handle, const char *prop_name,
            mac_prop_id_t prop_id, uint_t prop_val_size, void *prop_val);


       void prefix_propinfo(void *driver_handle, const char *prop_name,
            mac_prop_id_t prop_id, mac_prop_info_handle_t prop_handle);

PARAMETERS
       driver_handle    pointer  to  the driver-private handle that was speci‐
                        fied by the device driver through the  m_driver  field
                        of the mac_register(9S) structure during registration.


       stat             statistic being queried


       stat_val         value of statistic being queried


       promisc_mode     promiscuous mode to be set


       add              whether to add or delete the multicast address


       mcast_addr       value of the multicast address to add or remove


       ucast_addr       value of the unicast address to set


       q                STREAMS queue for ioctl operation


       mp               message block for ioctl operation


       mp_chain         chain of message blocks to be sent


       cap              capability type, MAC_CAPAB_HCKSUM or MAC_CAPAB_LSO


       cap_data         pointer  to  capability data. The type of data depends
                        on the capability type specified by cap.


       prop_name        name of a driver-private property


       prop_id          property identifier


       prop_val_size    property value size, in bytes


       prop_val         pointer to a property value


       prop_flags       property query flags


       prop_perm        property permissions


INTERFACE LEVEL
       Solaris architecture specific (Solaris DDI)

DESCRIPTION
       The entry points described below are implemented by a MAC device driver
       and passed to the MAC layer through the mac_register structure as  part
       of the registration process using mac_register(9F).


       The  mc_getstat() entry point returns through the 64 bit unsigned inte‐
       ger pointed to by stat_value the value of the  statistic  specified  by
       the  stat  argument.  Supported statistics are listed in the Statistics
       section below. The device driver mc_getstat() entry point should return
       0 if the statistics is successfully passed back to the caller, or ENOT‐
       SUP if the statistic is not supported by the device driver.


       The mc_start() entry point starts the device driver instance  specified
       by driver_handle.


       The mc_stop() entry point stops the device driver instance specified by
       driver_handle.  The  MAC  layer will invoke the stop entry point before
       the device is detached.


       The mc_setpromisc() entry point is used to change the promiscuous  mode
       of  the  device driver instance specified by driver_handle. Promiscuous
       mode should be turned on if the promisc_mode is set to B_TRUE  and  off
       if the promisc_mode is set to B_FALSE.


       The  mc_multicst()  entry  point  adds  or remove the multicast address
       pointed to by mcast_addr to or from the device  instance  specified  by
       driver_handle.


       The mc_unicst() entry point sets the primary unicast address of the de‐
       vice  instance  specified  by  driver_handle  to the value specified by
       ucast_addr. The device must start passing  back  through  mac_rx()  the
       packets  with  a  destination MAC address which matches the new unicast
       address.


       The mc_tx() entry point is used to transmit the message  block  on  the
       device  driver  instance  specified  by driver_instance. If the message
       block could not be submitted to the hardware for processing, the  entry
       point returns NULL. If the hardware resources were exhausted, the entry
       point  returns  the message block that could not be sent. In that case,
       the driver is responsible  for  invoking  the  mac_tx_update(9F)  entry
       point  when  more  hardware  transmit resources are available to resume
       transmission. The driver is responsible for freeing the  message  block
       once the packet has been consumed by the hardware.


       The  mc_ioctl()  entry point is a generic facility which can be used to
       pass arbitrary ioctl to a driver from STREAMs clients. This facility is
       intended to be used  only  for  debugging  purpose  only.  The  STREAMs
       M_IOCTL  messages  can  be  generated  by  a user-space application and
       passed done to the device libdlpi(3LIB).


       The mc_getcapab() entry point queries a specific  capability  from  the
       driver.  The  cap  argument  specifies  the  type  of  capability being
       queried, and cap_data is used by the driver to  return  the  capability
       data to the framework, if any. It the driver does not support the capa‐
       bility  specified  by  the framework, it must return B_FALSE, otherwise
       the driver must return B_TRUE.  The  following  capabilities  are  sup‐
       ported:

       MAC_CAPAB_HCKSUM

           The  cap_data  argument  points  to a uint32_t location. The driver
           must return in cap_data a  combination  of  one  of  the  following
           flags:


           HCKSUM_INET_PARTIAL

               Partial 1's complement checksum ability.


           HCKSUM_INET_FULL_V4

               Full 1's complement checksum ability for IPv4 packets.


           HCKSUM_INET_FULL_V6

               Full 1's complement checksum ability for IPv6 packets.


           HCKSUM_IPHDRCKSUM

               IPv4 Header checksum offload capability.

           These  flags  indicate  the level of hardware checksum offload that
           the driver is capable of performing for outbound packets.

           When hardware checksumming is enabled,  the  driver  must  use  the
           mac_hcksum_get(9F)  function  to  retrieve  the per-packet hardware
           checksumming metadata.


       MAC_CAPAB_LSO

           The cap_data argument points to a mac_capab_lso_t  structure  which
           describes  the  LSO capabilities of the driver, and is described in
           detail in mac_capab_lso(9S).


       MAC_CAPAB_RINGS

           The cap_data argument points to a mac_capab_rings_t structure  that
           describes  the  hardware  transmit and receive rings (DMA channels)
           capabilities of the driver. This information allows  the  framework
           to  schedule the traffic arriving from receive rings, associate MAC
           addresses with receive rings, group receive rings, and fan out out‐
           bound traffic to multiple transmit rings.  See  mac_capab_rings(9S)
           for more information.



       The  mc_setprop()  and  mc_getprop()  entry points set and get, respec‐
       tively, the value of a property for the device driver  instance  speci‐
       fied  by  driver_handle. The property is specified by the prop_id argu‐
       ment, and is one of the properties identifier listed in section Proper‐
       ties below. The value  of  the  property  is  stored  in  a  buffer  at
       prop_val,  and  the  size of that buffer is specified by prop_val_size.
       The MAC layer ensures that the buffer is  large  enough  to  store  the
       property  specified  by prop_id. The type of each property is listed in
       the Properties section below.


       The mc_propinfo() entry point returns immutable attributes of  a  prop‐
       erty  for  the  device  driver instance specified by driver_handle. The
       property is specified by the prop_id argument, and is one of the  prop‐
       erties  identifier  listed in section Properties below. The entry point
       invokes the mac_prop_info_set_perm(),  mac_prop_info_set_default(),  or
       mac_prop_info_set_range() functions to associate specific attributes of
       the  property  being  queried. The opaque property handle passed to the
       mc_propinfo() entry point must be passed as-is to these routines.


       In addition to the properties listed in the Properties  section  below,
       drivers can also expose driver-private properties. These properties are
       identified  by  property  names  strings. Private property names always
       start with an underscore (_) character and must be no longer  than  256
       characters,  including  a  null-terminating  character.  Driver-private
       properties  supported  by  a  device  driver  are  specified   by   the
       m_priv_props field of the mac_register data structure. During a call to
       mc_setprop(),  mc_getprop(),  or  mc_propinfo(),  a private property is
       specified by a property id of MAC_PROP_PRIVATE, and the driver property
       name is passed through the prop_name argument. Private property  values
       are  always  specified by a string. The driver is responsible to encode
       and parse private properties value strings.

RETURN VALUES
       The mc_getstat() entry point returns 0 on success, or  ENOTSUP  if  the
       specific statistic is not supported by the device driver.


       The  mc_start(),  mc_setpromisc(), mc_multicst(), and mc_unicst() entry
       points return 0 on success and one of the  error  values  specified  by
       Intro(2) on failure.


       The  mc_getcapab() entry point returns B_TRUE if the capability is sup‐
       ported by the device driver, B_FALSE otherwise.


       The mc_tx() entry point returns NULL if all packets could be posted  on
       the hardware to be sent. The entry point returns a chain of unsent mes‐
       sage blocks if the transmit resources were exhausted.


       The  mc_setprop()  and  mc_getprop()  entry points return 0 on success,
       ENOTSUP if the property is not supported by the device  driver,  or  an
       error value specified by Intro(2) for other failures.

CONTEXT
       The mc_tx() entry point can be called from interrupt context. The other
       entry points can be called from user or kernel context.

STATISTICS
       The  stat argument value of the mc_getstat() entry point is used by the
       framework to specify the specific statistic being queried. The  follow‐
       ing statistics are supported by all media types:


       MIB-II stats (RFC 1213 and RFC 1573):

         MAC_STAT_IFSPEED
         MAC_STAT_MULTIRCV
         MAC_STAT_BRDCSTRCV
         MAC_STAT_MULTIXMT
         MAC_STAT_BRDCSTXMT
         MAC_STAT_NORCVBUF
         MAC_STAT_IERRORS
         MAC_STAT_UNKNOWNS
         MAC_STAT_NOXMTBUF
         MAC_STAT_OERRORS
         MAC_STAT_COLLISIONS
         MAC_STAT_RBYTES
         MAC_STAT_IPACKETS
         MAC_STAT_OBYTES
         MAC_STAT_OPACKETS
         MAC_STAT_UNDERFLOWS
         MAC_STAT_OVERFLOWS
         MAC_STAT_IDROPS
         MAC_STAT_IDROPBYTES
         MAC_STAT_ODROPS
         MAC_STAT_ODROPBYTES



       The following statistics are specific to Ethernet device drivers:


       RFC 1643 stats:

         ETHER_STAT_ALIGN_ERRORS
         ETHER_STAT_FCS_ERRORS
         ETHER_STAT_FIRST_COLLISIONS
         ETHER_STAT_MULTI_COLLISIONS
         ETHER_STAT_SQE_ERRORS
         ETHER_STAT_DEFER_XMTS
         ETHER_STAT_TX_LATE_COLLISIONS
         ETHER_STAT_EX_COLLISIONS
         ETHER_STAT_MACXMT_ERRORS
         ETHER_STAT_CARRIER_ERRORS
         ETHER_STAT_TOOLONG_ERRORS
         ETHER_STAT_MACRCV_ERRORS



       MII/GMII stats:

         ETHER_STAT_XCVR_ADDR
         ETHER_STAT_XCVR_ID
         ETHER_STAT_XCVR_INUSE
         ETHER_STAT_CAP_1000FDX
         ETHER_STAT_CAP_1000HDX
         ETHER_STAT_CAP_100FDX
         ETHER_STAT_CAP_100HDX
         ETHER_STAT_CAP_10FDX
         ETHER_STAT_CAP_10HDX
         ETHER_STAT_CAP_ASMPAUSE
         ETHER_STAT_CAP_PAUSE
         ETHER_STAT_CAP_AUTONEG
         ETHER_STAT_ADV_CAP_1000FDX
         ETHER_STAT_ADV_CAP_1000HDX
         ETHER_STAT_ADV_CAP_100FDX
         ETHER_STAT_ADV_CAP_100HDX
         ETHER_STAT_ADV_CAP_10FDX
         ETHER_STAT_ADV_CAP_10HDX
         ETHER_STAT_ADV_CAP_ASMPAUSE
         ETHER_STAT_ADV_CAP_PAUSE
         ETHER_STAT_ADV_CAP_AUTONEG
         ETHER_STAT_LP_CAP_1000FDX
         ETHER_STAT_LP_CAP_1000HDX
         ETHER_STAT_LP_CAP_100FDX
         ETHER_STAT_LP_CAP_100HDX
         ETHER_STAT_LP_CAP_10FDX
         ETHER_STAT_LP_CAP_10HDX
         ETHER_STAT_LP_CAP_ASMPAUSE
         ETHER_STAT_LP_CAP_PAUSE
         ETHER_STAT_LP_CAP_AUTONEG
         ETHER_STAT_LINK_ASMPAUSE
         ETHER_STAT_LINK_PAUSE
         ETHER_STAT_LINK_AUTONEG
         ETHER_STAT_LINK_DUPLEX


PROPERTIES
       tab();  lw(2.75i)  lw(2.75i)  lw(2.75i) lw(2.75i) PropertyProperty Type
       MAC_PROP_DUPLEXlink_duplex_t    MAC_PROP_SPEEDuint64_t    MAC_PROP_STA‐
       TUSlink_state_t       MAC_PROP_AUTONEGuint8_t      MAC_PROP_MTUuint32_t
       MAC_PROP_FLOWCTRLlink_flowctrl_t         MAC_PROP_ADV_10GFDX_CAPuint8_t
       MAC_PROP_EN_10GFDX_CAPuint8_t           MAC_PROP_ADV_1000FDX_CAPuint8_t
       MAC_PROP_EN_1000FDX_CAPuint8_t          MAC_PROP_ADV_1000HDX_CAPuint8_t
       MAC_PROP_EN_1000HDX_CAPuint8_t           MAC_PROP_ADV_100FDX_CAPuint8_t
       MAC_PROP_EN_100FDX_CAPuint8_t            MAC_PROP_ADV_100HDX_CAPuint8_t
       MAC_PROP_EN_100HDX_CAPuint8_t             MAC_PROP_ADV_10FDX_CAPuint8_t
       MAC_PROP_EN_10FDX_CAPuint8_t              MAC_PROP_ADV_10HDX_CAPuint8_t
       MAC_PROP_EN_10HDX_CAPuint8_t MAC_PROP_PRIVATEchar[]


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Availabilitysystem/header _ Interface  StabilityCommit‐
       ted


SEE ALSO
       libdlpi(3LIB),            attributes(7),            mac_hcksum_get(9F),
       mac_prop_info_set_perm(9F),    mac_register(9F),     mac_tx_update(9F),
       mac_capab_lso(9S), mac_capab_rings(9S), mac_register(9S)

Oracle Solaris 11.4            9 September 2024                        mac(9E)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3