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.