Support Home Page
Cubix Home Page
Feedback Forms


DEC 10/100Base-T
SCO Unix (LLI)



DC21X4 driver for SCO Unix

V03.32


1. Copyright Notice:

Digital Equipment Corporation makes no representations that the use of its products in the manner described in this publication will not infringe on existing or future patent rights, nor do the descriptions contained in this publication imply the granting of licenses to make, use, or sell equipment or software in accordance with the description.

Copyright Digital Equipment Corporation 1994, 1995, 1996.

All rights reserved.

Do not redistribute the driver files.

Copyright SCO Unix, Inc. 1994.

SCO Unix is a registered trademark of SCO Inc.

Digital Semiconductor, DEC, DECnet, Digital, PATHWORKS, ThinWire, and the DIGITAL logo, are trademarks of Digital Equipment Corporation.


All other trademarks and registered trademarks are the property of their respective holders.

2. Overview:

This Readme file explains how to install the SCO Unix LLI driver. This driver is currently supported for the following devices:

Digital Semiconductor 21140/21140A chipset


3. Preinstallation Hardware and Software Requirements:

A. Hardware Requirements:

An IBM-compatible personal computer with 80386 or higher microprocessor and PCI bus.

A Digital Semiconductor 21040 or Digital Semiconductor 21140 or Digital Semiconductor 21041 or Digital Semiconductor 21140A or Digital Semiconductor 21142 or Digital Semiconductor 21143 based Ethernet / Fast Ethernet adapter for that bus.

B. Firmware Requirements:

Fully complient Rev. 2.0 or above PCI BIOS supplied with the PC.

If Ethernet adapter makes use of Digital Semiconductor 21050 (PCI-PCI bridge) or any other PCI-PCI bridge, the PCI BIOS should support PCI-PCI bridge architecture.

