qfe(7d)




NAME

     qfe - SUNW,qfe Quad Fast-Ethernet device driver


SYNOPSIS

     /dev/qfe


DESCRIPTION

     The  SUNW,qfe Quad Fast-Ethernet driver is a multi-threaded,
     loadable,  clonable,  STREAMS hardware driver supporting the
     connectionless Data Link Provider Interface, dlpi(7P),  over
     a  SUNW,qfe Quad Fast-Ethernet controller. Multiple SUNW,qfe
     controllers installed within the system are supported by the
     driver.  The  qfe  driver  provides  basic  support  for the
     SUNW,qfe hardware. It is used to handle the   SUNW,qfe  dev-
     ice.  Functions  include  chip initialization, frame transit
     and receive, multicast and promiscuous  support,  and  error
     recovery and reporting.

  SUNW,qfe
     The SUNW,qfe device provides a 100Base-TX networking  inter-
     face.  There are two types of  SUNW,qfe device: one support-
     ing Sbus and the other supporting the PCI bus interface. The
     Sbus   SUNW,qfe device uses Sun's  FEPS ASIC, which provides
     the Sbus interface and MAC functions. The PCI
      SUNW,qfe device uses Sun's PFEX ASIC  to  provide  the  PCI
     interface  and MAC functions. Both connect with the 100Base-
     TX on-board transceiver, which connects to a  RJ45 connector
     to  provide  the Physical layer functions and external  con-
     nection.

     The 100Base-TX standard specifies an "auto-negotiation" pro-
     tocol  to  automatically select the mode and speed of opera-
     tion. The internal transceiver is  capable  of  doing  auto-
     negotiation  with  the remote-end of the link (link partner)
     and receives the capabilities  of the remote end. It selects
     the   Highest  Common Denominator mode of operation based on
     the priorities.  It also supports  forced-mode of  operation
     where the driver can select the mode of operation.


APPLICATION PROGRAMMING INTERFACE

     The cloning character-special device  /dev/qfe  is  used  to
     access all SUNW,qfe controllers installed within the system.

  qfe and DLPI
     The  qfe 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.
     The driver returns an error (DL_ERROR_ACK) 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) at last detach.

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

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

        o  The minimum SDU is 0.

        o  The dlsap address length is 8.

        o  The MAC type is DL_ETHER.

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

        o  The service mode is DL_CLDLS.

        o  No  optional  quality  of  service  (QOS)  support  is
           included at present so the  QOS fields are 0.

        o  The provider style is DL_STYLE2.

        o  The version is DL_VERSION_2.

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

     Once  in  the  DL_ATTACHED  state,  the  user  must  send  a
     DL_BIND_REQ to associate a particular service access pointer
     SAP with the stream. The qfe driver interprets the sap field
     within the DL_BIND_REQ as an Ethernet "type" therefore valid
     values for the sap field are in the [0-0xFFFF] range.   Only
     one Ethernet type can be bound to the stream at any time.

     If the user selects 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" then the frame will be duplicated and routed up multi-
     ple streams as DL_UNITDATA_IND messages.

     In transmission, the driver checks  the  sap  field  of  the
     DL_BIND_REQ  if  the  sap value is 0, and if 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  subsequent
     DL_UNITDATA_REQ  messages  and  transmits  802.3 frames that
     have this value in the MAC frame header length field.

     The qfe 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 hardcode to this particular
     implementation-specific DLSAP address format but use  infor-
     mation  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, the user may transmit frames  on
     the  Ethernet by sending DL_UNITDATA_REQ messages to the qfe
     driver. The qfe driver will route received  Ethernet  frames
     up  all  those  open  and  bound  streams having a sap which
     matches  the  Ethernet  type  as  DL_UNITDATA_IND  messages.
     Received Ethernet frames are duplicated and routed up multi-
     ple open streams if necessary. The DLSAP  address  contained
     within the DL_UNITDATA_REQ and DL_UNITDATA_IND messages con-
     sists of both the sap (type) and  physical  (Ethernet)  com-
     ponents.

     In addition to the mandatory connectionless DLPI message set
     the driver also supports the following primitives.

  qfe Primitives
     The DL_ENABMULTI_REQ and DL_DISABMULTI_REQ primitives enable
     or   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. The driver accepts these  primitives  in  any  state
     following DL_ATTACHED.

     The DL_PROMISCON_REQ and DL_PROMISCOFF_REQ  primitives  with
     the  DL_PROMISC_PHYS  flag set in the dl_level field enables
     or disables reception of all  frames on the media  ("promis-
     cuous mode"), including frames generated by the local host.

     When used with the DL_PROMISC_SAP flag set this  enables  or
     disables  reception  of all sap (Ethernet type) values. When
     used with the DL_PROMISC_MULTI flag set this enables or dis-
     ables 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 successful 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  root.   Otherwise  EPERM  is
     returned in the DL_ERROR_ACK. This primitive is  destructive
     in  that  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.

  qfe Driver
     By default, the  qfe driver performs  "auto-negotiation"  to
     select the  mode and  speed of the link.

     The link can be in one of the  four following modes:

        o  100 Mbps, full-duplex

        o  100 Mbps, half-duplex

        o  10 Mbps, full-duplex

        o  10 Mbps, half-duplex

     These speeds and modes are described in the 100Base-TX stan-
     dard.

     The auto-negotiation protocol automatically selects:

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

        o  Speed (100 Mbps or 10 Mbps)

     The auto-negotiation protocol does the following:

        o  Gets all the 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.

        o  The highest priority is given to the 100  Mbps,  full-
           duplex;  lowest  priority  is  given to 10 Mbps, half-
           duplex.

     The 100Base-TX transceiver is capable of all of the  operat-
     ing  speeds  and  modes  listed  above.  By  default,  auto-
     negotiation is used to select the speed and the mode of  the
     link and the common mode of operation with the link partner.

     Sometimes, the user may want to select the speed and mode of
     the  link.  The  SUNW,qfe device supports programmable "IPG"
     (Inter-Packet Gap) parameters ipg1 and   ipg2.  By  default,
     the  driver  sets  ipg1 to 8  byte-times and ipg2 to 4 byte-
     times (which are the standard values). Sometimes,  the  user
     may  want  to  alter  these  values depending on whether the
     driver supports 10 Mbps or 100  Mpbs  and  accordingly,  IPG
     will be set to 9.6 or 0.96 microseconds.

  qfe Parameter List
     The qfe driver provides  for  setting  and  getting  various
     parameters  for  the   SUNW,qfe  device.  The parameter list
     includes:

        o  current transceiver status

        o  current link status

        o  inter-packet gap

        o  local transceiver capabilities

        o  link partner capabilities

     The local transceiver has two sets of capabilities: one  set
     reflects  the capabilities of the hardware, which are  read-
     only (RO) parameters, and the second set, which reflects the
     values  chosen  by  the  user,  is used in  speed selection.
     There are read/write (RW) capabilities. At boot time,  these
     two  sets of capabilities will be the same. The Link Partner
     capabilities  are  also  read-only  parameters  because  the
     current  default  value of these parameters can only be read
     and cannot be modified.


FILES

     /dev/qfe
           qfe special character device

     /kernel/drv/qfe.conf
           system wide default device driver properties


SEE ALSO


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


Man(1) output converted with man2html