Copy of presentation given to IEEE 802.3z September 1996 Interim Meeting in Coeur d'Alene, Idaho. PCS PROTOCOL REQUIREMENTS (version 2) Dr. Howard Johnson 5/16/96 Thanks to everyone who has contributed corrections, additions, and so forth to this presentation. This informtion will be provided in slide-show format at the Boston interim meeting. STATEMENT OF SUPPORT The following companies have indicated their support for the concepts outlined in this proposal (in alphabetical order): 3Com, Amdahl, Cisco, Compaq, Granite, Packet Engines, Sun, VLSI Logic, and Xaqti. If you would like to express your support for this proposal by having your company name added to the list, please send me a message (U.S. 206 556 0800, howiej@sigcon.com) MAJOR CHANGE TO THIS VERSION: Strike the "defer" bit from the IDLE pattern, per decision reached in Enschede to use frame-based flow control. CONTENTS Link startup protocol Automatic link configuration SOP/EOP codes Idle pattern __________ HIGH-LEVEL ASSUMPTIONS All links are point-to-point Coding is based on ANSI X.263 FC-0 (8B10B) PHY is full-duplex We need... A link-startup protocol (link integrity) To provide for automatic feature configuration A set of SOP/EOP codes to delineate packets THE BIG PICTURE Startup mode (Automatic feature configuration is done here) Idle SOP (start-of-packet) Packet (using 8B10B data codes) EOP (end-of-packet) Carrier extension (needed by some repeater proposals) Idle . . . PROTOCOL OVERVIEW After power-on, link reset, etc. execute a basic link startup procedure (link integrity). Automatic feature configuration is part of the link startup sequence. After automatic configuration is complete, send idle interspersed with packets. Each packet is delineated with SOP/EOP codes. Each packet can include a carrier extension. USE OF CONTROL CODES F - Link fail indication C - Automatic configuration information I - Idle pattern contains K28.5 control codes (word sync. pattern) S - start-of-packet indication D - packet data (using 8B10B code as defined in ANSI X.230) T - end-of-packet indication (goes after FCS) R - always follows T; used in half-duplex mode to extend carrier LINK STARTUP On power-on or link reset send: F During automatic configuration send: C After configuration send idle: I Idle is then interspersed with packets AUTOMATIC FEATURE CONFIGURATION HIGHLIGHTS An integral part of the link startup protocol Exchanges a 16-bit feature register three times (like clause 28) Uses table-driven priority resolution The feature register has an ACK bit, and an expansion bit Can be restarted by either end of a link Defined as a simple handshake Only 4 states are required for implementation *AUTOMATIC FEATURE CONFIGURATION IS MANDATORY * START OF PACKET Substitute S for first octet of preamble Remainder of preamble and SFD is coded as ordinary data (same as 100BASE-X) SOP/EOP HIGHLIGHTS S, T, and R are all single-octet 8B10B control words (See details in presentation by Richard Taborek) END OF PACKET FCS is always followed by the end-of-packet sequence: T,R For maximum compatibility with existing 8B10B serializers, one additional R octet is added as needed to ensure that idle pattern begins on an even 16-bit boundary. Other additional R octets are added as needed to extend carrier (needed for some half-duplex repeater proposals). IDLE PATTERN HIGHLIGHTS Idle pattern is transmitted between packets during LINK_OK state. We need idle codes that can either preserve or change the running disparity. Therefore, we need two distinct idle codes (I1, I2). PROPAGATING CODE VIOLATIONS Bad-code (H) is a special control code used to propagate errors. A known-bad packet is filled to the end of the data field with H symbols. No TR is appended to the packet. The H symbols do not fill the carrier extension region, if any. Any detectable error in the TRR (or TRI) end-of-packet pattern is replaced with H in each errored octet point. LINK PRIMITIVES The link coding scheme must permit the transmission of the following primitives. xmit <= NOT_AVAILABLE Transmit control code F Indicates the local PHY has not come up yet or a serious error condition exists internal to the PHY or its local client xmit <= CONFIGURATION Transmit control code C This prmitive conveys the 16-bit configuration register The register includes an ACK bit, and a remote-fault bit xmit <= DATA Sends the regular IDLE pattern, interspersed with packets LINK STARTUP STATE DIAGRAM (see ascii notes at end of this document) CARRIER PROCESSING Rule for carrier on: After link startup, any even-numbered octet at least two bits different from K28.5 turns on carrier. Rule for carrier off: After link startup, any even-numbered octet equal to K28.5 turns off carrier. IPG processing: IPG is assumed to start three octets prior to detection of the K28.5 idle pattern. Example (even- length packet): PACKET QUALIFICATION SOP must be perfect: S<1010..> EOP must perfect*: TRI - or - TRR else, signal RX_ER to the MAC *We must check three octets for error robustuess CONCLUSION This presentation proposes: A link-startup protocol (link integrity) A basic protocol for automatic feature configuration A set of SOP/EOP codes to delineate packets Rich Taborek will present: A specific implementation of these protocol features using 8B10B control codes __________ STATE DIAGRAM VARIABLES The link startup protocol uses the following state variables. config_ack The ACK bit in the local config_register. Values: ACK, NO_ACK config_register A register (the size of which is T.B.D.) that includes bits sufficient to specify the features of the local PHY. It includes an ACK bit, and a remote fault bit. This register is transmitted by the "C" primitive. Values: (T.B.D.) Includes an ACK bit, called config_ack Values: TRUE or FALSE link_control Used by management to control the PHY. To reinitiate link startup (and therefore a new configuration negotiation), management sets this variable to DISABLE, and then back to ENABLE. Values: ENABLE and DISABLE (default on power-up). link_status Values: FAIL (link not available) OK (link available for packet transmission) signal_status From the optical (or electrical) hardware, signals whether the received data stream appears to have sufficient energy, the PLL is locked, word sync has been found, and other PMD-specific tests of goodness. xmit Determines the value of 8B10B data to be transmitted Values: NOT_AVAILABLE: continuously sends the "F" prmitive. CONFIGURATION: continuously sends the "C" primitive, which includes the 16-bit configuration register. DATA: continuously sends the "I" primitive (idle) interspersed with packets. __________ LINK START UP DIAGRAM !! Conditions causing immediate transition to STATE 1: signal_status == NOT_OK +link_control == DISABLE STATE 1: LINK_NOT_AVAILABLE link_status <= FAIL config_ack <= NO_ACK xmit <= NOT_AVAILABLE Exit condition to state 2: Local signal_status = OK, and wait for receipt of any Fs or any Cs. STATE 2: LINK_CONFIGURATION xmit <= CONFIGURATION Exit condition to state 3: Wait for receipt of good Cs without ACK, or good Cs with ACK. STATE 3: LINK_ACK config_ack <= ACK xmit <= CONFIGURATION Normal exit condition to state 4: Wait for receipt of good Cs with ACK, or good data. Exception exit condition back to state 1: (if anything goes wrong) STATE 4: LINK_OK link_status <= OK xmit <= DATA Exception exit condition back to state 1: (if anything goes wrong) See details in hand outs and also presentation by Rich Taborek. __________