5 NT DRIVER FOR ICL ETHERTEAM16I
5.1 Current Status of the Driver
5.2 Installation of the Driver
The NT drivers for EtherTeam16i can be found from the subdirectory NDIS3\NT
have the following file names:
ETH16I.SYS NT Driver
OEMSETUP.INF OEM Setup File
ETH16I.HLP OEM Setup Help File
To install the NT Driver for ICL EtherTeam16i, do the following:
1. If needed, use the EtherTeam16i Configuration Utility to check that the
I/O Base Addresses and IRQ Numbers of the adapters to be installed do not
conflict with any other adapter(s).
2. Use the Windows NT Control Panel to install the driver. Give the path
A:\NDIS3\NT when prompted for the OEM Driver diskette.
NOTE! The OEMSETUP.INF (OEMSETNT.INF) can be found also from the OEM
Driver Disk root, but in case of "Update" you MUST give the whole path
name.
1. Select the I/O Base Address according to the EEPROM Setup value of
your adapter. The default AUTO means that the adapter is searched
from the possible I/O Base Addresses.
NOTE! The I/O Base Addresses can be defined as AUTO although several
adapters are installed. In this case, adapter instances are searched
and allocated in the following order:
0240, 0260, 0280, 02A0, 0300, 0340, 0380
NOTE! In case of several adapters installed, do not use any "mixed"
definitions for the I/O Base Address. Either define them all
explicitly or leave them all AUTO.
2. Select the Interrupt Number according to the EEPROM Setup value of
your adapter. The default AUTO means that the Interrupt Number from
the Setup EEPROM is used.
NOTE! If the Interrupt Number is given explicitly, it can't override
the Setup value on the EEPROM but must match with it.
3. Select the Transceiver. The value SETUP here means that the
transceiver definition from the Setup EEPROM is used (Its factory
setting is AUTO).
If the transceiver is given explicitly (BNC, TP or AUI), then it is
used. Otherwise (AUTO) the driver detects automatically the network
connection (provided that the cable is connected while booting the
system).
5.3 Advanced Installation Features
There are some keywords detected by the driver which do not appear in the
Network from Control Panel, but can be affected by the NT Registry Editor
(REGEDT32).
NOTE! These are for special purposes only, and are not required in normal
installation. In fact the StagedReceive (see below) is the only one which
may be needed in some situations.
To define these parameters, start REGEDT32 from APPLICATIONS and then select
the parameters of EtherTeam16i Driver by selecting the driver parameters from
the menu as follows:
HKEY_LOCAL_MACHINE on Local Machine
SYSTEM
CurrentControlSet
Services
ETH16I01
Parameters
If more adapters are installed, then you must select the parameters of the
adapter instance concerned, for example of ETH16I02. You can change the value
of a parameter by selecting the parameter field and giving its new value.
The current release of the driver contains the following parameters
selectable by the REGEDIT32:
1. TransmitBufferSize
Specifies the amount of Adapter Buffer Memory (as kbytes) reserved for
transmit packets.
Possible values : 4, 8 or 16
Default : 8
This may be used to define 16k of transmit buffer size in cases where the
adapter is supposed to do a lot of transmissions compared to receives.
Still it is unclear if any significant improvement in performance can be
achieved.
2. NetworkAddress
Overrides the permanent network address of the card. The value is a
hexadecimal string of 12 digits, e.g. 00004B010203.
Possible values : Any non-multicast address.
Default : The burned-in address of the adapter.
3. MultiProcessor
May be used to tell the driver that it can suppose to be running in
SingleProcessor environments. When accessing this, the first adapter
instance (ETH16I01) must be selected. The definition is then applied to
all other adapter instances, if any.
Possible values : Yes (MultiProcessor) or No (SingleProcessor)
Default : Yes (Multiprocessor)
The NT driver has been written to work properly in MultiProcessor
environments, which causes a little more overhead to it. This overhead
may be decreased by the Singleprocessor definition. However it is unclear
if any significant improvement in performance can be achieved.
NOTE! Must be used with care, because using SingleProcessor mode in
Multiprocessor enviroments causes fatal error conditions.
4. StagedReceive
Specifies the default receive stage buffering when multiple protocols are
bound.
Possible values : No (NonStaged) or Yes (Staged)
Default : No (NonStaged)
NDIS3 specification requires that the MAC driver must be prepared to copy
the packet more than once per receive event. Thus, adapters (like
EtherTeam16i) which do not support reading the packet from the adapter
several times, must copy the packet into a temporary staging buffer when
multiple protocols are bound.
Because of performance, EtherTeam16i NT Driver attempts to avoid this
staging, and switches to the staged mode only if necessary. The following
is a description of how the driver selects the actual receive mode (if
there is only one binding, the driver always uses non-staged mode):
1. When a binding is opened, the driver initially selects the staged
mode. It also sets a certain threshold value for the number of first
packet reads. The purpose of this value is to give the driver time to
detect whether it is "safe" to start using non-staged mode.
2. If two bindings attempt to copy the same packet during these first
packet reads, the driver stays in the staged mode, otherwise it
switches to the non-staged mode.
3. If two bindings attempt to copy the same packet when the driver is in
the non-staged mode, the driver encounters an error. The packet
cannot be copied another time and the binding is informed about this
with an error code (the error info is also written to the log). The
driver then switches back to the staged mode, and all the following
packets are then received in the staged mode.
4. The driver stays in the selected mode until the binding condition is
changed. If the binding which caused the staged mode is closed, or
there is only one binding left, the non-staged mode can again be
used.
The method described above is supposed to work reliably, provided that
the protocols can recover reasonably from loosing a single packet just
before switching to the staged mode. But if any problems are supposed to
be due to loosing the packet, the driver can be set to the staged mode as
default (but at the cost of performance).
The need for selecting permanently the staged mode can be checked from
the Event Log (see section 5.4 "Driver Error Codes", Error Code 0016).
5.4 Driver Error Codes
The driver writes into log information about initialisation or runtime
errors. Use the Event Viewer from Administrative Tools to view the contents
of the Log. The texts appearing in the Description Field of Event Detail are
according to the NDIS standard messages. The value N in the label of the
message (e.g. Eth16i0N) tells the adapter instance which has created the
message.
Because all possible driver errors cannot be described directy with the
standard messages, the log also contains more detailed error info in binary
format. To get it, view the Data Field as Words. The error code (word) can be
found from offset 002Ch.
The following is is a list of the errors detected by the driver and stored to
the Event Log. The first 3 of these errors are detected during driver
initialisation only , but the last 3 even runtime. There is a limitation for
the number of how many times the runtime errors are logged.
1. Eth16i0N : Could not find an adapter.
The driver could not find the adapter from the specified I/O-Base
address, or from any possible address (if AUTO). The binary error code in
the Event Log is:
0011 = Adapter Not Found
Check that there is no conflict in the definition of the Base I/O-
address, and that it does not overlap with any other adapter (range
20h!).
2. Eth16i0N : Has determined that the driver is not functioning properly.
The driver could not be properly started. Probable reasons for this
message are: EEPROM checksum error, IRQ conflict, Network not connected
(when the Transceiver was AUTO), or the EtherCoupler could not be
started. The binary error code in the Event Log is:
0012 = EEPROM Checksum Error
0013 = IRQ Conflicting With Setup
0014 = Network Not Connected.
0015 = EtherCoupler Not Started.
Check the EEPROM Setups, possible I/O-Base Address and IRQ Number
conflicts, and that the network is properly connected.
3. Eth16i0N : Could not connect to the interrup number supplied.
The driver could not attach the interrupt handler, when requested the
NDIS Wrapper to do it. The binary error code in the Event Log is:
0001 = Could not attach to the interrupt
Ensure that no other adapter in the system is not using the interrupt
number concerned.
4. Eth16i0N : Could not allocate the resources necessary for operation.
This is a collection of SW related errors detected by the driver in
communication with the NDIS Wrapper, like: Allocating memory, creating
filter data base, etc). The binary error code in the Event Log is:
0002 = Could not create a filter data base
0008 = Could not add a new binding to the filter data base.
0009 = Could not allocate data space for the open binding
These errors typically relate to problems with the overall system, not in
the NT driver itself.
5. Eth16i0N : Has encountered an internal error and has failed.
The probable reason for this message is that the driver was in the non-
staged receive mode and was forced to change to the staged mode, loosing
however one packet. The binary error code in the Event Log is:
0016 = Non-Staged Receive Error
If the protocol cannot handle this type of error properly, set the driver
permanently to the staged mode (see section 5.3, "Staged Receive").
6. Eth16i0N : Timed out during operation.
The driver has detected that there was a pending transmit which did not
terminate properly. This represents a fatal HW-error, due to which the
hardware was re-initialized. The binary error code in the Event Log is:
0017 = HW Reinitized Due To Transmit Timeout
If this error message appears repeatedly, check that the network is in
condition.