C. Software Revision Requirements:

  • ODT 2.0 or higher version, or
  • SCO Unix 3.2.4 or higher version, or
  • SCO OpenServer 5.0 or higher version
  • SCO Unix LLI driver disk





  • 4. Files and Directories:

    This directories contains the following files:

    Table 1: The SCO Unix LLI driver Directory Files

    TSUL_INS.TXT This File

    TSUL_REL.TXT Provides a description of updates to the new driver.

    SUL332TD.Z (42578) The compressed image of the distribution diskette.

    The DC21X4 distribution diskette contains all the files required for installing the driver using custom and netconfig, in particular:

  • - /usr/include/sys/d21x_space.h - header file, not intended to be modified


  • 6. Installing Software:

    To install the SCO Unix LLI Device Driver:

    Copying the distribution files

  • The number in parentheses near the file's name (above) is the checksum for the file. To verify, use:
  • sum -r SUL332T.dd.Z and compare the results.
  • Custom -> Install -> A New Product -> Entire Product
  • For SCO OpenServer (Everest), run the Software Manager. From the menus select:
  • Software -> Install New -> From Host -> Media Floppy -> Full
  • NOTE: For boards with more than one Digital Semiconductor 21X4X on them, a driver must be installed for each active port on the board. Thus, if a board has two separate ports, two separate chains must be created in order to connect both ports to networks. This is similar to installing two boards, each with one port.
  • Not all ports must be active. If only one port is used, it must be the first port (as it is found on the bus by the PCI BIOS).

  • If you don't wish to modify the space.c file relink the kernel at the prompt.
  • NOTE: If your system does not support 32-bit protected mode PCI BIOS calls, you MUST modify the parameter XXX_HW_ACCESSES to the PCI mechanism appropriate to your system (see space.c for details).

  • %d21x 0x2000-0x2200 5 - type=DC21040/TP addr=12-34-56-78-9a-bc
  • or
  • %d21x 0x2000-0x2200 5 - type=DC21140/100TX addr=12-34-56-78-9a-bc
  • with the appropriate I/O addresses, IRQ, serial media and IEEE address.



  • 7. Parameters

    The space.c file contains the different parameters that can be modified.

    They can be divided into several groups:

    1. Port parameters. These include:

    XXX_HW_ACCESSES

  • XXX_DC2114X_SERIAL_MODE
  • XXX_BUS_ARBITRATION
  • XXX_BURST_LENGTH
  • XXX_CACHE_ALIGNMENT
  • XXX_PASS_BAD_FRAMES
  • XXX_BACKOFF_CNTR
  • XXX_10MB_THRESHOLD
  • XXX_100MB_THRESHOLD
  • XXX_PARITY_ERROR_RESPONSE
  • XXX_LATENCY_TIMER
  • XXX_CRC_CALC
  • XXX_DC2114X_GPR_CTRL
  • XXX_DC2114X_GPR_DATA
  • XXX_TURBO
  • XXX_SNOOZE
  • 2. Driver tuning parameters:

    XXX_RX_BUFS_TO_POST

  • XXX_RX_PKTS_QUEUED_THRESH_HI
  • XXX_RX_PKTS_QUEUED_THRESH_LO
  • XXX_MAX_USRS
  • 3. Driver diagnostics control:

    XXX_DEBUG

    The meaning of each is explained in detail in the space.c file, including allowed values for each parameter. The values in space.c apply to ALL the installed boards.

    Space.c is NOT the place to modify the board's slot number line. This must be modified in netconfig, by running the reconfiguration script.





    8. Errors and trouble shooting

    1. Mismatch between PCI configuration and netconfig/space.c:

    In order for the adapter to work correctly, the same values that are used during the PCI configuration (e.g CFLT) must be used in the space.c file. Mismatches may cause the adapter to malfunction, or even hang the system.

    Currently, the PCI setup takes precedence except for the value for the latency timer, which is taken from the space.c file.

    2. Wrong HW access method for PCI configuration space:

    If the XXX_HW_ACCESSES parameter in space.c is set to a value not supported by your system there will be problems at boot time. Set this parameter to a value that is supported by your system.

    By default, the parameter is set so the driver uses 32-bit protected mode PCI BIOS calls.

    3. Driver binds to wrong PCI board (network):

    When multiple PCI boards are installed, the chains are bound to the adapters in the order that the adapters are found on the PCI bus by the PCI BIOS. Thus, d21x0 will bind to the first adapter found by the PCI BIOS, d21x1 to the second etc. Removing or adding boards without changing the configuration in netconfig can cause a shift in the order that chains are bound. Also, mis-identifying the order in which the adapters are found by the BIOS can cause wrong bindings. This is especially true when using boards with PCI-PCI bridges. The adapters on such boards are located on a PCI bus with a number higher than 0 (bus #1, #2 etc.) and will be found by the PCI BIOS after all the devices on bus zero.



    9. Driver's error messages

    (when working in debug level > 0)

    In "d21xi" the 'i' stands for a number between 0 and 3, indicating the particular instance of the driver the message is reported by.

  • This message will be printed in PCI board - if can't read or write the configuration registers when using the PCI BIOS.
  • This message will be printed in PCI board - if PCMC rev.1 chip was found and it works with write-back cache mode (this mode can cause crash in the driver).
  • This message will be printed when unsupported bus (PCI is the supported bus), found.
  • This message will be printed in PCI board - if it is a board with Digital Semiconductor 21040 revision 1 on it.
  • This message will be printed if the board has Digital Semiconductor 21140 revision 1 on it.
  • This message will be printed if the board doesn't have one of the following Digital Semiconductor on it:
  • This message will be printed if the driver couldn't link the interrupt line to the interrupt handler.
  • This message will be printed in PCI board - if the value of the interrupt line that was read from the CFLT register > 0xF
  • This message will be printed in boards with Digital Semiconductor 21041 or 21140 or 21140A or DC21142 or DC21143 - if unsupported serial mode was choose by the user or read from the SROM (in case the user choose to use the SROM value) for the serial interface of Digital Semiconductor 21041 or 21140 or 21140A or DC21142 or DC21143. And in boards with Digital Semiconductor 21040 - if unsupported serial mode was choose by the user for the serial interface of Digital Semiconductor 21040
  • For DC21140/DC21140A/DC21142 based adapters, the selected serial mode is AUTOSENSE and there are GPR values in space.c that override the defaults. Either select serial mode explicitely, or set the GPR values in space.c back to the default values (see space.c).
  • This message will be printed in boards with DC21041 on it - if the chip was programmed to be in DC21040 mode (this mode is unsupported by the driver)
  • This message will be printed in PCI board (when reading IEEE address using CSR9) if couldn't read board address.
  • This message will be printed in PCI board (when reading IEEE address using CSR9) if wrong checksum of the IEEE address was read.
  • This message will be printed if the driver tried to read odd address in the SROM.
  • This message will be printed if the driver tried to read beyond the last SROM address.
  • This message will be printed if the driver couldn't read/write from/to the SROM
  • This message will be printed if the checksum of the SROM is wrong.
  • This message will be printed if the board leaf-info in the SROM.
  • This message will be printed if the null IEEE address was read from the SROM.
  • This message will be printed if the driver found SROM on the board but didn't find DC21140 or DC21041 or DC2114A or DC21142 or DC21143 chip.
  • This message will be printed if unsupported SROM version was found by the driver.
  • This message will be printed in the d21x_open routine when a specific board wasn't found by the D21Xinit routine and a request for opening a new stream to the driver was requested.
  • This message will be printed in the d21x_close routine when closing a stream that was opened to the driver and has set an alias address and the driver can't delete the address and create a new address table to the Digital Semiconductor 21X4 for some HW problems.
  • This message will be printed in the d21x_close routine when the last user of the stream close the connection to the adapter and the driver try to stop the adapter without success (due to PCI BIOS problems)
  • This message will be printed in the d21x_srvr routine when the driver can't put a unitdata_req in the upper protocol's queue and can't return it to its own queue (usually indicates a system problem).
  • This message will be printed when the driver detects a HW error and is moving to Halt state.
  • This message will be printed in the d21x_wput routine when the driver is given an unknown STREAM message.
  • "d21xi Controller has transitioned to halted state! Halt ID: TX Jabber Timer Expired" or
  • "d21xi Controller has transitioned to halted state! Halt ID: Transmit Jabber Timer expiration interrupt"
  • This messages will be printed when a TX jabber timer expired when DC21X4 sends a packet. In this case the driver stop the adapter operation.

  • This messages will be printed when a the driver failed to use the PCI BIOS for read and write the configuration registers
  • This messages will be printed when the driver fails to send setup packet

  • This messages will be printed when the driver reads DC21X4 status register and finds that the system error bit is set
  • This message will be printed when the driver couldn't allocate an error ack message (system resources problem).
  • This message will be printed when the driver gets an unbind request with a protocol value and there is no bound stream with this protocol value.
  • This message will be printed when the driver gets an invalid MACIOC_SETMCA message.
  • This message will be printed when the driver gets an invalid MACIOC_DELMCA message.
  • This message will be printed when the driver gets an invalid MACIOC_CLRMCA message.
  • This message will be printed when the driver gets an invalid MACIOC_GETMCA message.
  • This message will be printed when the driver gets an invalid MACIOC_GETADDR message.
  • This message will be printed when the driver gets an invalid MACIOC_SETADDR message.
  • This message will be printed when the driver gets an invalid MACIOC_PROMISC message.
  • This message will be printed when the driver gets a MACIOC_PROMISC but the number of users that open the driver is > 1.
  • This message will be printed when the driver gets an invalid MACIOC_GETRADDR message.
  • This message will be printed when the driver gets an invalid MACIOC_GETMCSIZE message.
  • This message will be printed when something wrong the driver internals transmit pointers.
  • This message will be printed when the driver gets a packet with length > Ethernet packet length.
  • This message will be printed when the driver gets packets to send from an unbound protocol.
  • This message will be printed when the driver gets a packet to transmit which isn't a legal Ethernet size.
  • This message will be printed when an unknown wput request was sent from the upper layer.
  • This message will be printed when an unknown ioctl message was sent from the upper layer.
  • This message will be printed when internal error was detected in media autodetection

  • 10. Hotline and Support Information:

    Call Cubix Customer Service for information and technical support:

    Voice 1-800-829-0551

    Fax 1-702-888-1001

    BBS 1-702-888-1003