C.0 Revision History

The following table lists changes that were made to the NetWare® Peripheral Architecture documentation (in reverse chronological order):

March 1, 2006

Added information on NWPA.H in Section 5.1.1, Required Header Files.

Added value 37 to the npaCompletionCode table of CDI_Complete_Message.

Added a note about not calling HAI_Deactivate_Bus during specific events of NPA_Register_For_Event_Notification.

Updated the description of busSpecificInfo in NPAB_Get_Bus_Specific_Info, busType in NPAB_Get_Bus_Type, and readData in NPAB_Read_Config_Space.

Clarified address pointers in CSetB, CSetD, and CSetW.

Added information about %x and %X specifiers not being permitted in NetWare 3.12 to OutputToScreen.

Updated the parameter descriptions of sprintfWithPointer and added an Example section.

Updated the description of parameter0 in HAM_Return_Device_Info (Function 0x02) and parameter0 in HAM_Recovery_Reset (Function 0x07).

Added value 4 (Port reset) to HAM_Recovery_Reset (Function 0x07) and updated the SATA table in HAM_Return_Device_Status (Function 0x0B).

Changed return values for Magazine Load (0x001D - 0x0005), Magazine Eject (0x001D - 0x0006), Return Changer Media Mapping (0x001C - 0x0002), Return Magazine Media Mapping (0x001D - 0x0002), Magazine Select Media (0x001D - 0x0003), Magazine Deselect Media (0x001D - 0x0004), and Magazine Unload (0x001D - 0x0006).

Updated the description of attributeFlags in DeviceInfoStruct, controlInfo in HACBStruct, supportedTargetIDs and supportedUnitNumbers in HAMInfoStruct, and flags, parameter0, and parameter1 in NPAOptionStruct.

Added the capabilities field and its description to HACBStruct.

October 5, 2005

Transitioned to revised Novell documentation standards.

June 1, 2005

Added the Section 3.6.1, Flow of Events section.

Updated the Remarks section of HAI_Deactivate_Bus.

Updated the Fields and Remarks sections of DeviceInfoStruct.

Changed the 0x0000000F bit of reasonFlag to ALERT_DEVICE_REMOVED for CDI_Object_Update.

March 3, 2005

Updated sample code in Type 3 HACB Functions.

Updated Remarks section of NPA_SpinTryLock.

Updated Section 3.6, Software Hot Replacement section.

Removed cdiBindHandle from CDI_Bind_CDM_To_Object.

Removed nonzero as a possible Return Value for HAM_Execute_HACB.

Added the SATA controlInfo field information to the Remarks section of HAM_Return_Device_Status (Function 0x0B).

Updated several figures.

March 2, 2005

Added a description of cdmBindHandle to the Parameters section for CDI_Bind_CDM_To_Object.

Added information about SATA (Serial ATA) technology. Added hacbType 4 to Host Adapter Interface Routines. Added host bus adapter value 0x0004 to CDI_Register_CDM. Added the SATA (Serial ATA) Adapter Command Structure (HACB Type 4) information.

Updated the capabilities description in the IDE-ATA Adapter Command Structure (HACB Type 2) section of HACBStruct.

Removed duplicate text from the Remarks section of Case 2 for HAM_Scan_For_Devices (Function 0x01).

Changed the title of the former Miscellaneous Functions to Section 6.6, I/O Port Functions.

Changed the parameter descriptions of CStrCmp, CStrCpy, and CStriCmp to refer to NULL-terminated strings.

Made minor edits throughout all sections.

October 6, 2004

Updated the descriptions of Function 1-4 of NPA_Config.

Updated the HACBStruct: changed the bufferLength parameter to returnParameter and changed all relevant descriptions.

Updated the Type 3 HACB Functions section in Section 3.13, Custom HAMs.

Updated the description of the function parameter of Lock/Unlock (0x0007).

Added the capabilities field to the ata substructure of HACBStruct.

June 9, 2004

Updated the parameters (and their descriptions) of NPA_CDM_Passthru.

Added a return value of 2 “The switch to real mode is already in progress” to HAI_Disable_Real_Mode_Access.

February 18, 2004

Added IdentifyInfoStruct.

Updated UpdateInfoStruct and added corrected values for the functionMask and controlMask fields. Updated HAMInfoStruct, InquiryInfoStruct, and DeviceInfoStruct (added a detailed explanation for the elevatorThreshold field and its default value of 3).

Added range values for the version keyword in Definition File Keywords.

Updated the Remarks section of NPA_System_Alert. Changed the return type of NPA_SpinLock, NPA_SpinUnlock, and NPA_SpinUnlockRestore from LONG to void.

Removed duplicate sections.

October 8, 2003

Changed the blocking status of NPA_Cancel_Thread, updated the Remarks section of NPA_Register_HAM_Module, and added a note to the Remarks section of NPA_SpinLockDisable, NPA_SpinTryLockDisable, and DisableAndRetFlags.

Added option UNREGISTERED_SLOT 0x0040 to NPAOptionStruct.

Updated two figures.

Removed documentation for NPA_NATA_Is_Supported.

June 2003

Added documentation for NPA_NATA_Is_Supported, CStrCmp, CStrCpy, CStriCmp, and sprintfWithPointer.

