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.