... Ethernet Device Handlers
The device handlers provide support for the following
hardware controllers:
1. DEQNA/DELQA (EQ and NQ Drivers)
2. DEUNA/DELUA (EU and NU Drivers)
3. DECNA (NC Driver)
The Ethernet handlers provide support for one controller and
a maximum of 8 units numbered 0 through 7. These unit numbers
are used as a logical connection between a user program and an
address/protocol pair to be recognized by the Ethernet hardware.
The NC/NQ/NU device handlers are the DEC handlers modified to
include special functions 206 (enable/disable frame bufferring),
207 (get physical address) and 210 (get handler status block).
These handlers support only RT11XM V5.6 (and later), NU is coded
to use the UB.SYS pseudo handler for UNIBUS systems with greater
than 256K bytes. The NC/NQ/NU handlers perform all interrupt
processing at IRQ level (FORK level is never entered), and do
not internally support device timeout.
The EQ/EU device handlers are logically equivalent to the
NQ/NU device handlers but were designed with special functions
206 (enable/disable frame bufferring), 207 (get physical ad-
dress), 210 (get handler status block), and 211 (abort job i/o,
for SJ monitors only). These handlers may be conditionally as-
sembled to support the RT11 SJ, SB, FB, and XM monitors (ver-
sions 5.3 and later) not supported by the NQ/NU device handlers.
Also the EQ and EU handlers may be conditionally assembled for
the TSX-Plus operating system. The 22-bit EU handler requires a
change in the TSX sysgen file TSGEN.MAC to allocate 4 UMR regis-
ters to EU handler.
... Supported Systems
Summary of prebuilt EQ/EU/NC/NQ/NU
device drivers and supported systems:
RT-11 VERSION [5.3] [5.4] [5.5] [5.6 ...] TSX
----- ----- ----- --------- ---
eqsjms.sys SJ/FB SJ/FB SJ/FB - -
eusjms.sys SJ/FB SJ/FB SJ/FB - -
eqsjps.sys SJ/FB SJ/FB SJ/FB - -
eusjps.sys SJ/FB SJ/FB SJ/FB - -
eqsbms.sys - - - SB/FB -
eusbms.sys - - - SB/FB -
eqsbps.sys - - - SB/FB -
eusbps.sys - - - SB/FB -
eq18xm.sys XM XM XM XB/XM/ZB/ZM -
eq22xm.sys XM XM XM XB/XM/ZB/ZM -
eu18xm.sys XM XM XM XB/XM/ZB/ZM -
ncxv56.sys - ? ? XB/XM/ZB/ZM -
nqxv56.sys - ? ? XB/XM/ZB/ZM -
nuxv56.sys - ? ? XB/XM/ZB/ZM -
eq18.v62 - - - - <= V6.2
eq22.v62 - - - - <= V6.2
eu18.v62 - - - - <= V6.2
eu22.v62 - - - - <= V6.2
eq18.tsx - - - - >= V6.4
eq22.tsx - - - - >= V6.4
eu18.tsx - - - - >= V6.4
eu22.tsx - - - - >= V6.4
____ms.sys Drivers are for LSI/11 processors not having
a processor status word (PSW == @#177776).
____ps.sys Drivers are for all processors with a
processor status word (PSW == @#177776).
__sj__.sys Drivers contain special function 211 (abort
job i/o) for RT11SJ monitors.
Go to Ethernet Driver Index
... Device Driver Features
Summary of prebuilt EQ/EU/NC/NQ/NU
device driver features:
SPFUNS DEVICE
206 207 210 211 EIS PSW UMR FORK TIMEOUT
--- --- --- --- --- --- --- ---- -------
eqsjms.sys X - - X - - - X X
eusjms.sys X - - X - - - X X
eqsjps.sys X - - X - X - X X
eusjps.sys X - - X - X - X X
eqsbms.sys X - - - - - - X X
eusbms.sys X - - - - - - X X
eqsbps.sys X - - - - X - X X
eusbps.sys X - - - - X - X X
eq18xm.sys X X X - X X - X X
eq22xm.sys X X X - X X - X X
eu18xm.sys X X X - X X - X X
ncxv56.sys X X X - X X - - -
nqxv56.sys X X X - X X - - -
nuxv56.sys X X X - X X X - -
eq18.v62 X X X - X X - X X
eq22.v62 X X X - X X - X X
eu18.v62 X X X - X X - X X
eu22.v62 X X X - X X X X X
eq18.tsx X X X - X X - X X
eq22.tsx X X X - X X - X X
eu18.tsx X X X - X X - X X
eu22.tsx X X X - X X X X X
____ms.sys Drivers are for LSI/11 processors not having
a processor status word (PSW == @#177776).
____ps.sys Drivers are for all processors with a
processor status word (PSW == @#177776).
__sj__.sys Drivers contain special function 211 (abort
job i/o) for RT11SJ monitors.
Go to Ethernet Driver Index
... Programming
Programs that call the Ethernet handler must follow a certain
order. Write such programs with the following elements in the
order indicated.
1. Use the .LOOKUP programmed request to open a channel to
the device unit.
2. Allocate the unit using SPFUN 200.
3. Perform the Ethernet operation(s).
4. Deallocate the unit using SPFUN 200.
5. Use the .CLOSE programmed request to close the channel
to the specified device unit.
NOTE
Special functions 207 (get physical address), 210 (get
handler status block), and 211 (abort job i/o) do not
require device allocation.
Go to Ethernet Driver Index
... Use of Special FunctionsThe EQ/EU Ethernet handlers operate the Ethernet controllers using the .SPFUN programmed request with the following functions:
. . . . .
Allocate Unit
. . . . .
Deallocate Unit
. . . . .
Enable Promiscuous Mode
. . . . .
Disable Promiscuous Mode
. . . . .
Enable Protocol type
. . . . .
Disable protocol type
. . . . .
Enable multicast address
. . . . .
Disable multicast address
. . . . .
Transmit Ethernet frame
. . . . .
Receive Ethernet frame
. . . . .
Enable frame bufferring
. . . . .
Disable frame bufferring
. . . . .
Get physical address
. . . . .
Get handler status block
. . . . .
Abort Job I/O
. . . . .
Return to TCP/IP Documentation IndexSuccessful completion of a .SPFUN request clears the carry bit. Completion with an error sets the carry bit, and the status word in the buffer contains an error code. The EQ/EU handlers are functionally identical to the RT-11 NQ/NU Ethernet handlers with the addition of receive/transmit device timeout support and special functions 206, 207 and 210.Go to Ethernet Driver Index
... Allocate Unit (.SPFUN 200)
The allocate unit special function allocates a unit for a
job's exclusive use.
The following is the form of the special function allocate
unit (.SPFUN 200):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 200
buf is the address of a 4-word buffer
containing the status word and space
for the station's physical address.
The buffer contents are returned by
the allocate unit special function.
The high byte of the status word contains a 0.
Allocate unit returns one of the following
octal status codes in the low byte of the
status word:
0 Success
2 Controller error while attempting to
initialize the network interface
3 No resources (unit in use)
11 Reserved
wcnt is 0
blkn is 1
crtn is the entry point of a completion routine
=> Section Index
... Deallocate Unit (.SPFUN 200)
The deallocate unit special function deallocates a unit so it
can be used by another job.
The following is the form of the special function deallocate
unit (.SPFUN 200):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 200
buf is the address of a 1-word buffer
containing the status word.
The high byte of the status word contains a 0.
Deallocate unit returns one of the following
octal status codes in the low byte of the
status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
11 Unit still active
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Enable Promiscuous Mode (.SPFUN 201)
The enable promiscuous mode special function enables the
Ethernet hardware to receive all network traffic regardless of
address or protocol. Any read request to the handler will re-
turn the first available packet received by the controller in-
terface.
The following is the form of the special function enable
promiscuous mode (.SPFUN 201):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 201
buf is the address of a 1-word buffer
containing the status word.
The high byte of the status word contains a 0.
Enable promiscuous mode returns one of the
following octal status codes in the low byte
of the status word:
0 Success
6 address/protocol active
wcnt is 0
blkn is 1
crtn is the entry point of a completion routine
=> Section Index
... Disable Promiscuous Mode (.SPFUN 201)
The disable promiscuous mode special function enables the ad-
dress/protocol filtering provided by the Ethernet hardware and
enables the specified protocol.
The following is the form of the special function disable
promiscuous mode (which performs an enable protocol type)
(.SPFUN 201):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 201
buf is the address of a 2-word buffer that
contains the status word, followed by
the 1-word protocol type that is to be
enabled when the promiscuous mode is
disabled.
The high byte of the status word contains a 0.
The disable promiscuous mode returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
3 Reserved
6 Reserved
10 Protocol type in use
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Enable Protocol Type (.SPFUN 202)
The enable protocol type special function adds a protocol
type to those to be recognized by the Ethernet controller. Only
one protocol type can be specified for each unit. At least one
protocol type must be enabled to receive Ethernet frames.
The following is the form of the special function enable pro-
tocol type (.SPFUN 202):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 202
buf is the address of a 2-word buffer
that contains the status word followed
by the protocol type word.
The high byte of the status word contains a 0.
Enable protocol type returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was
not opened by the job issuing the
request
2 Controller error while attempting to
initialize the network interface
3 No resources (unit's protocol table full)
6 Reserved
10 Protocol type in use
The protocol type is specified by the user
wcnt is 0
blkn is 1
crtn is the entry point of a completion routine
=> Section Index
... Disable Protocol Type (.SPFUN 202)
The disable protocol type special function removes the pro-
tocol type from the list of those recognized by the Ethernet
controller.
The following is the form of the special function disable
protocol type (.SPFUN 202):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 202
buf is the address of a 2-word buffer
that contains the status word followed
by the protocol type word.
The high byte of the status word contains a 0.
Disable protocol type returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was
not opened by the job issuing the
request
2 Controller error while attempting to
initialize the network interface
If the disabled protocol type is not the
same as the enabled protocol type for this
unit then 'success' is returned.
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Enable Multicast Address (.SPFUN 203)
The enable multicast address special function adds the multi-
cast address to those recognized by the Ethernet controller.
Ypu need not specify the unit's physical or broadcast address.
Only one multicast address is allowed per handler unit.
The following is the form of the special function enable mul-
ticast address (.SPFUN 203):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 203
buf is the address of a 4-word buffer
that contains the status word, followed
by the 3-word multicast address. The
low order bit of the first address
word should be a 1.
The high byte of the status word contains a 0.
Enable multicast address returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
3 No resources (unit's address table is full,
or hardware address table full)
wcnt is 0
blkn is 1
crtn is the entry point of a completion routine
=> Section Index
... Disable Multicast Address (.SPFUN 203)
The disable multicast address special function removes the
multicast address from those to be recognized by the Ethernet
controller.
The following is the form of the special function disable
multicast address (.SPFUN 203):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 203
buf is the address of a 4-word buffer
that contains the status word, followed
by the 3-word multicast address. The
low order bit of the first address
word should be a 1.
The high byte of the status word contains a 0.
Disable multicast address returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
If the disabled multicast address is not the
same as the enabled multicast address for this
unit then 'success' is returned.
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Transmit Ethernet Frame (.SPFUN 204)
The special function transmit Ethernet frame transmits the
Ethernet frame pointed to in the buf argument. If the source
field of the frame is not zero, it is kept and used. If the
source field of the frame is zero, the controllers physical ad-
dress is inserted in the source field before transmission.
The following is the form of the special function transmit
Ethernet frame (.SPFUN 204):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 204
buf is the address of a variable size buffer
containing the status word, followed by
the Ethernet packet to be transmitted.
The first word following the status word
is reserved. Next is the 3-word destination
address field followed by the 3-word
source address field. The next word is the
packet protocol type. Following this is the
variable length packet containing from 23 to
750 words.
The transmit Ethernet frame returns one of the
following octal status codes in the low byte
of the status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
13 Transmit failed
When status code 13 is returned in the low byte
of the status word, transmit Ethernet frame
returns one of the following octal status codes
in the high byte of the status word:
1 Invalid frame length
2 Excessive collisions
3 Carrier check failed
wcnt is determined by the variable size of the user
buffer (including the status word and reserved
word). The packet size (including the status
word and reserved word) can vary between 32
and 759 words.
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Receive Ethernet Frame (.SPFUN 205)
The receive Ethernet frame special function returns the next
Ethernet packet with the desired unit address and protocol type
to the buffer. The function does not return Ethernet frames
that are received with errors.
The following is the form of the special function receive
Ethernet frame (.SPFUN 205):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 205
buf is the address of a variable size buffer
containing the status word, a word
containing the frame size, and followed by
upto 757 words to receive the Ethernet
frame. The buffer contents are returned
by the receive Ethernet frame function.
The high byte of the status word contains a 0.
The receive Ethernet frame special function
returns one of the following octal status
codes in the low byte of the status word:
0 Success
1 Unknown unit. The specified unit was not
opened by the job issueing the request.
2 Controller error while attempting to
initialize the network interface
wcnt is the size of the user buffer including
the status and frame size words
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Enable Frame Queueing (.SPFUN 206)
The Enable frame queueing special function allows the EQ/EU
handler to internally queue received packets that match any
enabled address/protocol even though a receive request has not
been issued for that address/protocol or a previous packet has
not been processed. The EQ handler normally allocates space for
internally queueing upto 20 packets (this may be changed by mod-
ifying 'rbcnt' in EQ.MAC and rebuilding the EQ handler). The
22-bit EU handler normally allocates space for internally queue-
ing 10 packets and the 18-bit EU handler allocates space for 2
packets (this may be changed by modifying 'rbcnt' in EU.MAC and
rebuilding the EU handlers).
The following is the form of the special function enable
frame queueing (.SPFUN 206):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 206
buf is the address of a 1-word buffer
for the returned status word which
is always 0
wcnt is 0
blkn is 1
crtn is the entry point of a completion routine
=> Section Index
... Disable Frame Queueing (.SPFUN 206)
The disable frame queueing special function disables the in-
ternal queueing of packets. This function may only be issued if
all address/protocol pairs have been disabled.
The following is the form of the special function disable
frame queueing (.SPFUN 206):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 206
buf is the address of a 1-word buffer
containing the status word.
The high byte of the status word contains a 0.
Disable frame queueing returns one of the
following octal status codes in the low byte
of the status word:
0 Success
6 address/protocol active
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Get Physical Address (.SPFUN 207)
The get Ethernet address special function returns the physi-
cal address of the Ethernet controller card.
The following is the form of the special function get
Ethernet address (.SPFUN 207):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 207
buf is the address of a 4-word buffer
in which the status word, which is
always 0, and the six byte physical
Ethernet address are returned.
wcnt is 0
blkn is 0
crtn is the entry point of a completion routine
=> Section Index
... Get Handler Status Block (.SPFUN 210)
The get handler status block special function returns the
EQ/EU handler's internal parameter block. The information con-
tained in the parameter block includes the number of packets re-
ceived and transmitted for each EQ/EU unit as well as timeout
information.
The following is the form of the special function get
Ethernet status block (.SPFUN 210):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 210
buf is the address of a buffer into which
wcnt words are written from the
EQ/EU handlers status block.
wcnt is the number of words to return
to the buffer. The status word
must be included in the word count.
blkn is 0
crtn is the entry point of a completion routine
The complete list of parameters in the status block may be found
in the EQ/EU Ethernet handler files EQ.MAC, EU.MAC, and EI.MAC.
The first word is always a status word of value 0, the following
4-byte (long integer) parameters are:
eiipkt total receiver interrupts
eiopkt total transmitter interrupts
eirtmo total receive timeouts
eixtmo total transmit timeouts
eirun[8] received packets for each unit
eixun[8] transmitted packets for each unit
These are the only parameters used by any program in the
'TCP/IP Package for TSX-Plus' or 'TCP/IP Package for RT-11'.
=> Section Index
... Abort Job I/O (.SPFUN 211)
The abort job i/o special function is conditionally assembled
into drivers for the RT11SJ monitors. The SJ monitor never
calls the abort entry point in the device handler (either from a
.ABTIO request or at job termination) this means that the inter-
nally queued i/o requests will never complete and the monitor
will lock waiting for the i/o to complete. This special func-
tion calls the abort entry point clearing all internally queued
elements associated with the current job.
The following is the form of the special function Abort Job
I/O (.SPFUN 211):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 211
buf is not used
wcnt is not used
blkn is not used
crtn is the entry point of a completion routine
=> Section Index
... Handlers for TSX-Plus V6.0 through V6.2
The EQ and EU Ethernet handlers configured for TSX-Plus ver-
sions 6.0 through 6.2 have these additional .SPFUN programmed
requests:
Function Code
-------- ----
Get PLAS Allocation Size 300
Initialize Handler 301
Successful completion of a .SPFUN request clears the carry bit.
Completion with an error sets the carry bit without any error
code.
... Get PLAS Allocation Size (.SPFUN 300)
The following is the form of the special function Get PLAS
Alocation Size (.SPFUN 300):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 300
buf handler returns the requested allocation
size, in 32. word increments, in the
first word of the buffer
wcnt is not used
blkn is not used
crtn is the entry point of a completion routine
... Initialize Handler (.SPFUN 301)
The following is the form of the special function Initialize
Handler (.SPFUN 301):
Macro Call:
.SPFUN area,chan,func,buf,wcnt,blkn,[crtn]
where:
area is address of 6-word EMT argument block
chan is a channel number in the range
0 to 376 (octal)
func is 301
buf the address of buf is the PLAS base address
wcnt is not used
blkn is not used
crtn is the entry point of a completion routine
Attempting to reinitialize the handler or to initialize the
handler with a PLAS base address of 0 will be reported as an er-
ror by setting the carry bit.
... ENPLAS.SAV - Allocating the PLAS Region
The program ENPLAS.SAV is a support program which creates the
PLAS buffer required by the TSX-Plus V6.0 through V6.2 EQ and EU
device handlers. The program uses .spfun 300 to get the buffer
size, creates the PLAS region, uses .spfun 301 to handoff the
PLAS region's Base Address to the device handler and to initial-
ize the handler. This program must run before the EQ or EU
device handler can be used.
The device EN0: must be assigned before running ENPLAS.SAV.
ASSIGN EU0: EN0: or
ASSIGN EQ0: EN0:
R ENPLAS.SAV
The device handler requires only a single initialization to
be used by the TCPIP.SAV server or the small system client pro-
grams.
Go to Ethernet Driver Index