Added the Real_Mode_Not_Supported bit to the list of possible flags bits for HAMInfoStruct.

February 2003

Added documentation for HAM_Return_Port_Info (Function 0x0C).

Made minor changes throughout.

September 2002

Added another condition to the Scan Case Definitions and Descriptions section of HAM_Scan_For_Devices (Function 0x01).

Added more values to the Section 11.2, Scan Completion Codes.

Updated the Remarks section of HAM_Return_Device_Info (Function 0x02).

Updated references to EventBlockStruct.

Made minor changes throughout the entire document.

May 2002

Changed all FLAG_ON values from 67108864 to 0x04000000.

Updated the documentation for NPA_System_Alert, NPA_SpinLockDisable, NPA_Register_For_Event_Notification, and DeviceInfoStruct.

Changed the parameter values in Case 2 of HAM_Scan_For_Devices (Function 0x01).

February 2002

Added ConvertStringToUnsignedLong.

Added Section 5.3, Writing Multi Processor-Aware Drivers.

Changed the description of CDI_Queue_Message, some of its parameters, and its Remarks section.

Also fixed minor details throughout documentation.

September 2001

Restructured Section 7.0, HACB Type Zero Functions, Section 8.0, CDM Message Control Functions, and Section 9.0, CDM Message I/O Functions into numerical order.

Updated the definition of EventBlockStruct and HACBStruct.

Changed documentation of NPA_CDM_Passthru to show it is a Blocking function.

Added note iv to Section 3.2, Operational Overview.

Updated the Section 3.6, Software Hot Replacement section.

Added "Interrupts disabled" to HAM_Abort_HACB.

Deleted all occurrences of "Code using spin lock is expected to be non-pageable."

Added three return values to NPAB_Search_Adapter.

Designated specific values in the NPAOptionStruct table of "Option Types vs. Parameter Definitions" as being hex values.

Updated the definition of the Check Condition in Section 11.1, HACB Completion Codes.

Switched Steps 1 and 2 in HAM_Instance_Unload (Function 0x09) of the Remarks section.

Changed the Return Values of HAM_Return_Device_Status (Function 0x0B).

Updated the parameter descriptions of HAM_Suspension_Notification (Function 0x0A).

Added alternative text to figures.

Version 3.04g

June 2001

Made changes to improve document accessibility.

Made minor formatting changes.

Version 3.04f

February 2001

In NPA_Register_With_EventBus, exchanged remarks for the registrationName and eventName parameters.

Version 3.04e

July 2000

Minor update to information in Load-Time Initialization and Registration.

Version 3.04d

May 2000

Change occurences of MM_OK to ERROR_NO_ERROR_FOUND.

Resized multiple tables for better usability.

In HAM_ISR, corrected syntax.

In NPA_System_Alert, modified alertMask, targetNotifyMask, alertID, and alertClass parameters.

Document CDM Message Control Function Media Detect (0x0002).

In HACBStruct, corrected syntax.

In the table on HACB Control Flag Values, added information to flag value 0x00000010.

Version 3.04c

March 2000

Removed from Scatter/Gather List "devices not supporting scatter/gather will not be registered by NWPA, resulting in an error."

Remove the list of HACB type zero functions and their generic names from HACB Type Zero Functions and provided a link to HACB Type Zero Functions.

In HACB Type Zero Functions, added "optional" or "mandatory" in the tables and functions.

In HAM_Return_Device_Info (Function 0x02), in the remarks, changed "a non-zero value" to "an 0x000A0004 (object not found) return value."

In NPA_Parse_Options, in the Remarks change CDM_Load_Option to CDM_Check_Option and HAM_Load_Option to HAM_CHECK_Opion.

Version 3.04b

January 2000

Updated template. Corrected minor spelling, grammar, and formatting errors.

Clarified information about Type 3 HACB functions.

Updated PCCardInfoStructure field descriptions and added remarks.

Updated PCIInfoStructure field descriptions and modified remarks.

Version 3.04a November 1999

Correct minor formatting errors. Add minor clarifications. Change reference from LDI/DDI Specification and Developers Guide to Installation Information File Specification.

Version 3.04

September 1999

Retitled document from NetWare Peripheral Architecture (NWPA) Functional Specification and Developer's Guide to NetWare Peripheral Architecture. Changed references of Media Manager Functional Specification and Developer's Guide to Media Manager. Added new field descriptions in Structures chapters.

Version 3.03

July 1999

General restructure and reformat of document to more closely match other NDK documentation.

Moved old Chapter 1, About This Guide, into the Preface, then modified the Preface.

Created new Concepts chapter (Chapter 1) and moved old Chapter 2, NetWare Peripheral Architecture Overview, Chapter 3, Host Adapter Control Block (HACB), Chapter 4, Host Adapter Module (HAM), Chapter 5 Custom Device Module (CDM) into the new chapter.

Created new NWPA Tasks chapter (Chapter 2) and moved Appendix A, Creating NetWare Loadable Modules, Appendix E, Writing Multi-Processor HAM's, and other applicable tasks from other chapters in the document into the NWPA Tasks chapter (Chapter 2).

Created new NWAP Functions chapter (Chapter 3) and moved old Chapter 7, Technical Reference for NWPA Routines, and Chapter 10, OS Support Routines into NWPA Functions (Chapter 3).

