When using the Hewlett-Packard Network Printer Interface to supportnetwork-attached printers, the HPREDIR software communicates with theprinter over an 802.2 DLC class II session using the LAN Manager COMTOKRdevice driver and ACSLAN.DLL interface. This article describes the variousDLC timers, default settings, and suggested values in order to make theprinter connection more reliable. HP network printer versions A.00.02 andA.00.03 are discussed below.
The DLC class II protocol uses three timers:
T1 - Response timer
T2 - Acknowledgment timer
Ti - Inactivity timer
The timer values are specified in timer ticks. Each timer requires a shorttimer tick (tick_one) and long timer tick (tick_two). The length of theseticks are specified in the PROTOCOL.INI file (see below) in 40 millisecondincrements.
The actual length of each timer (T1, T2, Ti) is selected with parametersprovided when the DLC_OPEN_SAP, DLC_OPEN_STATION, or DLC_MODIFY command isissued. In these commands, the timer value is selected with a numberbetween 1 and 10. If the number is between 1 and 5, the short timer tick(tick_one) is used. The timer value will be equal to the selected numbermultiplied by the short timer tick value:
timer value = selected number * short tick value * 40ms
If the selected number is between 6 and 10, the long timer tick (tick_two)is used. In this case the timer value will be equal to the selected numberminus 5 multiplied by the long timer tick value.
timer value = (selected number - 5) * long tick value * 40ms
The response timer (T1) is used to detect a failure to receive anacknowledgment or a response from the remote link station.
The link station starts T1 when it transmits either an I- or S-frame(RR/RNR/REJ) with the poll bit set. The T1 will be reset when the stationreceives a response frame with the final bit set. If the T1 expires, thelink station sends an S-frame with the poll bit set in order to query thestatus of the remote link station. The link station then restarts T1. Ifthere is no recovery after the specified number of retries, the linkstation assumes that the link is inoperative and disconnects the link.
The duration of T1 must take into account any delays introduced by thesource routing bridges. The suggested default value for T1 is 1 second.
The link station uses the acknowledgment timer (T2) to delay the sending ofan acknowledgment for a received I-frame. The T2 timer is started when alink station receives an I-frame. The T2 timer is reset when a link stationsends an acknowledgment in an I-frame or in an S-frame. If the T2 expires,the link station must send an acknowledgment as soon as possible.
The value of T2 must be less than the value of T1 of the remote station.This ensures that the remote link station will receive the acknowledgmentbefore its response timer expires. The suggested default value for T2 is100 milliseconds.
The inactivity timer is used to detect an inoperative condition in theremote link station or in the transmission medium. If a station does notreceive any S- or I-frames before its Ti expires, it must query the statusof the remote link station with an S-frame with the poll bit set. If itdoes not get a response after specified number of retries, it disconnectsthe link. The suggested value for Ti is 30 seconds.
Given this, here are the values used by HPREDIR (versions A.00.02 andA.00.03):
A.00.02 A.00.03 ------- -------DLC_OPEN_SAP timer_t1 05 (same) timer_t2 02 . timer_ti 03 . maxout 04 . maxin 04 . maxincr 01 . maxretrycnt 1E . sap_value C4 . options_priority 04 . sap_station_count 06 07DLC_OPEN_STATION timer_t1 01 05 timer_t2 01 02 timer_ti 01 03 maxout 04 (same) maxin 04 . maxoutincr 01 . maxretrycnt 0A . rsap_value B4 . max_i_field 0104 . accesspriority 00 .
Note the following settings for the COMTOKR driver in PROTOCOL.INI.However, because HPREDIR explicitly sets the maxretrycnt to 0A (10),COMTOKR's dlcretries entry is ignored.
Min Max Default --- --- ------- t1_tick_one 1 255 5 t2_tick_one 1 255 1 ti_tick_one 1 255 25 dlcretries 1 65000 30
These default settings yield the following timeout periods andrecommendations:
- If HPREDIR version A.00.02 is being used:
t1 = 1 * 5 * 40ms = 200ms Note: Suggested value is 1 second (though this should be adjusted if bridges are being used). To get the suggested value, t1_tick_one should be set to 25.
t2 = 1 * 1 * 40ms = 40ms Note: Suggested value is 100ms. To get the suggested value, t2_tick_one should be set to 3.
ti = 1 * 25 * 40ms = 1000ms Note: Suggested value is 30 seconds. To get this value, ti_tick_one should be set to 255 (maximum). this will only provide a 10 second inactivity timeout. The only way to increase this is to use HPREDIR version A.00.03.
- If HPREDIR version A.00.03 is being used:
t1 = 5 * 5 * 40ms = 1000ms Note: This matches the suggested value is 1 second, so the default value for t1_tick_one is recommended. However, if the DLC traffic is flowing over a bridge, this value should be increased.
t2 = 2 * 1 * 40ms = 80ms Note: This is close to the suggested value of 100ms. If t2_tick_one is set to 2, this will lead to a 160ms timeout period.
ti = 3 * 25 * 40ms = 3000ms Note: Suggested value is 30 seconds. To get this value, ti_tick_one should be set to 250.