ce(7D)




NAME

     ce - Cassini Gigabit-Ethernet device driver


SYNOPSIS

     /dev/ce


DESCRIPTION

     The ce Sun  Gigabit-Ethernet  driver  is  a  multi-threaded,
     loadable,  clonable,  STREAMS hardware driver supporting the
     connectionless Data Link Provider Interface, dlpi(7P),  over
     all  implementations  of PCI Cassini Gigabit-Ethernet add-in
     adapters. Multiple Cassini-based adapters  installed  within
     the  system are supported by the driver.  The ce driver pro-
     vides basic support for the Cassini-based Ethernet  hardware
     and  handles  the  pci108e,abba (PCI Cassini) devices. Func-
     tions  include  chip  initialization,  frame  transmit   and
     receive,   multicast  and  promiscuous  support,  and  error
     recovery  and  reporting.  The   Cassini   device   provides
     1000BASE-SX  networking  interfaces  using  the Cassini ASIC
     external  SERDES   and   fiber   optical   transceiver,   or
     10/100/1000BASE-T  using  a  Cassini ASIC attached to a GMII
     twisted pair copper transceiver,  or  10/100BASE-T  using  a
     Cassini  ASIC  attached  to  a MII twisted pair copper tran-
     sceiver.

     The 1000Base-SX standard specifies an auto-negotiation  pro-
     tocol  to  automatically  select  the  mode of operation. In
     addition to the duplex mode of operation, the  Cassini  ASIC
     can auto-negotiate  for IEEE 802.3x frame-based flow control
     capabilities. The  Cassini PCS can perform  auto-negotiation
     with  the  link's remote-end (link partner) and receives the
     capabilities of the remote end. It selects the highest  com-
     mon  denominator  mode of operation based on the priorities.
     It also supports  forced-mode of operation where the  driver
     selects the mode of operation.