Moved old Chapter 7, HACB Type Zero Functions, to Chapter 4.

Created new CDM Control Function Operations chapter (Chapter 5) and moved CDM control functions from old chapter 9, CDM Messages, to the new CDM Control Function Operations chapter.

Created new CDM I/O Function Operations chapter (Chapter 6) and moved CDM I/O function operations form old chapter 9, CDM Messages, to the new chapter.

Moved old Chapter 6, Technical Reference for NWPA Data Structures to Chapter 7 and renamed the chapter to NWPA Structures. Moved structures from other chapters in the documentation including the SuperHACBStruct and the HACBStruct information from old Chapter 3 into the NWPA Structures chapter.

Version 3.03 (continued)

Created new NWPA Values chapter (Chapter 8) and moved Appendix B, Handling HACB Completion Codes, and applicable tables and values from other chapters in the documentation into the NWPA Values chapter.

Created new Revision History chapter (Chapter 10). and moved the revision history information from the old Preface and Revision Tracking Section from the old Chapter 1, About This Guide, into the Revision History chapter. Chapter 10.

Removed Appendix D, The NetWare Debugger, and referenced the NetWare Debugger documentation in the NDK.

Removed Appendix C LDI/DDI Specification Supplements, and referenced the LDI/DDI specification documentation in the NDK.

Add Bit 0x00002000 and description to the attributesFlags table in the DeviceInfoStuct

Version 3.02

April 1999

Chapter 7 and Appendix E: Corrected name of NPA_SpinLockTryDisable() to NPA_SpinTryLockDisable()

Chapter 7: Added the following APIsNPA_Get_Loaded_Module_Info()HAI_Return_Adapter_ObjectID().

Appendix C:Added bit 3 (Handicapped Driver bit) to Parameter Information (PAR) under HIN Aware Support.Explanation of escape sequence added to Additional statements.New keyword ALIAS added under Additional statements.

Version 3.01a

Appendix E: Instructions for writing Multi-Processor enabled Hams was added.Chapter 7: Modified parameters for CDI_Execute_CDMMessage().

Added the following APIs to support multi-processor host adapter drivers (HAMs).NPA_Inc();NPA_Dec();NPA_Add();NPA_Sub();NPA_Bts();NPA_Btr();NPA_Xchg();NPA_SpinLockInit();NPA_SpinLock();NPA_SpinTryLock();NPA_SpinUnlock();NPA_SpinLockDisable();NPA_SpinTryLockDisable();NPA_SpinUnlockRestore();NPA_MutexAlloc();NPA_MutexFree();NPA_MutexLock();NPA_MutexTryLock();NPA_MutexUnlock();

Version 3.01

Chapter 4: Added information in section 4.3.4.2 for using same driver name for hot replaceable drivers in 5.x.

Chapter 6: Removed define in flags reserved field in HAMInfoStruct.Clarified Remark in Table 6.1 on Interrupt option.Corrected name of SuperHACBStruct variable name

Chapter 7: Added definition to CDI_Object_Update reason Flag for ALERT_MEDIA CHANGED.Switched pages for CDM_Load and CDM_Set_Attribute to order alphabetically.Corrected HAI_Object_Update to show thread context as blocking.

Appendix B: Corrected npaCompletionCode under General Error 0x0005 from 0x0000002 to 0x00000002.Corrected MSB error code under General Error from 0X007 to 0X8007.

Version 3.00b

Clarified references to applications in the spec. An application is always an NLM.

Corrected references to “virtualAddress” in the HACB (changed to vDataBufferPtr).

Chapter 3: Fixed the Scatter/Gather conflict in section 3.4. Scatter/Gather is mandatory, not optional.

Chapter 4: Fixed incorrect reference for hacbCompletion values in section 4.2.2. paragraph B.3, values are listed in Appendix B not in Chapter 3.C.

Chapter 6: Added Interrupt_Safe_Execute flag to HAMInfoStruct.

Chapter 7: Added parameter definitions for real mode events under NPA_Register_For_Event_Notification.Made clarifications to NPA_Unregister_Module - use during unload, not instance unload.Added text to clarify why NPA_Unregister_Options is used.Deleted bit settings for MP Aware.Added function 5 to NPA_Config.Added new API - CDI_Return_Object_Info

Chapter 8: Added functions 0x0A and 0x0B to HACB type 0.

Appendix B: Changed the return value for “Device Not Active” (0x0007).

Appendix C: HPROD and SPROD added to DDI/LDI Specification Addendum.

Version3.00a

Document Update to support Version 3.00 of NWPA.NLM. General Changes: Typos, printer formatting errors, etc. were corrected.

Chapter 1: No technical changes.

Chapter 2: No technical changes.

Chapter 3: Changed Flag to Bit in Table 3-1 and associated references to match header file.

Chapter 4: No technical changes.

Chapter 5: Matched section 5.3.6 to chap 8 HAM_Queue_AEN_HACB.

