home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d540
/
sana.lha
/
SANA
/
sana2device.spec
< prev
next >
Wrap
Text File
|
1991-08-27
|
48KB
|
1,881 lines
$Id: sana2device.spec,v 1.11 91/05/14 14:01:47 rsbx Exp $
TABLE OF CONTENTS
sana2.device
sana2.device/Init
sana2.device/Open
sana2.device/Close
sana2.device/BeginIO
sana2.device/AbortIO
sana2.device/Expunge
sana2.device/CMD_READ
sana2.device/CMD_WRITE
sana2.device/SANA2CMD_READORPHAN
sana2.device/SANA2CMD_DEVICEQUERY
sana2.device/SANA2CMD_GETSTATIONADDRESS
sana2.device/SANA2CMD_CONFIGINTERFACE
sana2.device/SANA2CMD_ADDSTATIONALIAS
sana2.device/SANA2CMD_DELSTATIONALIAS
sana2.device/SANA2CMD_ADDMULTICASTADDRESS
sana2.device/SANA2CMD_DELMULTICASTADDRESS
sana2.device/SANA2CMD_MULTICAST
sana2.device/SANA2CMD_BROADCAST
sana2.device/SANA2CMD_TRACKTYPE
sana2.device/SANA2CMD_UNTRACKTYPE
sana2.device/SANA2CMD_GETTYPESTATS
sana2.device/SANA2CMD_GETSPECIALSTATS
sana2.device/SANA2CMD_GETGLOBALSTATS
sana2.device/SANA2CMD_ONEVENT
sana2.device/SANA2CMD_ONLINE
sana2.device/SANA2CMD_OFFLINE
sana2.device/CMD_START
sana2.device/CMD_STOP
sana2.device/CMD_CLEAR
sana2.device/CMD_FLUSH
sana2.device/CMD_INVALID
sana2.device/CMD_RESET
sana2.device/CMD_UPDATE
******* sana2.device *************************************************
*
* The SANA-II device specification represents a Data Transfer
* Level interface standard for Amigas. The intent is: 1) for all
* Amiga network hardware vendors to create a SANA-II device
* driver for their hardware, 2) for all protocol stack writers
* to access the networks via SANA-II device drivers, 3) any
* protocol stack to work with any SANA-II device driver.
*
*
* GOALS
* Simplicity: A SANA-II device driver should be as simple to
* write as any other Amiga device.
*
* Low cost: A functional SANA-II device driver should take about
* one man month or less for an experienced Amiga programmer with
* Amiga device writing experience to write. A tuned and polished
* SANA-II device should require only one additional man month.
*
* Compatibility: All SANA-II device drivers behave largely the
* same.
*
* Low resource usage: A SANA-II device driver should not require
* large amounts of memory, cpu cycles or any other system
* resource to operate efficiently.
*
* Ease of use: Using SANA-II devices should be the easiest way
* for protocol stack writers to access the networks.
*
*
* NON-GOALS
* Lowest common denominator: Not all network interfaces can
* support all the features available in this specification or
* other network types.
*
* Feature-itis: Not every feature of every type of network is
* represented.
*
* Network management tools: Analysis and debugging of a network
* requires specialized software for that purpose.
*
*
* STRUCTURES
* struct IOSana2Req
* {
* struct Message S2io_Message;
* struct Device *S2io_Device;
* struct Unit *S2io_Unit;
*
* UWORD S2io_Command;
* UBYTE S2io_Flags;
* BYTE S2io_Error;
* ULONG S2io_WireError;
*
* struct Sana2PacketType *S2io_PacketType;
* UBYTE S2io_SrcAddr[SANA2_MAX_ADDR_BYTES];
* UBYTE S2io_DstAddr[SANA2_MAX_ADDR_BYTES];
* ULONG S2io_DataLength;
* struct NetBuff S2io_Body;
* void *S2io_StatData;
* };
*
* Message
* Initialized and used the same as all device IORequest
* Message structures.
*
* Device
* Device private.
*
* Unit
* Device private.
*
* Command
* Command requested.
*
* Flags
* Used to request special options and return status
* information.
*
* Error
* Indicates completion status of a command in general
* terms.
*
* WireError
* More specific error number. Only valid when S2io_Error
* is non-zero.
*
* PacketType
* Pointer to a Sana2PacketType structure. The device
* uses the contents of the structure to determine if a
* packet from the network will satisfy a particular read
* command, or to build the appropriate packet header and
* trailer for a packet send. The device will not modify
* either the pointer or the structure.
*
* SrcAddr
* The device fills in this field with the interface
* address of the source of the packet that satisfied a
* read command. The bytes used to hold the address will
* be left justified but the bit layout is dependent on
* the particular type of network.
*
* DstAddr
* This field is filled in with the interface destination
* address of the packet for a send command. The bytes
* used to hold the address will be left justified but
* the bit layout is dependent on the particular type of
* network.
*
* DataLength
* The device fills in this field with the size of the
* packet data as it was sent on the wire. This does not
* include the header and trailer information. Depending
* on the network type and protocol type, the driver may
* have to calculate this value.
*
* Body
* A NetBuff structure with the packet data.
*
* StatData
* Pointer to a data area in memory to place a a snapshot
* of device statics. The data area must be long word
* aligned.
*
*
* struct Sana2PacketType
* {
* ULONG CanonicalType;
* ULONG Magic;
* ULONG Length;
* UBYTE *Match;
* UBYTE *Mask;
* };
*
* CanonicalType
* Not used by the device.
*
* Magic
* Determines how the fields in this structure are to be
* interpretted.
*
* Length
* Number of bytes pointed to be Match and Mask.
*
* Match
* Pointer to packet type match data. The data must be
* long word (32 bit) aligned.
*
* Mask
* Pointer to packet type mask data. The data must be
* long word (32 bit) aligned.
*
*
* struct Sana2DeviceQuery
* {
* /*
* * Standard information
* */
* ULONG SizeAvailable;
* ULONG SizeSupplied;
* LONG DevQueryFormat;
* LONG DeviceLevel;
* /*
* * Common information
* */
* UWORD AddrFieldSize;
* ULONG MTU;
* LONG bps;
* LONG HardwareType;
* /*
* * Format specific information
* */
* };
*
* SizeAvailable
* Size, in bytes, of the space available in which to
* place device information. This includes both size
* fields.
*
* SizeSupplied
* Size, in bytes, of the data supplied.
*
* DevQueryFormat
* The format defined here is format 0.
*
* DeviceLevel
* This spec defines level 0.
*
* AddrFieldSize
* The number of bits in an interface address.
*
* MTU
* Maximum Transmission Unit, the size, in bytes, of the
* maximum packet size, not including header and trailer
* information.
*
* bps
* Best guess at the raw line rate for this network in
* bits per second.
*
* HardwareType
* Specifies the type of network wire the driver
* controls.
*
*
* struct Sana2PacketTypeStats
* {
* LONG PacketsSent;
* LONG PacketsReceived;
* LONG BytesSent;
* LONG BytesReceived;
* LONG PacketsDropped;
* };
*
* PacketsSent
* Number of packets of a particular type sent.
*
* PacketsReceived
* Number of packets of a particular type that satisfied
* a read command.
*
* BytesSent
* Number of bytes of data sent in packets of a
* particular type.
*
* BytesReceived
* Number of bytes of data of a particular packet type
* that satisfied a read command.
*
* PacketsDropped
* Number of packets of a particular type that were
* received while there were no pending reads of that
* packet type.
*
*
* struct Sana2SpecialStatRecord
* {
* ULONG Type;
* LONG Count;
* char *String;
* };
*
* Type
* Statistic identifier.
*
* Count
* Statistic itself.
*
* String
* Identifying string for the statistic. Should be plain
* ASCII with no formatting characters.
*
*
* struct Sana2SpecialStatHeader
* {
* ULONG RecordCountMax;
* ULONG RecordCountSupplied;
* struct Sana2SpecialStatRecord[RecordCountMax];
* };
*
* RecordCountMax
* Space for this many number of records is available to
* place statistics information in.
*
* RecordCountSupplied
* Number of statistic records supplied.
*
*
* struct Sana2DeviceStats
* {
* LONG packets_received;
* LONG packets_sent;
* LONG framing_errors;
* LONG bad_data;
* LONG hard_misses;
* LONG soft_misses;
* LONG unknown_types_received;
* LONG fifo_overruns;
* LONG fifo_underruns;
* LONG reconfigurations;
* struct timeval last_start;
* };
*
* packets_received
* Number of packets that this unit has received.
*
* packets_sent
* Number of packets that this unit has sent.
*
* framing_errors
* Number of framing errors detected.
*
* bad_data
* Number of bad packets received.
*
* hard_misses
* Number of packets lost due to insufficient resources
* available in the network interface.
*
* soft_misses
* Number of packets lost due to insifficient resources
* available on the host.
*
* unknown_type_received
* Number of packets received that had no pending read
* command with the appropriate packet type.
*
* fifo_overruns
* Number of overruns encountered when attempting to
* store received packets.
*
* fifo_underruns
* Number of underruns encountered when attempting to
* send packets.
*
* reconfigurations
* Number of network reconfigurations since this unit was
* last configured.
*
* last_start
* The time when this unit last went online.
*
*
* CONSTANTS
* OpenDevice flags argument (SANA2OPB_xxx):
* MINE
* Exclusive access to the unit requested.
*
* PROM
* Promiscuous mode requested.
*
*
* IOSana2Req S2io_Flags field (SANA2IOB_xxx):
* RAW
* Raw packet read/write requested.
*
* BCAST
* Broadcast packet (received).
*
* MCAST
* Multicast packet (received).
*
* QUICK
* Quick IO requested.
*
*
* IOSana2Req S2io_Error field (S2ERR_xxx):
* NO_RESOURCES
* Insufficient resources available.
*
* UNKNOWN_ENTITY
* Specified entity unknown or not found.
*
* BAD_ARGUMENT
* Noticably bad argument.
*
* BAD_STATE
* Command inappropriate for current state.
*
* BAD_ADDRESS
* Noticably bad address.
*
* MTU_EXCEEDED
* Write data too large.
*
* BAD_PROTOCOL
* Noticably bad packet type.
*
* NOT_SUPPORTED
* Command is not supported by this driver. This is
* similar to IOERR_NOCMD as defined in exec/errors.h but
* S2ERR_NOT_SUPPORTED indicates that the requested
* command is a valid SANA-II command and that the driver
* does not support it, e.g. SANA2CMD_MULTICAST.
*
* SOFTWARE
* Software error of some kind.
*
*
* IOSana2Req S2io_WireError field (S2WERR_xxx):
* NOT_CONFIGURED
* Command requires unit to be configured.
*
* UNIT_ONLINE
* Command requires that the unit be offline.
*
* UNIT_OFFLINE
* Command requires that the unit be online.
*
* ALREADY_TRACKED
* Protocol is already being tracked.
*
* NOT_TRACKED
* Protocol is not being tracked.
*
* NETBUFF_ERROR
* NetBuff.library error return caused error.
*
* SRC_ADDRESS
* Problem with the source address field.
*
* DST_ADDRESS
* Problem with destination address field.
*
* BAD_BROADCAST
* Problem with an attempt to broadcast.
*
* BAD_MULTICAST
* Problem with an attempt to multicast.
*
* ALIAS_LIST_FULL
* Station alias list full.
*
* BAD_ALIAS
* Bad or unknown station alias.
*
* MULTICAST_FULL
* Multicast address list full.
*
* BAD_EVENT
* Event specified is unknown.
*
* BAD_STATDATA
* The S2IO_StatData pointer or the data it points to
* failed a sanity check.
*
* PROTOCOL_UNKNOWN
* The protocol specified is unknown or the type of magic
* used by the request protocol is unknown.
*
* IS_CONFIGURED
* Attempt to reconfigure the unit.
*
* NULL_POINTER
* A NULL pointer was detected in one of the arguments.
*
*
* Event types (S2EVENT_xxx):
* ERROR
* Return when any error occures.
*
* TX
* Return on any transmit error.
*
* RX
* Return on any receive error.
*
* ONLINE
* Return when unit goes online.
*
* OFFLINE
* Return when unit goes offline.
*
* NETBUFF
* Return on any NetBuff.library error.
*
* HARDWARE
* Return when any hardware error occures.
*
* SOFTWARE
* Return when any software error occures.
*
*
* SEE ALSO
* NetBuff.library documentation.
*
* Separate document for each type of network detailing specific
* device requirements.
*
*
* CREDITS
* Raymond S. Brand, rsbx@cbmvax.commodore.com, (215) 431-9100
* Martin Hunt, martin@cbmvax.commodore.com, (215) 431-9100
* Perry Kivolowitz, ASDG Incorporated, (608) 273-6585
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*****i* sana2.device/Init() ******************************************
*
* NAME
* Init -- Initialize the device from nothing.
*
* SYNOPSIS
* Init( SegList )
* A0
*
* void Init( void * );
*
* FUNCTION
* This routine initializes the device from nothing.
*
* INPUTS
* SegList Pointer to the SegList for the device code.
*
* NOTES
*
* SEE ALSO
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*
* REGISTER USAGE
*
* A0 -- seglist ????? ?????
* A6 -- exec ????? exec
*
*****i* sana2.device/Open() ******************************************
*
* NAME
* Open -- Request an opening of the network device.
*
* SYNOPSIS
* error = Open( unit, Sana2Req, flags )
* D0 D0 A1 D1
*
* BYTE Open( ULONG, struct IOSana2Req *, ULONG );
*
* FUNCTION
* This function is called by exec.library OpenDevice().
*
* This function performs whatever initialization is required per
* device open and initializes the Sana2Req for use by the
* device.
*
* INPUTS
* unit Device unit to open.
* Sana2Req Pointer to IOSana2Req structure to be
* initialized by the sana2.device.
* flags Supported flags are:
* SANA2OPB_MINE
* SANA2OPB_PROM
*
* RESULTS
* error same as io_Error
* io_Error Zero if successful; non-zero otherwise.
* io_Device A pointer to whatever device will handle the
* calls for this unit. This pointer may be
* different depending on what unit is
* requested.
*
* NOTES
*
* SEE ALSO
* exec.library/OpenDevice(),
* exec.library/CloseDevice()
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* The system is single threaded while executing this function.
*
*
* REGISTER USAGE
*
* D0 -- unit ????? ?????
* D1 -- flags ????? ?????
* A1 -- IOReq ????? ?????
* A6 -- device ????? device
*
*****i* sana2.device/Close() *****************************************
*
* NAME
* CloseDevice -- Close the device.
*
* SYNOPSIS
* Close( Sana2Req )
* A1
*
* void Close( struct IOSana2Req * );
*
* FUNCTION
* This function is called by exec.library CloseDevice().
*
* This function performs whatever cleanup is required at device
* closes.
*
* Note that all IORequests MUST be complete before closing. If
* any are pending, your program must AbortIO() then WaitIO()
* each outstanding IORequest to complete them.
*
* INPUTS
* Sana2Req Pointer to Sana2Req initialized by Open().
*
* NOTES
*
* SEE ALSO
* exec.library/CloseDevice(),
* exec.library/OpenDevice()
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*
* REGISTER USAGE
*
* D0 -- ????? ????? SegList
* A1 -- IOReq ????? ?????
* A6 -- device ????? device
*
*****i* sana2.device/BeginIO() ***************************************
*
* NAME
* BeginIO -- Start an IO operation.
*
* SYNOPSIS
* BeginIO( Sana2Req )
* A1
*
* void BeginIO( struct IOSana2Req * );
*
* FUNCTION
* This is a direct function call to the device. It is intended
* for more advanced programmers. See exec's DoIO() and SendIO()
* for the normal method of calling devices.
*
* This function initiates a I/O request made to a sana2.device.
*
* INPUTS
* Sana2Req Pointer to an initialized IOSana2Req
* structure.
* S2io_Message A mn_ReplyPort is required.
* S2io_Device Set by Open().
* S2io_Unit Set by Open().
* S2io_Command Needs to be set to proper command
* S2io_Flags If the IOB_QUICK bit is set the device will
* attempt to finish command without
* 'Replying' through the exec message
* system. The IOB_QUICK bit will be cleared
* if the request will 'Replied' when
* complete.
* S2io_PacketType Pointer to the Sana2PacketType structure for
* the packet type of interest.
* S2io_SrcAddr Source interface address of the packet.
* S2io_DstAddr Destination interface address of the packet.
* S2io_Body Contents depend on particular command.
* S2io_StatData Pointer to area to store statistics data.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
* S2io_SrcAddr Source interface address of the packet.
* S2io_DstAddr Destination interface address of the packet.
* S2io_Body Contents depend on particular command.
*
* NOTES
*
* SEE ALSO
* exec.library/DoIO(),
* exec.library/SendIO()
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*
* REGISTER USAGE
*
* A1 -- IOReq ????? ?????
* A6 -- device ????? device
*
******* sana2.device/AbortIO() ***************************************
*
* NAME
* AbortIO -- Remove an existing device request.
*
* SYNOPSIS
* error = AbortIO( Sana2Req )
* D0 A1
*
* LONG AbortIO( struct IOSana2Req * );
*
* FUNCTION
* This is an exec.library call.
*
* This function aborts an ioRequest. If the request is active,
* it may or may not be aborted. If the request is queued it is
* removed. The request will be returned in the same way as if
* it had normally completed.
*
* INPUTS
* Sana2Req Sana2Req to be aborted.
*
* RESULTS
* error Zero if the request was aborted, non-zero
* otherwise. S2io_Error in Sana2Req will be
* set to IOERR_ABORTED (-2) if it was
* aborted.
*
* NOTES
*
* SEE ALSO
* exec.library/AbortIO()
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*
* REGISTER USAGE
*
* D0 -- ????? ????? error
* A1 -- IOReq ????? ?????
* A6 -- device ????? device
*
*****i* sana2.device/Expunge() ***************************************
*
* NAME
* Expunge -- Free device resources and dependencies.
*
* SYNOPSIS
* Expunge( )
*
* void Expunge( void );
*
* FUNCTION
* This function deallocates all memory and other resources
* associated with the device, if possible.
*
* NOTES
* This function is not permitted to wait.
*
* SEE ALSO
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*
* REGISTER USAGE
*
* D0 -- ????? ????? SegList
* A6 -- device ????? device
*
******* sana2.device/CMD_READ ****************************************
*
* NAME
* Read -- Get a packet from the network.
*
* FUNCTION
* Get the next packet available of the requested packet type.
* The data returned in the S2io_Body NetBuff is normally the
* Data Link Layer packet data only. If bit SANA2IOB_RAW is set
* in S2io_Flags, then the entire Data Link Layer packet,
* including both header and trailer information, will be
* returned.
*
* IO REQUEST
* S2io_Command CMD_READ
* S2io_Flags Supported flags are:
* SANA2IOB_RAW
* SANA2IOB_QUICK
* S2io_PacketType Pointer to packet type desired.
* S2io_Body NetBuff to hold packet data.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
* S2io_Flags The following flags may be returned:
* SANA2IOB_RAW
* SANA2IOB_BCAST
* SANA2IOB_MCAST
* S2io_SrcAddr Source interface address of packet.
* S2io_DstAddr Destination interface address of packet.
* S2io_DTLLength Length of packet data as given by the Data
* Link Layer protocol.
* S2io_Body NetBuff with packet data.
*
* NOTES
* Only the first NetBuffSegment in the NetBuff passed is
* guaranteed to be returned.
*
* SEE ALSO
* sana2.device/SANA2CMD_READORPHAN,
* sana2.device/CMD_WRITE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/CMD_WRITE ***************************************
*
* NAME
* Write -- Send packet to the network.
*
* FUNCTION
* This command causes the packet to be sent to the specified
* network interface. Normally, appropriate packet header and
* trailer information will be added to the packet data when it
* is sent. If bit SANA2IOB_RAW is set in io-Flags, then the
* S2io_Body NetBuff is assumed to contain an entire Data Link
* Layer packet and will be sent unmodified.
*
* The data in the S2io_Body NetBuff is returned unmodified; but,
* the distribution of the data in, and the number of
* NetBuffSegments, the S2io_Body NetBuff may be modified.
*
* IO REQUEST
* S2io_Command CMD_WRITE
* S2io_Flags Supported flags are:
* SANA2IOB_RAW
* SANA2IOB_QUICK
* S2io_PacketType Pointer to type of packet to send.
* S2io_DstAddr Destination interface address for this packet.
* S2io_Body NetBuff with packet data.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
* sana2.device/CMD_READ,
* sana2.device/SANA2CMD_BROADCAST,
* sana2.device/SANA2CMD_MULTICAST
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_READORPHAN *****************************
*
* NAME
* ReadOrphan -- Get a packet for which there is no reader.
*
* FUNCTION
* Get the next packet available that does not satisfy any
* then-pending CMD_READ requests. The data returned in the
* S2io_Body NetBuff is normally the Data Link Layer packet type
* field and the packet data. If bit SANA2IOB_RAW is set in
* S2io_Flags, then the entire Data Link Layer packet, including
* both header and trailer information, will be returned.
*
* IO REQUEST
* S2io_Command CMD_READORPHAN
* S2io_Flags Supported flags are:
* SANA2IOB_RAW
* SANA2IOB_QUICK
* S2io_Body NetBuff to hold packet data.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
* S2io_Flags The following flags may be returned:
* SANA2IOB_RAW
* SANA2IOB_BCAST
* SANA2IOB_MCAST
* S2io_SrcAddr Source interface address of packet.
* S2io_DstAddr Destination interface address of packet.
* S2io_DTLLength Lenght of packet data as given by the Data
* Link Layer protocol.
* S2io_Body NetBuff with packet data.
*
* NOTES
* Only the first NetBuffSegment in the NetBuff passed in is
* guarenteed to be returned.
*
* To determine which protocol family the returned packet belongs
* to you may have to specify SANA2IOB_RAW to get the entire data
* link layer wrapper (which is where the protocol type may be
* kept). Notice this necessarily means that this cannot be done
* in a network interface independent fashion.
*
* SEE ALSO
* sana2.device/CMD_READ,
* sana2.device/CMD_WRITE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_DEVICEQUERY ****************************
*
* NAME
* DeviceQuery -- Return parameters for this network interface.
*
* FUNCTION
* This command causes the device driver to report information
* about the device. Up to DevQuerySizeAvailable bytes of the
* information is copied into a buffer pointed to by
* S2io_StatData. The format of the data is as follows:
*
* struct Sana2DeviceQuery
* {
* /*
* * Standard information
* */
* ULONG DevQuerySizeAvailble; /* bytes available */
* ULONG DevQuerySizeSupplied; /* bytes supplied */
* LONG DevQueryFormat; /* this is type 0 */
* LONG DeviceLevel; /* this document is level 0 */
*
* /*
* * Common information
* */
* UWORD AddrFieldSize; /* address size in bits */
* ULONG MTU; /* maximum packet data size */
* LONG bps; /* line rate (bits/sec) */
* LONG HardwareType; /* what the wire is */
*
* /*
* * Format specific information
* */
* };
*
* The DeviceQueryAvailable specifies the number of bytes that
* the caller is prepared to accomodate, including the standard
* information fields.
*
* DevQuerySizeSupplied is the number of bytes actually supplied,
* including the standard information fields, which will not
* exceed DevQuerySizeAvailable.
*
* The values used to identify the type of physical hardware are
* the same values used in the hardware type field (hdr) of
* Address Resolution Protocol (ARP) packets as defined by
* RFC-826 (ARP) and RFC-1060 (Assigned Numbers, March 1990).
*
* The following are defined in RFC-1060.
*
* Hardware Type (hrd)
*
* Type Description
* ---- -----------
* 1 Ethernet (10Mb)
* 2 Experimental Ethernet (3Mb)
* 3 Amateur Radio AX.25
* 4 Proteon ProNET Token Ring
* 5 Chaos
* 6 IEEE 802 Networks
* 7 ARCNET
* 8 Hyperchannel
* 9 Lanstar
* 10 Autonet Short Address
* 11 LocalTalk
* 12 LocalNet (IBM PCNet or SYTEK LocalNET)
*
* IO REQUEST
* S2io_Command SANA2CMD_DEVICEQUERY
* S2io_StatData Pointer to Sana2DeviceQuery structure to fill
* in.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_GETSTATIONADDRESS **********************
*
* NAME
* GetStationAddress -- Get default and interface address.
*
* FUNCTION
* This command causes the device driver to copy the current
* interface address into S2io_SrcAddr, and to copy the factory
* default station address into S2io_DstAddr.
*
* IO REQUEST
* S2io_Command SANA2CMD_GETSTATIONADDRESS
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
* S2io_SrcAddr Default interface address.
* S2io_DstAddr Current interface address.
*
* NOTES
*
* SEE ALSO
* sana2.device/SANA2CMD_CONFIGINTERFACE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_CONFIGINTERFACE ************************
*
* NAME
* ConfigInterface -- Configure the network interface.
*
* FUNCTION
* This command causes the device driver to initialize the
* interface hardware and to set the network interface address to
* the address in S2io_SrcAddr. This command can only be executed
* once and, if successful, will leave the driver and network
* interface fully operational and the network interface in
* S2io_SrcAddr.
*
* To set the interface address to the factory address, the
* network management software must use GetStationAddress first
* and then call ConfigInterface with the result. If there is no
* factory address then the network software must pick an address
* to use.
*
* Until this command is executed the device will not listen for
* any packets on the hardware.
*
* IO REQUEST
* S2io_Command SANA2CMD_CONFIGINTERFACE
* S2io_Flags Supported flags are:
* SANA2IOB_QUICK
* S2io_SrcAddr Address for this interface.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
* S2io_SrcAddr Address of this interface as configured.
*
* NOTES
* Some networks have the interfaces choose a currently unused
* interface address each time the interface is initialized. The
* caller must check S2io_SrcAddr for the actual interface
* address after configuring the interface.
*
* SEE ALSO
* sana2.device/SANA2CMD_GETSTATIONADDRESS
*
* BUGS
* What to do when/if the network interface address changes due
* to a network reconfiguration.
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_ADDSTATIONALIAS ************************
*
* NAME
* AddStationAlias -- Add interface address alias.
*
* FUNCTION
* This function adds another network interface address to which
* the network interface should respond.
*
* IO REQUEST
* S2io_Command SANA2CMD_ADDSTATIONALIAS
* S2io_SrcAddr Alias to add.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Since alias interface addresses are not bound to a particular
* packet type or read request, each added interface alias
* address has an "added" count associated with it.
*
* SEE ALSO
* sana2.device/SANA2CMD_DELSTATIONALIAS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_DELSTATIONALIAS ************************
*
* NAME
* DelStationAlias -- Delete a interface address alias.
*
* FUNCTION
* This function deletes a network interface address from the
* list of addresses to which this interface should respond.
*
* IO REQUEST
* S2io_Command SANA2CMD_DELSTATIONALIAS
* S2io_SrcAddr Alias to delete.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Since alias interface addresses are not bound to a particular
* packet type or read request, each added interface alias
* address has an "added" count associated with it.
*
* SEE ALSO
* sana2.device/SANA2CMD_ADDSTATIONALIAS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_ADDMULTICASTADDRESS ********************
*
* NAME
* AddMulticastAddress -- Enable an interface multicast address.
*
* FUNCTION
* This command causes the device driver to enable multicast
* packet reception for the requested address.
*
* IO REQUEST
* S2io_Command SANA2CMD_ADDMULTICASTADDRESS
* S2io_SrcAddr Multicast address to enable.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Since multicast addresses are not "bound" to a particular
* packet type, each enabled multicast address has an "enabled"
* count associated with it.
*
* SEE ALSO
* sana2.device/SANA2CMD_DELMULTICASTADDRESS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_DELMULTICASTADDRESS ********************
*
* NAME
* DelMultiCastAddress -- Disable an interface multicast address.
*
* FUNCTION
* This command causes device driver to disable multicast packet
* reception for the requested address.
*
* It is an error to disable a multicast address that is not
* enabled.
*
* IO REQUEST
* S2io_Command SANA2CMD_DELMULTICASTADDRESS
* S2io_SrcAddr Multicast address to disable.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Since multicast addresses are not "bound" to a particular
* packet type, each enabled multicast address has an "enabled"
* count associated with it.
*
* SEE ALSO
* sana2.device/SANA2CMD_ADDMULTICASTADDRESS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_MULTICAST ******************************
*
* NAME
* Multicast -- Multicast a packet on network.
*
* FUNCTION
* This command works the same as CMD_WRITE except that it also
* performs whatever special processing of the packet is required
* to do a multicast send. The actual multicast mechanism is
* neccessarily network/interface/device specific.
*
* IO REQUEST
* S2io_Command SANA2CMD_MULTICAST
* S2io_Flags Supported flags are:
* SANA2IOB_RAW
* SANA2IOB_QUICK
* S2io_PacketType Pointer to type of packet to send.
* S2io_DstAddr Destination interface address for this packet.
* S2io_Body NetBuff with packet data.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* This command can fail for many reasons and
* is not supported by all networks and/or
* network interfaces.
* S2io_WireError More specific error number.
*
* NOTES
* The address supplied in S2io_DstAddr will be sanity checked
* (if possible) by the driver. If the supplied address fails
* this sanity check, the multicast request will fail
* immediately.
*
* SEE ALSO
* sana2.device/CMD_WRITE,
* sana2.device/SANA2CMD_BROADCAST
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_BROADCAST ******************************
*
* NAME
* Broadcast -- Broadcast a packet on network.
*
* FUNCTION
* This command works the same as CMD_WRITE except that it also
* performs whatever special processing of the packet is required
* to do a broadcast send. The actual broadcast mechanism is
* neccessarily network/interface/device specific.
*
* IO REQUEST
* S2io_Command SANA2CMD_BROADCAST
* S2io_Flags Supported flags are:
* SANA2IOB_RAW
* SANA2IOB_QUICK
* S2io_PacketType Pointer to type of packet to send.
* S2io_Body NetBuff with packet data.
*
* RESULTS
* S2io_DstAddr The contents of this field are to be
* considered trash upon return of the IOReq.
* S2io_Error Zero if successful; non-zero otherwise.
* This command can fail for many reasons and
* is not supported by all networks and/or
* network interfaces.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
* sana2.device/CMD_WRITE,
* sana2.device/SANA2CMD_MULTICAST
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_TRACKTYPE ******************************
*
* NAME
* TrackType -- Accumulate statistics about a packet type.
*
* FUNCTION
* This command causes the device driver to accumulate statistics
* about a particular packet type. Packet type statistics, for
* the particular packet type, are zeroed by this command.
*
* IO REQUEST
* S2io_Command SANA2CMD_TRACKTYPE
* S2io_PacketType Pointer to the packet type of interest.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
* sana2.device/SANA2CMD_UNTRACKTYPE,
* sana2.device/SANA2CMD_GETTYPESTATS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_UNTRACKTYPE ****************************
*
* NAME
* UntrackType -- End statistics about a packet type.
*
* FUNCTION
* This command causes the device driver to stop accumulating
* statistics about a particular packet type.
*
* IO REQUEST
* S2io_Command SANA2CMD_UNTRACKTYPE
* S2io_PacketType Pointer to the packet type of interest.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
* sana2.device/SANA2CMD_TRACKTYPE,
* sana2.device/SANA2CMD_GETTYPESTATS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_GETTYPESTATS ***************************
*
* NAME
* GetTypeStats -- Get accumulated type specific statistics.
*
* FUNCTION
* This command causes the device driver to retrieve various
* packet type specific runtime statistics for this network
* interface. The format of the data returned is as follows:
*
* struct Sana2TypeStatData
* {
* LONG PacketsSent;
* LONG PacketsReceived;
* LONG BytesSent;
* LONG BytesReceived;
* LONG PacketsDropped;
* };
*
* IO REQUEST
* S2io_Command SANA2CMD_GETTYPESTATS
* S2io_PacketType Pointer to the packet type of interest.
* S2io_StatData Pointer to TypeStatData structure to fill in.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Statistics for a particular packet type are only available
* while that packet type is being ``tracked''.
*
* SEE ALSO
* sana2.device/SANA2CMD_TRACKTYPE,
* sana2.device/SANA2CMD_UNTRACKTYPE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_GETSPECIALSTATS ************************
*
* NAME
* GetSpecialStats -- Get network type specific statistics.
*
* FUNCTION
* This function returns statistics which are specific to the
* type of network medium this driver controls. For example, this
* command could return statistics common to all Ethernets which
* are not common to all network mediums in general.
*
* The supplied Sana2SpecialStatData structure is given below:
*
* struct Sana2SpecialStatData
* {
* ULONG RecordCountMax;
* ULONG RecordCountSupplied;
* struct Sana2StatRecord[RecordCountMax];
* };
*
* The format of the data returned is:
*
* struct Sana2StatRecord
* {
* ULONG Type; /* commodore registered */
* LONG Count; /* the stat itself */
* char *String; /* null terminated */
* };
*
* The RecordCountMax field specifies the number of records that
* the caller is prepared to accomodate.
*
* RecordCountSupplied is the number of record actually supplied
* which will not exceed RecordCountMax.
*
* IO REQUEST
* S2io_Command SANA2CMD_GETSPECIALSTATS
* S2io_StatData Pointer to a Sana2SpecialStatData structure to
* fill. RecordCountMax must be initialized.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Commodore shall maintain registered statistic Types.
*
* SEE ALSO
* sana2.device/SANA2CMD_GETGLOBALSTATS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_GETGLOBALSTATS *************************
*
* NAME
* GetGlobalStats -- Get interface accumulated statistics.
*
* FUNCTION
* This command causes the device driver to retrieve various
* global runtime statistics for this network interface. The
* format of the data returned is as follows:
*
* struct Sana2DeviceStats
* {
* LONG packets_received;
* LONG packets_sent;
* LONG framming_errors;
* LONG bad_data;
* LONG bytes_received;
* LONG bytes_sent;
* LONG hard_misses;
* LONG soft_misses;
* LONG unknown_types_received;
* LONG fifo_overruns;
* LONG fifo_underruns;
* LONG reconfigurations;
* timeval last_start;
* };
*
* IO REQUEST
* S2io_Command SANA2CMD_GETGLOBALSTATS
* S2io_StatData Pointer to Sana2DeviceStats structure to fill.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
*
* SEE ALSO
* sana2.device/SANA2CMD_GETSPECIALSTATS
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_ONEVENT ********************************
*
* NAME
* OnEvent -- Return when specified event occures.
*
* FUNCTION
* This command returns when a particular event condition has
* occured on the network or this network interface.
*
* IO REQUEST
* S2io_Command SANA2CMD_ONEVENT
* S2io_Flags Supported flags are:
* SANA2IOB_QUICK
* S2io_WireError Event number to wait for.
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError Event number that occured.
*
* NOTES
* If this device driver does not understand the specified event
* condition then the command returns immediately with S2io_Error
* non-zero. A successful return will have S2io_Error set to zero
* S2io_WireError set to the event number.
*
* All pending requests for a particular event will be returned
* when that event occurs.
*
* All event types that cover a particular condition are returned
* when that condition occures. For instance, if an error is
* returned by NetBuff.library during receive processing, events
* of types S2EVENT_ERROR, S2EVENT_RX and S2EVENT_NETBUFF would
* be returned if pending.
*
* SEE ALSO
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_ONLINE *********************************
*
* NAME
* Online -- Put a network interface back in service.
*
* FUNCTION
* This command places an offline network interface back into
* service.
*
* IO REQUEST
* S2io_Command SANA2CMD_ONLINE
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* This command is responsible for putting the network interface
* hardware back into a known state and resets the unit global
* and special statistics.
*
* SEE ALSO
* sana2.device/SANA2CMD_OFFLINE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
******* sana2.device/SANA2CMD_OFFLINE ********************************
*
* NAME
* Offline -- Remove interface from service.
*
* FUNCTION
* This command removes a network interface from service.
*
* IO REQUEST
* S2io_Command SANA2CMD_OFFLINE
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
* S2io_WireError More specific error number.
*
* NOTES
* Aborts all pending reads and writes with S2io_Error set to
* SANA2ERROR_OUTOFSERVICE.
*
* While the interface is offline, all read, writes and any other
* command that touches interface hardware will be rejected with
* S2io_Error set to SANA2ERROR_OUTOFSERVICE.
*
* This command is intended to permit a network interface to be
* tested on an otherwise live system.
*
* SEE ALSO
* sana2.device/SANA2CMD_ONLINE
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*****i* sana2.device/CMD_START ***************************************
*
* NAME
* Start -- Restart device operation.
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_ONLINE
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
* sana2.device/CMD_STOP
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*
*****i* sana2.device/CMD_STOP ****************************************
*
* NAME
* Stop -- Pause device operation.
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_OFFLINE
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
* sana2.device/CMD_START
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*
*****i* sana2.device/CMD_CLEAR ***************************************
*
* NAME
* Clear -- Clear internal network interface read buffers.
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_CLEAR
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
* sana2.device/UPDATE,
* sana2.device/CLEAR
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*
*****i* sana2.device/CMD_FLUSH ***************************************
*
* NAME
* Flush -- Clear internal network interface write buffers.
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_FLUSH
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
* sana2.device/AbortIO(),
* sana2.device/CMD_UPDATE,
* sana2.device/CMD_CLEAR
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*
*****i* sana2.device/CMD_INVALID *************************************
*
* NAME
* Invalid -- Return with error IOERR_NOCMD.
*
* FUNCTION
* This command causes device driver to reply with an error
* IOERR_NOCMD as defined in exec/errors.h indicating the command
* is not supported.
*
* IO REQUEST
* S2io_Command CMD_INVALID
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
*
* BUGS
* Not known to be useful at this time.
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
*****i* sana2.device/CMD_RESET ***************************************
*
* NAME
* Reset -- Reset the network interface to initialized state.
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_RESET
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*
*****i* sana2.device/CMD_UPDATE **************************************
*
* NAME
* Update -- Force packets out to device
*
* FUNCTION
* Does not apply to this class of device.
*
* IO REQUEST
* S2io_Command CMD_UPDATE
*
* RESULTS
* S2io_Error Zero if successful; non-zero otherwise.
*
* NOTES
*
* SEE ALSO
* sana2.device/CMD_CLEAR,
* sana2.device/CMD_FLUSH
*
* BUGS
*
**********************************************************************
*
* IMPLEMENTATION NOTES
*
* Does not apply to this class of device.
*