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 |
---|---|
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.