Chapter 6: CDMMessageStruct function CACHE_OKAY renamed CACHE_OKAY_BIT.DeviceInfoStruct inquiryInfo added reference to Type 3 devices, flag bit 0x00001000 added. CDI_Allocate_CDMMessage, CDI_Execute_CDMMessage, CDI_Return_CDMMessage added. Table 6-1 Interrupt Option parameter0 changed level to handle. Port option parameter1 not used changed to Range in BYTEs. Note added to Figure 6-1 to explain EISA product code in PnP ISA section. NPAOptionStruct string and flag parameters clarified. HAMInfoStruct and InquiryInfoStruct got details on custom CDMs/HAMs.

Chapter 7: CDI_Object_Update is blocking. CDI_Register_CDM cdmOSHandle made identical to CDI_Allocate_HACB. HAI_Object_Update gain references to Type 3 devices. HAM_ISR irqLevel changed to irqHandle, graphic added, and Important box added warning only one interrupt per ISR

NPAB_Search_Adapter, NPAB_Get_Bus_Type, and NPAB_Scan_Bus_Info changed 0 = PC ISA bus to ISA/ISA PnP bus, busTypes 5, 6, 7 unsupported and removed. NPAB_Search_Adapter added return code 6 NBI_ITEM_NOT_PRESENT, busType 0 = PnP ISA bus added.

NPAB_Get_Card_Config_Info change PCI param1 to n/a, added definition for PnP ISA bus. HAM_Check_Option purpose clarified.

HAI_Preprocess_HACB_Completion removed.

Version 3.00a (continued)

NPA_Register_With_EventBus esr and callBack gain reference to Chapter 6. NPAB_Get_Bus_Tag and NPAB_Get_Bus_Name no longer supported. NPAB_Get_Bus_Type, NPAB_Get_Card_Config_Info, NPAB_Get_Instance_Number, NPAB_Read_Config_Space, NPAB_Scan_Bus_Info, NPAB_Search_Adapter, NPAB_Write_Config_Space got updated return codes. NPAB_Get_Bus_Specific_Info, NPAB_Get_Bus_Type, NPAB_Get_Card_Config_Info, NPAB_Get_Inique_Identifer, NPAB_Scan_Bus_Info, NPAB_Search_Adapter, got CardBus support. NPAB_Get_Hin_From_HINName and NPAB_Get_HINName_From_HIN added. NPA_HACB_Passthru hacbType request description updated. NPA_Interrupt_Control not used for disabling interrupts

Chapter 8: 0x00000020 Device appeared, 0x80000000 Vendor Specific AEN and event explanations added to HAM_Queue_AEN_HACB.Chapter 9: Random Read, Random Write, Random Write Once, bufferLength is in BYTEs.

Chapter 10: DoRealModeInterrupt. and DoRealModeInterrupt32 support removed for IW3 DisableAndRetFlags use clarified.

Appendix A: NLMLINKR(P) changed to NLMLINKX. Note on page A-2 expanded. Figure A-1: removed extraneous code.

Appendix B: Changed to HACB Completion Codes.

Appendix C: No technical changes.

Appendix D: Added.

Version 3.00

Document Update to support Version 3.00 of NWPAMP.NLM.All references are now to NWPAMP.NLMGeneral Changes: Typos, printer formatting errors, etc. were corrected.

Chapter 1: Device Driver Functional Specification (DDFS) will no longer be supported after Jan 97.

Chapter 2: No technical changes.

Chapter 3: Added Note stating that Scatter/Gather will be required for NWPA 3.0 and greater.

Chapter 4: No technical changes.

Chapter 5: No technical changes.

Chapter 6: HAMInfoStruct flags received another flag for MP awareness. DeviceInfoStruct requires scatter/gather.

Chapter 7: Added CDM type 0x80 MP aware enabled to CDI_Register_CDM. Added ERROR_MESSAGE_POSTPONED 0x02 to CDI_Complete_Message.

Chapter 8: No technical changes.

Chapter 9: Changer Command Example changed ObjectID to Media Manager Device Number.

Chapter 10: No technical changes.

Appendix A: No technical changes.

Appendix B: Added Resource Allocation Error 0006 0005 and Message Postpone Error 0x02.

Appendix C: No technical changes.

Index: No technical changes.

Version 2.32

Document Update to support Version 2.32 of NWPAMP.NLM.General Changes: Typos, printer formatting errors, etc. were corrected. New logo was integrated into document.

Chapter 1: No technical changes.

Chapter 2: Novell Event Bus synopsis added.2.2.3 Hot Plug capability added.

Chapter 3: Added 0x00000400 Master_HACB_Flag and specific malformed errors to Table 3-1.

Chapter 4: Changed Processing HACB Requests 4.2.2.B.4.b to correct sequence of execution and added flowcharts. Added section 4.3.6.1 Scanning all LUNs. Section 4.3.4.2 new step 8 inserted. 4.2.1.2 HIN awareness note added.

Chapter 5: No technical changes. Added flowcharts.

Chapter 6: HAMInfoStruct flags received another flag for Hot Plugable Hardware awareness.EventBlockStruct added.

Chapter 7: Added NPA_Return_DeviceHandle. NPA_Get_EventBlocks, NPA_Return_EventBlocks, NPA_Register_With_EventBus. NPA_Unregister_With_EventBus, and NPA_Send_Event APIs.NPAB_ Return Values clarified. Added reasonFlag to HAI_Object_Update.

Chapter 8: Added Important box to HACB Type 0 function 1 case 2.

