Each IOP has an IOP_timer member that the IOS initially sets to 15 seconds. On each subsequent timer interrupt (approximately one per second), the IOS decrements by one second the corresponding IOP_timer member in each outstanding IOP. If the IOP_timer member in any IOP becomes zero before the packet is freed, the IOS sends the AEP_TIMEOUT command to the asynchronous event routines for all drivers.
In this case, the IOS sets the AEP_i_t_o_iop member to the address of the affected IOP. If a driver has already processed this IOP, that driver sets the AEP_result member to zero; otherwise, it sets the member to non-zero. If a driver has processed the request but the adapter has failed to respond, the driver can correct the problem, such as resetting the adapter. If a driver is queuing the request and has not yet processed the request, it can simply reset the IOP_timer member with the value in the IOP_orig_timer field.
See also AEP, IOP