7.0 HACB Type Zero Functions

For convenience, the following table lists the HACB functions in alphabetical order. However, in the remainder of this document, they are presented in numerical order.

Type Zero Function

Code

HAM_Deactivation_Notification (Function 0x08) (Optional)

Function 0x08

HAM_Instance_Unload (Function 0x09) (Mandatory)

Function 0x09

HAM_Queue_AEN_HACB (Function 0x05) (Mandatory)

Function 0x05

HAM_Recovery_Reset (Function 0x07) (Mandatory)

Function 0x07

HAM_Return_Bus_Info (Function 0x00) (Mandatory)

Function 0x00

HAM_Return_Device_Info (Function 0x02) (Mandatory)

Function 0x02

HAM_Return_Device_Status (Function 0x0B) (Mandatory)

Function 0x0B

HAM_Return_Port_Info (Function 0x0C) (Implement if applicable)

Function 0x0C

HAM_Set_IDE_Device_Config (Function 0x04) (Optional)

Function 0x04

HAM_Scan_For_Devices (Function 0x01) (Mandatory)

Function 0x01

HAM_Suspension_Notification (Function 0x0A) (Optional)

Function 0x0A

HAM_Tag_Queue_Synch_Asynch (Function 0x06) (Implement if applicable)

Function 0x06

HAM_Unfreeze_Queue (Function 0x03) (Mandatory)

Function 0x03

HACB type zero functions are called for HACB requests where the hacbType field has a value of zero. NWPA requires a HAM to implement as many of these functions as are applicable to its adapter type. hacbType = 0 requests ask for information about the HAM, the host adapter, attached devices, sets a device's queue state, or monitors asynchronous hardware events. The HAM receives requests of this type through the union to Host command block of the HACB. Currently, there are eight HACB type zero functions that HAMs are required to implement; however, Novell has reserved up to 256 of these functions for the future. For HAMs to determine which of the functions to execute along with any applicable input parameters, the Host command block of the HACB provides the following information:

All data transfers must be handled as any other HACB request. This means that data is either placed in or retrieved from the data buffer fields of the HACB (vDataBufferPtr or pDataBufferPtr). Also, the buffer's size (in bytes) is specified in the HACB's dataBufferLen field by the process transferring the data. The functional descriptions in the following sections detail how the above information should be interpreted by the HAM in order to complete the hacbType = 0 request. The functions are listed alphabetically.

If a particular hacbType = 0 function is not supported, the function must return the HACB with a NPA_MALFORMED_HACB (or NPA_MALFORMED_HACB_QUEUE_FROZEN) value in the upper word of the hacbCompletion field and NPA_UNSUPPORTED_HACB_TYPE_0_FUNCTION value in the lower word of the same field (0x00030043 or 0x80030043).

NOTE:Whether or not the HAM driver supports a particular hacbType = 0 function, it must never return a nonzero value from the HAM_Execute_HACB function.