Chapter 9: No technical changes.

Chapter 10: No technical changes.

Appendix A: No technical changes.

Appendix B: Moved 0x80030005-A to 0x00030005-A. Added (0x0003000B)

Appendix C: No technical changes.

Index: Added to document.

Version 2.31a

Document Update to support Version 2.31 of NWPAMP.NLM. General Changes. Typos, printer formatting errors, etc. were corrected.

Chapter 1: No technical changes.

Chapter 2: Added disabling of interrupts duration of 25 milliseconds.

Chapter 3: Added Type 3 HACB to Table 3-2., Section 3.3.2.1, and a description of the HACB Type 3 case.

Chapter 4: Added Register for event notification to Section 4.2.1. Added 0x00000020 Device appeared to Section 4.3.2. Changed references to Vendor ID to novellAssignedModuleID. Clarified what happens during a remove disk adapter if only one instance is loaded in Section 4.3.10. Added Section 4.4 The Custom HAM.

Chapter 5: Added unless the no freeze bit is set to Section 5.2.4.1 Added 0x00000020 Device Appeared to Section 5.3.6.

Chapter 6: Changed style to make parameters stand out more. Removed extraneous code references in Syntax, added Timing_Info_Flag, added clarity to TimingINFO.SCSI.offset and added note to DeviceInfoStruct. Added LONG returnParameter and reduced reserved[12] to reserved[8] in HACBStruct. HAMInfoStruct gained a LONG flags and a #define. In Table 6-1 Interrupt Option parameter1 0x04 was changed to level or edge triggered. UpdateInfoStruct objectLoadableFlag gained a reference to the Media Manager “Human Jukebox” interface, and diskGeometry was extensively clarified.

Chapter 7: CDI_Complete_Message gained a ERROR_FUNCTION_NOT_SUPPORTED error. HAI_Object_Update was added. HAM_ISR non-zero return value clarified. NPA_Get_OS_Version gained SFT III I/O Engine, SFT III MS Engine, and SMP entries. Note added to NPA_Interrupt_Control.

Chapter 8: Function_Not_Supported requirement added to introduction. HAM_Instance_Unload gained a Complete this HACB successfully task, plus additional clarification.

Chapter 9: No technical changes.

Chapter 10: No technical changes.

Appendix A: Added note and removed extraneous code to Figure A-1.

Appendix B: No technical changes.

Appendix C: No technical changes.

Version 2.31

Document Update to support Version 2.31 of NWPAMP.NLM.General Changes. Typos, printer formatting errors, etc. were corrected.

References to NWPACompletionCode or NPACode were changed to npaCompletionCode throughout the document.

Chapter 1: Updated Section 1.5 to reflect current version numbers.

Chapter 2: No technical changes.

Chapter 3: Updated HACBStruct definition to match NPA.H version of this structure and corrected/added parameter descriptions to match the updated structure. Added Function 9 HAM_Instance_Unload to Table 3-3.

Chapter 4: Added HAM_Instance_Unload description to Section 4.1.4. Added new Figure 4-1. Updated paragraph 4.2.1 to reflect addition of Figure 4-1. Removed NWDIAG option for HACB completions in Section 4.2.2. Clarified implementation in Section 4.2.4 part B.2.a regarding aborting outstanding HACBs. Clarified note in Section 4.3.1. Updated Table 4-1. Added Adapter attention AEN type to Section 4.3.2. Added Section 4.3.10 Instance Unload for HAMs.

Chapter 5: Added footnote to Section 5.3.2.2. Added Adapter attention AEN type to Section 5.3.6.

Chapter 6: Updated HACBStruct definition to match NPA.H version of this structure. Added slotOption parameter to HAMInfoStruct. Updated Table 6-1 in NPAOptionStruct.

Chapter 7: Added the following function descriptions: HAI_Disable_Real_Mode_Access(), HAI_Enable_Real_Mode_Access(), and NPA_Config(). Updated descriptions of the following functions: CDI_Blocking_Execute_HACB(), CDI_Execute_HACB(), CDI_Non_Blocking_Execute_HACB(), CDI_Queue_Message(), CDI_Register_CDM(), CDM_Abort_CDMMessage(), NPA_CDM_Passthru(), NPA_Micro_Delay(), NPA_Parse_Options(), NPA_Register_CDM_Module(), NPA_Register_HAM_Module(), and NPA_Unregister_Module().

Chapter 8: Added Adapter attention to HAM_Queue_AEN_HACB. Added Adapter initialize to HAM_Recovery_Reset. Added HAM_Instance_Unload description. Deleted redundant Scan Completion Code table and referenced Table 5-1.

Chapter 9: No technical changes.

Chapter 10: No technical changes.

Version 2.31 (continued)

Appendix A: No technical changes.

Appendix B: No technical changes.

Appendix C: Updated to Draft Version 1.3 of the DDI/LDI Specification Addendum.

Version 2.3

Document update to support NetWare® upgrade of NWPA. Corrected reported typos and printing errors in documentation and made the following changes.Chapter 1: Added Revision Tracking section.

Chapter 2: Added WWW address for location of electronic document download. Updated Paragraphs 2.2 and 2.3.2.3.