APPLICATION PROGRAMMING INTERFACE

     The /dev/ce cloning character-special  device   is  used  to
     access all ce controllers installed on the system.

  ce and DLPI
     The  ce driver is a Style 2 data link service provider.  All
     M_PROTO  and M_PCPROTO type messages are interpreted as DLPI
     primitives.  Valid    DLPI   primitives   are   defined   in
     <sys/dlpi.h>.  Refer  to  dlpi(7P)  for more information. An
     explicit DL_ATTACH_REQ message by the user  is  required  to
     associate  the opened stream with a particular device (ppa).
     The ppa ID is interpreted as an unsigned long data type  and
     indicates  the  corresponding device instance (unit) number.
     An error (DL_ERROR_ACK) is returned by the driver if the ppa
     field  value  does not correspond to a valid device instance
     number for this system. The device is initialized  on  first
     attach and de-initialized (stopped) upon last detach.

     The values returned by the driver in the DL_INFO_ACK  primi-
     tive in response to the DL_INFO_REQ are as follows:

        o  Maximum  SDU  is   1500   (ETHERMTU   -   defined   in
           <sys/ethernet.h>).

        o  Minimum SDU is 0.

        o  The dlsap address length is 8.

        o  MAC type is DL_ETHER.

        o  The sap  length  value  is  -2  meaning  the  physical
           address  component is followed immediately by a 2 byte
           sap component within the DLSAP address.

        o  Service mode is DL_CLDLS.

        o  Optional quality of service (QOS)  is  not  supported;
           the  QOS fields are 0.

        o  Provider style is DL_STYLE2.

        o  Version is DL_VERSION_2.

        o  Broadcast address  value  is  Ethernet/IEEE  broadcast
           address (0xFFFFFF.)

     Once in the DL_ATTACHED state, you must send  a  DL_BIND_REQ
     to  associate a particular SAP (Service Access Pointer) with
     the stream. The ce driver interprets the  sap  field  within
     the  DL_BIND_REQ  as  an  Ethernet  "type,"  therefore valid
     values for the sap field are in the range [0-0xFFFF].   Only
     one Ethernet type can be bound to the stream at any time.

     If you select a sap with a value of 0, the receiver will  be
     in  802.3 mode.  All frames received from the media having a
     "type" field in the range [0-1500] are assumed to  be  802.3
     frames and are routed up all open streams which are bound to
     sap value 0 . If more than one stream is in  802.3 mode, the
     frame  will  be duplicated and routed up multiple streams as
     DL_UNITDATA_IND messages.

     In transmission, the driver checks  the  sap  field  of  the
     DL_BIND_REQ  to verify that the sap value is 0, and that the
     destination type field is in the range [0-1500].  If  either
     is  true, the driver computes the length of the message, not
     including initial M_PROTO mblk (message block), of all  sub-
     sequent DL_UNITDATA_REQ messages and transmits  802.3 frames
     that have this value in the MAC frame header length field.
     The ce driver DLSAP address format consists of  the  6  byte
     physical  (Ethernet)  address component followed immediately
     by the 2 byte sap  (type)  component  producing  an  8  byte
     DLSAP  address.  Applications  should  not hard code to this
     particular implementation-specific   DLSAP  address  format,
     but use information returned in the DL_INFO_ACK primitive to
     compose and decompose  DLSAP addresses. The sap length, full
     DLSAP  length, and sap/physical ordering are included within
     the DL_INFO_ACK. The physical address length can be computed
     by  subtracting  the sap length from the full  DLSAP address
     length or by issuing  the  DL_PHYS_ADDR_REQ  to  obtain  the
     current physical address associated with the stream.

     Once in the DL_BOUND state, you can  transmit frames on  the
     Ethernet  by  sending  DL_UNITDATA_REQ  messages  to  the ce
     driver. The ce driver will route received Ethernet frames up
     all  open  and  bound streams having a sap which matches the
     Ethernet type as DL_UNITDATA_IND messages.  Received  Ether-
     net  frames  are  duplicated  and  routed  up  multiple open
     streams, if necessary. The DLSAP  address  contained  within
     the DL_UNITDATA_REQ and DL_UNITDATA_IND messages consists of
     both the sap (type) and physical (Ethernet) components.

     In addition to the  mandatory  connectionless  DLPI  message
     set,  the  driver additionally supports the following primi-
     tives.

  ce Primitives
     The  DL_ENABMULTI_REQ   and   DL_DISABMULTI_REQ   primitives
     enable/disable   reception  of  individual  multicast  group
     addresses. A set of multicast addresses may  be  iteratively
     created and modified on a per-stream basis using these prim-
     itives. These primitives are accepted by the driver  in  any
     state following DL_ATTACHED.

     The DL_PROMISCON_REQ and DL_PROMISCOFF_REQ  primitives  with
     the  DL_PROMISC_PHYS   option  set  in  the  dl_level  field
     enables/disables reception of all "promiscuous mode"  frames
     on  the media, including frames generated by the local host.
     When used with the DL_PROMISC_SAP
      option set, this  enables/disables  reception  of  all  sap
     (Ethernet  type) values. When used with the DL_PROMISC_MULTI
     option set this enables/disables reception of all  multicast
     group  addresses.  The  effect  of  each is always on a per-
     stream basis and independent of the other sap  and  physical
     level configurations on this stream or other streams.

     The DL_PHYS_ADDR_REQ primitive returns the 6 octet  Ethernet
     address currently associated (attached) to the stream in the
     DL_PHYS_ADDR_ACK primitive.
      This primitive is valid only in states following a success-
     ful DL_ATTACH_REQ.
     The DL_SET_PHYS_ADDR_REQ primitive changes the 6 octet  Eth-
     ernet   address  currently  associated  (attached)  to  this
     stream. The credentials  of  the  process  which  originally
     opened  this  stream  must be superuser.  Otherwise EPERM is
     returned in the DL_ERROR_ACK. This primitive is  destructive
     because  it  affects  all  other  current and future streams
     attached to this device. An M_ERROR is  sent  up  all  other
     streams  attached to this device when this primitive is suc-
     cessful on this stream.  Once changed,  all  streams  subse-
     quently  opened and attached to this device will obtain this
     new physical address.  Once changed,  the  physical  address
     will  remain until this primitive is used to change the phy-
     sical address again or the  system  is  rebooted,  whichever
     comes first.

  ce DRIVER
     By default,  the  ce  driver  performs  auto-negotiation  to
     select the mode and flow control capabilities  of the link.

     The link can assume one of the  following modes:

        o  1000 Mbps, full-duplex

        o  1000 Mbps, half-duplex

        o  Symmetric pause

        o  Asymmetric pause

     Speeds and modes are described in the 1000Base-TX standard.

     The auto-negotiation protocol automatically selects:

        o  Operation mode (half-duplex or full-duplex)

        o  Flow control capability (symmetric and/or asymmetric)

     The auto-negotiation protocol does the following:

        o  Gets all modes of  operation  supported  by  the  link
           partner.

        o  Advertises its capabilities to the link partner.

        o  Selects the highest common denominator mode of  opera-
           tion based on the  priorities.

     The Cassini hardware can operate in all modes listed  above,
     providing  auto-negotiation  is  used by default to bring up
     the link and select the common mode of  operation  with  the
     link  partner.  The PCS also supports  forced-mode of opera-
     tion in which the driver can select the  mode  of  operation
     and the flow control capabilities, using the ndd  utility.

     The Cassini device also supports  programmable  IPG  (Inter-
     Packet  Gap)  parameters  ipg1  and   ipg2.  By default, the
     driver sets ipg1 and ipg2 to 8 and 4 byte-times respectively
     (which  are  the standard values). If desired, you can alter
     these values from the standard 1000 Mpbs IPG  set  to  0.096
     microseconds.

  ce Parameter List
     The ce driver enables the setting  and  getting  of  various
     parameters  for  the  Cassini  device.  The  parameter  list
     includes current transceiver status,  current  link  status,
     inter-packet  gap,  PCS capabilities  and link partner capa-
     bilities.

     The PCS features two set of capabilities. One  set  reflects
     the  capabilities  of  the  hardware  and are read-only. The
     second set, which reflects the values you choose,  are  used
     in  speed selection and possess read/write capabilities.  At
     boot time, these two sets of capabilities are the same.  The
     link  partner  capabilities  are  also read-only because the
     current default value of these parameters can  be  read  but
     not modified.


FILES

     /dev/ce
           ce special character device.

     /kernel/drv/ce.conf
           System-wide default device driver properties


SEE ALSO

     ndd(1M),  netstat(1M),  driver.conf(4),   ge(7D),   hme(7D),
     le(7D), qfe(7D), dlpi(7P)


Man(1) output converted with man2html