astruct.inc
Warning: This file has been marked up for HTML
;***********************************************************************
; $name: Astruct.inc
; $version: 4
; $date_modified: 121898
; $description: C NE3200 Header file for structures
; $owner: ODI LAN Driver Manager
; Copyright (c) 1996, 1997, 1998 Novell, Inc. All Rights Reserved.
;
; THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
; USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE AGREEMENT
; ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS THIS WORK.
; PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO DEVELOPER A
; ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE CODE IN ITS
; PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS TO MARKET,
; DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF DEVELOPER'S
; PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR DEVELOPER'S
; CUSTOMERS WITH RESPECT TO THIS CODE.
;***********************************************************************
;
; Title: C NE3200 Header file for structures
;
; Filename: astruct.inc
;
; ODI Spec Ver: 1.11
;
; Description: structures and equates used by firmware
;
; Modification History:
;
; ??-??-?? ??? ? (this is the format please replace with first entry)
;
;***********************************************************************/
RBuffSize equ 1514
StatisticStructure struc
;;;;; TotalTxPacketCount dd 0 ; Let the Host update
;;;;; TotalRxPacketCount dd 0 ; these counters.
;;;;; NoECBAvailableCount dd 0
PacketTxTooBigCount dd 0
PacketTxTooSmallCount dd 0 ; Not used.
PacketRxOverflowCount dd 0
PacketRxTooBigCount dd 0
PacketRxTooSmallCount dd 0
PacketTxMiscErrorCount dd 0 ; Not used.
PacketRxMiscErrorCount dd 0 ; Not used.
RetryTxCount dd 0
ChecksumErrorCount dd 0 ; Not used.
HardwareRxMismatchCount dd 0 ; Not used.
TotalTxOKByteCountLow dd 0 ; 0 - Used by MSM
TotalTxOKByteCountHigh dd 0 ; 0 - Used by MSM
TotalRxOKByteCountLow dd 0 ; 0 - Used by MSM
TotalRxOKByteCountHigh dd 0 ; 0 - Used by MSM
TotalGroupAddrTxCount dd 0 ; 0 - Used by MSM
TotalGroupAddrRxCount dd 0 ; 0 - Used by MSM
AdapterResetCount dd 0 ; 0 - Used by driver
AdapterOprTimeStamp dd 0 ; 0 - Used by MSM
MQDepth dd 0 ; 0 - Used by MSM
TxOKSingleCollision dd 0 ; 0 - Used by driver
TxOKMultipleCollisions dd 0 ; 0 - Used by driver
TxOKButDeferred dd 0 ; 0 - not used
TxAbortLateCollision dd 0 ; 0 - Used by driver
TxAbortExcessCollisions dd 0 ; 0 - Used by driver
TxAbortCarrierSense dd 0 ; 0 - Used by driver
TxAbortExDeferral dd 0 ; 0 - not used
RxAbortFrameAlignment dd 0 ; 0 - Used by driver
CustomCounterCount dw 0
TxRetryFailure dd 0 ; Number of retrys failures
TxClearToSend dd 0 ; Tx error
TxUnderRun dd 0 ; Tx error
RxDMAOverrun dd 0
;;;;; EnqueuedSends dd 0
PacketSlideCount dd 0 ; Frames rcv'd not matching our
; MC table or IA node address.
DummyRCBCount dd 0
AdapterReset1 dd 0
BadFragLengthCount dd 0
PollingTimeout dd 0 ;#
;;dgm EndOfStats dd 0 dup (0)
StatisticStructure ends
EndOfStats equ dword ptr PollingTimeout + 4
IFDEF NE3200P ; Ne3200Promisc code
;---------------------------------------------------------------\
; *
; RBDWrappedCount is really a count of how many receive frames *
; had their data buffers wrap around from the last to the first.*
; The reason why this is significant is that the procedure *
; CopyPacketToHost (in adapter.386) has to initiate an extra *
; BMIC transfer to the host in order to get the entire receive *
; frame copied to the host. Generally only 2 transfers are *
; needed, but data buffer wrapping requires 3 BMIC transfers. *
; *
;---------------------------------------------------------------/
;
RBDWrappedCount equ offset PacketSlideCount
ENDIF
BDStruct struc
BDStatus dw 1 dup (?)
BDLink dw 1 dup (?)
BufPtr dw 2 dup (?)
BufSize dw 1 dup (?)
BDStruct ends
;***************************************************************\
; *
; 82586 Transmit Command Block *
; *
;***************************************************************/
TxCStruct struc
TxStatus dw 1 dup (?)
TxCmd dw 1 dup (?)
TxCLink dw 1 dup (?)
TBDOffset dw 1 dup (?)
TxDestination db 6 dup (?)
TxLength dw 1 dup (?)
TxTries dw 1 dup (?) ; Not part of 586 TCB.
TxCStruct ends
SCBStructure struc
SCBStatus dw 1 dup (?)
SCBCommand dw 1 dup (?)
CBLOffset dw 1 dup (?)
RFAOffset dw 1 dup (?)
SCBCRCErrors dw 1 dup (?)
SCBAlignErrors dw 1 dup (?)
SCBResources dw 1 dup (?)
SCBOverruns dw 1 dup (?)
SCBStructure ends
;;FDStruct struc ; Unused structure
;;
;; FDStatus dw 1 dup (?)
;; FDCommand dw 1 dup (?)
;; FDLink dw 1 dup (?)
;; RBDOffset dw 1 dup (?)
;; FDDestination db 6 dup (?)
;; FDSource db 6 dup (?) ;*
;; FDLength dw 1 dup (?) ;*
;;
;;FDStruct ends
MulticastCmdStruc struc
MulticastCmdStatus dw ?
MulticastCmdCommand dw ?
MulticastCmdLink dw ?
MulticastCmdCount dw ?
MulticastCmdAddresses dw ?
MulticastCmdStruc ends
;***************************************************************\
; *
; TCB (Transmit Control Block) Structure. *
; *
;***************************************************************/
;
TCBStructure struc
TCBDriverWS dw 6 dup (0) ; Used by MSM or Driver to link TCBs.
TCBDataLen dw ? ; Total Frag lengths + media length.
dw ?
TCBFragStrucPtr dd ? ; Location of ECB fragment struc.
TCBMediaHeaderLen dw ? ; Length of Media Length.
dw ?
;; TCBMediaHeader db ? ; Media Header.
TCBStructure ends
TCBMediaHeader equ TCBMediaHeaderLen + 4 ; Media Header Buffer.
;***************************************************************\
; *
; Bus Master TCB (Transmit Control Block) Structure. *
; *
;***************************************************************/
;
BMTCBStructure struc
BMTCBDriverWS dw 6 dup (0) ; Used by MSM or Driver.
BMTCBDataLen dw ? ; Total Frag len + header len.
dw ?
BMTCBDescCount dw 0 ; Total Descriptors.
dw ?
BMTCBDesc1 dd 2 dup (?) ; Offset/Length #1.
BMTCBDesc2 dd 2 dup (?) ; Offset/Length #2.
BMTCBDesc3 dd 2 dup (?) ; Offset/Length #3.
BMTCBDesc4 dd 2 dup (?) ; Offset/Length #4.
BMTCBDesc5 dd 2 dup (?) ; Offset/Length #5.
BMTCBDesc6 dd 2 dup (?) ; Offset/Length #6.
BMTCBDesc7 dd 2 dup (?) ; Offset/Length #7.
BMTCBDesc8 dd 2 dup (?) ; Offset/Length #8.
BMTCBsECB dd 0 ; ECB Storage.
;; BMTCBMediaHeader db ? ; Media Header.
BMTCBStructure ends
BMTCBMediaHeader equ BMTCBsECB + 4 ; Media Header offset.
BMTCBMediaHeaderSize equ 128 ; Media Header Size.
;***************************************************************\
; *
; Fragment Descriptor Structure. *
; *
;***************************************************************/
;
FragmentStructure struc
FragmentOffset dd ? ; Location of fragment.
FragmentLength dd ? ; Length of fragment.
FragmentStructure ends
;***************************************************************\
; *
; RCB (Receive Control Block) Structure. *
; *
;***************************************************************/
;
RCBStructure struc
RCBDriverWS dd 2 dup (0) ; Can be freely used by driver.
RCBReserved db 52 dup (0) ; Reserved.
;; RCBDataBuffer db ? ; Packet data.
RCBStructure ends
RCBDataBuffer equ RCBReserved + 52
;****************************************************************\
; *
; Adapter Receive ECB structure Template. *
; *
; When this template is copied to the host (HSM) to fill in the *
; host's ECB (RCB) fields, we begin 16 bytes down from the start *
; of the ECB therefore ARLink thru ARLogicalID are commented out.*
; *
;****************************************************************/
;
AReceiveBufferStructure struc
;; ARLink dd ? ; These 16 bytes are
;; ARBLink dd ? ; are not used by the
;; ARStatus dw ? ; firmware. The host (HSM)
;; ARESRAddress dd ? ; will fill in these fields
;; ARLogicalID dw ? ; in its ECB (RCB).
ARProtocolID db 6 dup (?)
ARBoardNumber dd ?
ARImmediateAddress db 6 dup (?)
ARDriverWorkSpace dd ?
ARESREBXValue dd ? ; These 8 bytes are
ARSocket dw ? ; the RProtocolWorkspace
ARProtocolWorkspaceRest dw ? ; fields.
ARPacketLength dd ? ; Total frm size less any media.
ARFragmentCount dd ? ; Always set to 1.
ARPacketOffset dd ?
ARPacketSize dd ? ; Size of this fragment.
;ARPacketEnvelope db 0 dup (?)
AReceiveBufferStructure ends
ARPacketEnvelope equ byte ptr ARPacketSize + 4
;***************************************************************\
; *
; Adapter Transmit ECB structure. *
; *
;***************************************************************/
;
ATransmitBufferStructure struc
ATLink dd ?
ATBLink dd ?
ATStatus dw ?
ATESRAddress dd ?
ATLogicalID dw ?
ATProtocolID db 6 dup (?)
ATBoardNumber dd ?
ATImmediateAddress db 6 dup (?)
ATDriverWorkSpace dd ?
ATESREBXValue dd ? ; These 8 bytes are
ATSocket dw ? ; the RProtocolWorkspace
ATProtocolWorkspaceRest dw ? ; fields.
ATPacketLength dd ?
ATFragmentCount dd ?
ATPacketOffset dd ? ; These 2 fields repeat for
ATPacketSize dd ? ; ATFragmentCount times.
ATransmitBufferStructure ends
IFNDEF NE3200P ; Non-P Ne3200
;***************************************************************\
; *
; Uni (UniReceiveBuf) means ONE contiguous buffer combining the *
; FD, the RCB template, the receive frame header and data, *
; and the RBD together. *
; *
;***************************************************************/
;
UniReceiveBuf struc
; FD - Frame Desc.
UFDStatus dw 1 dup (?)
UFDCommand dw 1 dup (?)
UFDLink dw 1 dup (?)
URBDOffset dw 1 dup (?)
UFDDestination db 6 dup (?)
UFDSource db 6 dup (?) ;*
UFDLength dw 1 dup (?) ;*
; RCB template (copied to the host to fill in the host ECB).
URCB db SIZE AReceiveBufferStructure dup (?)
; Frame hdr and data.
UHeader db 14 dup (?)
DataBuffer db (RBuffSize-14) dup (?)
; RBD - Receive Buffer Desc.
RBDStatus dw 1 dup (?)
RBDLink dw 1 dup (?)
RBDBufPtr dw 2 dup (?)
RBDBufSize dw 1 dup (?)
UniReceiveBuf ends
ELSE ; Ne3200Promisc code
UFDStruct struc
UFDStatus dw 1 dup (?)
UFDCommand dw 1 dup (?)
UFDLink dw 1 dup (?)
UFDRBDOffset dw 1 dup (?)
UFDDestination db 6 dup (?)
UFDSource db 6 dup (?) ;*
UFDLength dw 1 dup (?) ;*
UFDStruct ends
RBDStruct struc
RBDStatus dw ?
RBDLink dw ?
RBDBufPtr dw 2 dup (?)
RBDBufSize dw ?
RBDStruct ends
ENDIF