Chapter 3: Described an additional HAM to CDM use of the control_Info field. Deleted requirements for the HACB Type = 3 request throughout the entire document. Updated Table 3.2 HACB Type values to reserve HACB types from the range of 0x0003 to 0x01FF for use by NetWare, and to reserve the range from 0x0200 to 0xFFFF for vendor use. Updated Table 3.3 to change the name of HAM_Return_HAM_Info to HAM_Return_Bus_Info (also in Chapter 4 and Chapter 8), include two Type zero HACBs (functions 7 and 8), and reserve for NetWare all values from 0x00000009 to 0xFFFFFFFF. Updated Figure 3-1 to include field names for buffer pointers.

Chapter 4: Changed implementation of HAM_Set_IDE_Device_Config to mandatory for IDE-ATA devices. Removed requirements for NWDIAG. Changed vendorID terminology to novellAssignedModuleID to clarify that this ID must be unique for each module (HAM or CDM), not for each vendor (also in Chapter 7 in NPA_CDM_Passthru()). Added Device disappeared case to events under Asynchronous Event Notification. Clarified requirements for Software Hot Replacement, and made Autodetection mandatory for HAMs and CDMs.

Chapter 6: Updated definition of parameters in CDMMessageStruct to correspond to Media Manager implementation. Corrected definition of the hamSpaceDef user defined area in HACBStruct (also in Chapter 3.) Changed parameter name of cardTargetID to adapterTargetID and defined default values for supportedTargetIDs and supportedUnitNumbers in HAMInfoStruct. Updated description of NPAOptionStruct to clarify usage of parameters, and added a table showing the relationship between parameters and option types.

Version 2.3 (continued)

Chapter 7: Added the following function descriptions: HAI_Return_Device_ObjectID(), NPA_Read_Physical_Memory(), NPAB_Get_Bus_Specific_Info(), NPAB_Get_Instance_Number(), NPAB_Get_Instance_Number_Mapping(), and NPAB_Get_Unique_Identifier_Parameters(). Updated descriptions of CDI_Execute_HACB() and CDI_Non_Blocking_Execute_HACB(). Corrected reference name of first parameter in CDI_Register_CDM() to cdmOSHandle. Updated parameter and return value descriptions in CDM_Inquiry().Corrected definition of NPA_CDM_Passthru() parameters. Corrected context of NPA_Parse_Options() to Blocking. Corrected parameter list in NPA_Unregister_Event_Notification() to add npaHandle as the first LONG.

Chapter 8: Changed LUN references to generic unit number references to support different architecture subaddress cases. Added Device Disappeared case to events under HAM_Queue_AEN_HACB.

Chapter 9: Updated Return Changer Media Mapping to reflect NWPA implementation.

Chapter 10: Deleted AllocateResourceTag description. Added Abend and CStrLen function descriptions.

Updated descriptions of CVSemaphore, DisableAndRetFlags, GetHighResolutionTimer, GetRealModeWorkSpace, GetSuperHighResolutionTimer, InvertLong, and SetFlags.

Appendix A: Added requirement to include NWPALOAD.NLM as a required module in definition file.

Appendix B: Corrected references to MMCompletionCode to NWPACompletionCode.

Appendix C: Updated description of ParameterInformation (formerly ParameterVersion). Updated draft section to reflect current information.

Version 2.1d

Corrected typos, format errors, etc. in preparation for Developer Services release of document.

Added NPA_Get_Version_Number () API.

Added Blocking flag option for NPA_Allocate_Memory() to Version 4.x NWPA.

Replaced Figure 4-1 with update notice. Figure 4-1 will be updated for the next document release, as noted in paragraph 4.2.1.

Updated HAM Device Queue State column in Appendix B to reflect addition of the No_Freeze_Queue_Flag option for CDMs.

Updated DeviceInfoStruct parameter definitions to add SCSI Synchronous Information.

Updated NPAOptionStruct parameter definitions.

Deleted HAI_Get_Slot() and HAI_Get_Slot_Name() APIs to reflect changes in the NBI specification.

Updated the description for NPA_Interrupt_Control().

Added 10 microsecond resolution note to NPA_Micro_Delay().

Added Thread Context information to Inx, InBuffx, Outx and OutBuffx APIs.

Changed the identifying prefix for NBI APIs from HAI_ to NPAB_ to separate them from the existing Host Adapter specific APIs. Updated the references to these APIs throughout the document to reflect this change. Re-sorted Chapter 7 to place the NPAB_ APIs in alphabetical order.

Deleted the NPABusHandle parameter from all of the NPAB_ APIs.

Corrected the return value types for CCmpB() and CCmpD() in Chapter 10 from BYTE to LONG.

Updated Draft portion of Appendix C to reflect changes in the LDI/DDI specification.

Added InvertLong() function definition to Chapter 10.

Updated Appendix A to include a new link.def file example and to list the include files needed for HAMs and CDMs.

Version 2.1c

Administrative Revision - Reformatted entire document to reflect Novell Technical Publications standards.

Added Revision History section to document.

Changed text citations of NPA to NWPA (NetWare Peripheral Architecture) to avoid confusion with the Network Professional Association (NPA). However, all API and parameter references using NPA were not changed at this time.

Added new Control Flag to Table 3-1 (No_Freeze_Queue_Flag).

