CI_Port_Architecture_Rev_5
From: EAGLE1::CPARCH "CI PORT ARCHITECTURE 09-Nov-1987 1253" 9-NOV-1987 12:59
To: CLOUD::SHIRRON,CPARCH
CC:
Subj: CI Port Architecture, rev. 5.0, pls do not forward or copy
VAX CI Port Architecture Rev. 5.0--DEC COMPANY CONFIDENTIAL Page 1
Date: August 17 1987
File: CIPORT_CMS.MEM
Author: W. Strecker
Abstract:
This document describes the VAX software interface to the
Computer Interconnect (CI).
Revision History:
Rev # Description Authors Date
1 Draft Strecker, Thompson 3-Aug-79
2 Explicit port-to-port Strecker, Thompson 30-Jan-80
virtual circuits.
3 Two free queues, Strecker, Thompson 10-Jul-81
unsequenced messages
treated as datagrams.
4 Minor corrections, Strecker 28-Dec-81
appendix on packet
processing.
4.1 Spelling and other Dagg, Kong 27-Nov-86
minor errors.
5.0 ECOs from CI notes Dagg 17-Aug-87
file included.
See appendix on Change
History.
COPY NUMBER _________
For additional copies of this specification contact:
David Dagg, Systems Architecture Group, LTN2-2/H07, Engineering Net
Node: EAGLE1::DAGG.
VAX CI Port Architecture Rev. 5.0--DEC COMPANY CONFIDENTIAL Page 2
CONTENTS
CHAPTER 1 INTRODUCTION
1.1 SCOPE . . . . . . . . . . . . . . . . . . . . . . 1-1
1.2 NOTATIONAL CONVENTIONS . . . . . . . . . . . . . . 1-1
1.3 COMPUTER INTERCONNECT . . . . . . . . . . . . . . 1-1
1.4 PORT ARCHITECTURE COMPONENTS . . . . . . . . . . . 1-3
CHAPTER 2 PORT COMMUNICATION
2.1 PORT COMMUNICATION MODES . . . . . . . . . . . . . 2-1
2.2 CI ACKNOWLEDGEMENT . . . . . . . . . . . . . . . . 2-2
2.3 VIRTUAL CIRCUITS . . . . . . . . . . . . . . . . . 2-3
2.4 CI PATH SELECTION . . . . . . . . . . . . . . . . 2-5
2.5 CI PERFORMANCE MONITORING . . . . . . . . . . . . 2-6
CHAPTER 3 DATAGRAM, MESSAGE, AND DATA OPERATION
3.1 DATAGRAM OPERATION . . . . . . . . . . . . . . . . 3-1
3.2 MESSAGE OPERATION . . . . . . . . . . . . . . . . 3-2
3.3 DATA OPERATION . . . . . . . . . . . . . . . . . . 3-3
3.3.1 Buffer Descriptor Table . . . . . . . . . . . . 3-3
3.3.2 Data Transfers . . . . . . . . . . . . . . . . . 3-5
3.3.2.1 Sending Data . . . . . . . . . . . . . . . . . . 3-6
3.3.2.2 Requesting Data . . . . . . . . . . . . . . . . 3-7
CHAPTER 4 PORT STATE
4.1 UNINITIALIZED . . . . . . . . . . . . . . . . . . 4-1
4.2 UNINITIALIZED/MAINTENANCE . . . . . . . . . . . . 4-2
4.3 DISABLED . . . . . . . . . . . . . . . . . . . . . 4-3
4.4 DISABLED/MAINTENANCE . . . . . . . . . . . . . . . 4-4
4.5 ENABLED . . . . . . . . . . . . . . . . . . . . . 4-5
4.6 ENABLED/MAINTENANCE . . . . . . . . . . . . . . . 4-7
CHAPTER 5 LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION
5.1 CI LOOPBACK TESTING . . . . . . . . . . . . . . . 5-1
5.2 CONFIGURATION/MAINTENANCE INTERNAL COMMAND QUEUE . 5-2
5.3 CI CLUSTER CONFIGURATION . . . . . . . . . . . . . 5-2
5.4 MAINTENANCE OPERATION . . . . . . . . . . . . . . 5-3
5.4.1 Resetting . . . . . . . . . . . . . . . . . . . 5-4
5.4.2 Downline Loading . . . . . . . . . . . . . . . . 5-5
5.4.3 Upline Dumping . . . . . . . . . . . . . . . . . 5-6
5.4.4 Starting . . . . . . . . . . . . . . . . . . . . 5-7
VAX CI Port Architecture Rev. 5.0--DEC COMPANY CONFIDENTIAL Page 3
CHAPTER 6 PORT COMMAND/RESPONSE FORMATS
6.1 COMMANDS . . . . . . . . . . . . . . . . . . . . . 6-1
6.1.1 Reserved For Software Fields . . . . . . . . . . 6-3
6.1.2 Self-Directed Commands . . . . . . . . . . . . . 6-3
6.2 RESPONSES . . . . . . . . . . . . . . . . . . . . 6-4
6.3 RESPONSE STATUS FIELD FORMAT . . . . . . . . . . . 6-5
CHAPTER 7 PORT COMMANDS AND RESPONSES
7.1 DATAGRAM SENDING . . . . . . . . . . . . . . . . . 7-1
7.1.1 Send Datagram . . . . . . . . . . . . . . . . . 7-1
7.1.2 Datagram Sent . . . . . . . . . . . . . . . . . 7-3
7.1.3 Datagram Received . . . . . . . . . . . . . . . 7-5
7.2 MESSAGE SENDING . . . . . . . . . . . . . . . . . 7-7
7.2.1 Send Message . . . . . . . . . . . . . . . . . . 7-7
7.2.2 Message Sent . . . . . . . . . . . . . . . . . . 7-9
7.2.3 Message Received . . . . . . . . . . . . . . . 7-11
7.3 SENDING DATA . . . . . . . . . . . . . . . . . . 7-13
7.3.1 Send Data . . . . . . . . . . . . . . . . . . 7-13
7.3.2 Data Sent . . . . . . . . . . . . . . . . . . 7-15
7.3.3 Return Confirm . . . . . . . . . . . . . . . . 7-17
7.3.4 Confirm Returned . . . . . . . . . . . . . . . 7-19
7.3.5 Confirm Received . . . . . . . . . . . . . . . 7-21
7.4 REQUESTING DATA . . . . . . . . . . . . . . . . 7-22
7.4.1 Request Data . . . . . . . . . . . . . . . . . 7-22
7.4.2 Data Requested . . . . . . . . . . . . . . . 7-25
7.4.3 Return Data . . . . . . . . . . . . . . . . . 7-27
7.4.4 Data Returned . . . . . . . . . . . . . . . . 7-30
7.4.5 Data Received . . . . . . . . . . . . . . . . 7-32
7.5 TRANSLATION CACHE INVALIDATION . . . . . . . . . 7-34
7.5.1 Invalidate Translation Cache . . . . . . . . . 7-34
7.5.2 Translation Cache Invalidated . . . . . . . . 7-35
7.6 VIRTUAL CIRCUIT CONTROL . . . . . . . . . . . . 7-36
7.6.1 Set Circuit . . . . . . . . . . . . . . . . . 7-36
7.6.2 Circuit Set . . . . . . . . . . . . . . . . . 7-38
7.7 CI EVENT COUNTING . . . . . . . . . . . . . . . 7-40
7.7.1 Read Count . . . . . . . . . . . . . . . . . . 7-41
7.7.2 Count Read . . . . . . . . . . . . . . . . . . 7-43
7.8 LOOPBACK TESTING . . . . . . . . . . . . . . . . 7-45
7.8.1 Send Loopback . . . . . . . . . . . . . . . . 7-45
7.8.2 Loopback Sent . . . . . . . . . . . . . . . . 7-49
7.8.3 Loopback Received . . . . . . . . . . . . . . 7-51
7.9 CI CLUSTER CONFIGURATION . . . . . . . . . . . . 7-53
7.9.1 Request ID . . . . . . . . . . . . . . . . . . 7-53
7.9.2 ID Requested . . . . . . . . . . . . . . . . . 7-55
7.9.3 ID Received . . . . . . . . . . . . . . . . . 7-57
7.10 RESETTING SYSTEMS . . . . . . . . . . . . . . . 7-60
7.10.1 Send Reset . . . . . . . . . . . . . . . . . . 7-61
7.10.2 Reset Sent . . . . . . . . . . . . . . . . . . 7-63
7.11 SENDING MAINTENANCE DATA . . . . . . . . . . . . 7-65
7.11.1 Send Maintenance Data . . . . . . . . . . . . 7-65
7.11.2 Maintenance Data Sent . . . . . . . . . . . . 7-68
7.11.3 Maintenance Confirm Received . . . . . . . . . 7-70
VAX CI Port Architecture Rev. 5.0--DEC COMPANY CONFIDENTIAL Page 4
7.12 REQUESTING MAINTENANCE DATA . . . . . . . . . . 7-72
7.12.1 Request Maintenance Data . . . . . . . . . . . 7-72
7.12.2 Maintenance Data Requested . . . . . . . . . . 7-75
7.12.3 Maintenance Data Received . . . . . . . . . . 7-77
7.13 STARTING SYSTEMS . . . . . . . . . . . . . . . . 7-79
7.13.1 Send Start . . . . . . . . . . . . . . . . . . 7-79
7.13.2 Start Sent . . . . . . . . . . . . . . . . . . 7-81
7.14 UNRECOGNIZED COMMAND . . . . . . . . . . . . . . 7-83
7.15 UNRECOGNIZED PACKET . . . . . . . . . . . . . . 7-84
CHAPTER 8 PORT REGISTERS AND THE PORT QUEUE BLOCK
8.1 PORT QUEUE BLOCK . . . . . . . . . . . . . . . . . 8-1
8.1.1 Port Maintenance And Sanity Timer . . . . . . . 8-5
8.2 PORT REGISTERS . . . . . . . . . . . . . . . . . . 8-7
8.2.1 Port Queue Block Base Register (PQBBR) . . . . . 8-7
8.2.2 Port Status Register (PSR) . . . . . . . . . . . 8-7
8.2.3 Port Error Status Register(PESR) . . . . . . . . 8-9
8.2.4 Port Failing Address Register (PFAR) . . . . . 8-10
8.2.5 Port Parameter Register (PPR) . . . . . . . . 8-11
8.2.6 Port Control Registers . . . . . . . . . . . . 8-12
8.2.6.1 Port Command Queue 0 Control Register (PCQ0CR) 8-12
8.2.6.2 Port Command Queue 1 Control Register (PCQ1CR) 8-12
8.2.6.3 Port Command Queue 2 Control Register (PCQ2CR) 8-12
8.2.6.4 Port Command Queue 3 Control Register (PCQ3CR) 8-12
8.2.6.5 Port Datagram Free Queue Control Register
(PDFQCR) . . . . . . . . . . . . . . . . . . . 8-13
8.2.6.6 Port Message Free Queue Control Register
(PMFQCR) . . . . . . . . . . . . . . . . . . . 8-13
8.2.6.7 Port Status Release Control Register (PSRCR) . 8-13
8.2.6.8 Port Enable Control Register (PECR) . . . . . 8-13
8.2.6.9 Port Disable Control Register (PDCR) . . . . . 8-13
8.2.6.10 Port Initialize Control Register (PICR) . . . 8-13
8.2.6.11 Port . . . . . . . . . . . . . . . . . . . . 8-13
8.2.6.12 Port . . . . . . . . . . . . . . . . . . . . 8-14
8.2.7 Control And Status Register (PMCSR) . . . . . 8-14
APPENDIX A QUEUE PROTOCOL
APPENDIX B MULTIPLE PORTS ON A SINGLE SYSTEM
APPENDIX C SUMMARY OF PORT COMMANDS AND RESPONSES
APPENDIX D PORT ERROR STATUS REGISTER CODES
APPENDIX E SUMMARY OF COMMAND/RESPONSE AND CI PACKET OPCODES
E.1 OPCODE FORMAT . . . . . . . . . . . . . . . . . . E-1
E.2 OPCODE SUMMARY . . . . . . . . . . . . . . . . . . E-3
VAX CI Port Architecture Rev. 5.0--DEC COMPANY CONFIDENTIAL Page 5
APPENDIX F REGISTER ADDRESSES
APPENDIX G IMPLEMENTATION FUNCTIONALITY
G.1 IMPLEMENTATION FUNCTIONALITY FIELD . . . . . . . . G-1
G.2 IMPLEMENTATION FUNCTIONALITY SUMMARY . . . . . . . G-2
G.2.1 IMPLEMENTATION FUNCTIONALITY FIELD EXTENSION. . G-4
APPENDIX H PACKET PROCESSING
APPENDIX I EXCEPTIONS.
APPENDIX J IMPLEMENTATION SPECIFIC DIAGNOSTIC INFORMATION FIELD
J.0.1 For The CIBCA-AA: . . . . . . . . . . . . . . . J-1
J.0.2 For The CI750, CI780, And CIBCI: . . . . . . . . J-3
APPENDIX K CHANGE HISTORY
CHAPTER 1
INTRODUCTION
1.1 SCOPE
This document is an implementation independent specification of
the architecture of a VAX CI Port. Implementation specific details
appear in the individual port (e.g. CI780, CI750) specifications.
The CI is described in the Computer Interconnect Specification
(Thompson, et al, 1-May-81). The CI Port is a component of the
implementation of a communications architecture. A primary use of the
CI Port is in implementing the Systems Communications Architecture
(Strecker, 9-Feb-81).
1.2 NOTATIONAL CONVENTIONS
The terminology and conventions follow Chapter 1 of the VAX
System Reference Manual. In particular, all numbers are decimal
unless otherwise specified.
1.3 COMPUTER INTERCONNECT
The VAX CI port architecture is the software interface to the
Computer Interconnect (CI). The CI is a multiaccess interconnect
typically used to build computer clusters consisting of CPUs and
intelligent mass storage, communication, and data acquisition systems.
The closely coupled CI clusters are contrasted with tightly coupled
(i.e. shared memory) systems built using a Memory Interconnect (MI)
or Backplane Interconnect (BI) and loosely coupled networks typically
built using the Network Interconnect (NI).
A detailed understanding of the CI is not needed to understand
the VAX CI Port architecture. However, knowledge of certain
characteristics is helpful:
1. 70 megabit/sec path bandwidth.
INTRODUCTION Page 1-2
2. Packet oriented transmission.
3. Low error rates.
4. Immediate acknowledgement of the successful receipt of a
packet.
5. Dual signal paths capable of concurrent operation.
6. Addressing for 224 ports (although the current CI electrical
environment is limited to 16 ports).
7. Contention arbitration at light loading and round-robin
arbitration at heavy loading.
The goal of the VAX CI Port architecture is to permit effective
use of the high performance of the CI. This is accomplished by a
design which:
1. Minimizes the amount of software processing and the number of
interrupts required to complete typical high level cluster
operations.
2. Minimizes the amount of intrasystem movement of data by
allowing separation of control/status information and data
and by allowing data to move directly to and from Per-process
virtual address space buffers.
Figure 1.1 shows a CI based cluster. A single CI has two paths.
However, ports may be either single or dual path. Port 3 and Port 4
are single path ports: single path ports must always be connected to
path 0 of the CI. Ports 1 and 2 are dual path Ports: they are
connected to both paths of the CI. Dual path ports are typically used
in high availability clusters so that the failure of a single CI path
does not isolate a system. The VAX CI Port architecture provides
support for dual path ports including a mode where both paths are used
automatically.
INTRODUCTION Page 1-3
CI PATH 1
<----+----------+---------------------------------------------->
| | CI PATH 0
<----------+---------+--------+------------------------+------->
| | | | | |
| | | | | |
+---------+ +--------+ +--------+ +---------+
| Port 1 | | Port 2 | | Port 3 | | Port 4 |
|---------| |--------| |--------| |---------|
| Host | | Host | | Host | | Host |
| System | | System | | System | | System |
+---------+ +--------+ +--------+ +---------+
Fig. 1.1 Single and Dual Path Ports
1.4 PORT ARCHITECTURE COMPONENTS
Figure 1.2 shows the structure of the port architecture. There
are ten major components:
1. Port - the hardware controller of the CI.
2. Port Driver - the software driver which controls the port.
3. Command Queues 0,1,2, and 3 (CMDQ0, CMDQ1, CMDQ2, and CMDQ3)
- queues used by the port driver to give commands to the
port. When a command reaches the head of the queue, it is
removed from the CMDQ and executed by the port. Higher
numbered CMDQs have priority over lower numbered CMDQs. The
priority has the following properties:
1. No command on a lower priority CMDQ will begin execution
while a higher priority CMDQ is non-empty.
2. If a command is inserted on a higher priority CMDQ while
there is a command in execution on a lower priority CMDQ
the latter command will:
1. Complete the transmission of the current and any
other internally buffered packets (including all
retries).
2. Suspend if additional packets need to be sent.
Command execution will resume after commands on all
higher priority command queues are executed.
INTRODUCTION Page 1-4
4. Response Queue (RSPQ) - a queue used by the port to give
responses to the port driver. A response is either (1) the
queue entry of an executed command or (2) a queue entry
resulting from receipt of a packet on the CI. When the port
inserts an entry on an empty RSPQ, it requests an interrupt.
5. Datagram Free Queue (DFREEQ) - a queue used by the port as
sink for command queue entries (not inserted on the RSPQ) and
as a source of queue entries for responses resulting from
received CI packets. If the port finds the DFREEQ empty it
discards the packet. The queue entries are for unsequenced
or datagram type commands and responses.
6. Message Free Queue (MFREEQ) - same as the DFREEQ except that
(1) the queue entries are for sequenced or message type
commands and responses and (2) the port requests an interrupt
if it finds the MFREEQ empty while attempting to remove an
entry.
7. Buffer Descriptor Table (BDT) - a table of named buffer
descriptors which are used by the port to directly move data
to and from CI packets and Per-Process virtual address space
buffers.
8. Port Queue Block (PQB) - a data structure used by the port
and port driver which contains the CMDQ and RSPQ headers; the
address of the DFREEQ and MFREEQ headers; the sizes of the
DFREEQ and MFREEQ entries; and the addresses and lengths of
virtual memory mapping data structures.
9. Reset Port Register (RST_PORT) - a register containing the
number of the port which last reset this port. RST_PORT is
used to control maintenance operations done by other ports on
this port.
10. Control/Status Registers - registers used by the port driver
to give initialization and control information to the port
and used by the port to give interrupt and error status to
the port driver.
CMDQ0, CMDQ1, CMDQ2, CMDQ3, RSPQ, DFREEQ, MFREEQ, and the BDT are
memory resident structures addressed in the System virtual address
space. The PQB is a memory resident structure addressed physically.
The Control/Status registers are in the I/O address space. The
RST_PORT register is internal to the port.
INTRODUCTION Page 1-5
---------+ +-----------
| |
| ------------------------------|
| | CMDQ0 |
| V ----------+ |
|---------------> | | | |------------->|
| ----------+ |
| . . . |
| ------------------------------|
P | | CMDQ3 |
| V ----------+ |
O |--------------> | | | |------------->|
| ----------+ |
R | |
| RSPQ |
T | +--------- |
|<-------------| | | | <---------------|
| +--------- |
| |
D | ----------------------------->| P
| | DFREEQ |
R | | +--------- | O
|<-------------| | | | <----------------|
I | +--------- ^ | R
| | |
V |-------------------------------- | T
| |
E | ----------------------------->|
| | MFREEQ |
R | | +--------- |
|<-------------| | | | <----------------|
| +--------- ^ |
| | |
|-------------------------------- |
| |
| |
| +--------------------------+ |
| | BUFFER | |
|----->| DESCRIPTOR |<----|
| | TABLE | |
| +--------------------------+ |
| +--------------------------+ |
| | PORT | |
|----->| QUEUE |<----|
| | BLOCK | |
| +--------------------------+ |
| +--------------------------+ |
| | CONTROL/ | | +--------+
|----->| STATUS |<----| |RST_PORT|
| | REGISTERS | | +--------+
| +--------------------------+ |
---------+ +---------
Fig. 1.2 Port Architecture Structure
CHAPTER 2
PORT COMMUNICATION
2.1 PORT COMMUNICATION MODES
Ports communicate with other ports using four basic communication
modes. These four modes are the product of two transfer modes:
unsequenced and sequenced, and two buffer modes: queued and named.
The two transfer modes have the following properties:
1. Unsequenced - in this mode there is no port-to-port state
maintained. As a consequence the CI retry algorithms (see
the CI Acknowledgement section) may cause duplicate packets
to be received and duplicate responses to be generated. The
DFREEQ is used as a source of queue entries to generate
responses resulting from receipt of unsequenced mode packets.
The DFREEQ discipline is to discard packets when the DFREEQ
is empty. Summarizing, unsequenced mode provides a datagram
type service: packet delivery with the possibility of
duplication and loss.
2. Sequenced - in this mode port-to-port state is maintained in
paired sequence numbers (see the Virtual Circuits section).
Each packet carries a sequence number enabling duplicate
packets to be recognized and discarded. The MFREEQ is used
as a source of queue entries to deliver responses resulting
from receipt of sequenced mode packets. The MFREEQ
discipline is to internally hold a packet when the MFREEQ is
empty and request an interrupt. The response will be
subsequently generated if an MFREEQ entry is provided. (Note
that there are severe performance implications associated
with routinely allowing the MFREEQ to become empty. The
Systems Communications Architecture uses higher level
protocols to insure MFREEQ does not become empty).
Summarizing, sequenced mode provides a virtual circuit type
service: sequential, duplicate free, loss free packet
delivery.
The two buffer modes have the following properties:
PORT COMMUNICATION Page 2-2
1. Queued - in this mode the buffer is the queue entry of a port
command or response.
2. Named - in this mode the buffer is located arbitrarily in a
Per-process virtual address space.
The product of the two transfer modes and two buffer modes result
in the following port communication modes:
1. Datagrams (and certain configuration, loopback, maintenance,
and maintenance data control operations) - unsequenced
transfer/queued buffers.
2. Messages (and certain data control operations) - sequenced
transfer/queued buffers.
3. Maintenance Data - unsequenced transfer/named buffers.
4. Data - sequenced transfer/named buffers.
Each of these modes is described in detail in subsequent
chapters.
2.2 CI ACKNOWLEDGEMENT
The CI provides immediate packet acknowledgement of the following
types:
1. Positive acknowledgement (ACK). This means that the
destination port has correctly received the packet, has
internally buffered it, and will subsequently process it.
2. Negative-acknowledgement (NAK). This means the destination
port has recognized the packet but has been unable to
internally buffer it. Upon getting NAK, the sending port
will retry sending the packet. If more than 128 total NAKS
are received the CI path fails with NAK status.
3. No response (NO_RSP). This means the destination port is
non-existent or not operating. A dual path port may appear
to be temporarily non-operative on a specific path because of
the inability to receive on both paths simultaneously (due to
shared hardware). Alternatively, the CI packet was corrupted
and no port recognized it. Packets may be corrupted due to
either collision or bus noise. Upon getting NO_RSP, the
sending port will retry sending the packet. If more than 64
consecutive NO_RSPs occur, the CI path fails with a NO_RSP
path status.
PORT COMMUNICATION Page 2-3
2.3 VIRTUAL CIRCUITS
The port implements port-to-port virtual circuits for sequenced
mode transfers. These circuits provide loss-free, duplicate-free
communication. Sequential communication is guaranteed for commands in
the same CMDQ. Sequentiality is not guaranteed between CMDQs with the
exception that if a command is inserted on a higher priority CMDQ
before another command is inserted on a lower priority CMDQ the
command on the higher priority CMDQ is executed first.
The state of the virtual circuits is stored in the Virtual
Circuit Descriptor Table. The VCDT contains one Virtual Circuit
Descriptor (VCD) per port in the cluster (including the local port).
The VCD consists of five fields: Circuit State (CST), Send Sequence
Number (NS), Receive Sequence Number (NR), DFREEQ Inhibit (DQI), and
Path Status (PSTS). (The latter two fields are not part of the
virtual circuit state and appear in the VCD for convenience).
The format of a VCD is:
1 1 1 1 1
5 4 3 2 0 8 0
+-+-+-+-+-+---+-----------------+
|C|N|N|D|M| P | M |
|S|R|S|Q|B| S | B |
|T| | |I|Z| T | Z |
| | | | | | S | |
+-+-+-+-+-+---+-----------------+
Where:
Bits Name Description
<15> CST Circuit State.
CST = 0 Closed.
CST = 1 Open.
When CST = 0 all sequenced
mode packets are discarded
and the use of the MFREEQ is
inhibited.
<14> NR Receiving Sequence Number.
<13> NS Sending Sequence Number.
<12> DQI DFREEQ inhibit. When set
all incoming packets which
would use DFREEQ entries are
discarded. Setting DQI in VCD
255 inhibits receiving packets
PORT COMMUNICATION Page 2-4
whose source field contains an
invalid port number. An invalid
port number > = 16 for a 16 port
cluster size and > = 224 for a
224 port cluster size. The
cluster size is indicated by
the CSZ field in the Port Para-
meter Register (PPR).
<11> MBZ.
<10:9> PSTS Path Status.
PSTS = 0 Both paths bad.
PSTS = 1 Path 0 good.
PSTS = 2 Path 1 good.
PSTS = 3 Both paths good.
<8:0> MBZ.
A virtual circuit is opened by clearing the sequence numbers and
setting CST to open in both port's corresponding VCDs. Note that if
ports X and Y are opening a virtual circuit Port X initializes VCD
and port Y initializes VCD. The method by which both ports
synchronize this initialization is part of a higher level virtual
circuit establishment protocol.
A packet to be sent on a circuit carries the NS value from the
sending port's VCD. When the packet is ACKed, the sending port's NS
value is complemented. If the command sending the packet fails, the
circuit is closed by the sending port clearing the CST bit.
Subsequent commands attempting to send on the same circuit fail with
virtual circuit closed status.
Once a packet is sent on a circuit, no other packet is sent on
that circuit until the first packet is ACKed.
Incoming packets on a circuit carry the NS value from the sending
port's VCD. This value is compared to the NR value of the receiving
port's VCD. If equal, the packet is accepted and NR complemented. If
not equal, the packet is discarded (as a duplicate due to a lost
acknowledgement).
If the circuit for an incoming packet is closed, the packet is
discarded. The sending side must detect this through a higher level
protocol. If any errors in packet processing occur a local response
indicating the error type is generated, and the circuit is immediately
closed. Subsequent incoming packets are discarded.
To read and modify a VCD, a Set Circuit (SETCKT) command is
inserted on a CMDQ. If the R-bit in the command is set, the value of
the VCD prior to modification by SETCKT is returned in a Circuit Set
(CKTSET) response inserted on the RSPQ.
PORT COMMUNICATION Page 2-5
2.4 CI PATH SELECTION
There are two modes of path selection for packet transmission by
dual path ports: select and automatic. In select mode, the path is
specified in the command. In automatic mode, the path is selected by
the port based on a internal path status table with entries for each
destination port.
The mode is specified by the value of the Path Select (PS) field
of the command. The values are as follows:
PS = 0 Automatic.
PS = 1 Select path 0.
PS = 2 Select path 1.
PS = 3 Reserved.
The path status table is part of the Virtual Circuit Descriptor
table (see section on Virtual Circuits) and consists of two bits per
port. There is one bit for each path which indicates "good" or "bad"
status of that path. Note that the path status table may indicate
that the same CI path is good for one destination port and bad for
another.
When a command specifies automatic mode, the path for each packet
of the command is individually selected from the paths marked good in
the path status table. If only one of the paths currently is marked
good, it is used. If both are marked good, one is selected at random
(with approximately equal probability). This provides statistical
load sharing of transmissions by dual path ports. In addition, it
ensures early detection of failures since both paths are constantly
used.
The path selected is used for all retries until a retry limit is
exceeded. At this point, if the transmission is unsuccessful, the
path status table is updated to indicate that path as bad. If the
other path is still good, it is tried.
When no good path is available, the command fails and a response
is generated indicating which path failures occurred (see the
Command/Response Format chapter). Under no circumstances does the
port attempt to send on a bad path in automatic mode.
In select mode, the table is ignored for transmission but is
updated based on transmission results. The status of a path may be
changed from bad to good or good to bad by the outcome of the
transmission.
The port initializes with the path status table indicating all
paths good.
Single path ports are always connected to path 0. The path
select bit for path 1 is ignored. The response status values are only
returned for path 0. Only one bit of the path status table, that for
path 0, is kept. In automatic mode, path 0 is used unless the path
status table bit indicates that the path is bad. In the latter case
PORT COMMUNICATION Page 2-6
the command fails. If the path 0 select bit is set in the command,
the table is ignored, but is updated based on transmission results.
Port generated commands (RETDAT and RETCNF) specify automatic
mode. Automatic mode should normally be used for port driver
generated commands. Select mode is used primarily for diagnostics.
Certain configuration and maintenance packets are processed
internally by the receiving port and result in the latter sending
packets back to the original sending port. These packet transmissions
ignore the path status table and always send the packet back on the
same path on which the original packet was received. (See the
Loopback, Configuration and Maintenance chapter).
2.5 CI PERFORMANCE MONITORING
To monitor port and CI performance the port has facilities for
counting certain events:
1. Number of ACK's
2. Number of NAK's
3. Number of NO_RSP's
4. Number of datagrams discarded
For a dual path port, the first three events are counted
separately for each path. To read the counters, clear the counters,
and select counting of these events for either a specified individual
destination port or for all destination ports combined a Read Count
(RDCNT) Command is inserted on a CMDQ. If the R-bit in the command is
set, the counter values are returned in the Count Read (CNTRD)
response inserted in the RSPQ.
CHAPTER 3
DATAGRAM, MESSAGE, AND DATA OPERATION
3.1 DATAGRAM OPERATION
A datagram is 0-4089 bytes of text contained within the queue
entry of a command or response. (Specific implementations may limit
the maximum size to less than 4089 bytes).
A datagram is sent by inserting a Send Datagram (SNDDG) command
on a CMDQ. When executed, SNDDG sends the datagram in a single CI
datagram (DG) packet. After execution, the SNDDG queue entry is
normally inserted on the DFREEQ, but is inserted on the RSPQ as a
Datagram Sent (DGSNT) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The Response-bit (R-bit) in the command is set.
Upon receipt of a datagram packet, the receiving port:
1. Removes an entry from the DFREEQ. (If DFREEQ is empty, the
packet is discarded).
2. Copies the datagram text from the packet into the queue entry
to generate a Datagram Received (DGREC) response.
3. Inserts the DGREC on the RSPQ.
Figure 3.1 illustrates datagram operation.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-2
SENDING PORT RECEIVING PORT
DG
SNDDG ------------------------->DGREC
(from CMDQ) (to RSPQ)
|
V
DGSNT(R-bit,fail)
(to RSPQ)
Fig. 3.1 Datagram Operation
3.2 MESSAGE OPERATION
A message is 0-4089 bytes of text contained within the queue
entry of a command or response. (Specific implementations may limit
the maximum size to less than 4089 bytes). Message communication is a
sequenced mode transfer which requires an open virtual circuit to the
receiving port.
A message is sent by inserting a Send Message (SNDMSG) command on
a CMDQ. When executed SNDMSG sends the message in a single CI message
(MSG) packet. After execution the SNDMSG queue entry is normally
inserted on the MFREEQ, but is inserted on the RSPQ as a Message Sent
(MSGSNT) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement. Command failure closes the virtual circuit.
2. A CI path fails (but the command succeeds).
3. The R-bit in the command is set.
Upon receipt of a message packet the receiving port:
1. Removes an entry from the MFREEQ. (If the MFREEQ is empty
the port holds the packet and requests an interrupt).
2. Copies the message text from the packet into the queue entry
to generate a message received (MSGREC) response.
3. Inserts the MSGREC on the RSPQ.
Figure 3.2 illustrates message operation.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-3
SENDING PORT RECEIVING PORT
MSG
SNDMSG ------------------------>MSGREC
(from CMDQ) (to RSPQ)
|
V
MSGSNT(R-bit,fail)
(to RSPQ)
Fig. 3.2 Message Operation
3.3 DATA OPERATION
3.3.1 Buffer Descriptor Table
Named buffers are defined by buffer descriptors in the BDT. A
buffer name is a 32-bit value which has the following format:
3 1
1 5 0
+-------------------+-------------------+
| KEY | INDEX |
+-------------------+-------------------+
The low order 16 bits are used as an octaword index into the BDT.
The high order 16 bits are a key which must match a corresponding key
field in the buffer descriptor. The buffer name key provides a
mechanism to reduce the probability of an incorrect access of a
buffer.
To open a buffer, the port driver fills in the appropriate fields
of the buffer descriptor and sets the Valid bit (V-bit). At this
point the buffer descriptor and the associated buffer mapping PTE's
are owned by the port. The result of changing any buffer descriptor
field (except the V-bit) and any buffer mapping PTE's is UNDEFINED.
To close a buffer the port driver clears the V-bit and insures
that the port does not have any internally cached address translations
for that buffer. This is done in one of two ways:
1. Explicitly - the port driver inserts an Invalidate
Translation Cache (INVTC) command on a CMDQ. After execution
of INVTC (as indicated by a Translation Cache Invalidated
(TCINV) response inserted on the RSPQ) all previously cached
address translations are invalidated.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-4
2. Implicitly - the sending or receiving of a CI data packet
with the last packet flag set clears any cached address
translations for the buffer name referenced by the packet
(after the buffer is accessed).
The format of a buffer descriptor is:
3 1 1 1 1 1
1 5 4 3 2 1 8 0
+------------------+-+---+-+-----+------+
| KEY |V|AM |A| MBZ | BUF_ | :A
| | | |C| |OFFSET|
+------------------+-+---+-+-----+------+
| BUF_LEN | :A + 4
+---------------------------------------+
| PT_ADDRESS | :A + 8
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 12
+---------------------------------------+
The fields in the buffer descriptor are:
Longword Bits Name Description
A <31:16> KEY Buffer key. Any named
reference to a buffer
must supply the
correct key.
A <15> V Valid bit. If V is
set, the buffer is
opened and the
remaining fields must
contain valid
information.
A <14:13> AM Access Mode. Specifies the
mode to be checked against
the PROT field of the PTE
for access control:
AM = 0 Kernel.
AM = 1 Exec.
AM = 2 Supervisor.
AM = 3 User.
A <12> AC Access Control. If set,
access mode is checked;
if clear, no access control
applied.
A <11:9> MBZ.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-5
A <8:0> BUF_OFFSET The starting byte of
the buffer relative to
byte 0 of the page
defined by the PTE
whose address is given
by the PT_ADDRESS
field in the buffer
descriptor. Inter-
preted as an unsigned
integer.
A + 4 <31:0> BUF_LEN The length of the
buffer in bytes.
Interpreted as an
unsigned integer.
A + 8 <31:0> PT_ADDRESS System virtual
address of the base
of a vector of PTEs
mapping the buffer.
Global Page Table
entries are inter-
preted for all buffer
mapping PTE's (one level
only).
A + 12 Reserved for software.
Ignored by the port.
3.3.2 Data Transfers
Data of arbitrary length is transferred between a Per-process
space named buffer in the sending system to a Per-process space named
buffer in the receiving system. Data communication is a sequenced
mode transfer which requires an open virtual circuit to the other
communicating port. The transfer is made in one or more (as needed)
CI data (SNTDAT, RETDAT) packets with the last packet having the CI
last packet (lp) flag set.
The maximum CI data packet size is the product of the packet base
size (512 or 576 bytes) and the packet multiple (1-8) as specified in
data commands. The data is transferred in order of increasing buffer
addresses in maximum size packets except for the last packet which is
only as large as necessary.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-6
3.3.2.1 Sending Data -
In this mode the initiator sends data from the local system to
the other port. Data is sent by inserting a Send Data (SNDDAT)
command on a CMDQ (normally only CMDQ0-CMDQ2 is used). SNDDAT
specifies the length of the transfer and the names of the buffers.
When executed SNDDAT sends the data in one or more CI data (SNTDAT)
packets with the last packet having the last packet flag set. After
execution the SNDDAT queue entry is normally inserted on the MFREEQ,
but is inserted on the RSPQ as a Data Sent (DATSNT) response under the
following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement. This closes the virtual circuit.
2. A CI path fails (but the command succeeds).
3. The R-bit of the command is set.
As data packets are received, the data is stored by the receiving
port. Upon receipt of the last data packet the receiving port:
1. Removes an entry from the MFREEQ. (If the MFREEQ is empty
the port holds the packet and requests an interrupt.)
2. Generates a Return Confirm (RETCNF) command.
3. Inserts the RETCNF on CMDQ3.
When executed RETCNF sends a CI confirm (CNF) packet to the
initiating port. After execution the RETCNF queue entry is normally
inserted on the MFREEQ but is inserted on the RSPQ as a Confirm
Returned (CNFRET) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement. This closes the virtual circuit.
2. A CI path fails (but the command succeeds).
The CNFRET response is also generated immediately by the local
port if any of the data packets could not be processed correctly.
This closes the Virtual Circuit.
Upon receipt of the confirm packet the initiating port:
1. Removes an entry from the MFREEQ. (If the MFREEQ is empty
the port holds the packet and requests an interrupt.)
2. Generates a Confirm Received (CNFREC) response.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-7
3. Inserts the CNFREC on the RSPQ.
Figure 3.3 illustrates Send Data operation.
INITIATING PORT OTHER PORT
SNTDAT
SNDDAT ------------------------>buffer write(ok)
CNFRET(error)
(to RSPQ)
. .
. .
. .
SNTDAT(lp)
------------------------>buffer write(ok)
CNFRET(error)
(to RSPQ)
|
(ok)
|
CNF V
(to CMDQ3)
CNFREC(ok)<--------------------- RETCNF
(to RSPQ) |
V
CNFRET(fail)
(to RSPQ)
Fig. 3.3 Send Data Operation
3.3.2.2 Requesting Data -
In this mode the initiator requests the other port to send data
to the local system. Data is requested by inserting a Request Data
(REQDAT) command on a CMDQ. REQDAT specifies the length of the
transfer and the names of the buffers. When executed REQDAT sends a
data request (DATREQ) packet. After execution the REQDAT queue entry
is normally inserted on the MFREEQ but is inserted on the RSPQ as a
Data Requested (DATREQ) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement. This closes the virtual circuit.
2. A CI path fails (but the command succeeds).
3. The R-bit in the command is set.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-8
Upon receipt of the data request packet, the receiving port:
1. Removes an entry from the MFREEQ. (If the MFREEQ is empty
the port holds the packet and requests an interrupt.)
2. Generates a Return Data (RETDAT) command.
3. Inserts the RETDAT on CMDQ0, CMDQ1, or CMDQ2. The CMDQ is
selected by data request packet opcode.
When executed RETDAT sends the requested data in exactly the same
way as does SNDDAT. After execution the RETDAT queue entry is
normally inserted on the MFREEQ but is inserted on the RSPQ as a Data
Returned (DATRET) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement. This closes the virtual circuit.
2. A CI path fails (but the command succeeds).
As data packets are received, the data is stored by the receiving
port. Upon receipt of the last data packet the initiating port:
1. Removes an entry from the MFREEQ. (If the MFREEQ is empty
the port holds the packet and requests an interrupt.)
2. Generates a Data Received (DATREC) response.
3. Inserts the DATREC on the RSPQ.
A DATREC response is also generated immediately if any of the
data packets cannot be processed correctly. This closes the virtual
circuit.
Figure 3.4 illustrates Request Data operation.
DATAGRAM, MESSAGE, AND DATA OPERATION Page 3-9
INITIATING PORT OTHER PORT
DATREQ
REQDAT ------------------------>+
(from CMDQ) |
| |
V |
DATREQ(R-bit,fail) |
(to RSPQ) |
RETDAT (to CMDQ)
buffer write (ok)<-------------RETDAT
DATREC(error)
(to RSPQ)
. .
. .
. .
RETDAT(lp)
buffer write(ok)<--------------
DATREC(ok,error) |
(to RSPQ) V
DATRET(fail)
(to RSPQ)
Fig. 3.4 Request Data Operation
CHAPTER 4
PORT STATE
The port exists in one of six global states: Uninitialized,
Uninitialized/Maintenance, Disabled, Disabled/Maintenance, Enabled,
and Enabled/Maintenance. These states are determined by jumper
| control at power-up, register control, a maintenance/sanity timer, CI
reset packets, and the occurrence of internal and external errors in
port operation. The states are described below and shown in Figure
4.1 at the end of the chapter.
The control/status registers mentioned in this chapter are
defined in the Port Registers and Port Queue Block chapter. The CI
maintenance packets mentioned in this chapter are described in the
Loopback, Configuration, and Maintenance Operation chapter.
In the following description state changes occur on the
| expiration of the maintenance/sanity timer; expiration of the
| maintenance/sanity timer can be forced by writing the Port
| Maintenance/Sanity Timer Expiration Control Register (PMTECR).
4.1 UNINITIALIZED
In this state the port does not process commands. Incoming
packets are ignored. The port is not sequencing. The port driver may
load port microcode (if necessary) in this state.
This state is entered as the result of:
| 1. Power-up. The maintenance/sanity timer is set to expire in
an implementation specific time that is sufficient to allow
local loading. If loading by a remote system is desired, the
time should be set to zero seconds to allow immediate
entrance to the Uninitialized/Maintenance state.
2. The occurrence of a Maintenance Error (internal port hardware
| error) in any state. The maintenance/sanity timer is stopped
since the port hardware is untrustworthy. The port can be
restarted by the port driver setting the Maintenance
Initialize (MIN) bit in the Port Maintenance Control and
Status Register (PMCSR).
PORT STATE Page 4-2
3. The port driver setting the Maintenance Initialize (MIN) bit
in the Port Maintenance Control and Status Register (PMCSR)
| (hardware reset). The maintenance/sanity timer is set to
expire in the implementation specific time.
This state is exited as the result of:
1. The port driver writing the Port Initialize Control Register
(PICR). This results in the port starting execution,
performing an internal initialization sequence, and entering
the Disabled state. After entering the Disabled state, a
Port Initialization Complete (PIC) interrupt is requested and
| the maintenance/sanity timer is set to expire in 100 seconds.
| 2. The expiration of the maintenance/sanity timer. The port
enters the Uninitialized/Maintenance state. After entering
| the new state, a Maintenance/Sanity Timer Expiration (ME)
interrupt is requested. RST_PORT is set to the port's own
number. Note that if local loading is intended, the timer
value on power-up (implementation specific) should be
selected to allow sufficient time for local loading
(concluded by the port driver writing the Port
| Maintenance/Sanity Timer Control Register (PMTCR) or setting
| the Maintenance/Sanity Timer Disable (MTD) bit in the Port
Maintenance Control and Status Register (PMCSR)).
4.2 UNINITIALIZED/MAINTENANCE
In this state the port is executing maintenance function
microcode. Incoming CI packets are processed. However, all packets
except maintenance (RST,SNTMDAT,MDATREQ, and STRT) and configuration
(IDREQ) packets are discarded. Commands are not executed. The host
system may or may not be executing.
This state is entered as the result of:
| 1. The expiration of the maintenance/sanity timer in any state.
| After the state change a Maintenance/Sanity Timer Expiration
(ME) interrupt is requested. RST_PORT is set to the port's
own number.
2. Receiving a CI reset packet with the port in the
Uninitialized/Maintenance, Disabled/Maintenance, or
Enabled/Maintenance state and either (1) RST_PORT equal to
the port's own number, (2) RST_PORT equal to the number of
the port sending the reset packet, or (3) the reset packet
has the force reset flag set. After entering this state this
way, the host system and port are reset and the host system
is halted. This prepares the host system for loading and
diagnosis with the CI maintenance packets. RST_PORT is set
to the number of the port sending the reset packet.
PORT STATE Page 4-3
This state is exited as the result of:
1. The port driver writing the Port Initialization Control
Register (PICR). This results in the port performing an
internal initialization sequence and entering the
Disabled/Maintenance state. After entering the
Disabled/Maintenance state a Port Initialization Complete
| (PIC) interrupt is requested and the maintenance/sanity timer
is set to expire in 100 seconds.
2. The occurrence of a Maintenance Error (MTE). This implies
that an internal port hardware error has occurred. The port
enters the Uninitialized State. The port stops sequencing.
4.3 DISABLED
In this state, the port does not execute commands. All incoming
CI packets are ignored. Data structures are not referenced by the
port. The port can be disabled by the port driver to allow
modification of queues and data structures. When this state is
| entered, the maintenance/sanity timer is set to expire in 100 seconds.
This state is entered as the result of:
1. The port driver writing the Port Initialization Control
Register (PICR) in the Uninitialized, Disabled, or Enabled
states. This causes the port to perform an internal
initialization. All internal state is lost. Any internal
caches are invalidated. If entered from the Enabled state,
any commands in execution are immediately terminated. Queue
entries are not returned to any queues. After
initialization, a Port Initialization Complete (PIC)
interrupt is requested.
2. The port driver writing the Port Disable Control Register
(PDCR) in the Enabled state. This causes a graceful shutdown
of command execution. Commands in execution are aborted
cleanly. Status is returned in responses for all commands
indicating state at the time of the disabling. All internal
cached information is invalidated and all virtual circuits
closed. After disabling, a Port Disable Complete (PDC)
interrupt is requested.
3. The occurrence of Data Structure or Memory System Errors (DSE
or MSE) in the Enabled state. The port has encountered an
error in accessing the data structures. The port enters the
Disabled state immediately, as in the case of initialization
(since host memory or data structures cannot be accessed for
a clean abort). After disabling, the appropriate error
interrupt is requested.
PORT STATE Page 4-4
| 4. The port driver writing the Port Maintenance/Sanity Timer
Control Register (PMTCR) with the port in the Disabled state.
The timer is set to expire in 100 seconds.
This state is exited as the result of:
1. The port driver writing the Port Enable Control Register
(PECR). This causes the port to enter the Enabled state and
begin processing commands and incoming packets. RST_PORT is
set to the port's own number.
2. The expiration of the maintenance/sanity timer. The port
enters the Uninitialized/Maintenance state. After entering
| the new state, a Maintenance/Sanity Timer Expiration (ME)
interrupt is requested. RST_PORT is set to the port's own
number.
3. The occurrence of a Maintenance Error (MTE). This implies
that an internal port hardware error has occurred. The port
enters the Uninitialized State. The port stops sequencing.
4.4 DISABLED/MAINTENANCE
In this state the port does not execute commands. All packets
except configuration (IDREQ) or reset (RST) packets are discarded.
Data structures are not referenced by the port. When this state is
| entered, the maintenance/sanity timer is set to expire in 100 seconds.
This state is entered as the result of:
1. The port driver writing the Port Initialization Control
Register (PICR) in the Uninitialized/Maintenance,
Disabled/Maintenance, or Enabled/Maintenance states. This
causes the port to perform an internal initialization. All
internal state is lost. Any internal caches are invalidated.
If entered from the Enabled/Maintenance state, any commands
in process are immediately terminated. Queue entries are not
returned to any queues. After initialization, a Port
Initialization Complete (PIC) interrupt is requested.
2. The port driver writing the Port Disable Control Register
(PDCR) in the Enabled/Maintenance state. This causes a
graceful shutdown of command execution. Commands in
execution are aborted cleanly. Status is returned in
responses for all commands indicating state at the time of
the disabling. All internally cached information is
invalidated and all virtual circuits closed. After
disabling, a Port Disable Complete (PDC) interrupt is
requested.
PORT STATE Page 4-5
| 3. The port driver writing the Port Maintenance/Sanity Timer
Control Register (PMTCR) in the Disabled/Maintenance state.
The timer is set to expire in 100 seconds.
4. The occurrence of Data Structure or Memory System Errors (DSE
or MSE) in the Enabled/Maintenance state. The port has
encountered an error in accessing the data structures. The
port enters the Disabled/Maintenance state immediately, as in
the case of initialization (since host memory or data
structures cannot be accessed for a clean abort). After
disabling, the appropriate error interrupt is requested.
This state is exited as the result of:
1. The port driver writing the Port Enable Control Register
(PECR). This causes the port to enter the
Enabled/Maintenance state and begin executing commands and
processing incoming packets. RST_PORT is set to the port's
own number.
| 2. The expiration of the maintenance/sanity timer. The port
enters the Uninitialized/Maintenance state. After entering
the new state, a Maintenance Expiration (ME) interrupt is
requested. RST_PORT is set to the port's own number.
3. Receiving a CI reset packet if (1) RST_PORT contains the
port's own number, (2) RST_PORT contains the number of the
port sending the reset packet, or (3) the reset packet has
the force reset flag set. This causes the port to enter the
Uninitialized/Maintenance state. The host system and port
are reset and the host system is halted to allow further
manipulation by maintenance packets. RST_PORT is set to the
number of the port sending the reset packet.
4. The occurrence of a Maintenance Error (MTE). This implies
that an internal port hardware error has occurred. The port
enters the Uninitialized State. The port stops sequencing.
4.5 ENABLED
In this state the port executes commands and processes incoming
CI packets. Maintenance packets are processed as Unrecognized Packet
(UNRPKT) responses. Data structures are valid and may be cached where
applicable.
This state is entered as the result of:
1. The port driver writing the Port Enable Control Register
(PECR) with the port in the Disabled state. This enables
command execution and packet processing. RST_PORT is set to
the port's own number.
PORT STATE Page 4-6
| 2. The port driver writing the Port Maintenance/Sanity Timer
Control Register (PMTCR) with the port in the Enabled state.
The timer is set to expire in 100 seconds.
This state is exited as the result of:
1. The port driver writing the Port Initialization Control
Register (PICR). This results in the port performing an
internal initialization sequence and entering the Disabled
state. The initialization invalidates all internal caches.
Any commands in execution or packets being processed are
immediately dropped without returning queue entries to
queues. After entering the Disabled state, a Port
Initialization Complete (PIC) interrupt is requested.
| 2. The expiration of the maintenance/sanity timer. The port
enters the Uninitialized/Maintenance state. After entering
| the new state, a Maintenance/Sanity Timer Expiration (ME)
interrupt is requested. RST_PORT is set to the port's own
number.
3. The port driver writing the Port Disable Control Register
(PDCR). This causes a graceful shutdown of command
processing. Commands in processing are aborted. Status is
returned in responses for all commands indicating state at
the time of the disabling. The port enters the Disabled
state. Any internally cached information is invalidated and
all virtual circuits closed. After completion of disabling,
a Port Disable Complete (PDC) interrupt is requested.
4. The occurrence of Data Structure or Memory System Errors (DSE
or MSE). This results in the port immediately entering the
Disabled state. All command and packets being processed are
immediately discarded as in initialization. Upon entering
the Disabled state, the appropriate error interrupt is
requested.
5. The occurrence of a Maintenance Error (MTE). This implies
that an internal port hardware error has occurred. The port
enters the Uninitialized state. The port stops sequencing.
PORT STATE Page 4-7
4.6 ENABLED/MAINTENANCE
In this state the port executes commands and processes incoming
CI packets. Other than reset (RST) all maintenance packets
(SNTMDAT,MDATREQ, and STRT) are processed as Unrecognized Packet
(UNRPKT) responses. In the Enabled/Maintenance state, data structures
are valid and may be cached where applicable.
This state is entered as the result of:
1. The port driver writing the Port Enable Control Register
(PECR) with the port in the Disabled/Maintenance state. This
enables command execution and packet processing. RST_PORT is
set to the port's own number.
| 2. The port driver writing the Port Maintenance/Sanity Timer
Control Register (PMTCR) with the port in the
Enabled/Maintenance state. The timer is set to expire in 100
seconds.
This state is exited as the result of:
1. The port driver writing the Port Initialize Control Register
(PICR). This results in the port performing an internal
initialization sequence and entering the Disabled/Maintenance
state. The initialization invalidates all internal caches.
Any commands or packets in processing are immediately
terminated without returning queue entries to queues. After
entering the Disabled/Maintenance state, a Port
Initialization Complete (PIC) interrupt is requested.
| 2. The expiration of the maintenance/sanity timer. The port
enters the Uninitialized/Maintenance state. After entering
| the new state, a Maintenance/Sanity Timer Expiration (ME)
interrupt is requested. RST_PORT is set to the port's own
number.
3. Receiving a CI reset packet if (1) RST_PORT contains the
port's own number, (2) RST_PORT contains the number of the
port sending the reset packet, or (3) the reset packet has
the force reset flag set. This causes the port to enter the
Uninitialized/Maintenance state. The host system and port
are reset and the host system is halted to allow further
manipulation by maintenance packets. RST_PORT is set to the
number of the port sending the reset packet.
4. The port driver writing the Port Disable Control Register
(PDCR). This causes a graceful shutdown of command
processing. Commands in execution are cleanly aborted.
Status is returned in responses for all commands indicating
state at the time of the disabling. The port enters the
Disabled/Maintenance state. All internally cached
information is invalidated and all virtual circuits closed.
After disabling, a Port Disable Complete (PDC) interrupt is
requested.
PORT STATE Page 4-8
5. The occurrence of Data Structure or Memory System Errors (DSE
or MSE). This results in the port immediately entering the
Disabled/Maintenance state. All commands and packets in
processing are immediately discarded as in initializiation.
Upon entering the new state, the appropriate error interrupt
is requested.
6. The occurrence of a Maintenance Error (MTE). This implies
that an internal port hardware error has occurred. The port
enters the Uninitialized State. The port stops sequencing.
PORT STATE Page 4-9
************* TIMER *************
Power-up * *---------------------->* *-----+
MTE,MIN * UNINIT * * UNINIT/ * | CI RST
--------->* * * MAINT *<----+
* * +------------>* *<------+
* *<---+ | +-------->* *<-+ |
************* | | | ************* | C |
| | | | | | | I |
| +------+ | | | | | C
| PMTCR T | | | | R | I
| P I | | | P | S |
| I M | | | I | T | R
| C E | | | C | / | S
| R R | | | R | T | T
| | | | | I | /
| | | | | M | T
V | | V | E | I
************* | | ************* | R | M
* *-----------+ | * * | | E
* DISABLED * | * DISABLED/ *----+ | R
+--->* * | * MAINT * |
| P * * | * *<---+ P |
| D * *<---+ | +--->* * | D |
| C ************* | | | ************* | C |
| R | | | | | | | | R |
| / | +------+ | +------+ | | / |
| P | PMTCR/ | PMTCR/ | | P |
| I | PICR | PICR | | I |
| C | P | | P | C |
| R | E | | E | R |
| / | C | | C | / |
| M | R | | R | M |
| S | | | | S |
| E | | | | E |
| / | | | | / |
| D | | | | D |
| S | | | | S |
| E | | | | E |
| / | | | | / |
| M | | v | M |
| I ************* | ************* | I |
| S * * TIMER | * * | S |
| C * ENABLED *---------------+ * ENABLED/ *----+ C |
+----* * * MAINT * |
* * * *---------+
* *<---+ +--->* *
************* | | *************
| | PMTCR PMTCR | |
+------+ +------+
TIMER = maintenance/sanity timer expiration = PMTECR
Fig. 4.1 VAX CI Port State Diagram
CHAPTER 5
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION
5.1 CI LOOPBACK TESTING
To verify the ability to send and receive CI packets, a Send
Loopback (SNDLB) command is inserted on a CMDQ. When executed SNDLB
sends a CI loopback (LB) packet. After execution, the SNDLB queue
entry is normally inserted on the DFREEQ but is inserted on the RSPQ
as a Loopback Sent (LBSNT) response under the following conditions.
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The R-bit is set in the command.
Upon receipt of the loopback packet the receiving port:
1. Removes an entry from the DFREEQ. (If the DFREEQ is empty
the packet is discarded.)
2. Generates a Loopback Received (LBREC) response.
3. Inserts the response on the RSPQ.
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-2
Figure 5.1 illustrates Loopback Operation.
SENDING PORT
LB
SNDLB ------------------------+
(from CMDQ) |
| |
V |
LBSNT(R-bit,fail) |
(to RSPQ) |
|
LBREC <-----------------------+
(to RSPQ)
Fig. 5.1 Loopback Operation
5.2 CONFIGURATION/MAINTENANCE INTERNAL COMMAND QUEUE
The following sections describe operations in which a port
receives a packet, internally processes it, and possibly sends a
packet back. The sending back of a packet may be viewed as the result
of the execution of an internal command from an internal command
queue. The number of entries on the internal queue is implementation
specific. This internal queue is higher priority than CMDQ3. If a
packet is received which requires an internal queue entry and the
internal queue is filled, the packet is discarded.
5.3 CI CLUSTER CONFIGURATION
To determine the state of other ports on the CI a Request ID
(REQID) command is inserted on a CMDQ. When executed REQID sends an
ID request (IDREQ) packet. After execution the REQID queue entry is
normally inserted on the DFREEQ, but is inserted on the RSPQ as an ID
Requested (IDREQ) response under the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The command R-bit is set.
Upon receipt of the ID request packet, the port, if in the
Uninitialized/Maintenance, Disabled/Maintenance, Enabled, or
Enabled/Maintenance state, returns an ID (ID) packet. The packet is
sent on the same path on which the ID request packet was received.
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-3
Upon receipt of the ID packet the receiving port:
1. Removes an entry from the DFREEQ. (If the DFREEQ is empty
the packet is discarded.)
2. Generates an ID Received (IDREC) response and inserts the
queue entry on the RSPQ.
| The ID packet carries port type, port state, port functionality,
and port microcode revision.
Figure 5.2 illustrates the configuration operation.
INITIATING PORT OTHER PORT
IDREQ
REQID ----------------------->+
(from CMDQ) |
| |
V |
IDREQ(R-bit,fail) |
(to RSPQ) |
|
ID |
IDREC <-----------------------+
(to RSPQ)
Fig 5.2 Configuration Operation
5.4 MAINTENANCE OPERATION
Ports and systems are bootstrapped and diagnosed with the
maintenance commands which send maintenance packets. These packets
permit the resetting, down-line loading, upline dumping, and starting
of systems.
The processing of maintenance packets is determined by the port
state and the RST_PORT register:
1. Reset (RST) packets cause a reset only if:
1. The port is in the Uninitialized/Maintenance,
Disabled/Maintenance, or Enabled/Maintenance state, and
2. RST_PORT contains the port's own number, RST_PORT
contains the number of the port sending the reset packet,
or the force reset flag is set in the reset packet.
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-4
2. Maintenance data (SNTMDAT), maintenance data request
(MDATREQ), and start (STRT) packets result in the intended
operation only if:
1. The port is in the Uninitialized/Maintenance state, and
2. RST_PORT contains the number of the port sending the
maintenance packet.
5.4.1 Resetting
| To reset a remote node, a Send Reset (SNDRST) command is inserted on a
CMDQ. When executed SNDRST sends a CI reset (RST) packet. After
execution the SNDRST queue entry is normally inserted on the DFREEQ
but is inserted on the RSPQ as a Reset Sent (RSTSNT) response under
the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The command R-bit is set.
| If the reset occurs, RST_PORT is set to the number of the port
| sending the reset packet. A self-directed SNDRST causes a reset if
| the port is in the Enabled/Maintenance state.
|
| The receiving CI Port reset action is dependent on the type of
| port receiving the reset packet. VAX CI Ports trigger a power failure
| sequence on their host system and enter the Uninitialized/Maintenance
| State. Once the port is in this state, further maintenance operations
| can be performed. The power failure sequence is described in section
| 10.4 of the DEC STD 32 Vax Architecture.
|
| The DEC STD 161 defines the general requirements for receiving CI
| Port response to RST packets in the section titled "Resetting Remote
| Systems.".
Figure 5.3 illustrates the reset operation.
SENDING PORT RECEIVING PORT
RST
SNDRST ----------------------> (port resets host system)
(from CMDQ)
|
V
RSTSNT(R-bit,fail)
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-5
5.4.2 Downline Loading
To load port and host system memory a Send Maintenance Data (SNDMDAT)
command is inserted on a CMDQ. When executed SNDMDAT sends a CI
maintenance data (SNTMDAT) packet. After execution the SNDMDAT queue
entry is normally inserted on the DFREEQ but is inserted on the RSPQ
as Maintenance Data Sent (MDATSNT) response under the following
conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The command R-bit is set.
Upon receipt of the maintenance data packet, the receiving port
stores the data appropriately and sends a maintenance confirm (MCNF)
packet. The packet is sent on the same path on which the maintenance
data packet was received. Upon receipt of the maintenance confirm
packet, the receiving port:
1. Removes an entry from the DFREEQ. (If the DFREEQ is empty
the packet is discarded.)
2. Generates a Maintenance Confirm Received (MCNFREC) response.
3. Inserts the MCNFREC on the RSPQ.
Figure 5.4 illustrates Send Maintenance Data Operation.
INITIATING PORT OTHER PORT
SNTMDAT
SNDMDAT ----------------------->+
(from CMDQ) |
| |
V |
MDATSNT(R-bit,fail) |
(to RSPQ) |
|
MCNF |
MCNFREC <-----------------------+
(to RSPQ)
Fig. 5.4 Send Maintenance Data Operation
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-6
5.4.3 Upline Dumping
To dump port and host system memory a Request Maintenance Data
(REQMDAT) command is inserted on a CMDQ. Execution of REQMDAT sends a
CI request maintenance data (REQMDAT) packet. After execution the
REQMDAT queue entry is normally inserted on the DFREEQ but is inserted
on the RSPQ as a Maintenance Data Requested (MDATREQ) response under
the following conditions:
1. The command fails due to an error or non-receipt of CI packet
acknowledgement.
2. A CI path fails (but the command succeeds).
3. The command R-bit is set.
Upon receipt of the maintenance data request packet the receiving
port sends the appropriate data in a maintenance data (RETMDAT)
packet. The packet is sent on the same path on which the maintenance
data request packet was received. Upon receiving the maintenance data
packet the receiving port:
1. Removes an entry from the DFREEQ. (If the DFREEQ is empty,
the packet is discarded.)
2. Generates a Maintenance Data Received (MDATREC) response.
3. Inserts the MDATREC on the RSPQ.
Figure 5.5 illustrates Request Maintenance Data operation.
INITIATING PORT OTHER PORT
MDATREQ
REQMDAT ----------------------->+
(from CMDQ) |
| |
V |
MDATREQ(R-bit,fail) |
(to RSPQ) |
|
RETMDAT |
(buffer write)<-----------------+
MDATREC(ok,error)
(to RSPQ)
Fig. 5.5 Request Maintenance Data Operation
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-7
5.4.4 Starting
| To start a remote system after you have halted it with a Send
| Reset command, a Send Start (SNDSTRT) command is inserted on a CMDQ.
| When executed SNDSTRT sends a CI start (STRT) packet. After execution
| the SNDSTRT queue entry is normally inserted on the DFREEQ but is
| inserted on the RSPQ as a Start Sent (STRTSNT) response under the
| following conditions:
|
| 1. The command fails due to an error or lack of CI packet
| acknowledgement.
|
| 2. A CI path fails (but the command succeeds).
|
| 3. The command R-bit is set.
|
|
| Receiving port action upon receipt of STRT packet:
|
| The receiving CI Port action is dependent on the type of the
| receiving port. See section 7.15 for port action on receipt of a STRT
| packet in a state other than Uninitialized/Maintenance. VAX CI Ports
| in the Uninitialized/Maintenance state must do the following upon
| receipt of a STRT packet:
|
| IF
|
| the RST_PORT field at the receiving port matches the source node
| number of the STRT packet and the system attached to the
| receiving VAX CI Port is halted due to the receiving port having
| previously received a RST packet from the node RST_PORT.
|
| THEN
|
| The receiving port triggers the completion of the powerfail and
| recovery sequence, (similar to that described in section 10.4 of
| DEC STD 032), that was begun when the receiving port received the
| RST packet. VAX CI Ports ignore the STRT_ADDR and DSA fields of
| the STRT packet.
|
| ELSE
|
| The packet is discarded.
|
|
| The result of a self-directed SNDSTRT is implementation specific.
|
| The DEC STD 161 defines the general requirements for receiving CI
| Port response to STRT packets in the section titled "Starting Remote
| Systems.".
Figure 5.6 illustrates the start operation.
LOOPBACK, CONFIGURATION, AND MAINTENANCE OPERATION Page 5-8
SENDING PORT RECEIVING PORT
STRT
SNDSTRT ------------------------>(port starts host system)
(from CMDQ)
|
V
STRTSNT(R-bit,fail)
(to RSPQ)
Fig. 5.6 Start Operation
CHAPTER 6
PORT COMMAND/RESPONSE FORMATS
6.1 COMMANDS
The format of a command is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+---------+---------+---------+
| FLAGS | OPC | STATUS | PORT | :A + 12
+---------+---------+---------+---------+
| | :A + 16
= COMMAND =
| SPECIFIC |
| | :A - 4 +
+---------------------------------------+ {D/M}QE_LEN
The command fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
Displacement relative
to address A of the
successor queue entry.
A + 4 <31:0> BLINK Queue backward link.
Displacement relative
to address A of the
predecessor queue
entry.
PORT COMMAND/RESPONSE FORMATS Page 6-2
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> FLAGS Operation modifiers.
A + 12 <31> P Data packet base size.
P = 0 512 byte packets.
P = 1 576 byte packets.
Used only for data commands.
or
<31> PF Packing format. Specifies
the value of the packing format
flag in CI packets. Should be
non-zero only for destination
PDP-10/20 ports.
PF = 0 Longword packed
PF = 1 Nibble packed
VAX CI port ignores
the PF flag in both
commands and incoming packets.
or
<31> F Force reset. See the Send
Reset command.
or
<31> DS Default start address. See
the Send Start command.
A + 12 <30:28> M Packet multiple. Packet
size used = P * (M + 1).
Used only for data commands.
The packet size must be less
than or equal to the internal
buffer size - 16. See IBUF_LEN
in the Port Parameter Register
(PPR).
A + 12 <26:25> PS Path Select.
PS = 0 Automatic.
PS = 1 Select path 0.
PS = 2 Select path 1.
PS = 3 Undefined.
Ignored by single path
ports.
A + 12 <24> R Response Queue bit. If
set, a response is
generated. The
Command Queue entry is
placed on the Response
PORT COMMAND/RESPONSE FORMATS Page 6-3
Queue. (Execution of
a command which fails
or encounters a path
failure always generates a
response).
A + 12 <23:16> OPC Operation code.
Identifies the port
command.
A + 12 <15:8> STATUS A field which MBZ for
a command. After
executing a command
which fails or with the
R-bit is set, the port
fills in the STATUS
field and places the
command queue entry on
the Response Queue.
A + 12 <7:0> PORT The destination port to
which the command is
directed. Port numbers
224 - 255 are reserved
for special use.
A + 16 Command specific.
through
A - 4 + {D/M}QE_LEN
6.1.1 Reserved For Software Fields
The contents of fields in commands marked RESERVED FOR SOFTWARE
are never sent in CI packets.
6.1.2 Self-Directed Commands
Ports can execute commands directed to their own port number.
The implementation is transparent to the port driver. The responses
(and other results) are identical to remotely directed commands.
Self-directed commands are realized in an implementation specific
manner. A port may send to itself on the CI. Any such transfers
observe the CI protocol. Alternatively, a port may use internal
loopback to perform the transfer. Successful transfers return a path
status of ACK.
Path select is ignored if internal loopback is used.
PORT COMMAND/RESPONSE FORMATS Page 6-4
If path status is returned, it may not reflect the status of an
actual bus transaction. For example, a NAK may indicate that an
internal receiver buffer is not available, but this may not actually
result from sending and receiving a NAK packet on the CI. Instead,
the internal connection may have tested the buffer and found it full.
The actual method used to realize the self-directed commands is
described in the port implementation specification.
Any transfer scheme particular to self-directed commands provides
the same level of data integrity as the CI connection to destination
ports.
A self-directed command sending sequenced mode packets requires
the port to have an open virtual circuit to itself.
Any special properties of self-directed command are included in
the Port Commands and Responses chapter.
6.2 RESPONSES
Port responses are generated under the following conditions:
1. Successful execution of a command with the Response-bit
(R-bit) set.
2. Execution of any command which fails.
3. Path failure during the execution of a command (even if the
command succeeds).
4. Receipt of certain packets on the CI.
The format of responses is identical to commands. In the case of
responses generated for locally executed commands, the response is
formed from the same queue entry which formed the command. Except as
explicitly noted in the response descriptions, all fields in the
response have exactly the same values as they had when they were
fields of the command. In particular, this is true of fields labelled
RESERVED FOR SOFTWARE.
Any command which has the R-bit clear causes no response to be
generated on normal execution of that command. In this case the
command queue entry is treated as a Free Queue entry and may be
immediately overwritten by the port. However, the longword located at
A + 8 in the command is never modified by the port.
When a response is generated the port fills in the 8-bit STATUS
field. For locally executed commands the status value indicates the
result of command execution and any change in path status. For
commands sending multiple packets, the path status change reflects all
packets sent. For responses generated from an incoming packet, the
status value indicates the result of processing the packet.
PORT COMMAND/RESPONSE FORMATS Page 6-5
6.3 RESPONSE STATUS FIELD FORMAT
The STATUS field format is:
7 6 5 4 3 2 1 0
+-----------+---+---+---+---+---+
| | PTH_1 | PTH_0 | F |
| TYPE +-------+-------+ A |
| | SUB_TYPE | I |
| | | L |
+-----------+---------------+---+
Where:
Bits Field Description
<7:5> TYPE Status type.
TYPE = 0 OK.
TYPE = 1 Virtual circuit
closed (before
command executed).
TYPE = 2 Invalid buffer name
(Key mismatch,
V-bit clear, or
index too large).
TYPE = 3 Buffer length
violation.
TYPE = 4 Access control
violation.
TYPE = 5 No Path.
TYPE = 6 Buffer memory system error.
TYPE = 7 Other error. See
SUB_TYPE.
<4:3> PTH_1 Path one status.
Result of last use
of path.
PTH_1 = 0 ACK or not used.
PTH_1 = 1 NAK.
PTH_1 = 2 NO_RSP.
PTH_1 = 3 ARB_TIMEOUT
Port was unsuccessful in
arbitrating for the CI.
<2:1> PTH_0 Path zero status. Same as
path one status.
<4:1> SUB_TYPE Subtype. Error other
than path status. Valid if
TYPE = 7.
SUB_TYPE = 0 Packet size
violation.
SUB_TYPE = 1 Unrecognized
PORT COMMAND/RESPONSE FORMATS Page 6-6
packet.
SUB_TYPE = 2 Invalid destina-
tion port.
SUB_TYPE = 3 Unrecognized
command.
SUB_TYPE = 4 Abort (port
disabled).
SUB_TYPE = 5
through
SUB_TYPE =15 Reserved.
<0> FAIL Failure. Set if the command,
path, or packet
processing failed.
FAIL = 0 OK.
FAIL = 1 Failure.
Summarizing STATUS for locally executed commands:
1. STATUS = 0: Command succeeded with no change in path status.
2. FAIL = 1 AND TYPE = 0: Command succeeded but path failed.
PTH_0 and PTH_1 indicate which path failed.
3. FAIL = 1 AND 0 < TYPE < 7: Command failed. TYPE indicates
failure. Path may also have failed. PTH_0 and PTH_1
indicate any path failure.
4. FAIL = 1 AND TYPE = 7: Command failed. SUB_TYPE indicates
failure. (Paths not used.)
The following error detection precedence applies to locally executed
commands:
1. Abort.
2. Unrecognized command.
3. Invalid destination port.
4. Packet size violation.
5. Other errors.
Summarizing STATUS for responses generated from received packets:
1. STATUS = 0: Packet processed correctly.
2. FAIL = 1 and 0 < TYPE < 7: Packet processing failed. TYPE
indicates failure. PTH_1 = PTH_0 = 0.
PORT COMMAND/RESPONSE FORMATS Page 6-7
3. FAIL = 1 and TYPE = 7: Packet processing failed. SUB_TYPE
indicates failure.
The following error detection precedence applies to received packet
processing:
1. Packet size violation.
2. Other errors.
CHAPTER 7
PORT COMMANDS AND RESPONSES
7.1 DATAGRAM SENDING
7.1.1 Send Datagram
This command sends a datagram (DG) packet. The packet is sent in
unsequenced mode. The format of SNDDG is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+---+--+-+--------+---------+--------+
|PF|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+--+---+--+-+--------+---------+--------+
| | DG_LEN | :A + 16
| +------------------+
| |
= DG =
| |
+---------------------------------------+
| | :A + 18
= RESERVED FOR = + DG_LEN
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
SNDDG fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
PORT COMMANDS AND RESPONSES Page 7-2
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 1 for SNDDG.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <15:0> DG_LEN Datagram text length
in bytes. Valid values
are 0 to minimum of
IBUF_LEN and DQE_LEN - 18.
Oversize datagrams are not
sent.
A + 16 <31:16> DG Bytes A + 18 through
through A + 17 + DG_LEN contain
A - 4 + DQE_LEN the datagram to be sent.
Bytes A + 18 + DG_LEN
through A - 1 + DQE_LEN
are reserved for software
and ignored by the port.
PORT COMMANDS AND RESPONSES Page 7-3
7.1.2 Datagram Sent
This response is generated after local execution of a SNDDG
command. The format of DGSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-+--+-+---------+---------+---------+
|PF|0|PS|R| OPC | STATUS | PORT | :A + 12
+--+-+--+-+---------+---------+---------+
| | DG_LEN | :A + 16
| +-------------------+
| |
= DG =
| |
+---------------------------------------+
| | :A + 18
= RESERVED FOR = + DG_LEN
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
Fields of DGSNT are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
PORT COMMANDS AND RESPONSES Page 7-4
A + 12 <23:16> OPC OPC = 1 for DGSNT.
A + 12 <15:8> STATUS Status. Types are:
OK.
No path.
Packet size violation.
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <31:16> Same as fields of the
through corresponding SNDDG.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-5
7.1.3 Datagram Received
This response is generated on receipt of a datagram (DG) packet.
The format of DGREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-------+---------+---------+--------+
|PF| 0 | OPC | STATUS | PORT | :A + 12
+--+-------+---------+---------+--------+
| | DG_LEN | :A + 16
| +------------------+
| |
= DG =
| |
+---------------------------------------+
| | :A + 18
= UNPREDICTABLE = + DG_LEN
| | :A - 4
+---------------------------------------+ + DQE_LEN
DGREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:24> MBZ
A + 12 <23:16> OPC Opcode = 33 for DGREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
Packet size violation.
PORT COMMANDS AND RESPONSES Page 7-6
A + 12 <7:0> PORT Port which sent
the datagram packet.
A + 16 <15:0> DG_LEN Intended datagram text
length in bytes. Actual
length if STATUS does not
indicate packet size
violation.
A + 16 <31:16> DG If STATUS = OK then
through bytes A + 18 through
A - 4 + DQE_LEN A + 17 + DG_LEN contain
the datagram.
If STATUS = packet size
violation and if
DQE_LEN <= IBUF_LEN
in PPR then bytes A + 18
through A - 1 + DQE_LEN
contain the first DQE_LEN
- 18 bytes of the datagram.
If STATUS = packet size
violation and if
QE_LEN > IBUF_LEN
in PPR then bytes A + 18
through A - 17 + IBUF_LEN
contain the first IBUF_LEN
bytes of the datagram.
The remaining bytes of the
queue entry (if any) are
UNPREDICTABLE.
PORT COMMANDS AND RESPONSES Page 7-7
7.2 MESSAGE SENDING
7.2.1 Send Message
This command sends a message (MSG) packet. The packet is sent in
sequenced mode and requires an open virtual circuit to the destination
port. The format of SNDMSG is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+---+--+-+--------+---------+--------+
|PF|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+--+---+--+-+--------+---------+--------+
| | MSG_LEN | :A + 16
| +------------------+
| |
= MSG =
| |
+---------------------------------------+
| | :A + 18
| | +MSG_LEN
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
SNDMSG fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
PORT COMMANDS AND RESPONSES Page 7-8
See 6.1
A + 12 <23:16> OPC OPC = 2 for SNDMSG.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <15:0> MSG_LEN Message text length
in bytes. Valid values
are 0 to the minimum of
IBUF_LEN and MQE_LEN - 18.
Oversize messages are not
sent.
A + 16 <31:16> MSG Bytes A + 18 through
through A + 17 + MSG_LEN contain
A - 4 + MQE_LEN the message to be sent.
Bytes A + 18 + MSG_LEN
through A - 1 + MQE_LEN
are reserved for software
and ignored by the port.
PORT COMMANDS AND RESPONSES Page 7-9
7.2.2 Message Sent
This response is generated after local execution of a SNDMSG
command. The format of MSGSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-+--+-+---------+---------+---------+
|PF|0|PS|R| OPC | STATUS | PORT | :A + 12
+--+-+--+-+---------+---------+---------+
| | MSG_LEN | :A + 16
| +-------------------+
| |
= MSG =
| |
+---------------------------------------+
| | :A + 18
= RESERVED FOR = + MSG_LEN
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
MSGSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
PORT COMMANDS AND RESPONSES Page 7-10
A + 12 <23:16> OPC OPC = 2 for MSGSNT.
A + 12 <15:8> STATUS Status. Types are:
OK.
Virtual circuit closed.
No path.
Packet size violation.
Invalid destination port.
Abort.
All except OK close the virtual
circuit.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <31:0> Same as fields of the
through corresponding SNDMSG.
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-11
7.2.3 Message Received
This response is generated on receipt of a message MSG packet on
an open virtual circuit. The format of MSGREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+------+---------+---------+---------+
|PF| 0 | OPC | STATUS | PORT | :A + 12
+--+------+---------+---------+---------+
| | MSG_LEN | :A + 16
| +-------------------+
| |
= MSG =
| |
+---------------------------------------+
| | :A + 18
= UNPREDICTABLE = + MSG_LEN
| | :A - 4
+---------------------------------------+ + MQE_LEN
MSGREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:24> MBZ
A + 12 <23:16> OPC OPC = 34 for MSGREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
Packet size violation.
This closes the virtual
circuit.
PORT COMMANDS AND RESPONSES Page 7-12
A + 12 <7:0> PORT Port which sent the message
packet.
A + 16 <15:0> MSG_LEN Intended message text
length in bytes. Actual
length if STATUS does not
indicate packet size
violation.
A + 16 <31:16> MSG If STATUS = OK then
through Bytes A + 18 through
A - 4 + MQE_LEN A + 17 + MSG_LEN contain
the message.
If STATUS = packet size
violation and if
MQE_LEN < IBUF_LEN field
in PPR then bytes A + 18
through A - 1 + MQE_LEN
contain the first MQE_LEN
- 18 bytes of the message.
If STATUS = packet size
violation and if
MQE_LEN > IBUF_LEN field
in PPR then bytes A + 18
through A - 17 + IBUF_LEN
contain the first IBUF_LEN
bytes of the message.
The remaining bytes of the
queue entry (if any) are
UNPREDICTABLE.
PORT COMMANDS AND RESPONSES Page 7-13
7.3 SENDING DATA
7.3.1 Send Data
This command sends data from a local named buffer to a
destination named buffer. The data is sent in one or more data
(SNTDAT) packets. The last packet has the last packet flag set. The
packets are sent in sequenced mode and require an open virtual circuit
to the destination port. The format of SNDDAT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-+---+--+-+--------+--------+--------+
|P|M|MBZ|PS|R| OPC | MBZ | PORT |
+-+-+---+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
SNDDAT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
PORT COMMANDS AND RESPONSES Page 7-14
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:28> M Packet multiple.
See 6.1
A + 12 <27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 16 for SNDDAT.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction identifier.
A + 24 <31:0> XCT_LEN The length of the data
transfer in bytes.
XCT_LEN<31> MBZ.
A + 28 <31:0> SND_NAME The sending buffer
name.
A + 32 <31:0> SND_OFFSET The starting byte of
the transfer relative
to byte 0 of the
sending buffer.
SND_OFFSET<31> MBZ.
A + 36 <31:0> REC_NAME The receiving buffer
name.
A + 40 <31:0> REC_OFFSET The starting byte of
the receiving area
relative to byte 0 of
the receiving buffer.
REC_OFFSET<31> MBZ.
A + 44 Reserved for software.
through Ignored by the port.
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-15
7.3.2 Data Sent
This response is generated after local execution of a SNDDAT
command. The format of DATSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+---+-+--+-+--------+--------+--------+
|P| M |0|PS|R| OPC | STATUS | PORT | :A + 12
+-+---+-+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
DATSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:28> M Packet multiple.
PORT COMMANDS AND RESPONSES Page 7-16
See 6.1
A + 12 <27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 16 for DATSNT.
A + 12 <15:8> STATUS Status. Types are:
OK.
Virtual circuit closed.
Invalid buffer name.
Buffer length violation.
Access control violation.
No path.
Buffer memory system error.
Packet size violation.
Invalid destination port.
Abort.
All except OK close the
virtual circuit.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of
through corresponding SNDDAT.
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-17
7.3.3 Return Confirm
This command sends a confirm (CNF) packet. The packet is sent in
sequenced mode and requires an open virtual circuit to the destination
port. RETCNF is port generated on receipt of a data (SNTDAT) packet
with the last packet flag set on an open virtual circuit. RETCNF is
normally not generated by a port driver. When port generated, RETCNF
is inserted on CMDQ3. The format of RETCNF is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+----+--+-+---------+---------+---------+
| MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+----+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE OR |
| UNPREDICTABLE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
Fields for RETCNF are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 3 for RETCNF.
PORT COMMANDS AND RESPONSES Page 7-18
A + 12 <15:8> MBZ
A + 12 <7:0> PORT For port generated commands
the port which sent the SNTDAT
packet.
A + 16 <63:0> XCT_ID Transaction identifier.
The value to be placed in
the XCT_ID field of the
CNF packet.
For port generated commands
obtained from the XCT_ID
field of the SNTDAT
packet.
A + 24 Reserved for software
through for port driver generated
A - 4 + MQE_LEN commands. UNPREDICTABLE
for port generated commands.
Ignored by the port.
PORT COMMANDS AND RESPONSES Page 7-19
7.3.4 Confirm Returned
This response is generated after the local execution of a RETCNF
command. It is also generated on receipt of any data (SNTDAT) packet
on an open virtual circuit which results in an error in attempting to
place the data in a buffer. The format of CNFRET is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+----+--+-+---------+---------+---------+
| 0 |PS|R| OPC | STATUS | PORT | :A + 12
+----+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE OR |
| UNPREDICTABLE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
CNFRET fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 3 for CNFRET.
A + 12 <15:8> STATUS Status. Types are:
OK.
PORT COMMANDS AND RESPONSES Page 7-20
Virtual circuit closed.
Invalid buffer name.
Buffer length violation.
Access control violation.
No path.
Buffer memory system error.
Packet size violation.
Invalid destination port.
Abort.
All except OK close the virtual
circuit.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding RETDAT.
A - 4 + MQE_LEN UNPREDICTABLE if direct
port generated response.
PORT COMMANDS AND RESPONSES Page 7-21
7.3.5 Confirm Received
This response is generated on receipt of a confirm (CNF) packet
on an open virtual circuit. The format of CNFREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+---------+---------+---------+
| 0 | OPC | STATUS | PORT | :A + 12
+---------+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= UNPREDICTABLE =
| | :A - 4
+---------------------------------------+ + MQE_LEN
CNFREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> MBZ
A + 12 <23:16> OPC OPC = 25 for CNFREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
A + 12 <7:0> PORT Port which sent the
confirmation packet.
A + 16 <63:0> XCT_ID Transaction identifier.
Copied from the XCT_ID
field of the CNF packet.
A + 24 UNPREDICTABLE.
PORT COMMANDS AND RESPONSES Page 7-22
through
A - 4 + MQE_LEN
7.4 REQUESTING DATA
7.4.1 Request Data
This command sends a data request (DATREQ0, DATREQ1, DATREQ2)
packet. The packet is sent in sequenced mode and requires an open
virtual circuit to the destination port. REQDAT has three opcodes
(REQDAT0, REQDAT1, and REQDAT2) which determine the data request
packet opcode. The format of REQDAT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-+---+--+-+--------+--------+--------+
|P|M|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+-+-+---+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
REQDAT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
PORT COMMANDS AND RESPONSES Page 7-23
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P The value to be placed in
the P field of the DATREQ
packet.
A + 12 <30:28> M The value to be placed
in the M field of the
DATREQ packet.
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 8 for REQDAT0
OPC = 9 for REQDAT1
OPC = 10 for REQDAT2
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID The value to be placed
in the the XCT_ID field
of the DATREQ packet.
A + 24 <31:0> XCT_LEN The value to be placed
in the XCT_LEN field of
the DATREQ packet.
XCT_LEN<31> MBZ.
A + 28 <31:0> SND_NAME The value to be placed
in the SND_NAME field
of the DATREQ packet.
A + 32 <31:0> SND_OFFSET The value to be placed
in the SND_OFFSET
field of the DATREQ
packet. SND_OFFSET<31>
MBZ.
A + 36 <31:0> REC_NAME The value to be placed
in the REC_NAME field
of the DATREQ packet.
A + 40 <31:0> REC_OFFSET The value to be placed
in the REC_OFFSET
field of the DATREQ
packet. REC_OFFSET<31>
PORT COMMANDS AND RESPONSES Page 7-24
MBZ.
A + 44 Reserved for software.
through Ignored by the port.
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-25
7.4.2 Data Requested
This response is generated after local execution of a REQDAT
command. The format of DATREQ is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+---+-+--+-+--------+--------+--------+
|P| M |0|PS|R| OPC | STATUS | PORT | :A + 12
+-+---+-+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LENGTH | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
DATREQ fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
PORT COMMANDS AND RESPONSES Page 7-26
A + 12 <30:28> M Packet multiple.
See 6.1
A + 12 <27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 8 for DATREQ0.
OPC = 9 for DATREQ1.
OPC = 10 for DATREQ2.
A + 12 <15:8> STATUS Status. Types are:
OK.
Virtual circuit closed.
No path.
Invalid destination port.
Abort.
All except OK close the virtual
circuit.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding REQDAT.
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-27
7.4.3 Return Data
This command sends data from a local named buffer to a
destination named buffer. The data is sent as one or more data
(RETDAT) packets. The last packet has the last packet flag set. The
packets are sent in sequenced mode and require an open virtual circuit
to the destination port. RETDAT is port generated on receipt of a
data request packet on an open virtual circuit. RETDAT is not
normally generated by a port driver. When generated by the port the
data request packet opcode determines the CMDQ on which the RETDAT is
inserted:
1. DATREQ0 - CMDQ0.
2. DATREQ1 - CMDQ1.
3. DATREQ2 - CMDQ2.
The format of RETDAT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-+---+--+-+--------+--------+--------+
|P|M|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+-+-+---+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE OR |
| UNPREDICTABLE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
RETDAT fields are:
PORT COMMANDS AND RESPONSES Page 7-28
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
Copied from the P field
of the DATREQ packet
for port generated
commands.
A + 12 <30:28> M Packet multiple. Copied
from the M field of the
DATREQ packet for
port generated commands.
A + 12 <27> MBZ
A + 12 <26:25> PS Path select. Cleared for
automatic mode in port
generated commands.
A + 12 <24> R Response flag. Cleared
for port generated commands.
A + 12 <23:16> OPC OPC = 17 for RETDAT.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT Port. Copied from the
sending port field
in the DATREQ packet
for port generated
commands.
A + 16 <63:0> XCT_ID Transaction identifier.
Copied from the XCT_ID
field in the DATREQ
packet for port
generated commands.
A + 24 <31:0> XCT_LEN The length of the data
transfer in bytes.
Copied from the XCT_LEN
field of the DATREQ
packet for port
PORT COMMANDS AND RESPONSES Page 7-29
generated commands.
XCT_LEN<31> MBZ.
A + 28 <31:0> SND_NAME The sending buffer
name. Copied from the
SND_NAME field in the
DATREQ packet for
port generated commands.
A + 32 <31:0> SND_OFFSET The starting byte of
the transfer relative
to byte 0 of the
sending buffer. Copied
from the SND_OFFSET field
of the DATREQ packet
for port generated commands.
SND_OFFSET<31> MBZ.
A + 36 <31:0> REC_NAME The receiving buffer
name. Copied from the
REC_NAME field of the
DATREQ packet for
port generated commands.
A + 40 <31:0> REC_OFFSET The starting byte of
the receiving area
relative to byte 0 of
the receiving buffer.
Copied from the REC_OFFSET
field of the DATREQ
packet for automatically
generated commands.
REC_OFFSET<31> MBZ.
A + 44 Reserved for software
through for port driver generated
A - 4 + MQE_LEN commands and UNPREDICTABLE
for port generated
commands. Ignored by the
port.
PORT COMMANDS AND RESPONSES Page 7-30
7.4.4 Data Returned
This response is generated after local execution of a RETDAT
command. The format of DATRET is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+---+-+--+-+--------+--------+--------+
|P| M |0|PS|R| OPC | STATUS | PORT | :A + 12
+-+---+-+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LENGTH | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= SOFTWARE DEFINED =
| OR UNPREDICTABLE |
| | :A - 4
+---------------------------------------+ + MQE_LEN
DATRET fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:28> M Packet multiple.
PORT COMMANDS AND RESPONSES Page 7-31
A + 12 <27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
| A + 12 <23:16> OPC OPC = 17 for DATRET.
A + 12 <15:8> STATUS Status. Types are:
OK.
Virtual circuit closed.
Invalid buffer name.
Buffer length violation.
Access control violation.
No path.
Buffer memory system error.
Packet size violation.
Invalid destination port.
Abort.
All except OK close the virtual
circuit.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding RETDAT.
A - 4 + MQE_LEN For port
generated commands
XCT_LENGTH,SND_OFFSET,
and REC_OFFSET are
UNPREDICTABLE.
PORT COMMANDS AND RESPONSES Page 7-32
7.4.5 Data Received
This response is generated on receipt of a data (RETDAT) packet
with the last packet flag set on an open virtual circuit. It is also
generated on receipt of any data (RETDAT) packet on an open virtual
circuit which results in an error attempting to place the data in a
buffer. The format of DATREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+---------+---------+---------+
| 0 | OPC | STATUS | PORT | :A + 12
+---------+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= UNPREDICTABLE =
| | :A - 4
+---------------------------------------+ + MQE_LEN
DATREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> MBZ
A + 12 <23:16> OPC OPC = 49 for DATREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
Invalid buffer name.
Buffer length violation.
Access control violation.
Buffer memory system error.
Abort.
PORT COMMANDS AND RESPONSES Page 7-33
Packet size violation.
All except OK close the virtual
circuit.
A + 12 <7:0> PORT Port which sent the RETDAT
packet.
A + 16 <63:0> XCT_ID Transaction identifier.
Obtained from the XCT_ID
field of the RETDAT packet.
A + 24 UNPREDICTABLE.
through
A - 4 + MQE_LEN
PORT COMMANDS AND RESPONSES Page 7-34
7.5 TRANSLATION CACHE INVALIDATION
7.5.1 Invalidate Translation Cache
This command invalidates all cached address translations for
named buffers. The format of INVTC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| MBZ |R| OPC | MBZ | PORT | :A + 12
+-------+-+---------+---------+---------+
| | :A + 16
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
INVTC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 24 for INVTC.
A + 12 <7:0> PORT Ignored by the port.
A + 16 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-35
7.5.2 Translation Cache Invalidated
This response is generated after local execution of an INVTC
command. The format of TCINV is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| 0 |R| OPC | STATUS | PORT | :A + 12
+-------+-+---------+---------+---------+
| | :A + 16
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
TCINV fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 24 for TCINV.
A + 12 <15:8> STATUS Status. Types are:
OK.
Abort.
A + 12 <7:0> PORT Not used.
A + 16 Same as fields of the
through corresponding INVTC.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-36
7.6 VIRTUAL CIRCUIT CONTROL
7.6.1 Set Circuit
This command modifies a VCD. If the R-bit is set, the value of
the VCD prior to modification is returned in the CKTSET response. The
format of SETCKT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| MBZ |R| OPC | MBZ | PORT | :A + 12
+-------+-+---------+---------+---------+
| RESERVED | MASK | :A + 16
| FOR +-------------------+
| SOFTWARE | M_VALUE | :A + 20
+-------------------+-------------------+
| RESERVED FOR RESPONSE | :A + 24
+---------------------------------------+
| | :A + 28
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
SETCKT fields are:
Longword Bits Field Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 25 for SETCKT.
A + 12 <7:0> PORT Port for which VCD
PORT COMMANDS AND RESPONSES Page 7-37
is to be modified.
A + 16 <31:16> Reserved for software.
Ignored by the port.
A + 16 <15:0> MASK Mask to control mod-
ification of the VCD.
MASK<15:0> controls
modification of
VCD<15:0> as follows:
If MASK is set
VCD is loaded with
M_VALUE; otherwise
VCD is unchanged.
A + 20 <31:16> Reserved for software.
Ignored by the port.
A + 20 <15:0> M_VALUE Modification value.
A + 24 <31:0> Reserved for response.
A + 28 Reserved to software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-38
7.6.2 Circuit Set
This response is generated after local execution of a SETCKT
command. The format of CKTSET is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| 0 |R| OPC | STATUS | PORT | :A + 12
+-------+-+---------+---------+---------+
| RESERVED | MASK | :A + 16
| FOR +-------------------+
| SOFTWARE | M_VALUE | :A + 20
+-------------------+-------------------+
| UNPREDICTABLE | IN_VCD | :A + 24
+-------------------+-------------------+
| | :A + 28
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
Fields of CKTSET are:
Longword Bits Field Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 25 for CKTSET.
A + 12 <15:8> STATUS Status. Types are:
OK.
Invalid destination port.
PORT COMMANDS AND RESPONSES Page 7-39
Abort.
A + 12 <7:0> PORT Port for which VCD
is to be modified.
A + 16 <31:0> Same as fields of the
through corresponding SETCKT.
A + 20
A + 24 <31:16> UNPREDICTABLE.
A + 24 <15:0> IN_VCD Initial value of VCD
before modification.
A + 28 Same as fields of
through corresponding SETCKT.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-40
7.7 CI EVENT COUNTING
CI event counting is controlled by the Read Count (RDCNT)
command. The counts of CI packet ACKs, NAKs, NO_RSPs, and datagrams
discarded are kept for a single specified port or for all ports (by
specifying port 255).
RDCNT clears the counters and selects the port (or all ports) for
which subsequent counts will be kept. If the R-bit is set, a Count
Read (CNTRD) response is generated giving the values of the counters
prior to clearing. The counter values are unsigned 32-bit integers.
If a counter overflows, the overflowing counter is set to
'FFFFFFFF'(hex) and locked until cleared.
If an invalid port is selected for counting, the counters are
cleared, the values returned (with error status), and the invalid port
selected. No subsequent events will be counted.
On entry to the Enabled or Enabled/Maintenance state, the
counters are cleared and counting is selected for all ports.
Self-directed commands do not effect the counters unless the
self-directed commands send on the CI. Thus, if the port's own number
is selected, the counter value interpretation is implementation
specific.
PORT COMMANDS AND RESPONSES Page 7-41
7.7.1 Read Count
This command clears the CI event counters and enables counting of
events corresponding to a selected port or to all ports. If the R-bit
is set the current counter values are returned in the CNTRD response.
The format of RDCNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| MBZ |R| OPC | STATUS | PORT | :A + 12
+-------+-+---------+---------+---------+
| | :A + 16
= RESERVED FOR =
| RESPONSE |
| | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
RDCNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
See 6.1
A + 8 <23:16> OPC OPC = 26 for RDCNT
A + 12 <7:0> PORT Port for which events
are to be counted. PORT =
255 results in
counting events for
PORT COMMANDS AND RESPONSES Page 7-42
all ports.
A + 16 To be filled by values
through of event counters in
A + 43 response.
A + 44 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-43
7.7.2 Count Read
This response is generated after local execution of a RDCNT
command. The current counter values are returned. Counter values of
'FFFFFFFF' (hex) are not valid and indicate error or overflow. The
format of CNTRD is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-------+-+---------+---------+---------+
| 0 |R| OPC | STATUS | PORT | :A + 12
+-------+-+---------+---------+---------+
| PATH0_ACK | :A + 16
+---------------------------------------+
| PATH0_NAK | :A + 20
+---------------------------------------+
| PATH0_NO_RSP | :A + 24
+---------------------------------------+
| PATH1_ACK | :A + 28
+---------------------------------------+
| PATH1_NAK | :A + 32
+---------------------------------------+
| PATH1_NO_RSP | :A + 36
+---------------------------------------+
| DG_DISC | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
CNTRD fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:25> MBZ
A + 12 <24> R Response Queue bit.
PORT COMMANDS AND RESPONSES Page 7-44
See 6.1
A + 12 <23:16> OPC OPC = 26 for CNTRD.
A + 12 <15:8> STATUS Status. Types are:
OK.
Invalid destination port.
Abort.
A + 12 <31:0> PORT Same as the port field
of the corresponding
RDCNT. Note that this
is not necessarily the
port for which the events
were counted.
A + 16 <31:0> PATH0_ACK Total ACKs received
on path 0.
A + 20 <31:0> PATH0_NAK Total NAKs received on
path 0.
A + 24 <31:0> PATH0_NO_RSP Total NO_RSPs received
on path 0.
A + 28 <31:0> PATH1_ACK Total ACKs received
on path 1. Zero for
single path ports.
A + 32 <31:0> PATH1_NAK Total NAKs received
on path 1. Zero for
single path ports.
A + 36 <31:0> PATH1_NO_RSP Total NO_RSPs received
on path 1. Zero for
single path ports.
A + 40 <31:0> DG_DISC Total number of datagrams
discarded: All CI packets
for which a DFREEQ entry
is needed but unavailable.
A + 44 Same as fields of the
through corresponding RDCNT.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-45
7.8 LOOPBACK TESTING
The loopback test is the local port sending itself a loopback
packet on the CI and receiving that packet. Unlike other commands
which when self directed may or may not actually use the CI, the Send
Loopback (SNDLB) command always uses the CI.
Because some port implementations may have limited ability to
send and receive at the same time, SNDLB is specified in a special
way. It is required that the port driver compute the cyclic
redundancy check (CRC) required by the CI packet. This is
conveniently done using the VAX CRC instruction.
7.8.1 Send Loopback
This command sends a loopback (LB) packet. The packet is sent in
unsequenced mode. The format of SNDLB is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+---+--+-+-------+---------+---------+
|PF|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+--+---+--+-+-------+---------+---------+
| | LB_LEN | :A + 16
| +-------------------+
| |
= LB =
| |
+---------------------------------------+
| CRC | :A + 18
+---------------------------------------+ + LB_LEN
| | :A + 22
= RESERVED FOR = + LB_LEN
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
SNDLB fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
PORT COMMANDS AND RESPONSES Page 7-46
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 13 for SNDLB.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port number.
Normally the local port
number.
A + 18 LB Loopback text in bytes.
through Valid values are 0 to the
A + 17 + LB_LEN minimum of DQE_LEN-22 and
IBUF_LEN-4.
A + 18 + <31:0> CRC The packet CRC.
A + 22 + LB_LEN Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-47
The CRC is computed over the following data structure:
7 0
+-----------------------------+
| LB_LEN + 7 | :P
| |
+-----------------------------+
| PORT | :P + 2
+-----------------------------+
| not (PORT) | :P + 3
+-----------------------------+
| LCL_PORT : :P + 4
+-----------------------------+
| 13 | :P + 5
+--+--------------------------+
|PF| 0 | :P + 6
+--+--------------------------+
| | :P + 7
= LB =
| | :P - 6
+-----------------------------+ + LB_LEN
where:
Byte Bits Description
P <15:0> The value of the LB_LEN
field in the SNDLB plus 7.
P+2 <7:0> The value of the PORT field
in the SNDLB.
P+3 <7:0> The 1's complement of the
PORT field in the SNDLB.
P+4 <7:0> The local port number.
P+5 <7:0> The value 13.
P+6 <7> The value of the PF field in
the SNDLB.
P+6 <6:0> The value 0.
P+7 The value of LB field in the
through SNDLB.
P-6 + LB_LEN
Using the VAX CRC instruction the following steps apply:
1. Use the AUTODIN-II polynomial (see DEC STD 032 VAX
Architecture Standard).
PORT COMMANDS AND RESPONSES Page 7-48
2. Initialize to -1.
3. The CRC value to used in SNDLB is the 1's complement of the
result.
PORT COMMANDS AND RESPONSES Page 7-49
7.8.2 Loopback Sent
This response is generated after local execution of a SNDLB
command. The format of LBSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-+--+-+---------+---------+---------+
|PF|0|PS|R| OPC | STATUS | PORT | :A + 12
+--+-+--+-+---------+---------+---------+
| | LB_LEN | :A + 16
| +-------------------+
| |
= LB =
| |
+---------------------------------------+
| CRC | :A + 18
+---------------------------------------+ + LB_LEN
| | :A + 22
| | + LB_LEN
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
LBSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> PF Packing format.
See 6.1
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
PORT COMMANDS AND RESPONSES Page 7-50
See 6.1
A + 12 <23:16> OPC OPC = 13 for LBSNT.
A + 12 <15:8> STATUS Status. Types are:
OK.
No path.
Packet size violation.
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
Normally the local
port number.
A + 16 Same as fields of the
through corresponding SNDLB.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-51
7.8.3 Loopback Received
This response is generated on receipt of a loopback (LB) packet.
The format of LBREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---+---+-+---------+---------+---------+
| 0 |RP |0| OPC | STATUS | PORT | :A + 12
+---+---+-+---------+---------+---------+
| | LB_LEN | :A + 16
| +-------------------+
| |
= LB =
| |
+---------------------------------------+
| | :A + 18
| UNPREDICTABLE | + LB_LEN
| | :A - 4
+---------------------------------------+ + DQE_LEN
LBREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:27> MBZ
A + 12 <26:25> RP Receive path. Path
on which the LB packet
was received.
RP = 1 path 0.
RP = 2 path 1.
A + 12 <24> MBZ
A + 12 <23:16> OPC OPC = 45 for LBREC.
PORT COMMANDS AND RESPONSES Page 7-52
A + 12 <15:8> STATUS Status. Types are:
OK.
Packet size violation.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <15:0> Intended loopback text
length in bytes. Actual
length if STATUS does not
indicate packet size
violation.
A + 16 <31:16> LB If STATUS = OK then
bytes A + 18 through
A + 17 + LB_LEN contain
loopback text.
If STATUS = packet size
violation and if DQE_LEN
< = IBUF_LEN in PPR then
bytes A + 18 through A - 1
+ DQE_LEN contain the first
DQE_LEN - 18 bytes of the
loopback text.
If STATUS = packet size
violation and if QE_LEN >
IBUF_LEN in PPR then bytes
A + 18 through A - 17 +
IBUF_LEN contain the first
IBUF_LEN bytes of the
loopback text.
The remaining bytes of the
queue entry (if any) are
UNPREDICTABLE.
PORT COMMANDS AND RESPONSES Page 7-53
7.9 CI CLUSTER CONFIGURATION
7.9.1 Request ID
This command sends an ID request (IDREQ) packet. The packet is
sent in unsequenced mode. The receiving port will return an id (ID)
packet if in the Enabled, Enabled/ Maintenance, Disabled/Maintenance
or Uninitialized/Maintenance states. The ID packet returned carries
the transaction ID value specified in the REQID command. The ID
packet is also sent in unsequenced mode. The format of REQID is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+----+--+-+---------+---------+---------+
| MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+----+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
REQID fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 5 for REQID.
PORT COMMANDS AND RESPONSES Page 7-54
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction identifier.
A + 24 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-55
7.9.2 ID Requested
This response is generated after local execution of a REQID
command. The format of IDREQ is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+----+--+-+---------+---------+---------+
| 0 |PS|R| OPC | STATUS | PORT | :A + 12
+----+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
IDREQ fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 5 for IDREQ.
A + 12 <15:8> STATUS Status. Types are:
OK.
No path.
Abort.
PORT COMMANDS AND RESPONSES Page 7-56
A + 12 <7:0> PORT The destination port
See 6.1
A + 16 Same as fields of the
through corresponding REQID.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-57
7.9.3 ID Received
This response is generated on receipt of an ID (ID) packet. The
format of IDREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
| +-+--+-+--+-+-------+---------+---------+
| |0|SP|0|RP|0| OPC | STATUS | PORT | :A + 12
| +-+--+-+--+-+-------+---------+---------+
| XCT_ID | :A + 16
| |
+-+-------------------------------------+
|D| MAINT_ID | :A + 24
+-+-------------------------------------+
| CODE_REV | :A + 28
+---------------------------------------+
| PORT_FCN | :A + 32
+------------------------+--+-+---------+
| |PT|M| RST_PORT| :A + 36
| SYS_STATE |_ |N| |
| |ST|T| |
+------------------------+--+-+---------+
| | PORT_FCN_EXT | :A + 40
+---------------------------------------+
| | :A + 44
= 0 =
| |
+---------------------------------------+
| | :A + 64
= UNPREDICTABLE =
| | :A - 4
+---------------------------------------+ + DQE_LEN
IDREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
PORT COMMANDS AND RESPONSES Page 7-58
A + 12 <31:30> MBZ
A + 12 <29:28> SP Send Path
SP = 0 internal loopback.
SP = 1 is path 0.
SP = 2 is path 1.
A + 12 <26:25> RP Receive Path
RP = 0 internal loopback.
RP = 1 is path 0.
RP = 2 is path 1.
A + 12 <23:16> OPC OPC = 43 for IDREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
A + 12 <7:0> PORT Port sending
the ID packet.
A + 16 <63:0> XCT_ID Transaction identifier.
Same as XCT_ID field of
the corresponding IDREQ
packet.
A + 24 <31> D Dual path. D = 1 for
dual path port. D = 0 for
single path port.
A + 24 <30:0> MAINT_ID Port Type. Values are
defined in Implementation
Functionality appendix.
A + 28 <31:0> CODE_REV Port microcode revision.
Definition of values is
implementation specific.
This field may be defined
to carry the revision levels
of multiple areas of control
store.
A + 32 <31:0> PORT_FCN Port functionality.
Value specifies which
functions are supported
in the implementation.
See Implementation
Functionality appendix
for specification of
field format and values.
A + 36 <31:11> SYS_STATE Implementation specific system
state.
A + 36 <10:9> PT_ST Port state (of destination
PORT COMMANDS AND RESPONSES Page 7-59
port).
ST = 0 Uninitialized.
ST = 1 Disabled.
ST = 2 Enabled.
A + 36 <8> MNT Maintenance. Set for
/Maintenance states.
A + 36 <7:0> RST_PORT Port which caused the last
reset of the port sending the
ID packet.
|
| A + 40 <31:0> PORT_FCN_EXT Port Functionality
| through Extension. If the
| A + 43 contents of these
| bits is all zeros,
| then this field is
| not implemented.
| This field is
| used by diagnostic and
| system software to
| provide information
| about remote port
| configuration.
| See Appendix G for
| specific bit field
| definitions.
|
|
|
| A + 44 <31:11> Zero.
through
A + 60
A + 64 UNPREDICTABLE.
through
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-60
7.10 RESETTING SYSTEMS
| The Send Reset (SNDRST) command sends a reset (RST) packet. The
| force reset flag is set in the reset packet if the F-bit in the
| command is set. For a description of resetting a remote node, see
| section 5.4.1.
The Send Reset (SNDRST) command sends a reset (RST) packet. The
force reset flag is set in the reset packet if the F-bit in the
command is set.
PORT COMMANDS AND RESPONSES Page 7-61
7.10.1 Send Reset
This command sends a reset (RST) packet. The packet is sent in
unsequenced mode. The format of SNDRST is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+---+--+-+---------+---------+--------+
|F|MBZ|PS|R| OPC | MBZ | PORT | :A + 12
+-+---+--+-+---------+---------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
SNDRST fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> F Force reset.
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 6 for SNDRST.
A + 12 <15:8> MBZ
PORT COMMANDS AND RESPONSES Page 7-62
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction identifier.
A + 24 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-63
7.10.2 Reset Sent
This response is generated after local execution of a SNDRST
command. The format of RSTSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-+--+-+----------+---------+---------+
|F|0|PS|R| OPC | STATUS | PORT | :A + 12
+-+-+--+-+----------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
RSTSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> F Force reset.
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 6 for RSTSNT
A + 12 <15:8> STATUS Status. Types are:
OK.
No path.
PORT COMMANDS AND RESPONSES Page 7-64
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding SNDRST.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-65
7.11 SENDING MAINTENANCE DATA
The Send Maintenance Data (SNDMDAT) command is used to send a
maintenance data (SNTMDAT) packet. A port receiving a maintenance
data packet stores the data and returns a maintenance confirm (MCNF)
packet only if the port is in the Uninitialized/Maintenance state and
the RST_PORT register contains the number of the port sending the
maintenance data packet. The MCNF packet is not sent if there is any
error in processing the received SNTMDAT packet.
A self-directed SNDMDAT results in the maintenance data being
stored if the port is in the Enabled/Maintenance state.
7.11.1 Send Maintenance Data
This command sends data from a local named buffer to a
destination system. The data is sent in a single maintenance data
(SNTMDAT) packet with the last packet flag set. The packet is sent in
unsequenced mode. Upon receiving that packet the destination port
stores the data and sends a maintenance confirm (MCNF) packet. That
packet is also sent in unsequenced mode. The format of SNDMDAT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-----+--+-+--------+--------+--------+
|P| MBZ |PS|R| OPC | MBZ | PORT | :A + 12
+-+-----+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-66
SNDMDAT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:28> M Packet multiple. MBZ for
for SNDMDAT.
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 18 for SNDMDAT.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction ID.
A + 24 <31:0> XCT_LEN The length of the data
transfer in bytes.
If the data packet base
size = 512 (P=0), XCT_LEN
<=512; if the data packet base
size = 576 (P=1),
XCT_LEN <=576.
A + 28 <31:0> SND_NAME The sending buffer
name.
A + 32 <31:0> SND_OFFSET The starting byte of
the transfer relative
to byte 0 of the
sending buffer.
SND_OFFSET<31> MBZ.
A + 36 <31:0> REC_NAME Implementation
specific name of
PORT COMMANDS AND RESPONSES Page 7-67
the receiving memory
area.
A + 40 <31:0> REC_OFFSET Offset (in bytes) of
receiving memory area.
A + 44 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-68
7.11.2 Maintenance Data Sent
This response is generated after local execution of a SNDMDAT
command. The format of MDATSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-----+--+-+--------+--------+--------+
|P| 0 |PS|R| OPC | STATUS | PORT | :A + 12
+-+-----+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
MDATSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:27> MBZ
PORT COMMANDS AND RESPONSES Page 7-69
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 18 for MDATSNT.
A + 12 <15:8> STATUS Status. Types are:
OK.
Invalid buffer name.
Access control violation.
Buffer length violation.
Access control violation.
No path.
Buffer memory system error.
Packet size violation.
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding SNDMDAT.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-70
7.11.3 Maintenance Confirm Received
This response is generated on receipt of a maintenance confirm
(MCNF) packet. The format of MCNFREC is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+---------+---------+---------+
| 0 | OPC | STATUS | PORT | :A + 12
+---------+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= UNPREDICTABLE =
| | :A - 4
+---------------------------------------+ + DQE_LEN
MCNFREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> MBZ
A + 12 <23:16> OPC OPC = 36 for MCNFREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
A + 12 <7:0> PORT Port which sent
the maintenance confirm
packet.
A + 16 <63:0> XCT_ID Transaction identifier.
Same value as in the
XCT_ID field of the
corresponding SNTMDAT packet.
PORT COMMANDS AND RESPONSES Page 7-71
A + 24 UNPREDICTABLE.
through
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-72
7.12 REQUESTING MAINTENANCE DATA
The Request Maintenance Data (REQMDAT) command sends a
maintenance data request packet. A port receiving this packet returns
data in a return maintenance data (RETMDAT) packet only if the port is
in the Uninitialized/Maintenance state and the RST_PORT register
contains the number of the port sending the packet. The RETMDAT
packet is not sent if there is any error in processing the REQMDAT
packet.
A self directed REQMDAT command results in data being returned if
the port is in the Enabled/Maintenance state.
7.12.1 Request Maintenance Data
This command sends a maintenance data request (MDATREQ) packet to
a destination port. The packet is sent in unsequenced mode. Upon
receipt of that packet, the destination port returns data to the local
port in a single maintenance data (RETMDAT) packet with the last
packet flag set. This packet is also sent in unsequenced mode. The
format of the REQMDAT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-----+--+-+--------+--------+--------+
|P| MBZ |PS|R| OPC | MBZ | PORT | :A + 12
+-+-----+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ +DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-73
REQMDAT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:28> M Packet multiple. MBZ
for REQMDAT command.
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 14 for REQMDAT.
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction ID.
A + 24 <31:0> XCT_LEN The number of bytes
to be read from
the destination. If
the data packet base
size = 512 (P = 0),
XCT_LEN <=512; if
the data packet base
size = 576 (P = 1),
XCT_LEN <=576.
(These size limits are
NOT checked by the port.)
A + 28 <31:0> SND_NAME The implementation
specific name of the
sending memory area.
A + 32 <31:0> SND_OFFSET Offset (in bytes) of
sending memory area.
A + 36 <31:0> REC_NAME The name of the local
system buffer to receive
PORT COMMANDS AND RESPONSES Page 7-74
the maintenance data.
A + 40 <31:0> REC_OFFSET The offset in the local
system buffer at which to
begin transferring the
maintenance data.
REC_OFFSET<31> MBZ.
A + 44 Reserved for software.
through Ignored by the port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-75
7.12.2 Maintenance Data Requested
This response is generated after local execution of a REQMDAT
command. The format of MDATREQ is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+-+-----+--+-+--------+--------+--------+
|P| 0 |PS|R| OPC | STATUS | PORT | :A + 12
+-+-----+--+-+--------+--------+--------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| XCT_LEN | :A + 24
+---------------------------------------+
| SND_NAME | :A + 28
+---------------------------------------+
| SND_OFFSET | :A + 32
+---------------------------------------+
| REC_NAME | :A + 36
+---------------------------------------+
| REC_OFFSET | :A + 40
+---------------------------------------+
| | :A + 44
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ +DQE_LEN
MDATREQ fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> P Data packet base size.
See 6.1
A + 12 <30:27> MBZ
PORT COMMANDS AND RESPONSES Page 7-76
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 14 for MDATREQ.
A + 12 <15:8> STATUS Status. Types are:
OK.
No path.
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding MDATREQ.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-77
7.12.3 Maintenance Data Received
This response is generated on receipt of a maintenance data
(RETMDAT) packet with the last packet flag set. The format of MDATREC
is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+---------+---------+---------+
| 0 | OPC | STATUS | PORT | :A + 12
+---------+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| | :A + 24
= UNPREDICTABLE =
| | :A - 4
+---------------------------------------+ + DQE_LEN
MDATREC fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> MBZ
A + 12 <23:16> OPC OPC = 51 for MDATREC.
A + 12 <15:8> STATUS Status. Types are:
OK.
Invalid buffer name.
Buffer length violation.
Access control violation.
Buffer memory system error.
Packet size violation.
A + 12 <7:0> PORT Port which sent the
maintenance data packet.
PORT COMMANDS AND RESPONSES Page 7-78
A + 16 <63:0> XCT_ID Transaction identifier.
Same as the XCT_ID
field of the corresponding
MDATREQ packet.
A + 24 UNPREDICTABLE
through
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-79
7.13 STARTING SYSTEMS
| The Send Start (SNDSTRT) command sends a start (STRT) packet.
| For a description of the starting of remote nodes, see section 5.4.4.
7.13.1 Send Start
This command sends a start (STRT) packet. The packet is sent in
unsequenced mode. The format of SNDSTRT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-+--+-+---------+---------+---------+
|DS|0|PS|R| OPC | MBZ | PORT | :A + 12
+--+-+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| STRT_ADDR | :A + 24
+---------------------------------------+
| | :A + 28
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
Fields specific to SNDSTRT are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> DS Default start address.
If set, systems implementing
variable start addresses
use an implementation
specific default address.
PORT COMMANDS AND RESPONSES Page 7-80
A + 12 <30:27> MBZ
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 7 for SNDSTRT
A + 12 <15:8> MBZ
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 <63:0> XCT_ID Transaction identifier.
A + 24 <31:0> STRT_ADDR Starting address.
A + 28 <31:0> Reserved for software.
through Ignored by port.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-81
7.13.2 Start Sent
This response is generated after local execution of a SNDSTRT
command. The format of STRTSNT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+--+-+--+-+---------+---------+---------+
|DS|0|PS|R| OPC | STATUS | PORT | :A + 12
+--+-+--+-+---------+---------+---------+
| XCT_ID | :A + 16
| |
+---------------------------------------+
| STRT_ADDR | :A + 24
+---------------------------------------+
| | :A + 28
= RESERVED FOR =
| SOFTWARE |
| | :A - 4
+---------------------------------------+ + DQE_LEN
STRTSNT fields are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31> DS Default start address.
A + 12 <30:27> M Packet multiple.
See 6.1
A + 12 <26:25> PS Path Select.
See 6.1
A + 12 <24> R Response Queue bit.
See 6.1
A + 12 <23:16> OPC OPC = 7 for STRTSNT
A + 12 <15:8> STATUS Status. Types are:
PORT COMMANDS AND RESPONSES Page 7-82
OK.
No path.
Invalid destination port.
Abort.
A + 12 <7:0> PORT The destination port.
See 6.1
A + 16 Same as fields of the
through corresponding SNDSTRT.
A - 4 + DQE_LEN
PORT COMMANDS AND RESPONSES Page 7-83
7.14 UNRECOGNIZED COMMAND
This response is generated when the port executes a command with:
1. Invalid or unimplemented opcode field.
2. Invalid FLAGS field including non-zero bits in bit positions
specified as MBZ (except for the M-field).
3. Non-zero STATUS field. Note that the value of the STATUS
field is overwritten with unrecognized command status.
The format of UNRCMD is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+--------+---------+----------+
| | OPC | STATUS | | :A + 12
| +--------+---------+ |
| |
= SOFTWARE =
| DEFINED |
| | :A - 4
+---------------------------------------+ + {D/M}QE_LEN
Fields of UNRCMD are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <23:16> OPC Unrecognized opcode.
A + 12 <15:8> STATUS Status. Types are:
Unrecognized command.
A + 12 <31:24> Software defined.
and Same as fields of
A + 12 <7:0> corresponding command.
through
A - 4 + {D/M}QE_LEN
PORT COMMANDS AND RESPONSES Page 7-84
7.15 UNRECOGNIZED PACKET
This response is generated when the port receives a packet with
(1) an illegal opcode or flags field (2) an invalid source address, or
(3) a maintenance packet when the port is not in the appropriate
state. The latter cases include:
1. Reset packet in the Enabled state.
2. Maintenance data, maintenance data request, and start packets
in either the Enabled or Enabled/Maintenance state.
Note that setting DQI in VCD inhibits generating UNRPKT from
packets from port X. Setting DQI in VCD<255> inhibits generating
UNRPKT from packets with an invalid source port number.
The format of UNRPKT is:
3
1 0
+---------------------------------------+
| FLINK | :A
+---------------------------------------+
| BLINK | :A + 4
+---------------------------------------+
| RESERVED FOR SOFTWARE | :A + 8
+---------+-------+----------+----------+
| FLAGS | OPC | STATUS | PORT | :A + 12
+---------+-------+----------+----------+
| | PKT_LEN | :A + 16
| +---------------------+
| |
= PKT =
| |
+---------------------------------------+
| | :A + 18
= UNPREDICTABLE = + PKT_LEN
| | :A - 4
+---------------------------------------+ + DQE_LEN
Fields of UNRPKT are:
Longword Bits Name Description
A <31:0> FLINK Queue forward link.
See 6.1
A + 4 <31:0> BLINK Queue backward link.
See 6.1
A + 8 <31:0> Reserved for software.
Ignored by the port.
A + 12 <31:24> FLAGS Packet flags.
PORT COMMANDS AND RESPONSES Page 7-85
A + 12 <23:16> OPC The packet opcode
A + 12 <15:8> STATUS Status. Types are:
Unrecognized packet.
A + 12 <7:0> PORT Port which sent the packet.
A + 16 <15:0> PKT_LEN The intended length of the
packet text.
A + 16 <31:16> PKT Packet text. If PKT_LEN
through < = minimum of IBUF_LEN and
A - 4 + DQE_LEN DQE_LEN-18, then bytes A + 18
through A + 17 + PKT_LEN
contain the packet text.
Otherwise bytes A+18 through
A + 17 + (minimum of IBUF_LEN
and DQE_LEN - 18) bytes of
packet text. The remaining
bytes of the queue entry
(if any) are UNPREDICTABLE.
CHAPTER 8
PORT REGISTERS AND THE PORT QUEUE BLOCK
In the description of the registers and the PQB the protocol for
their use is specified. The result of violating the protocol is
UNDEFINED.
8.1 PORT QUEUE BLOCK
The Port Queue Block (PQB) is a page aligned structure which
contains the queue headers or pointers to the queue headers.
Additionally it contains the queue entry sizes, the addresses and
lengths of the memory mapping structures, and a maintenance logout
area. The PQB must be set up when the port is in one of the two
Disabled states. While the port is in either of the Enabled states,
the PQB must not be modified directly by the port driver. (Certain
parts of the PQB are of course modified indirectly by executing queue
instructions.) The format of the PQB is:
+---------------------------------------+
| CMDQ0_FLINK | :A
+---------------------------------------+
| CMDQ0_BLINK | :A + 4
+---------------------------------------+
| CMDQ1_FLINK | :A + 8
+---------------------------------------+
| CMDQ1_BLINK | :A + 12
+---------------------------------------+
| CMDQ2_FLINK | :A + 16
+---------------------------------------+
| CMDQ2_BLINK | :A + 20
+---------------------------------------+
| CMDQ3_FLINK | :A + 24
+---------------------------------------+
| CMDQ3_BLINK | :A + 28
+---------------------------------------+
| RESPQ_FLINK | :A + 32
+---------------------------------------+
| RESPQ_BLINK | :A + 36
+---------------------------------------+
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-2
+---------------------------------------+
| DFREEQ_HDR | :A + 40
+---------------------------------------+
| MFREEQ_HDR | :A + 44
+---------------------------+-----------+
| MBZ | DQE_LEN | :A + 48
+---------------------------+-----------+
| MBZ | MQE_LEN | :A + 52
+---------------------------+-----------+
| VPQB_BASE | :A + 56
+---------------------------------------+
| BDT_BASE | :A + 60
+------------------+--------------------+
| MBZ | BDT_LEN | :A + 64
+------------------+--------------------+
| SPT_BASE | :A + 68
+-----------+---------------------------+
| MBZ | SPT_LEN | :A + 72
+-----------+---------------------------+
| GPT_BASE | :A + 76
+-----------+---------------------------+
| MBZ | GPT_LEN | :A + 80
| +-----------+---------------------------+
| | KEEP_ALIVE | :A + 84
| +---------------------------------------+
| | | :A + 90
= RESERVED =
| |
+---------------------------------------+
| | :A + 256
= DQE_LOGOUT =
| |
+---------------------------------------+
| | :A + 320
= MQE_LOGOUT =
| |
+---------------------------------------+
| | :A + 384
| RESERVED FOR |
= PORT LOGOUT =
| | :A + 508
+---------------------------------------+
Where:
Longword Bits Name Description
A <31:0> CMDQ0_FLINK Displacement
relative to
VPQB_BASE of first
entry in CMDQ0.
A + 4 <31:0> CMDQ0_BLINK Displacement
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-3
relative to
VPQB_BASE of last
entry in CMDQ0.
A + 8 <31:0> CMDQ1_FLINK Displacement
relative to
VPQB_BASE + 8 of first
entry in CMDQ1.
A + 12 <31:0> CMDQ1_BLINK Displacement
relative to
VPQB_BASE + 8 of last
entry in CMDQ1.
A + 16 <31:0> CMDQ2_FLINK Displacement relative
to VPQB_BASE + 16 of
first entry in CMDQ2.
A + 20 <31:0> CMDQ2_BLINK Displacement relative
to VPQB_BASE + 16 of
last entry in CMDQ2.
A + 24 <31:0> CMDQ3_FLINK Displacement relative
to VPQB_BASE + 24 of
first entry in CMDQ3.
A + 28 <31:0> CMDQ3_BLINK Displacement relative
to VPQB_BASE + 24 of
last entry in CMDQ3.
A + 32 <31:0> RESPQ_FLINK Displacement
relative to
VPQB_BASE + 32 of first
entry in the
Response Queue.
A + 36 <31:0> RESPQ_BLINK Displacement
relative to
VPQB_BASE + 32 of last
entry in the
Response Queue.
A + 40 <31:0> DFREEQ_HDR System virtual
address of Datagram
Free Queue header.
Bits <2:0> MBZ.
A + 44 <31:0> MFREEQ_HDR System virtual
address of Message
Free Queue header.
Bits <2:0> MBZ.
A + 48 <11:0> DQE_LEN Datagram Queue entry
length in bytes.
64<=DQE_LEN<=IBUF_LEN.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-4
A + 52 <11:0> MQE_LEN Message Queue entry
length in bytes.
44<=MQE_LEN VPQB_BASE System virtual
address of the base
of the PQB. Bit<31>
must be one;
Bits<30> and
<8:0> MBZ.
A + 60 <31:0> BDT_BASE System Virtual
address of the base
the of BDT. The BDT
is octaword aligned. Bits
<3:0> and <30>
MBZ; Bit<31> must be
one.
A + 64 <15:0> BDT_LEN Length of the BDT in
octawords.
A + 68 <31:0> SPT_BASE Physical address of
the base of System
Page Table. Bits
<31:30> and <1:0>
MBZ.
A + 72 <21:0> SPT_LEN Length of the SPT
in longwords. Bits
<31:22> MBZ.
A + 76 <31:0> GPT_BASE System virtual
address of the base
of the Global Page
Table. Bits <1:0>
and <30> MBZ; Bit
<31> must be one.
A + 80 <21:0> GPT_LEN Length of the GPT in
longwords. Bits
<31:22> MBZ.
| A + 84 <31:0> KEEP_ALIVE Maintenance/Sanity timer
| period in seconds. See
| Section 8.1.1. When
| the port is in the
| ENABLED state, then:
|
| IF KEEP_ALIVE = ZERO
| THEN
| timer = 100sec
| ELSE
| timer = KEEP_ALIVE
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-5
| or 100sec
| whichever is
| smaller.
|
|
| A + 90 Reserved.
through
A + 252
A + 256 <31:0> DQE_LOGOUT Datagram Queue Entry
through powerfail logout area.
A + 316 Upon detection of power
failing, the port
will write the
addresses of all
internally held
datagram queue entries
to successive longwords
(starting at A + 256)
of the PQB. Each
longword of this block
should be initialized
to the value 1.
A + 320 <31:0> MQE_LOGOUT Message Queue Entry
through powerfail logout area.
A + 380 Upon detection of power
failing, the port
will write the addresses
of all internally held
message queue entries to
successive longwords
(starting at A + 320) of
the PQB. Each longword
of this block should be
initialized to value
1.
A + 384 Reserved for port
through maintenance logout
A + 508 area. Implementation
specific definition.
|
|
|
| 8.1.1 Port Maintenance And Sanity Timer
|
| Port Maintenance/Sanity Timer period in seconds is determined by
| the value in the KEEP_ALIVE field of the PQB. All ports implementing
| a variable Maintenance/Sanity Timer will read this field when
| transitioning to the ENABLED State.
|
| The Maintenance/Sanity Timer expiration period will be determined as
| follows:
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-6
| 1. If the Port is in the Uninitialized state following power-up,
| then the timer expiration period will be an implementation
| specific amount long enough to allow local microcode loading.
|
| 2. If the conditions for no. 1 are not true, and if the port
| has never successfully transitioned to the ENABLED state then
| the timer expiration period will be 100 seconds.
|
| 3. Port transition from DISABLED to ENABLED State is accompanied
| by setting the Maintenance/Sanity Timer expiration period as
| follows:
|
| o If KEEP_ALIVE is Equal to ZERO then Set
| Maintenance/Sanity Timer to 100 Seconds
|
| o If KEEP_ALIVE is Not Equal to ZERO then set the timer to
| the number of seconds specified in KEEP_ALIVE or 100
| seconds, whichever is smaller.
|
|
| When the port is in the ENABLED state, the failure of the port
| driver to reset the Maintenance/Sanity Timer within the KEEP_ALIVE
| interval will cause the port to make a transition to the
| UNINITIALIZED/MAINTENANCE state.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-7
8.2 PORT REGISTERS
8.2.1 Port Queue Block Base Register (PQBBR)
This register contains the physical address of the base of the
Port Queue Block. The format of PQBBR is:
3
1 0
+---------------------------------------+
| PQB BASE |
+---------------------------------------+
Bits <31:30> and <8:0> MBZ. PQBBR is read/write by the port
driver and writable only when the port is in the Disabled or
Disabled/Maintenance state. Its value before being written is
UNPREDICTABLE.
8.2.2 Port Status Register (PSR)
This register returns status to the port driver after an
interrupt. When an interrupt is requested by the port, the value of
PSR is fixed and is not changed until the port driver releases the
register by writing the Port Status Release Control Register (PSRCR).
PSR is read-only by the port driver and may be read only after an
interrupt and before writing PSRCR. The format of PSR is:
| 3
| 1 7 6 5 4 3 2 1 0
| +-+---------------------+-+-+-+-+-+-+-+-+
| |M| |M|M|M|D|P|P|M|R|
| |T| 0 |I|E|S|S|I|D|F|Q|
| |E| |S| |E|E|C|C|Q|A|
| | | |C| | | | | |E| |
| +-+---------------------+-+-+-+-+-+-+-+-+
Where:
Bits Name Description
<0> RQA Response Queue Available. When set,
indicates port has inserted an entry on an
empty Response Queue.
<1> MFQE Message Free Queue Empty. When set, the port
attempted to remove an entry from the MFREEQ
and found it empty. Port processing
of commands continues and, thus, the MFREEQ
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-8
may not be empty at the time the
port driver gets control.
<2> PDC Port Disable Complete. When set, the port
is in the Disabled or Disabled/Maintenance
state.
<3> PIC Port Initialization Complete. When set, the
port has completed internal initialization.
The port is in the Disabled or Disabled/
Maintenance state.
<4> DSE Data Structure Error. When set, the port
has encountered an error in a port data
structure (i.e., queue entry, PQB, BDT or
page table). Port is in the Disabled or
Disabled/Maintenance state. See the Port Error
Status Register (PESR) and the Port Failing
Address Register (PFAR) for further information.
Note that errors in queue structures leave
the queues locked.
<5> MSE Memory System Error. When set, port has
encountered an uncorrectable data or
non-existent memory error in referencing
memory. Port is in the Disabled or
Disabled/Maintenance state. See
PFAR for further information.
| <6> ME Maintenance/Sanity Timer Expiration. When set,
| the maintenance/sanity timer has
expired. The port is in the
Uninitialized/Maintenance state.
| <7> MISC Miscellaneous Error Detected. When set,
| indicates that the port microde has
| detected one of the miscellaneous errors
| and is about to enter either the Disabled or
| Disabled/Maintenance state. If the error
| was found when the port was in the
| Enabled state, then the port transitions
| to the Disabled state. If the state was
| Enabled/Maintenance, the port transitions to
| Disabled/Maintenance. The actual error code is
| stored in the Port Error Status Register.
<30:8> Zero.
<31> MTE Maintenance Error. When set, the port
has detected an implementation
specific error (or hardware status
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-9
condition). The source of the error may be
more accurately determined from the
implementation specific maintenance
registers. The port is in the Uninitialized
state (port is non-functional).
\The mnemonics ME and MTE are inconsistent (they should be
interchanged) but are retained because other documentation would be
impacted by their interchange.\
|
|
|
| 8.2.3 Port Error Status Register(PESR)
|
| This register indicates the type of error which resulted in a DSE
| or an MISC (PSR bit) error. PESR is valid only after either a DSE or
| MISC error.
|
| 3 1
| 1 5 0
| +------------------+------------------+
| | | |
| | MISC Error Code | DSE Error Code |
| | | |
| +-------------------------------------+
|
| where:
|
| bits name description
| ---- ---- -----------
|
| <31:16> MEC Miscellaneous Error Code.
| This code consists of two
| fields: bits <31:24> define the
| the module within the microcode
| where the error occurred, and
| bits <23:16> contain the specific
| error that occurred. See the
| functional specification of
| each implementation for the
| meaning of these bits.
| <15:0> DSEC Data Structure Error Code.
| Appendix D describes the
| errors indicated
| by the contents of this
| field.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-10
8.2.4 Port Failing Address Register (PFAR)
After an MSE or DSE interrupt and after a response with buffer
memory system error status, the PFAR contains the memory address at
which the failure occurred. The address may be the exact failing
address, an address in the same page as the exact failing address, or,
in the case of DSE interrupts, an address in some part of the data
structure. For DSE interrupts PFAR contains a virtual address or
offset, while for MSE interrupts and buffer memory system errors the
PFAR contains a physical address.
Since the port continues command execution and packet processing
after buffer memory system errors, the PFAR is overwritten if
subsequent errors occur. For DSE and MSE interrupts the PFAR is
effectively fixed since the port enters the Disabled or
Disabled/Maintenance state.
PFAR is read only by the port driver and readable after a DSE or
MSE interrupt or after a response with buffer memory system error
status.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-11
8.2.5 Port Parameter Register (PPR)
This register contains port implementation parameters and the port
number. The value of the PPR is set by the port during initialization
and valid after a PIC interrupt. PPR is read only by the port driver.
The format of the PPR is:
PORT PARAMETER REGISTER(PPR):
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
| |C|C|C|L|L|L|L|L|L|L|L|L|L|L|L|L| |D|D|D|D|D|D|D|P|P|P|P|P|P|P|P|
| |S|S|S|1|1|1|0|0|0|0|0|0|0|0|0|0| |I|I|I|I|I|I|I|N|N|N|N|N|N|N|N|
| |Z|Z|Z|2|1|0|9|8|7|6|5|4|3|2|1|0|0|6|5|4|3|2|1|0|0|0|0|0|0|0|0|0|
| |2|1|0| | | | | | | | | | | | | | | | | | | | | |7|6|5|4|3|2|1|0|
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
Where:
Bits Name Description
<7:0> PORT_NO Port number.
| <14:8> Implementation The bits in this field
| Specific contain information about
| Diagnostic the local adapters link layer
| Information configuration. See Appendix J
| for the description of this
| field in different
| implementations.
| See DEC STD 161 (CI
| specification) for the
| correct settings of these
| bits in specific cluster
| configurations.
|
|
| <15> MBZ Must be zero.
<28:16> IBUF_LEN Internal Buffer length. Indicates size
of internal buffers available for message
and data transfers. Maximum data packet
=IBUF_LEN - 16 bytes. Maximum message or
datagram length =IBUF_LEN. Minimum value
is 592.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-12
| <31:29> CSZ(X) CLUSTER SIZE <02:00>: This field indicates the
| maximum number of nodes allowed on the CI.
| CSZ<02> CSZ<01> CSZ<00> CLUSTER SIZE RANGE
| (decimal) (decimal)
| ------- ------- ------- ------------- ---------
| 0 0 0 16 (max) 0-15
| 0 0 1 32 (max) 0-31
| 0 1 0 64 (max) 0-63
| 0 1 1 128 (max) 0-127
| 1 0 0 224 (max) 0-223
| 1 0 1 reserved for future definition
| 1 1 0 reserved for future definition
| 1 1 1 reserved for future definition
8.2.6 Port Control Registers
The port control registers are 32-bit registers which are
write-only by the port driver. To invoke the functions provided by
the control registers, the port driver writes a "1" to the register.
8.2.6.1 Port Command Queue 0 Control Register (PCQ0CR) -
When the port driver inserts an entry in an empty CMDQ0, the port
driver writes PCQ0CR to initiate port execution of the Command Queue.
PCQ0CR can be written only when the port is in the Enabled or
Enabled/Maintenance state.
8.2.6.2 Port Command Queue 1 Control Register (PCQ1CR) -
Same as PCQ0CR except refers to CMDQ1.
8.2.6.3 Port Command Queue 2 Control Register (PCQ2CR) -
Same as PCQ0CR except refers to CMDQ2.
8.2.6.4 Port Command Queue 3 Control Register (PCQ3CR) -
Same as PCQ0CR except refers to CMDQ3.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-13
8.2.6.5 Port Datagram Free Queue Control Register (PDFQCR) -
When the port driver inserts an entry on the DFREEQ and the
latter was previously empty, the port driver writes PDFQCR to indicate
the availability of DFREEQ entries. PDFQCR can be written only if the
port is in the Enabled or Enabled/Maintenance State.
8.2.6.6 Port Message Free Queue Control Register (PMFQCR) -
Same as PDFQCR except refers to MFREEQ.
8.2.6.7 Port Status Release Control Register (PSRCR) -
After the port driver has received an interrupt and read the PSR,
it returns the PSR to the port by writing PSRCR.
8.2.6.8 Port Enable Control Register (PECR) -
The port driver enables the port by writing PECR. PECR is
ignored if the port is in the Uninitialized,
Uninitialized/Maintenance, Enabled, or Enabled/Maintenance state.
8.2.6.9 Port Disable Control Register (PDCR) -
The port driver disables the port by writing PDCR. When the port
is disabled, the port requests an interrupt. PDCR is ignored if the
port is in the Uninitialized, Uninitialized/Maintenance, Disabled, or
Disabled/Maintenance state.
8.2.6.10 Port Initialize Control Register (PICR) -
The port driver initializes the port by writing PICR. When the
initialization is complete the port requests an interrupt. As part of
| the initialization, the maintenance/sanity timer is set to expire in
100 seconds.
| 8.2.6.11 Port - Maintenance/Sanity Timer Control Register (PMTCR)
| The port driver forces the maintenance/sanity timer to reset its
expiration time by writing the PMTCR. If the PMTCR is not written
again before the expiration time, the port will enter the
Uninitialized/Maintenance state and request an ME interrupt. PMTCR is
| ignored if the maintenance/sanity timer is not running.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-14
| 8.2.6.12 Port - Maint./Sanity Timer Expiration Control Register
(PMTECR)
| The port driver forces a Maintenance/Sanity Timer Expiration
Interrupt by writing the PMTECR. This register may be written only
when the port is in the Enabled, Enabled/Maintenance, Disabled, and
| Disabled Maintenance states and only while the Maintenance/Sanity
Timer is not disabled.
8.2.7 Control And Status Register (PMCSR)
This register exists in all ports. Only two of the bits are
implementation independent. The remainder are implementation
specific, subject to the following requirements:
1. Status bits are effectively read-only to the port driver and
cleared only by maintenance initialization or clearing the
condition in another register. Writing the status bits has
no effect.
2. Function control bits are read/write by the port driver only.
These bits are of two classes:
1. Init: this type of bit invokes a function (e.g.
initialization) by setting it. It always reads as zero.
2. Enable/disable: this type of bit causes an activity or
state to exist while the bit is set. Clearing the bit
stops the activity or changes the state. The bit always
reads the most recently written value. The bit is never
changed by the port.
The format of the PMCSR is:
3
1 1 0
+------------------------------------+-+-+
| |M|M|
| IMPLEMENTATION-SPECIFIC |T|I|
| |D|N|
+------------------------------------+-+-+
Where:
Bits Name Description
<0> MIN Maintenance Init. Clears all
hardware state (including
errors). Upon completion,
port is in Uninitialized state.
PORT REGISTERS AND THE PORT QUEUE BLOCK Page 8-15
This is an init class control bit.
| <1> MTD Maintenance/Sanity Timer Disable.
Read/write by driver. If set, the
| maintenance/sanity timer is turned off.
Timer is set to the initial
value and suspended.
If clear, timer functions normally.
Power-up state is clear (timer
enabled). This is an enable/disable
class control bit.
<31:2> Implementation specific. Defined
as necessary for port maintenance
and initialization (loading, etc.).
| Please see Appendix I articles 1 and 2 for a description of exceptions
| relating to the MIN bit function.
APPENDIX A
QUEUE PROTOCOL
In normal operation the port driver is permitted to:
1. Insert commands on the tail of a Command Queue using the
INSQTI instruction.
2. Remove responses from the head of the Response Queue using
the REMQHI instruction.
3. Insert Free Queue entries on the head or the tail of a Free
Queue using the INSQHI or INSQTI instructions.
4. Remove Free Queue entries from the head or the tail of a Free
Queue using the REMQHI or REMQTI instructions.
No other operations are permitted. Further, if an INSQTI
instruction places an entry on an empty Command Queue or Free Queue,
the port driver must notify the port by writing the appropriate Port
Command Queue or Free Queue Control Register.
If the port driver wishes to modify a queue entry or modify a
queue structure in any way other than indicated above, it must first
halt the port's processing of the queue by disabling the port (i.e.,
writing the Port Disable Control Register). The result of violating
the queue protocol is UNDEFINED.
Ports may hold queue entries internally during execution to
increase performance. A port may hold at most 16 entries of each type
(datagram and message). These represent CMDQ0-3, RSPQ, DFREEQ, and
MFREEQ entries. Independent of the limit of 16 of each type, at most
4 DFREEQ and 4 MFREEQ entries may be held. At power-down, the virtual
addresses of any held entries are written to the appropriate logout
area. On disabling under port driver control, all entries are
returned to either the Response Queue or the appropriate Free Queue.
Queue entries are only lost on port initialization or on port
hardware, data structure, and memory system errors that cannot be
reported in the STATUS field of Responses.
APPENDIX B
MULTIPLE PORTS ON A SINGLE SYSTEM
Multiple ports may be supported on a single system as follows:
1. The buffer descriptors may be shared with the restriction
that explicit buffer closure must be performed by each port
sharing a buffer (to invalidate all cached translations).
2. The Free Queues may be shared by used of the pointers in the
PQB and one set of queue headers.
3. The PQB's may not be shared since shared command queues may
result in non-sequential delivery of messages.
APPENDIX C
SUMMARY OF PORT COMMANDS AND RESPONSES
Destination
Command
Command Queue Entry Type Local Response or Response
SNDDG DG DGSNT DGREC
SNDMSG MSG MSGSNT MSGREC
SNDDAT MSG DATSNT RETCNF
RETCNF MSG CNFRET CNFREC
REQDAT0 MSG DATREQ0 RETDAT
REQDAT1 MSG DATREQ1 RETDAT
REQDAT2 MSG DATREQ2 RETDAT
RETDAT MSG DATRET DATREC
INVTC DG TCINV
SETCKT DG CKTSET
RDCNT DG CNTRD
SNDLB DG LBSNT LBREC
REQID DG IDREQ
DG IDREC
SNDRST DG RSTSNT
SNDMDAT DG MDATSNT
DG MCNFREC
REQMDAT DG MDATREQ
SUMMARY OF PORT COMMANDS AND RESPONSES Page C-2
DG MDATREC
SNDSTRT DG STRTSNT
> DG (in destination) > UNRPKT
APPENDIX D
PORT ERROR STATUS REGISTER CODES
| The following is a list of the errors associated with the value
| of the contents of the DSE Error Code field in the PESR.
ERROR DESCRIPTION CODE PFAR
SYS_VA_FRM Illegal system virtual 1 Virtual
address format. Bits Address
<31:30> <> 10.
NX_SYS_VA Non-existent system 2 Virtual
virtual address. VA Address
<29:9> >= SPT_LEN.
INV_SYS_PTE Invalid system PTE. 3 Virtual
Bits <31,26,22> <> Address
1XX, 000, or 001. (being
mapped)
INV_BUF_PTE Invalid buffer PTE. 4 PTE Virtual
Bits <31,26,22> <> Address
1XX, 000, or 001.
NX_GLBL_SVA Non-existent system 5 Virtual
global virtual address. Address
GPTX >= GPT_LEN.
NX_GLBL_VA Non-existent buffer 6 PTE Virtual
global virtual address. Address
GPTX >= GPT_LEN.
INV_SGLBL_PTE Invalid System Global 7 Virtual
PTE. PTE<31,26,22> <> Address
1XX or 000.
PORT ERROR STATUS REGISTER CODES Page D-2
INV_BGLBL_PTE Invalid Buffer Global 8 PTE Virtual
PTE. PTE<31,26,22> <> Address
1XX or 000.
PORT ERROR STATUS REGISTER CODES Page D-3
INV_SGPTE_MAP Invalid System Global 9 Virtual
PTE mapping. System address
virtual address of
system global PTE is
itself globally mapped.
INV_BGPTE_MAP Invalid Buffer Global 10 PTE Virtual
PTE mapping. System address
virtual address of
buffer global PTE is
itself globally mapped.
Q_INTL_FAIL Queue interlock retry 11 Queue Head
failure. Interlock Virtual
was tested and found Address
locked an implementation
specific consecutive
number of times.
ILL_Q_ALIGN Illegal queue offset 12 Queue Head
alignment. FLINK<2:1> Virtual
<> 0 or BLINK<2:0> <>0. Address
ILL_PQB_FRM Illegal PQB format. A 13 Field offset
field of the PQB in PQB in
specified to be MBZ bytes
was found non-zero.
(The check for MBZ
fields is optional so
not all ports will
return this error.)
REG_PROT_VIOL Register protocol 14 Register
violation. Register byte offset
was written with wrong from device
value or under wrong base address
conditions.
(The check for protocol
violations is optional so
not all ports will return
this error.)
APPENDIX E
SUMMARY OF COMMAND/RESPONSE AND CI PACKET OPCODES
E.1 OPCODE FORMAT
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| | | | MTYP |
| 0 | R | T +---+---+---+---+
| | C | Y | D | DTYP |
| | D | P | U +---+---+---+
| | | | | UTYP |
+---+---+---+---+---+---+---+---+
Where:
Bits Field Description
<7:6> Zero.
<5> RCD Received response. Set for
responses generated from
received packets.
<4> TYP Type.
TYP = 0 for Message (non-
data/utility).
TYP = 1 for Data/Utility.
<3:0> MTYP Message type. Valid if TYP = 0.
MTYP = 1 for SNDDG.
MTYP = 2 for SNDMSG.
MTYP = 3 for RETCNF.
MTYP = 4 for .
MTYP = 5 for REQID.
MTYP = 6 for SNDRST.
MTYP = 7 for SNDSTRT
MTYP = 8 for REQDAT0.
MTYP = 9 for REQDAT1.
MTYP = 10 for REQDAT2.
SUMMARY OF COMMAND/RESPONSE AND CI PACKET OPCODES Page E-2
MTYP = 11 for .
MTYP = 13 for SNDLB.
MTYP = 14 for REQMDAT.
<3> DU Data/Utility. Valid if TYP = 1.
DU = 0 for data commands.
DU = 1 for utility commands.
<2:0> DTYP Data type. Valid if TYP = 1 AND
DU = 0.
DTYP = 0 for SNDDAT
DTYP = 1 for RETDAT
DTYP = 2 for SNDMDAT
DTYP = 3 for
<2:0> UTYP Utility type. Valid if TYP = 1
AND DU = 1.
UTYP = 0 for INVTC.
UTYP = 1 for SETCKT.
UTYP = 2 for RDCNT.
Commands in brackets <> are port internal and not part of the
port architecture.
SUMMARY OF COMMAND/RESPONSE AND CI PACKET OPCODES Page E-3
E.2 OPCODE SUMMARY
COMMAND/RESPONSE CI packet DEC HEX OCTAL BINARY
SNDDG/DGSNT DG 1 1 1 0000 0001
SNDMSG/MSGSNT MSG 2 2 2 0000 0010
SNDDAT/DATSNT SNTDAT 16 10 20 0001 0000
RETCNF/CNFRET CNF 3 3 3 0000 0011
REQDAT0/DATREQ0 DATREQ0 8 8 10 0000 1000
REQDAT1/DATREQ1 DATREQ1 9 9 11 0000 1001
REQDAT2/DATREQ2 DATREQ2 10 A 12 0000 1010
RETDAT/DATRET RETDAT 17 11 21 0001 0001
INVTC/TCINV 24 18 30 0001 1000
SETCKT/CKTSET 25 19 31 0001 1001
RDCNT/CNTRD 26 1A 32 0001 1010
SNDLB/LBSNT LB 13 D 15 0000 1101
REQID/IDREQ IDREQ 5 5 5 0000 0101
SNDRST/RSTSNT RST 6 6 6 0000 0110
SNDMDAT/MDATSNT SNTMDAT 18 12 22 0001 0010
REQMDAT/MDATREQ MDATREQ 14 E 16 0000 1110
SNDSTRT/STRTSNT STRT 7 7 7 0000 0111
/DGREC 33 21 41 0010 0001
/MSGREC 34 22 42 0010 0010
/CNFREC 35 23 43 0010 0011
/DATREC 49 31 61 0011 0001
/LBREC 45 2D 55 0010 1101
/IDREC 43 2B 53 0010 1011
/MCNFREC 36 24 44 0010 0100
/MDATREC 51 33 63 0011 0011
SUMMARY OF COMMAND/RESPONSE AND CI PACKET OPCODES Page E-4
ID 11 B 13 0000 1011
RETMDAT 19 13 23 0001 0011
MCNF 4 4 4 0000 0100
APPENDIX F
REGISTER ADDRESSES
REL. ADDR. (HEX)
CI-780,
REGISTER NAME MNEMONIC CI-750 CIBCI CIBCA-AA
------------- -------- ------ ----- --------
Port Maintenance Control PMCSR 004 110 1004
and Status
Port Status PSR 900 900 1000
Port Queue Block Base PQBBR 904 904 F0
Port Command Queue 0 Control PCQ0CR 908 908 1010
Port Command Queue 1 Control PCQ1CR 90C 90C 1014
Port Command Queue 2 Control PCQ2CR 910 910 1018
Port Command Queue 3 Control PCQ3CR 914 914 101C
Port Status Release Control PSRCR 918 918 1020
Port Enable Control PECR 91C 91C 1024
Port Disable Control PDCR 920 920 1028
Port Initialize Control PICR 924 924 102C
Port Datagram Free Queue ControlPDFQCR 928 928 1030
Port Message Free Queue Control PMFQCR 92C 92C 1034
Port Maint/Sanity Timer Control PMTCR 930 930 1038
Port Maint/Sanity Timer PMTECR 934 934 103C
Expiration Control
Port Failing Address PFAR 938 938 F4
REGISTER ADDRESSES Page F-2
Port Error Status PESR 93C 93C FC
Port Parameter PPR 940 940 F8
APPENDIX G
IMPLEMENTATION FUNCTIONALITY
G.1 IMPLEMENTATION FUNCTIONALITY FIELD
This field is located in the ID packet and describes the supported
functionality of the port.
Each bit of this field corresponds to a function. If the
implementation supports the function, the corresponding bit value is
set. If not, the bit is clear. Unused bits are reserved for future
expansion and MBZ in current ports for compatibility with future
functions. The format of PORT_FCN is:
3 2 2
1 6 5 8 7 0
+---------+-------------------+---------+
| STATES | PACKETS | MBZ |
+---------+-------------------+---------+
Where:
Bit Function
31 Enabled state.
30 Enabled/Maintenance state.
29 Disabled state.
28 Disabled/Maintenance state.
27 Uninitialized state.
26 Uninitialized/Maintenance state.
25 SEND MSG/REC MSG
24 SEND SNTDAT/REC CNF
23 REC SNTDAT/SEND CNF
| 22,21,20 SEND DATREQ{0,1,2}/REC RETDAT
| 19,18,17 REC DATREQ{0,1,2}/SEND RETDAT
16 SEND IDREQ/REC ID
15 SEND SNTMDAT/REC MCNF
14 REC SNTMDAT/SEND MCNF
13 SEND MDATREQ/REC RETMDAT
IMPLEMENTATION FUNCTIONALITY Page G-2
12 REC MDATREQ/SEND RETMDAT
11 SEND RST
10 SEND STRT
9 REC RST-STRT
8 SEND/REC LB
7 - 0 Reserved and MBZ.
G.2 IMPLEMENTATION FUNCTIONALITY SUMMARY
"X" = Supported, "-" = Not Supported
MAINT_ID of 5 is reserved for JUPITER which is not produced.
| OPTION |
FUNCTION |--------+--------+--------+--------+--------+
| CI780 | | | | |
| CI750 | CI20 | HSC70 | CIBCA | |
| CIBCI | | HSC50 | -AA | |
| CINT | | | | |
| | | | | |
------------------+--------+--------+--------+--------+--------+
MAINT_ID |CI780=2 | 6 | 4 | 8 | |
|CI750=2 | | | | |
|CIBCI=2 | | | | |
|CINT=7 | | | | |
------------------+--------+--------+--------+--------+--------+
| | | | | |
STATES | | | | | |
------------------+--------+--------+--------+--------+--------+
UNINITIALIZED | X | - | X | X | |
------------------+--------+--------+--------+--------+--------+
UNINIT/MAINT | X | - | X | X | |
------------------+--------+--------+--------+--------+--------+
DISABLED | X | - | - | X | |
------------------+--------+--------+--------+--------+--------+
DSBLD/MAINT | X | - | - | X | |
------------------+--------+--------+--------+--------+--------+
ENABLED | X | X | - | X | |
------------------+--------+--------+--------+--------+--------+
ENBLD/MAINT | X | X | X | X | |
------------------+--------+--------+--------+--------+--------+
IBUF_LEN |3F8(hex)|400(hex)|400(hex)|FF0(hex)| |
------------------+--------+--------+--------+--------+--------+
IMPLEMENTATION FUNCTIONALITY Page G-3
| OPTION |
FUNCTION |--------+--------+--------+--------+--------+
| CI780 | CI20 | HSC50 | CIBCA | |
| CI750 | | HSC70 | -AA | |
| BCI-750| | | | |
| CINT | | | | |
------------------+--------+--------+--------+--------+--------+
| | | | | |
PACKETS SND/REC | | | | | |
------------------+--------+--------+--------+--------+--------+
MSG | X | X | X | X | |
------------------+--------+--------+--------+--------+--------+
SNTDAT/CNF | X | X | X | X | |
------------------+--------+--------+--------+--------+--------+
CNF/SNTDAT | X | X | - | X | |
------------------+--------+--------+--------+--------+--------+
DATREQ{0,1,2} | X | X | X | X | |
/RETDAT | | | | | |
------------------+--------+--------+--------+--------+--------+
RETDAT/ | X | X | - | X | |
DATREQ{0,1,2} | | | | | |
------------------+--------+--------+--------+--------+--------+
IDREQ/ID | X | X | X | X | |
------------------+--------+--------+--------+--------+--------+
SNTMDAT/MCNF | X | X | - | - | |
------------------+--------+--------+--------+--------+--------+
MCNF/SNTMDAT | X | X | - | _ | |
------------------+--------+--------+--------+--------+--------+
MDATREQ/RETMDAT | X | X | - | - | |
------------------+--------+--------+--------+--------+--------+
RETMDAT/MDATREQ | X | X | - | - | |
------------------+--------+--------+--------+--------+--------+
RST/ | X | X | - | X | |
------------------+--------+--------+--------+--------+--------+
STRT/ | X | X | - | X | |
------------------+--------+--------+--------+--------+--------+
/RST-STRT | X | - | X | X | |
------------------+--------+--------+--------+--------+--------+
LB/LB | X | X | X | X | |
------------------+--------+--------+--------+--------+--------+
IMPLEMENTATION FUNCTIONALITY Page G-4
| G.2.1 IMPLEMENTATION FUNCTIONALITY FIELD EXTENSION.
|
| This extension provides visibility to the setting of various
| attributes of the port. It's format is (note that the second longword
| of this field is MBZ):
|
|
| 3 2 2 1 1 1 1 1 1 1
| 1 9 8 6 5 4 3 2 1 0 8 7 0
| +---+--------------+---+-+-+-+---+-------+
| | C | M | M |X|A|X| A | M |
| | S | B | B |N|A|P| S | B |
| | Z | L | Z |R|R|R| T | Z |
| | | | | |B|E| | |
| +---+--------------+---+-+-+-+---+-------+
|
|
| where:
|
| Bit Nos. Field
|
| 31:29 CSZ Cluster Size <02:00>. The
| field indicates the
| maximum number of nodes
| on the CI that the
| port is configured for.
| Ports shall support
| nodes with addresses of
| 0 to (MAX_NODES -1).
| See DEC STD 161.
| CSZ<02> CSZ<01> CSZ<00> CLUSTER SIZE
| (MAX_NODES value)
| ------- ------- ------- -------------
| 0 0 0 16 (max)
| 0 0 1 32 (max)
| 0 1 0 reserved for 64 nodes
| 0 1 1 reserved for 128 nodes
| 1 0 0 reserved for 224 nodes
| 1 0 1 reserved for future definition
| 1 1 0 reserved for future definition
| 1 1 1 reserved for future definition
|
|
| 28:16 MAX_BODY_LEN The maximum allowed
| <12:0> length in bytes of
| the packet BODY
| passed between the
| port and data link
| layers.
| The relationship
| between this
| parameter and
| IBUF_LEN is:
IMPLEMENTATION FUNCTIONALITY Page G-5
|
| IBUF_LEN + 2 = MAX_BODY_LEN
|
| 15:14 MBZ
|
| 13 XNR Extended No Response
| timeout. When 1 the
| extended NO_RSP
| value is selected.
| When 0 the standard
| NO_RSP value is selected.
| See DEC STD 161.
| 12 AARB Active Hub Arbitration-
| If 1 the active hub
| arbitration algorithm is
| selected.
| If 0 the passive hub
| arbitration algorithm is
| selected.
| See DEC STD 161.
|
| 11 XPRE Extended Preamble.
| When 1 the extended
| length preamble is
| selected. When 0 the
| standard length preamble
| is selected.
| See DEC STD 161.
|
|
| 10:8 AST(X) Arbitration Slot Time-
| These bits indicate the
| arbitration slot time
| being used by the
| link as given in
| the table below.
|
| AST<2> AST<1> AST<0> Arbitration Slot
| (in Byte times)
| ------ ------ ------ ----------------
| 0 0 0 7 (see note)
| 0 0 1 10
| 0 1 0 reserved
| 0 1 1 reserved
| 1 0 0 reserved
| 1 0 1 reserved
| 1 1 0 reserved
| 1 1 1 illegal
|
|
| NOTE: If the adapter implements the
| PORT_FCN_EXT field, 000 indicates a byte
| count of 7. If the field is not implemented,
IMPLEMENTATION FUNCTIONALITY Page G-6
| the port may be using a value of either 7
| or 10. See DEC STD 161.
|
|
|
|
|
| 7:0 MBZ Must be zero.
APPENDIX H
PACKET PROCESSING
The following is a PASCAL program defining the first level of
packet processing: whether packets are delivered as UNRPKT responses,
discarded, or processed normally.
program CIPKT;
type PKT = (DG,LB,MCNF,ID,RETMDAT,SNTMDAT,STRT,MDATREQ,
IDREQ,RST,MSG,SNTDAT,DATREQ,CNF,RETDAT,ILLEGAL);
VCD = record
DQI: boolean;
CST: boolean;
NR: boolean
end;
PORT = 0..255;
var VCDT: array [0..255] of VCD;
PKT_SRC: PORT;
RST_PORT: PORT;
MAX_PORT: PORT;
SELF: PORT;
PKT_SEQ: boolean;
FORCE_RESET: boolean;
PORT_STATE: (EN,ENM,DSM,UNM);
procedure UNRPKT;
begin
{deliver UNRPKT response}
end;
procedure PROCESS;
PACKET PROCESSING Page H-2
begin
{process packet normally}
end;
procedure DISCARD;
begin
{discard the packet}
end;
function DFREEQ_EMPTY: boolean;
begin
{true if DFREEQ empty; false otherwise}
end;
function DGDISC(I: PORT): boolean;
begin
DGDISC:=(not VCDT[I].DQI) or DFREEQ_EMPTY or
((PORT_STATE <> EN) and (PORT_STATE <> ENM))
end;
function MSGDISC(I: PORT): boolean;
begin
MSGDISC:=(not VCDT[I].CST) or
(PKT_SEQ <> VCDT[I].NR) or
((PORT_STATE <> EN) and (PORT_STATE <> ENM))
end;
function OPC_FLAG: PKT;
begin
{decode opcode and flags field of packet}
end;
begin
if PKT_SRC > MAX_PORT then
if DGDISC(255) then DISCARD else UNRPKT
else
case OPC_FLAG of
ILLEGAL:
if DGDISC(PKT_SRC) then DISCARD else UNRPKT;
DG,LB,MCNF,ID,RETMDAT:
if DGDISC(PKT_SRC) then PROCESS else UNRPKT;
IDREQ:
PROCESS;
SNTMDAT,STRT,MDATREQ:
PACKET PROCESSING Page H-3
if PORT_STATE <> UNM then
if DGDISC(PKT_SRC) then DISCARD else UNRPKT
else
if PKT_SRC = RST_PORT then PROCESS else DISCARD;
RST:
if (PORT_STATE <> EN) and
((RST_PORT = PKT_SRC) or
(RST_PORT = SELF) or FORCE_RESET)
then PROCESS else
if DGDISC(PKT_SRC) then DISCARD
else UNRPKT;
MSG,SNTDAT,DATREQ,CNF,RETDAT:
if MSGDISC(PKT_SRC) then DISCARD else PROCESS
end
end.
|
|
|
|
|
|
|
|
|
|
|
|
| APPENDIX I
|
| EXCEPTIONS.
|
|
|
|
|
|
|
|
| 1. For the CIBCI, setting bit 0 (the MIN bit) in the PMCSR has
| no effect on the port. To clear all states in the adapter,
| the host must set the NRST bit in the VAXBICSR of the CIBCI.
|
| 2. For the CIBCA-AA, setting bit 0 (called the START bit in the
| CIBCA implementation) of the PMCSR clears all port errors
| except the error bits internal to the BIIC of the CIBCA-AA.
| The port is then left in the Uninitialized state. To clear
| ALL port states on the CIBCA-AA, the host can set the NRST
| bit in the VAXBICSR in addition to setting the START bit.
| This exception reflects the design of the BIIC, and is not
| considered conformant with this specification.
|
|
|
|
|
|
|
|
|
|
|
|
|
| APPENDIX J
|
| IMPLEMENTATION SPECIFIC DIAGNOSTIC INFORMATION FIELD
|
|
|
| This appendix describes how the Implementation Specific Diagnostic
| Field in the Port Parameter Register is assigned for various port
| implementations.
|
|
|
| J.0.1 For The CIBCA-AA:
|
|
|
| PORT PARAMETER REGISTER
|
| 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
| 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
| |C|C|C|L|L|L|L|L|L|L|L|L|L|L|L|L| | |E|D|X|A|A|A|P|P|P|P|P|P|P|P|
| |S|S|S|1|1|1|0|0|0|0|0|0|0|0|0|0| | |A|A|H|D|D|D|N|N|N|N|N|N|N|N|
| |Z|Z|Z|2|1|0|9|8|7|6|5|4|3|2|1|0|0|0|T|R|D|T|T|T|0|0|0|0|0|0|0|0|
| |2|1|0| | | | | | | | | | | | | | | |O|B|R|2|1|0|7|6|5|4|3|2|1|0|
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
|
| BIT NO. TITLE DESCRIPTION
|
|
| 13 EATO Extend Acknowledgement Time Out.
| This bit reflects whether
| EXT ACK TO is asserted on the
| port.
| IF 0 THEN
| normal acknowledgement
| timeout period.
| IF 1 THEN
| extended acknowledgement
| timeout period.
|
| Refer to DEC STD 161 (CI
| Specification) for guidelines
| for correct settings in particular
| cluster configurations.
| IMPLEMENTATION SPECIFIC DIAGNOSTIC INFORMATION FIELD Page J-2
|
| 12 DARB DISABLE ARBITRATION: This bit, when set
| indicates that arbitration is
| disabled.
| IF 0 THEN
| normal arbitration.
| IF 1 THEN
| arbitration disabled.
|
|
|
| Refer to DEC STD 161 (CI
| Specification) for guidelines
| for correct settings in particular
| cluster configurations.
|
| 11 XHDR EXTEND HEADER: This bit, when set,
| tells the host that the EXTEND HEADER
| feature of the link layer of the
| local port is enabled.
| IF 0 THEN
| normal header.
| IF 1 THEN
| extended header.
|
| Refer to DEC STD 161 (CI
| Specification) for guidelines
| for correct settings for
| particular cluster configurations.
|
| 10:08 ADT(X) ALTER DELTA TIME <2:0>: These three
| bits reflect the quiet slot delta
| time setting for the local port as
| indicated below. Refer to DEC STD
| 161 (CI Specification) for guidelines
| for correct settings in particular
| cluster configurations.
| ADT<2> ADT<1> ADT<0> QUIET SLOT COUNT
| (in decimal,
| transmit clocks)
| ------ ------ ------ ----------------
| 0 0 0 7
| 0 0 1 10
| 0 1 0 14
| 0 1 1 16
| 1 0 0 21
| 1 0 1 25
| 1 1 0 32
| 1 1 1 illegal
|
|
|
| IMPLEMENTATION SPECIFIC DIAGNOSTIC INFORMATION FIELD Page J-3
| J.0.2 For The CI750, CI780, And CIBCI:
|
| PORT PARAMETER REGISTER
|
| 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
| 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
| |C| | |L|L|L|L|L|L|L|L|L|L|L|L|L| | | | | | | | |P|P|P|P|P|P|P|P|
| |S| | |1|1|1|0|0|0|0|0|0|0|0|0|0| | | | | | | | |N|N|N|N|N|N|N|N|
| |Z|0|0|2|1|0|9|8|7|6|5|4|3|2|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
| | | | | | | | | | | | | | | | | | | | | | | | | |7|6|5|4|3|2|1|0|
| +-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-++-+-+-+-+-+-+
|
|
| BIT NO. TITLE DESCRIPTION
|
|
| <14:8> Implementation Zero. These adapters do not
| Specific implement these bits.
| Diagnostic
| Field
|
|
APPENDIX K
CHANGE HISTORY
Rev 1 to Rev 2
1. Implicit buffer to buffer virtual circuits are changed to
explicit port to port virtual circuits. This eliminates
sequence numbers from buffer descriptors. A Virtual Circuit
Descriptor Table is added together with the SETCKT command.
2. Two classes of messages are defined: Sequenced -- which use
virtual circuits and Unsequenced -- which do not.
3. 32-bit port addressing is changed to 8 bits. Broadcast
addressing (needed for 32-bit port addresses) is eliminated.
4. Messages are variable size (0 to 4078 bytes).
5. Data packets are variable size (multiples of 1 to 8 of basic
512 and 576 byte size).
6. All successful data transfers are confirmed. All errors in
data transfer operations result in closing the virtual
circuit and giving an error indication by the port which
detected the error.
7. Tracking of path status is done by the port.
8. CI event counting is simplified.
9. Q field for RETCNF commands is in the PQB.
10. A SNDTST command is added (for maintenance use).
11. A maintenance timer is added.
12. PMTCR,PFAR,PMCSR, and PFQCR registers are added.
13. Buffer access control based on PTE access control is
eliminated.
CHANGE HISTORY Page K-2
14. Opcodes are reassigned.
15. Status field format and values are changed.
Rev 2 to Rev 3
1. Sequenced messages are renamed messages and Unsequenced
messages are renamed and interpreted as datagrams.
2. Separate Free Queues are defined for messages and datagrams:
MFREEQ and DFREEQ.
3. Port generated RETCNF commands use CMDQ3. Port generated
RETDAT commands use a queue specified by the corresponding
REQDAT.
4. Q_LIMIT is removed from virtual circuit descriptors.
5. Number of datagrams discarded is counted.
6. SNDTST command is eliminated.
7. Send Loopback (SNDLB) command is added for loopback testing.
8. CLSBUF command is replaced by the Invalidate Translation
Cache (INVTC) command.
9. Translation cache entry is invalidated on the sending or
receipt of data packet containing the last packet flag.
10. XCT_ID field is increased from 32 to 64 bits.
11. Maintenance data operations are restricted to one CI packet
per command.
12. All illegal packets and maintenance packets received while in
the wrong state are delivered as Unrecognized Packet (UNPPRT)
responses.
13. Cluster Size (CSZ) field is added to PPR.
14. Port Error Status Register (PESR) is added.
15. Port Maintenance Timer Expiration Control Register (PMTECR)
is added.
16. Status field format and values are changed.
17. Buffer access control based on PTE access control is
restored.
18. Opcodes are reassigned.
CHANGE HISTORY Page K-3
19. Broadcast of ID packets on state change is eliminated.
Rev 3 to Rev 4
1. Messages and datagrams are 4089 bytes maximum.
2. Command and packet processing are aborted when the port is
disabled (but data structures are left intact).
3. The maintenance timer is not set on occurrence of a
maintenance error.
4. Appendix on packet processing is included.
5. Limits on internally cached queue entries are changed.
Rev 4 to Rev 4.1
1. Spelling and typing errors corrected.
2. Missing descriptions of data structure fields in chapter 7
added.
3. Updated contents of Appendixes F and G to reflect current
products.
Rev 4.1 to 5.0
1. Variable period Maintenance/Sanity timer added.
2. All instances of "maintenance timer" changed to
"maintenance/sanity timer".
3. Cluster size field in the Port Parameter Register expanded to
three bits.
4. Implementation Specific Diagnostic Information field added to
Port Parameter Register.
5. Miscellaneous Error bit added to the PSR. PESR format
changed.
6. Exceptions issued for initialization of the CIBCA and the
CIBCI. See Appendix I.
7. Descriptions of Resetting and Starting revised.
8. Port Functionality Extension field added to IDREC response.