Deleted Chapter 5 since material was also described elsewhere. Changed all subsequent chapter numbers and references to these chapter numbers to reflect deletion.

Added NetWare Bus Interface (NBI) material and APIs. See Figure 2-1, Paragraph 4.2.1, and Chapter 7 for NBI related changes.

Provided detailed description for the design of Software-Hot Replaceable HAMs in section 4.3.4.

Added a description of the Elevator Queueing capabilities of NWPA. See section 4.3.9.

Added two new Vendor-Pass Through APIs: NPA_HACB_Passthru() and NPA_CDM_Passthru() See Sections 4.3.10, 5.3.8, and Chapter 7 for details.

Corrected descriptions of existing event flags and added 2 new event flags to CDM_Inquiry() to support End of Bus cases. See section 5.2.2 and Chapter 7 CDM_Inquiry() for details.

Updated CDM requirements for Unload-time Deregistration. See section 5.2.6 for details.

Updated DeviceInfoStruct and HamInfoStruct parameter lists. Added Product ID Option to Type parameter in NPAOptionStruct.

Changed IDE to IDE\ATA where applicable.

Reformatted Appendix B into one table. Deleted Table 3-1 and replaced references to this table with a reference to Appendix B. Changed Table 3-2, Table 3-3 and Table 3-4 (along with all text references to these tables) to Table 3-1, Table 3-2 and Table 3-3 respectively.

Version 2.1c (continued)

Updated Case 0 and Case 1 scan requirements.

Corrected references from .dsk output file to .ham output file in Appendix A.

Updated Chapter 10 OS Support Routines to describe currently implemented OS routines, including correcting the SetFlags() routine to a VOID from a LONG.

Added Appendix C LDI/DDI Specification Supplement and Related Material.

Deleted the Index from this revision.

Version 2.1b

Chapter 3 and Appendix B, Malformed Error Added new HACB error code regarding auto error sense buffers.

Chapters 4, 6, and 9 Asynchronous Event Notification (AEN) Hacbs. Fixed typo – The AEN mask is a bitmap, Adapter Reset was changed from 0x00 to 0x08.

Chapter 6, section: CDM Entry Points, section: Inquiring and Binding to a Device, Chapter 8, CDM_Inquiry. Clarified some of the issues regarding logical binding to a device. CDMHandle parameter is now passed on the stack.

Chapter 7, DeviceInfoStructDefined hardware verify and max units per transfer to attributes field.

Chapter 7, UpdateInfoStructClarified meaning of some of the field definitions, and fixed the blocksize information as it relates to the changes made to the DeviceInfoStruct.

Chapter 8, NPA_System_AlertAdded this new API for issuing alert messages to the console screen.

Chapter 10, Insert Functions. Fixed typo. The NPA function code for insert functions should be 0x1B.Fixed typo. Reset End of Tape should have been Restart Queue.

Chapter 11, AllocateResourceTag and RegisterForEventNotificationAdded technical information for these two OS routines.

Version 2.1a

Generally, most of the changes were clarifications of existing concepts, not additions of new concepts.

Throughout the document, NPABindHandle was changed to CDIBindHandle.

Figure 2-1 was changed.

Figure 2-2 was removed.

Section 3.3.1, CDMPassThrough command block: the structure of the block was changed. The BufferLength, Buffer, and ReturnParameter fields were replaced with the following: BYTE Reserved5[12].

The reason is that the data that was originally assigned to these fields is now part of the main HACB, DataBufferLength, VDataBufferPtr, control_Info, respectively.

Chapter 5 and Chapter 7, the CDM MessageStruct:The definition of the CDMMessageStruct was changed. The QueueLink field was redefined, and a new 1-LONG field was appended to the structure. The former QueueLink field and the new field were combined to make the following: LONG CDMReserved[2].

A new bit was defined in the upper WORD of the CDMMessageStruct's Function field, the CACHE_OKAY_BIT.

Section 6.2.1: Clarified CDM use of the NPA's command line parser.

Section 6.2.2: Reference to CDMTypeStruct was removed. The change regarding this structure was documented in version 1.x to 2.0 history.

Reorganization of Chapter 6. Some of the section numbers were changed. The Error Handling section was moved from Special Topics to the Operational Overview.

Special Topics: Added pertinent information regarding Removable-media device and magazine support.

Version 2.1

The SCSI command block of the HACB was modified to accommodate 16 byte SCSI commands. The HACommandArea field was extended to be a 16 BYTE array, and the positions of the Reserved3 and HACommandLength fields were swapped. Refer to the SCSI Adapter Command structure in sections 3.3.1 and 3.3.2.

Made corrections to NPA_Unload_Module_Check(). The 2.0 specification stated that the HAM_Unload_Check() and CDM_Unload_Check() routines should make iterative calls to this API. For the correction to the HAM see HAM_Unload_Check() in section 4.1.1 and in chapter 8. For the correction to the CDM see CDM_Unload_Check() in section 6.1.1 and in chapter 8. Also, see NPA_Unload_Module_Check() in chapter 8.

Added two new HAM functions, HAM_Recovery_Reset and HAM_Deactivation_Notification. See section 4.1. and chapter 9.

Added two new HAM functions, HAM_Recovery_Reset and HAM_Deactivation_Notification. See section 4.1. and chapter 9.

Introduced the concept of auto detection and auto configuration. See section 4.3.8.

Correction to NPA_Exchange_Message(). The DataDirection parameter has been removed. See chapter 8.

Clarifications made to field descriptions of the UpdateInfoStruct and DeviceInfoStruct. See chapter 7.

Added successful completion code with queue frozen to HACB completion codes in section 3.3.2 and table 3-1.

Clarification made to HAM's abort paradigm in section 4.2.3 and to the HAM_Abort_HACB() return values in chapter 8.

Clarification made to HAM's queue behavior. See section 4.3.1.3 and table 4-1.

Correction made to HAM_Return_Device_Info. The 2.0 specification stated that the HAM should place the HAM-generated device handle in the Parameter0 field of the HACB host command block. This is incorrect. The HAM already places the device handle in the return buffer. See chapter 9.

Addition of AttributeID stack parameter to CDM_Set_Attribute() and CDM_Get_Attribute() routines. See section 6.1.2, 6.2.5, AttributeInfoStruct in chapter 7, and CDI Register_Object_Attribute() in chapter 8.

Version 2.0

LONG HACBPutHandle replaces struct HACBStruct* as a stack parameter passed to the following APIs (see Chapter 8): CDI_Abort_HACB()CDI_Blocking_Execute_HACB()CDI_Execute_HACB()CDI_Return_HACB()

LONG *NPAHandle is an additional stack parameter required in CDI_Bind_CDM_To_Object() (see chapter 8)

LONG NPAHandle is an additional stack parameter required in the following APIs (see chapter 8): CDI_Chain_Message()CDI_Object_Update()CDI_Unbind_CDM_From_Object()

CDMTypeStruct has been eliminated from the specification. This was replaced by the Types parameter in the CDI_Register_CDM() API. See chapter 8.

CDMTypeStruct has been eliminated from the specification. This was replaced by the Types parameter in the CDI_Register_CDM() API. See chapter 8.

CDMTypeStruct has been eliminated from the specification. This was replaced by the Types parameter in the CDI_Register_CDM() API. See chapter 8.

Queue state indicator moved from ControlFlags field of HACB to most significant bit of hacbCompletion field. See hacbCompletion field in section 3.3.2.

The ControlFlags field name in the HACB was changed to control_Info, and its purpose was redefined. See control_Info field in section 3.3.2.

Optional HAM software hot replacement. See section 4.3.4 and HAM_Software_Hot_Replace() in chapter 8.

NWDIAG support required in HAM. See section 4.3.5.

Scatter_Gather and Hardware_Verify bits defined for Function field of CDM message structure. See Function field in section 5.2.2.

Entry points that allow NLM applications to get and set device attributes adde d to the CDM. See sections 6.1.2, 6.2.5, AttributeInfoStruct in chapter 7 and CDI_Register_Object_Attribute in chapter 8.

Asynchronous Event Notification. For HAM, see section 4.3.2 and HAM_Queue_AEN_HACB() in chapter 9. For CDM see section 6.3.5.

Buffer mismatches. See section 6.3.6.

Version 2.0 (continued)

Addition of Appendix B for greater clarity in HAM and CDM error handling.

Added auto error sense support in the HAM and CDM. This required a change to the HACB structure. Refer to the HACB's ErrorSenseBufferLength, VErrorSenseBufferPtr, and PErrorSenseBufferPtr fields in sections 3.3.1 and 3.3.2.

Support of auto error sense introduced a new data structure. See ErrorSenseInfoStruct in chapter 7.

For HAM specific support of auto error sense, see section 4.3.6 and the AttributeFlags field of the DeviceInfoStruct in chapter 7.

For CDM-specific support of auto error sense, see section 6.3.7 and the AttributeFlags field of the DeviceInfoStruct in chapter 7.

Added specific target ID and LUN scan, also known as multiple LUN scan, support to the HAM and CDM. This also includes the concept of private and public devices. For the HAM, see section 4.3.7 and HAM_Scan_For_Devices in chapter 9. For the CDM, see section 6.2.3. For both HAMs and CDMs, also refer to the AttributeFlags field of the DeviceInfoStruct in chapter 7.

Added CDI_Rescan_Bus() API in conjunction with multiple LUN scan. See chapter 8.

Version 1.x

Initial release.

For all revisions of this specification from Version 2.3 until further notice, the following version numbering convention are used:

All updates to the specification that require a new version of NWPA.NLM are indicated by a change in the major and/or minor version level of both items, for example Version 2.31 of NWPA.NLM is supported by Version 2.31 of this specification.

Revisions to the specification that do not result in a code change (format changes, typos, clarifications, etc.) are indicated by uppercase revision letters added to the specification version, for example, 2.3A, 2.3B, etc.

Revisions to the code that do not require specification changes (bug fixes, etc.) are indicated by lower case revision letters added to the NLM version, for example 2.3a, 2.3b, etc.

This provides developers with a means of correlating specification revisions to versions of NWPA.NLM. As an example, Version 2.31g of NWPA.NLM would be described by the latest Version 2.31 of the NWPA specification, and Version 2.4Y of the specification would describe any Version 2.4 of NWPA.NLM.