SAS Protocol Layer
SAS Protocol Layer
Information technology -
SAS Protocol Layer - 5 (SPL-5)
This is an internal working document of T10, a Technical Committee of Accredited Standards Committee
INCITS (International Committee for Information Technology Standards). As such this is not a completed
standard and has not been approved. The contents may be modified by the T10 Technical Committee. The
contents are actively being modified by T10. This document is made available for review and comment only.
Permission is granted to members of INCITS, its technical committees, and their associated task groups to
reproduce this document for the purposes of INCITS standardization activities without further permission,
provided this notice is included. All other rights are reserved. Any duplication of this document for commercial
or for-profit use is strictly prohibited.
T10 Technical Editor: Tim Symons
Microchip Technology Inc.
8555 Baxter Place
Burnaby, BC V5A 4V7
Canada
Reference number
ISO/IEC 14776-265:201x
BSR INCITS 554-201x
Points of Contact
International Committee for Information Technology Standards (INCITS) T10 Technical Committee
INCITS Secretariat
Suite 610
1101 K Street, NW
Washington, DC 20005-7031
USA
Secretariat
Information Technology Industry Council
Abstract
This standard specifies three transport protocols used over the SAS interconnect specified in SAS-4, one to
transport SCSI commands, another to transport Serial ATA commands to SATA devices, and a third to support
interface management. This standard is intended to be used in conjunction with SAS standards, SCSI
command set standards, and ATA command set standards.
American Approval of an American National Standard requires review by ANSI that the requirements
for due process, consensus, and other criteria for approval have been met by the standards
National developer.
Standard Consensus is established when, in the judgement of the ANSI Board of Standards Review,
substantial agreement has been reached by directly and materially affected interests.
Substantial agreement means much more than a simple majority, but not necessarily
unanimity. Consensus requires that all views and objections be considered, and that a
concerted effort be made towards their resolution.
The use of American National Standards is completely voluntary; their existence does not in
any respect preclude anyone, whether he has approved the standards or not, from
manufacturing, marketing, purchasing, or using products, processes, or procedures not
conforming to the standards.
The American National Standards Institute does not develop standards and will in no
circumstances give an interpretation of any American National Standard. Moreover, no
person shall have the right or authority to issue an interpretation of an American National
Standard in the name of the American National Standards Institute. Requests for
interpretations should be addressed to the secretariat or sponsor whose name appears on
the title page of this standard.
CAUTION NOTICE: This American National Standard may be revised or withdrawn at any
time. The procedures of the American National Standards Institute require that action be
taken periodically to reaffirm, revise, or withdraw this standard. Purchasers of American
National Standards may receive current information on all standards by calling or writing the
American National Standards Institute.
CAUTION: The developers of this standard have requested that holders of patents that
may be required for the implementation of the standard disclose such patents to the
publisher. However, neither the developers nor the publisher have undertaken a patent
search in order to identify which, if any, patents may apply to this standard. As of the date
of publication of this standard, following calls for the identification of patents that may be
required for the implementation of the standard, notice of one or more such claims has
been received. By publication of this standard, no position is taken with respect to the
validity of this claim or of any rights in connection therewith. The known patent holder(s)
has (have), however, filed a statement of willingness to grant a license under these rights
on reasonable and nondiscriminatory terms and conditions to applicants desiring to
obtain such a license. Details may be obtained from the publisher. No further patent
search is conducted by the developer or publisher in respect to any standard it
processes. No representation is made or implied that this is the only license that may be
required to avoid infringement in the use of this standard.
Published by
American National Standards Institute, Inc.
25 West 43rd Street, New York, NY 10036
Copyright © 2017 by Information Technology Industry Council (ITI)
All rights reserved.
No part of this publication may be reproduced in any form, in an electronic retrieval system or otherwise,
without prior written permission of ITI, 1101 K Street NW, Suite 610, Washington, DC 20005.
Revision Information
Contents
Page
Revision Information ..........................................................................................................................................v
Foreword .............................................................................................................................................................l
Introduction ...................................................................................................................................................... liv
1 Scope ............................................................................................................................................................. 1
2 Normative references..................................................................................................................................... 3
4 General ........................................................................................................................................................ 49
4.1 Architecture ............................................................................................................................................ 49
4.1.1 Architecture overview........................................................................................................................ 49
4.1.2 Physical links and phys..................................................................................................................... 51
4.1.2.1 Physical links and phys overview ................................................................................................ 51
4.1.2.2 Device links and phys.................................................................................................................. 51
4.1.2.3 Retimer device links and phys..................................................................................................... 54
4.1.3 Narrow ports and wide ports ............................................................................................................. 54
4.1.4 Application clients and device servers .............................................................................................. 58
4.1.5 SAS devices...................................................................................................................................... 59
4.1.6 Expander devices ............................................................................................................................. 60
4.1.7 Retimer devices ................................................................................................................................ 62
4.1.8 Service delivery subsystem .............................................................................................................. 62
4.1.9 Domains............................................................................................................................................ 63
4.1.10 Expander device topologies............................................................................................................ 65
4.1.10.1 Expander device topology overview.......................................................................................... 65
4.1.10.2 Expander device topologies ...................................................................................................... 66
4.1.11 Pathways ........................................................................................................................................ 68
4.1.12 Connections .................................................................................................................................... 68
4.1.13 Persistent connections.................................................................................................................... 70
5.19.5 PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
state machine ..................................................................................................................................... 367
5.19.5.1 PAPTA_L_A state machine overview...................................................................................... 367
5.19.5.2 PAPTA_L_A0:Initialize state ................................................................................................... 368
5.19.5.2.1 State description ................................................................................................................ 368
5.19.5.2.2 Transition from PAPTA_L_A0:Initialize to PAPTA_L_A1:Start .......................................... 369
5.19.5.3 PAPTA_L_A1:Start state........................................................................................................ 369
5.19.5.3.1 State description ................................................................................................................ 369
5.19.5.3.2 Transition from PAPTA_L_A1:Start to PAPTA_L_A0:Initialize .......................................... 369
5.19.5.3.3 Transition from PAPTA_L_A1:Start to PAPTA_L_A2:Adjust_Attached_Transmitter ........ 369
5.19.5.4 PAPTA_L_A2:Adjust_Attached_Transmitter state .................................................................. 369
5.19.5.4.1 State description ................................................................................................................ 369
5.19.5.4.2 Transition from PAPTA_L_A2:Adjust_Attached_Transmitter to PAPTA_L_A0:Initialize ... 371
5.19.6 PAPTA_TC (phy layer SP receiver management of attached SP transmitter coefficient
adjustments) state machines .............................................................................................................. 371
5.19.6.1 PAPTA_TC state machines overview ..................................................................................... 371
5.19.6.2 PAPTA_TC1 state machine .................................................................................................... 372
5.19.6.2.1 PAPTA_TC1 state machine overview................................................................................ 372
5.19.6.2.2 PAPTA_TC1_0:Idle state................................................................................................... 373
5.19.6.2.2.1 State description ......................................................................................................... 373
5.19.6.2.2.2 Transition PAPTA_TC1_0:Idle to PAPTA_TC1_1:Request_Change ......................... 373
5.19.6.2.3 PAPTA_TC1_1:Request_Change state ............................................................................ 373
5.19.6.2.3.1 State description ......................................................................................................... 373
5.19.6.2.3.2 Transition PAPTA_TC1_1:Request_Change to PAPTA_TC0:Idle ............................. 373
5.19.6.3 PAPTA_TC2 state machine .................................................................................................... 374
5.19.6.4 PAPTA_TC3 state machine .................................................................................................... 374
5.19.6.5 PAPTA_TC1_2 state machine ................................................................................................ 374
5.19.6.6 PAPTA_TC2_3 state machine ................................................................................................ 375
5.20 Spinup ................................................................................................................................................ 375
Annex A (normative) Jitter tolerance patterns when SAS dword mode is enabled....................................... 906
A.1 Jitter tolerance pattern (JTPAT) ........................................................................................................... 906
A.2 Compliant jitter tolerance pattern (CJTPAT) ........................................................................................ 906
A.3 Considerations for a phy transmitting JTPAT and CJTPAT ................................................................. 914
A.4 Considerations for a phy receiving JTPAT and CJTPAT ..................................................................... 915
Annex B (informative) SAS to SAS phy reset sequence examples .............................................................. 916
Annex D (informative) Forward error correction encoding while in SAS packet mode ................................. 926
D.1 Forward error correction encoding overview........................................................................................ 926
D.2 Forward error correction encoder implementation example ................................................................ 926
D.3 Reed Solomon code encoding function block diagram........................................................................ 926
D.4 Forward error correction encoder implementation in C........................................................................ 927
D.5 Example forward error correction encoder results ............................................................................... 933
Annex H (informative) Minimum deletable primitive and scrambled idle segment insertion rate summary .. 953
Annex L (informative) Primitive encoding, binary primitive coding, and extended binary primitive coding ... 982
L.1 Primitive encoding ................................................................................................................................ 982
L.2 Binary primitive coding ......................................................................................................................... 985
L.2.1 Binary primitive codes overview...................................................................................................... 985
L.2.2 Deletable binary primitives.............................................................................................................. 985
L.2.3 Binary primitives for use outside SAS logical link connections ....................................................... 988
L.2.4 Binary primitives for use inside SAS logical link connections ......................................................... 989
L.2.5 Binary primitives for use inside and outside SAS logical link connections...................................... 991
L.2.6 Unassigned binary primitives .......................................................................................................... 993
L.3 Extended binary primitive coding.......................................................................................................... 996
Annex N (informative) Successful low phy power condition handshake sequence .................................... 1000
Tables
Page
Table 1 – Numbering conventions .................................................................................................................. 36
Table 2 – Comparison of decimal prefixes and binary prefixes ...................................................................... 37
Table 3 – Constraint and note notation ........................................................................................................... 38
Table 4 – Class diagram notation for classes ................................................................................................. 39
Table 5 – Multiplicity notation.......................................................................................................................... 40
Table 6 – Class diagram notation for associations ......................................................................................... 40
Table 7 – Class diagram notation for aggregations ........................................................................................ 41
Table 8 – Class diagram notation for generalizations ..................................................................................... 42
Table 9 – Class diagram notation for dependency.......................................................................................... 42
Table 10 – Object diagram notation for objects .............................................................................................. 43
Table 11 – Object diagram notation for link .................................................................................................... 43
Table 12 – Data dword containing a value...................................................................................................... 47
Table 13 – Data dword containing four one-byte fields................................................................................... 48
Table 14 – Broadcast types ............................................................................................................................ 71
Table 15 – Names and identifiers ................................................................................................................... 74
Table 16 – SCSI architecture model object attribute mapping........................................................................ 74
Table 17 – NAA IEEE Registered format ........................................................................................................ 75
Table 18 – NAA Locally Assigned format........................................................................................................ 76
Table 19 – Hashed SAS address code parameters........................................................................................ 77
Table 20 – Device name created from the IDENTIFY DEVICE world wide name .......................................... 78
Table 21 – Expander logical phy to ECM requests ....................................................................................... 105
Table 22 – Expander logical phy to ECM responses .................................................................................... 105
Table 23 – ECM to expander logical phy confirmations................................................................................ 106
Table 24 – Expander logical phy to ECR to expander logical phy requests and indications ........................ 107
Table 25 – Expander logical phy to ECR to expander logical phy responses and confirmations ................. 108
Table 26 – Expander logical phy to BPP requests........................................................................................ 109
Table 27 – BPP to expander logical phy indications ..................................................................................... 110
Table 28 – Routing attributes and routing methods ...................................................................................... 110
Table 29 – Expander route table types ......................................................................................................... 112
Table 30 – Expander route table levels for externally configurable expander device R phy A ..................... 125
Table 31 – Expander route table levels for externally configurable expander device N ............................... 126
Table 32 – Expander route entries for externally configurable expander device E0 phy 1 ........................... 128
Table 33 – Expander route entries for externally configurable expander device F phy 0 ............................. 129
Table 34 – Zone manager password ............................................................................................................ 133
Table 35 – Zone phy information .................................................................................................................. 136
Table 36 – Zone phy information usage........................................................................................................ 137
Table 37 – Zone groups ................................................................................................................................ 139
Table 38 – Zone permission table................................................................................................................. 140
Table 39 – Zone permission table granting minimal permissions ................................................................. 141
Table 40 – Source zone group determination ............................................................................................... 143
Table 41 – Destination zone group determination ........................................................................................ 143
Table 42 – REQUESTED INSIDE ZPSDS bit and INSIDE ZPSDS PERSISTENT bit changes after a link
reset sequence ....................................................................................................................................... 144
Table 43 – ZONE GROUP field values if the ZONE GROUP PERSISTENT bit is set to one .................................... 145
Table 44 – Conditions that cause the ZONE GROUP field to be updated if the ZONE GROUP PERSISTENT
bit is set to zero........................................................................................................................................ 146
Table 45 – PHY EVENT SOURCE field............................................................................................................... 155
Table 46 – Bit designations........................................................................................................................... 162
Table 47 – Conversion from byte notation to character name example........................................................ 162
Table 48 – Data characters........................................................................................................................... 164
Table 49 – Control characters....................................................................................................................... 170
Table 50 – Control character usage.............................................................................................................. 171
Table 51 – Delayed code violation example ................................................................................................. 172
Table 52 – SPL packet.................................................................................................................................. 177
Table 53 – SPL PACKET HEADER field.............................................................................................................. 177
Table 54 – SPL packet payload that contains a scrambled idle segment..................................................... 178
Table 55 – Primitive parameter location within primitive segment ................................................................ 179
Table 56 – Primitive segment primitive data character placement................................................................ 179
Table 57 – Primitive segment SPL packet payload containing primitives and binary primitives ................... 179
Table 58 – Primitive segment SPL packet payload that contains primitives, binary
primitives, and a 1-dword primitive parameter in second dword.............................................................. 180
Table 59 – Primitive segment SPL packet payload that contains primitives,
binary primitives, and a 1-dword primitive parameter in fourth dword ..................................................... 180
Table 60 – Primitive segment SPL packet payload that contains primitives,
binary primitives, and a 2-dword primitive parameter .............................................................................. 181
Table 61 – Primitive segment SPL packet payload that contains a primitive or
binary primitive, and 3-dword primitive parameter ................................................................................... 181
Table 62 – Primitive segment SPL packet payload that contains an extended binary primitives ................. 181
Table 63 – PRIMITIVE SYNCHRONIZE SELECT field ............................................................................................ 182
Table 64 – CONTROL1 field, CONTROL2 field, and CONTROL3 field .................................................................. 182
Table 65 – SPL packet payload that contains an SPL frame segment ......................................................... 185
Table 66 – SPL packet payload that contains an idle dword segment.......................................................... 186
Table 67 – Reed Solomon code notation and definitions.............................................................................. 187
Table 68 – Ordering of parity and message symbols transmitted................................................................. 190
Table 69 – Ordering of bits when interleaving two SPL packets................................................................... 195
Table 70 – SNW-3 phy capabilities ............................................................................................................... 202
Table 71 – Interleaved SPL negotiation ........................................................................................................ 203
Table 72 – Supported settings bit priorities................................................................................................... 204
Table 73 – Example SNW-3 phy capabilities values..................................................................................... 205
Table 74 – Train_Tx-SNW TTIU bit............................................................................................................... 208
Table 75 – Train_Tx-SNW TTIU ................................................................................................................... 209
Table 76 – PATTERN TYPE field....................................................................................................................... 209
Table 77 – Control/Status TTIU .................................................................................................................... 210
Table 78 – COEFFICIENT SETTINGS field .......................................................................................................... 210
Table 79 – COEFFICIENT 1 REQUEST field, COEFFICIENT 2 REQUEST field, and COEFFICIENT 3 REQUEST field .. 211
Table 80 – Valid coefficient requests ............................................................................................................ 212
Table 81 – COEFFICIENT 1 STATUS field, COEFFICIENT 2 STATUS field, and COEFFICIENT 3 STATUS field........... 213
Table 82 – Error Response TTIU .................................................................................................................. 213
Table 83 – ERROR CODE field ......................................................................................................................... 215
Table 84 – Phy reset sequence timing specifications ................................................................................... 216
Table 85 – SATA speed negotiation sequence timing specifications............................................................ 218
Table 86 – SAS speed negotiation sequence timing specifications.............................................................. 223
Table 87 – SNW rates used in SNW-1, SNW-2, and Final-SNW.................................................................. 226
Table 88 – SNW-3 phy capabilities bit .......................................................................................................... 227
Table 89 – Transmitter training pattern ......................................................................................................... 229
Table 90 – Receiver training patterns while in SAS dword mode ................................................................. 234
Table 91 – SP state machine timers ............................................................................................................. 267
Table 92 – SP state machine variables......................................................................................................... 268
Table 93 – Messages to SP transmitter and SP receiver at start of RCDT .................................................. 281
Table 94 – SP_DWS state machine timers................................................................................................... 305
Table 95 – SP_PS state machine timers ...................................................................................................... 312
Table 96 – Mapping messages to the Training Control word........................................................................ 333
Table 97 – Mapping messages from PTT_SC1 state machine, PTT_SC2 state machine, and
PTT_SC3 state machine to the Training Status word.............................................................................. 333
Table 98 – Mapping Transmit Error Response message arguments to Error Response TTIU fields ........... 334
Table 99 – Transmit Error Response message arguments sent to PTT_T state machine ........................... 340
Table 100 – Mapping the Training Status word to SP receiver messages ................................................... 341
Table 101 – Mapping the Training Status word to PTT_GC1 state machine messages, PTT_GC2 state
machine messages, and PTT_GC3 state machine messages ................................................................ 342
Table 102 – Mapping the Training Control word to PTT_SC1 state machine messages, PTT_SC2 state
machine messages, and PTT_SC3 state machine messages ................................................................ 343
Table 103 – Mapping Coefficient Request byte to PTT_SC3 state machine message, PTT_SC2 state
Figures
Page
Figure 0 – Organization of this standard .......................................................................................................... lvi
Figure 1 – SCSI document relationships .......................................................................................................... 1
Figure 2 – ATA document relationships ............................................................................................................ 2
Figure 3 – Examples of association relationships in class diagrams .............................................................. 41
Figure 4 – Examples of aggregation relationships in class diagrams ............................................................. 41
Figure 5 – Example of generalization relationships in class diagrams ............................................................ 42
Figure 6 – Example of a dependency relationship in class diagrams ............................................................. 43
Figure 7 – Examples of link relationships for object diagrams ........................................................................ 44
Figure 8 – State machine conventions ........................................................................................................... 45
Figure 9 – SAS Domain class diagram ........................................................................................................... 50
Figure 10 – Phy class diagram ....................................................................................................................... 52
Figure 11 – SAS phy object diagram .............................................................................................................. 53
Figure 12 – Expander phy object diagram ...................................................................................................... 54
Figure 13 – Ports (narrow ports and wide ports) ............................................................................................. 56
Figure 14 – Port class diagram ....................................................................................................................... 57
Figure 15 – Port object diagram ..................................................................................................................... 58
Figure 16 – SAS devices ................................................................................................................................ 60
Figure 17 – Expander device .......................................................................................................................... 61
Figure 18 – Retimer device ............................................................................................................................ 62
Figure 19 – Domains ...................................................................................................................................... 63
Figure 20 – SAS domain bridging to ATA domains ......................................................................................... 63
Figure 21 – SAS domains bridging to ATA domains with SATA port selectors ............................................... 64
Figure 22 – Devices spanning SAS domains .................................................................................................. 65
Figure 23 – Single expander device topology example .................................................................................. 66
Figure 24 – Multiple expander device topologies and routing methods .......................................................... 67
Figure 25 – Potential pathways ...................................................................................................................... 68
Figure 26 – Multiple connections on wide ports .............................................................................................. 70
Figure 27 – State machines for SAS devices ................................................................................................. 80
Figure 28 – State machines for expander devices .......................................................................................... 81
Figure 29 – Transmit data path in a SAS phy ................................................................................................. 82
Figure 30 – SSP link, port, SSP transport, and SCSI application layer state machines .................................. 83
Figure 31 – SMP link, port, SMP transport, and management application layer state machines .................... 84
Figure 32 – STP link, port, STP transport, and ATA application layer state machines ................................... 85
Figure 33 – Transmit data path and state machines in an expander phy ........................................................ 86
Figure 34 – Receive data path in a SAS phy while in the SAS dword mode ................................................... 88
Figure 35 – Receive data path in an expander phy while in the SAS dword mode ......................................... 89
Figure 36 – Receive data path in a SAS phy while in the SAS packet mode .................................................. 91
Figure 37 – Receive data path in an expander phy while in the SAS packet mode ........................................ 92
Figure 38 – State machines and SAS Device classes .................................................................................... 93
Figure 39 – State machines and Expander Device classes ............................................................................ 94
Figure 40 – Reset terminology ....................................................................................................................... 96
Figure 41 – Expander device model ............................................................................................................. 100
Figure 42 – Expander device interfaces ....................................................................................................... 103
Figure 43 – Expander device interface detail ................................................................................................ 104
Figure 44 – Phy-based expander route table ............................................................................................... 112
Figure 45 – Expander-based expander route table ...................................................................................... 113
Figure 46 – Level-order traversal example ................................................................................................... 117
Figure 47 – Examples of invalid topologies .................................................................................................. 120
Figure 48 – Externally configurable expander device and table-to-table attachment ................................... 123
Figure 49 – Expander route index levels example ........................................................................................ 124
Figure 50 – Expander route index order example ......................................................................................... 127
Figure 51 – Zoning example ......................................................................................................................... 130
Figure 52 – One ZPSDS example ................................................................................................................ 130
Figure 53 – Zone manager location examples .............................................................................................. 131
Figure 54 – Three ZPSDSes example .......................................................................................................... 132
Figure 156 – Rate matching example while in the SAS dword mode ........................................................... 494
Figure 157 – Rate matching example while in the SAS packet mode ........................................................... 496
Figure 158 – SL (link layer for SAS logical phys) state machines (1 of 3) ..................................................... 498
Figure 159 – SL (link layer for SAS logical phys) state machines (2 of 3) ..................................................... 499
Figure 160 – SL (link layer for SAS logical phys) state machines (3 of 3) ..................................................... 500
Figure 161 – XL (link layer for expander logical phys) state machine (1 of 4) ............................................... 521
Figure 162 – XL (link layer for expander logical phys) state machine (2 of 4) ............................................... 522
Figure 163 – XL (link layer for expander logical phys) state machine (3 of 4) ............................................... 523
Figure 164 – XL (link layer for expander logical phys) state machine (4 of 4) ............................................... 524
Figure 165 – SSP frame transmission .......................................................................................................... 548
Figure 166 – SSP frame transmission with no pad dword ............................................................................ 549
Figure 167 – SSP frame transmission with one pad dword .......................................................................... 549
Figure 168 – SSP frame transmission with two pad dwords ......................................................................... 549
Figure 169 – SSP frame transmission with three pad dwords ...................................................................... 549
Figure 170 – Unaligned SOF at start of SSP frame example ........................................................................ 550
Figure 171 – Unaligned B_EOF (2) at end of SSP frame example ............................................................... 551
Figure 172 – Interlocked frames ................................................................................................................... 553
Figure 173 – Non-interlocked frames with the same initiator port transfer tags ............................................ 553
Figure 174 – Non-interlocked frames with different initiator port transfer tags .............................................. 554
Figure 175 – Closing an SSP connection example ....................................................................................... 555
Figure 176 – SSP (link layer for SSP phys) state machines (1 of 3 - frame transmission) ............................ 557
Figure 177 – SSP (link layer for SSP phys) state machines (2 of 3 - frame reception) ................................. 558
Figure 178 – SSP (link layer for SSP phys) state machines (3 of 3 - persistent connection) ........................ 559
Figure 179 – STP frame transmission .......................................................................................................... 572
Figure 180 – STP frame transmission with no pad dword ............................................................................ 573
Figure 181 – STP frame transmission with one pad dword .......................................................................... 573
Figure 182 – STP frame transmission with two pad dwords ......................................................................... 573
Figure 183 – STP frame transmission with three pad dwords ...................................................................... 573
Figure 184 – STP flow control ...................................................................................................................... 578
Figure 185 – Transmitting a continued primitive sequence while in the SAS dword mode ........................... 580
Figure 186 – Receiving a continued primitive sequence while in the SAS dword mode ............................... 580
Figure 187 – Example simultaneous connection recommendations for an expander device ....................... 584
Figure 188 – STP initiator port opening an STP connection while SAS dword mode is enabled .................. 586
Figure 189 – STP target port opening an STP connection while SAS dword mode is enabled .................... 587
Figure 190 – SMP frame transmission while in the SAS dword mode .......................................................... 588
Figure 191 – SMP frame transmission with no pad dword ............................................................................ 589
Figure 192 – SMP frame transmission with one pad dword .......................................................................... 589
Figure 193 – SMP frame transmission with two pad dword .......................................................................... 589
Figure 194 – SMP frame transmission with three pad dword ....................................................................... 589
Figure 195 – SMP_IP (link layer for SMP initiator phys) state machine ........................................................ 592
Figure 196 – SMP_TP (link layer for SMP target phys) state machine ......................................................... 594
Figure 197 – Port layer examples ................................................................................................................. 597
Figure 198 – PL_OC (port layer overall control) state machine .................................................................... 600
Figure 199 – PL_PM (port layer phy manager) state machine (1 of 2) ......................................................... 613
Figure 200 – PL_PM (port layer phy manager) state machine (2 of 2) ......................................................... 614
Figure 201 – Task management function sequence of SSP frames ............................................................. 640
Figure 202 – Non-data command sequence of SSP frames ......................................................................... 640
Figure 203 – Write command sequence of SSP frames ............................................................................... 641
Figure 204 – Read command sequence of SSP frames ............................................................................... 641
Figure 205 – Bidirectional command sequence of SSP frames .................................................................... 642
Figure 206 – ST_I (transport layer for SSP initiator ports) state machines ................................................... 651
Figure 207 – ST_T (transport layer for SSP target ports) state machines .................................................... 668
Figure 208 – Sequence of SMP frames ........................................................................................................ 690
Figure 209 – MT_IP (transport layer for SMP initiator ports) state machine ................................................. 691
Figure 210 – MT_TP (transport layer for SMP target ports) state machine .................................................. 693
Figure 211 – SA_PC (SCSI application layer power condition) state machine for SAS ................................ 747
Figure A.1 – CJTPAT pre-scrambling .......................................................................................................... 907
Figure B.1 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-1 only) ......................... 916
Figure B.2 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, phy B: SNW-1, SNW-2) ............. 917
Figure B.3 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, and SNW-3, phy B: SNW-1
and SNW-2) ............................................................................................................................................ 918
Figure B.4 – SAS speed negotiation sequence (phy A: SNW-2, SNW-3, phy B: SNW-1, SNW-2) ............. 919
Figure B.5 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-2 only) ......................... 920
Figure C.1 – CRC generator example .......................................................................................................... 921
Figure C.2 – CRC checker example ............................................................................................................ 921
Figure D.1 – SAS packet mode forward error correction encoder ............................................................... 926
Figure D.2 – Reed Solomon linear feedback shift register implementation ................................................. 927
Figure E.1 – BCH(69, 39, 9) code generator ............................................................................................... 936
Figure F.1 – SAS dword mode Scrambler ................................................................................................... 943
Figure F.2 – SAS packet mode scrambler ................................................................................................... 947
Figure F.3 – SAS packet mode 8-bit pattern generator ............................................................................... 948
Figure K.1 – Example topology .................................................................................................................... 961
Figure K.2 – Connection request - OPEN_ACCEPT ................................................................................... 963
Figure K.3 – Connection request - OPEN_REJECT by end device ............................................................. 964
Figure K.4 – Connection request - OPEN_REJECT by expander device .................................................... 965
Figure K.5 – Connection request - arbitration lost ........................................................................................ 966
Figure K.6 – Connection request - backoff and retry ................................................................................... 967
Figure K.7 – Connection request - backoff and reverse path ....................................................................... 968
Figure K.8 – Connection close - single step ................................................................................................. 969
Figure K.9 – Connection close - simultaneous ............................................................................................. 970
Figure K.10 – BREAK handling during path arbitration when the BREAK_REPLY method is disabled ...... 971
Figure K.11 – BREAK handling during a connection when the BREAK_REPLY method is disabled .......... 972
Figure K.12 – BREAK handling during path arbitration when the BREAK_REPLY method is enabled ....... 973
Figure K.13 – BREAK handling during a connection when the BREAK_REPLY method is enabled .......... 974
Figure K.14 – STP connection - originated by STP initiator port .................................................................. 975
Figure K.15 – STP connection - originated by STP target port in an STP SATA bridge .............................. 976
Figure K.16 – STP connection close - originated by STP initiator port ........................................................ 977
Figure K.17 – STP connection close - originated by STP target port in an STP SATA bridge .................... 978
Figure K.18 – XL1:Request_Path to XL5:Forward_Open transition ............................................................ 979
Figure K.19 – Partial pathway recovery ....................................................................................................... 980
Figure N.1 – Example of a requesting SAS device’s sequencing of a successful request for entering a
partial phy power condition ................................................................................................................... 1001
Figure N.2 – Example of a SAS device’s sequencing for a successful request to enter a partial phy
power condition ..................................................................................................................................... 1002
Foreword
This foreword is not part of this standard.
This standard defines the three transport protocols that use the SAS interconnect (see SAS-4):
a) Serial SCSI Protocol (SSP): a mapping of SCSI supporting multiple initiators and multiple targets;
b) Serial ATA Tunneled Protocol (STP): a mapping of Serial ATA expanded to support multiple initiators
and multiple targets; and
c) Serial Management Protocol (SMP): a management protocol.
This standard contains 16 annexes. Annex A is normative and is considered part of the standard. All of the
other annexes are informative and are not considered part of the standard.
Requests for interpretation, suggestions for improvement and addenda, or defect reports are welcome. They
should be sent to the INCITS Secretariat, International Committee for Information Technology Standards,
Information Technology Industry Council, 1101 K Street, NW, Suite 610, Washington, DC 20005.
This standard was processed and approved for submittal to ANSI by the International Committee for
Information Technology Standards (INCITS). Committee approval of the standard does not necessarily imply
that all committee members voted for approval. At the time it approved this standard, INCITS had the following
members:
Telecommunications Industry
Futurewei Technologies Inc
Association (TIA)
INCITS Technical Committee T10 on SCSI Storage Interfaces, which developed and reviewed this standard,
had the following members:
William Martin, Chair
Curtis Stevens, Vice-Chair
Introduction
This standard defines the protocol layer of the Serial Attached SCSI (SAS) interconnect and the three
transport protocols that use the SAS interconnect:
a) Serial SCSI Protocol (SSP): a mapping of SCSI supporting multiple initiators and multiple targets;
b) Serial ATA Tunneled Protocol (STP): a mapping of Serial ATA expanded to support multiple initiators
and multiple targets; and
c) Serial Management Protocol (SMP): a management protocol.
The standard is organized as follows:
Clause 1 (Scope) describes the relationship of this standard to the SCSI and ATA families of standards.
Clause 2 (Normative references) provides references to other standards and documents.
Clause 3 (Terms, definitions, symbols, abbreviations, keywords, and conventions) defines terms and
conventions used throughout this standard.
Clause 4 (General) describes architecture, names and identifiers, state machines, resets, I_T nexus loss,
provides an expander device model, a retimer device model, the discover process, the
configuration subprocess, zoning, phy power conditions, phy test functions, and phy events.
Clause 5 (Phy layer) describes the phy layer. It describes 8b10b encoding, 128b150b coding, bit order,
out of band (OOB) signals, phy reset sequences, phy layer state machines, character
encoding, character decoding, dwords, primitives, BMC coding, phy power conditions, and
spinup.
Clause 6 (Link layer) describes the link layer. It describes primitives, physical link rate tolerance
management, idle physical links, CRC, scrambling, forward error correction (FEC),
interleaved SPL, address frames, power control, the link reset sequence and its state
machine, low phy power condition, SAS domain changes, connections, rate matching, link
layer for SAS logical phys state machines and link layer for expander logical phys state
machines, and SSP, STP, and SMP connection rules and link layer state machines.
Clause 7 (Port layer) describes the port layer, which sits between one or more link layers and one or more
transport layers. It includes port layer state machines.
Clause 8 (Transport layer) describes the transport layer. It includes SSP, STP, and SMP frame definitions
and transport layer state machines.
Clause 9 (Application layer) describes the application layer. It describes SCSI transport protocol services,
mode parameters, log parameters, diagnostic parameters, power conditions, error handling,
and vital product data. It describes ATA application layer rules. It describes management
application layer rules including READY LED signal behavior and SMP functions.
Normative Annex A (Jitter tolerance patterns when SAS dword mode is enabled) provides information on
methods the SAS protocol uses to control generation of JTPAT and CJTPAT.
Informative Annex B (SAS to SAS phy reset sequence examples) provides additional phy reset sequence
examples.
Informative Annex C (CRC) provides information and example implementations of the CRC algorithm.
Informative Annex D (Forward error correction encoding while in SAS packet mode) provides information
and example implementations of the forward error correction encoding generated by a Reed
Solomon code encoding function.
Informative Annex E (SAS address hashing) provides information and example implementations of the
hashing algorithm.
Informative Annex F (Scrambling) provides information and example implementations of the scrambling
algorithm.
Informative Annex G (ATA architectural notes) describes ATA architectural differences from Serial ATA
and Serial ATA II.
Informative Annex H (Minimum deletable primitive and scrambled idle segment insertion rate summary)
describes the minimum ALIGN and/or NOTIFY insertion rates for physical link rate tolerance
management and rate matching.
Informative Annex I (Zone permission configuration descriptor examples) provides examples of using
multiple zone permission configuration descriptors in the SMP CONFIGURE ZONE
PERMISSION TABLE function.
Informative Annex J (SAS addressing) provides information on SAS addressing in SAS domains and
expander device SAS addressing.
Informative Annex K (Expander device handling of connections) describes expander device behavior in a
variety of connection examples.
Informative Annex L (Primitive encoding, binary primitive coding, and extended binary primitive coding)
lists the primitive encodings available for future versions of this standard.
Informative Annex M (Standards bodies contact information) lists the standards bodies contact
information.
Informative Annex N (Successful low phy power condition handshake sequence) contains an example of
the sequencing required between attached phys to successfully enter into a partial phy power
condition.
Informative Annex O (Terminology mapping to SPL-3) lists the terminology mapping between this
standard and SPL-3.
Informative Annex P (Bibliography) lists a bibliography for this standard.
Management
SCSI application layer ATA application layer Clause 9
application layer
SSP transport layer STP transport layer SMP transport layer Clause 8
The SCSI family of standards provides for many different transport protocols that define the rules for
exchanging information between different SCSI devices. This standard defines the rules for exchanging
information between SCSI devices using a serial interconnect. Other SCSI transport protocol standards define
the rules for exchanging information between SCSI devices using other interconnects.
Figure 1 shows the relationship of this standard to the other standards and related projects in the SCSI family
of standards.
SCSI/ATA Translation
(SAT-4 (INCITS 491-2017))
Other device-type specific Primary command set
command sets (e.g., (shared for all device types)
(SAM-5 (ISO/IEC 14776-415))
command set
SBC-3 (ISO/IEC 14776-323)
Interconnects (e.g.,
SPI-5 (ISO/IEC 14776-115),
SAS-4 (ISO/IEC 14776-155))
This standard also defines the rules for exchanging information between ATA hosts and ATA devices using the
same serial interconnect. Other ATA transport protocol standards define the rules for exchanging information
between ATA hosts and ATA devices using other interconnects.
Figure 2 shows the relationship of this standard to other standards and related projects in the ATA family of
standards.
Figure 1 and figure 2 show the general relationship of the documents to one another, and do not imply any
hierarchy, protocol stack, or system architecture relationship.
These standards specify the interfaces, functions and operations necessary to ensure interoperability
between conforming implementations. This standard is a functional description. Conforming implementations
may employ any design technique that does not violate interoperability.
This standard makes obsolete the following concept from SPL-4:
a) multiplexing.
2 Normative references
The following documents, in whole or in part, are normatively referenced in this document and are
indispensable for its application. For dated references, only the edition cited applies. For undated references,
the latest edition of the referenced document (including any amendments) applies.
Additional availability contact information is provided in Annex M.
ISO/IEC 14776-151, Serial Attached SCSI - 1.1 (SAS-1.1)
ISO/IEC 14776-263, Information technology – Small Computer System Interface (SCSI) – Part 263: SAS
Protocol Layer - 3 (SPL-3) (INCITS 492-2015 under consideration)
ISO/IEC 14776-323, Information technology – Small Computer System Interface (SCSI) – Part 323: SCSI
Block Commands - 3 (SBC-3)
ISO/IEC 14776-454, Information technology – Small Computer System Interface (SCSI) – Part 454: SCSI
Primary Commands - 4 (SPC-4)
INCITS 451-2008, AT Attachment - 8 ATA/ATAPI Architecture Model (ATA8-AAM)
INCITS 491-2017, SCSI/ATA Translation - 4 (SAT-4)
INCITS 502, SCSI Primary Commands - 5 (SPC-5) (planned as ISO/IEC 14776-455)
INCITS 566, SCSI Primary Commands - 6 (SPC-6) (planned as ISO/IEC 14776-456)
INCITS 515, SCSI Architecture Model - 5 (SAM-5) (planned as ISO/IEC 14776-415)
INCITS 518, SCSI Enclosure Services - 3 (SES-3) (planned as ISO/IEC 14776-373)
INCITS 529, ATA Command Set - 4 (ACS-4) (planned as ISO/IEC 17760-104)
INCITS 534, Serial Attached SCSI - 4 (SAS-4) (planned as ISO/IEC 14776-155)
For information on the current status of the listed documents or regarding availability, contact the indicated
organization.
Serial ATA Revision 3.3 (SATA). 2-February-2016
NOTE 1 - For information on the current status of Serial ATA documents, contact the Serial ATA International
Organization (see http://www.sata-io.org).
NOTE 2 - For more information on the current status of SFF documents, contact the Storage Networking
Industry Association (SNIA) (see www.snia.org/sff).
3.1.9 affiliation
STP target port (see 3.1.261) state of limiting acceptance of connection requests to those from one or more
STP initiator ports (see 3.1.255)
Note 1 to entry: See 6.21.6.
3.1.11 aggregation
form of association that defines a whole-part relationship between the whole (i.e., aggregate) class and its
parts
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.13 association
relationship between two or more classes that specifies connections among their objects
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: An association is a relationship that specifies that objects of one class are connected to
objects of another class.
Note 3 to entry: See 3.6.
3.1.18 attached
attribute of a class used when an instance of that class is only accessible over a service delivery subsystem
3.1.20 attribute
named property of a class that describes a range of values that its objects may hold
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.21 big-endian
format for storage or transmission of binary data in which the most significant byte appears first
Note 1 to entry: In a multi-byte value, the byte containing the most significant bit is stored in the lowest
memory address and transmitted first, and the byte containing the least significant bit is stored in the highest
memory address and transmitted last (e.g., for the value 0080h, the byte containing 00h is stored in the lowest
memory address, and the byte containing 80h is stored in the highest memory address).
3.1.24 broadcast
information about an event in the SAS domain, communicated between phys with the BROADCAST primitive
sequence (see 6.2.6.4) and/or the SMP ZONED BROADCAST function (see 9.4.4.20)
Note 1 to entry: See 4.1.15.
3.1.27 byte
sequence of eight contiguous bits considered as a unit
3.1.29 character
sequence of ten contiguous bits considered as a unit
Note 1 to entry: A byte is encoded as a character using 8b10b coding (see 5.2).
3.1.30 class
description of a set of objects that share the same attributes, operations relationships, and semantics
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: Classes may have attributes and may support operations.
3.1.32 codeword
message symbols and parity check symbols that are an indivisible group
3.1.38 confirmation
information passed from a lower layer state machine to a higher layer state machine, usually in response to a
request from another state machine
Note 1 to entry: See 3.7.
3.1.39 connection
temporary association between a SAS initiator port and a SAS target port using a pathway (see 3.1.153)
Note 1 to entry: See 4.1.12 and 6.16.
3.1.42 connector
electro-mechanical components consisting of a receptacle and a plug that provide a separable interface
between two transmission segments
Note 1 to entry: See SAS-4.
3.1.43 constraint
mechanism for specifying semantics or conditions that are maintained as true between entities
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: An example of a constraint is a required condition between associations.
Note 3 to entry: See 3.6.
3.1.53 deadlock
condition in which two or more processes (e.g., connection requests) are waiting on the others to complete,
resulting in none of the processes completing
3.1.57 dependency
relationship between two classes where a change to one class (i.e., the independent class) may cause a
change in the other class (i.e., the dependent class)
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.67 disparity
difference between the number of ones and zeros in a character (see 5.2)
3.1.68 domain
I/O system consisting of devices that communicate with one another by means of a service delivery
subsystem
Note 1 to entry: Examples of domains are a SAS domain (see 3.1.193), a SCSI domain (see 3.1.216), and an
ATA domain (see 3.1.16)
Note 2 to entry: See 4.1.9.
3.1.69 dword
sequence of four contiguous bytes or four contiguous characters considered as a unit
Note 1 to entry: The meaning depends on the context (e.g., when discussing the bits being transmitted over a
physical link, dword represents four characters (i.e., 40 bits) and when discussing the contents of a frame
before 8b10b encoding (see 3.1.2) or after 10b8b decoding (see 3.1.3), dword represents four bytes (i.e.,
32 bits)).
3.1.71 enclosure
box, rack, or set of boxes providing the powering, cooling, mechanical protection, EMI protection, and external
electronic interfaces for one or more end devices (see 3.1.72) and/or expander devices (see 3.1.76)
Note 1 to entry: The enclosure provides the outermost electromagnetic boundary and acts as an EMI barrier;
an enclosure is not a class in this standard.
3.1.86 field
group of one or more contiguous bits
3.1.87 Final-SNW
final speed negotiation window for 1.5 Gbit/s or 3 Gbit/s without training (see 5.11.4.2.3.2)
3.1.89 frame
sequence of data dwords between a start of frame primitive and an end of frame primitive
Note 1 to entry: Start of frame primitives are SOF, SOAF, and SATA_SOF.
Note 2 to entry: End of frame primitives are EOF, EOAF, SATA_EOF, B_EOF (0), B_EOF (1), B_EOF (2), and
B_EOF (3).
3.1.91 generalization
relationship among classes where one class (i.e., the superclass) shares the attributes and operations of one
or more other classes (i.e., the subclasses)
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.96 hash
mathematical function that maps values from a larger set of values into a smaller set of values, reducing a
long value into a shorter hashed value
3.1.108 indication
information passed from a lower layer state machine to a higher layer state machine, usually responding to a
request from that higher layer state machine (e.g., see figure 42)
Note 1 to entry: See 3.7.
3.1.119 left-aligned
type of field containing ASCII data in which unused bytes are placed at the end of the field (highest offset) and
are filled with ASCII space (20h) characters
Note 1 to entry: See SPC-6.
3.1.121 little-endian
format for storage or transmission of binary data in which the least significant byte appears first
Note 1 to entry: In a multi-byte value, the byte containing the least significant bit is stored in the lowest
memory address and transmitted first, and the byte containing the most significant bit is stored in the highest
memory address and transmitted last (e.g., for the value 0080h, the byte containing 80h is stored in the lowest
memory address, and the byte containing 00h is stored in the highest memory address.
3.1.122 livelock
condition where two or more processes (e.g., connection requests) repeatedly change their state in response
to changes in other processes, resulting in none of the processes completing
3.1.123 local
attribute of a class used when an instance of that class is accessible without having to access any service
delivery subsystem
3.1.131 media
material on which data is stored
Note 1 to entry: Media is the plural of medium.
Note 2 to entry: An example of media in which data is stored are magnetic disks.
3.1.132 message
information sent between state machines
Note 1 to entry: See 3.7.
3.1.134 multiplicity
indication of the range of allowable instances of an object or an attribute
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.141 nexus
relationship between two SAS devices or two SCSI devices
Note 1 to entry: When referring to SAS devices (see 3.1.191), a relationship between two SAS devices, and
the SAS initiator port and the SAS target port objects within those SAS devices.
Note 2 to entry: When referring to SCSI devices (see 3.1.215), a relationship between two SCSI devices, and
the SCSI initiator port and the SCSI target port objects within those SCSI devices.
Note 3 to entry: See SAM-5.
3.1.142 object
entity with a well-defined boundary and identity that encapsulates state and behavior
Note 1 to entry: All objects are instances of classes (i.e., a concrete manifestation of a class is an object).
3.1.148 operation
service that may be requested from any object of the class in order to affect behavior
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: Operations describe what a class is allowed to do and may be a request or a query.
Note 3 to entry: An operation that is a request may change the state of the object but an operation that is a
query should not.
Note 4 to entry: See 3.6.
3.1.153 pathway
set of logical links between a SAS initiator phy and a SAS target phy being used by a connection (see 3.1.39)
Note 1 to entry: See 4.1.11.
3.1.156 phy
object in a device that is used to interface to other devices (e.g., an expander phy (see 3.1.79) or a SAS phy
(see 3.1.200))
Note 1 to entry: See 4.1.2 and SAS-4.
3.1.163 port
SAS port (see 3.1.201) or an expander port (see 3.1.80)
Note 1 to entry: Each port contains one or more phys (see 3.1.156).
Note 2 to entry: See 4.1.3.
3.1.167 power on
power being applied
3.1.168 primitive
8b10b coded dword in which the first byte is a control byte (i.e., 7Ch or BCh) or a control character (i.e., K28.3
or K28.5)
Note 1 to entry: For a phy that supports being attached to SATA phy, an 8b10b coded dword containing a 7Ch
or BCh control byte followed by three data bytes, or a K28.3 or K28.5 control character with correct disparity
followed by three data characters with correct disparity.
Note 2 to entry: For a phy that does not support being attached to SATA phy, an 8b10b coded dword
containing a BCh control byte followed by three data bytes, or a K28.5 control character with correct disparity
followed by three data characters with correct disparity.
Note 3 to entry: See 6.2.
3.1.174 rate
data transfer rate of a physical or logical link
Note 1 to entry: Rate examples are 1.5 Gbit/s, 3 Gbit/s, 6 Gbit/s, 12 Gbit/s, or 22.5 Gbit/s.
3.1.179 request
information passed from a higher layer state machine to a lower layer state machine, usually to initiate some
action
Note 1 to entry: See 3.7.
3.1.181 response
information passed from a higher layer state machine to a lower layer state machine, usually in response to an
indication (see 3.1.108)
Note 1 to entry: See 3.7.
3.1.186 role
label at the end of an association (see 3.1.13) or aggregation (see 3.1.11) that defines a relationship to the
class on the other side of the association or aggregation
Note 1 to entry: This definition only applies when used in relation to UML.
Note 2 to entry: See 3.6.
3.1.214 scrambling
modifying data by XORing each bit with a pattern generated by a linear feedback shift register to minimize
repetitive character patterns
Note 1 to entry: See 6.8.
3.1.264 symbol
computational unit of a codeword
Note 1 to entry: This definition only applies when referring to forward error correction (see 5.5.7).
3.1.270 Train_Rx-SNW
speed negotiation window with receiver training
Note 1 to entry: See 5.11.4.2.3.5.
3.1.272 Train_Tx-SNW
speed negotiation window with transmitter training
Note 1 to entry: See 5.11.4.2.3.4.
3.1.286 word
sequence of 16 contiguous bits considered as a unit
3.2.1 Abbreviations
Abbreviation Meaning
Abbreviation Meaning
MA management application layer (see 9.4)
MRTT maximum receiver training time (see table 86)
MSB most significant bit (see 3.1.133)
MT SMP transport layer state machines (see 8.4.5)
MTTT maximum transmitter training time (see table 86)
MTWT maximum Train_Rx-SNW window time (see table 86)
MTXT maximum Train_Tx-SNW window time (see table 86)
N/A not applicable
NAA network address authority (see 4.2)
NAK negative acknowledge (see 6.2.7.6)
OOB out-of-band
OOBI out-of-band interval
OUI organizationally unique identifier (i.e., company identifier)
PL port layer state machines (see 7.2)
PL_OC port layer overall control (see 7.2.2)
PL_PM port layer phy manager (see 7.2.3)
PTT phy layer transmitter training state machines (see 5.18)
RCDT rate change delay time (see table 86)
RD running disparity (see 3.1.189)
RRDY receiver ready (see 6.2.7.7)
Rx receiver device (see 3.1.176)
SA SCSI application (see 9.2)
SAM-5 SCSI Architecture Model - 5 standard (see clause 2)
SA_PC SCSI application layer power condition state machine (see 9.2.10.2)
SAS Serial Attached SCSI (see 3.1.225)
SATA Serial ATA (see 3.1.223) or the Serial ATA 3.3 specification (see clause 2)
SBC-3 SCSI Block Commands - 3 standard (see clause 2)
SCSI Small Computer System Interface family of standards
SGPIO Serial GPIO (see clause 2)
SL link layer for SSP phys state machines (see 6.18)
SL_IR link layer identification and hard reset state machines (see 6.12)
SL_CC link layer connection control state machine (see 6.18.4)
SL_P SL_P_C or SL_P_S
SL_P_C link layer power consumer device state machine (see 6.14.5)
SL_P_S link layer power source device state machine (see 6.14.4)
SL_RA link layer receive OPEN address frame state machine (see 6.18.3)
SMP Serial Management Protocol (see 3.1.226) or link layer for SMP phys state machines
(see 6.22.6)
SNLT speed negotiation lock time (see table 86)
SNTT speed negotiation transmit time (see table 86)
SNW speed negotiation window (see 3.1.240)
SNW-1 speed negotiation window for 1.5 Gbit/s without training (see 5.11.4.2.3.2)
Abbreviation Meaning
SNW-2 speed negotiation window for 3 Gbit/s without training (see 5.11.4.2.3.2)
SNW-3 speed negotiation window negotiating physical link rates with training (see 5.11.4.2.3.3)
SNWT speed negotiation window time (see table 86)
SOAF start of address frame (see 6.2.6.18)
SOF start of frame (see 6.2.7.8)
SP phy layer state machine (see 5.14)
SP_DWS phy layer dword synchronization state machine (see 5.15)
SPC-6 SCSI Primary Commands - 6 standard (see clause 2)
SPL SAS protocol layer
SSP Serial SCSI Protocol (see 3.1.227) or link layer for SSP phys state machines (see
6.20.9)
ST transport layer for SSP ports state machines (see 8.2.6)
ST_I transport layer for SSP initiator ports state machines (see 8.2.6.2)
ST_IFR transport layer for SSP initiator ports initiator frame router state machine (see 8.2.6.2.2)
ST_ITS transport layer for SSP initiator ports initiator transport server state machine (see
8.2.6.2.3)
STP Serial ATA Tunneled Protocol (see 3.1.224) or link layer for STP phys state machines
(see 6.21.10)
ST_T transport layer for SSP target ports state machines (see 8.2.6.3)
ST_TFR transport layer for SSP target ports target frame router state machine (see 8.2.6.3.2)
ST_TTS transport layer for SSP target ports target transport server state machine (see 8.2.6.3.3)
TLT training lock time (see table 86)
TT STP transport layer state machines (see 8.3.3)
TTIU transmitter training information unit (see 3.1.279)
Tx transmitter device (see 3.1.273)
UI unit interval (see 3.1.280)
UML Unified Modeling Language
VPD vital product data (see 9.2.11)
XL link layer for expander phys state machine (see 6.19)
ZPSDS zoned portion of a service delivery subsystem (see 3.1.292)
3.2.2 Units
Units Meaning
Gbit/s gigabits per second (i.e., 109 bits per second)
µs microsecond (i.e., 10-6 seconds)
m meter
ms millisecond (i.e., 10-3 seconds)
ns nanosecond (i.e., 10-9 seconds)
ps picosecond (i.e., 10-12 seconds)
s second (unit of time)
V volt
3.2.3 Symbols
Symbols Meaning
Kxx.y control character (see 3.1.45)
Dxx.y data character (see 3.1.51)
ZP[s, d] zone permission bit for a source zone group (i.e., s) and a destination zone group (i.e.,
d) in the zone permission table (see 4.9.3.3)
® registered trademark
Mathematical
Meaning
Operators
NE not equal
XOR exclusive logical OR
^ exclusive logical OR
< less than
less than or equal to
> greater than
greater than or equal to
+ plus
- minus
± plus or minus
× multiplied by
/ divided by
~ approximately equal to
set membership
3.3 Keywords
3.3.1 invalid
keyword used to describe an illegal or unsupported bit, byte, word, field or code value
Note 1 to entry: Receipt of an invalid bit, byte, word, field or code value shall be reported as an error.
3.3.2 mandatory
keyword indicating an item that is required to be implemented as defined in this standard
3.3.3 may
keyword that indicates flexibility of choice with no implied preference (equivalent to “may or may not”)
3.3.5 obsolete
keyword indicating that an item was defined in prior standards but has been removed from this standard
3.3.6 optional
keyword that describes features that are not required to be implemented by this standard
Note 1 to entry: If any optional feature defined in this standard is implemented, then it shall be implemented
as defined in this standard.
3.3.7 reserved
keyword referring to bits, bytes, words, fields, and code values that are set aside for future standardization
Note 1 to entry: A reserved bit, byte, word or field shall be set to zero, or in accordance with a future
extension to this standard.
Note 2 to entry: Recipients are not required to check reserved bits, bytes, words or fields for zero values;
receipt of reserved code values in defined fields shall be reported as an error.
3.3.8 restricted
keyword referring to bits, bytes, words, and fields that are set aside for other identified standardization
purposes
Note 1 to entry: A restricted bit, byte, word, or field shall be treated as a reserved bit, byte, word or field in the
context where the restricted designation appears.
3.3.9 shall
keyword indicating a mandatory requirement
Note 1 to entry: Designers are required to implement all such mandatory requirements to ensure
interoperability with other products that conform to this standard.
3.3.10 should
keyword indicating flexibility of choice with a strongly preferred alternative (equivalent to “is strongly
recommended”
Certain words and terms used in this standard have a specific meaning beyond the normal English meaning.
These words and terms are defined either in clause 3 or in the text where they first appear.
Names of signals, address frames, primitives and primitive sequences, SMP functions, state machines, SCSI
and ATA commands, SCSI statuses, SCSI sense keys, and SCSI additional sense codes are in all uppercase
(e.g., REQUEST SENSE command).
Names of messages, arguments, requests, confirmations, indications, responses, event notifications, timers,
SCSI diagnostic pages, SCSI mode pages, and SCSI log pages are in mixed case (e.g.,
Disconnect-Reconnect mode page).
Names of fields are in small uppercase (e.g., DESTINATION SAS ADDRESS). Normal case is used when the
contents of a field are being discussed. Fields containing only one bit are usually referred to as the NAME bit
instead of the NAME field.
Names of procedure calls are identified by a name in bold type (e.g., Execute Command). For more
information on procedure calls see 3.9.
Lists sequenced by lowercase or uppercase letters show no ordering relationship between the listed items.
EXAMPLE 1 -The following list shows no relationship between the named items:
EXAMPLE 2 -The following list shows an ordered relationship between the named items:
1) top;
2) middle; and
3) bottom.
Lists are associated with an introductory paragraph or phrase, and are numbered relative to that paragraph or
phrase (i.e., all lists begin with an a) or 1) entry).
If a conflict arises between text, tables, or figures, the order of precedence to resolve the conflicts is text, then
tables, and finally figures. Not all tables or figures are fully described in the text. Tables show data format and
values.
Notes and examples do not constitute any requirements for implementers and notes are numbered
consecutively throughout this standard.
A binary number is represented in this standard by any sequence of digits consisting of only the Arabic
numerals 0 and 1 immediately followed by a lower-case b (e.g., 0101b). Underscores or spaces may be
included between characters in binary number representations to increase readability or delineate field
boundaries (e.g., 00010101 11001110b, 00010101_11001110b, 0 0101 1010b, or 0_0101_1010b).
A hexadecimal number is represented in this standard by any sequence of digits consisting of only the Arabic
numerals 0 to 9 and/or the upper-case English letters A to F immediately followed by a lower-case h (e.g.,
FA23h). Underscores or spaces may be included between characters in hexadecimal number representations
to increase readability or delineate field boundaries (e.g., B FD8C FA23h or B_FD8C_FA23h).
A decimal number is represented in this standard by any sequence of digits consisting of only the Arabic
numerals 0 to 9 not immediately followed by a lower-case b or lower-case h (e.g., 25).
A range of numeric values is represented in this standard in the form “a to z”, where a is the first value
included in the range, all values between a and z are included in the range, and z is the last value included in
the range (e.g., the representation “0h to 3h” includes the values 0h, 1h, 2h, and 3h).
Variables (i.e., alphanumeric names that represent values in computations and other statements) are
represented in the same San-serif font as other information in this standard.
This standard uses the following conventions for representing decimal numbers:
a) the decimal separator (i.e., separating the integer and fractional portions of the number) is a period;
b) the thousands separator (i.e., separating groups of three digits in a portion of the number) is a space;
c) the thousands separator is used in both the integer portion and the fraction portion of a number; and
d) the decimal representation for a year is 1999 not 1 999.
Table 1 shows some examples of decimal numbers using various numbering conventions.
A decimal number represented in this standard with an overline over one or more digits following the decimal
point is a number where the overlined digits are infinitely repeating (e.g., 666.6 means 666.666 666... or
666 2/3, and 12.142 857 means 12.142 857 142 857... or 12 1/7).
This standard represents values using both decimal units of measure and binary units of measure. Values are
represented by the following formats:
a) for values based on decimal units of measure:
1) numerical value (e.g., 100);
2) space; and
3) prefix symbol and unit:
1) decimal prefix symbol (e.g., M) (see table 2); and
2) unit abbreviation;
and
b) for values based on binary units of measure:
1) numerical value (e.g., 1 024);
2) space; and
3) prefix symbol and unit:
1) binary prefix symbol (e.g., Gi) (see table 2); and
2) unit abbreviation.
Table 2 compares the prefix, symbols, and power of the binary and decimal units.
Decimal Binary
Power Power
Prefix name Prefix symbol Prefix name Prefix symbol
(base-10) (base-2)
When this standard requires one or more bytes to contain specific encoded characters, the specific characters
are enclosed in single quotation marks. The single quotation marks identify the start and end of the characters
that are required to be encoded but are not themselves to be encoded. The characters that are to be encoded
are shown in the case that is to be encoded.
An ASCII space character (i.e., 20h) may be represented in a string by the character ‘¬’ (e.g., ‘SCSI¬device’).
The encoded characters and the single quotation marks that enclose them are preceded by text that specifies
the character encoding methodology and the number of characters required to be encoded.
EXAMPLE - Using the notation described in this subclause, stating that eleven ASCII characters ‘SCSI device’ are to be
encoded is the same as writing out the following sequence of byte values: 53h 43h 53h 49h 20h 64h 65h 76h 69h 63h 65h.
This standard uses class diagrams and object diagrams with notation that is based on the UML.
See 3.6.3 for the conventions used for class diagrams.
See 3.6.4 for the conventions used for object diagrams.
Notation Description
The presence of the curly brackets (i.e., {}) defines constraint that is a
{Constraint text}
normative requirement. An example of a constraint is shown in figure 4.
Notation Description
Class Name
A class that has operations
and may or may not have
Operation01()
Operation02()
attributes
Class Name
Attribute01[1]
A class with attributes and
Attribute02[1]
operations
Operation01()
Operation02()
Class Name
Attribute01[1..*] A class with attributes that
Attribute02[1] have a specified multiplicity
Operation01() (see table 5) and operations
Operation02()
Table 5 shows the notation used to indicate multiplicity of classes and attributes in class diagrams.
Notation a Description
x, n..m Multiple disjoint instances of the class or attribute exist (e.g., 2, 8..15).
a
See figure 3 and figure 4 for examples of multiplicity notation.
Table 6 shows the notation used to denote association (i.e., “knows about”) relationships between classes.
Unless the two classes in an association relationship also have an aggregation relationship, association
relationships have a multiplicity notation (see table 5) at each end of the relationship line.
Notation Description
Note - The use of role names and association names are optional.
Class A Class C
Class D
Attribute 01[1] Attribute 01[1]
Attribute aa[1]
Attribute 02[1] Attribute 02[1]
1 0..1
Operation 1()
Table 7 shows the notation used to denote aggregation (i.e., “is a part of” or “contains”) relationships between
classes. The aggregation relationship is a specific type of association (see table 6) and always include
multiplicity notation (see table 5) at each end of the relationship line.
Notation Description
Whole Part The Part class is part of the Whole class (i.e.,
0..* 0..* read as “the whole contains the part”) and may
continue to exist even if the Whole class is
Multiplicity notation removed.
Table 8 shows the notation used to denote generalization (i.e., “is a kind of”) relationships between classes.
Notation Description
Subclass A Subclass B
Attribute 03[1] Attribute 04[1]
Superclass
Attribute 01[1]
Attribute 02[1] There is no significance to
generalizations that are
combined or not combined .
Table 9 shows the notation used to denote dependency (i.e., “depends on”) relationships between classes.
Notation Description
C la s s A C la s s B
Class A depends on class B. A change in class B
may cause a change in class A.
Dependent Independent
Notation Description
la b e l : C la s s N a m e
Notation for a named object that may or may not have
attributes
: C la s s N a m e
Notation for an anonymous object that may or may not
have attributes
: Class Name
Attribute01 = x Notation for a anonymous object with attributes
Attribute02 = y
Table 11 shows the notation used to denote link relationships between objects.
Notation Description
: O b je ct A : O b je ct B
An instance of an association between object A
and object B.
: Class A : Class Aa
Attribute 01 = round Attribute 01 = true
Attribute 02 = red Attribute 02 = 902
Figure 8 shows how state machines are described. See 4.3 for a summary of the state machines in this
standard.
When multiple state machines are present in a figure, they are enclosed in boxes with rounded corners.
Each state machine is identified by a state machine name. In state machines with one state, the state machine
is identified by a state designator. In state machines with multiple states, each state is identified by a state
designator and a state name. The state designator (e.g., SL1) is unique among all state machines in this
standard. The state name (e.g., Idle) is a brief description of the primary action taken during the state and the
same state name may be used by other state machines. Actions taken while in each state are described in the
state description text.
The definition of the state machine includes an introduction that:
a) summarizes the states in the state machine;
b) defines the initial state of the state machine after power on; and
c) summarizes the state machine counters, timers, and variables (see 3.7.4), if any, used by the state
machine.
For each state machine, an overview describes the operating environment (e.g., relationships with other state
machines, if the state machine operates in an identified object (see SAM-5) such as the device server).
3.7.2 Transitions
Transitions between states are shown with solid lines, with an arrow pointing to the destination state. A
transition may be labeled with a transition condition label (i.e., a brief description of the event or condition that
causes the transition to occur).
If the state transition in one figure goes to or comes from a state machine or state in a different figure, then the
transition is shown going to or coming from a state machine name or a state designator label with double
underlines.
The conditions and actions are described fully in the transition description text. In case of a conflict between a
figure and the text, the text shall take precedence.
Upon entry into a state, all actions to be processed in that state are processed. If a state is re-entered from
itself, then all actions to be processed in the state are processed again. A state may be entered and exited in
zero time if the conditions for exiting the state are valid upon entry into the state. Transitions between states
are instantaneous.
Messages passed between state machines are shown with dashed lines labeled with a message name. When
messages are passed between state machines within the same layer of the protocol, they are identified by
either:
a) a dashed line to or from a state machine name label with double underlines and/or state name label
with double underlines, if the destination is in a different figure from the source;
b) a dashed line to or from a state in another state machine in the same figure; or
c) a dashed line from a state machine name label with double underlines to a “(to all states)” label, if the
destination is every state in the state machine.
The meaning of each message is described in the state description text.
Requests, indications, confirmations, responses, and event notifications are shown with curved dashed lines
originating from or going toward the top or bottom of the figure. Each request, indication, confirmation,
response, and event notification is labeled. The meaning of each request, indication, confirmation, response,
and event notification is described in the state description text.
Messages with unfilled arrowheads are passed to or from the state machine’s transmitter or receiver, not
shown in the state machine figures, and are directly related to data being transmitted on or received from the
physical link.
The state machine description text for each state wholly defines the messages sent while the state machine is
in that state. If a state is repeatedly sending a message transitions to another state, then that state stops
sending that message before making the transition.
State machines may contain counters, timers, and variables that affect the operation of the state machine. The
following properties apply to counters, timers, and variables:
a) their scope is the state machine itself;
b) they are created and deleted within the state machines with which they are associated;
c) their initialization and modification is specified in the state descriptions and the transition descriptions;
and
d) their current values may be used to determine the behavior of a state and select the transition out of a
state.
State machine timers may continue to run while a state machine is in a given state and a timer may cause a
state transition upon reaching a defined threshold value (e.g., zero for a timer that counts down).
State machines may contain one or more arguments received in a message or confirmation as state machine
arguments. The following properties apply to state machine arguments:
a) the state machine that sends an argument owns that argument’s value;
b) the state machine that receives an argument shall not modify that argument’s value;
c) the state machine that sends an argument may resend that argument with a different value;
d) the scope of a state machine argument is the state machine itself; and
e) state machine argument usage is described in the state descriptions and the transition descriptions.
In a field in a table consisting of more than one bit that contains a single value (e.g., a number), the least
significant bit (LSB) is shown on the right and the most significant bit (MSB) is shown on the left (e.g., in a
byte, bit 7 is the MSB and is shown on the left and bit 0 is the LSB and is shown on the right). The MSB and
LSB are not labeled if the field consists of 8 or fewer bits.
In a field in a table consisting of more than one byte that contains a single value (e.g., a number), the byte
containing the MSB is stored at the lowest address and the byte containing the LSB is stored at the highest
address (i.e., big-endian byte ordering). The MSB and LSB are labeled.
NOTE 3 - SATA numbers bits within fields the same as this standard, but uses little-endian byte ordering.
In a field in a table consisting of more than one byte that contains multiple fields each with their own values
(e.g., a descriptor), there is no MSB and LSB of the field itself and thus there are no MSB and LSB labels.
Each individual field has an MSB and LSB, but they are not labeled.
In a field containing a text string (e.g., ASCII or UTF-8), the MSB label is the MSB of the first character, and
the LSB label is the LSB of the last character.
Multiple byte fields are represented by only two rows, where a non-sequentially increasing byte number
indicates the presence of additional bytes.
A data dword consists of 32 bits. Table 12 shows a data dword containing a single value, where the MSB is on
the left in bit 31, and the LSB is on the right in bit 0.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Table 13 shows a data dword containing four one-byte fields, where byte 0 (the first byte) is on the left and
byte 3 (the fourth byte) is on the right. Each byte has an MSB on the left and an LSB on the right.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
In this standard, the model for functional interfaces between objects is the callable procedure. Such interfaces
are specified using the following notation:
[Result =] Procedure Name (IN ([input-1] [,input-2] …), OUT ([output-1] [,output-2] …))
where:
This notation allows data objects to be specified as inputs and outputs. An interface between entities may
require only inputs. If a procedure call has no output arguments, then the word OUT, preceding comma, and
associated pair of balanced parentheses are omitted.
4 General
4.1 Architecture
A SAS domain (see 4.1.9) contains one or more SAS devices and a service delivery subsystem. A SAS
domain may be a SCSI domain (see SAM-5).
A SAS device (see 4.1.5) contains one or more SAS ports (see 4.1.3). A SAS device may be a SCSI device
(see SAM-5).
A SAS port (see 4.1.3) contains one or more phys (see 4.1.2). A SAS port may be a SCSI port (see SAM-5).
The service delivery subsystem (see 4.1.8) in a SAS domain may contain expander devices (see 4.1.6) and
retimer devices (see 4.1.7).
An expander device contains two or more expander ports (see 4.1.3) and one SMP port.
An expander port contains one or more phys (see 4.1.2).
An expander device shares its phys with the SAS devices contained within the expander device.
a retimer device contains one or more retimer lanes (see 4.1.7).
Figure 9 shows the class diagram for a SAS domain, showing the relationships between SAS Domain, SCSI
Domain, Service Delivery Subsystem, Expander Device, Expander Port, SAS Device, SAS Target Device,
SAS Initiator Device, SCSI Device, SCSI Target Device, SCSI Initiator Device, SAS Port, SMP Port, SCSI
Port, and Phy classes. Not all attributes are shown.
SCSI Domain
1 1
1
Service Delivery
Subsystem
1..*
SCSI Device 1
SCSI Device Name[1] 0..*
Expander Device
1 1 1 SAS Address
SAS Address[1]
1
1 1 SAS
Address
1..* 0..* 1
For the electrical and mechanical specifications of the physical interconnect (i.e., physical link, physical layer,
and physical phy), see SAS-4.
A device (i.e., a SAS device (see 4.1.5) or expander device (see 4.1.6)) contains one or more phys.
Each phy has:
a) a SAS address (see 4.2.4), inherited from the SAS port (see 4.1.3) or expander device;
b) a phy identifier (see 4.2.10) that is unique within the device;
c) optionally, support for being an SSP initiator phy;
d) optionally, support for being an STP initiator phy;
e) optionally, support for being an SMP initiator phy;
f) optionally, support for being an SSP target phy;
g) optionally, support for being an STP target phy; and
h) optionally, support for being an SMP target phy.
During the identification sequence (see 6.11), a logical phy:
a) transmits three IDENTIFY address frames including the SAS device type (i.e., end device or expander
device) of the device containing the phy, the SAS address of the SAS port or expander device
containing the logical phy, the device name, and other information; and
b) receives one or more IDENTIFY address frames containing the same set of information from the
attached logical phy, including the attached SAS device type, the attached SAS address, the attached
device name, and other attached information.
Figure 10 defines the Phy classes, showing the relationships between the following classes:
a) Phy;
b) Logical Phy;
c) SAS Phy;
d) SAS Logical Phy;
e) Expander Phy;
f) Expander Logical Phy;
g) SAS Initiator Phy;
h) SAS Target Phy;
i) SSP Phy;
j) STP Phy; and
k) SMP Phy.
SATA phys are also referenced in this standard but are defined by SATA.
Phy
Phy identifier
1
Expander Logical Phy
Figure 11 shows example objects instantiated from the SAS Phy class, including:
a) SSP initiator phy;
b) SSP target phy;
c) virtual SMP initiator phy;
d) virtual SMP target phy; and
e) SAS logical phy.
A SAS phy is represented by one of these objects during each connection. A SAS phy may be represented by
different phy objects in different connections.
SSP initiator phy : SAS Phy SSP target phy : SAS Phy
Physical Link Rate Physical Link Rate
Phy Identifier = x Phy Identifier = x
Type = physical Type = physical
Role = initiator Role = target
Protocol = SSP Protocol = SSP
SSP logical phy : Logical Phy SSP logical phy : Logical Phy
Phy Identifier = x Phy Identifier = x
Logical Link Rate Logical Link Rate
Protocol = SSP Protocol = SSP
Virtual SMP initiator phy : SAS Phy Virtual SMP target phy : SAS Phy
Physical Link Rate Physical Link Rate
Phy Identifier = x Phy Identifier = x
Type = virtual Type = virtual
Role = initiator Role = target
Protocol = SMP Protocol = SMP
SSP logical phy : Logical Phy SSP logical phy : Logical Phy
Phy Identifier = x Phy Identifier = x
Logical Link Rate Logical Link Rate
Protocol = SMP Protocol = SMP
Figure 12 shows the objects instantiated from the Expander Phy class, including:
a) expander phy;
a) virtual expander phy; and
a) expander logical phy.
Expander logical phy : Logical Phy Expander logical phy : Logical Phy
Phy Identifier = x Phy Identifier = x
Logical Link Rate Logical Link Rate
A port contains one or more phys. Ports in a device are associated with physical phys based on the
identification sequence (see 6.11). Ports are associated with virtual phys based on the design of the device.
A port is a narrow port if there is only one phy in the port.
A port is a wide port if there is more than one phy in the port.
A narrow port is created after transmitting and receiving SAS addresses, unless a wide port is created.
A wide port is created from two or more physical phys if, during the identification sequence (see 6.11), the
phys:
a) transmitted the same SAS address (see 4.2.4) that the other physical phys in that port also
transmitted in their outgoing IDENTIFY address frames (i.e., the SAS address is the same); and
b) received the same SAS address that the other physical phys in that port also received in their
incoming IDENTIFY address frames (i.e., the attached SAS address is the same).
A narrow link is the physical link that attaches a narrow port to another narrow port. A wide link is the set of
physical links that attach a wide port to another wide port.
Attaching a phy within a wide port to another phy in the same port (i.e., the SAS address transmitted in the
outgoing IDENTIFY address frame is the same as the SAS address received in the incoming IDENTIFY
address frame) is outside the scope of this standard.
Phys that are able to become part of the same wide port shall set the following bits and fields in each
IDENTIFY address frame (see 6.10.2) transmitted during the identification sequence to the same set of values
on each phy:
a) SAS DEVICE TYPE field;
Recipient wide ports are not required to check the consistency of the IDENTIFY address frames fields across
the phys within a recipients wide port.
Each phy in a port may be in a different phy power condition (see 4.11).
Figure 13 shows examples of narrow ports and wide ports, with a representation of the SAS address
transmitted during the identification sequence. Although several phys on the left transmit SAS addresses of B,
only phys attached to the same SAS addresses become part of the same ports. The set of phys with SAS
address B attached to the set of phys with SAS address Y become one port, while the set of phys with SAS
address B attached to the set of phys with SAS address Z become another port.
Narrow link
Narrow port Narrow port
SAS address A
Phy Physical link Phy
SAS address X
SAS address B
Phy Physical link Phy
SAS address Y
SAS address B
Phy Physical link Phy
SAS address Z
Figures in this standard that show ports but not phys, the phy level of detail is not shown, however, each port
always contains one or more phys.
Figure 14 defines the Port classes, showing the relationships between the following classes:
a) Port;
b) Expander Device;
c) Expander Port;
d) SAS Port;
e) SAS Initiator Port;
f) SAS Target Port;
g) SSP Port;
h) STP Port; and
i) SMP Port.
Expander Port
Attached SAS Address [1]
SAS Port
SAS Address[1]
Attached SAS Address [1]
1
SAS Initiator Port
Protocol[1] = SSP, STP, SMP SMP Port SMP Port
Target[0..255] Target[1]
Initiator[0..255] Initiator[0..1]
SAS Target Port
Protocol[1] = SSP, STP, SMP
STP Port
{There shall be at least one Target Target[0..255]
attribute or one Initiator attribute Initiator[0..255]
per phy contained within each instance }
Port objects remain instantiated even while no connection is open on any of the phys within the port.
SSP target port : SSP Port STP target port : STP Port SMP target port : SMP Port
SAS Address SAS Address SAS Address
Attached SAS Address Attached SAS Address Attached SAS Address
Target Target01 Target
Target02
SSP initiator port : SSP Port STP initiator port : STP Port SMP initiator port : SMP Port
SAS Address SAS Address SAS Address
Attached SAS Address Attached SAS Address Attached SAS Address
Initiator Initiator Initiator01
Initiator02
b) an ATA application client (see ATA8-AAM) is the source of ATA commands and device management
operation requests. An ATA application client uses an STP initiator port to interface to a service
delivery subsystem; and
c) a management application client is the source of SMP function requests. A management application
client uses an SMP initiator port to interface to a service delivery subsystem.
This standard defines the following device servers:
a) a SCSI device server (see SAM-5) processes SCSI commands. A SCSI device server uses an SSP
target port to interface to a service delivery subsystem;
b) an ATA device server (see ATA8-AAM) processes ATA commands and device management functions.
An ATA device server uses an STP target port to interface to a service delivery subsystem; and
c) a management device server processes SMP functions. A management device server uses an SMP
target port to interface to a service delivery subsystem.
A SCSI to ATA translation layer (see SAT-4) may be implemented to enable SCSI application clients to
communicate with ATA devices.
A SAS device contains one or more SAS ports, each containing one or more phys (i.e., a SAS port may be a
narrow port or a wide port).
Figure 16 shows examples of SAS devices with different port and phy configurations.
Phy Phy
SAS device
Phy Phy
Phy Phy
SAS device
Phy Phy
Phy Phy
An end device is a SAS device that is not contained in an expander device (see 4.1.6).
Expander devices are part of a service delivery subsystem and facilitate communication between multiple
SAS devices. Expander devices contain two or more external expander ports. Each expander device:
a) contains one SMP target port and one management device server;
b) contains one SMP initiator port and one management application client, if the expander device is
self-configuring;
c) may contain one SMP initiator port and one management application client, if the expander device is
not self-configuring; and
d) may contain SAS devices (e.g., an expander device may include an SSP target port for access to a
logical unit with a device type of 0Dh (i.e., enclosure services device) (see SPC-6 and SES-3)).
Expander device
Retimer devices may be present in a physical link between SAS devices (see 4.1.5). Retimer devices contain
one or more retimer lanes.
Figure 18 shows a retimer device.
Retimer device
Retimer lane
SAS initiator phy, SAS initiator phy,
SAS target phy, or SAS target phy, or
expander phy expander phy
4.1.9 Domains
ATA ATA
SSP SATA domain domain
initiator SSP
SSP STP SMP host
initiator
initiator initiator initiator SATA SATA
port port
ports
ports ports ports host host
port port
SSP STP SMP
SATA SATA
Service delivery
SSP subsystem SATA
with expander SATA port
devices selector
Figure 19 – Domains
SSP
SSP STP SMP
initiator
initiator initiator initiator
ports
ports ports ports
STP SMP
SSP
Service delivery
subsystem STP STP SATA SATA SATA device
with expander bridges port
devices
ATA domain
SSP STP SMP
SSP
SSP STP SMP
initiator
target target target
ports
ports ports ports
SAS domain
Figure 21 shows two SAS domains bridging to one or more ATA domains containing SATA devices with SATA
port selectors.
SSP
SSP STP SMP SSP
SSP STP SMP
initiator
initiator initiator initiator initiator
initiator initiator initiator
ports
ports ports ports ports
ports ports ports
STP SMP STP SMP
SSP SSP
SATA device
ATA domain
ATA domains
Figure 21 – SAS domains bridging to ATA domains with SATA port selectors
Figure 22 shows SAS initiator devices and SAS target devices with SAS ports in the same SAS domains and
in different SAS domains. If a SAS device has ports in the same SAS domain, then the ports shall have
different SAS addresses. If a SAS device has ports in different SAS domains, then the ports may have the
same SAS address (see 4.2.4).
More than one expander device may be part of a service delivery subsystem.
To avoid an overflow of an expander route index during the configuration subprocess (see 4.8), a SAS domain
containing an externally configurable expander device shall be constructed such that the number of expander
route indexes available for each expander phy with the table routing attribute is greater than or equal to the
number of SAS addresses addressable through that expander phy.
Expander
End device D D End device
device
Key:
D = direct routing method
Expander Expander
End device D S S D End device
device device
4.1.11 Pathways
A potential pathway is a set of logical links between a SAS initiator phy and a SAS target phy. If a SAS initiator
phy is directly attached to a SAS target phy, then there is one potential pathway. If there are expander devices
between a SAS initiator phy and a SAS target phy, then it is possible that there is more than one potential
pathway, each consisting of a set of logical links between the SAS initiator phy and the SAS target phy. The
physical links may or may not be using the same physical link rate.
Figure 25 shows examples of potential pathways.
Expander device
Key:
Single physical link Potential Pathway
A pathway is a set of logical links between a SAS initiator phy and a SAS target phy being used by a
connection (see 4.1.12).
A partial pathway is the set of logical links participating in a connection request that have not yet conveyed a
connection response (see 6.16).
A partial pathway is blocked while path resources that it requires are held by another partial pathway (see
6.16).
4.1.12 Connections
A connection is a temporary association between a SAS initiator phy and a SAS target phy. During a
connection:
a) all dwords and SPL packets from the SAS initiator phy that are not deletable primitives, deletable
binary primitives, or deletable extended binary primitives are forwarded to the SAS target phy via a
pathway; and
b) all dwords and SPL packets from the SAS target phy that are not deletable primitives, deletable binary
primitives, or deletable extended binary primitives are forwarded to the SAS initiator phy via the same
pathway.
A source phy transmits an OPEN address frame (see 6.10.3) specifying the SAS address of a destination phy
to attempt to establish a connection.
A connection is pending when an OPEN address frame has been delivered along a completed pathway to the
destination phy but the destination phy has not yet responded to the connection request. A connection is
established when the source phy receives an OPEN_ACCEPT (see 6.16) from the destination phy.
A connection enables communication for one protocol:
a) SSP;
b) STP; or
c) SMP.
For SSP and STP, connections may be opened and closed multiple times during the processing of a
command (see 6.16).
The connection rate is the effective rate of dwords through the pathway between a SAS initiator phy and a
SAS target phy, established through the connection request. Every logical phy shall support a 1.5 Gbit/s
connection rate regardless of its logical link rate.
No more than one connection is active on a logical link at a time. If the connection is an SSP or SMP
connection:
a) SAS dword mode is enabled (see 5.8) and there are no dwords to transmit associated with that
connection, then idle dwords are transmitted; or
b) SAS packet mode is enabled (see 5.8) and there are no SPL packets to transmit associated with that
connection, then SPL packet payloads containing idle dword segments (see 5.5.6) are transmitted.
If the connection is an STP connection and there are no dwords to transmit associated with that connection,
then SATA_SYNCs, SATA_CONTs, or vendor specific scrambled data dwords are transmitted as defined in
SATA.
If there is no connection on a logical link and:
a) SAS dword mode is enabled, then idle dwords are transmitted; or
b) SAS packet mode is enabled, then SPL packet payloads containing idle dword segments are
transmitted.
The number of connections established by a SAS port shall not exceed the number of SAS logical phys within
the SAS port (i.e., only one connection per SAS logical phy is allowed). There shall be a separate connection
on each logical link.
If multiple potential pathways exist between the SAS initiator ports and the SAS target ports, then multiple
connections may be established by a SAS port between the following:
a) one SAS initiator port to multiple SAS target ports;
b) one SAS target port to multiple SAS initiator ports; or
c) one SAS initiator port to one SAS target port.
Once a connection is established, the pathway used for that connection shall not be changed (i.e., all the
logical links that make up the pathway remain dedicated to the connection until the connection is closed).
Figure 26 shows examples of connections between wide and narrow ports. All the connections shown may
occur simultaneously. For the connections shown in figure 26:
a) those labeled A, and B are an example of one SAS initiator port with multiple connections to multiple
SAS target ports;
b) those labeled A and C are an example of multiple connections between two SAS initiator ports and
one SAS target port; and
c) those labeled C, D, E, and F are an example of one SAS initiator port with connections to multiple
SAS target ports with one of those SAS target ports having multiple connections with that SAS initiator
port.
If an end device’s SSP phy supports persistent connections (e.g., the SSP PERSISTENT CAPABLE bit is set to one
in the Protocol Specific Port Information VPD page (see 9.2.11.4) for the SSP phy), then that SSP phy sets the
PERSISTENT CAPABLE bit to one in the IDENTIFY address frame (see 6.10.2).
Support for persistent connections on attached phys is reported using the SMP DISCOVER function (see
9.4.4.10).
If an SSP phy has receive resources available, then it may advance credit. To advance credit an SSP phy
shall:
1) set the CREDIT ADVANCE bit to one in the OPEN address frame; and
2) request that the SSP transmitter send an RRDY after an OPEN_ACCEPT is received.
If an SSP phy that implements credit advance receives an OPEN address frame with the CREDIT ADVANCE bit
set to one, then the SSP phy:
1) increments the transmit SSP frame credit by one (see 6.20.9.1); and
2) ignores the next RRDY.
A destination SSP phy that does not implement the CREDIT ADVANCE bit (see 6.10.3) does not advance credit.
4.1.15 Broadcasts
Broadcasts are used to notify SAS ports and expander devices in the SAS domain about certain events.
Broadcasts are transmitted using BROADCAST (see 6.2.6.4) and/or the SMP ZONED BROADCAST function
(see 9.4.4.20).
Table 14 defines the Broadcast types.
SAS ports other than SSP initiator ports shall ignore this Broadcast.
Broadcast
yes Reserved. SAS ports shall ignore this Broadcast.
(Reserved 3)
Broadcast
yes Reserved. SAS ports shall ignore this Broadcast.
(Reserved 4)
Initiates the zone activate step (see 4.9.6.4).
Broadcast (Zone
no
Activate) Devices that are not locked zoning expander devices shall ignore this
Broadcast.
a All Broadcasts are supported by the SMP ZONED BROADCAST function (see 9.4.4.20), which defines
additional reserved Broadcast types. Broadcasts labeled “yes” are also transmitted via BROADCAST
primitive sequences (see 6.2.6.4).
When an expander port receives a Broadcast, the BPP (see 4.5.5) shall forward the Broadcast on at least one
phy in each other expander port if zoning is disabled or forward the Broadcast as described in 4.9.5 if zoning
is enabled.
An expander device is not required to queue multiple identical Broadcasts for the same expander port. If a
second identical Broadcast is requested before the first Broadcast has been transmitted, then the second
Broadcast may be ignored.
A SAS device or expander device may implement counters for Broadcasts it originates and report them in the
REPORT BROADCAST response (see 9.4.4.9). If counters are supported, then the SAS device or expander
device shall, for each combination of Broadcast type and Broadcast reason that the SAS device or expander
device supports:
a) if the Broadcast is related to a phy, then maintain a separate Broadcast counter for each phy; or
b) if the Broadcast is not related to a phy, then maintain one originated Broadcast counter.
Broadcast (Change)s originated by an expander device are counted and reported in the REPORT GENERAL
response (see 9.4.4.4) and other SMP response frames containing an EXPANDER CHANGE COUNT field.
An expander device may implement counters for Broadcasts received from attached end devices and report
them in the REPORT BROADCAST response (see 9.4.4.9).
A SAS device or an expander device is not required to maintain originated Broadcast count information in
non-volatile storage or across reset events.
See 4.13 for details on phy events.
Device names are worldwide unique names for devices within a transport protocol.
Port names are worldwide unique names for ports within a transport protocol.
Port identifiers are the values by which ports are identified within a domain. Phy identifiers are the values by
which phys are identified within a device.
Reported in:
SAS address (see 4.2.4) for
a) the IDENTIFY address frame
SAS devices and expander
(see 6.10.2) DEVICE NAME field;
devices.
b) the Device Identification VPD
Device name 4.2.6 and 4.2.7
page (see 9.2.11.2); and
NAA IEEE Registered format
c) the DISCOVER response (see
(see 4.2.2) for SATA devices
9.4.4.10) ATTACHED DEVICE NAME
with worldwide names. a
field.
Reported in:
a) the IDENTIFY address frame
Port identifier SAS address (see 4.2.4) (see 6.10.2) for SAS ports; and 4.2.9
b) the Device Identification VPD
page (see 9.2.11.2).
Table 16 describes the identifier attributes and name attributes for SCSI architecture model objects (see
SAM-5) using SAS SSP.
SCSI device name Device name of SAS device containing an SSP port
Table 17 defines the NAA IEEE Registered format identifier used by device names and port identifiers. This
format is the same as that described in SPC-6.
Byte\Bit 7 6 5 4 3 2 1 0
1
AOI
2
3 (LSB)
5
VENDOR SPECIFIC IDENTIFIER
6
The NAA field shall be set as shown in table 17 for the NAA IEEE Registered format.
The AOI field contains an AOI assigned by the IEEE.
The VENDOR SPECIFIC IDENTIFIER field contains a 36-bit value that is assigned by the organization associated
with the value in the AOI field. The VENDOR SPECIFIC IDENTIFIER field shall be assigned so the NAA IEEE
Registered format identifier is worldwide unique.
Table 18 defines the NAA Locally Assigned format identifier used by device names and port identifiers. This
format is the same as that described in SPC-6.
Byte\Bit 7 6 5 4 3 2 1 0
0 NAA (3h)
Byte\Bit 7 6 5 4 3 2 1 0
The NAA field shall be set as shown in table 18 for the NAA Locally Assigned format.
The LOCALLY ADMINISTERED VALUE field contains a 60-bit value that is assigned by an administrator to be
unique within the set of SCSI domains that are accessible by a common instance of an administration tool or
tools.
SSP frames include hashed versions of SAS addresses of SAS ports to provide an additional level of
verification of proper frame routing.
The code used for the hashing algorithm is a cyclic binary Bose, Chaudhuri, and Hocquenghem (BCH)
(63, 39, 9) code. Table 19 lists the parameters for the code.
Parameter Value
G(x) = x24 + x23 + x22 + x20 + x19 + x17 + x16 + x13 + x10 + x9+ x8 + x6 + x5 + x4 + x2 + x + 1
Annex E contains additional information on SAS address hashing.
Each expander device and SAS device shall include a SAS address (see 4.2.4) as its device name.
A SAS address used as a device name shall not be used as any other name or identifier (e.g., a device name,
port name, port identifier, or logical unit name (see SAM-5)), except the SAS address of an expander device is
the same as the SAS address of the SMP port in that expander device.
SAS devices and expander devices report their device names in the IDENTIFY address frame (see 6.10.2).
Logical units accessed through SSP target ports report SAS target device names through SCSI vital product
data (see 9.2.11).
See Annex J for more information on SAS addresses.
4.2.7 Device names for SATA devices with world wide names
Table 20 defines the NAA IEEE Registered format identifier (see 4.2.2) used by device names for SATA
devices that provide world wide names in their IDENTIFY DEVICE data (see ACS-4).
Table 20 – Device name created from the IDENTIFY DEVICE world wide name
Subformat field
Specific bits in Contents b
name a
NAA Byte 0 bits 7:4 IDENTIFY (PACKET) DEVICE data word 108 bits 15:12 c
Byte 0 bits 3:0 IDENTIFY (PACKET) DEVICE data word 108 bits 11:8
Byte 1 IDENTIFY (PACKET) DEVICE data word 108 bits 7:0
AOI
Byte 2 IDENTIFY (PACKET) DEVICE data word 109 bits 15:8
Byte 3 bits 7:4 IDENTIFY (PACKET) DEVICE data word 109 bits 7:4
Byte 3 bits 3:0 IDENTIFY (PACKET) DEVICE data word 109 bits 3:0
Byte 4 IDENTIFY (PACKET) DEVICE data word 110 bits 15:8
VENDOR SPECIFIC
Byte 5 IDENTIFY (PACKET) DEVICE data word 110 bits 7:0
IDENTIFIER
Byte 6 IDENTIFY (PACKET) DEVICE data word 111 bits 15:8
Byte 7 IDENTIFY (PACKET) DEVICE data word 111 bits 7:0
a
See table 17.
b
IDENTIFY (PACKET) DEVICE data words 108 to 111 contain the world wide name field (see ACS-4).
c
This 4-bit field is required to be set to 5h (i.e., IEEE Registered) by ACS-4.
Each SAS port (e.g., including the STP target port in each STP SATA bridge) shall include a SAS address
(see 4.2.4) as its port identifier.
A SAS address used as a port identifier shall not be used as any other name or identifier (e.g., a device name,
port name, or logical unit name (see SAM-5)) except:
a) a SAS address may be used as a port identifier in one or more other SAS domains (see 4.1.3); and
b) the SAS address of an SMP port in an expander device is the same as the SAS address of the
expander device containing that SMP port.
Expander ports do not have port identifiers.
SAS ports in end devices report their port identifiers in the IDENTIFY address frame (see 6.10.2). Expander
devices containing SAS ports (e.g., SAS ports attached to virtual phys or STP target ports in STP SATA
bridges) report the port identifiers of those SAS ports in the SMP DISCOVER response (see 9.4.4.10).
Port identifiers are used as source and destination SAS addresses in OPEN address frames (see 6.10.3).
Logical units accessed through SSP target ports report SAS target port identifiers through SCSI vital product
data (see 9.2.11).
See Annex J for more information on SAS addresses.
Each SAS phy and expander phy shall be assigned an identifier called a phy identifier that is unique within the
SAS device and/or expander device. The phy identifier is used for SMP functions (see 9.4).
Phy identifiers shall be greater than or equal to 00h and less than or equal to FEh (i.e., 254) and should be
numbered starting with 00h. In an expander device or in a SAS device containing an SMP target port, phy
identifiers shall be less than the value of the NUMBER OF PHYS field in the SMP REPORT GENERAL response
(see 9.4.4.4). In a SAS device containing an SSP target port, phy identifiers shall be less than the value of the
NUMBER OF PHYS field in the Phy Control And Discover mode page (see 9.2.7.5).
Figure 27 shows the state machines for SAS devices and their relationships to each other and to the SAS
Device, SAS Port, and SAS Phy classes.
SAS device
SAS port
SSP transport layer STP transport layer SMP transport layer
(ST) (TT) (MT)
... ...
Figure 28 shows the state machines for expander devices and their relationships to each other and to the
Expander Device, Expander Port, and Expander Phy classes. Expander function state machines are not
defined in this standard, but the interface to the expander function is defined in 4.5.6.
Expander device
External expander port External expander port
External expander phy External expander phy
Note - The expander link layer includes the SL_IR state machines.
Figure 29 shows the transmit data path in a SAS phy, showing the relationship between:
a) the SP state machine (see 5.14), the PTT state machines (see 5.18), and the SP transmitter (see
5.14.2 and 5.18.2);
b) interleaved SPL (see 5.5.8);
c) the SL_IR state machines (see 6.12) and the SL_IR transmitter (see 6.12.2);
d) physical link rate tolerance management (see 6.5);
e) the SP_P state machines (see 6.14) and the SL_P_S transmitter (see 6.14.4.2);
f) the SL state machines (see 6.18) and the SL transmitter (see 6.18.2);
g) rate matching (see 6.17); and
h) the SSP transmit data path (see figure 30), SMP transmit data path (see figure 31), and STP transmit
data path (see figure 32).
SAS device
SAS port
SAS phy
SAS logical phy
SP (phy layer)
SL_IR and PTT (phy
SL_P
SL (link layer (identification layer
(link layer
for SAS phys) and hard Physical link transmitter
power
state machines reset) state rate tolerance training) state
control)
machines management machines
SL_P_S deletable
transmitter primitive
SL_IR Interleaved
SL transmitter deletable insertion
transmitter SP transmitter SPL
primitive
control
insertion
Deletable Deletable
primitives primitives
Rate
matching
deletable
primitive
application layer (MA)
insertion
SMP transport layer
Interleaved
Deletable
primitives
SPL
(MT)
SCSI application
Port layer
SSP transport
Phy reset
layer (SA)
layer (ST)
sequence
complete
SL_IR_IRC state
Not a power machine in
Connected control SL_IR_IRC3:Completed
deletable state
ATA application
layer (TT)
Figure 30 shows the transmit data path for the SSP link layer, including:
a) the SSP state machines and the SSP transmitter (see 6.20.9 and 6.20.9.2); and
b) the communication to the port layer, SSP transport layer, and SCSI application layer.
Only the SSP link layer (i.e., not the port layer, SSP transport layer, or SCSI application layer) transmits
dwords.
ACK
SSP_TAN (transmit ACK/
NAK control) state NAK
machine
Figure 30 – SSP link, port, SSP transport, and SCSI application layer state machines
Figure 31 shows the transmit data path for the SMP link layer, including:
a) the SMP state machines and the SMP transmitter (see 6.22.6 and 6.22.6.2); and
b) the communication to the port layer, SMP transport layer, and management application layer.
Only the SMP link layer (i.e., not the port layer, SSP transport layer, or SCSI application layer) transmits
dwords.
Port layer
(Multiple transport layers to
multiple link layers) SMP link layer
SMP transmitter
Figure 31 – SMP link, port, SMP transport, and management application layer state machines
Figure 32 shows the transmit data path for the STP link layer, including the STP state machines (see 6.21.10),
and communication to the port layer, STP transport layer, and ATA application layer. Only the STP link layer
(i.e., not the port layer, STP transport layer, or ATA application layer) transmits dwords.
Figure 32 – STP link, port, STP transport, and ATA application layer state machines
Figure 33 shows the transmit data path in an expander phy, showing the relationship between:
a) the SP state machine (see 5.14), the PTT state machines (see 5.18), and the SP transmitter (see
5.14.2);
b) interleaved SPL (see 5.5.8);
c) the SL_IR state machines (see 6.12) and the SL_IR transmitter (see 6.12.2);
d) physical link rate tolerance management (see 6.5);
e) power control (see 6.14) and the SL_P_S transmitter (see 6.14.4.2); and
f) the XL state machines (see 6.19) and the XL transmitter (see 6.19.2).
Expander device
Expander phy
Expander logical phy
SP (phy layer)
and PTT (phy
Physical link layer
SL_P
SL_IR (identification rate tolerance transmitter
(link layer
and hard reset) management training) state
power control)
state machines deletable machines
SL_P_S primitive
transmitter insertion Interleaved
deletable SL_IR transmitter Deletable SP transmitter SPL control
primitive insertion primitives
Deletable
primitives
Interleaved
SPL
XL (link layer for
expander phys)
state machine Phy reset
XL transmitter sequence
complete
If SAS dword mode is enabled, then the SP_DWS receiver (see 5.15.2) establishes dword synchronization
and sends dwords to:
a) the SP_DWS state machine (see 5.15); and
b) the link layer state machine receivers.
Figure 34 shows the receive data path in a SAS phy, showing the relationship between:
a) the SP state machine (see 5.14) and the SP receiver (see 5.14.2);
b) the SP_DWS state machine (see 5.15) and the SP_DWS receiver (see 5.15.2);
c) the SL_IR state machines (see 6.12) and the SL_IR receiver (see 6.12.2);
d) the SL_P_S state machine (see 6.14.4) and the SL_P_S receiver (see 6.14.4.2);
e) the SL_P_C state machine (see 6.14.5) and the SL_P_C receiver (see 6.14.5.2);
f) the SL state machines (see 6.18) and the SL receiver (see 6.18.2);
g) the SSP state machines (see 6.20.9) and the SSP receiver (see 6.20.9.2);
h) the SMP state machines (see 6.22.6) and the SMP receiver (see 6.22.6.2); and
i) the STP state machines and the STP receiver (see 6.21.10).
See figure 135 for more information about the elasticity buffer, which is not shown in figure 34.
STP state
STP receiver Messages
machines
Link layer
Phy layer Dword Received (Primitive, Data Dword,
or Invalid Dword) confirmation
SP
receiver ALIGN Received message SP state
TRAIN_DONE Received message machine and
Dword Received message PTT state
Other messages machines
Figure 34 – Receive data path in a SAS phy while in the SAS dword mode
Figure 35 shows the receive data path in an expander phy showing the relationship between:
a) the SP state machine (see 5.14) and the SP receiver (see 5.14.2);
b) the SP_DWS state machine (see 5.15) and the SP_DWS receiver (see 5.15.2);
c) the SL_IR state machines (see 6.12) and the SL_IR receiver (see 6.12.2);
d) the SL_P_S state machine (see 6.14.4) and the SL_P_S receiver (see 6.14.4.2); and
e) the XL state machine (see 6.19) and the XL receiver (see 6.19.2).
See figure 135 for more information about the elasticity buffer, which is not shown in figure 35.
Link layer
Phy layer Dword Received (Primitive, Data Dword,
or Invalid Dword) confirmation
SP
receiver ALIGN Received message SP state
TRAIN_DONE Received message machine and
Dword Received message PTT state
Other messages machines
Figure 35 – Receive data path in an expander phy while in the SAS dword mode
If SAS packet mode is enabled, then the SP_PS receiver (see 5.16.2) establishes SPL packet synchronization
and sends SPL packets to:
a) the SP_PS state machine (see 5.16); and
b) the link layer state machine receivers.
Figure 36 shows the receive data path in a SAS phy, showing the relationship between:
a) the SP state machine (see 5.14) and the SP receiver (see 5.14.2);
b) the SP_PS state machine (see 5.16) and the SP_PS receiver (see 5.16.2);
c) the SP_ReSync state machine (see 5.17) and the SP_PS receiver (see 5.16.2);
d) the SL_IR state machines (see 6.12) and the SL_IR receiver (see 6.12.2);
e) the SL_P_S state machine (see 6.14.4) and the SL_P_S receiver (see 6.14.4.2);
f) the SL_P_C state machine (see 6.14.5) and the SL_P_C receiver (see 6.14.5.2);
g) the SL state machines (see 6.18) and the SL receiver (see 6.18.2);
h) the SSP state machines (see 6.20.9) and the SSP receiver (see 6.20.9.2);
i) the SMP state machines (see 6.22.6) and the SMP receiver (see 6.22.6.2); and
j) the STP state machines and the STP receiver (see 6.21.10).
See figure 135 for more information about the elasticity buffer, which is not shown in figure 36.
STP state
STP receiver Messages
machines
Link layer
Phy layer Dword Received (Data Dword, Primitive, Binary Primitive , Primitive
Parameter, or Invalid Dword) confirmation
QuadDword Received (Extended Binary Primitive) confirmation
Figure 36 – Receive data path in a SAS phy while in the SAS packet mode
Figure 37 shows the receive data path in an expander phy showing the relationship between:
a) the SP state machine (see 5.14) and the SP receiver (see 5.14.2);
b) the SP_PS state machine (see 5.16) and the SP_PS receiver (see 5.16.2);
c) the SP_ReSync state machine (see 5.17) and the SP_PS receiver (see 5.16.2);
d) the SL_IR state machines (see 6.12) and the SL_IR receiver (see 6.12.2);
e) the SL_P_S state machine (see 6.14.4) and the SL_P_S receiver (see 6.14.4.2); and
f) the XL state machine (see 6.19) and the XL receiver (see 6.19.2).
See figure 135 for more information about the elasticity buffer, which is not shown in figure 37.
Link layer
Phy layer Dword Received (Data Dword, Primitive, Binary Primitive, Primitive
Parameter, or Invalid Dword) confirmation
QuadDword Received (Extended Binary Primitive) confirmation
Figure 37 – Receive data path in an expander phy while in the SAS packet mode
4.3.4 State machines and SAS Device, SAS Port, and SAS Phy classes
Figure 38 shows which state machines are contained within the SAS Device, SAS Port, SAS Phy, and SAS
Logical Phy classes.
SAS Device
1 1
1 1..255
Figure 39 shows which state machines are contained within the Expander Device, Expander Port, Expander
Phy, Expander Logical Phy, SMP Port, SMP Phy, and SMP Logical Phy classes.
Expander Device
1 1
1
1 2..255 1
Expander Phy
Transport Layer
MT State Machine[1..255] = MT_IP, MT_IT
1 1
1 1..255
1
1
1 1 1 1
1
1
Link Layer
SL State Machines[1]
SL_IR State Machines[1]
SMP State Machines[1]
4.4 Events
SATA
Time
SAS
Time
Phy layer Link layer Phy layer Link layer Link layer
SP state machine SL_IR state SP state machine SL_IR state SL or XL
starts machines start starts machines
SP enters state
SAS_PHY_Ready state SP enters start SL_IR state machine
SL_IR state
SAS_PHY_Ready machines enter starts
machines enter
state Completed
Completed states
states
The phy reset sequences, including the OOB sequence, and the speed negotiation sequence, are
implemented by the SP state machine and the SP_DWS state machine and are described in 5.11, 5.14, and
5.15. The identification sequence and hard reset sequence are implemented by the SL_IR state machines
and are described in 6.11 and 6.12.
The link reset sequence has no effect on the transport layer and application layer unless the link reset
sequence disrupts frame transmission. A hard reset sequence replaces the identification sequence to initiate
a hard reset. The link reset sequence serves as a hard reset for SATA devices (see SATA).
If, after the phy reset sequence, a phy receives a HARD_RESET primitive sequence before an IDENTIFY
address frame, then the phy shall consider this to be a reset event and the port containing the phy shall
process a hard reset.
When a port processes a hard reset, the port shall stop transmitting valid dwords on each of the phys
contained in that port. Each phy may then participate in new phy reset sequences (e.g., respond to incoming
COMINITs (see SATA)) and shall originate a new link reset sequence if one is not detected. The hard reset
shall not affect any other ports in the device.
If a SAS device is contained in an expander device, then the SSP ports, STP ports, and/or SATA ports in the
expander device shall initiate a hard reset when an SMP PHY CONTROL function with a phy operation of
HARD RESET and phy identifier specifying a virtual expander phy attached to such a SAS port is processed
(see 9.4.4.28).
If the port processing the hard reset is an SSP port, then the hard reset causes a Transport Reset event
notification to be sent to the SCSI application layer (see 9.2.5) and the SCSI device shall perform the actions
defined for hard reset in SAM-5. After processing a hard reset, each logical unit to which the SSP target port
has access shall establish a unit attention condition for all SSP initiator ports with the additional sense code
set to SCSI BUS RESET OCCURRED (see SAM-5 and SPC-6).
If the port processing the hard reset is an STP port in an STP SATA bridge, then the SATA host port shall
originate a link reset sequence.
If the port processing the hard reset is an STP port that is not in an STP SATA bridge, then the STP target
device shall perform the actions defined for power on or hardware reset in ATA8-AAM.
If the port processing a hard reset is an expander port, then the expander device shall not originate a hard
reset sequence on any of its other phys.
If the port processing a hard reset is an expander port, then the expander function and other expander ports in
the expander device shall not be affected by hard reset. SAS devices contained in the expander device shall
not be affected by hard resets received by external expander ports in the expander device.
A SAS port that maintains an I_T nexus loss timer (see 7.2.2.1) for a destination port uses the I_T nexus loss
timer to delay detection of an I_T nexus loss (e.g., for cases where a phy on the pathway between the SAS
initiator port and SAS target port loses dword synchronization and performs a new link reset sequence).
The SAS port establishes an I_T nexus loss timer event for a destination port (see 7.2.2.3.3) if:
a) a connection request to the destination port results in an OPEN_REJECT (NO DESTINATION),
OPEN_REJECT (RESERVED INITIALIZE 0), or OPEN_REJECT (RESERVED INITIALIZE 1) (see
table 135);
b) a connection request to the destination port results in the Open Timeout timer expiring (see 6.16.2);
c) a connection request to the logical phy on the destination port receives a BREAK (see 7.2.2.3.3);
d) a management application client completing the discover process (see 4.6) detects that the
destination port is no longer in the SAS domain; or
If, after the phy reset sequence, a phy receives a NOTIFY (POWER LOSS EXPECTED), then the phy shall
consider this to be a power loss expected event and the port containing the phy shall process a power loss
expected (see 6.2.5.2.3).
Figure 41 shows a model of an expander device showing the state machines in each expander port. The
internal SMP ports are not shown.
Expander device
Internal expander port Expander function
Virtual phy
An external expander port contains one or more physical phys (see 4.1.2). Since each phy in the expander
device has the same SAS address, expander ports are created based on the attached SAS addresses (see
4.1.3).
Each phy in an expander port shall have the same routing attribute (see 4.5.7.1). The management device
server shall return the same value in the ROUTING ATTRIBUTE field for each phy in an expander port in the SMP
DISCOVER response (see 9.4.4.10).
Each phy in an expander port containing phys with table routing attributes in an externally configurable
expander device shall have the same number of routing table entries (see 4.5.7.4).
A set of expander phys with table routing attributes in an expander device not supporting table-to-table
attachments using the same external connector is called an enclosure out port (see SAS-4). A set of expander
phys with subtractive routing attributes using the same external connector is called an enclosure in port (see
SAS-4). A set of expander phys with table routing attributes in an expander device supporting table-to-table
attachments using the same external connector is called an enclosure universal port (see SAS-4).
Each phy in an expander port shall have the same zone phy information (see 4.9.3.1). The zone phy
information associated with each of the phys in an expander port is treated as the zoning properties of the
expander port.
Each expander logical phy contains an expander link layer with an XL state machine (see 6.19) and one set of
SL_IR state machines (see 6.12). The XL state machine in each expander logical phy within an expander port
processes connection requests independently of the XL state machines in other expander logical phys.
An internal expander port contains a virtual phy with an expander link layer and a protocol specific transport
layer (e.g., to provide access as an SSP target port to a logical unit with a device type of 0Dh (i.e., enclosure
services device) (see SPC-6 and SES-3)).
Each expander device shall include one internal SMP port using the expander device’s SAS address.
Any additional internal SAS ports shall be inside SAS devices contained in the expander device and thus have
SAS addresses different from that of the expander device. These SAS ports shall be attached to internal
expander ports with virtual phys.
Each STP SATA bridge shall have a unique SAS address. This SAS address is reported in the ATTACHED SAS
ADDRESS field in the SMP DISCOVER response (see 9.4.4.10) for the expander phy containing the STP SATA
bridge (i.e., the expander phy attached to the SATA device or SATA port selector).
The ECR routes messages between pairs of expander logical phys as configured by the ECM. Enough routing
resources shall be provided to support at least one connection.
While forwarding dwords during a connection from a phy with a higher logical link rate to a phy with a lower
logical link rate, rate matching (see 6.17) ensures the dwords are at a connection rate equal to or less than the
lower logical link rate. However, the ECR may be requested to forward more dwords than the receiving phy is
able to accept if:
a) an invalid dword occurs during a deletable primitive;
b) an invalid dword occurs during a CLOSE primitive sequence; or
c) multiple invalid dwords occur during a BREAK primitive sequence.
If an elasticity buffer (see 6.5) overflow occurs, then the ECR may discard dwords and count that event as an
elasticity buffer overflow (see 4.13).
While forwarding dwords from a SATA physical link with a higher physical link rate to a SAS logical link with a
lower logical link rate, the SATA host port in the STP SATA bridge shall throttle incoming FISes with
SATA_HOLD (see 6.21.4).
NOTE 4 - SATA allows the receiver of a SATA_HOLD to transmit up to 20 data dwords after detection of
SATA_HOLD. Therefore, the transmitter of SATA_HOLD receives up to 21+n data dwords for Gen1 or Gen2,
or 25+n data dwords for Gen3 (see 6.21.4). SATA_HOLD does not affect primitives (see SATA). The STP
SATA bridge expands or contracts repeated and continued primitives without changing their functional
meaning.
When forwarding dwords from a SAS logical link with a lower logical link rate to a SATA physical link with a
higher physical link rate, the SATA host port in the STP SATA bridge shall perform a process similar to rate
matching (see 6.17) by inserting ALIGN (0) and/or SATA_HOLD on the SATA physical link whenever it
underflows.
NOTE 5 - SATA requires that ALIGN (0) be transmitted in pairs (see SATA).
The BPP receives Broadcasts from each expander logical phy or from the management device server on
behalf of an expander logical phy and requests transmission of those Broadcasts on all expander ports except
the expander port from which the Broadcast was received.
In a zoning expander device with zoning enabled (see 4.9.2), Broadcasts are forwarded as described in 4.9.5.
The expander device arbitrates and routes between expander logical phys. All routing occurs between
expander logical phys, not expander ports. The interaction between an XL state machine and the expander
function consists of requests, confirmations, indications, and responses. This interaction is called the
expander device interface.
Requests
ECM
Responses ECM
interface
Confirmations
ECR
(While a
Requests connection is
open, connects
one expander
Indications logical phy s
ECR ECR interface
interface Data to another s,
Data mapping
requests to
indications and
Responses responses to
confirmations)
Confirmations
Requests
BPP
BPP
interface
Indications
Figure 43 shows the interface requests, confirmations, indications, and responses used by an expander
device to manage connections.
Responses
Phy Status
Partial Pathway Timeout
Timer Expired Pause Phy
Requests
ECM
Arbitrating Request Fairness
Priority
Confirmations
Arb Won
Confirmations
Arb Lost Fairness Priority
Arb Reject
ECR
Forward Open Forward Open
Indications
Forward Close Forward Close
Requests
Responses
Open Reject Open Reject
Backoff Retry Backoff Retry
Backoff Reverse Path Backoff Reverse Path
Indications
Broadcast Event
Requests
Table 21 describes the requests from an expander logical phy to the ECM. The XL state machine (see 6.19)
defines when each request is sent.
Request Description
Partial Pathway Timeout Timer Expired The Partial Pathway Timeout Timer expired.
Table 22 describes the responses from an expander logical phy to the ECM. The XL state machine (see 6.19)
defines when each response is sent.
Response Description
Table 23 describes the confirmations from the ECM to an expander logical phy. These confirmations are sent
in confirmation of a Request Path request. See 6.16.5 for specific definitions for when each confirmation is
sent.
Confirmation Description
Arbitrating (Normal) Confirmation that the ECM has received the Request Path request.
Confirmation that the ECM is waiting on a partial pathway (see
Arbitrating (Waiting On Partial)
4.1.11).
Confirmation that the ECM is waiting on a blocked partial pathway
Arbitrating (Blocked On Partial)
(see 4.1.11).
Confirmation that the ECM is waiting for a connection to complete
Arbitrating (Waiting On Connection)
(see 4.1.12).
Arb Won Confirmation that an expander logical phy has won path arbitration.
Arb Lost Confirmation that an expander logical phy has lost path arbitration.
Confirmation that the request is rejected because the expander
Arb Reject (No Destination) device is not configuring (see 4.7.4) and there is no path to the
destination.
Confirmation that the request is rejected because the path to the
Arb Reject (Bad Destination)
destination maps back to the requesting expander port.
Confirmation that the request is rejected because there is a
Arb Reject (Connection Rate Not destination port capable of routing to the requested destination SAS
Supported) address but no phys within the destination port are configured to
support the requested connection rate.
Confirmation that the request is rejected because the expander
Arb Reject (Zone Violation)
device is not locked and there is a zoning violation (see 4.9.3).
Confirmation that the request is rejected because SAS pathway
Arb Reject (Pathway Blocked) recovery rules require the requesting expander logical phy to back
off (see 6.16.5.2.5).
Confirmation that the request is rejected because:
a) the expander device is configuring (see 4.7.4) and the ECM
detects a connection that results in an Arb Reject (No
Destination) if the condition is not resolved;
Arb Reject (Retry) b) the expander device is locked (see 4.9.6.2) and the ECM
detects a connection that results in an Arb Reject (Zone
Violation) if the condition is not resolved; or
c) the expander device has reduced functionality (see 4.5.8 and
6.16.5.2.5).
Confirmation that includes the following arguments that specify
information on the highest priority OPEN address frame requesting
access to the logical phy specified by the Phy Identifier argument in
a Request Fairness Priority request:
Fairness Priority (arguments) a) High Priority;
b) SMP Open Priority;
c) Arbitration Wait Time;
d) Connection Rate; and
e) Open Destination SAS Address.
Table 24 describes the requests from an expander logical phy to the ECR and the corresponding indications
from the ECR to another expander logical phy. The XL state machine (see 6.19) defines when each request is
sent.
Table 24 – Expander logical phy to ECR to expander logical phy requests and indications
Request/indication Description
Table 25 describes the responses from an expander logical phy to the ECR and the corresponding
confirmations from the ECR to another expander logical phy. These responses are sent in response to a
Forward Open indication. The XL state machine (see 6.19) defines when each response is sent.
Table 25 – Expander logical phy to ECR to expander logical phy responses and confirmations
Response/confirmation Description
Arb Status (Normal) Confirmation/response that AIP (NORMAL) has been received.
Confirmation/response that:
a) a higher priority OPEN address frame has been received (see
6.16.4); and
Backoff Reverse Path b) the source SAS address and connection rate of the received
OPEN address frame are equal to the destination SAS
address and connection rate of the transmitted OPEN address
frame.
Table 26 describes the requests from an expander logical phy to the BPP. Requests from the management
device server about SMP ZONED BROADCAST requests (see table 365) received from the SMP target port
in zoning expander devices with zoning enabled are not described by this standard. See 4.9.5 for more
information on how zoning expander devices with zoning enabled handle Broadcasts.
Request Description
Broadcast Event Notify (SATA Request to originate a Broadcast (Change) because the SATA spinup hold
Spinup Hold) state has been reached (see 5.14 and 5.20) by the expander phy.
Broadcast Event Notify (SATA Request to originate a Broadcast (Change) because the expander phy
Port Selector Change) detected that a SATA port selector appeared or disappeared.
Broadcast Event Notify Request to forward a Broadcast (Change) because the expander logical
(Change Received) phy received a Broadcast (Change). See 6.15 and 6.19.
Broadcast Event Notify (SES Request to forward a Broadcast (SES) because the expander logical phy
Received) received a Broadcast (SES). See 6.19.
Broadcast Event Notify Request to forward a Broadcast (Expander) because the expander logical
(Expander Received) phy received a Broadcast (Expander). See 6.19.
Broadcast Event Notify Request to forward a Broadcast (Asynchronous Event) because the
(Asynchronous Event expander logical phy received a Broadcast (Asynchronous Event). See
Received) 6.19.
Broadcast Event Notify Request to forward a Broadcast (Reserved 3) because the expander
(Reserved 3 Received) logical phy received a Broadcast (Reserved 3). See 6.19.
Broadcast Event Notify Request to forward a Broadcast (Reserved 4) because the expander
(Reserved 4 Received) logical phy received a Broadcast (Reserved 4). See 6.19.
Table 27 describes the indications from the BPP to an expander logical phy. Indications to the management
application client to generate SMP ZONED BROADCAST functions from the SMP initiator port in a zoning
expander device with zoning enabled are not described. See 4.9.5 for more information on how zoning
expander devices with zoning enabled handle Broadcasts.
Message Description
Each expander phy in an expander device shall support one of the following routing attributes:
a) a direct routing attribute;
b) a table routing attribute; or
c) a subtractive routing attribute.
The routing attributes allow the ECM to determine which routing method to use when routing connection
requests to the expander logical phys in the expander phy:
a) the table routing method routes connection requests to attached expander devices using an expander
route table;
b) the subtractive routing method routes unresolved connection requests to an attached expander
device; or
c) the direct routing method routes connection requests to attached end devices, the SMP port of an
attached expander device, or SAS devices contained in the expander device.
Table 28 describes the routing methods that the ECM uses based on the routing attributes of an expander
phy.
a
Direct Direct
An expander device may have zero or more phys with the table routing attribute. A self-configuring expander
device may support table-to-table attachment (i.e., having its table routing phys attached to the table routing
phys of other expander devices). An externally configurable expander device shall not support table-to-table
attachment.
An expander device shall have at most one defined port containing phys with the subtractive routing attribute.
The SMP REPORT GENERAL function (see 9.4.4.4) reports whether or not the expander device is
self-configuring and supports table-to-table attachment. The SMP DISCOVER function (see 9.4.4.10) reports
the routing attribute of each expander phy (see 9.4.4.4).
If an expander device does not support table-to-table attachment, then its table-routing phys shall not be
attached to table routing phys in other expander devices (e.g., they may be attached to subtractive routing
phys).
If multiple phys within an expander device have subtractive routing attributes and are attached to expander
devices, then they shall be attached to phys with identical SAS addresses (i.e., the same expander device).
If multiple phys within an expander device have subtractive routing attributes and are attached to expander
devices that do not have identical SAS addresses, then the management application client that is performing
the discover process (see 4.6) shall report an error in a vendor specific manner.
The ECM shall determine how to route a connection request from a source expander logical phy to a
destination expander logical phy in a different expander port if the destination expander logical phy is enabled,
operating at a valid logical link rate (see 9.4.4.10), and not excluded because of zoning (see 4.9.2) using the
following precedence:
1) route to an expander logical phy with the direct routing attribute or table routing attribute when the
destination SAS address matches the attached SAS address;
2) route to an expander logical phy with the table routing attribute when the destination SAS address
matches an enabled SAS address in the expander route table;
3) route to an expander logical phy with the subtractive routing attribute; and
4) return an Arb Reject confirmation (see 4.5.6.3) to the source expander logical phy.
If the destination expander logical phy only matches an expander logical phy in the same expander port from
which the connection request originated, then the ECM shall return an Arb Reject confirmation (see 4.5.6.3).
If the destination SAS address of a connection request matches a disabled SAS address in an expander route
table, then the ECM shall ignore the match.
If low phy power conditions (see 4.11.1) are enabled in the expander device, then the ECM should use the
following precedence in selecting the destination expander logical phy when the expander port contains
multiple expander logical phys:
1) expander logical phys in the active phy power condition (see 4.11.1.2);
2) expander logical phys in the partial phy power condition (see 4.11.1.3); and
3) expander logical phys in the slumber phy power condition (see 4.11.1.4).
An expander device that supports the table routing method shall contain an expander route table. The
expander route table is a structure that provides an association between destination SAS addresses (i.e.,
routed SAS addresses) and the expander phys to which connection requests to those destination SAS
addresses are forwarded.
Zoning expander devices include additional fields in their expander route tables (see 4.9.3.4).
Phy identifier
0
1
Expander route entry
2
... Includes:
a) ROUTED SAS ADDRESS field; and
M
b) DISABLE EXPANDER ROUTE ENTRY bit.
For each expander route index and phy identifier combination, the phy-based expander route table contains
an expander route entry containing a ROUTED SAS ADDRESS field and a DISABLE EXPANDER ROUTE ENTRY bit.
A management application client may access a specific expander route entry within a phy-based expander
route table with the SMP REPORT ROUTE INFORMATION function (see 9.4.4.13) and the SMP
CONFIGURE ROUTE INFORMATION function (see 9.4.4.27).
An expander device reports the maximum expander route index in the EXPANDER ROUTE INDEXES field and
indicates if the phy-based expander route table is configurable in the EXTERNALLY CONFIGURABLE ROUTE TABLE
bit in the SMP REPORT GENERAL response (see 9.4.4.4).
Each expander route entry shall be disabled after power on.
Routed SAS addresses are not required to be sorted in any particular order.
For each routed SAS address, the expander-based expander route table contains a phy bit map.
A management application client may access an expander-based expander route table with the SMP
REPORT EXPANDER ROUTE TABLE LIST function (see 9.4.4.17).
An expander device reports the size of its expander-based expander route table in the MAXIMUM NUMBER OF
ROUTED SAS ADDRESSES field in the SMP REPORT GENERAL response (see 9.4.4.4).
An expander device shall originate a Broadcast (Expander) to indicate that the expander device is going to
have reduced functionality for a period of time (e.g., if, during a microcode update, the expander device
disables the ECM and ECR access to its SMP target port or to one or more expander phys, or if the expander
device experiences reduced performance). The maximum period of time that the expander device is going to
have reduced functionality is indicated:
a) in the REPORT SUPPORTED OPERATION CODES command parameter data (see SPC-6) for the
WRITE BUFFER command reported by a logical unit with a device type of 0Dh (i.e., enclosure
services device) accessed via an SSP target port contained in the expander device; and
b) from the contents of the MAXIMUM REDUCED FUNCTIONALITY TIME field in the REPORT GENERAL
response (see 9.4.4.4).
After the expander device originates a Broadcast (Expander) to indicate that it is going to have reduced
functionality for a period of time, the expander device shall:
1) set the REDUCED FUNCTIONALITY bit to one in the REPORT GENERAL response (see 9.4.4.4);
2) initialize the reduced functionality delay timer to the value indicated by the INITIAL REDUCED
FUNCTIONALITY DELAY field in the REPORT GENERAL response (see 9.4.4.4) and start the reduced
functionality delay timer;
3) wait for the reduced functionality delay timer to expire before reducing any expander functionality; and
4) not stop or restart the reduced functionality delay timer until after the expander device enters the
reduced functionality condition.
If the expander device receives a connection request that maps to an expander phy or its SMP target port that
is not accessible because of the reduced functionality, then the expander device shall respond with an OPEN
REJECT (RETRY) until the operation that caused the expander device to have reduced functionality is
complete.
After the operation that caused the expander device to have reduced functionality is complete, the expander
device shall:
1) set the REDUCED FUNCTIONALITY bit to zero in the REPORT GENERAL response (see 9.4.4.4); and
2) originate a Broadcast (Change) or a link reset sequence on each expander phy.
After receiving a Broadcast (Expander), a management application client behind an SMP initiator port should
issue a REPORT GENERAL function (see 9.4.4.4) to all expander devices to determine:
a) the expander devices, if any, that are reducing their functionality (i.e., the REDUCED FUNCTIONALITY bit
is set to one in the REPORT GENERAL response) (see 4.5.8); and
b) the amount of time remaining until the reduced functionality occurs (i.e., the contents of the TIME TO
REDUCED FUNCTIONALITY field in the REPORT GENERAL response).
If an application client determines that an expander device is reducing its functionality, then that application
client should:
a) if the EXTERNAL PORT bit is set to zero in the REPORT GENERAL response, then:
A) terminate any outstanding command whose associated I_T_L nexus connects to a virtual port on
that expander device or through that expander device to an external port; and
B) not create any new commands whose I_T_L nexus requires a connection to a virtual port on that
expander device or through that expander device to an external port;
and
b) if the EXTERNAL PORT bit is set to one in the REPORT GENERAL response, then:
A) terminate any outstanding command whose associated I_T_L nexus connects to a virtual port on
that expander device; and
B) not create any new commands whose I_T_L nexus requires a connection to a virtual port on that
expander device.
A retimer device re-drives the signal and applies clock compensation to a physical link (see 3.1.158).
A retimer device contains one or more retimer lanes.
A retimer lane contains a retimer function and two retimer phys (see 4.1.2.3).
The retimer function manages the phy reset sequence (see 5.11) and SAS speed negotiation (see 5.11.4.2)
for the retimer lane.
A retimer function shall originate a phy reset sequence upon power on.
A phy reset sequence detected on one phy of a retimer lane shall result in the transmitter on the other phy of
that retimer lane initiating a phy reset sequence.
A retimer phy shall support:
a) SAS speed negotiation sequence (see 5.11.4.2);
b) phy capabilities exchange (i.e., SNW-3) (see 5.11.4.2.3.3);
c) phy receiver training (i.e., Train_Rx-SNW) (see 5.11.4.2.3.5);
d) phy transmitter training (i.e., Train _Tx-SNW) (see 5.11.4.2.3.4); and
e) SAS speed negotiation sequence timing specifications (see 5.11.4.2.2).
A retimer phy may support:
a) speed negotiation without training (i.e., SNW-1, SNW-2 and Final-SNW) (see 5.11.4.2.3.2);
b) APTA (see 5.12); or
c) Interleaved SPL (see 5.5.8).
Retimer SNW-3 phy capabilities is configured by a method beyond the scope of this standard.
Before forwarding the SNW-3 phy capabilities bits (see 5.8), a retimer function shall set the SNW-3 phy
capabilities to the highest commonly supported settings for the capabilities of the retimer lane and the
received SNW-3 phy capabilities.
If a retimer phy supports SSC, then the retimer phy shall set the SNW-3 phy capabilities TX SSC TYPE bit to
one.
A retimer lane shall set the SNW-3 phy capabilities PARITY bit as defined in 5.8 before transmitting SNW-3 phy
capabilities.
Retimer phys for a retimer lane each train independently for optimal performance on each side of the retimer
lane.
If a retimer phy’s transmitter supports spread spectrum clocking and SSC is enabled, then the transmitter shall
use center-spreading SSC.
A retimer lane modifies a received IDENTIFY address frame to indicate that a retimer device is present. The
modified IDENTIFY address frame shall have:
a) the RETIMER PRESENT bit set to one; and
b) an updated CRC field.
Management application clients direct an SMP initiator port to request SMP functions from an SMP target
port. Management application clients are located in every SAS initiator device and every self-configuring
expander device. A management application client performs a discover process to discover all the SAS
devices and expander devices in the SAS domain (i.e., determining their SAS device types, SAS addresses,
and supported protocols). A SAS initiator device uses this information to determine SAS addresses with which
it is able to establish connections (i.e., establish I_T nexuses) and to select connection rates for connection
requests (see 6.10.3). A self-configuring expander device uses this information to fill in its expander route
table.
In a SAS initiator device, a management application client behind an SMP initiator port should perform a
discover process after a link reset sequence or after receiving a Broadcast (Change).
In a self-configuring expander device, the management application client behind an SMP initiator port in a
self-configuring expander device shall perform a discover process after a link reset sequence or after
receiving a Broadcast (Change).
When a discover process is performed after a link reset sequence, the management application client
discovers all of the devices in the SAS domain. When a discover process is performed after a Broadcast
(Change), the management application client determines which devices have been added to or removed from
the SAS domain.
During a discover process a management application client in a SAS initiator device:
a) may request that the SAS port establish an I_T nexus loss timer event (see 7.2.2) for each device that
has been removed from the SAS domain; and
b) shall request that the SAS port stop the I_T nexus loss timer (see 7.2.2), if any, for each device that
has been added to the SAS domain.
A management application client performing the discover process shall perform a level-order (i.e.,
breadth-first) traversal of the SAS domain. The management application client shall discover devices in the
following order:
1) the devices to which the device containing the management application client is attached;
2) for each expander phy with the subtractive routing attribute or the table routing attribute, if the
attached device is an expander device, then every device attached to that expander device; and
3) repeat step 2) for each additional expander device found attached to that expander device.
The discover process completes when all expander devices have been traversed. If the management
application client discovers an externally configurable expander device that is not located beyond a
self-configuring expander device with the CONFIGURES OTHERS bit set to one in the REPORT GENERAL
response (see 9.4.4.4), then the management application client shall perform the configuration subprocess
(see 4.8) to configure the expander route table before attempting to establish connections with devices
attached two or more levels (see 4.8.4) beyond that externally configurable expander device.
If a management application client is in an end device or a self-configuring expander device that is directly
attached to a self-configuring expander device with the CONFIGURES OTHERS bit set to one in the REPORT
GENERAL response (see 9.4.4.4), then the management application client is not required to perform the
configuration subprocess. If all the expander devices in the SAS domain are self-configuring expander
devices, then management application clients in end devices are not required to perform the configuration
subprocess.
If the management application client is inside a self-configuring expander device, then the discover process
shall be repeated on each expander port.
Figure 46 shows an example of level-order traversal.
Expander
Traversal order: 1
device
6 7 8 9 10 11
Expander Expander SAS SAS Expander SAS
device device device device device device
SAS SAS
16 17
device device
Note - Assume that the phy with the lowest phy identifier in each expander
device is on the top right and the remaining phys have increasing phy
identifiers assigned in a counter-clockwise direction
The management application client determines whether an expander device or SAS device is attached at
each point in the traversal. For the first device (i.e., the device that is directly attached), this is determined from
the SAS DEVICE TYPE field in the IDENTIFY address frame (see 6.10.2) information received by the phy that the
management application client is using. For other devices (i.e., devices that are not directly attached), this is
determined from ATTACHED SAS DEVICE TYPE field the SMP DISCOVER response (see 9.4.4.10).
If an expander device is attached, then the management application client shall use the SMP REPORT
GENERAL function (see 9.4.4.4) to determine how many phys are in the expander device and then use the
SMP DISCOVER function (see 9.4.4.10) and/or the SMP DISCOVER LIST function (see 9.4.4.15) to
determine what is attached to each expander phy (e.g., the SAS device type, SAS address, and supported
protocols).
NOTE 6 - Expander devices compliant with SAS-1.1 do not implement the SMP DISCOVER LIST function.
If the expander device’s EXTERNALLY CONFIGURABLE ROUTE TABLE bit is set to zero in the SMP REPORT
GENERAL response, then its own management application client shall configure its own expander route table
as described in 4.8.
If a self-configuring expander device's SELF CONFIGURING bit is set to one in the SMP REPORT GENERAL
response, then any connection request in which there is no path to the requested destination returns
OPEN_REJECT (RETRY) instead of OPEN_REJECT (NO DESTINATION) (see 4.5.6.3, 4.7.4, and 4.9.6.3).
If a SAS device is attached, then the discover process is not required to obtain any more information about the
SAS device. Additional discovery software may access that SAS device, however, as follows:
a) if the SAS device supports an SMP target port, then the management application client may use SMP
functions (e.g., REPORT GENERAL and REPORT MANUFACTURER INFORMATION) to determine
additional information about the SAS target device;
b) if the SAS device supports an SSP target port, then a SCSI application client may transmit SCSI
commands (e.g., INQUIRY and REPORT LUNS) to determine additional information about the SAS
target device; and
c) if the end device supports an STP target port, then an ATA application client may transmit ATA
commands (e.g., IDENTIFY DEVICE and IDENTIFY PACKET DEVICE (see ACS-4)) to determine
additional information about the ATA device.
The result of the discover process is that the management application client has the necessary information
(e.g., the SAS device type, SAS address, and supported protocols) to communicate with each SAS device
and expander device in the SAS domain and each externally configurable expander device is configured with
the necessary expander route entries to allow routing of connection requests through the SAS domain.
The discover process may be aborted prior to completion and restarted if there is an indication that it may be
using incorrect information (e.g., reception of a Broadcast (Change) or a change in the EXPANDER CHANGE
COUNT field returned in an SMP response frame).
The management application client in a self-configuring expander device shall maintain self-configuration
status for the last vendor specific number of errors encountered during self-configuration and should maintain
at least one self-configuration status per phy. The management device server shall assign descriptors to the
statuses sequentially starting at 0001h and shall return the descriptors in the SMP REPORT
SELF-CONFIGURATION STATUS response (see 9.4.4.6). The management device server shall return the
index of the last self-configuration status descriptor in the SMP REPORT GENERAL response (see 9.4.4.4),
the SMP REPORT SELF-CONFIGURATION STATUS response (see 9.4.4.6), and the SMP DISCOVER LIST
response (see 9.4.4.15). The management device server shall wrap the index to 0001h when the highest
supported descriptor index has been used.
The management device server shall support self-configuration status descriptor indexes from 0001h to
FFFFh. The actual number of self-configuration status descriptors that the management device server
maintains for retrieval with the REPORT SELF-CONFIGURATION STATUS request is vendor specific and is
indicated by the MAXIMUM NUMBER OF STORED SELF-CONFIGURATION STATUS DESCRIPTORS field defined in the
REPORT GENERAL response (see 9.4.4.4). The volatility of these stored descriptors is vendor specific. The
management device server shall replace the oldest self-configuration status descriptor with a new one once
the number of recorded descriptors exceeds the value indicated by the MAXIMUM NUMBER OF STORED
SELF-CONFIGURATION STATUS DESCRIPTORS field.
As part of the discover process (see 4.6), if the management application client discovers an externally
configurable expander device, then the management application client performs the configuration subprocess
to configure the expander routing table in that externally configurable expander device with SAS addresses
discovered two or more levels beyond each table routing phy in that externally configurable expander device.
A single discover process performs the configuration subprocess at least once per externally configurable
expander device.
Configuring the routing table in an expander device is required before connections are able to be established
with devices attached two or more levels beyond that expander device.
If the management application client detects an expander phy with the table routing attribute in:
a) an externally configurable expander device; or
b) a self-configuring expander device with the TABLE TO TABLE SUPPORTED bit set to zero in the SMP
REPORT GENERAL response,
that is attached to an expander phy with either the direct routing attribute or the table routing attribute in:
a) an externally configurable expander device; or
b) a self-configuring expander device,
then the management application client shall report an error in a vendor specific manner.
If the management application client detects an overflow of an expander route index, then it shall report an
error in a vendor specific manner.
If the route table optimization (see 4.8.3) is disabled and the management application client detects an
expander route entry that references the SAS address of the expander device itself (i.e., self-reference), then
the management application client shall disable the expander route entry by setting the DISABLE EXPANDER
ROUTE ENTRY bit to one in the SMP CONFIGURE ROUTE INFORMATION request (see 9.4.4.27). The
management application client shall disable each expander route entry in the expander route table by setting
the DISABLE EXPANDER ROUTE ENTRY bit to one in the SMP CONFIGURE ROUTE INFORMATION request (see
9.4.4.27) for each expander phy that has its attached SAS device type of 000b (i.e., no device attached).
The management application client shall support a route table optimization that reduces the number of entries
required in an expander route table in an externally configurable expander device. The method used to enable
and disable the route table optimization is vendor specific.
If the route table optimization is enabled, then the management application client shall exclude discovered
SAS addresses from the expander route table when any of the following conditions are met:
a) in the SMP DISCOVER response (see 9.4.4.10) for the discovered phy:
A) the FUNCTION RESULT field is set to a non-zero value (i.e., not SMP FUNCTION ACCEPTED);
b) in the SMP DISCOVER response for the discovered phy:
A) the FUNCTION RESULT field is set to zero (i.e., SMP FUNCTION ACCEPTED);
B) the ROUTING ATTRIBUTE field is set to 1h (i.e., subtractive) or 2h (i.e., table); and
C) the ATTACHED SAS DEVICE TYPE field is set to zero (i.e., no device attached);
c) in the SMP DISCOVER response for the discovered phy:
A) the FUNCTION RESULT field is set to zero (i.e., SMP FUNCTION ACCEPTED);
The expander route table in an externally configurable expander device shall be configured for each expander
phy that has a table routing attribute.
If the expander phy is not attached to an expander device, then every expander route entry for that expander
phy shall be disabled (i.e., the ROUTED SAS ADDRESS field shall be set to 00000000 00000000h and the
DISABLE EXPANDER ROUTE ENTRY bit shall be set to one).
If the expander phy is attached to an expander device, then the expander route table shall be configured for
that expander phy as follows. For purposes of configuring the expander route table for that phy, the expander
devices attached to the expander phy are assigned levels:
1) the expander device in which the expander route table is being configured is level 0;
2) the attached expander device is considered level 1;
3) devices attached to the level 1 expander device, except for the level 0 expander device, are
considered level 2;
4) devices attached to level 2 expander devices, except for level 1 expander devices, are considered
level 3; and
5) for each n greater than 3, devices attached to level n-1 expander devices, except for level n-2
expander devices, are considered level n.
The expander route table for each expander phy shall be configured starting from expander route index 0 by
level (e.g., if there are three levels, then all level 1 entries first, then all level 2 entries, then all level 3 entries)
up to the value of the EXPANDER ROUTE INDEXES field reported by the SMP REPORT GENERAL function (see
9.4.4.4).
If the level 1 expander device has expander phys attached to N phys with qualified SAS addresses (see
4.8.3), then the first N entries shall be used for those SAS addresses in expander phy order (i.e., the
addresses attached to lower expander phy numbers first).
For each of the level 2 devices that:
a) is an expander device attached to M phys with qualified SAS addresses; and
b) is attached to an expander phy in the level 1 expander device with the table routing attribute,
the next M entries shall be used for the level 2 expander device’s qualified SAS addresses in expander phy
order (i.e., lower phy numbers first).
This process shall be repeated for all levels of expander devices.
SAS addresses of devices attached beyond expander phys that are attached table-to-table shall not be
included in the expander route table. The SAS address of the first expander device that is attached
table-to-table shall be included and the SAS address of every device attached beyond that expander device
shall not be included. As a result, end devices in SAS domains containing externally configurable expander
devices and table-to-table attachments may not be able to establish connections to each other.
NOTE 7 - Not including those SAS addresses provides compatibility with management application clients
compliant with SAS-1.1. End devices in SAS domains containing only self-configuring expander devices
supporting table-to-table attachments are able to establish connections to any other end device.
Figure 48 shows an example of a route table that does not include SAS addresses beyond a table-to-table
attachment.
Externally
Expander route entries for configurable Expander route entries for
phy 0 expander phy 1
Routed SAS device Routed SAS
Enabled Enabled
address address
E 1 V 1
A 1 Connection request to 0 0
B 1 W, X, Y, or Z results 0 0
C 1 in OPEN_REJECT 0 0
D 1 (NO DESTINATION) 0 0
Phy 0 (T) Phy 1 (T)
Routing method
S = subtractive
T = table
After the expander route table has been configured with entries for all levels of expander devices, all
remaining expander route entries, if any, shall be disabled (i.e., the ROUTED SAS ADDRESS field shall be set to
00000000 00000000h and the DISABLE EXPANDER ROUTE ENTRY bit shall be set to one). The management
application client is not required to disable entries if the topology of expander devices has not changed.
Figure 49 shows a portion of a SAS domain, where phy A in expander device R is being configured.
Table 30 shows how the expander route table is configured for externally configurable expander device R phy
A in figure 49.
Table 30 – Expander route table levels for externally configurable expander device R phy A
... ...additional qualified SAS addresses for expander devices at level 2...
... ...additional qualified SAS addresses for expander devices at level 3...
... ...additional qualified SAS addresses for expander devices at level 3...
... ...
Disabled entries
... ...
Table 31 shows how the expander route table is configured for externally configurable expander device N phy
B in figure 49.
Table 31 – Expander route table levels for externally configurable expander device N
... ...additional qualified SAS addresses for expander devices at level 2...
... ...
Disabled entries
... ...
Externally
configurable Externally configurable
expander expander device, E0
End
device, F Expander devices,
(N + 1 phys) Phy 1 device, E1
(255 phys) D11...D1 Y
(Y + 1 phys) (Y devices)
End
Expander devices,
Phy 0 Phy 0 Phy N device, EN DN1...DNZ
(Z + 1 phys) (Z devices)
Phy 1 to 254
Table 32 shows the expander route index order for externally configurable expander device E0 phy 1 in figure
50, assuming that all phys are present and not subject to exclusion by route table optimization (see 4.8.3).
Table 32 – Expander route entries for externally configurable expander device E0 phy 1
Level 1 entries
0 SAS address (e.g., D11) of the device attached to phy 1 of expander device E1
1 SAS address (e.g., D12) of the device attached to phy 2 of expander device E1
... ...
Y-1 SAS address (e.g., D1Y) of the device attached to phy Y of expander device E1
No entries
Disabled entries
Table 33 shows the expander route index order for externally configurable expander device F phy 0 in figure
50, assuming that all phys are present and not subject to exclusion by route table optimization (see 4.8.3).
Table 33 – Expander route entries for externally configurable expander device F phy 0
Expander
Expander route entry contents
route index
Level 1 entries
0 SAS address (e.g., E1) of the device attached to phy 1 of expander device E0
N-1 SAS address (e.g., EN) of the device attached to phy N of expander device E0
Level 2 entries
N SAS address (e.g., D11) of the device attached to phy 1 of expander device E1
SAS address (e.g., D1Y) of the device attached to phy Y of expander device E1
SAS address (e.g., DN1) of the device attached to phy 1 of expander device EN
SAS address (e.g., DNZ) of the device attached to phy Z of expander device EN
No entries since all devices attached to E1 to EN, except for E0, are end devices
Disabled entries
4.9 Zoning
SAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned
portion of a service delivery subsystem (ZPSDS). The zoning expander devices control whether a phy is
permitted to participate in a connection to another phy.
ZPSDS
End device Expander Expander End device
End device device 2 device 4 End device
Expander
device 1
End device Expander Expander End device
End device device 3 device 5 End device
A ZPSDS has a zone manager responsible for its configuration. The zone manager may have access to:
a) an end device with a SAS port whose zone group (see 4.9.3.2) has access to zone group 2; or
b) one or more zoning expander devices through a sideband interface (e.g., Ethernet) outside the scope
of this standard. The SAS address reported for a sideband zone manager is 00000000 00000000h.
Figure 53 shows examples of zone manager locations in a SAS domain.
Zone manager attached to an end device with a SAS port whose zone group has
access to zone group 2
Zone
manager
ZPSDS
End device Expander Expander End device
End device device 2 device 4 End device
Expander
device 1
End device Expander Expander End device
End device device 3 device 5 End device
There may be any number of non-overlapping ZPSDSes in a service delivery subsystem, particularly as a
SAS domain is being reconfigured (e.g., as a user is attaching enclosures together). A SAS domain with more
than one ZPSDS should be transitory. A ZPSDS may encompass some or all of a service delivery subsystem.
Figure 54 shows an example of three ZPSDSes in a SAS domain.
Zone Zone
manager manager
ZPSDS ZPSDS
End device Expander Expander End device
End device device 2 device 4 End device
Expander
device 1 Zone
End device Expander ZPSDS manager
End device device 3
Expander
device 5 End device
End device
Expander End device
device 6 End device
The zone manager assigns zone groups (see 4.9.3.2) to all zoning expander phys inside the ZPSDS. There
are 128 or 256 zone groups numbered 0 to 127 or 0 to 255. All phys in a wide port shall be assigned to the
same zone group. Zone groups are assigned to zoning expander phys as part of the zone phy information
(see 4.9.3.1) and are stored along with SAS addresses in the zoning expander route table (see 4.9.3.4). The
zone groups assigned in one ZPSDS have no relationship to the zone groups assigned in another ZPSDS.
The zone manager shall assign each zoning expander phy attached to another zoning expander phy inside a
ZPSDS to zone group 1. The zone manager shall assign each zoning expander phy on the boundary of the
ZPSDS (i.e., with the INSIDE ZPSDS bit set to zero) to a zone group. All phys in the SAS domain beyond that
boundary zoning expander phy are considered to be in the same zone group as that zoning expander phy.
Each zoning expander device contains a zone permission table (see 4.9.3.3) that controls whether a
connection is allowed between phys based on their zone groups. As defined in 4.9.3.5, a requested
connection shall only be established if the zone permission table indicates that access between the zone
group of the source port and the zone group of the destination port is allowed.
The zoning expander route table (see 4.9.3.4) is an extended version of the expander route table (see 4.5.7.4)
that also includes the zone group of each SAS address.
Physical presence detection is a mechanism used to allow management access. The definition of physical
presence detection is vendor specific (e.g., a user pressing a button or inserting a key).
The zone manager password is a value used to allow management access. The zone manager password is
32 bytes long and is specified in table 34.
00000000 00000000
00000000 00000000 Well-known value that provides access to any zone manager
ZERO
00000000 00000000 that presents it.
00000000 00000000h
FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF Well-known value that does not provide access to any zone
DISABLED
FFFFFFFF FFFFFFFF manager (e.g., zone manager password usage is disabled).
FFFFFFFF FFFFFFFFh
In addition to the requirements for expander devices described in 4.5, a zoning expander device shall:
a) contain a zoning expander route table (see 4.9.3.4);
b) contain current and shadow zone permission tables that supports 128 or 256 zone groups (see
4.9.3.3);
c) contain current and shadow zone phy information for each phy;
d) if zoning is enabled, then allow or deny connection requests based on the current zone permission
table (see 4.9.3.5);
e) support fields related to zoning in its SMP REPORT GENERAL response (see 9.4.4.4);
f) support the zone lock inactivity timer;
g) be self-configuring;
h) contain an SMP initiator port (see 4.5.1); and
i) support zoning-related SMP functions.
A zoning expander device may support physical presence detection and/or a zone manager password to
allow management access.
Figure 55 shows an example of two enclosures with physical presence detection where zoning is enabled in
the expander device in the left enclosure, but is not enabled in the expander devices in the right enclosure.
The zone manager is able to configure zoning in zoning expander device A because the zone group of its
SMP initiator port has access to zone group 2. However, the zone manager is not able to enable or configure
zoning in expander device B unless physical presence is asserted or the zone manager presents the correct
zone manager password for that expander device.
ZPSDS
End device End device
IZ=0 IZ=0 IZ=0 IZ=0
Enclosure Enclosure
Zone Physical Expander Expander Physical
manager presence device A device B presence
detection detection
End device
End device
End device
End device
End device
End device
Zoning is Zoning is
enabled in disabled in
expander expander
device A device B
The ZPSDS is extended as shown below after the zone manager on the left completes zone
configuration.
ZPSDS
End device End device
IZ=0 IZ=1 IZ=1 IZ=0
Enclosure Enclosure
Zone Physical Expander Expander Physical
manager presence device A device B presence
detection detection
End device
End device
End device
End device
End device
End device
Zoning is Zoning is
enabled in enabled in
expander expander
device A device B
Key:
IZ = INSIDE ZPSDS bit in the zone phy information
Figure 56 shows an example of two enclosures with physical presence detection where zoning is enabled in
both expander devices. The zone manager is able to configure zoning in zoning expander device A because
the zone group of its SMP initiator port has access to zone group 2. However, the zone manager is not able to
configure zoning in expander device B unless physical presence is asserted or the zone manager presents
the correct zone manager password for that expander device.
ZPSDS ZPSDS
End device End device
IZ=0 IZ=0 IZ=0 IZ=0
Enclosure Enclosure
Zone Physical Expander Expander Physical Zone
manager presence device A device B presence manager
detection detection
End device
End device
End device
End device
End device
End device
Zoning is Zoning is
enabled in enabled in
expander expander
device A device B
The ZPSDS is extended as shown below after the zone manager on the left completes zone
configuration.
ZPSDS
End device End device
IZ=0 IZ=1 IZ=1 IZ=0
Enclosure Enclosure
Zone Physical Expander Expander Physical
manager presence device A device B presence
detection detection
End device
End device
End device
End device
End device
End device
Zoning is Zoning is
enabled in enabled in
expander expander
device A device B
Key:
IZ = INSIDE ZPSDS bit in the zone phy information
Each phy of a zoning expander device shall support the zone phy information fields defined in table 35.
Recommended
Field Description
default
REQUESTED INSIDE ZPSDS bit Used to establish the boundary of the ZPSDS 0
ZONE GROUP field The zone group to which the phy belongs 00h
a
The INSIDE ZPSDS bit is determined from the values exchanged during the link reset sequence.
Table 36 lists the usage of the current values of the zone phy information fields.
Programmable
Indicated in Changeable by
Attached value with the
Transmitted in DISCOVER the expander
indicated in CONFIGURE
Field IDENTIFY function and device after a
DISCOVER ZONE PHY
address frame a DISCOVER LIST link reset
b function c INFORMATION e
function sequence
function d
REQUESTED INSIDE
Yes Yes Yes Yes Yes
ZPSDS bit
INSIDE ZPSDS
Yes Yes Yes Yes No
PERSISTENT bit
ZONE GROUP
No Yes No Yes No
PERSISTENT bit
a
Defined in the IDENTIFY address frame (see 6.10.2).
b
Defined in the DISCOVER response (see 9.4.4.10) and the DISCOVER LIST response SHORT FORMAT
descriptor (see 9.4.4.15.4).
c
Defined in the DISCOVER response (see 9.4.4.10).
d
Defined in the zone phy configuration descriptor (see 9.4.4.25.3). Current values are not updated until the
activate step (see 4.9.6.4). The saved values are also programmable with this function.
e
See 4.9.4.
f
Only changes to 00h after a link reset sequence. See 4.9.4.
All phys in an expander port shall have the same zone phy information.
The expander device shall preserve the zone phy information while:
a) zoning is disabled;
b) no power loss occurs; and
c) there is no expander device reduced functionality (see 4.5.8).
The INSIDE ZPSDS bit indicates if the phy is inside or on the boundary of a ZPSDS. An INSIDE ZPSDS bit set to
zero indicates that:
a) zoning is disabled;
b) the phy is attached to an end device;
c) the phy is attached to an expander device that does not support zoning;
d) the phy is attached to an expander device that supports zoning, but zoning is disabled; or
e) the phy is attached to an expander device that supports zoning, zoning is enabled, but the phy is
outside the ZPSDS (i.e., is in another ZPSDS).
An INSIDE ZPSDS bit set to one indicates that the phy is attached to a zoning expander device with zoning
enabled and is thus inside a ZPSDS. The INSIDE ZPSDS bit only changes following a link reset sequence (see
4.9.4), based on:
a) the REQUESTED INSIDE ZPSDS bit;
b) the REQUESTED INSIDE ZPSDS bit received in the incoming IDENTIFY address frame (see 6.10.2);
c) the INSIDE ZPSDS PERSISTENT bit; and
d) the INSIDE ZPSDS PERSISTENT bit received in the incoming IDENTIFY address frame.
The REQUESTED INSIDE ZPSDS bit is used to establish the boundary of the ZPSDS. The REQUESTED INSIDE
ZPSDS bit is used to indicate the values of other zone phy information fields after a link reset sequence (see
4.9.4).
The INSIDE ZPSDS PERSISTENT bit is used to indicate the value of the INSIDE ZPSDS bit after a link reset
sequence (see 4.9.4).
The ZONE GROUP field contains the zone group to which the phy belongs (see 4.9.3.2). The zone group of the
SMP initiator port and SMP target port in a zoning expander device shall be 01h.
The ZONE GROUP PERSISTENT bit is used to indicate the method of determining the zone group of the phy after
a link reset sequence if the INSIDE ZPSDS bit is set to zero (see 4.9.4).
Configurable
Zone in the zone
Description
group permission
table a
Phys in zone group 0 have access to phys in zone group 1 and do not have
0 No
access to phys in other zone groups.
Phys in zone group 2 have access to phys in the zone groups indicated by the
zone permission table.
Phys in zone group 3 have access to phys in the zone groups indicated by the
zone permission table.
3 Yes A management device server in a zoning expander device with zoning enabled
only allows management application clients using a phy in a zone group with
access to zone group 3 to perform certain SMP zoning-related functions (i.e.,
ZONED BROADCAST (see 9.4.4.20)).
4 to 7 Reserved
Phys in zone groups 8 to 255 have access to phys in the zone groups indicated
8 to 255 Yes
by the zone permission table.
a
A zone group defined as configurable is able to be changed with the SMP CONFIGURE ZONE
PERMISSION TABLE function (see 9.4.4.26).
The zone permission table specifies access permission between zone groups. If a bit in the zone permission
table is set to one, then connection requests shall be permitted between phys in the zone groups. If a bit in the
zone permission table is set to zero, then connection requests between phys in the zone groups shall be
rejected with OPEN_REJECT (ZONE VIOLATION) or OPEN_REJECT (RETRY) as described in 4.9.3.5.
0 0 1 0 0 0
1 1 1 1 1 1
A ZP[s, d] bit set to one specifies that the source zone group (i.e., s) has permission to access the destination
zone group (i.e., d). A ZP[s, d] bit set to zero specifies that the source zone group (i.e., s) does not have
permission to access the destination zone group (i.e., d).
ZP[s, d] shall be set to the same value as ZP[d, s].
The zoning expander device:
a) shall preserve the zone permission table while zoning is disabled; and
b) may or may not preserve the zone permission table through power loss and expander device reduced
functionality.
If the zoning expander device preserves whether or not zoning is enabled and does not preserve the zone
permission table, then the zoning expander device shall set the current zone permission table to grant minimal
permissions after power on or expander device reduced functionality as specified in table 39.
0 0 1 0 0 0
1 1 1 1 1 1
2 to 3 0 1 0 Reserved 0
If a zone manager enables zoning on zoning capable expander devices that report different values in the
NUMBER OF ZONE GROUPS field in the REPORT GENERAL response (see 9.4.4.4) (e.g., some support 128 and
others support 256), then the zone manager shall:
a) configure all zoning enabled expander devices contained within the ZPSDS to use the highest
number of zone groups supported by all of the zoning enabled expander devices in the ZPSDS (e.g.,
128);
b) configure the zone phy information in all the zoning expander devices to set each phy to a zone group
less than the highest number of zone groups supported by all of the zoning enabled expander devices
in the ZPSD; and
c) configure the zone permission table in all the zoning expander devices to set each entry to zero that is
higher than the highest number of zone groups supported by all of the zoning enabled expander
devices in the ZPSDS.
A zoning expander route table is an expander-based expander route table (see 4.5.7.4) that is able to hold the
zone group of each routed SAS address.
1 indicates the
expander phy is
used for forwarding
connection
requests, 0
indicates it is not
When a zoning expander device with zoning enabled receives an OPEN address frame (see 6.10.3):
a) the zone group of the source port (i.e., s) is identified as defined in table 40; and
b) the zone group of the destination port (i.e., d) is identified as defined in table 41.
If the ZP[s, d] bit is set to one, then:
a) access between the source and destination phys shall be permitted; and
b) the zoning expander device shall perform the ECM arbitration procedure.
If the ZP[s, d] bit is set to zero, then access between the source and destination phys is not permitted and the
zoning expander device shall transmit an OPEN_REJECT in response to the connection request as follows:
a) OPEN_REJECT (RETRY) if the zoning expander device is locked; or
b) OPEN_REJECT (ZONE VIOLATION) if the zoning expander device is unlocked.
Zoning expander devices with zoning enabled shall follow the rules in table 40 to determine the zone group of
the source port.
Zoning expander devices with zoning enabled shall follow the rules in table 41 to determine the zone group of
the destination port.
If the destination SAS address is in the zoning expander route table, then
the zone group stored in the zoning expander route table for the destination
SAS address.
Subtractive
If the destination SAS address is not in the zoning expander route table,
then the zone group of the destination expander phy (i.e., the subtractive
routing phy).
The zone group stored in the zoning expander route table for the destination
Table
SAS address
At the completion of a link reset sequence (see 4.4), if a SATA device is attached to an expander phy, then the
zoning expander device with zoning enabled shall set the INSIDE ZPSDS bit to zero for that expander phy.
At the completion of a link reset sequence, if a SATA device is not attached to an expander phy, then the
zoning expander device with zoning enabled shall update the current REQUESTED INSIDE ZPSDS bit and INSIDE
ZPSDS PERSISTENT bit as defined in table 42 based on:
a) the REQUESTED INSIDE ZPSDS bit and the INSIDE ZPSDS PERSISTENT bit in the zone phy information (i.e.,
the bits transmitted in the outgoing IDENTIFY address frame (see 6.10.2)); and
b) the REQUESTED INSIDE ZPSDS bit and INSIDE ZPSDS PERSISTENT bit received in the incoming IDENTIFY
address frame.
Table 42 – REQUESTED INSIDE ZPSDS bit and INSIDE ZPSDS PERSISTENT bit changes after a link
reset sequence
If the ZONE GROUP PERSISTENT bit is set to one, then the zone group of an expander shall be set as shown in
table 43. If the ZONE GROUP PERSISTENT bit is set to zero, then table 44 specifies events based on the initial
condition of an expander phy that shall cause a zoning expander device with zoning enabled to change the
ZONE GROUP field of the expander phy to its reset value (i.e., the saved value, if any, or the default value (e.g.,
00h) if there is no saved value).
Table 43 – ZONE GROUP field values if the ZONE GROUP PERSISTENT bit is set to one
0 0 No change.
0 1 The zoning expander device shall set the ZONE GROUP field to 01h.
The zoning expander device shall set the ZONE GROUP field to its reset
1 0 value (i.e., the saved value, if any, or the default value if there is no saved
value).
1 1 The zoning expander device shall set the ZONE GROUP field to 01h.
a Current INSIDE ZPSDS bit is the value before the link reset sequence.
b New INSIDE ZPSDS bit is the computed value based upon table 42.
Table 44 – Conditions that cause the ZONE GROUP field to be updated if the ZONE GROUP PERSISTENT
bit is set to zero
Either:
a) a subsequent link reset sequence completes and:
A) a hot-plug timeout (see 5.11.5) occurred between the time of the initial
condition and the time the link reset sequence completed;
B) the zoning expander device has detected the possibility that a new SATA
device has been inserted. The method of detection is outside the scope of
Completed link reset
this standard (e.g., an enclosure services process reports a change in the
sequence with a
ELEMENT STATUS CODE field in the Device or Array Device element (see
SATA device
SES-3), or a change in the WORLD WIDE NAME field in the attached SATA
attached
device’s IDENTIFY DEVICE data (see ACS-4)); or
C) a SAS phy or expander phy is attached;
or
b) the expander phy is disabled with the SMP PHY CONTROL function (see
9.4.4.28) DISABLE phy operation.
The BPP determines the source zone groups of the Broadcast as follows:
a) if the BPP receives a Broadcast Event Notify request from an expander logical phy (i.e., a zoning
expander logical phy received a BROADCAST primitive sequence), then the Broadcast has a single
source zone group set to the zone group of that expander phy; or
b) if the BPP receives a message from the management device server indicating that the management
device server received an SMP ZONED BROADCAST request (see table 365) from an SMP initiator
port that has access to zone group 3, then the Broadcast has each of the source zone groups
specified in the SMP ZONED BROADCAST request.
The BPP forwards the Broadcast to each expander port other than the one on which the Broadcast was
received (i.e., the expander port that received the BROADCAST primitive sequence or SMP ZONED
BROADCAST request) if:
a) the Broadcast is not a Broadcast (Zone Activate) and any of the source zone groups have access to
the zone group of the expander port;
b) the Broadcast is a Broadcast (Zone Activate), the BPP is in a locked zoning expander device, the
INSIDE ZPSDS bit is set to one, and the source zone group has access to zone group 2; or
c) the Broadcast is a Broadcast (Zone Activate), the BPP is not in a locked zoning expander device, and
any of the source zone groups have access to the zone group of the expander port.
Zoning expander devices implement a lock to coordinate zoning configuration by zone managers.
There are four steps in the zone configuration process:
1) lock (see 4.9.6.2);
2) load (see 4.9.6.3);
3) activate (see 4.9.6.4); and
4) unlock (see 4.9.6.5).
The management device server in a zoning expander device only accepts SMP zone configuration function
requests, SMP ZONE ACTIVATE requests, and SMP ZONE UNLOCK requests while it is locked, and only
accepts SMP zone configuration function requests from the zone manager that locked the zoning expander
device (i.e., the active zone manager). SMP zone configuration functions change zoning expander shadow
values. When changes are complete, the zone manager activates the changes and the zoning expander
device sets the zoning expander current values equal to the zoning expander shadow values. The zone
manager then unlocks the zoning expander devices.
A ZPSDS only functions correctly while all zoning expander devices within the ZPSDS have identical values
in their zone permission tables. To change zone permission tables, a zone manager device locks all zoning
expander devices in a ZPSDS.
To change zone phy information, a zone manager locks only the zoning expander devices containing the phys
to be changed.
When a zoning expander device with zoning disabled is being added to a ZPSDS (see figure 55 in 4.9.1) or
two or more ZPSDSes are being merged (see figure 56 in 4.9.1), the zone manager locks all of the zoning
expander devices that are to be included in the final ZPSDS. The zone manager configures the zone phy
information in each zoning expander device (e.g., sets the REQUESTED INSIDE ZPSDS bit to one for phys inside
the final ZPSDS) and configures all of the zone permission tables to be identical.
If the zone lock inactivity timer expires, then the zoning expander device performs the unlock step. The zoning
expander device is unlocked and the zoning expander shadow values are not activated.
The lock step ensures that the same zone manager locks each zoning expander device. A zone manager
sends the SMP ZONE LOCK request (see 9.4.4.21) to lock a zoning expander device. A zoning expander
device is locked while the ZONE LOCKED bit is set to one in the SMP REPORT GENERAL response and after
the SAS address of the zone manager has been stored. The management device server in a locked zoning
expander device processes SMP zone configuration function requests, SMP ZONE ACTIVATE requests, and
SMP ZONE UNLOCK requests.
If more than one zone manager attempts to lock a group of zoning expander devices, then the following rules
ensure that any concurrent requests are resolved:
a) if the first SMP ZONE LOCK response received by a zone manager has the FUNCTION RESULT field set
to ZONE LOCK VIOLATION (see 9.4.4.3), then the group of zoning expander devices is locked by
another zone manager and the zone manager should originate no further requests until it receives a
Broadcast (Change);
b) if at least one SMP ZONE LOCK request is successful and at least one other response has:
A) the FUNCTION RESULT field set to ZONE LOCK VIOLATION (see 9.4.4.3); and
B) the ZONE CONFIGURING bit set to one (see 4.9.6.3),
then at least one zoning expander device is locked and being configured by another zone manager.
The zone manager that failed to lock the zoning expander devices should unlock all zoning expander
devices that it has locked. When a Broadcast (Change) is received, then the zone manager should
retry the lock step; and
c) if at least one SMP ZONE LOCK request is successful and at least one other response has:
A) the FUNCTION RESULT field set to ZONE LOCK VIOLATION (see 9.4.4.3); and
B) the ZONE CONFIGURING bit set to zero,
then another zone manager has locked at least one zoning expander device in the group of zoning
expander devices and the zone manager shall evaluate the ACTIVE ZONE MANAGER SAS ADDRESS field
in the SMP ZONE LOCK response as follows:
a) if the returned SAS address has a lower numeric value than the SMP port SAS address of the
zone manager, then the zone manager with the higher numeric value SAS address shall
repeat the SMP ZONE LOCK request to all zoning expander devices that it has not already
locked until all required zoning expander devices are locked or until a Broadcast (Change) is
received; or
b) if the returned ACTIVE ZONE MANAGER SAS ADDRESS field has a higher numeric value than the
SMP port SAS address of the zone manager, then the zone manager with the lower numeric
value SAS address shall originate an SMP ZONE UNLOCK request to unlock all zoning
expander devices that it locked.
The lock step is complete after a zone manager receives a successful SMP ZONE LOCK response from all
required zoning expander devices.
The load step stores SMP zone configuration information as zoning expander shadow values. A zoning
expander device only processes SMP zone configuration function requests originated by the active zone
manager while the zoning expander device is locked.
The SMP zone configuration functions are:
a) SMP CONFIGURE ZONE PHY INFORMATION (see 9.4.4.25);
b) SMP CONFIGURE ZONE PERMISSION TABLE (see 9.4.4.26); and
c) SMP ENABLE DISABLE ZONING (see 9.4.4.19).
After a locked zoning expander device processes any SMP zone configuration function request, it sets the
ZONE CONFIGURING bit to one in the SMP REPORT GENERAL response (see 9.4.4.4).
If the ZONE CONFIGURING bit is set to one and a zoning violation occurs on a connection request, then the
expander device shall return OPEN_REJECT (RETRY) instead of OPEN_REJECT (ZONE VIOLATION) (see
4.5.6.3).
SMP zone configuration functions change the zoning expander shadow values and do not affect the zoning
expander current values. The zoning expander shadow values become zoning expander current values
during the activate step (see 4.9.6.4).
If the active zone manager receives a response to an SMP zone configuration function with the FUNCTION
RESULT field set to ZONE LOCK VIOLATION (see 9.4.4.3), then it should unlock all locked zoning expander
devices.
The load step may be skipped when a locked zoning expander device is unlocked:
a) by a zone manager with a higher SAS address during the lock step (see 4.9.6.2); or
b) because the zone lock inactivity timer expires.
c) if the zone lock timer expired, then originate a Broadcast (Change) from zone group 1; and
d) if the management device server processed an SMP ZONE UNLOCK request, then originate a
Broadcast (Change) (see 6.15) from either:
A) each zone group whose zone permission table entries or zone phy information has changed; or
B) zone group 1.
When all SMP ZONE UNLOCK requests are successful, the zone configuration process is complete.
The zone lock inactivity timer ensures that if the zone manager disappears without performing the unlock step
that all locked zoning expander devices are unlocked.
When a zoning expander device processes an SMP ZONE LOCK request (see 9.4.4.21), then the zone lock
inactivity timer default value is set to the value of the ZONE LOCK INACTIVITY TIME LIMIT field.
The zone lock inactivity timer is initialized and started if the default value is non-zero and:
a) the zoning expander device completes processing of any SMP zone configuration function request or
SMP ZONE ACTIVATE request while the ZONE LOCKED bit is set to one in the SMP REPORT
GENERAL response (see 9.4.4.4); or
b) the zoning expander device completes processing of a successful SMP ZONE LOCK request.
The zone lock inactivity timer is stopped if:
a) the ZONE LOCK INACTIVITY TIME LIMIT field is set to zero in an SMP ZONE LOCK request; or
b) the ZONE LOCKED bit is set to zero in the SMP REPORT GENERAL response (e.g., an SMP ZONE
UNLOCK request (see 9.4.4.23) is processed or the zone lock inactivity timer expires).
If the zone lock inactivity timer expires, then the zoning expander device:
a) sets the ZONE LOCKED bit to zero in the SMP REPORT GENERAL response;
b) sets the ZONE CONFIGURING bit to zero in the SMP REPORT GENERAL response; and
c) sends Broadcast (Change) on all ports.
If the zone lock inactivity timer expires while the zoning expander device is processing an SMP configuration
function, then the zoning expander device may complete the request without error or return a function result of
ZONE LOCK VIOLATION.
If a zoning expander device has the ZONING SUPPORTED bit set to one and the ZONING ENABLED bit set to zero in
the REPORT GENERAL response (see 9.4.4.4), then a zone manager configures the zoning expander device
using the zone configuration process. This ensures that the zone permission table is the same in all zoning
expander devices inside the ZPSDS.
Changes made by the SMP ENABLE DISABLE ZONING function sent by the active zone manager become
active during the activate step (see 4.9.6.4).
SCSI idle and standby power conditions, implemented with the START STOP UNIT command (see SBC-3)
and the Power Condition mode page (see SPC-6), may be supported by SSP initiator ports and SSP target
ports as described in 9.2.10.
Except for Sleep mode (e.g., requested with the ATA SLEEP command), the ATA Power Management feature
set, Extended Power Management feature set, or Advanced Power Management feature set (see ACS-4)
may be supported by an ATA application client using an STP initiator port.
Low phy power conditions are phy conditions where the phy is in a reduced power state (e.g., has disabled
circuitry in order to reduce power). This standard defines low phy power conditions that are differentiated by
time to return to the active phy power condition (see 4.11.1.2 and table 84) and the amount of power
consumed in that low phy power condition. The low phy power conditions include the partial phy power
condition (see 4.11.1.3) and the slumber phy power condition (see 4.11.1.4).
A phy in a low phy power condition shall not change to a different low phy power condition without first making
a change to the active phy power condition (see 5.13.2).
Low phy power conditions shall only be enabled on a phy if optical mode is disabled.
If the partial phy power condition is enabled and the received IDENTIFY address frame has the PARTIAL
CAPABLE bit set to one (see 6.10.2), then the phy may generate PS_REQ (PARTIAL) primitive sequences. If
the slumber phy power condition is enabled and the received IDENTIFY address frame has the SLUMBER
CAPABLE bit set to one (see 6.10.2), then the phy may generate PS_REQ (SLUMBER) primitive sequences. If
low phy power conditions are enabled, then the phy may reply with a PS_ACK primitive sequence to accept a
low phy power condition request. If low phy power conditions are supported and disabled, then the phy shall
reject a low phy power condition request by replying with a PS_NAK primitive sequence.
If a SAS phy or expander phy is in a low phy power condition and that phy is requested to transmit a NOTIFY,
then that phy shall not transmit the NOTIFY and shall remain in the same low phy power condition.
Support for low phy power conditions is reported in SAS target devices using the Phy Control And Discover
mode page (see 9.2.7.5).
Partial phy power condition may be enabled and disabled in SAS target devices using the Enhanced Phy
Control mode page (see 9.2.7.7).
Slumber phy power condition may be enabled and disabled in SAS target devices using the Enhanced Phy
Control mode page (see 9.2.7.7).
The management application layer shall only:
a) enable a low phy power condition (i.e., send a Manage Power Conditions (Accept Partial) request or
Manage Power Conditions (Accept Slumber) request); and
b) request a phy enter a low phy condition (i.e., send a Change Phy Power Condition request),
after receiving a Phy Power Condition Status (Enable Low Phy Power Conditions) message from the SA_PC
state machine (see 9.2.10.2).
The management application layer:
a) shall disable a low phy power condition (i.e., send a Manage Power Conditions (Reject Partial)
request and Manage Power Conditions (Reject Slumber) request); and
b) shall not request that a phy enter a low phy power condition (i.e., send a Change Phy Power
Condition request),
after receiving a Phy Power Condition Status (Disable Low Phy Power Conditions) message from the SA_PC
state machine (see 9.2.10.2).
If a SAS phy is in a low phy power condition, then to originate a Broadcast the management application layer:
1) shall initiate the exit power condition procedure (see 5.13.2) on that SAS phy;
2) shall originate the Broadcast; and
3) may initiate the procedure to return that SAS phy to a low phy power condition.
Support for low phy power conditions is reported in expander devices using the SMP DISCOVER function
(see 9.4.4.10).
Partial phy power conditions may be enabled and disabled in expander devices using the SMP PHY
CONTROL function (see 9.4.4.28).
If an expander phy is in the partial phy power condition and the ECM receives a connection request routed to
that expander phy, then the expander device initiates the exit power condition procedure (see 5.13.2) on that
expander phy and responds with AIP (NORMAL) until the OPEN address frame is forwarded to that expander
phy.
Slumber phy power conditions may be enabled and disabled in expander devices using the SMP PHY
CONTROL function (see 9.4.4.28).
If an expander phy is in slumber phy power condition and the ECM receives a connection request routed to
that expander phy, then the expander device initiates the exit power condition procedure (see 5.13.2) on that
expander phy and responds with OPEN_REJECT (RETRY) until a phy ready state (see 5.14.4.10) is
established for that expander phy.
If an expander phy is in a low phy power condition, then to originate or forward a Broadcast the BPP:
1) shall initiate the exit power condition procedure (see 5.13.2) on that expander phy;
2) shall originate or forward the Broadcast; and
3) may initiate the procedure to return that expander phy to a low phy power condition.
STP initiator ports shall not generate SATA_PMREQ_P, SATA_PMREQ_S, or SATA_PMACK. If an STP
initiator port receives SATA_PMREQ_P or SATA_PMREQ_S, then the STP initiator port shall reply with:
a) SATA_X_RDY if the STP initiator port has a FIS ready to transmit to the STP target port; or
b) a CLOSE primitive sequence.
SATA interface power management sequences (see SATA) may be enabled in an expander phy using the
SMP PHY CONTROL function (see 9.4.4.28).
If an expander device receives SATA_PMREQ_P or SATA_PMREQ_S from a SATA device while an STP
connection is not open, then it shall not forward the primitive to any STP initiator port and shall reply with
SATA_PMNAK or SATA_PMACK as defined by SATA. If SATA interface power management sequences are
not enabled, then the expander device shall reply with SATA_PMNAK.
If an expander device receives SATA_PMREQ_P or SATA_PMREQ_S while an STP connection is open, then
the expander device may or may not forward the primitive to the STP initiator port. If the expander device
forwards a SATA_PMREQ_P or SATA_PMREQ_S to the STP initiator port during an STP connection, then the
expander device shall not reply with SATA_PMACK or SATA_PMNAK within that connection.
Phy test functions (e.g., transmission of test patterns) are used for phy and SAS interconnect characterization
and diagnosis. The phy may be attached to test equipment while performing a phy test function. The following
optional mechanisms are defined for invoking phy test functions:
a) the Protocol Specific diagnostic page for SAS (see 9.2.9.2) invokes a phy test function in a selected
phy in a SAS target device with an SSP target port. The SEND DIAGNOSTIC command (see SPC-6)
may be sent through any SSP target port to any logical unit in the SAS target device that contains the
phy that is to perform the phy test function. The phy test function starts some time after the SSP target
port receives an ACK for the RESPONSE frame transmitted in response to the SEND DIAGNOSTIC
command; and
b) the SMP PHY TEST FUNCTION function (see 9.4.4.29) invokes a phy test function in a phy
controlled by a management device server other than the phy that receives the function. The phy test
function starts some time after the SMP target port transmits the SMP response frame.
Each phy test function is optional.
If the phy test function requires a specific phy test pattern and/or phy test function physical link rate, then the
mechanism for invoking the phy test function specifies the phy test pattern and phy test function physical link
rate.
The phy test function on one phy may affect the negotiated settings on other phys (e.g., in a device with a
common SSC clock, the SSC modulation type may change from none to down-spreading even on phys that
negotiated no SSC).
While a phy is performing a phy test function, the link layer receivers (i.e., the SL_IR receiver, SL receiver,
SL_P_S receiver, SL_P_C receiver, SSP receiver, STP receiver, and SMP receiver) shall ignore all incoming
dwords and the OOB signal detector shall detect COMINIT (see SATA). The phy shall ignore any other OOB
signals (i.e., COMSAS and COMWAKE).
A phy stops performing a phy test function:
a) after the SCSI device server, if any, processes a Protocol Specific diagnostic page specifying the phy
and specifying a phy test function of 00h (i.e., STOP);
b) after the management device server, if any, processes an SMP PHY TEST FUNCTION request
specifying the phy and specifying a phy test function of 00h (i.e., STOP);
c) after the phy receives COMINIT; or
d) upon power off.
The time it takes for a phy to stop performing the phy test function is vendor specific. After a phy stops
performing a phy test function, the phy performs a link reset sequence.
While a phy is performing the transmit pattern phy test function, the test equipment attached to that phy:
a) shall not transmit COMSAS or COMWAKE (see SATA); and
b) shall not transmit COMINIT (see SATA) except to stop the phy test function.
While performing the transmit pattern phy test function, a phy:
a) shall ignore all dwords received; and
b) shall repeatedly transmit the specified pattern at the specified physical link rate.
Phys shall count the following events using saturating counters and report them in the Protocol Specific Port
log page (see 9.2.8.1) and/or the SMP REPORT PHY ERROR LOG function (see 9.4.4.11):
a) invalid dwords received;
b) dwords received with running disparity errors;
c) loss of dword synchronization; and
d) phy reset problems.
The saturating counters are each up to 4 bytes wide.
Phys may count those events and certain other events (e.g., elasticity buffer overflows) using wrapping
counters and record peak values for certain events (e.g., the longest connection time) using peak value
detectors, reporting them in the Protocol Specific Port log page (see 9.2.8.1), SMP REPORT PHY EVENT
function (see 9.4.4.14), and/or the SMP REPORT PHY EVENT LIST function (see 9.4.4.16). The wrapping
counters and peak value detectors are each 4 bytes wide. Peak value detectors trigger Broadcast (Expander)
under certain circumstances (see 6.2.6.4).
The number of additional events monitored is vendor specific. For phys not controlled by SMP target ports, the
events that are monitored are vendor specific. For phys controlled by SMP target ports, the SMP
CONFIGURE PHY EVENT function (see 9.4.4.30) allows for specification of the events to monitor.
The management device server shall maintain phy events for the last vendor specific number of events and
should maintain at least one phy event per phy. The management device server shall assign descriptors to the
events sequentially starting at 0001h and shall return the descriptors in the SMP REPORT PHY EVENT LIST
response (see 9.4.4.16). The management device server shall return the index of the descriptor for the last
phy event in the SMP REPORT GENERAL response (see 9.4.4.4), the SMP REPORT PHY EVENT LIST
response (see 9.4.4.16), and the SMP DISCOVER LIST response (see 9.4.4.15). The management device
server shall wrap the index to 0001h when the highest supported descriptor index has been used.
The management device server shall support phy event list descriptor (see 9.4.4.16.4) indexes from 0001h to
FFFFh. The actual number of phy event list descriptors that the management device server maintains for
retrieval with the REPORT PHY EVENT LIST request is vendor specific and is indicated by the MAXIMUM
NUMBER OF STORED PHY EVENT LIST DESCRIPTORS field defined in the REPORT GENERAL response (see
9.4.4.4). The volatility of these stored descriptors is vendor specific. The management device server shall
replace the oldest phy event list descriptor with a new one once the number of recorded descriptors exceeds
the value indicated by the MAXIMUM NUMBER OF STORED PHY EVENT LIST DESCRIPTORS field.
The PHY EVENT SOURCE field, defined in table 45, is used in the Protocol Specific Port log page (see 9.2.8.1),
the REPORT PHY EVENT function (see 9.4.4.14), the REPORT PHY EVENT LIST function (see 9.4.4.16),
and the CONFIGURE PHY EVENT function (see 9.4.4.30) and indicates or specifies the type of phy event in
the accompanying PHY EVENT field.
00h No event N/A No event. The PHY EVENT field is not valid.
06h Received ERROR count WC Number of times the phy received an ERROR.
09h
to Reserved
1Fh
Received address frame Number of times the phy detected an invalid address frame
20h WC
error count (see 6.10) (e.g., because of a CRC error).
2Ah Connection count WC Number of connections in which the phy was involved.
30h
to Reserved
3Fh
Transmitted
44h CREDIT_BLOCKED WC Number of times the phy transmitted a CREDIT_BLOCKED.
count
Received
45h CREDIT_BLOCKED WC Number of times the phy received a CREDIT_BLOCKED.
count
46h
to Reserved
4Fh
53h
to Reserved
5Fh
62h Reserved
a
The Type column indicates the source type:
a) WC = wrapping counter;
b) PVD = peak value detector; and
c) N/A = not applicable.
b
This standard also defines a saturating counter that counts this event (see 9.2.8.1 and 9.4.4.11).
Number of times the phy was used to access the SMP target
Received SMP frame port and the SMP target port detected an invalid SMP frame
63h WC
error count and transmitted a BREAK primitive sequence (e.g., because
of a CRC error).
64h
to Reserved
6Fh
70h
to Reserved
CFh
D0h
to Vendor specific
FFh
a The Type column indicates the source type:
a) WC = wrapping counter;
b) PVD = peak value detector; and
c) N/A = not applicable.
b This standard also defines a saturating counter that counts this event (see 9.2.8.1 and 9.4.4.11).
The POWER DISABLE signal (see SAS-4) allows a SAS initiator device or an expander device to cause a
power on event (see SAM-5) for a SAS target device by:
1) asserting the POWER DISABLE signal for the minimum hold time (see SAS-4); and
2) negating the POWER DISABLE signal.
A SCSI application client determines if a SAS target device supports the POWER DISABLE signal by verifying
that the PWR_D_S bit is set to one in the Protocol Specific Port Information VPD page (see 9.2.11.4).
If a SCSI application client has determined that a SAS target device supports the POWER DISABLE signal,
then the management application client determines if the management device server in the SAS initiator
device or expander device attached to that SAS target device is capable of controlling the POWER DISABLE
signal by examining the DISCOVER function response data (see 9.4.4.10) for a phy associated with the SAS
target device and verifying that:
a) the ATTACHED PWR_DIS CAPABLE bit is set to one; and
b) the PWR_DIS CONTROL CAPABLE field is set to 01b.
If the DISCOVER function response data indicates that the management device server in the SAS initiator
device or expander device is not capable of controlling the POWER DISABLE signal (i.e., the
PWR_DIS CONTROL CAPABLE field is not set to 01b), then the POWER DISABLE signal may be controlled by a
method outside the scope of this standard.
4.14.3 Using a management device server to control the POWER DISABLE signal
If a management device server is capable of controlling the POWER DISABLE signal (see 4.14.2), then the
management application client uses the PWR_DIS CONTROL field in the PHY CONTROL function (see 9.4.4.28)
to assert and negate the POWER DISABLE signal as required (see 4.14.1). The management application
client may examine the PWR_DIS SIGNAL field in the DISCOVER function response data (see 9.4.4.10) to verify
that the POWER DISABLE signal is at the expected level.
APTA shall be implemented on phys that support SAS packet mode and is initiated by the management
application client when:
a) the phy is in the phy ready state (see 5.14.4.10); and
b) there is no connection established or in the process of being established.
APTA shall be disabled on phys:
a) on which optical mode is enabled; or
b) attached to an active cable assembly.
The management application client monitors the SP receiver using a method that is beyond the scope of this
standard. SAS phys that support the SAS packet mode implement adaptations that optimize the SP receiver
settings (see SAS-4). If the SP receiver determines that a vendor specific limit of adjustment is reached, then
the management application client may request the local SP receiver adjust the attached SP transmitter’s phy
by sending an APTA request to the phy layer state machines.
To allow the SP receiver to adapt to each coefficient change of the SP transmitter settings, the receiver waits
until a status response has been received for each request for an APTA coefficient change. The status
response indicates that the attached phy’s SP transmitter coefficients were updated and a time of greater than
1 ms has occurred (see 5.19.3.2).
The receiver algorithm calculation may take several seconds to complete.
The management application client receives the following confirmations:
a) an Enable APTA confirmation (see 5.14.4.10, 6.18.4.2, and 6.19.3);
b) an APTA Disabled confirmation (see 5.14.3.2, 5.14.5.2, 6.18.4.2, and 6.19.3) with an argument
indicating the reason for disabling APTA (e.g., OOB In Progress, Low Phy Power Condition, or Active
Connection);
c) an Adjustment Complete confirmation (see 5.19.5.4); and
d) an Attached Phy Terminated APTA confirmation (see 5.19.4.4 and 5.19.5).
The management application client sends the following requests to the phy layer state machines:
a) an Adjust Attached Transmitter request to start adjustment if a SP receiver indicates APTA is required
(see 5.19.5.2); and
b) a Terminate APTA request if the management application client detects any algorithmic or other error
during APTA (see 5.19.4.4). The methods for detecting an error are beyond the scope of this
standard.
5 Phy layer
The phy layer defines 8b10b coding, 128b150b coding, BMC coding, and OOB signals. Phy layer state
machines interface between the link layer and the physical layer to perform the phy reset sequence and keep
track of dword synchronization.
All information transferred in the SAS dword mode is encoded into 10-bit characters using 8b10b encoding.
All primitives transferred in the SAS packet mode are encoded into a 2-bit control plus three 10-bit characters
(see 5.5.4). The three 10-bit characters are encoded using 8b10b encoding. The 2-bit control and 10-bit
characters are placed into an SPL packet payload within an 128b150b structure (see 5.5). The 2-bit control
and 10-bit characters are transmitted serially bit-by-bit across the physical link.
Out of all 1 024 possible 10-bit characters:
a) some of the characters are data characters, representing the 256 possible 8-bit data bytes;
b) some of the characters are control characters, used for primitives (e.g., frame delimiters) and other
control purposes; and
c) the rest of the characters are invalid characters.
8b10b coding ensures that sufficient transitions are present in the serial bit stream to make clock recovery
possible at the receiver. 8b10b coding also increases the likelihood of detecting any single or multiple bit
errors that occur during transmission and reception. In addition, some of the control characters of the
transmission code contain a distinct bit pattern, called a comma pattern, which assists a receiver in achieving
character and dword alignment on the incoming bit stream.
This subclause uses letter notation for describing information bits and control variables. Such notation differs
from the bit notation specified by the remainder of this standard. The following text describes the translation
process between these notations and provides a translation example. This subclause also describes the
conventions used to name valid characters. This text is provided for the purposes of terminology clarification
only.
An unencoded information byte is composed of:
a) eight information bits labeled A, B, C, D, E, F, G, and H. Each information bit contains either a binary
zero or a binary one; and
b) a control variable labeled Z. A control variable has either the value D or the value K:
A) D means the information byte is a data byte; and
B) K means the information byte is a control byte.
The information bit labeled A corresponds to bit 0 in the numbering scheme of this standard, B corresponds to
bit 1, and so on, as shown in table 46. Bit H is the most significant bit of the byte and bit A is the least
significant bit of the byte.
is the control variable of the unencoded information byte. The value of Z is used to indicate
Z
whether the character is a data character (i.e., Z = D) or a control character (i.e., Z = K);
is the decimal value of the binary number composed of the bits E, D, C, B, and A of the
xx
unencoded information byte in that order; and
is the decimal value of the binary number composed of the bits H, G, and F of the unencoded
y
information byte in that order.
Table 47 shows the conversion from byte notation to the character naming convention.
7 6 5 4 3 2 1 0 Control
Bit notation
1 0 1 1 1 1 0 0 K
H G F E D C B A Z
Unencoded bit notation
1 0 1 1 1 1 0 0 K
Character name K 28 . 5
Most Kxx.y combinations do not result in valid characters within the 8b10b coding scheme. Only those
combinations that result in control characters defined in table 49 (see 5.3.7) are considered valid.
5.3.1 Introduction
This subclause describes how to select valid characters (i.e., 8b10b encoding) and how to check the validity
of received characters (i.e., 10b8b decoding), and specifies the ordering rules to be followed when
transmitting the bits within a character.
An information byte is encoded into a 10-bit character containing bits labeled a, b, c, d, e, i, f, g, h, and j. In
SAS dword mode, bit a shall be transmitted first, followed by bits b, c, d, e, i, f, g, h, and j, in that order.
In SAS packet mode, the placement of the 10-bit character bits a, b, c, d, e, i, f, g, h, and j within a primitive
segment is as described in table 56.
In SAS dword mode, characters within primitives shall be transmitted sequentially beginning with the control
character used to distinguish the primitive (e.g., K28.3 or K28.5) and proceeding character by character from
left to right within the definition of the primitive until all characters of the primitive are transmitted.
In SAS packet mode, characters within primitives shall be placed within a primitive segment as described in
table 56.
In SAS dword mode, the contents of a frame shall be transmitted sequentially beginning with the primitive
used to denote the start of frame (e.g., SOAF, SOF, or SATA_SOF) and proceeding character-by-character
from left to right within the definition of the frame until the primitive used to denote the end of frame (e.g.,
EOAF, EOF, B_EOF, or SATA_EOF) is transmitted.
In SAS packet mode, the contents of a frame shall be transmitted as described in 5.5.
RD is a binary parameter with a negative (-) or positive (+) value. After power on, the transmitter may initialize
the current RD to either positive or negative.
Each data character and control character is defined in a table by two columns that represent two characters
that may or may not be different, corresponding to the current value of the running disparity (i.e., current RD-
or current RD+).
Upon transmission of any character, the transmitter shall calculate a new value for its RD based on the
contents of the transmitted character.
After power on, the receiver shall assume either the positive or negative value for its initial RD. Upon reception
of any character, the receiver shall determine whether the character is valid or invalid and shall calculate a
new value for its RD based on the contents of the received character.
The following rules for RD shall be used to calculate the new RD value for characters that have been
transmitted (i.e., the transmitter’s RD) and that have been received (i.e., the receiver’s RD).
RD for a character shall be calculated on the basis of sub-blocks, where the first six bits (i.e., bits a, b, c, d, e,
and i) form one sub-block (i.e., the six-bit sub-block) and the second four bits (i.e., bits f, g, h, and j) form the
other sub-block (i.e., the four-bit sub-block). RD has the following properties:
a) RD at the beginning of the six-bit sub-block is the RD at the end of the preceding character;
b) RD at the beginning of the four-bit sub-block is the RD at the end of the preceding six-bit sub-block;
and
c) RD at the end of the character is the RD at the end of the four-bit sub-block.
Table 48 defines the data characters (i.e., Dxx.y characters) and shall be used for both generating characters
(i.e., encoding) and checking the validity of received characters (i.e., decoding).
Table 48 defines the data characters.
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D00.0 000 00000 00h 100111 0100 011000 1011
D01.0 000 00001 01h 011101 0100 100010 1011
D02.0 000 00010 02h 101101 0100 010010 1011
D03.0 000 00011 03h 110001 1011 110001 0100
D04.0 000 00100 04h 110101 0100 001010 1011
D05.0 000 00101 05h 101001 1011 101001 0100
D06.0 000 00110 06h 011001 1011 011001 0100
D07.0 000 00111 07h 111000 1011 000111 0100
D08.0 000 01000 08h 111001 0100 000110 1011
D09.0 000 01001 09h 100101 1011 100101 0100
D10.0 000 01010 0Ah 010101 1011 010101 0100
D11.0 000 01011 0Bh 110100 1011 110100 0100
D12.0 000 01100 0Ch 001101 1011 001101 0100
D13.0 000 01101 0Dh 101100 1011 101100 0100
D14.0 000 01110 0Eh 011100 1011 011100 0100
D15.0 000 01111 0Fh 010111 0100 101000 1011
D16.0 000 10000 10h 011011 0100 100100 1011
D17.0 000 10001 11h 100011 1011 100011 0100
D18.0 000 10010 12h 010011 1011 010011 0100
D19.0 000 10011 13h 110010 1011 110010 0100
D20.0 000 10100 14h 001011 1011 001011 0100
D21.0 000 10101 15h 101010 1011 101010 0100
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D22.0 000 10110 16h 011010 1011 011010 0100
D23.0 000 10111 17h 111010 0100 000101 1011
D24.0 000 11000 18h 110011 0100 001100 1011
D25.0 000 11001 19h 100110 1011 100110 0100
D26.0 000 11010 1Ah 010110 1011 010110 0100
D27.0 000 11011 1Bh 110110 0100 001001 1011
D28.0 000 11100 1Ch 001110 1011 001110 0100
D29.0 000 11101 1Dh 101110 0100 010001 1011
D30.0 000 11110 1Eh 011110 0100 100001 1011
D31.0 000 11111 1Fh 101011 0100 010100 1011
D00.1 001 00000 20h 100111 1001 011000 1001
D01.1 001 00001 21h 011101 1001 100010 1001
D02.1 001 00010 22h 101101 1001 010010 1001
D03.1 001 00011 23h 110001 1001 110001 1001
D04.1 001 00100 24h 110101 1001 001010 1001
D05.1 001 00101 25h 101001 1001 101001 1001
D06.1 001 00110 26h 011001 1001 011001 1001
D07.1 001 00111 27h 111000 1001 000111 1001
D08.1 001 01000 28h 111001 1001 000110 1001
D09.1 001 01001 29h 100101 1001 100101 1001
D10.1 001 01010 2Ah 010101 1001 010101 1001
D11.1 001 01011 2Bh 110100 1001 110100 1001
D12.1 001 01100 2Ch 001101 1001 001101 1001
D13.1 001 01101 2Dh 101100 1001 101100 1001
D14.1 001 01110 2Eh 011100 1001 011100 1001
D15.1 001 01111 2Fh 010111 1001 101000 1001
D16.1 001 10000 30h 011011 1001 100100 1001
D17.1 001 10001 31h 100011 1001 100011 1001
D18.1 001 10010 32h 010011 1001 010011 1001
D19.1 001 10011 33h 110010 1001 110010 1001
D20.1 001 10100 34h 001011 1001 001011 1001
D21.1 001 10101 35h 101010 1001 101010 1001
D22.1 001 10110 36h 011010 1001 011010 1001
D23.1 001 10111 37h 111010 1001 000101 1001
D24.1 001 11000 38h 110011 1001 001100 1001
D25.1 001 11001 39h 100110 1001 100110 1001
D26.1 001 11010 3Ah 010110 1001 010110 1001
D27.1 001 11011 3Bh 110110 1001 001001 1001
D28.1 001 11100 3Ch 001110 1001 001110 1001
D29.1 001 11101 3Dh 101110 1001 010001 1001
D30.1 001 11110 3Eh 011110 1001 100001 1001
D31.1 001 11111 3Fh 101011 1001 010100 1001
D00.2 010 00000 40h 100111 0101 011000 0101
D01.2 010 00001 41h 011101 0101 100010 0101
D02.2 010 00010 42h 101101 0101 010010 0101
D03.2 010 00011 43h 110001 0101 110001 0101
D04.2 010 00100 44h 110101 0101 001010 0101
D05.2 010 00101 45h 101001 0101 101001 0101
D06.2 010 00110 46h 011001 0101 011001 0101
D07.2 010 00111 47h 111000 0101 000111 0101
D08.2 010 01000 48h 111001 0101 000110 0101
D09.2 010 01001 49h 100101 0101 100101 0101
D10.2 010 01010 4Ah 010101 0101 010101 0101
D11.2 010 01011 4Bh 110100 0101 110100 0101
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D12.2 010 01100 4Ch 001101 0101 001101 0101
D13.2 010 01101 4Dh 101100 0101 101100 0101
D14.2 010 01110 4Eh 011100 0101 011100 0101
D15.2 010 01111 4Fh 010111 0101 101000 0101
D16.2 010 10000 50h 011011 0101 100100 0101
D17.2 010 10001 51h 100011 0101 100011 0101
D18.2 010 10010 52h 010011 0101 010011 0101
D19.2 010 10011 53h 110010 0101 110010 0101
D20.2 010 10100 54h 001011 0101 001011 0101
D21.2 010 10101 55h 101010 0101 101010 0101
D22.2 010 10110 56h 011010 0101 011010 0101
D23.2 010 10111 57h 111010 0101 000101 0101
D24.2 010 11000 58h 110011 0101 001100 0101
D25.2 010 11001 59h 100110 0101 100110 0101
D26.2 010 11010 5Ah 010110 0101 010110 0101
D27.2 010 11011 5Bh 110110 0101 001001 0101
D28.2 010 11100 5Ch 001110 0101 001110 0101
D29.2 010 11101 5Dh 101110 0101 010001 0101
D30.2 010 11110 5Eh 011110 0101 100001 0101
D31.2 010 11111 5Fh 101011 0101 010100 0101
D00.3 011 00000 60h 100111 0011 011000 1100
D01.3 011 00001 61h 011101 0011 100010 1100
D02.3 011 00010 62h 101101 0011 010010 1100
D03.3 011 00011 63h 110001 1100 110001 0011
D04.3 011 00100 64h 110101 0011 001010 1100
D05.3 011 00101 65h 101001 1100 101001 0011
D06.3 011 00110 66h 011001 1100 011001 0011
D07.3 011 00111 67h 111000 1100 000111 0011
D08.3 011 01000 68h 111001 0011 000110 1100
D09.3 011 01001 69h 100101 1100 100101 0011
D10.3 011 01010 6Ah 010101 1100 010101 0011
D11.3 011 01011 6Bh 110100 1100 110100 0011
D12.3 011 01100 6Ch 001101 1100 001101 0011
D13.3 011 01101 6Dh 101100 1100 101100 0011
D14.3 011 01110 6Eh 011100 1100 011100 0011
D15.3 011 01111 6Fh 010111 0011 101000 1100
D16.3 011 10000 70h 011011 0011 100100 1100
D17.3 011 10001 71h 100011 1100 100011 0011
D18.3 011 10010 72h 010011 1100 010011 0011
D19.3 011 10011 73h 110010 1100 110010 0011
D20.3 011 10100 74h 001011 1100 001011 0011
D21.3 011 10101 75h 101010 1100 101010 0011
D22.3 011 10110 76h 011010 1100 011010 0011
D23.3 011 10111 77h 111010 0011 000101 1100
D24.3 011 11000 78h 110011 0011 001100 1100
D25.3 011 11001 79h 100110 1100 100110 0011
D26.3 011 11010 7Ah 010110 1100 010110 0011
D27.3 011 11011 7Bh 110110 0011 001001 1100
D28.3 011 11100 7Ch 001110 1100 001110 0011
D29.3 011 11101 7Dh 101110 0011 010001 1100
D30.3 011 11110 7Eh 011110 0011 100001 1100
D31.3 011 11111 7Fh 101011 0011 010100 1100
D00.4 100 00000 80h 100111 0010 011000 1101
D01.4 100 00001 81h 011101 0010 100010 1101
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D02.4 100 00010 82h 101101 0010 010010 1101
D03.4 100 00011 83h 110001 1101 110001 0010
D04.4 100 00100 84h 110101 0010 001010 1101
D05.4 100 00101 85h 101001 1101 101001 0010
D06.4 100 00110 86h 011001 1101 011001 0010
D07.4 100 00111 87h 111000 1101 000111 0010
D08.4 100 01000 88h 111001 0010 000110 1101
D09.4 100 01001 89h 100101 1101 100101 0010
D10.4 100 01010 8Ah 010101 1101 010101 0010
D11.4 100 01011 8Bh 110100 1101 110100 0010
D12.4 100 01100 8Ch 001101 1101 001101 0010
D13.4 100 01101 8Dh 101100 1101 101100 0010
D14.4 100 01110 8Eh 011100 1101 011100 0010
D15.4 100 01111 8Fh 010111 0010 101000 1101
D16.4 100 10000 90h 011011 0010 100100 1101
D17.4 100 10001 91h 100011 1101 100011 0010
D18.4 100 10010 92h 010011 1101 010011 0010
D19.4 100 10011 93h 110010 1101 110010 0010
D20.4 100 10100 94h 001011 1101 001011 0010
D21.4 100 10101 95h 101010 1101 101010 0010
D22.4 100 10110 96h 011010 1101 011010 0010
D23.4 100 10111 97h 111010 0010 000101 1101
D24.4 100 11000 98h 110011 0010 001100 1101
D25.4 100 11001 99h 100110 1101 100110 0010
D26.4 100 11010 9Ah 010110 1101 010110 0010
D27.4 100 11011 9Bh 110110 0010 001001 1101
D28.4 100 11100 9Ch 001110 1101 001110 0010
D29.4 100 11101 9Dh 101110 0010 010001 1101
D30.4 100 11110 9Eh 011110 0010 100001 1101
D31.4 100 11111 9Fh 101011 0010 010100 1101
D00.5 101 00000 A0h 100111 1010 011000 1010
D01.5 101 00001 A1h 011101 1010 100010 1010
D02.5 101 00010 A2h 101101 1010 010010 1010
D03.5 101 00011 A3h 110001 1010 110001 1010
D04.5 101 00100 A4h 110101 1010 001010 1010
D05.5 101 00101 A5h 101001 1010 101001 1010
D06.5 101 00110 A6h 011001 1010 011001 1010
D07.5 101 00111 A7h 111000 1010 000111 1010
D08.5 101 01000 A8h 111001 1010 000110 1010
D09.5 101 01001 A9h 100101 1010 100101 1010
D10.5 101 01010 AAh 010101 1010 010101 1010
D11.5 101 01011 ABh 110100 1010 110100 1010
D12.5 101 01100 ACh 001101 1010 001101 1010
D13.5 101 01101 ADh 101100 1010 101100 1010
D14.5 101 01110 AEh 011100 1010 011100 1010
D15.5 101 01111 AFh 010111 1010 101000 1010
D16.5 101 10000 B0h 011011 1010 100100 1010
D17.5 101 10001 B1h 100011 1010 100011 1010
D18.5 101 10010 B2h 010011 1010 010011 1010
D19.5 101 10011 B3h 110010 1010 110010 1010
D20.5 101 10100 B4h 001011 1010 001011 1010
D21.5 101 10101 B5h 101010 1010 101010 1010
D22.5 101 10110 B6h 011010 1010 011010 1010
D23.5 101 10111 B7h 111010 1010 000101 1010
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D24.5 101 11000 B8h 110011 1010 001100 1010
D25.5 101 11001 B9h 100110 1010 100110 1010
D26.5 101 11010 BAh 010110 1010 010110 1010
D27.5 101 11011 BBh 110110 1010 001001 1010
D28.5 101 11100 BCh 001110 1010 001110 1010
D29.5 101 11101 BDh 101110 1010 010001 1010
D30.5 101 11110 BEh 011110 1010 100001 1010
D31.5 101 11111 BFh 101011 1010 010100 1010
D00.6 110 00000 C0h 100111 0110 011000 0110
D01.6 110 00001 C1h 011101 0110 100010 0110
D02.6 110 00010 C2h 101101 0110 010010 0110
D03.6 110 00011 C3h 110001 0110 110001 0110
D04.6 110 00100 C4h 110101 0110 001010 0110
D05.6 110 00101 C5h 101001 0110 101001 0110
D06.6 110 00110 C6h 011001 0110 011001 0110
D07.6 110 00111 C7h 111000 0110 000111 0110
D08.6 110 01000 C8h 111001 0110 000110 0110
D09.6 110 01001 C9h 100101 0110 100101 0110
D10.6 110 01010 CAh 010101 0110 010101 0110
D11.6 110 01011 CBh 110100 0110 110100 0110
D12.6 110 01100 CCh 001101 0110 001101 0110
D13.6 110 01101 CDh 101100 0110 101100 0110
D14.6 110 01110 CEh 011100 0110 011100 0110
D15.6 110 01111 CFh 010111 0110 101000 0110
D16.6 110 10000 D0h 011011 0110 100100 0110
D17.6 110 10001 D1h 100011 0110 100011 0110
D18.6 110 10010 D2h 010011 0110 010011 0110
D19.6 110 10011 D3h 110010 0110 110010 0110
D20.6 110 10100 D4h 001011 0110 001011 0110
D21.6 110 10101 D5h 101010 0110 101010 0110
D22.6 110 10110 D6h 011010 0110 011010 0110
D23.6 110 10111 D7h 111010 0110 000101 0110
D24.6 110 11000 D8h 110011 0110 001100 0110
D25.6 110 11001 D9h 100110 0110 100110 0110
D26.6 110 11010 DAh 010110 0110 010110 0110
D27.6 110 11011 DBh 110110 0110 001001 0110
D28.6 110 11100 DCh 001110 0110 001110 0110
D29.6 110 11101 DDh 101110 0110 010001 0110
D30.6 110 11110 DEh 011110 0110 100001 0110
D31.6 110 11111 DFh 101011 0110 010100 0110
D00.7 111 00000 E0h 100111 0001 011000 1110
D01.7 111 00001 E1h 011101 0001 100010 1110
D02.7 111 00010 E2h 101101 0001 010010 1110
D03.7 111 00011 E3h 110001 1110 110001 0001
D04.7 111 00100 E4h 110101 0001 001010 1110
D05.7 111 00101 E5h 101001 1110 101001 0001
D06.7 111 00110 E6h 011001 1110 011001 0001
D07.7 111 00111 E7h 111000 1110 000111 0001
D08.7 111 01000 E8h 111001 0001 000110 1110
D09.7 111 01001 E9h 100101 1110 100101 0001
D10.7 111 01010 EAh 010101 1110 010101 0001
D11.7 111 01011 EBh 110100 1110 110100 1000
D12.7 111 01100 ECh 001101 1110 001101 0001
D13.7 111 01101 EDh 101100 1110 101100 1000
Data character
Data byte
(binary representation)
Name Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
D14.7 111 01110 EEh 011100 1110 011100 1000
D15.7 111 01111 EFh 010111 0001 101000 1110
D16.7 111 10000 F0h 011011 0001 100100 1110
D17.7 111 10001 F1h 100011 0111 100011 0001
D18.7 111 10010 F2h 010011 0111 010011 0001
D19.7 111 10011 F3h 110010 1110 110010 0001
D20.7 111 10100 F4h 001011 0111 001011 0001
D21.7 111 10101 F5h 101010 1110 101010 0001
D22.7 111 10110 F6h 011010 1110 011010 0001
D23.7 111 10111 F7h 111010 0001 000101 1110
D24.7 111 11000 F8h 110011 0001 001100 1110
D25.7 111 11001 F9h 100110 1110 100110 0001
D26.7 111 11010 FAh 010110 1110 010110 0001
D27.7 111 11011 FBh 110110 0001 001001 1110
D28.7 111 11100 FCh 001110 1110 001110 0001
D29.7 111 11101 FDh 101110 0001 010001 1110
D30.7 111 11110 FEh 011110 0001 100001 1110
D31.7 111 11111 FFh 101011 0001 010100 1110
Table 49 defines the control characters (i.e., Kxx.y characters) and shall be used for both generating
characters (i.e., encoding) and checking the validity of received characters (i.e., decoding).
Control character
Control byte
(binary representation) a
Name
Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)
The only control characters used in this standard are K28.3, K28.5, and K28.6, as defined in table 50.
K28.3 Primitives used only inside STP connections All primitives except ALIGN
See 6.2 for details on primitives, which use the control characters defined in table 50.
To transmit a data byte, the transmitter shall select the appropriate character from table 48 based on the
current value of the transmitter’s RD. To transmit a control byte, the transmitter shall select the appropriate
character from table 49 based on the current value of the transmitter’s RD. After transmitting the character, the
transmitter shall calculate a new value for its RD based on that character. This new value shall be used as the
transmitter’s current RD for the next character transmitted. This process is called 8b10b encoding.
After receiving a character, the receiver shall search the character column in table 48 and table 49
corresponding to its current RD to determine the data byte or control byte to which the character corresponds.
This process is called 10b8b decoding. If the received character is not found in the proper column, then the
character shall be considered invalid and the dword containing the character shall be considered an invalid
dword.
Regardless of the received character’s validity, the received character shall be used to calculate a new value
of RD in the receiver. This new value shall be used as the receiver’s current RD for the next received
character.
Detection of a code violation in a character does not always indicate that the character in which the code
violation was detected is in error. Code violations may result from an error in a previous character that altered
the RD of the bit stream but did not result in a detectable error in the character in which the error occurred.
Table 51 shows an example of this behavior. Code violation errors may span dword boundaries. Expanders
forwarding a dword in which a code violation was detected, forward the dword as an ERROR (see 6.2.6.7).
Second
RD First character RD RD Third character RD
character
Transmitted
character - D21.1 - D10.2 - D23.5 +
stream
Transmitted
- 101010 1001 - 010101 0101 - 111010 1010 +
bit stream
Code violation
Decoded D21.0
D10.2 (although D23.5 was
character - (rather than D21.1) + + +
(no error) received without
stream (not detected as an error)
error)
Dwords transmitted in an STP connection shall be transmitted in the bit order specified by SATA.
In SAS dword mode, dwords for connections other than STP connections and outside of connections shall be
transmitted in the bit order shown in figure 58.
D or K D D D
1st byte to 2nd byte to 3rd byte to 4th byte to
transmit transmit transmit transmit
31 24 23 16 15 8 7 0
(in 8b10b
H G F E D C B A Z H ... A Z H ... A Z H ... A Z
notation)
Bit
Transpose
A B C D E F G H Z A ... H Z A ... H Z A H Z
Encoding Encoding Encoding Encoding
function function function function
a b c d e i f g h j a j a j a j
to physical link
a b c d e i f g h j a b c d e i f g h j
first bit
transmitted
a b c d e i f g h j a b c d e i f g h j
last bit
transmitted
a b c d e i f g h j a b c d ei f gh j
last bit
received
a b c d ei f gh j ab c d ei f gh j
from
physical
link
10b8b decoder 10b8b decoder 10b8b decoder 10b8b decoder
a b c d e i f g h j a ... j a ... j a ... j
Decoding Decoding Decoding Decoding
function function function function
31 24 23 16 15 8 7 0
Z H G F E D C B A H ... A H ... A H ... A
MSB LSB
Dword received + data/primitive indicator (Z)
All information transferred in the SAS packet mode is encoded into SPL packets (i.e., 150-bit blocks using
128b150b coding). Each SPL packet comprises:
a) an SPL PACKET HEADER field (see table 52);
b) an SPL packet payload (see 5.5.2); and
c) forward error correction information (see table 52).
SPL packets are transmitted serially across the physical link.
The format of the SPL packet is shown in figure 60 and table 52.
When a phy sends or receives an SPL packet:
a) the SPL PACKET HEADER field specifies the format of the subsequent SPL packet payload;
b) the SPL packet payload contains:
A) a scrambled idle segment;
B) an idle dword segment;
C) an SPL frame segment that contains data dwords; or
D) a primitive segment that contains:
a) primitives and a primitive parameter, if any;
b) binary primitives and a primitive parameter, if any; or
c) an extended binary primitive;
and
c) the SPL packet contains forward error correction information (see 5.5.7 and SAS-4).
128 bitsc
a a a a
10b SPL frame segment or idle dword segment
128 bitsc
Key:
a
Five bits of forward error correction information.
b
Excludes five bits of forward error correction information.
c
Excludes forward error correction information.
Bit
1 0
Byte\Bit 7 6 5 4 3 2 1 0
0
••• SPL packet payload
15
16
a
Forward error correction
17
18
a The 20-bit forward error correction’s position (i.e., byte 16, byte 17, and bits 3 to 0 of byte 18) shown in
this table is a logical representation of the position of the forward error correction. The physical position
of the forward error correction is distributed throughout the SPL packet payload as described in table 68.
The SPL PACKET HEADER field (see table 53) specifies the contents of the SPL packet payload.
Code Description
a
00b The SPL packet payload contains a scrambled idle segment.
The SPL packet payload descriptor contains a primitive segment containing the following that are
not scrambled:
a) primitives;
01b
b) binary primitives
c) primitive parameters; or
d) extended binary primitive.
The SPL packet payload contains a scrambled:
a) segment of an SSP frame;
b) segment of an SMP frame;
10b
c) segment of an address frame;
d) segment of an STP frame; or
e) idle dword segment.
11b a The SPL packet payload contains a scrambled idle segment.
a The selection of 00b or 11b is as described in 6.8.3.
The forward error correction contains information that is used by a phy to:
a) detect errors; and
b) attempt to correct errors in the SPL packet.
If the SPL PACKET HEADER field is set to 00b or 11b, then the SPL packet payload contains a scrambled idle
segment as defined in table 54.
Byte\Bit 7 6 5 4 3 2 1 0
15
If the SPL PACKET HEADER field is set to 01b, then the SPL packet payload contains a primitive segment with:
a) primitives and primitive parameters, if any, as defined in table 57;
b) binary primitives and primitive parameters, if any, as defined in table 55; or
c) an extended binary primitive as defined in table 62.
If the primitive segment contains primitives, binary primitives, or a primitive parameter as described in table
57, then:
a) for primitives:
A) the first character of the primitive (i.e., control character) is represented as a reduced control
character and is labeled in table 56 as a reduced control character; and
B) the second character, the third character, and the last character of the primitive are positioned as
described in table 56;
b) for a primitive parameter the least significant two bits of the primitive parameter shall be as described
in table 64; and
c) for binary primitives the least significant two bits of the binary primitive shall be as described in table
63 or table 64.
If the primitive segment contains a primitive parameter, then:
a) the length in dwords of the primitive parameter;
b) the byte locations of the primitive parameter within the primitive segment; and
c) the byte locations of the primitive or binary primitive associated with the primitive parameter within the
primitive segment,
shall be as described in table 55.
Byte\Bit 7 6 5 4 3 2 1 0
a
n a Second character i First character
n+1 f j a d
n+2 e Third character j a b
n+3 c Last character j
Key:
a = first 8b10b bit of a character (see 5.4)
j = last 8b10b bit of a character (see 5.4)
a Represents a K28.5 if set to 00b or a K28.3 if set 11b.
Table 57 – Primitive segment SPL packet payload containing primitives and binary primitives
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE
0
SYNCHRONIZE SELECT
PRIMITIVE0
•••
3
4 CONTROL1
••• PRIMITIVE1
7
8 CONTROL2
••• PRIMITIVE2
11
12 CONTROL3
••• PRIMITIVE3
15
Table 58 – Primitive segment SPL packet payload that contains primitives, binary
primitives, and a 1-dword primitive parameter in second dword
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE
0
SYNCHRONIZE SELECT
PRIMITIVE0
•••
3
PARAMETER LENGTH
4 CONTROL1
(01b)
•••
PRIMITIVE PARAMETER
7
8 CONTROL2
••• PRIMITIVE2
11
12 CONTROL3
••• PRIMITIVE3
15
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE
0
SYNCHRONIZE SELECT
PRIMITIVE0
•••
3
4 CONTROL1
••• PRIMITIVE1
8 CONTROL2
••• PRIMITIVE2
11
PARAMETER LENGTH
12 CONTROL3
(01b)
•••
PRIMITIVE PARAMETER
15
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE
0
SYNCHRONIZE SELECT
PRIMITIVE0
•••
3
PARAMETER LENGTH
4 CONTROL1
(10b)
•••
PRIMITIVE PARAMETER
11
12 CONTROL3
••• PRIMITIVE3
15
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE
0
SYNCHRONIZE SELECT
PRIMITIVE0
•••
3
PARAMETER LENGTH
4 CONTROL1
(11b)
•••
PRIMITIVE PARAMETER
15
Table 62 – Primitive segment SPL packet payload that contains an extended binary primitives
Byte\Bit 7 6 5 4 3 2 1 0
PRIMITIVE SYNCHRONIZE
0
SELECT (10b)
1
15
Code Description
00b a The control character for the associated PRIMITIVE0 field is K28.5.
01b The associated PRIMITIVE0 field is a binary primitive.
The SPL packet payload is formatted as an extended binary primitive
10b b
as shown in table 62.
11b a The control character for the associated PRIMITIVE0 field is K28.3.
a
The PRIMITIVE0 field shall contain the 8b10b data characters for the version
of the primitive with a starting RD+ disparity (see 5.3.5).
b
The EXTENDED BINARY PRIMITIVE field shall contain 126 bits that specify an
extended binary primitive (see 6.4).
The CONTROL1 field, CONTROL2 field, and CONTROL3 field are defined in table 64.
Code Description
b) the PRIMITIVE1 field to the other single primitive sequence or binary primitive;
c) the PRIMITIVE2 field to ALIGN (2) or a primitive parameter; and
d) the PRIMITIVE3 field to ALIGN (3) or a primitive parameter.
If the transmitter has three single primitive sequences or three binary primitives to transmit within a single
primitive segment, then the transmitter shall set:
a) the PRIMITIVE0 field to one of the single primitive sequences or binary primitives;
b) the PRIMITIVE1 field to another single primitive sequence or binary primitive;
c) the PRIMITIVE2 field to the last single primitive sequence or binary primitive; and
d) the PRIMITIVE3 field to ALIGN (3) or a primitive parameter.
If the transmitter has four single primitive sequences or four binary primitives to transmit within a single
primitive segment, then the transmitter shall set:
a) the PRIMITIVE0 field to one of the single primitive sequences or binary primitives;
b) the PRIMITIVE1 field to another single primitive sequence or binary primitive;
c) the PRIMITIVE2 field to another single primitive sequence or binary primitive; and
d) the PRIMITIVE3 field to the last single primitive sequence or binary primitive (see figure 61).
The transmitter shall insert a triple primitive sequence or an extended primitive sequence into two SPL
packets as follows:
1) in the first SPL packet set:
A) the PRIMITIVE0 field to ALIGN (1), a single primitive sequence, or a single binary primitive;
B) the PRIMITIVE1 field to ALIGN (2), a single primitive sequence, or a single binary primitive; and
C) the PRIMITIVE2 field and the PRIMITIVE3 field to two primitives of the triple primitive sequence or
extended primitive sequence (see figure 61);
and
2) in the second SPL packet set:
A) the PRIMITIVE0 field to one of the primitives of the triple primitive sequence or extended primitive
sequence (see figure 67);
B) the PRIMITIVE1 field to ALIGN (1), a single primitive sequence, a single binary primitive, or a
primitive parameter;
C) the PRIMITIVE2 field to ALIGN (2), a single primitive sequence, a single binary primitive, or a
primitive parameter; and
D) the PRIMITIVE3 field to ALIGN (3), a single primitive sequence, a single binary primitive, or a
primitive parameter,
however, any number of SPL packet payloads containing scrambled idle segments or deletable extended
binary primitives may be transmitted between the SPL packets containing the triple primitive sequence or the
extended primitive sequence.
The transmitter shall insert a redundant primitive sequence into two SPL packets as follows:
1) in the first SPL packet set:
A) the PRIMITIVE0 field to ALIGN (1), a single primitive sequence, or a single binary primitive; and
B) the PRIMITIVE1 field, the PRIMITIVE2 field, and the PRIMITIVE3 field to three primitives of the
redundant primitive sequence (see figure 61);
and
2) in the second SPL packet set:
A) the PRIMITIVE0 field, the PRIMITIVE1 field, and the PRIMITIVE2 field to three primitives of the
redundant primitive sequence (see figure 61); and
B) the PRIMITIVE3 field to ALIGN (2), a single primitive, a single binary primitive, or a primitive
parameter,
however, any number of SPL packet payloads containing scrambled idle segments or deletable extended
binary primitives may be transmitted between the SPL packets containing the redundant primitive sequence.
As a primitive segment is forwarded through an expander, one or more deletable primitives may be replaced
with ALIGN primitives (e.g., substitution of a NOTIFY) (see 6.2.5.3.1). Receivers shall be capable of decoding
any combination of ALIGNs and single primitives.
If the SPL PACKET HEADER field is set to 10b within a frame, then the SPL packet payload contains the SPL
frame segment shown in table 65. SPL frame segments are used to transmit portions of frames.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• SPL FRAME SEGMENT DWORD 0
3
4
••• SPL FRAME SEGMENT DWORD 1
7
8
••• SPL FRAME SEGMENT DWORD 2
11
12
••• SPL FRAME SEGMENT DWORD 3
15
The SPL FRAME SEGMENT DWORD 0 field, the SPL FRAME SEGMENT DWORD 1 field, the SPL FRAME SEGMENT
DWORD 2 field, and the SPL FRAME SEGMENT DWORD 3 field contain a scrambled (see 6.8.3):
If the SPL PACKET HEADER field is set to 10b and is received outside a frame, then the SPL packet payload
contains the idle dword segment shown in table 66. Idle dword segments are used to transmit idle dwords on
idle physical links (see 6.6).
Byte\Bit 7 6 5 4 3 2 1 0
0
••• SPL IDLE DWORD 0
3
4
••• SPL IDLE DWORD 1
7
8
••• SPL IDLE DWORD 2
11
12
••• SPL IDLE DWORD 3
15
The SPL IDLE DWORD 0 field, the SPL IDLE DWORD 1 field, the SPL IDLE DWORD 2 field, and the SPL IDLE DWORD 3
field each contain a scrambled (see 6.8.3) idle dword.
When in SAS packet mode, the transmitter and receiver shall use for forward error correction purposes a
Reed Solomon (n, k) code where the relationship of parameters in the code is as follows:
m
0kn2 +2
where:
n is 30;
k is 26; and
m is 5.
The smallest possible number of differences between two information sequences of the Reed Solomon code
is:
d min = n – k + 1 = 2 t + 1
where:
n is 30;
k is 26;
t is 2; and
dmin is 5.
Table 67 defines the notation and associated equations used in Reed Solomon encoding and decoding used
in this standard.
Notation Definition
Generator Polynomial:
2 3 4 4 24 3 19 2 29 10
G(x) Gx = x – x – x – x – = x + x + x + x +
where:
is a root of the primitive polynomial 1 + x2 + x5 over the GF(25).
Message to be encoded (i.e., 2-bit SPL PACKET HEADER field plus 128-bit SPL packet payload):
2 25
M x = m 0 + m 1 x + m 2 x + ... + m 25 x
M(x)
where:
mi is a message symbol and the index i denotes that mi is more significant than
m(i-1).
Remainder parity check symbols (i.e., 20-bit forward error correction):
4
x M x 2 3
P x = ------------------------- = p 0 + p 1 x + p 2 x + p 3 x
P(x) G x
where:
pi is a parity symbol and the index i denotes that pi is more significant than p(i-1).
Transmitted codeword polynomial:
T(x)
T(x) = P(x) + (x4 M(x))
Errors induced:
E(x)
E(x) = R(x) - T(x)
Received codeword polynomial, including errors:
R(x)
R(x) = T(x) + E(x)
Receiver’s estimate of errors:
2 29
E r x = e 0 + e 1 x + e 2 x + ... + e 29 x
Er(x) where:
ei is an error symbol and the index i denotes that ei is more significant than e(i-1).
Non-zero ei define the error values and locations as determined by the Reed Solomon decode
process.
Decoded message based on receiver’s estimate of errors:
Mr(x) R x – Er x
M r x = -------------------------------------
4
x
Key:
GF = Galois field (i.e., a mathematical field that contains a finite number of elements)
The Reed Solomon code utilizes a generator polynomial G(x) to encode the message symbols M(x) and
produce the parity check symbols P(x), as described in table 67. The original message symbols M(x) and the
parity check symbols P(x) comprise the entire 30-symbol codeword T(x) that is transmitted.
The message symbols occupy the mathematical higher order 26 symbols and the parity occupies the
mathematical lower order four symbols of the 30-symbol codeword T(x). The specific ordering of transmitted
symbols is as shown in figure 62 and table 67.
The generator polynomial G(x) is irreducible and has a degree of four that is equal to the number of parity
symbols. The parity symbols P(x) are generated from the remainder of the message M(x) divided by the
generator polynomial G(x), as described in table 67.
Figure 62 shows the forward error correction encoding process to generate T(x) and T(x) is subsequently
passed to the physical link with ordering as shown in the figure 62 and table 68.
...
B7 B6 B5 B4 B3 B2 B1 B0 m3
Symbol 5
B5 B6 B7 B0 B1
B7 B0 B1 B2 B3 P(x)
Byte 2 m4
Symbol 6 (p0) p0
B7 B6 B5 B4 B3 B2 B1 B0 B2 B3 B4 B5 B6
b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
m5
Symbol 7
Byte 3 B7 B0 B1 B2 B3
B4 B5 B6 B7 B0
B7 B6 B5 B4 B3 B2 B1 B0 m6
...
B4 B5 B6 B7 B0
Symbol 12 (p1) p1
Byte 4 m7 b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
B7 B6 B5 B4 B3 B2 B1 B0 B1 B2 B3 B4 B5
...
Symbol 18 (p2) p2
b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
. ..
...
...
Symbol 24 (p3) p3
b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
...
Table 68 specifies the full set of source data and ordering of symbols sent on the physical link.
The codeword T(x) is transmitted and certain errors E(x) may corrupt the original codeword to produce the
codeword with errors R(x) at the receiver, as described in table 67.
The receiver’s Reed Solomon code decoding function makes an estimate of the error locations Er(x) and if
two or fewer symbols have errors, then Er(x) = E(x). Non-zero coefficients of Er(x) define the error locations
and the error values, both of which are needed to decode the original transmitted message. If a decoding
failure is identified (e.g., the decoding function detects that three symbols are in error), then correction is not
attempted.
Once Er(x) is determined, it is subsequently subtracted from the received codeword to yield the original
codeword, as described in table 67. The original message M(x) is obtained by removing the parity check
symbols P(x) and then dividing out the original shift from encoding.
If the decoder detects no errors, then the decoder shall send a Decode Success message to the phy’s
receiver that received the SPL packet.
After the decoder computes the estimate of the error locations:
a) if a decode failure is identified, then the decoder shall:
A) not perform error correction (i.e., set Er(x) = 0); and
B) send a Decode Failure message to the phy’s receiver that received the SPL packet;
or
b) if a decode failure is not identified, then the decoder shall:
1) determine the error locations;
2) determine the error values;
3) evaluate error locations and error values;
4) perform error correction; and
5) send a Decode Success message to the phy’s receiver that received the SPL packet.
Multiple algorithms are suitable for identifying the error locations and error values of a Reed Solomon code.
The selection of an algorithm is outside the scope of this standard.
The R(x) codeword is received from the physical link in the order given in figure 63 and then subsequently
decoded to produce the error corrected SPL packet.
Symbol 1 e0 m0 Header
H0 H1 B0 B1 B2 H0 H1 B0 B1 B2 H1 H0
B3 B4 B5 B6 B7
e1 m1 Byte 0
. ..
Symbol 5 B3 B4 B5 B6 B7 B3 B4 B5 B6 B7 B7 B6 B5 B4 B3 B2 B1 B0
B7 B0 B1 B2 B3
...
...
...
Symbol 6 (p0)
b0 b1 b2 b3 b4
e5 m5 Byte 2
B7 B0 B1 B2 B3 B7 B0 B1 B2 B3 B7 B6 B5 B4 B3 B2 B1 B0
Symbol 7
B4 B5 B6 B7 B0 e6 m6 Byte 3
B4 B5 B6 B7 B0 B4 B5 B6 B7 B0 B7 B6 B5 B4 B3 B2 B1 B0
...
Symbol 12 (p1)
Byte 4
...
...
b0 b1 b2 b3 b4
B7 B6 B5 B4 B3 B2 B1 B0
...
e23 m23
Symbol 18 (p2)
...
B1 B2 B3 B4 B5 B1 B2 B3 B4 B5
b0 b1 b2 b3 b4
e24 m24 Byte 14
.. .
Symbol 24 (p3) B6 B7 B0 B1 B2 B6 B7 B0 B1 B2 B7 B6 B5 B4 B3 B2 B1 B0
b0 b1 b2 b3 b4
e25 m25 Byte 15
.. .
B3 B4 B5 B6 B7 B3 B4 B5 B6 B7 B7 B6 B5 B4 B3 B2 B1 B0
Symbol 27
B1 B2 B3 B4 B5
Symbol 28
B6 B7 B0 B1 B2
Symbol 29
B3 B4 B5 B6 B7
Key:
last bit of SPL packet = bitwise exclusive logical OR
received from physical link
When SAS packet mode is enabled, a management application client may configure phys to support
interleaved SPL (see 5.8). If both phys on a link are configured to support interleaved SPL, then the number of
packets to be interleaved shall be set as described in table 71.
A transmitter phy interleaves SPL packets, symbol by symbol resulting in the interleaved SPL packet that is
transmitted (see figure 64).
A receiver phy deinterleaves the interleaved SPL packets then sends each SPL packet to the SP receiver
(see figure 65).
If interleaved SPL is enabled, then SPL packets are interleaved starting with the first symbol of each SPL
packet (i.e., m0) in ascending packet order followed by the second symbol of each SPL packet (i.e., m1) in
ascending packet order and sequentially interleaving all remaining symbols, including parity symbols, of each
SPL packet through the last symbol (i.e., m25) in ascending packet order. This results in an interleaved SPL
packet that is transmitted. Figure 64 shows an example of interleaving two SPL packets.
scrambler
Bit Bit
31 0
header
MSB LSB
1 0
B ... B B ... B B ... B B ... B
7 0 7 0 7 0 7 0
31 2423 1615 8 7 0
Data dwords transmitted + Header
m0...m25
FEC
m0...m25 + p0.. p4
1 1 1 1 1 1
... ... ...
m0 m1 p0 p4 m24 m25
0 0 0 0 0 0
... ... ...
m0 m1 p0 p4 m24 m25
Interleaver
interleaved SPL packet 0
0 1 0 1 0 1 Interleaved 0 1 0 1 0 1
... ...
m0 m0 m1 m1 p0 p0 symbols p4 p4 m24 m24 m25 m25
Table 69 specifies the full set of source data and ordering of symbols sent on the physical link for interleaving
two SPL packets.
If the phy has negotiated interleaved SPL, then the receiver de-interleaves the symbols before further
processing.The first symbol is for m0, packet 0 and subsequent symbols are sequentially de-interleaved, in
ascending packet order, for all symbols of each SPL packet. Figure 65 shows an example of a receiver
deinterleaving two SPL packets.
m0...m25 + p0.. p4
FEC
m0...m25
5.6 Dwords, primitives, binary primitives, extended binary primitives, data dwords,
SPL frame segments, and invalid dwords
e) primitives are defined with both negative and positive starting RD (see 5.3.5). SAS defines primitives
starting with K28.5 (see 6.2.6 and 6.2.7). SATA defines primitives starting with K28.3 and K28.5,
which are used in SAS during STP connections (see 6.2.8).
If the phy is in the SAS packet mode, then:
a) all bytes transferred in SAS are grouped into four-byte sequences called dwords;
b) an SPL frame segment contains four scrambled dwords;
c) an unscrambled primitive segment (see 5.5.4) contains:
A) primitives (see 6.2) and primitive parameter (see 5.5.4), if any;
B) binary primitives (see 6.3) and primitive parameter (see 5.5.4), if any; or
C) an extended binary primitive (see 6.4);
and
d) forward error correction (see 5.5.7) consists of 20 unscrambled bits.
If the phy has negotiated interleaved SPL, then SPL packets shall be transmitted as interleaved SPL packets
(see 5.5.8).
For the timing and timing characteristics of transmitted and received OOB signals see SAS-4.
Figure 66 describes OOB signal transmission by the SP transmitter (see 5.14.2 and 5.18.2). The COMWAKE
Transmitted, COMINIT Transmitted, and COMSAS Transmitted messages are sent to the SP state machine
(see 5.14).
OOB burst
SP
COMWAKE
1 2 3 4 5 6
Transmitted
1 2 3 4 5 6
COMWAKE
COMWAKE
negation
idle
COMRESET (see SATA) or COMINIT (see SATA)
OOB burst
SP
COMINIT
1 2 3 4 5 6
Transmitted
1 2 3 4 5 6
COMINIT
COMINIT
negation
idle
SP
COMSAS
1 2 3 4 5 6 Transmitted
1 2 3 4 5 6
COMSAS
negation
COMSAS idle
Key:
Zero or more OOB nth OOB idle/OOB
OOB idle OOB burst n burst pair
idle/OOB burst pairs
Note - OOB idle is shown here as a neutral signal for visual clarity only
.
The detection of OOB signals is disabled and enabled by the SP state machine (see 5.14.3).
If detection of OOB signals is disabled, then the SP receiver (see 5.14.2 and 5.18.3) shall ignore all OOB
signals.
If detection of OOB signals is enabled and either optical mode is enabled or D.C. mode is enabled, then a
receiver device shall detect an OOB signal after receiving four consecutive idle time/burst time pairs (see
figure 67) while the SP_DWS state machine (see 5.15) has not achieved dword synchronization (see
5.14.4.10 and 5.14.6.8). If detection of OOB signals is enabled and optical mode is enabled, then a receiver
device shall detect an OOB signal after receiving four consecutive idle time/burst time pairs while the
SP_DWS state machine has achieved dword synchronization. It is not an error to receive more than four idle
time/burst time pairs. A receiver device shall not detect the same OOB signal again until it has detected the
corresponding negation time (e.g., a COMINIT negation time for a COMINIT (see SATA)) or has detected a
different OOB signal (e.g., if a receiver device that previously detected COMINIT receives four COMWAKE
idle time/burst time pairs, then that receiver device detects COMWAKE (see SATA) and may then detect
COMINIT at a later time).
Figure 67 describes OOB signal detection by the SP receiver (see 5.14.2 and 5.14.3). The COMWAKE
Detected, COMWAKE Completed, COMINIT Detected, COMSAS Detected, and COMSAS Completed
messages are sent to the SP state machine (see 5.14) to indicate that an OOB signal has been partially or
fully detected.
COMWAKE
Time (not to scale)
COMWAKE
Completed SP
1 2 3 4 n
COMWAKE
Any negation
transitions
COMWAKE
Detected SP
COMRESET or COMINIT
1 2 3 4 n
COMINIT
Any negation
transitions COMINIT
Detected SP
COMSAS
COMSAS
1 2 3 4 n Completed SP
COMSAS
Any COMSAS negation
transitions Detected SP
Key:
Zero or more OOB nth OOB idle/OOB
OOB idle OOB burst n burst pair
idle/OOB burst pairs
Note - OOB idle is shown here as a neutral signal for visual clarity only.
Expander devices shall not forward OOB signals. An expander device shall run the link reset sequence
independently on each physical phy.
Retimer lanes shall forward OOB signals.
For the timing characteristics of transmitted SATA port selection signal see SAS-4.
See 5.14.7 and 9.4.4.28 for information on usage of the SATA port selection signal.
During a low phy power condition (see 4.11.1) the phy shall transmit D.C. idle (see SAS-4). A phy that is in a
low phy power condition shall meet the phy wakeup timeout requirements shown in table 84.
Table 70 defines the SNW-3 (see 5.11.4.2.3.3) phy capabilities. For each bit defined as reserved, the phy shall
transmit a zero (i.e., OOB idle) and shall ignore the received value. Byte 0 shall be transmitted first and byte 3
shall be transmitted last. Within each byte, bit 7 shall be transmitted first and bit 0 shall be transmitted last
(e.g., overall, the START bit is transmitted first and the PARITY bit is transmitted last).
Byte\Bit 7 6 5 4 3 2 1 0
Supported settings
1 G1 G2 G3
G1 WITH G2 WITH G3 WITH G4 WITHOUT G4 WITH
WITHOUT WITHOUT WITHOUT
SSC SSC SSC SSC SSC
SSC SSC SSC
Supported settings
2 G5
G5 WITH
WITHOUT Reserved
SSC
SSC
EXTENDED
3 Reserved COEFFICIENT PARITY
SETTINGS
The START bit shall be set as shown in table 70 for the SNW-3 phy capabilities.
A TX SSC TYPE bit set to one indicates that the phy’s transmitter uses center-spreading SSC while SSC is
enabled (e.g., the phy is an expander phy or a retimer phy) (see SAS-4). A TX SSC TYPE bit set to zero
indicates that the phy’s transmitter uses down-spreading SSC while SSC is enabled (e.g., the phy is a SAS
phy) or that the phy does not support SSC.
NOTE 10 - The phy’s receiver uses the TX SSC TYPE bit to optimize its clock data recovery circuitry (see
SAS-4).
The REQUESTED INTERLEAVED SPL field indicates if the phy supports interleaved SPL (see 5.5.8) and, if so, the
number of SPL packets that the phy is requesting to be interleaved. The REQUESTED INTERLEAVED SPL field
should be set to 00b if the supported link rate is less than G5 (i.e., 22.5 GBit/s).
A phy that supports interleaving three SPL packets shall support interleaving two SPL packets.
A phy that supports interleaving four SPL packets shall support interleaving three SPL packets, and
interleaving two SPL packets.
Table 71 defines:
a) whether or not interleaved SPL is enabled; and
b) the negotiated number of SPL packets to be interleaved.
00b
Any Any interleaved SPL is not enabled
(i.e., no interleaved SPL)
A G1 WITHOUT SSC bit set to one indicates that the phy supports G1 (i.e., 1.5 Gbit/s) without SSC and that SAS
dword mode is enabled. A G1 WITHOUT SSC bit set to zero indicates that the phy does not support G1 without
SSC.
A G1 WITH SSC bit set to one indicates that the phy supports G1 (i.e., 1.5 Gbit/s) with SSC and that SAS dword
mode is enabled. A G1 WITH SSC bit set to zero indicates that the phy does not support G1 with SSC.
A G2 WITHOUT SSC bit set to one indicates that the phy supports G2 (i.e., 3 Gbit/s) without SSC and that SAS
dword mode is enabled. A G2 WITHOUT SSC bit set to zero indicates that the phy does not support G2 without
SSC.
A G2 WITH SSC bit set to one indicates that the phy supports G2 (i.e., 3 Gbit/s) with SSC and that SAS dword
mode is enabled. A G2 WITH SSC bit set to zero indicates that the phy does not support G2 with SSC.
A G3 WITHOUT SSC bit set to one indicates that the phy supports G3 (i.e., 6 Gbit/s) without SSC and that SAS
dword mode is enabled. A G3 WITHOUT SSC bit set to zero indicates that the phy does not support G3 without
SSC.
A G3 WITH SSC bit set to one indicates that the phy supports G3 (i.e., 6 Gbit/s) with SSC and that SAS dword
mode is enabled. A G3 WITH SSC bit set to zero indicates that the phy does not support G3 with SSC.
A G4 WITHOUT SSC bit set to one indicates that the phy supports G4 (i.e., 12 Gbit/s) without SSC, that
transmitter training is enabled, and that SAS dword mode is enabled. A G4 WITHOUT SSC bit set to zero
indicates that the phy does not support G4 without SSC.
A G4 WITH SSC bit set to one indicates that the phy supports G4 (i.e., 12 Gbit/s) with SSC, that transmitter
training is enabled, and that SAS dword mode is enabled. A G4 WITH SSC bit set to zero indicates that the phy
does not support G4 with SSC.
A G5 WITHOUT SSC bit set to one indicates that the phy supports G5 (i.e., 22.5 Gbit/s) without SSC, that
transmitter training is enabled, and that SAS packet mode is enabled. A G5 WITHOUT SSC bit set to zero
indicates that the phy does not support G5 without SSC.
A G5 WITH SSC bit set to one indicates that the phy supports G5 (i.e., 22.5 Gbit/s) with SSC, that transmitter
training is enabled, and that SAS packet mode is enabled. A G5 WITH SSC bit set to zero indicates that the phy
does not support G5 with SSC.
Table 72 defines the priority of the supported settings bits.
Priority Bit
a
Highest G5 WITH SSC bit
An EXTENDED COEFFICIENT SETTINGS bit set to one indicates that the phy’s transmitter supports extended
training coefficient settings (see 5.10). An EXTENDED COEFFICIENT SETTINGS bit set to zero indicates that the
phy’s transmitter does not support extended training coefficient settings.
If the:
a) transmitted EXTENDED COEFFICIENT SETTINGS bit is set to one; and
b) received EXTENDED COEFFICIENT SETTINGS bit is set to one,
then extended coefficient settings shall be enabled.
If either the:
a) transmitted EXTENDED COEFFICIENT SETTINGS bit is set to zero; or
b) received EXTENDED COEFFICIENT SETTINGS bit is set to zero,
then extended coefficient settings shall not be enabled.
The PARITY bit provides for error detection for the SNW-3 phy capabilities bits. The PARITY bit shall be set to
one or zero such that the total number of SNW-3 phy capabilities bits that are set to one is even, including the
START bit and the PARITY bit. If the PARITY bit received is incorrect based upon the received SNW phy
capabilities bits, then the parity is bad and the phy shall consider a phy reset problem (see 5.11.4.2.4) to have
occurred.
Table 73 lists some example SNW-3 phy capabilities values.
Down-spreading SSC
80540000h
G1, G2, and G3 with SSC supported
Down-spreading SSC
80550001h
G1, G2, G3, and G4 with SCC supported
Down-spreading SSC
80FC0001h
G1, G2, and G3 with and without SSC supported
Down-spreading SSC
80FF0001h
G1, G2, G3, and G4 with and without SSC supported
Down-spreading SSC
803FC001h
G2, G3, G4, and G5 with and without SSC supported
Center-spreading SSC
C0FC0000h
G1, G2, and G3 with and without SSC supported
Center-spreading SSC
C0FF0000h
G1, G2, G3, and G4 with and without SSC supported
Center-spreading SSC
C03FC000h
G2, G3, G4, and G5 with and without SSC supported
Center-spreading SSC
C9FC0000h Requested 3 Gbit/s logical link rate
G1, G2, and G3 with and without SSC supported
Center-spreading SSC
C8F00001h Requested 1.5 Gbit/s logical link rate
G1 and G2 with and without SSC supported
a
Expressed as a 32-bit value with byte 0 bit 7 (i.e., the START bit) as the
MSB and byte 3 bit 0 (i.e., the PARITY bit) as the LSB.
BMC is a coding method in which TTIU bits (see 5.11.4.2.3.5) and a clock signal are combined to form a single
self-synchronizing signal. The self-synchronizing signal is a differential coding that indicates a:
a) one with a transition at the midpoint of the TTIU bit cell; or
b) zero with no transition within the TTIU bit cell.
BMC coding ensures that at least one transition occurs for each transmitted TTIU bit allowing the receiver to
perform clock recovery.
All TTIU bits are encoded into BMC and transmitted serially bit-by-bit across the physical link as shown in
figure 68.
Clock
TTIU 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0
bits
Transmitted
signal
The transmitter shall encode a zero in a TTIU bit cell by making no transition within a TTIU bit cell as shown in
figure 69.
5 UI 5 UI
Clock Clock
Value Transmitted
Table 75 defines the Train_Tx-SNW TTIU. For each Train_Tx-SNW TTIU bit defined as reserved, the phy
shall transmit a zero. Byte 0 shall be transmitted first and byte 3 shall be transmitted last. Within each byte, bit
7 shall be transmitted first and bit 0 shall be transmitted last.
Byte\Bit 7 6 5 4 3 2 1 0
0 PATTERN TYPE
Table 76 defines the PATTERN TYPE field, which defines the format of the PATTERN TYPE SPECIFIC field.
Key:
M = TTIU implementation is mandatory.
a
If a phy receives a pattern type that is reserved, then that phy shall transmit an Error Response TTIU
with the ERROR CODE field set to RESERVED PATTERN TYPE (see 5.18.5.4).
The PATTERN TYPE SPECIFIC field contains the transmitter training information, the form of which is defined by
the PATTERN TYPE field (see table 76).
The total number of bits within a TTIU that are set to zero shall be even.
When the local phy receives a Control/Status TTIU (see table 77):
a) the Training Control word specifies adjustments to the local phy’s transmitter coefficients; and
b) the Training Status word indicates the status of the attached phy's transmitter.
When the local phy sends a Control/Status TTIU:
a) the Training Control word specifies adjustments to the attached phy’s transmitter coefficients; and
b) the Training Status word indicates the status of the local phy's transmitter.
Byte\Bit 7 6 5 4 3 2 1 0
If a TTIU bit that is defined as reserved in the Training Control word is set to one or the Training Status word is
set to one, then the phy shall transmit an Error Response TTIU (see 5.18.5.4) with the ERROR CODE field set to
RESERVED TTIU BIT SET TO ONE.
The PATTERN TYPE field shall be set to the value shown in table 76.
Table 78 defines the COEFFICIENT SETTINGS field.
If a coefficient change is specified (see table 79) and the TRAIN COMP bit
is set to zero, then the local phy’s transmitter coefficients shall be
changed as specified in the:
000b normal M
a) COEFFICIENT 1 REQUEST field;
b) COEFFICIENT 2 REQUEST field; and
c) COEFFICIENT 3 REQUEST field.
Reserved M
Key:
M = Coefficient settings implementation is mandatory.
O = Coefficient settings implementation is optional.
If the COEFFICIENT SETTINGS field is set to 000b and the TRAIN COMP bit is set to zero, then the COEFFICIENT 3
REQUEST field specifies the adjustment, if any, (see table 79) that the local phy’s transmitter shall make to its
transmitter coefficient 3 (see SAS-4). If the COEFFICIENT SETTINGS field is set to a value other than 000b or the
TRAIN COMP bit is set to one, then the COEFFICIENT 3 REQUEST field shall be ignored by the local phy’s
transmitter.
If the COEFFICIENT SETTINGS field is set to 000b and the TRAIN COMP bit is set to zero, then the COEFFICIENT 2
REQUEST field specifies the adjustment, if any, (see table 79) that the local phy’s transmitter shall make to its
transmitter coefficient 2 (see SAS-4). If the COEFFICIENT SETTINGS field is set to a value other than 000b or the
TRAIN COMP bit is set to one, then the COEFFICIENT 2 REQUEST field shall be ignored by the local phy’s
transmitter.
If the COEFFICIENT SETTINGS field is set to 000b and the TRAIN COMP bit is set to zero, then the COEFFICIENT 1
REQUEST field specifies the adjustment, if any, (see table 79) that the local phy’s transmitter shall make to its
transmitter coefficient 1 (see SAS-4). If the COEFFICIENT SETTINGS field is set to a value other than 000b or the
TRAIN COMP bit is set to one, then the COEFFICIENT 1 REQUEST field shall be ignored by the local phy’s
transmitter.
Table 79 – COEFFICIENT 1 REQUEST field, COEFFICIENT 2 REQUEST field, and COEFFICIENT 3 REQUEST field
00b hold The local phy shall make no adjustment to the specified coefficient. M
The local phy shall adjust the specified coefficient by one increment.
01b increment a M
The local phy shall adjust the specified coefficient by one decrement.
10b decrement a M
b
11b Reserved
Key:
M = Coefficient request implementation is mandatory.
a See SAS-4 for the amount of adjustment represented by one increment and one decrement to the
coefficient.
b
If a phy receives one coefficient request that is reserved, then that phy shall transmit an Error
Response TTIU (see 5.18.5.4) that indicates the coefficient request that was reserved with the ERROR
CODE field set to:
a) RESERVED COEFFICIENT 1 REQUEST;
b) RESERVED COEFFICIENT 2 REQUEST; or
c) RESERVED COEFFICIENT 3 REQUEST.
If a phy receives more than one coefficient request that is reserved, then that phy shall transmit an Error
Response TTIU (see 5.18.5.4) with the ERROR CODE field set to MULTIPLE RESERVED
COEFFICIENTS REQUESTED.
See table 80 for the combinations of coefficient requests that are mandatory or reserved.
Key:
M = Coefficient Request byte’s coefficient request combination implementation is mandatory.
a
If a phy receives a Coefficient Request byte with a combination of coefficient requests that is reserved,
then that phy shall transmit an Error Response (see table 79).
A training complete (TRAIN COMP) bit set to one indicates the local phy’s receiver has determined the attached
phy’s transmitter coefficients are set to their optimum value. A TRAIN COMP bit set to zero indicates the local
phy’s receiver may be requesting the attached phy’s transmitter coefficients to be adjusted as indicated in the
COEFFICIENT SETTINGS field, COEFFICIENT 3 REQUEST field, COEFFICIENT 2 REQUEST field, and COEFFICIENT 1
REQUEST field.
A transmitter initializing (TX INIT) bit set to one indicates the local phy is initializing and not ready for training. A
TX INIT bit set to zero indicates the local phy is ready and may be adjusted by the attached phy’s receiver.
The BALANCE bit shall be set to one or zero such that the total number of bits within the TTIU that are set to
zero is even, including the BALANCE bit (see 5.18.5.4.1).
The COEFFICIENT 3 STATUS field indicates the status (see table 81) of the local phy’s transmitter coefficient 3
(see SAS-4).
The COEFFICIENT 2 STATUS field indicates the status (see table 81) of the local phy’s transmitter coefficient 2
(see SAS-4).
The COEFFICIENT 1 STATUS field indicates the status (see table 81) of the local phy’s transmitter coefficient 1
(see SAS-4).
Table 81 – COEFFICIENT 1 STATUS field, COEFFICIENT 2 STATUS field, and COEFFICIENT 3 STATUS field
Key:
M = Coefficient status value implementation is mandatory.
a See SAS-4 for the minimum value and the maximum value.
Byte\Bit 7 6 5 4 3 2 1 0
3 ERROR CODE
The PATTERN TYPE field shall be set as shown in table 82 for the Error Response TTIU.
The RECEIVED COEFFICIENT SETTINGS field shall be set to the contents of the COEFFICIENT SETTINGS field
received in the Training Control word of the Control/Status TTIU that contained any unsupported or illegal
request.
The RECEIVED COEFFICIENT 3 REQUEST field shall be set to the contents of the COEFFICIENT 3 REQUEST field
received in the Training Control word of the Control/Status TTIU that contained any unsupported or illegal
request.
The RECEIVED COEFFICIENT 2 REQUEST field shall be set to the contents of the COEFFICIENT 2 REQUEST field
received in the Training Control word of the Control/Status TTIU that contained any unsupported or illegal
request.
The RECEIVED COEFFICIENT 1 REQUEST field shall be set to the contents of the COEFFICIENT 1 REQUEST field
received in the Training Control word of the Control/Status TTIU that contained any unsupported or illegal
request.
The BALANCE bit shall be set to one or zero such that the total number of bits within the TTIU that are set to
zero is even, including the BALANCE bit.
Figure 71 shows the SATA OOB sequence between a SATA host and SATA device. The SATA OOB sequence
is defined by SATA.
COMWAKE
COMRESET Calibrate
SATA host
(initiator) to
SATA
device
(target)
SATA device
(target) to
SATA host
COMINIT Time
(initiator)
Figure 72 shows the speed negotiation sequence between a SATA host and SATA device. The SATA speed
negotiation sequence is defined by SATA (see SATA).
SATA device
(target phy) to
SATA host
(initiator phy)
...lower
Calibrate COMWAKE ALIGN (0)s rates... ALIGN (0)s Normal dwords
at highest rate at n th rate at detected rate
for 54.6 µs for 54.6 µs
Table 85 defines SATA speed negotiation sequence timing parameters used by the SP state machine (see
5.14).
The transmitter device shall use SATA signal output levels during the SATA speed negotiation sequence as
described in SAS-4.
The phy shall not perform physical link rate tolerance management (see 6.5) during the SATA speed
negotiation sequence.
SAS initiator phys and expander phys may support SATA (e.g., support being directly attached to a SATA
device or a SATA port selector).
To initiate a phy reset sequence a SAS initiator phy or expander phy shall:
1) transmit a COMINIT (see SATA); and
2) in response to receiving a COMINIT, transmit a COMSAS (see SATA).
The COMSAS identifies the phy as a SAS phy or expander phy instead of a SATA phy.
If a SATA phy is attached to the physical link, then that SATA phy either:
a) misinterprets the COMSAS to be a COMRESET (see SATA) and responds with a COMINIT; or
b) ignores the COMSAS and provides no response within a COMSAS detect timeout.
Either response indicates to the SAS initiator phy or expander phy that a SATA phy is attached. As a result,
the SAS initiator phy or expander phy shall transmit COMWAKE (see SATA) and enter the SATA speed
negotiation sequence (see 5.11.2.2).
Figure 73 shows an OOB sequence between a SAS phy or expander phy (i.e., a phy compliant with this
standard) and a SATA phy (i.e., a phy in a SATA device, defined by SATA). The two possible cases are
presented. The first case is that the SATA phy ignores the COMSAS and provides no response within a
COMSAS detect timeout. The second case is that the SATA phy misinterprets the COMSAS to be a
COMRESET and responds with a COMINIT (see SATA). The SP state machine treats these two cases the
same (see 5.14.3.9) and determines that a SATA phy is attached after a COMSAS detect timeout. The SATA
speed negotiation sequence is entered after COMWAKE is detected.
COMINIT
SATA phy responds to COMSAS with COMINIT
COMWAKE
COMINIT COMSAS
Figure 74 shows several different SAS OOB sequences between phy A and phy B, with phy A starting the
SAS OOB sequence at the same time as phy B, before phy B, and before phy B powers on.
Scenario 1: Both SAS phys start SAS OOB sequence at same time
COMINIT COMSAS
Phy A Tx/
Phy B Rx
A
Time=0 Time=z
Phy A Rx/
Phy B Tx B
COMINIT COMSAS
Scenario 2: SAS phy A starts SAS OOB sequence
COMINIT COMSAS
Phy A Tx/
Phy B Rx
A
Time=0 Time=z
Phy A Rx/
Phy B Tx B
COMINIT COMSAS
Phy A Tx/
Phy B Rx
A
Time=0 Time=z
Phy A Rx/
Phy B Tx B
Key:
A = SAS phy A power on
B = SAS phy B power on COMINIT COMSAS
The SAS speed negotiation sequence establishes communications between the two phys on a physical link at
the highest possible transmission rate.
The SAS speed negotiation sequence is a peer-to-peer negotiation technique that does not assume initiator
and target roles. The rules for speed negotiation are the same for both participating phys.
The SAS speed negotiation sequence consists of a set of speed negotiation windows (SNWs). Each SNW is
identified by a name (e.g., Speed Negotiation Window-1 or SNW-1).
SNWs conform to one of the following types:
a) speed negotiation without training (i.e., SNW-1, SNW-2, and Final-SNW) (see 5.11.4.2.3.2);
b) phy capabilities exchange (i.e., SNW-3) (see 5.11.4.2.3.3);
c) phy receiver training (i.e., Train_Rx-SNW) (see 5.11.4.2.3.5); or
d) phy transmitter training (i.e., Train_Tx-SNW) (see 5.11.4.2.3.4).
Many of the timing parameters used for defining the SNWs are common to multiple SNW types. All of the
timing specifications for all SNW types are defined in 5.11.4.2.2.
Phys may implement a subset of SNWs provided that the subset implements a valid speed negotiation
sequence. SAS speed negotiation sequences are defined in 5.11.4.2.4.
The transmitter device shall use SAS signal output levels during the SAS speed negotiation sequence as
described in SAS-4.
The phy shall not perform physical link rate tolerance management (see 6.5) during the SAS speed
negotiation sequence.
Table 86 defines the timing specifications for the SAS speed negotiation sequence.
Speed During SNW-3, the time after RCDT in which bit cells
negotiation SNTT 163 840 OOBI c and OOB idle are transmitted.
transmit time
During low phy power conditions, the maximum time for
a phy to transmit ALIGN (0)s or ALIGN (1)s while in the
SP32:SAS_PS_ALIGN0 state or
SP33:SAS_PS_ALIGN1 state (see 5.14.5.4).
SNW-3 Bit cell f The time to transmit a COMWAKE or OOB idle during
none 2 200 OOBI
time SNW-3.
Maximum
g The maximum time for receiver training to complete
receiver training MRTT 29 998 080 OOBI
during Train_Rx-SNW.
time
Train_Rx-SNW
none The actual duration of Train_Rx-SNW.
time
Maximum
i
Train_Rx-SNW MTWT 30 748 080 OOBI The maximum duration of Train_Rx-SNW.
time
Maximum
j The maximum time for transmitter training to
transmitter MTTT 750 000 000 OOBI
complete during Train_Tx-SNW.
training time
Maximum k
MTXT 750 750 000 OOBI The maximum duration of Train_Tx-SNW.
Train_Tx time
a
OOBI is defined in SAS-4.
b
750 000 OOBI (e.g., RCDT) is nominally 500 µs (i.e., 18 750 40 OOBI).
c
163 840 OOBI (e.g., SNTT) is nominally 109.226 µs (i.e., 4 096 40 OOBI).
d
153 600 OOBI (e.g., SNLT) is nominally 102.4 µs (i.e., (4 096 - 256) 40 OOBI).
e
913 840 OOBI (e.g., SNWT) is nominally 609.226 µs (i.e., RCDT + SNTT).
f
2 200 OOBI is nominally 1 466.6 ns (i.e., COMWAKE signal time (see SAS-4)).
g
29 998 080 OOBI (e.g., MRTT) is nominally 19.998 72 ms (i.e., 11 718 64 40 OOBI). This is the time
of the maximum number of complete receiver training patterns that fit into 20 ms.
h
28 497 920 OOBI (e.g., TLT) is nominally 18.998 613 ms (i.e., 11 132 64 40 OOBI). This is the time
of the maximum number of complete receiver training patterns that fit into 19 ms.
i
30 748 080 OOBI (e.g., MTWT) is nominally 20.498 72 ms (i.e., RCDT + MRTT).
j
750 000 000 OOBI (e.g., MTTT) is nominally 500 ms.
k
750 750 000 OOBI (e.g., MTXT) is nominally 500.5 ms (i.e., MTTT + RCDT).
Actual
lock time
Speed
Long time of negotiation
ALIGN (0)s ALIGN (1)s
negotiation idle lock time
(SNLT)
Speed
negotiation
transmit time
Rate change delay time (RCDT) (SNTT)
Table 87 defines the SNW rate used in SNW-1, SNW-2, and Final-SNW.
SNW-2 3 Gbit/s
If the phy supports the SNW, then after RCDT it shall attempt to attain dword synchronization on an incoming
series of dwords (e.g., ALIGN (0) or ALIGN (1) primitives) at that rate for the SNLT and:
a) if the phy achieves dword synchronization within the SNLT, then it shall change from transmitting
ALIGN (0) primitives to transmitting ALIGN (1) primitives for the remainder of the SNTT (i.e., the
remainder of the SNW time). The point at which the phy achieves dword synchronization is called the
actual lock time; or
b) if the phy does not achieve dword synchronization within the SNLT, then it shall continue transmitting
ALIGN (0) primitives for the remainder of the SNTT (i.e., the remainder of the SNW time).
At the end of the SNTT:
a) if the phy is both transmitting and receiving ALIGN (1) primitives, then it shall consider the SNW to be
valid; or
b) if the phy is not both transmitting and receiving ALIGN (1) primitives, then it shall consider the SNW to
be invalid.
The phy shall disable SSC (see SAS-4) during SNW-1, SNW-2, and Final-SNW.
5.11.4.2.3.3 SNW-3
SNW-3 allows the phys to exchange phy capabilities (see 5.8) to establish phy parameters used in
Train_Rx-SNW and Train_Tx-SNW.
Figure 76 defines SNW-3, including:
a) SNW time (SNWT);
b) rate change delay time (RCDT); and
c) speed negotiation transmit time (SNTT).
OOB idle is
transmitted for the
Each phy capabilities bit is one remainder of SNTT
SNW-3 bit cell time and contains
either COMWAKE (indicating one)
or OOB idle (indicating zero)
32 phy
Long time of
capabilities
negotiation idle
bits
Speed
negotiation
transmit time
(SNTT)
Rate change delay time (RCDT)
SNW time (SNWT)
Figure 76 – SNW-3
Value Transmitted
The phy may transmit with SSC enabled or disabled (see SAS-4) during SNW-3.
5.11.4.2.3.4 Train_Tx-SNW
Scrambled
Train_Tx pattern
training data
Figure 78 defines the Train_Tx-SNW while the phy is in the SAS packet mode.
Scrambled END_TRAIN
Train_Tx pattern
idle segment extended binary primitive
The Train_Tx-SNW contains transmitter training patterns formed by the Train_Tx pattern as defined in table
89.
Transmitter
Mode Description
training pattern
Sequence of:
1) pattern marker (see 5.11.4.2.3.4.3);
SAS dword 2) TTIU (see 5.11.4.2.3.5); and
3) 58 data dwords set to 00000000h that are transmitted
scrambled and 8b10b encoded.
Train_Tx pattern Sequence of:
1) pattern marker (see 5.11.4.2.3.4.3);
2) TTIU (see 5.11.4.2.3.5);
SAS packet
3) 59 SPL packet payloads containing scrambled idle segments;
and
4) one END_TRAIN.
The scrambler is the same as that defined for the link layer (see 6.8) and shall be initialized at the end of
RCDT. The scrambler shall not be reinitialized for the remainder of the Train_Tx-SNW.
The phy shall start transmitting Train_Tx patterns at the end of RCDT. The number of Train_Tx patterns
transmitted is determined by the time required for the phys to complete transmitter training.
After RCDT, the local phy’s receiver shall attempt to train the attached phy’s transmitter as follows:
a) if the local phy and the attached phy complete transmitter training within MTTT, then the phy shall
start Train_Rx-SNW (see 5.11.4.2.3.5). At the point the phy completes transmitter training the phy
shall consider the Train_Tx-SNW to be valid; or
b) if the local phy and the attached phy do not complete transmitter training within MTTT, then the phy
shall consider the Train_Tx-SNW to be invalid.
The phy shall not transmit primitives during Train_Tx-SNW.
During the Train_Tx-SNW the phy’s transmitter shall transmit a pattern marker (see figure 79) at the start of
each Train_Tx pattern as defined in table 89.
20 UI 20 UI
Differential high signal level Differential low signal level
Key:
Scrambled
TTIU
training data
Figure 80 shows the pattern marker while the phy is in the SAS packet mode.
20 UI 20 UI
Differential high signal level Differential low signal level
Key:
Scrambled END_TRAIN
TTIU
training data extended binary primitive
If the SAS dword mode is enabled, then during the Train_Tx-SNW if the phy’s receiver detects:
1) a differential high signal level for greater than or equal to 19 UIs and less than or equal to 24 UIs; and
2) a differential low signal level for greater than or equal to 19 UIs and less than or equal to 21 UIs,
then the phy's receiver shall consider the pattern marker to be valid (see figure 81).
If the SAS dword mode is enabled, then during the Train_Tx-SNW if the phy’s receiver detects:
a) a differential high signal level for greater than or equal to 13 UIs and less than 19 UIs;
b) a differential high signal level for greater than 24 UIs;
c) a differential low signal level for greater than or equal to 13 UIs and less than 19 UIs; or
d) a differential low signal level for greater than 21 UIs,
then the phy's receiver shall consider the pattern marker to be invalid.
If the phy’s receiver does not detect a pattern marker at the beginning of a Train_Tx pattern then the pattern
marker shall be invalid.
Valid
19 UI to 21 UI 19 UI to 21 UI Pattern
Differential high signal level Differential low signal level Marker PTT_PL
Key:
Scrambled
TTIU
training data
If the SAS packet mode is enabled, then during the Train_Tx-SNW if the phy’s receiver detects:
1) a differential high signal level for greater than or equal to 19 UIs and less than or equal to 21 UIs; and
2) a differential low signal level for greater than or equal to 19 UIs and less than or equal to 21 UIs,
then the phy's receiver shall consider the pattern marker to be valid (see figure 82).
If the SAS packet mode is enabled, then during the Train_Tx-SNW if the phy’s receiver detects:
a) a differential high signal level for greater than or equal to 13 UIs and less than 19 UIs;
b) a differential high signal level for greater than 21UIs;
c) a differential low signal level for greater than or equal to 13 UIs and less than 19 UIs; or
d) a differential low signal level for greater than 21 UIs,
then the phy's receiver shall consider the pattern marker to be invalid.
If the phy’s receiver does not detect a pattern marker at the beginning of a Train_Tx pattern then the pattern
marker shall be invalid.
Valid
19 UI to 21 UI 19 UI to 21 UI Pattern
Differential high signal level Differential low signal level Marker PTT_PL
Key:
Scrambled END_TRAIN
TTIU
training data extended binary primitive
TRAIN TRAIN_DONE
TRAIN_DONE primitive primitive
pattern
The Train_Rx-SNW contains receiver training patterns formed by TRAIN and TRAIN_DONE (see 6.2) as
defined in table 90.
Receiver training
Description
pattern
Sequence of:
1) TRAIN primitive sequence; and
TRAIN pattern
2) 58 data dwords set to 00000000h that are transmitted scrambled and 8b10b
encoded.
Sequence of:
TRAIN_DONE 1) TRAIN_DONE primitive sequence; and
pattern 2) 58 data dwords set to 00000000h that are transmitted scrambled and 8b10b
encoded.
The scrambler is the same as that defined for the link layer (see 6.8). If there is no Train_Tx-SNW, then the
scrambler shall be initialized at the end of RCDT. If there is a Train_Tx-SNW, then the scrambler shall be
initialized at the end of Train_Tx-SNW. The scrambler shall not be reinitialized for the remainder of the
Train_Rx-SNW.
If there is no Train_Tx-SNW, then the phy shall start transmitting TRAIN patterns at the end of RCDT. If a
Train_Tx-SNW occurs, then the phy shall start transmitting TRAIN patterns at the end of the transmitter
training (see 5.11.4.2.3.4.2). The first TRAIN pattern may have either starting disparity. The number of TRAIN
patterns transmitted is determined by the time required for the phy’s receiver to complete training and acquire
dword synchronization. The phy shall transmit at least one TRAIN pattern and shall transmit a minimum of
four TRAIN_DONE patterns:
a) if the phy achieves dword synchronization within the TLT, then, after completing transmission of the
current TRAIN pattern, the phy shall change from transmitting TRAIN patterns to transmitting
TRAIN_DONE patterns for the remainder of the Train_Rx-SNW window time (i.e., the remainder of
the SNW time); or
b) if the phy does not achieve dword synchronization within the TLT, then the phy shall continue
transmitting TRAIN patterns for the remainder of the MRTT (i.e., the remainder of the SNW time).
The phy shall not compare the received data characters to the expected transmitted data characters in the
receiver training pattern.
If the phy:
a) transmits four or more TRAIN_DONE patterns; and
b) receives a minimum of one TRAIN_DONE primitive sequence before MRTT,
then the phy shall:
a) after completing transmission of the current TRAIN_DONE pattern, transmit at least one more
TRAIN_DONE pattern, stop transmitting TRAIN_DONE patterns, and start transmitting dwords from
the link layer; and
b) consider the Train_Rx-SNW to be valid.
If the phy does not receive a TRAIN_DONE primitive sequence before MRTT and transmits four or more
TRAIN_DONE patterns, then it shall consider the Train_Rx-SNW to be invalid.
The Train_Rx-SNW contains receiver training extended binary primitives formed by PACKET_SYNC_LOST
and PACKET_SYNC (see 6.4).
The scrambler is the same as that defined for the link layer (see 6.8). If there is no Train_Tx-SNW, then the
scrambler shall be initialized at the end of RCDT.
If there is no Train_Tx-SNW, then the phy shall start transmitting PACKET_SYNC_LOSTs at the end of RCDT.
If a Train_Tx-SNW occurs, then the phy shall start transmitting PACKET_SYNC_LOSTs at the end of the
transmitter training (see 5.11.4.2.3.4.2). The number of PACKET_SYNC_LOSTs transmitted is determined by
the time required for the phy’s receiver to complete training and acquire SPL packet synchronization. The phy
shall transmit a minimum of one PACKET_SYNC_LOST and shall transmit a minimum of four
PACKET_SYNCs. If the phy’s receiver:
a) achieves SPL packet synchronization within the TLT, then, after completing transmission of the
current PACKET_SYNC_LOST, the phy shall change from transmitting PACKET_SYNC_LOSTs to
transmitting PACKET_SYNCs for the remainder of the Train_Rx-SNW window time (i.e., the
remainder of the SNW time); or
b) does not achieve SPL packet synchronization within the TLT, then the phy shall continue transmitting
PACKET_SYNC_LOSTs for the remainder of the MRTT (i.e., the remainder of the SNW time).
If the phy:
a) transmits four or more PACKET_SYNCs; and
b) receives a minimum of one PACKET_SYNC before MRTT,
then the phy shall:
a) after completing transmission of the current PACKET_SYNC:
1) transmit at least one more PACKET_SYNC;
The SAS speed negotiation sequence consists of a set of SNWs (see 5.11.4.2.3) in the order shown in figure
85.
SNW-1
valid and Yes
SNW-2 Final-SNW End
SNW-2
invalid
Start SNW-1 No
SNW-1 not
Yes
negotiation idle
and SNW-2
negotiation idle
Yes
No
SNW-3 No SNW-2 No
SNW-3 valid valid
Yes
Parity
good and a
No
commonly
supported
setting
Another
No commonly Yes Yes
supported
setting
Yes Transmitter
Train_Tx-SNW training
enabled
No
No Train_Tx- Yes Train_Rx- Yes
Train_Rx-SNW
SNW valid SNW valid
No
NOTE 11 - If SNW-1 is successful and the combination of SNW-1 and SNW-3 only is used, then the phy is not
able to reach SNW-3.
A phy shall detect whether the physical link is negotiation idle during SNW-1 and SNW-2, even if the phy does
not support that SNW. If the phy detects:
a) SNW-1 is not negotiation idle; and
b) SNW-2 is negotiation idle,
then the phy shall:
a) end the speed negotiation sequence without progressing to SNW-3 as shown in figure 85; and
b) transmit negotiation idle and ignore the SNW information received during SNW-3 as defined in the SP
state machine (see 5.14.4.3).
NOTE 12 - This avoids causing an attached phy compliant with SAS-1.1 to misdetect a SATA port selector.
Train_Rx-SNW and Train_Tx-SNW are based on the highest priority commonly supported setting that has not
been tried based on the outgoing and incoming SNW-3 supported settings bits (see 5.11.4.2.3).
If a Train_Rx-SNW or Train_Tx-SNW is invalid and there are additional, untried, commonly supported settings
exchanged during SNW-3, then a new Train_Rx-SNW and Train_Tx-SNW, if any, shall be performed based
on the next highest, untried, commonly supported settings.
A phy reset problem occurs:
a) after Final-SNW, if Final-SNW is invalid (see 5.14.4.9);
b) after SNW-3, if SNW-3 is valid and the parity is bad (see 5.14.4.11);
c) during a Train_Tx-SNW, if the MTTT timer expires or the Pattern Lock Lost Timeout timer expires and
there are no additional, untried, commonly supported settings (see 5.14.4.13); or
d) after a Train_Rx-SNW, if the Train_Rx-SNW is invalid and there are no additional, untried, commonly
supported settings (see 5.14.4.14).
Phy reset problems terminate the SAS speed negotiation sequence and are counted and reported in the PHY
RESET PROBLEM COUNT field in the SMP REPORT PHY ERROR LOG page (see 9.4.4.11) and the Protocol
Specific Port log page (see 9.2.8.1).
Figure 86 shows speed negotiation between a phy A and a phy B where both phys participate in:
1) SNW-1, supported by both phys;
2) SNW-2, supported by both phys;
3) SNW-3, supported by both phys; and
4) Train_Rx-SNW.
After phy A and phy B detect:
a) SNW-1 valid;
b) SNW-2 valid; and
c) SNW-3 valid,
the phys proceed to Train_Rx-SNW negotiating based on SNW-3 phy capabilities bits.
Train_Rx-SNW
SNW-1 SNW-2 SNW-3
(valid)
(valid) (valid) (valid)
Highest commonly
supported settings
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Key: Phy
ALIGN (0)s ALIGN (1)s
capabilities
Dwords
TRAIN pattern and transmitted by Long time
TRAIN_DONE pattern the link layer
Figure 86 – SAS speed negotiation sequence (both phys SNW-1 through Train_Rx-SNW with no
Train_Tx-SNW)
Figure 87 shows speed negotiation between a phy A and a phy B where both phys participate in:
1) SNW-1, supported by both phys;
2) SNW-2, supported by both phys;
3) SNW-3, supported by both phys;
4) Train_Tx-SNW; and
5) Train_Rx-SNW.
After phy A and phy B detect:
a) SNW-1 valid;
b) SNW-2 valid; and
c) SNW-3 valid,
the phys proceed to Train_Tx-SNW and Train_Rx-SNW based on SNW-3 phy capabilities bits.
Phy A Tx
Phy B Rx
RCDT SNTT RCDT SNTT RCDT SNTT RCDT < MTTT < MRTT
Phy A Rx
Phy B Tx
Key:
Phy
ALIGN (0)s ALIGN (1)s Long time
capabilities
Dwords
TRAIN pattern and
transmitted by Train_Tx pattern
TRAIN_DONE pattern
the link layer
Figure 87 – SAS speed negotiation sequence (both phys SNW-1 through Train_Rx-SNW with
Train_Tx-SNW)
Figure 88 shows speed negotiation between a phy A and phy B where phys participate in:
1) SNW-1, supported by phy A but not by phy B;
2) SNW-2, supported by both phys;
3) SNW-3, supported by phy A but not by phy B; and
4) Final-SNW negotiating 3 Gbit/s.
After phy A and phy B detect:
a) SNW-1 invalid;
b) SNW-2 valid; and
c) SNW-3 invalid,
the phys proceed to Final-SNW negotiating 3 Gbit/s.
Final-SNW
SNW-1 SNW-2 SNW-3
(valid)
(invalid) (valid) (invalid)
Negotiated
3 Gbit/s
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure 88 – SAS speed negotiation sequence (phy A: SNW-1 through SNW-3, phy B: SNW-2 only)
Figure 89 shows speed negotiation between a phy A and phy B where the phys participate in:
1) SNW-1, supported by phy B but not by phy A; and
2) SNW-2, supported by neither phy.
After phy A and phy B detect:
a) SNW-1 invalid; and
b) SNW-2 invalid,
phy A detects SNW-3 invalid.
SNW-1 SNW-2
(invalid) (invalid) Hot-plug
RCDT SNTT RCDT SNTT timeout COMINIT
Phy A Tx
Phy B Rx
Hot-plug
SNTT RCDT SNTT RCDT SNTT timeout COMINIT
Phy A Rx
Phy B Tx
Phy
ALIGN (0)s Long time
capabilities
Figure 89 – SAS speed negotiation sequence (phy A: SNW-3 only, phy B: SNW-1 only)
Figure 90 shows a speed negotiation sequence where phy B does not achieve dword synchronization during
Final-SNW, creating a phy reset problem. If this occurs, then the handshake is not complete and the phy reset
sequence is retried.
Final-SNW
SNW-1 SNW-2 SNW-3
(invalid)
(valid) (valid) (invalid)
negotiated
3 Gbit/s
Hot-plug
RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT timeout COMINIT
Phy A Tx
Phy B Rx
Hot-plug
RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT COMINIT
timeout
Phy A Rx
Phy B Tx
Figure 91 shows a speed negotiation sequence in which a phy reset problem is encountered in SNW-3
because the phys do not exchange the phy capabilities bits properly (e.g., due to a parity error).
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure 92 shows a speed negotiation sequence in which a phy reset problem is encountered in
Train_Rx-SNW because either phy does not complete training within MRTT. This example assumes that only
one commonly supported setting is exchanged in the phy capabilities bits.
Train_Rx-SNW
SNW-1 SNW-2 SNW-3
(invalid)
(valid) (valid) (valid)
highest commonly
supported rate
Hot-plug
RCDT SNTT RCDT SNTT RCDT SNTT RCDT MRTT COMINIT
timeout
Phy A Tx
Phy B Rx
Hot-plug
RCDT SNTT RCDT SNTT RCDT SNTT RCDT MRTT timeout COMINIT
Phy A Rx
Phy B Tx
Figure 93 shows two Train_Rx-SNWs, where supported settings bits are exchanged that contain more than
one commonly supported setting and the Train_Rx-SNW using the highest commonly supported setting is
invalid, so a second Train_Rx-SNW is performed using the next highest commonly supported setting.
Phy A Tx
Phy B Rx
RCDT SNTT RCDT SNTT RCDT SNTT RCDT MTT RCDT MRTT
Phy A Rx
Phy B Tx
If SNW-3 indicates commonly supported settings that require transmitter training (see table 72), then the local
phy and the attached phy shall exchange a sequence of Train_Tx patterns that cause each phy’s transmitter
to be trained. The local phy and the attached phy exchange information in TTIUs that:
a) indicate the current status of the local phy’s transmitter; and
b) specify adjustments to the attached phy’s transmitter.
The sequencing of adjustments to the transmitter is defined in the PTT state machines (see 5.18).
After RCDT during a Train_Tx-SNW, (see 5.11.4.2.3.4) the local phy and the attached phy both begin
transmitting and receiving Train_Tx patterns. The point at which a transmitter training pattern lock occurs at
the local phy’s receiver may occur before or after a transmitter training pattern lock occurs at the attached
phy’s receiver.
The PTT_T state machine (see 5.18.4.1) is informed:
a) that the local phy’s receiver is receiving TTIUs when the PTT_T1 state (see 5.18.4.3) receives a TTIU
Received message from the PTT_R2 state (see 5.18.5.4); and
b) that the attached phy’s receiver is receiving TTIUs when the PTT_T1 state receives a TTIU Received
(Attached Transmitter Initialized) message from the PTT_R2 state.
Figure 94 shows an example of an initial sequence of a local phy in which pattern lock occurs before the
attached phy achieves pattern lock.
TTI U TTIU TX _I
ining
Stop Tx Tra
T X_ IN IT= NIT= 1
1
s m i tted TTIU
an
TTIU Tr
T X_ INIT=
1
TTIU PTT_R1 TTIU TX _
T X_ IN IT= INIT=1
1 PTT_T1
nsmitted TTIU
TTIU TTIU Tr a T X_ INIT=
T X_ IN IT= Patter 1
1 n TTIU TX _IN
Locke IT=1
TTIU d
nsmitted TTIU
TTIU Tra
T X_ IN IT= T X_
1 INIT=
1
TTIU TTIU TX _I
TTIU NIT=1
T X_ IN IT=
TTIU R
1 ece ive TTIU
d nsmitted
TTIU TTIU
TX _IN
IT =1 TTIU Tr a T X_ INIT=
1
TX
Contr _INIT=0 TTIU TTIU TX_
ol/Sta Rece i INIT =0
tus TX _IN
ved
TTIU IT =1
nsmitted TTIU
TTIU TTIU Tr a TX_ INIT =
0
Rec ei
ved TTIU TX_IN
TX _IN
IT = 0 IT =0
nsmitte d TTIU
TTIU Tra TX _ INIT =
0
PTT_T2
Initial coefficient
Time settings set to
normal
ning
art T x trai
St
Initial TTIU T
coefficient Coeffici X _INIT=0
ent Sett
in
PTT_R2 settings not n ormal gs =
set to normal TTIU
Coeff T X_INIT=0
tted icient
r ansmi s
= norm ettings
TTIU T al
TT IU
ining Coefficie TX_ INIT=0
Tx tra nt Settin
gs NE
St op normal
TTI
Coef U TX_INIT =
ed ficien 0
ansmitt NE n t settings
All Coefficien
ts Not Ready TTIU Tr
orma
l
Figure 94 – Local phy achieves pattern lock before the attached phy achieves pattern lock
Figure 95 shows an example of an initial sequence of a local phy in which pattern lock occurs after the
attached phy achieves pattern lock.
TTIU T TIU TX _I
ining
Sto p T x Tra
T X_ INIT = NIT=1
1
TTIU
nsmitted
TTIU Tra
T X_IN
IT =1
TTIU TTIU TX_I
TX_INI NIT=1
T= 1 PTT_T1
PTT_R1 nsmitted TTIU
TTIU TTIU Tra TX_IN
IT =1
T
Contro X_INIT=0 T TIU TX _
INIT=1
l/Statu
s
nsmitted TTIU T
TTIU TTIU Tra X_IN IT =1
T
Contr X_INIT=0 T TIU TX_I
ol/Sta NIT=1
tus
TTIU smitted TTIU
Contro
TX_IN
IT =0 TTIU Tran T X_ INIT =
1
l/Stat T TIU TX_
us INIT=1
TTIU TTIU
T Pa ttern nsmitted
Contr X_INIT=0
ol/Sta Lock ed TTIU Tra TX_IN
IT =1
tus T TIU TX _INI
TTIU T=1
TTIU R nsmitted TTIU T
TX_IN
eceive
d TTIU Tra X_IN IT =1
IT =0
PTT_T2
Initial coefficient
settings set to
normal
TTIU TX _INIT=0
g
Start Tx Trainin Coefficient Set
tings =
Time normal TTIU
Coeffic TX_INIT=0
Initial tted ient se
ransmi = norm ttings
PTT_R2 coefficient TTIU T al
settings not
set to normal
TTIU T
raining
Stop Tx T Coefficie X_INIT=0
nt Settin
gs NE
normal
TTIU
d Coeff T X_IN
ans mitte ic ien IT=0
All Coefficients TTIU Tr t
NE n settings
Not Ready or ma
l
ing
x Train TTIU TX_INIT=0
Start T Coe fficient Se
Coefficient ttings = TTIU
settings set to normal Coeffi TX _INIT=0
ted cie nt se
normal ransmit = norm ttin gs
TTIU T al
Figure 95 – Local phy achieves pattern lock after the attached phy achieves pattern lock
During a Train_Tx-SNW (see 5.11.4.2.3.4) after the local phy and the attached phy have both completed
initialization (i.e., the local phy has received valid TTIUs and verified that the attached phy is receiving valid
TTIUs) the attached phy’s receiver begins training the local phy’s transmitter.
The attached phy’s receiver may request that the local phy’s transmitter coefficients be:
a) held at the current value;
b) set to a no_equalization value;
c) set to a reference_1 value;
d) set to a reference_2 value;
e) incremented (see table 80); or
f) decremented (see table 80).
The attached phy’s receiver only requests changes to a local phy’s transmitter coefficient if the local phy’s
transmitter is indicating a status of ready on all the local phy’s transmitter coefficients (see 5.18.3).
The local phy’s transmitter responds to the attached phy’s receiver request by adjusting the specified
coefficient as requested. After the specified coefficient is adjusted the local phy’s transmitter indicates the
completion of the coefficient adjustment by indicating to the attached phy’s receiver a status of:
a) update complete;
b) minimum; or
c) maximum.
After the attached phy’s receiver requests one or more of the local phy’s transmitter coefficients be updated,
the attached phy does not attempt to do analysis of a training pattern until after it has received a status of
update complete, maximum, or minimum for all the local phy’s transmitter coefficients that were updated (see
5.18.3).
The processing of the attached phy’s receiver coefficient adjustment requests is handled by the:
a) PTT_GC1 state machine (see 5.18.9);
b) PTT_GC2 state machine (see 5.18.10); and
c) PTT_GC3 state machine (see 5.18.11).
The processing of the local phy’s transmitter coefficient adjustments is handled by the:
a) PTT_SC1 state machine (see 5.18.6);
b) PTT_SC2 state machine (see 5.18.7); and
c) PTT_SC3 state machine (see 5.18.8).
Figure 96 shows an example of a handshake sequence in which the attached phy’s receiver requests two
increments to coefficient 1 where the response to the first increment is an update complete and the response
to the second increment is a maximum.
Figure 97 shows an example of a handshake sequence in which the attached phy’s receiver requests a
decrement to coefficient 1 where the response to the decrement is a minimum followed by a request for an
increment where the response to the increment is an update complete.
Time
Attached Phy Local Phy
PTT_R PTT_GC1 PTT_T PTT_R PTT_SC1 PTT_T
PTT_GC1_0 Ready 1
Ready Rea dy
1 Start
PTT_T2 PTT_SC1_1
A
Hold PTT_T2
A Hold
Hold Hold
Hold Hold
A Hold
Inc. Hold
In cre men
t Incremen t
In cre me nt
PTT_GC1_1
PTT_GC1_2 PTT_SC1_2
B
Upda te
PTT_R2 PTT_R2
Co mplete Update
Co mp lete Update 2
Upd ate Complet
Comple PTT_SC1_3 e
te Restart
2 Hold
Hold
Hold
PTT_GC1_0
Ready 3
Ready
Read y
3 Start
A
Hold
Hold
A Hold
Inc. Hold PTT_SC1_1
Incremen
t
Inc rement
Inc rement
PTT_GC1_1
PTT_SC1_2
B
PTT_GC1_2 Max .
Max imum 4
Maximum
Maximum
4 Res tart PTT_SC1_3
Hold
Hold
Hold
Ready
Ready
Time
Attached Phy Local Phy
PTT_R PTT_GC1 PTT_T PTT_R PTT_SC1 PTT_T
PTT_GC1_0 Ready 1
Rea dy
Re ady PTT_SC1_1
1 Start
PTT_T2
A PTT_T2
Hold
Hold
Hold
A Hold
Dec.
Decreme
nt Decrement
Decrement
PTT_GC1_1
PTT_GC1_2 PTT_SC1_2
B
PTT_R2 PTT_R2 Min.
Minimum 2
Minimum
Minimum PTT_SC1_3
2 Restart
Hold
Hold
Hold
PTT_GC1_0
Ready 3
Ready
Re ady
3 Start
In c. PTT_SC1_1
Increment
In crement
Increment
PTT_GC1_1
PTT_SC1_2
B
PTT_GC1_2 Update
Comple Update
te Up date 4
Upd ate Complete
Complete
Complet Resta rt PTT_SC1_3
e
4 Hold
Hold
Hold
Ready
Ready
Note 1 - Not shown in this figure is the attached phy s receiver PTT _R state machine sending coefficient 1
status (i.e., ready, update complete , minimum , or maximum ) to the attached SP receiver .
Note 2 - Not shown in this figure is the attached SP receiver or local SP receiver .
Note 3 - Not shown in this figure is the attached SP transmitter or local SP transmitter .
Figure 97 – Attached receiver handshake sequence (requesting one decrement and one increment to
coefficient 1)
The attached phy’s receiver only requests a local phy’s transmitter coefficients be set to a reference_1 value,
reference_2 value, or no_equalization value after the local phy’s transmitter indicates a status of ready for all
the local phy’s transmitter coefficients (see 5.18.3).
The local phy’s transmitter responds to the attached phy’s receiver request by adjusting all the coefficients to
the reference_1 value, reference_2 value, or no_equalization value. As each coefficient is adjusted the local
phy’s transmitter indicates the completion of the coefficient adjustment by indicating to the attached phy’s
receiver a status of:
a) update complete;
b) minimum; or
c) maximum.
After the attached phy’s receiver requests a local phy’s transmitter be set to its reference_1 value, reference_2
value, or no_equalization value the attached phy does not attempt to start the analysis of a training pattern
until it has received, for all the coefficients (see 5.18.3), a status of:
a) update complete;
b) minimum; or
c) maximum.
The processing of the attached phy’s receiver coefficient setting requests is handled by the:
a) PTT_GC1 state machine (see 5.18.9);
b) PTT_GC2 state machine (see 5.18.10); and
c) PTT_GC3 state machine (see 5.18.11).
The processing of the local phy’s transmitter coefficient setting is handled by the:
a) PTT_SC1 state machine (see 5.18.6);
b) PTT_SC2 state machine (see 5.18.7); and
c) PTT_SC3 state machine (see 5.18.8).
Figure 98 shows an example of an attached phy’s side and figure 99 shows an example of a local phy’s side
of a handshake sequence in which the attached phy’s receiver requests an increment to coefficient 1 followed
by a request from the attached phy’s receiver to set the local phy’s transmitter to its no equalization value. The
time sequencing between figure 98 and figure 99 is indicated using circled numbers and circled letters.
Attached Phy
S P receiver PTT_R PTT_GC1 PTT_T Time
1 R eady 1 PTT_R2 PTT_GC1_0
R eady 2 Ready 1
Ready 3 Ready 2
Start 1
Ready 3
PTT_GC1_1 PTT_T2
PTT_GC1_1
Get Current Coefficient 1
4 Hold 1 Hold 1
Ready 1 Hold 1 c
Ready 2 Ready 1 Ho ld 2
R eady 3 Ready 2 Hold 3
Ready 3 Start 1
PTT_GC1_0
6 Update C
om plete 1
Updat e C omple Update C om
te 2 plete 1
Update Com ple U pdate C om
te 3 plete 2
Updat e C om
pl ete 3
All Coeffi cients Not Rea COEFF ICIENT e
dy SETTINGS =
Attached Phy s Transmitter Training (Start) normal
Hold 1
7 Re ady 1
R eady 2 Re ady 1
U pdate Com Ready 2
pl ete 3
Update Com ple Start 1
te 3 PTT_GC1_1
Local Phy
a Increment 1 PTT_R PTT_SC1 PTT_T SP transmitter
Hold 2 Incremen t 1 Ready 1 1
PTT_SC1_1 Ready 2
Hold 3
Rea dy 3
PTT_SC1_2 Adjust Coefficient 1
Update Complete 1
Update Complete 1
Update Complete 1 Update Complete 2
Maximum 2 1
b Hol d 1 Maximum 2
Ready 3
Hold 2 PTT_SC1_3 Ready 3
Ho ld 1
Hol d 3
Ready 1 Re ady 1
Maximum 2 Ready 1 3
Ready 3 Maximum 2
PTT_R2
Ready 3
PTT_SC1_1
c Ho ld 1
Hold 2 Rea dy 1
Re ady 2 Ready 1 4
Hold 3 Ho ld 1
Ready 3 Ready 2
Ready 3
d CO EFFIC
IEN T
SETTING CO EF FIC
S = IEN T PTT_T2
refer ence 1 SETTIN GS =
reference 1
Adjust Coefficient 1
PTT_SC1_2
Update Complete 1
Update Complete 1
Update Complete 1 Update Complete 1 5
Ready 2
Ready 2
Ready 3
Ready3
PTT_SC1_3
Re ady 1 Read y 1
Re ady 2 Ready 1
7
Time Update Co mp Ready 2
lete 3 Upd ate Com
plete 3
Figure 100 shows an example of a local phy’s receiver completion of training before the attached phy’s
receiver indicates it has completed training.
TTIU TRA
IN_COM
P=1
PTT_R2 PTT_T3 TTIU
nsmitted
TRAIN
TTIU Tra Co ntro _COMP=1
l/Sta tu
TTIU TRAIN s
_COMP=
1 TTIU
TRAIN
Time n sm itt ed Contro _COMP=1
TTIU Tra l/Statu
TTIU TRA s
IN_COMP
=1 TTIU
ra n sm itted TRAIN
Contr _COMP=1
TTIU T ol/Sta
TTIU TRAI tu s
N_COMP
=1 TTIU
ns m itt ed TRAIN
Contro _COMP=1
TTIU TTIU Tra l/Statu
TRAIN
TTIU TRA s
IN_COMP
_ C
Co ntr OMP=1 =1 TTIU
o l/Sta TTIU sm itt ed TRAIN
tus
TTIU Tra
n Co ntro _COM P=1
TRAIN_C
OMP = l/Statu
TTIU 1 TTIU TRAI s
T RAIN N_COM
_CO P=1
Con tr MP=1 TTIU
ol/Sta TTIU ns mitt ed T RAIN
Contro _COMP=1
tu s TRAIN
_COM
TTIU Tra l/Statu
TTIU =1
P TTIU TRAI s
N_COM
T RA P=1
IN_CO
Con tro MP= TTIU
1 itt ed TRAIN
l/Stat TTIU ns m Co ntro _COM P=1
u s Loca l
P TTIU Tra l/Statu
Trans hy s
TRAIN
_COM
P= 1 s
mitter
Trainin
Comp g
lete
itter
Transm g
Trainin
lete
PTT_R0 Comp PTT_T0
Figure 100 – Local phy’s receiver indicates completion of training before the attached phy’s receiver
completes training
Figure 101 shows an example of an attached phy’s receiver indication of completion of training before the
local phy’s receiver completes training.
PTT_R0 PTT_T0
Figure 101 – Attached phy’s receiver indicates completion of training before the local phy’s receiver
completes training
If the PTT_R state machine (see 5.18.5.4.1) detects an unsupported or reserved value in a TTIU, then the
PTT_R state machine sends a:
a) Transmit Error Response message to the PTT_T state machine; and
b) Cancel message to the PTT_SC1 state machine, PTT_SC2 state machine, and PTT_SC3 state
machine.
If the PTT_T2 state (see 5.18.4.4.4) or PTT_T3 state (see 5.18.4.5.5) receives a Transmit Error Response
message, then that state:
1) builds an Error Response TTIU;
2) transmits an Error Response TTIU; and
3) transmits a Control/Status TTIU.
If the PTT_R2 state machine (see 5.18.5.4.1) receives an Error Response TTIU, then the PTT_R state
machine sends a:
a) Transmitter Control Failed message to the SP receiver; and
b) Cancel message to the PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3 state
machine.
Figure 102 shows an example of a local phy’s PTT_R state machine processing the receipt of an invalid TTIU.
PTT_R2
PTT_T2
PTT_R2
C ont rol/St
atus
T TI U (in
valid) Transm it Er
ro r Error
R es
E rror Ca po nse Respon
se
2
nc T TIU
R espon el
2 se Contro l/S
TTIU A tatus b
Ca TT IU (i nv T ransm it
nc e alid) Error
l a Invalid Control/Status Respon se E rro r
Ca Respons 3
Error TTIU discarded nc e
R espon el TT IU
3 se C ont rol/S
T TIU A ta tu b
Ca T TI U (in va s Transm it E
nc lid) rror
el Error
a R esp onse R espo n 4
E rror Ca se
Res pon nc T TIU
se el
4
TT IU A C ont rol/ b
Ca Status
nc T TI U (in C ontrol
V al id el valid) Transm it Er /Status 5
a ror TTIU (va
C ont rol/S R esponse lid )
5 tatus Ca
TT IU C ontrol/S nc E rro r
ta tu s
TTIU (val el Re spons 6
Error id) e
Re spon b TT IU
6 se
TT IU A Invalid
Ca Control/Status Contro l/S
nc tatu 7
el
Co ntrol a TTIU TTIU (val s
/Status id)
discarded
7 TTIU (valid )
Key:
A Transmitter Control Failed message to local SP receiver
Since SATA and SAS signal cable connectors do not include power lines, it is not possible to detect the
physical insertion of the signal cable connector onto a plug. It may also not be possible to detect physical
insertion of a device in non-cabled environments. As a result, every time a phy reset sequence is originated:
a) expander phys that are enabled but not active shall originate a new phy reset sequence repeatedly,
with no more than a hot-plug timeout (see table 84 in 5.11.1) between each attempt, until a speed
negotiation sequence completes without error;
b) SAS initiator phys should originate a new phy reset sequence after every hot-plug timeout; and
c) SAS target phys should not originate a new phy reset sequence after their first attempt.
Figure 103 shows how two phys complete the phy reset sequence if the phys are not attached at power on. In
this example, phy A and phy B are attached some time before phy B’s second hot-plug timeout occurs. Phy
B’s OOB detection circuitry detects a COMINIT (see SATA) after the attachment and therefore phy B transmits
COMSAS, since it has both transmitted and received a COMINIT. Upon receiving COMSAS (see SATA), phy
A transmits its own COMSAS. The SAS speed negotiation sequence follows.
Hot-plug
COMINIT Hot-plug COMINIT COMINIT COMSAS
Timeout Timeout
Phy A Tx
A
Phy A Rx
B
Incomplete COMSAS
Hot-plug COMINIT
Timeout
Phy B Tx
B
Time y
Phy B Rx
A
Key:
A = SAS phy A power on COMINIT COMSAS
B = SAS phy B power on
Time y : SAS phy A attached to SAS phy B
Time z : SAS phy A and SAS phy B start the SAS speed negotiation sequence
5.12 APTA
If SAS packet mode is enabled, optical mode is disabled, and there is no active cable assembly attached to
the phy, then APTA is a method that may be used to adjust SP transmitter coefficients without requiring a phy
reset sequence (see 5.11). APTA binary primitives are exchanged between attached phys to request changes
to the SP transmitter coefficient settings and to report SP transmitter status without causing a reset sequence.
To allow the SP receiver to adapt to changes in the SP transmitter settings, the time between each change
request is at least 1 ms (see 5.19.6). By making only one change request at each time and allowing the SP
receiver to adjust to each change over a long period of active data bits, the SP receiver equalizes itself to the
revised transmitted signal before the SP receiver makes a calculation for the next change request, if any.
Figure 104 shows the exchange of APTA binary primitives to initiate, change, and complete the SP transmitter
adjustment.
5.13.1 Transitioning from the active phy power condition to a low phy power condition
See 6.13 for the sequence to transition from the active phy power condition to a low phy power condition.
5.13.2 Transitioning from a low phy power condition to the active phy power condition
Figure 105 shows the sequence to transition from a low phy power condition to the active phy power
condition.
Phy A Tx
Phy B Rx
Active phy
Negotiation
power condition
idle COMWAKE
established
Phy A Rx
Phy B Tx
Key:
Dwords
ALIGN (0)s ALIGN (1)s transmitted by Long time
the link layer
Figure 106 shows examples of responses to the following events that may occur during the transition from a
low phy power condition to the active phy power condition:
a) no response to COMWAKE within a hot plug timeout; and
b) power on occurs after COMWAKE and before the hot plug timeout.
COMWAKE COMINIT
Hot-plug
timeout
Phy A Tx/
Phy B Rx
Phy A Rx/
Phy B Tx
Time
Sequence 2: power on occurs after COMWAKE and before the hot plug timeout
COMWAKE
Phy A Tx/
Phy B Rx
Phy A Rx/ B
Phy B Tx
Time
Key:
B = SAS phy B power on
The sequence for a no response to COMWAKE within a hot plug timeout depicted in sequence 1 in figure 106
proceeds as follows:
1) phy A transmits COMWAKE;
2) phy A detects no COMWAKE within a hot plug timeout; and
3) phy A transmits an OOB sequence.
The sequence for a power on occurs after COMWAKE and before the hot plug timeout depicted in sequence
2 in figure 106 proceeds as follows:
1) phy A transmits COMWAKE;
2) phy A detects an OOB sequence from phy B within a hot plug timeout; and
3) phy A transmits an OOB sequence.
The SP state machine controls the phy reset sequence. This state machine consists of the following sets of
states:
a) OOB sequence (OOB) states;
b) SAS speed negotiation (SAS) states;
c) SAS phy power condition (PS) states; and
d) SATA host emulation (SATA) states.
This state machine consists of the following states:
a) SP0:OOB_COMINIT (see 5.14.3.2) (initial state);
b) SP1:OOB_AwaitCOMX (see 5.14.3.3);
c) SP2:OOB_NoCOMSASTimeout (see 5.14.3.4);
d) SP3:OOB_AwaitCOMINIT_Sent (see 5.14.3.5);
e) SP4:OOB_COMSAS (see 5.14.3.6);
f) SP5:OOB_AwaitCOMSAS_Sent (see 5.14.3.7);
g) SP6:OOB_AwaitNoCOMSAS (see 5.14.3.8);
h) SP7:OOB_AwaitCOMSAS (see 5.14.3.9);
i) SP8:SAS_Start (see 5.14.4.3);
j) SP9:SAS_WindowNotSupported (see 5.14.4.4);
k) SP10:SAS_AwaitALIGN (see 5.14.4.5);
l) SP11:SAS_AwaitALIGN1 (see 5.14.4.6);
m) SP12:SAS_AwaitSNW (see 5.14.4.7);
n) SP13:SAS_Pass (see 5.14.4.8);
o) SP14 SAS_Fail (see 5.14.4.9);
p) SP15:SAS_PHY_Ready (see 5.14.4.10);
q) SP16:SATA_COMWAKE (see 5.14.6.2);
r) SP17:SATA_AwaitCOMWAKE (see 5.14.6.3);
s) SP18:SATA_AwaitNoCOMWAKE (see 5.14.6.4);
t) SP19:SATA_AwaitALIGN (see 5.14.6.5);
u) SP20:SATA_AdjustSpeed (see 5.14.6.6);
v) SP21:SATA_TransmitALIGN (see 5.14.6.7);
w) SP22:SATA_PHY_Ready (see 5.14.6.8);
x) SP23:SATA_PM_Partial (see 5.14.6.9);
y) SP24:SATA_PM_Slumber (see 5.14.6.10);
z) SP25:SATA_PortSel (see 5.14.7.2);
aa) SP26:SATA_SpinupHold (see 5.14.8.2);
ab) SP27:SAS_Settings (see 5.14.4.11);
ac) SP28:SAS_TrainSetup (see 5.14.4.12);
ad) SP29:SAS_Train_Rx (see 5.14.4.14);
ae) SP30:SAS_TrainingDone (see 5.14.4.15);
af) SP31:SAS_PS_Low_Phy_Power (see 5.14.5.2);
ag) SP32:SAS_PS_ALIGN0 (see 5.14.5.3);
ah) SP33:SAS_PS_ALIGN1 (see 5.14.5.4);
ai) SP34:SAS_Train_Tx (see 5.14.4.13); and
aj) SP35:SAS_PS_Sync (see 5.14.5.5).
This state machine receives the following requests from the management application layer or a layer outside
the scope of this standard:
a) Management Reset from the management application layer;
b) Disable Phy from the management application layer;
c) Transmit SATA Port Selection Signal from the management application layer;
d) Enter Partial request from SATA link layer, if any;
e) Enter Slumber from the SATA link layer, if any; and
This state machine shall maintain the timers listed in table 91.
Await ALIGN Timeout timer Await ALIGN timeout (see table 85)
The SP state machine shall maintain the state machine variables defined in table 92.
State machine
Description
variable
This state machine variable is used to determine whether a Management Reset
request has been received. Any SP state that receives a Management Reset request
shall set this state machine variable to one before making a transition to the
MgmtReset
SP0:OOB_COMINIT state (see 5.14.3.2). Any SP state that receives a power on or a
hard reset shall set this state machine variable to zero before making a transition to
the SP0:OOB_COMINIT state.
This state machine variable is used to determine the current SNW (e.g., SNW-1,
Current SNW
SNW-2, SNW-3, Final-SNW, or Unsupported Phy Attached).
If the phy status is available through any of the following:
a) the SMP DISCOVER response (see 9.4.4.10);
b) the SMP DISCOVER LIST response (see 9.4.4.15);
ResetStatus c) the Phy Control And Discover mode page (see 9.2.7.5); or
d) the Protocol Specific Port log page (see 9.2.8.1),
then this state machine variable is used to determine the NEGOTIATED PHYSICAL LINK
RATE field and/or the NEGOTIATED LOGICAL LINK RATE field.
Commonly Supported If the phy supports SNW-3, then this state machine variable contains the commonly
Settings supported settings.
If the phy supports SATA port selectors, then this state machine variable is used to
determine whether a COMWAKE Detected message was received in the
COMWAKE_Received
SP0:OOB_COMINIT state or the SP1:OOB_AwaitCOMX state since the last time the
SP0:OOB_COMINIT state was entered.
If the phy supports low phy power conditions, then this state machine variable is used
to determine:
SASPhyPwrCond a) the current phy power condition (see 4.11 and 5.7.5); and
b) the PHY POWER CONDITION field in the SMP DISCOVER response (see table
331).
The SP transmitter transmits OOB signals, dwords, and SPL packets on the physical link based on messages
from the SP state machine (see 5.14).
See 5.18.2 for SP transmitter requirements and see 5.18.3 for SP receiver requirements while PTT state
machines are processing Train_Tx-SNW.
The Phy Wakeup Complete message shall be sent after the SP transmitter becomes active as a result of
receiving a Phy Wakeup message.
The SP transmitter receives the following messages from the SP state machine:
a) Transmit COMINIT;
b) Transmit COMSAS;
c) Transmit COMWAKE;
d) Transmit SATA Port Selection Signal;
e) Transmit D10.2;
f) Set Physical Link Rate with an argument specifying the physical link rate (e.g., 1.5 Gbit/s, 3 Gbit/s,
6 Gbit/s, 12 Gbit/s, or 22.5 Gbit/s);
The SP receiver receives the following messages from the SP state machine:
a) Set Physical Link Rate with an argument specifying the physical link rate (e.g., 1.5 Gbit/s, 3 Gbit/s,
6 Gbit/s, 12 Gbit/s, or 22.5 Gbit/s);
b) Receive Phy Capabilities Bits;
c) Start Rx Training;
d) Abort Rx Training;
e) Enable OOB Detection;
f) Disable OOB Detection;
g) Enter Partial Phy Power Condition; and
h) Enter Slumber Phy Power Condition.
The SP receiver receives the following messages from the SP_DWS state machine (see 5.15):
a) Sync Acquired; and
b) Sync Lost.
The SP receiver sends the following messages to the SP state machine indicating OOB signals, dwords, and
SPL packets received from the physical link:
a) COMINIT Detected;
b) COMSAS Detected;
c) COMWAKE Detected;
d) COMSAS Completed;
e) COMWAKE Completed;
f) ALIGN Received with an argument indicating the specific type (e.g., ALIGN Received (0));
g) Phy Capabilities Bits Received with arguments indicating the supported settings bits received and
either Good Parity or Bad Parity;
h) Rx Training Completed;
i) TRAIN_DONE Received;
j) PACKET_SYNC Received;
k) PACKET_SYNC_LOST Received;
l) SPL Packet Received; and
m) Dword Received.
The SP receiver sends the following messages to the SP_ReSync state machine indicating, dwords, and SPL
packets received from the physical link:
a) PACKET_SYNC Received; and
b) PACKET_SYNC_LOST Received.
If the phy is in the SAS dword mode, then the ALIGN Received message, Dword Received message, and
TRAIN_DONE Received message are only sent after the SP_DWS state machine has achieved dword
synchronization (i.e., a Sync Acquired message is received).
For SATA speed negotiation, the ALIGN Received (0) message includes an argument containing the physical
link rate at which the ALIGN (0) primitives were detected. For SAS speed negotiation, only ALIGNs at the
physical link rate specified by the last Set Physical Link Rate message received by the SP receiver cause
ALIGN Received messages.
If the attached SAS phy is adjusting the local SP transmitter coefficients, then the SP receiver sends the
following messages to the PAPTA_A_L state machine to request coefficient changes to the local SAS phy’s
SP transmitter:
a) Received APTA_ADJUST with an argument of Start, Complete, or Terminate;
b) Received APTA_COEFFICIENT_1 with an argument of Increment or Decrement;
c) Received APTA_COEFFICIENT_2 with an argument of Increment or Decrement;
d) Received APTA_COEFFICIENT_3 with an argument of Increment or Decrement;
e) Received APTA_COEFFICIENTS_1_2 with an argument of Increment or Decrement; and
f) Received APTA_COEFFICIENTS_2_3 with an argument of Increment or Decrement.
If the local SAS phy is adjusting the attached SP transmitter coefficients, then the SP receiver sends the
following messages to the PAPTA_L_A state machine to report status of the local SAS phy’s SP transmitter:
a) Received APTA_ADJUST with an argument of Ready or Terminate;
b) Received APTA_COEFFICIENT_1 with an argument of Updated, Maximum, or Minimum;
c) Received APTA_COEFFICIENT_2 with an argument of Updated, Maximum, or Minimum;
d) Received APTA_COEFFICIENT_3 with an argument of Updated, Maximum, or Minimum;
e) Received APTA_COEFFICIENTS_1_2 with an argument of Updated, Maximum, or Minimum; and
f) Received APTA_COEFFICIENTS_2_3 with an argument of Updated, Maximum, or Minimum.
The SP transmitter relationship to other transmitters is defined in 4.3.2. The SP receiver relationship to other
receivers is defined in 4.3.3.
Figure 107 shows the OOB sequence states. These states are indicated by state names with a prefix of OOB.
A) set the ATTACHED SATA PORT SELECTOR bit to one in the SMP DISCOVER response; and
B) send a SATA Port Selector Change confirmation to the link layer.
This state machine waits for receipt of a COMINIT Transmitted message and/or a COMINIT Detected
message.
Upon entry into this state, this state shall initialize and start the Hot-Plug Timeout timer if this phy is:
a) an expander phy; or
b) an initiator phy or target phy implementing the Hot-Plug Timeout timer.
If the phy supports SATA port selectors and this state receives a COMWAKE Detected message, then this
state shall:
a) if the ResetStatus state machine variable is not set to PHY_RESET_PROBLEM, SPINUP_HOLD, or
UNSUPPORTED_PHY_ATTACHED, then set the ResetStatus state machine variable to
PORT_SELECTOR;
b) set the COMWAKE_Received state machine variable to one; and
c) if the phy is an SMP target phy and the ATTACHED SATA PORT SELECTOR bit is set to zero in the SMP
DISCOVER response (see 9.4.4.10), then:
A) set the ATTACHED SATA PORT SELECTOR bit to one in the SMP DISCOVER response; and
B) send a SATA Port Selector Change confirmation to the link layer.
Upon entry into this state, this state shall initialize and start the Hot-Plug Timeout timer if this phy is:
a) an expander phy; or
b) an initiator phy or target phy implementing the Hot-Plug Timeout timer.
Upon entry into this state, this state shall send a Transmit COMSAS message to the SP transmitter.
This state waits for receipt of a COMSAS Transmitted message and/or a COMSAS Detected message.
If the phy supports SATA port selectors and this state receives a COMWAKE Detected message, then this
state shall:
a) if the ResetStatus state machine variable is not set to PHY_RESET_PROBLEM, SPINUP_HOLD, or
UNSUPPORTED_PHY_ATTACHED, then set the ResetStatus state machine variable to
PORT_SELECTOR; and
b) if the phy is an SMP target phy and the ATTACHED SATA PORT SELECTOR bit is set to zero in the SMP
DISCOVER response (see 9.4.4.10), then:
A) set the ATTACHED SATA PORT SELECTOR bit to one in the SMP DISCOVER response; and
B) send a SATA Port Selector Change confirmation to the link layer.
This state machine waits for a COMSAS Completed message, which indicates that COMSAS has been
received.
Upon entry into this state, this state shall initialize and start the COMSAS Detect Timeout timer.
The state machine shall set the ATTACHED SATA DEVICE bit to one in the SMP DISCOVER response (see
9.4.4.10) before the transition.
Figure 108 shows the SAS speed negotiation states, in which the phy has detected that it is attached to a SAS
phy or expander phy rather than a SATA phy, and performs the SAS speed negotiation sequence. These
states are indicated by state names with a prefix of SAS.
SAS speed negotiation states use negotiation idle at the beginning of each SNW.
If D.C. mode is enabled, then a negotiation idle consists of the transmission of D.C. idle.
If optical mode is enabled, then see SAS-4 for the optical mode negotiation idle definition.
SP (phy layer) state machine - SAS speed negotiation states Power on,
(to all states, hard reset,
SP10:SAS_ SP11:SAS_ causing Management
AwaitALIGN AwaitALIGN1 transition to Reset, or
Transmit SP0: Disable Phy
ALIGN Received (0) OOB_COMINIT)
ALIGN ALIGN (1)
ALIGN Received (1) Received (1)
DWS Lost SP_DWS
SP_DWS Start DWS COMINIT (to all states, Transmit
Detected Start DWS SP_DWS causing SATA Port
SP_DWS DWS Lost
Transmit transition to Selection
SP0:OOB_COMINIT SP0:OOB_COMINIT SP25: Signal
ALIGN (0)
SATA_PortSel)
COMINIT
SP8:SAS_Start Detected SP13:SAS_Pass
COMINIT
Detected COMINIT Detected
SP0: DWS Lost SP_DWS
OOB_COMINIT SP12:SAS_
AwaitSNW Start DWS SP_DWS
SP1: COMINIT
Detected SP0:OOB_COMINIT
OOB_AwaitC
Start SL_IR Transmit ALIGN (1)
OMX
Receiver
SP6:
OOB_AwaitNo
COMSAS
SP27: Stop SNTT Start DWS SP_DWS
SAS_Settings Transmit DWS Lost SP_DWS
Set Physical ALIGN (1) SP0: OOB_COMINIT
Link Rate
Set SSC SP14:SAS_Fail
SP27: SAS_Settings
Receive Phy
Capabilities SP9:SAS_
Bits WindowNotSupported SP1:
OOB_AwaitCOMX
SP15:SAS_PHY_Ready
SP0:OOB_COMINIT
Phy Layer Ready (SAS) SP31:SAS_PS_Low_Phy_Power
Manage Phy Power Conditions Enable APTA PAPTA
DWS Lost SP_DWS
COMINIT Detected
DWS Reset SP_DWS
Start DWS SP_DWS
SP33:SAS_PS_Align1 Stop DWS SP_DWS
SP30:SAS_TrainingDone PS Reset SP_ReSync
Stop Resync SP_ReSync
Transmit PACKET_SYNC Enable SP_ReSync SP_ReSync
Enable APTA Start PS SP_PS
Figure 108 – SP (phy layer) state machine - SAS speed negotiationSP_PS
states
Stop PS
Figure 109 shows the SAS speed negotiation states related to SNW-3, Train_Tx-SNW, and Train_Rx-SNW.
SP (phy layer) state machine – SAS speed negotiation states (cont.) Power on,
(to all states, hard reset,
SP28:SAS_ Management
SP27:SAS_ causing
TrainSetup Reset, or
Settings transition to
Phy Capabilities Disable Phy
SP0:
Bits Transmitted OOB_COMINIT)
Transmit OOB Idle
COMINIT Detected SP0:OOB_COMINIT
Transmit (to all states, Transmit
Phy Capabilities Bits causing SATA Port
transition to Selection
SP8: SAS_Start SP8:SAS_START SP25: Signal
SP1:OOB_AwaitCOMx SATA_PortSel)
Phy Capabilities
Bits Received COMINIT Detected SP0:OOB_COMINIT
Figure 109 – SP (phy layer) state machine - SAS speed negotiation states for SNW-3 and
Train_Rx-SNW and Train_Tx-SNW
This is the state in which the SAS speed negotiation sequence begins.
Upon entry into this state, this state shall initialize and start the RCDT timer.
If this state is entered from SP6:OOB_AwaitNoCOMSAS, then the Current SNW state machine variable shall
be set to SNW-1. If this state is not entered from SP6:OOB_AwaitNoCOMSAS, then the Current SNW state
machine variable shall be set to:
a) SNW-2 if the Current SNW state machine variable is set to SNW-1;
b) SNW-3 if the Current SNW state machine variable is set to SNW-2, and either SNW-1 is invalid or
SNW-2 is valid;
c) Final-SNW if the Current SNW state machine variable is set to SNW-2, SNW-1 is valid, and SNW-2 is
invalid;
d) Final-SNW if the Current SNW state machine variable is set to SNW-3, SNW-3 is invalid, and SNW-2
is valid; or
e) Unsupported Phy Attached if the Current SNW state machine variable is set to SNW-3, SNW-3 is
invalid, and SNW-2 is invalid.
After the Current SNW state machine variable is updated, if:
a) the Current SNW state machine variable is not set to Unsupported Phy Attached; and
b) the SNW specified by the Current SNW state machine variable is supported,
then this state shall send the messages specified in table 93 to the SP transmitter and SP receiver.
Current SNW
state Other
Messages sent to SP transmitter Messages sent to SP receiver
machine conditions
variable
SNW-3 none Set SSC (On) or Set SSC (Off) Receive Phy Capabilities Bits
SNW-1 was
valid and Set Physical Link Rate (1.5 Gbit/s)
Set Physical Link Rate (1.5 Gbit/s)
SNW-2 was and Set SSC (Off)
Final-SNW invalid
This transition shall occur after the RCDT timer expires if:
a) the Current SNW state machine variable is not set to SNW-3; and
b) the SNW indicated by the Current SNW state machine variable is supported.
This transition shall occur after the RCDT timer expires if:
a) the Current SNW state machine variable is set to SNW-3; and
b) SNW-3 is supported.
Upon entry into this state, this state shall initialize and start the SNTT timer.
This state shall repeatedly send Transmit ALIGN (1) messages to the SP transmitter.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
This state shall repeatedly send Transmit ALIGN (1) messages to the SP transmitter.
If the Current SNW state machine variable is set to Final-SNW, then this state shall send a Start SL_IR
Receiver confirmation to the link layer.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
This state waits for the SNTT timer to expire or for a Stop SNTT request.
If this state receives a Stop SNTT request, then this state shall stop the SNTT timer.
This state shall repeatedly send Transmit ALIGN (1) messages to the SP transmitter.
This state determines if:
a) another SAS SNW is required; or
b) the SAS speed negotiation sequence is complete.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
While in this state, dwords and SPL packets from the link layer are transmitted at the negotiated physical link
rate (i.e., the rate established in the previous SNW).
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
If a Manage Phy Power Conditions (Stop DWS) request is received, then this state shall send a Stop DWS
message to the SP_DWS state machine.
If a Manage Phy Power Conditions (Stop PS) request is received, then this state shall send a Stop PS
message to the SP_PS state machine and a Stop Resync message to the SP_ReSync state machine.
If the SP transmitter is transmitting at 22.5 Gbit/s, and an Enable APTA request is received, then this state
shall send an Enable APTA message to the PAPTA state machines.
If optical mode is enabled or D.C. mode is enabled, then this transition shall occur after receiving:
a) a DWS Lost message, if this state does not send a Start DWS message;
b) a DWS Lost message followed by a COMINIT Detected message, if this state does not send a Start
DWS message;
c) a DWS Reset message; or
d) a PS Reset message.
If optical mode is enabled, then this transition shall not occur after receiving a COMINIT Detected message:
a) before receiving a DWS Lost message; or
b) after sending a Start DWS message.
This transition shall occur after the SNTT timer expires if:
a) a Phy Capabilities Bits Received message is received with an argument of Bad Parity; or
b) no commonly supported settings exist after the Commonly Supported Settings state machine variable
is set as a result of receiving a Phy Capabilities Bits Received message.
Before the transition, this state shall:
a) if a Phy Capabilities Bits Received message is received with an argument of Bad Parity, then set the
ResetStatus state machine variable to PHY_RESET_PROBLEM; or
b) if no commonly supported settings exist after the Commonly Supported Settings state machine
variable is set, then set the ResetStatus state machine variable to
UNSUPPORTED_PHY_ATTACHED.
5.14.4.12 SP28:SAS_TrainSetup
If the phy is in the SAS dword mode, then this transition shall occur if:
a) the TLT timer has not expired;
b) this state receives an Rx Training Completed message;
c) dword synchronization is acquired; and
d) this state receives a TRAIN Received message or a TRAIN_DONE Received message.
If the phy is in the SAS dword mode and a TRAIN_DONE Received message was received, then the
transition shall include a TRAIN_DONE Received argument.
If the phy is in the SAS packet mode, then this transition shall occur if:
a) the TLT timer has not expired;
b) this state receives an Rx Training Completed message; and
c) this state receives a PACKET_SYNC_LOST Received message or a PACKET_SYNC Received
message.
If the phy is in the SAS packet mode and a PACKET_SYNC Received message was received, then the
transition shall include a PACKET_SYNC Received argument.
Before the transition, this state shall stop the TLT timer.
If the phy is in the SAS dword mode, then this state shall repeatedly send Transmit TRAIN_DONE Pattern
messages to the SP transmitter.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
If the phy is in the SAS packet mode, then this state shall repeatedly send Transmit PACKET_SYNC
messages to the SP transmitter.
This state waits for the MRTT timer to expire, TRAIN_DONE Received message, or a PACKET_SYNC
Received message from the receiver.
If this state receives a TRAIN_DONE Received message or PACKET_SYNC Received message, then this
state shall stop the MRTT timer.
This state shall send a Start SL_IR Receiver confirmation to the link layer when a TRAIN_DONE Received
message or PACKET_SYNC Received message is received.
A phy reset problem occurs if:
a) a TRAIN_DONE Received message or PACKET_SYNC Received message is not received before
the MRTT timer expires; and
b) the Commonly Supported Settings state machine variable does not contain additional commonly
supported settings.
This transition shall occur if the phy is in the SAS dword mode and this state receives at least four
TRAIN_DONE Pattern Transmitted messages and either:
a) receives:
1) a TRAIN_DONE Received message before the MRTT timer expires; and
2) at least one TRAIN_DONE Pattern Transmitted message;
or
b) was entered with a TRAIN_DONE Received argument.
This transition shall occur if the phy is in the SAS packet mode and this state receives at least four
PACKET_SYNC Transmitted messages and either:
a) receives:
1) a PACKET_SYNC Received message before the MRTT timer expires; and
2) at least one additional PACKET_SYNC Transmitted message;
or
b) was entered with a PACKET_SYNC Received argument.
Before the transition, this state shall stop the MRTT timer.
Figure 110 shows the SAS phy power conditions states. These states are entered when a phy is requested to
enter a low phy power condition and process the actions that return a phy from a low phy power condition to
the active phy power condition.
SP (phy layer) state machine - SAS phy power condition states Power on,
(to all states, hard reset,
causing Management
SP31:SAS_PS_Low_Phy_Power SP35:SAS_PS_Sync Reset, or
transition to
SP0: Disable Phy
SP15: Disable APTA PAPTA OOB_COMINIT)
SAS_PHY_Ready
Stop PS SP_PS
Manage Phy Stop DWS SP_DWS Resynchronize SP_ReSync
Power SP_ReSync Restart PS
Conditions SP15: SAS_PHY_Ready
SP_ReSync PS Reset
COMWAKE SP0:OOB_COMINIT
Detected Transmit
COMWAKE COMINIT
COMWAKE
Detected
Transmitted Phy Wakeup
COMWAKE SP32:SAS_PS_ALIGN0 SP33:SAS_PS_ALIGN1
Completed
Phy Wakeup Start DWS SP_DWS
Complete ALIGN Received (0)
Transmit Transmit
ALIGN Received (1) ALIGN (0) ALIGN (1)
APTA Disabled
Enter Partial Phy DWS Lost SP_DWS
Power Condition DWS Lost SP_DWS
ALIGN Received (1)
Enter Slumber Phy
Start DWS SP_DWS
Power Condition
Figure 110 – SP (phy layer) state machine - SAS phy power condition states
If the phy is in the SAS dword mode, then this transition shall occur after this state receives:
a) a COMWAKE Transmitted message; and
b) a COMWAKE Completed message.
If the phy is in the SAS packet mode, then this transition shall occur after this state receives:
a) a COMWAKE Transmitted message; and
b) a COMWAKE Completed message.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to re-acquire
dword synchronization without running a new link reset sequence.
Upon entry into this state, this phy shall repeatedly send Transmit ALIGN (1) messages to the SP transmitter.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to re-acquire
dword synchronization without running a new link reset sequence.
If this state receives an ALIGN Received (1) message before the SNTT timer expires, then this state shall set
the SASPhyPwrCond state machine variable to Active.
2) if applicable, then restore any vendor specific information for the SP transmitter and SP receiver (see
5.14.5.2.1); and
3) send a Resynchronize message to the SP_ReSync state machine.
Figure 111 shows the SATA host emulation states, in which the phy has detected that it is attached to a SATA
phy and behaves as if it were a SATA host phy initiating the SATA speed negotiation sequence. These states
are indicated by state names with a prefix of SATA.
The power management states defined in this standard are for SAS initiator phys or expander phys that
support SATA. SATA low phy power conditions may be enabled in expander phys using the SMP PHY
CONTROL function (see 9.4.4.28).
Power on,
(to all states, hard reset,
SP17:SATA_ SP18:SATA_ causing Management
SP16:SATA_ Await Await transition to Reset, or
COMWAKE COMWAKE NoCOMWAKE SP0: Disable Phy
OOB_COMINIT)
SP7:
OOB_ COMINIT
AwaitCOMSAS Transmit Detected (to all states, Transmit
COMWAKE causing SATA Port
COMWAKE transition to Selection
COMWAKE COMINIT Completed SP25: Signal
Transmitted Detected
SP0: SATA_PortSel)
COMWAKE
Detected OOB_COMINIT
SP19:SATA_
SP0: AwaitALIGN
OOB_COMINIT
COMINIT
Detected
SP23:SATA_PM_Partial SP21:SATA_
TransmitALIGN Transmit
COMINIT D10.2 SP0:
Detected SP_DWS OOB_COMINIT
Start DWS
COMWAKE Transmit ALIGN (0) SP_DWS DWS Lost
Detected Dword Received
Manage ALIGN
SP_DWS DWS Lost Received(0)
Phy Power
Conditions Phy Wakeup COMINIT SP20:SATA_
Detected AdjustSpeed
Phy Wakeup SP0:
Complete OOB_COMINIT
SP24:SATA_PM_Slumber COMINIT Transmit
SP22:SATA_PHY_Ready Detected D10.2
Manage Transmitter
Phy Power Set
Ready
Conditions SP_DWS Physical
DWS Lost
COMWAKE Link
Detected Phy Wakeup Rate
Phy Layer
COMINIT Ready (SATA) SP0:
Detected SP_DWS DWS Lost OOB_COMINIT
Phy Wakeup Manage Phy
SP_DWS DWS Reset
Complete Power Conditions
COMINIT
SP0:
Detected
OOB_COMINIT
Figure 111 – SP (phy layer) state machine - SATA host emulation states
This state shall send a Transmit COMWAKE message to the SP transmitter and wait for a COMWAKE
Transmitted message.
Upon entry into this state, this state shall send a Start DWS message to the SP_DWS state machine.
This state shall:
a) repeatedly send Transmit D10.2 messages to the SP transmitter;
b) initialize and start the Await ALIGN Timeout timer; and
c) wait for an ALIGN Received (0) message to be received or for the Await ALIGN Timeout timer to
expire.
The phy shall start transmitting D10.2 characters no later than a COMWAKE response time (see 5.11.2.2)
after entry into this state.
This state waits for the SP transmitter to adjust to the same physical link rate of the ALIGNs that were
detected by the receiver circuitry.
This state shall:
1) send a Set Physical Link Rate message to the SP transmitter with an argument specifying the
physical link rate of the ALIGNs that were detected by the receiver circuitry; and
2) repeatedly send Transmit D10.2 messages to the SP transmitter.
This state shall repeatedly send Transmit ALIGN (0) messages to the SP transmitter.
While in this state dwords from the link layer are transmitted at the negotiated physical link rate (i.e., the rate
established in the previous state).
Upon entry into this state, this state shall:
a) if the SP transmitter is transmitting at 1.5 Gbit/s, then set the ResetStatus state machine variable to
G1;
b) if the SP transmitter is transmitting at 3 Gbit/s, then set the ResetStatus state machine variable to G2;
or
c) if the SP transmitter is transmitting at 6 Gbit/s, then set the ResetStatus state machine variable to G3.
This state shall send a Phy Layer Ready (SATA) confirmation to the link layer.
This state waits for a COMINIT Detected message, a DWS Lost message, or a DWS Reset message.
Each time this state receives a DWS Lost message, this state may send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization without running a new link reset sequence.
Upon entry into this state, this state shall set the SASPhyPwrCond state machine variable to Partial.
This state waits for a COMWAKE Detected message or a Manage Phy Power Conditions (Exit) request.
When this state receives a COMWAKE Detected message or a Manage Phy Power Conditions (Exit) request
this state shall send a Phy Wakeup message to the SP transmitter.
Upon entry into this state, this state shall set the SASPhyPwrCond state machine variable to Slumber.
This state waits for a COMWAKE Detected message or a Manage Phy Power Conditions (Exit) request.
When this state receives a COMWAKE Detected message or a Manage Phy Power Conditions (Exit) request
this state shall send a Phy Wakeup message to the SP transmitter.
Figure 112 shows the SP25:SATA_PortSel state. This state controls transmission of the SATA port selection
signal when a specified phy processes a Transmit SATA Port Selection Signal request.
SP (phy layer) state machine - SATA port selector state Power on,
hard reset,
(to all states, Management
causing Reset, or
transition to Disable Phy
SP0:
OOB_COMINIT)
SP25:SATA_PortSel
Transmit
(from any state) SATA Port
Selection Signal
SATA Port
Selection Signal SP1:
Transmitted OOB_AwaitCOMX
Figure 112 – SP (phy layer) state machine – SATA port selector state
SP (phy layer) state machine - SATA spinup hold state Power on,
hard reset,
(to all states,
Management
causing
Reset, or
transition to
Disable Phy
SP0:
OOB_COMINIT)
Transmit
SP26:SATA_ SATA Port
(to all states, causing Selection
SpinupHold
transition to Signal
(in expander phys )
SP25:SATA_PortSel)
SATA Spinup Hold
SP7:OOB_AwaitCOMSAS
COMINIT Detected SP0:OOB_COMINIT
Figure 113 – SP (phy layer) state machine - SATA spinup hold state
The SP_DWS state machine establishes the same dword boundaries at the receiver as at the attached
transmitter by searching for control characters. The SP_DWS receiver monitors and decodes the incoming
data stream and forces K28.5 characters into the first character position to perform dword alignment when
requested by the SP_DWS state machine. K28.5 characters with either positive or negative disparity shall be
accepted. The SP_DWS receiver continues to reestablish dword alignment by forcing received K28.5
characters into the first character position until a K28.5-based primitive (i.e., K28.5, Dxx.y, Dxx.y, Dxx.y) with
correct disparity on each data character is detected. The resultant primitives, dwords, and valid dword
indicators (e.g., encoding error indicators) are sent to this state machine to enable it to determine the dword
synchronization policy.
After dword synchronization has been achieved, this state machine evaluates dwords that are received. When
an invalid dword is detected, receipt of two valid dwords are required to nullify the effect of receiving the
invalid dword. When four invalid dwords are detected without nullification, dword synchronization is
considered lost.
While dword synchronization is lost, the data stream received is invalid and dwords shall not be passed to the
link layer.
This state machine consists of the following states:
a) SP_DWS0:AcquireSync (see 5.15.3) (initial state);
b) SP_DWS1:Valid1 (see 5.15.4);
c) SP_DWS2:Valid2 (see 5.15.5);
d) SP_DWS3:SyncAcquired (see 5.15.6);
e) SP_DWS4:Lost1 (see 5.15.7);
f) SP_DWS5:Lost1Recovered (see 5.15.8);
g) SP_DWS6:Lost2 (see 5.15.9);
h) SP_DWS7:Lost2Recovered (see 5.15.10);
i) SP_DWS8:Lost3 (see 5.15.11); and
j) SP_DWS9:Lost3Recovered (see 5.15.12).
This state machine receives the following requests from the management application layer:
a) Management Reset; and
b) Disable Phy.
This state machine shall start in or transition to the SP_DWS0:AcquireSync state after:
a) power on;
b) hard reset;
c) receiving a Management Reset request (e.g., as a result of processing an SMP PHY CONTROL
function requesting a phy operation of LINK RESET or HARD RESET);
d) receiving a Disable Phy request (e.g., as a result of processing an SMP PHY CONTROL function
requesting a phy operation of DISABLE); or
e) receiving a Stop DWS message from the SP state machine.
This state machine receives the following messages from the SP state machine (see 5.14):
a) Start DWS; and
b) Stop DWS.
This state machine sends the following messages to the SP state machine:
a) DWS Lost; and
b) DWS Reset.
This state machine shall maintain the timers listed in table 94.
Find Dword
Sync Lost SP receiver Power on,
Start DWS SP (to all states, hard reset,
DWS Reset SP causing Management
transition to Reset, or
SP_DWS0: Disable Phy
AcquireSync)
DWS Lost SP
SP_DWS0
DWS Lost SP
The SP_DWS receiver receives the following messages from the SP_DWS state machine:
a) Find Dword; and
b) Sync Acquired.
The SP_DWS receiver sends the following messages to the SP_DWS state machine indicating dwords
received from the physical link:
a) Dword Received (Primitive);
b) Dword Received (Data Dword); and
c) Dword Received (Invalid).
When the SP_DWS receiver receives a Sync Acquired message, the SP_DWS receiver shall send the most
recently received primitive and all subsequent dwords to the link layer state machine receivers (e.g., SL_IR,
SL, SSP, SMP, and XL) through the elasticity buffer (see 6.5) as Dword Received confirmations.
Upon receiving a Find Dword message, the SP_DWS receiver shall monitor the input data stream and force
each K28.5 character detected into the first character position of a possible dword. If the next three characters
are data characters with correct disparity, then the SP_DWS receiver shall send the dword as a Dword
Received (Primitive) message to the SP_DWS state machine. Until the SP_DWS receiver receives another
Find Dword message, for every four characters that it receives the SP_DWS receiver shall:
a) send a Dword Received (Invalid) message to the SP_DWS state machine if the dword is an invalid
dword;
b) send a Dword Received (Primitive) message to the SP_DWS state machine if the dword is a primitive
(i.e., the dword contains a K28.5 character in the first character position followed by three data
characters); or
c) send a Dword Received (Data Dword) message to the SP_DWS state machine if the dword is a data
dword (i.e., it is not an invalid dword or a primitive).
The SP_DWS receiver relationship to other receivers is defined in 4.3.3.
This state is reached after one valid primitive has been received. This state waits for a second valid primitive
or an invalid dword.
The DWS Reset Timeout timer shall continue running.
This state is reached after two valid primitives have been received without adjusting the dword
synchronization. This state waits for a third valid primitive or an invalid dword.
The DWS Reset Timeout timer shall continue running.
This state is reached after three valid primitives have been received without adjusting the dword
synchronization.
Upon entry into this state, this state shall send a Sync Acquired message to the SP_DWS receiver and the SP
receiver.
This state waits for a Dword Received (Invalid) message, which indicates a potential loss of dword
synchronization.
This state is reached when one invalid dword has been received and not nullified. This state waits for a Dword
Received message.
This state is reached when a valid dword has been received after one invalid dword had been received. This
state waits for a Dword Received message.
This state is reached when two invalid dwords have been received and not nullified. This state waits for a
Dword Received message.
This state is reached when a valid dword has been received after two invalid dwords had been received. This
state waits for a Dword Received message.
This state is reached when three invalid dwords have been received and not nullified. This state waits for a
Dword Received message.
If a Dword Received (Invalid) message is received (i.e., the fourth non-nullified invalid dword is received), then
this state shall send a DWS Lost message to the SP state machine.
This state is reached when a valid dword has been received after three invalid dwords had been received.
This state waits for a Dword Received message.
If a Dword Received (Invalid) message is received (i.e., the fourth non-nullified invalid dword is received), then
this state shall send a DWS Lost message to the SP state machine.
Each phy that supports SAS packet mode includes an SP_PS state machine and an SP_PS receiver.
The SP_PS receiver monitors the incoming data stream and forces the SPL packet header into the correct
position to form an SPL packet.
After SPL packet synchronization has been achieved (see 5.17) and two SPL packets with no decode failures
have been received, the SP_PS state machine monitors for decode failures (see 5.5.7.3). If a decode failure is
detected, then receipt of two consecutive SPL packets with no decode failure are required to nullify the effect
of receiving a decode failure. If four consecutive decode failures are detected, then SPL packet
synchronization is considered lost.
While SPL packet synchronization is lost, the data stream received is invalid and SPL packets are not passed
to the link layer.
This state machine consists of the following states:
a) SP_PS0:AcquireSync (see 5.16.3) (initial state);
b) SP_PS1:Valid1 (see 5.16.4);
c) SP_PS2:SyncAcquired (see 5.16.5);
d) SP_PS3:Lost1 (see 5.16.6);
e) SP_PS4:LostRecovered (see 5.16.7);
f) SP_PS5:Lost2 (see 5.16.8); and
g) SP_PS6:Lost3 (see 5.17).
This state machine receives the following requests from the management application layer:
a) Management Reset; and
b) Disable Phy.
This state machine shall start in or transition to the SP_PS0:AcquireSync state after:
a) power on;
b) hard reset;
c) receiving a Management Reset request (e.g., as a result of processing an SMP PHY CONTROL
function requesting a phy operation of LINK RESET or HARD RESET); or
d) receiving a Disable Phy request (e.g., as a result of processing an SMP PHY CONTROL function
requesting a phy operation of DISABLE).
This state machine receives the following messages from the SP state machine (see 5.14):
a) Start PS; and
b) Stop PS.
This state machine sends the following message to the SP_ReSync state machine (see 5.17):
a) Resynchronize.
This state machine receives the following messages from the SP_ReSync state machine:
a) Restart PS; and
b) Stop PS.
This state machine shall maintain the timers listed in table 95.
SP Sync Acquired
Stop PS
SP_Resync
SPL Packet Received SPL Packet Received
SP
Find SPL Packet Stop PS SP_Resync
Sync Lost
Start PS SP
Power on,
Restart PS SP_ReSync (to all states, hard reset,
SPL Packet Received causing Management
Resynchronize SP_ReSync transition to Reset, or
SP_PS0: Disable Phy
AcquireSync)
SP_PS3: SP_PS4:
Lost1 LostRecovered
SP
Stop PS SP
SP_Resync Stop PS
SP_Resync
SPL Packet Received
SPL Packet Received
SP_PS5: SP_PS6:
Lost2 Lost3
Resynchronize SP_ReSync
SP
Stop PS SP_Resync
SP
Stop PS SP_Resync SPL Packet Received
SPL Packet Received Sync Lost
Figure 115 – SP_PS (phy layer SPL packet synchronization) state machine
The SP_PS receiver receives the following messages from the SP_PS state machine:
a) Find SPL Packet;
b) Sync Lost; and
c) Sync Acquired.
The SP_PS receiver sends the following messages to the SP_PS state machine indicating SPL packets
received from the physical link:
a) SPL Packet Received (Valid); and
b) SPL Packet Received (Invalid).
Upon receiving a Find SPL Packet message, the SP_PS receiver shall wait for a Decode Success message.
When a Decode Success message is received the SP_PS receiver shall send an SPL Packet Received
message to the SP_PS state machine. Until the SP_PS receiver receives another Find SPL Packet message
or Sync Lost message, for every SPL packet that it receives the SP_PS receiver shall:
a) send an SPL Packet Received (Invalid) message to the SP_PS state machine if a Decode Failure
message (see 5.5.7.3) is received for the received SPL packet; or
b) send an SPL Packet Received (Valid) message to the SP_PS state machine if a Decode Success
message is received for the received SPL packet.
If the SP_PS receiver receives a Sync Lost message, then the SP_PS receiver shall stop sending data
dwords, primitives, binary primitives, extended binary primitives, and invalid dwords to the link layer state
machine receivers.
Received SPL packets are separated into data dwords, primitives, binary primitives, extended binary
primitives, primitive parameters, and scrambled dwords as described in figure 117.
When the SP_PS receiver receives a Sync Acquired message, the SP_PS receiver shall send to the link layer
state machine receivers (e.g., SL_IR, SL, SSP, SMP, and XL) through the elasticity buffer (see 6.5) the
following confirmations in the order received in the SPL packet:
a) four Dword Received (Data Dword) confirmations if the received SPL packet indicates contents of the
SPL packet payload contain an SPL frame segment (see 5.5.5) or an idle dword segment;
b) a QuadDword Received (Extended Binary Primitive) confirmation if the received SPL packet indicates
the contents of the SPL packet contain an extended binary primitive (i.e., PRIMITIVE SYNCHRONIZE
SELECT field set to 10b (see 5.5.4));
c) a Dword Received (Invalid Dword) confirmation for all the dwords associated with the SPL packet
associated with the a Decode Failure message received for the received SPL packet;
d) a Dword Received (Binary Primitive) confirmation:
A) if the received SPL packet indicates contents of the SPL packet payload contain a primitive
segment (see 5.5.4)); and
B) for each PRIMITIVE0 field, PRIMITIVE1 field, PRIMITIVE2 field, and PRIMITIVE3 field that have an
indication that the field contains a binary primitive (i.e., PRIMITIVE SYNCHRONIZE SELECT field,
CONTROL1 field, CONTROL2 field, or CONTROL3 field set to 01b);
or
e) one to three Dword Received (Primitive Parameter) confirmations;
A) if the received SPL packet indicates contents of the SPL packet payload contain a primitive
segment (see 5.5.4)); and
B) for each PRIMITIVE1 field, PRIMITIVE2 field, and PRIMITIVE3 field that contains a primitive parameter
(i.e., the CONTROL1 field, CONTROL2 field, or CONTROL3 field of the first primitive parameter dword
within the primitive segment is set to 10b (see table 55)).
When the SP_PS receiver receives a Sync Acquired message, the SP_PS receiver shall translate primitives
received in an SPL packet into four 10-bit characters as described in figure 116 and send to the link layer state
machine receivers (e.g., SL_IR, SL, SSP, SMP, and XL):
a) a Dword Received (Primitive) confirmation that contains the translated primitive; or
b) a Dword Received (Invalid Dword) confirmation for all the characters associated with the SPL packet
that contains any:
A) 8b10b data character that has a disparity inconsistent with a primitive stating with RD+ disparity
(see 5.3.5); or
B) invalid character.
The SP_PS receiver shall discard all dwords received within an SPL packet that contains a scrambled idle
segment (i.e., scrambled dwords).
nd rd th
2 character 3 character 4 character
1st 2
nd
character
rd
3 character
th
4 character
character
nd rd th
2 character 3 character 4 character
1st 2
nd
character
rd
3 character
th
4 character
character
.
31 24 23 16 15 8 7 0
Received and decoded
SPL packet header and 1 0
B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
SPL packet payload MSB LSB
Data dword 0 received + Header a
Header
...
H1 H0 31 24 23 16 15 8 7 0
Byte 0
1 0
B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
B7 B6 B5 B4 B3 B2 B1 B0 MSB a LSB
Data dword 3 received + Header
Byte 1 31 24 23 16 15 8 7 0
0 0
B7 B6 B5 B4 B3 B2 B1 B0 B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
Byte 2 1 1
MSB
B7 B6 B5 B4 B3 B2 B1 B0 Scrambled dword 0 received + Header b LSB
...
Byte 3 0 0 31 24 23 16 15 8 7 0
B7 B6 B5 B4 B3 B2 B1 B0
m
B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
1 1
u
...
MSB
Byte 12 x Scrambled dword 3 received + Header b LSB
B7 B6 B5 B4 B3 B2 B1 B0 31 24 23 16 15 8 7 0
Byte 13 0 1
B
7
... C C B
1 0 7
... B B
0 7
... B B
0 7
... B
0
MSB
Primitive 0 received + Control + Header a LSB
B7 B6 B5 B4 B3 B2 B1 B0
...
Byte 14
31 24 23 16 15 8 7 0
B7 B6 B5 B4 B3 B2 B1 B0 B
7
... B B B
1 0 7
... B B
0 7
... B B
0 7
... B
0
Byte 15
MSB LSB
B7 B6 B5 B4 B3 B2 B1 B0 Primitive 3 received if primitive 0 bits C1C0 are
set to 10b (i.e, extended binary primitive) a
31 24 23 16 15 8 7 0
0 1
B
7
... C C B
1 0 7
... B B
0 7
... B B
0 7
... B
0
MSB LSB
a
Primitive 0 received + Control + Header if bits
Data dwords, binary primitives, C1C0 are set to 01b (i.e., binary primitive) a
primitive parameters, and
Primitive received + Control
extended primitives are sent
MSB if bits C1C0 are set to 00b or 11b LSB
to the link layer.
31 24 23 16 15 8 7 0
b
Scrambled dwords are discarded B
7
... C1 C0
B
7
... B B
0 7
... B B
0 7
... B
0
by the SP_PS receiver.
...
39 30 29 20 19 10 9 0
Restructured received
primitive is sent to SAS bit C1C0 = 00b K28.5
B
7
... B B
4 3
... B B
2 1
... B
0
reception logic and to the
link layer. C1C0 = 11b K28.3
B
7
... B B
4 3
... B B
2 1
... B
0
a j a j a j a j
first bit received last bit received
This state is reached after one valid SPL packet has been received. This state waits for a second valid SPL
packet or an invalid SPL packet.
The PS Reset Timeout timer shall continue running.
This state is reached after two valid SPL packets have been received.
Upon entry into this state, this state shall send a Sync Acquired message to the SP_PS receiver and the SP
receiver.
This state waits for an SPL Packet Received (Invalid) message, which indicates a potential loss of SPL packet
synchronization.
This state is reached when one invalid SPL packet has been received. This state waits for an SPL Packet
Received message.
This state is reached when a valid SPL packet has been received after one or more invalid SPL packet have
been received. This state waits for an SPL Packet Received message.
This state is reached when two consecutive invalid SPL packets have been received. This state waits for an
SPL Packet Received message.
This state is reached when three consecutive invalid SPL packets have been received. This state waits for an
SPL Packet Received message.
If an SPL Packet Received (Invalid) message is received (i.e., the fourth consecutive invalid SPL packet is
received), then this state shall send:
1) a Sync Lost message to the SP_PS receiver; and
2) a Resynchronize message to the SP_ReSync state machine.
Each phy that supports SPL packet mode shall include an SP_ReSync state machine.
The SP_ReSync state machine:
a) reestablishes the SPL packet boundaries at the receiver by responding to PACKET_SYNC_LOSTs
with the transmission of PACKET_SYNCs; and
b) requests the reestablishment of SPL packet boundaries between the receiver and the attached
transmitter by:
1) transmitting PACKET_SYNC_LOSTs; and
2) waiting for the receipt of PACKET_SYNCs.
This state machine consists of the following states:
a) SP_ReSync0:Initial (see 5.17.2) (initial state);
b) SP_ReSync1:Start (see 5.17.3);
c) SP_ReSync2:Request (see 5.17.4); and
d) SP_ReSync3:Response (see 5.17.5).
This state machine shall start in or transition to the SP_ReSync0:Initial state after:
a) power on;
b) hard reset;
c) receiving a Management Reset request (e.g., as a result of processing an SMP PHY CONTROL
function requesting a phy operation of LINK RESET or HARD RESET); or
d) receiving a Disable Phy request (e.g., as a result of processing an SMP PHY CONTROL function
requesting a phy operation of DISABLE).
This state machine receives the following messages from the SP state machine (see 5.14):
a) Enable SP_ReSync;
b) Resynchronize; and
c) Stop Resync.
This state machine sends the following messages to the SP state machine:
a) Restart PS; and
b) PS Reset.
This state machine receives the following message from the SP_PS state machine (see 5.16):
a) Resynchronize.
This state machine sends the following messages to the SP_PS state machine (see 5.16):
a) Restart PS; and
b) Stop PS.
SP_ReSync2: SP_ReSync3:
Request Response
Transmit Transmit
PACKET_SYNC PACKET_SYNC PACKET_SYNC PACKET_SYNC
Received Received
PACKET_SYNC PACKET_SYNC
Transmitted SP Transmitted
PS Reset PS Reset SP
SP Stop Resync SP_PS SP Stop Resync
Restart PS SP_PS
SP Restart PS
SP
Transmit
PACKET_SYNC_LOST PACKET_SYNC_LOST Stop PS SP_PS
Received
5.17.2 SP_ReSync0:Initial
5.17.3 SP_ReSync1:Start
5.17.4 SP_ReSync2:Request
5.17.5 SP_ReSync3:Response
If this state receives a PACKET_SYNC Received message, then this state shall stop the MRTT timer.
If the MRTT timer expires, then this state shall send a PS Reset message to the SP state machine.
This state achieves SPL packet synchronization if this state receives:
1) at least four PACKET_SYNC Transmitted messages;
2) a PACKET_SYNC Received message before the MRTT timer expires; and
3) at least one additional PACKET_SYNC Transmitted message.
The PTT phy layer contains several state machines that run in parallel to control the physical link during
Train_Tx-SNW. The PTT state machines are as follows:
a) PTT_T (phy layer transmitter training transmit pattern) state machine (see 5.18.4);
b) PTT_R (phy layer transmitter training receive pattern) state machine (see 5.18.5);
c) PTT_SC1 (phy layer transmitter training set transmitter coefficient 1) state machine (see 5.18.6);
d) PTT_SC2 (phy layer transmitter training set transmitter coefficient 2) state machine (see 5.18.7);
e) PTT_SC3 (phy layer transmitter training set transmitter coefficient 3) state machine (see 5.18.8);
f) PTT_GC1 (phy layer transmitter training get transmitter coefficient 1) state machine (see 5.18.9);
g) PTT_GC2 (phy layer transmitter training get transmitter coefficient 2) state machine (see 5.18.10);
h) PTT_GC3 (phy layer transmitter training get transmitter coefficient 3) state machine (see 5.18.11);
and
i) PTT_PL (phy layer transmitter training pattern lock) state machine (see 5.18.12).
All the PTT state machines shall start in the initial state after receiving a Transmitter Training (Enable)
message from the SP state machine (see 5.14.4.13).
All the PTT state machines shall terminate after receiving a Transmitter Training (Disable) message from the
SP state machine (see 5.14.4.13).
Each phy that supports transmitter training shall include all the PTT state machines.
If the state machine consists of multiple states, then the initial state is as indicated in the state machine
description in this subclause.
Any message, request, or confirmation received by a state that is not referred to in the description of that state
shall be ignored.
The SP transmitter receives the following message from the PTT state machines specifying dwords to
transmit:
a) Transmit Train_Tx Pattern (see 5.11.4.2.3.4).
The SP transmitter receives the following messages from the PTT state machines:
a) Set Training Control;
b) Set Training Status;
c) Set Transmitter Failed;
d) Adjust Coefficient 1 with arguments of:
A) Increment, Decrement, Set No_Equalization, Set Reference_1, Set Reference_2 or Set
Vendor_Unique; and
B) Single or Dual;
e) Adjust Coefficient 2 with arguments of:
A) Increment, Decrement, Set No_Equalization, Set Reference_1, Set Reference_2 or Set
Vendor_Unique; and
B) Single or Dual;
and
f) Adjust Coefficient 3 with argument of:
A) Increment, Decrement, Set No_Equalization, Set Reference_1, Set Reference_2 or Set
Vendor_Unique; and
B) Single or Dual.
See 5.14.2 for SP transmitter requirements while PTT state machines are not processing Train_Tx-SNW.
The SP transmitter relationship to other transmitters is defined in 4.3.2.
In response to a Set Training Control message the SP transmitter shall set the Training Control word (see
5.10.2) to the contents of the received argument.
In response to a Set Training Status message the SP transmitter shall set the Training Status word (see
5.10.2) to the contents of the received argument.
In response to a Set Transmitter Failed message the SP transmitter shall set the Error Response TTIU (see
5.10.3) to the contents of the received argument.
The SP transmitter shall set the BALANCE bit (see 5.10.2 and 5.10.3) to the correct value before transmitting a
Train_Tx pattern.
The SP transmitter sends the following message to the PTT state machines based on dwords that have been
transmitted:
a) Train_Tx Pattern Transmitted.
In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, and an Adjust Coefficient 3
message with a Set No_Equalization argument the SP transmitter shall adjust all the coefficients to the no
equalization value (see SAS-4).
In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, and an Adjust Coefficient 3
message with a Set Reference_1 argument the SP transmitter shall adjust all the coefficients to the
reference_1 value (see SAS-4).
In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, and an Adjust Coefficient 3
message with a Set Reference_2 argument the SP transmitter shall adjust all the coefficients to the
reference_2 value (see SAS-4).
In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, and an Adjust Coefficient 3
message with a Set Vendor_Unique argument the SP transmitter shall adjust all the coefficients to the
vendor_unique value.
The individual coefficient limits and limits associated with relationships between coefficients specified in
SAS-4 shall be maintained by the SP transmitter while processing coefficient adjustment requests.
If the SP transmitter adjusts a specified coefficient, then after the adjustment is complete the SP transmitter
shall send to the PTT state machine state that requested the SP transmitter adjustment the message
associated with the adjusted coefficient (i.e., Transmitter Adjustment 1 Complete (Update Complete)
message, Transmitter Adjustment 2 Complete (Update Complete) message, or Transmitter Adjustment 3
Complete (Update Complete) message).
then the SP transmitter shall send the message associated with the specified coefficient (i.e., Transmitter
Adjustment 1 Complete (Update Complete) message, Transmitter Adjustment 2 Complete (Update Complete)
message, or Transmitter Adjustment 3 Complete (Update Complete) message) that is:
a) less than a maximum value; and
b) greater than a minimum value,
to the PTT state machine state that requested the SP transmitter adjustment.
If the SP transmitter adjusts a specified coefficient to a maximum value, then after the adjustment is complete
the SP transmitter shall send to the PTT state machine state that requested the SP transmitter adjustment the
message associated with the adjusted coefficient (i.e., Transmitter Adjustment 1 Complete (Maximum)
message, Transmitter Adjustment 2 Complete (Maximum) message, or Transmitter Adjustment 3 Complete
(Maximum) message).
If the processing of the requested SP transmitter adjustment results in an adjustment that is greater than a
coefficient’s maximum value, then:
a) no adjustment shall be made to any coefficient; and
b) the SP transmitter shall send to the PTT state machine state that requested the SP transmitter
adjustment the message associated with each specified coefficient that is equal to or greater than a
maximum value (i.e., Transmitter Adjustment 1 Complete (Maximum) message, Transmitter
Adjustment 2 Complete (Maximum) message, or Transmitter Adjustment 3 Complete (Maximum)
message).
If the SP transmitter adjusts a specified coefficient to a minimum value, then after the adjustment is complete
the SP transmitter shall send to the PTT state machine state that requested the SP transmitter adjustment the
message associated with the adjusted coefficient (i.e., Transmitter Adjustment 1 Complete (Minimum)
message, Transmitter Adjustment 2 Complete (Minimum) message, or Transmitter Adjustment 3 Complete
(Minimum) message).
If the processing of the requested SP transmitter adjustment results in an adjustment that is less than a
coefficient’s minimum value then:
a) no adjustment shall be made to any coefficient; and
b) the SP transmitter shall send to the PTT state machine state that requested the SP transmitter
adjustment the message associated with each specified coefficient that is equal to or less than a
minimum value (i.e., Transmitter Adjustment 1 Complete (Minimum) message, Transmitter
Adjustment 2 Complete (Minimum) message, or Transmitter Adjustment 3 Complete (Minimum)
message).
The SP receiver sends the following messages to the PTT state machines indicating dwords received by the
SP receiver:
a) Received TTIU with arguments containing the contents of the received TTIU (e.g., Training Control
word and the Training Status word of the Control/Status TTIU, or error response of the Error
Response TTIU);
b) Valid Pattern Marker; and
c) Invalid Pattern Marker.
The SP receiver sends the following messages to the PTT state machines:
a) Current Coefficient 1 with an argument of Increment, Decrement, No_Equalization, Reference_1,
Reference_2, Vendor_Unique, or Hold;
b) Current Coefficient 2 with an argument of Increment, Decrement, No_Equalization, Reference_1,
Reference_2, Vendor_Unique, or Hold;
c) Current Coefficient 3 with an argument of Increment, Decrement, No_Equalization, Reference_1,
Reference_2, Vendor_Unique, or Hold;
d) All Coefficients Not Ready; and
e) Attached Phy’s Transmitter Optimized.
The SP receiver receives the following messages from the PTT state machines:
a) Coefficient 1 Status with an argument of Maximum, Minimum, Update_Complete, or Ready;
b) Coefficient 2 Status with an argument of Maximum, Minimum, Update_Complete, or Ready;
c) Coefficient 3 Status with an argument of Maximum, Minimum, Update_Complete, or Ready;
d) Get Current Coefficient 1;
e) Get Current Coefficient 2;
f) Get Current Coefficient 3;
g) Enable Pattern Marker Detection;
h) Disable Pattern Marker Detection;
i) Attached Phy’s Transmitter Training with an argument of Start or Stop;
j) Transmitter Control Failed with an argument containing information on the failure; and
k) Coefficients Status Updated.
After the SP receiver receives an Attached Phy’s Transmitter Training (Start) message, the SP receiver shall
respond to a Get Current Coefficient 1 message, Get Current Coefficient 2 message, and Get Current
Coefficient 3 message by sending a Current Coefficient 1 message, Current Coefficient 2 message, and
Current Coefficient 3 message with an argument (i.e., Increment, Decrement, No_Equalization, Reference_1,
Reference_2, Vendor_Unique, or Hold) to the PTT state machine after the SP receiver:
a) completes the analysis of a transmitter training pattern; and
b) receives a Control/Status TTIU with an even number of bits set to zero with a coefficient status of
ready for all the attached phy’s transmitter coefficients.
After the SP receiver sends one or more Current Coefficient 1 message, Current Coefficient 2 message, or
Current Coefficient 3 message with an argument of Increment, Decrement, No_Equalization, Reference_1,
Reference_2, or Vendor_Unique the SP receiver shall not attempt analysis of a transmitter training pattern
until after it has received a status of update complete, maximum, or minimum for all the attached phy’s
transmitter coefficients that were updated.
After the SP receiver receives an Attached Phy’s Transmitter Training (Stop) message, the SP receiver:
1) shall not respond to any Get Current Coefficient 1 messages, Get Current Coefficient 2 messages, or
Get Current Coefficient 3 messages;
2) waits until a status other than ready has been received on all coefficients; and
3) repeatedly send All Coefficients Not Ready messages to the PTT_T state machine until an Attached
Phy’s Transmitter Training (Start) message is received.
When the SP receiver determines the attached phy’s transmitter training is complete, the SP receiver shall
send an Attached Phy’s Transmitter Optimized message to the PTT_T state machine.
If:
a) SNW-3 indicates that extended coefficient settings are enabled (see 5.8);
b) the phy is negotiating to G4 or G5 (see 5.14.4.12); and
c) the SP receiver determines that there was no effective change in the quality of the received
transmitter training pattern after sending a vendor specific number of change requests,
then the SP receiver shall:
1) wait until the Coefficient 1 Status message, Coefficient 2 Status message, and Coefficient 3 Status
message all specify a Ready argument; and
send a Current Coefficient 1 message to the PTT_GC1 state machine, Current Coefficient 2 message to the
PTT_GC2 state machine, and Current Coefficient 3 message to the PTT_GC3 state machines all with the
same argument of Vendor_Unique.
If the SP receiver requires the attached phy’s transmitter training to be restarted with the no_equalization
value, reference_1 value, or reference_2 value, then the SP receiver shall:
1) wait until the Coefficient 1 Status message, Coefficient 2 Status message, and Coefficient 3 Status
message all specify a Ready argument; and
2) send a Current Coefficient 1 message to the PTT_GC1 state machine, Current Coefficient 2 message
to the PTT_GC2 state machine, and Current Coefficient 3 message to the PTT_GC3 state machines
all with the same argument of No_Equalization, Reference_1, or Reference_2.
The actions taken on receiving a Transmitter Control Failed message are outside the scope of this standard.
See 5.14.2 for SP receiver requirements while PTT state machines are not processing Train_Tx-SNW.
The SP receiver relationship to other receivers is defined in 4.3.3.
5.18.4 PTT_T (phy layer transmitter training transmit pattern) state machine
PTT_T2:Tx_Training
PTT_T3:Local_Tx_Training
Transmitter
SPTraining (Disable)
Transmitter
Local Phy s SP
Training (Disable)
PTT_R2 Transmitter
Training Complete Local Phy s
PTT_R2 Transmitter
Coefficient 1 Transmitter
PTT_GC1 Training Complete SP
Update Request Training
Coefficient 2 Attached Phy s PTT_R2
PTT_GC2 Transmitter Training Complete
Update Request
Coefficient 3 Current Coefficient Set Transmitter
PTT_GC3 PTT_SC1
Update Request 1 Status Failed
Current Coefficient
Current Coefficient PTT_SC2
PTT_SC1 2 Status
1 Status Current Coefficient Set Training
Current Coefficient PTT_SC3 Status
3 Status
PTT_SC2
2 Status Transmit Error
Current Coefficient PTT_R2 Set Training
PTT_SC3 Response
3 Status Control
Train_Tx
Transmit Error Pattern Transmitted
PTT_R2 Transmit
Response
All Coefficients Not Ready Transmitter SP Train_Tx Pattern
Training Complete PTT_R2
Attached Phy s
Transmitter Optimized Set Training Status
Train_Tx Set Training Control
Pattern Transmitted
Set Transmitter Failed
Transmit Train_Tx Pattern
Figure 119 – PTT_T (phy layer transmitter training transmit pattern) state machine
This state:
a) sets the initial values of the Training Status word and Training Control word (see 5.10.2);
b) requests Train_Tx patterns be transmitted; and
c) waits for the receipt of a Control/Status TTIU.
Upon entry into this state, this state shall:
1) send an Attached Phy’s Transmitter Training (Stop) message to the SP receiver;
2) set the bits and fields of the Training Status word (see 5.10.2) as follows:
A) set the TRAIN COMP bit to zero;
B) set the TX INIT bit to one;
C) set the COEFFICIENT 1 STATUS field to 00b (i.e., ready);
D) set the COEFFICIENT 2 STATUS field to 00b (i.e., ready); and
E) set the COEFFICIENT 3 STATUS field to 00b (i.e., ready);
3) set the fields of the Training Control word as follows:
A) set the PATTERN TYPE field set to 000b (i.e., Control/Status TTIU);
B) set the COEFFICIENT SETTINGS field to 000b (i.e., normal);
C) set the COEFFICIENT 1 REQUEST field to 00b (i.e., hold);
D) set the COEFFICIENT 2 REQUEST field to 00b (i.e., hold); and
E) set the COEFFICIENT 3 REQUEST field to 00b (i.e., hold);
4) send a Set Training Control message to the SP transmitter;
5) send a Set Training Status message to the SP transmitter;
6) send a Transmit Train_Tx Pattern message to the SP transmitter;
7) wait for a Train_Tx Pattern Transmitted message; and
8) repeat steps 6) and 7) until this state receives a TTIU Received message with an Attached
Transmitter Initialized argument.
If this state receives a TTIU Received message with an Attached Transmitter Not Initialized argument, then
this state shall:
1) set the TX INIT bit to zero; and
2) send a Set Training Status message to the SP transmitter.
This state:
a) sets values of the Training Status word and Training Control word (see 5.10.2);
b) requests Train_Tx patterns be transmitted;
c) waits for attached phy’s transmitter training to complete; and
d) transmits the local phy’s transmitter status to the attached phy’s receiver.
Table 96 defines the mapping of the messages received from the PTT_GC state machines to the Training
Control word.
After this state sets the Training Control word to the argument received in the Coefficient 1 Update Request
message, Coefficient 2 Update Request message, or Coefficient 3 Update Request message, this state shall
send a Set Training Control message to the SP transmitter after receiving a Train_Tx Pattern Transmitted
message.
Table 97 defines the mapping of the messages received from the PTT_SC1 state machine, PTT_SC2 state
machine, and PTT_SC3 state machine to the Training Status word.
Table 97 – Mapping messages from PTT_SC1 state machine, PTT_SC2 state machine, and
PTT_SC3 state machine to the Training Status word
e
Messages received Training Status word field
a b
Current Coefficient 1 Status COEFFICIENT 1 STATUS
a c
Current Coefficient 2 Status COEFFICIENT 2 STATUS
If this state receives a Transmit Error Response message, then this state shall:
1) set the Error Response TTIU fields (see table 82) as follows:
A) set the PATTERN TYPE field to 111b (i.e., Error Response TTIU); and
B) set the Error Response TTIU fields to the arguments received in the Transmit Error Response
message as defined in table 98;
2) send a Set Transmitter Failed message to the SP transmitter;
3) send a Transmit Train Tx Pattern message to the SP transmitter;
4) wait for a Train Tx Pattern Transmitted message;
5) send a Set Training Control message to the SP transmitter;
6) set the bits and fields of the Training Status word as follows:
A) set the PATTERN TYPE field set to 000b (i.e., Control/Status TTIU);
B) set the TRAIN COMP bit to zero;
C) set the TX INIT bit to zero;
D) set the COEFFICIENT 1 STATUS field to 00b (i.e., ready);
E) set the COEFFICIENT 2 STATUS field to 00b (i.e., ready); and
F) set the COEFFICIENT 3 STATUS field to 00b (i.e., ready);
7) send a Set Training Status message to the SP transmitter;
8) send a Transmit Train Tx Pattern message to the SP transmitter; and
9) wait for a Train Tx Pattern Transmitted message.
Table 98 defines that mapping of the Transmit Error Response message arguments to the Error Response
TTIU fields.
Table 98 – Mapping Transmit Error Response message arguments to Error Response TTIU fields
If this state:
a) receives a Coefficient 1 Update Request message, Coefficient 2 Update Request message, or
Coefficient 3 Update Request message with an argument of No_Equalization, Reference_1,
Reference_2, or Vendor_Unique; or
b) is entered with Coefficient Settings argument set to No_Equalization, Reference_1, Reference_2, or
Vendor_Unique (see 5.18.4.4.2),
then this state shall:
1) send an Attached Phy’s Transmitter Training (Stop) message to the SP receiver;
2) if:
A) this state is entered with an argument of No_Equalization or receives an argument of
No_Equalization, then this state shall set the fields of the Training Control word (see table 77) as
follows:
a) set the PATTERN TYPE field to 000b (i.e., Control/Status TTIU);
5.18.4.4.6 Local phy’s transmitter and attached phy’s transmitter training completed
8) send a Transmitter Training Complete message to the SP34:SAS_Train_Tx state and the
PTT_R2:Receive_Train_Tx_Pattern state.
If this state has not received a Local Phy’s Transmitter Training Complete message, then this transition shall
occur:
a) after receiving an Attached Phy’s Transmitter Optimized message.
This transition shall include the following from the current Training Status word as arguments:
a) Coefficient 1 Status;
b) Coefficient 2 Status; and
c) Coefficient 3 Status.
This state:
a) sets values of the Training Status word and the Training Control word (see 5.10.2);
b) requests Train_Tx patterns be transmitted; and
c) waits for the local phy’s transmitter training to complete.
Table 97 defines the mapping of the messages received from the PTT_SC1 state machine, PTT_SC2 state
machine, and PTT_SC3 state machine to the Training Status word.
5.18.4.5.4 Local phy’s transmitter and attached phy’s transmitter training completed
If this state receives a Local Phy’s Transmitter Training Complete message and this state has received at least
six Train_Tx Pattern Transmitted messages, then this state shall send a Transmitter Training Complete
message to the SP34:SAS_Train_Tx state and the PTT_R2:Receive_Train_Tx_Pattern state.
If this state receives a Transmit Error Response message, then this state shall:
1) set the Error Response TTIU fields (see table 82) as follows:
A) set the PATTERN TYPE field to 111b (i.e., Error Response TTIU); and
B) set the Error Response TTIU fields to the arguments received in the Transmit Error Response
message as defined in table 98;
2) send a Set Transmitter Failed message to the SP transmitter;
3) send a Transmit Train_Tx Pattern message to the SP transmitter;
4) wait for a Train_Tx Pattern Transmitted message;
5) send a Set Training Control message to the SP transmitter;
6) set the bits and fields of the Training Status word (see table 77) as follows:
A) set the PATTERN TYPE field set to 000b (i.e., Control/Status TTIU);
B) set the TRAIN COMP bit to one;
C) set the TX INIT bit to zero;
D) set the COEFFICIENT 1 STATUS field to 00b (i.e., ready);
E) set the COEFFICIENT 2 STATUS field to 00b (i.e., ready); and
F) set the COEFFICIENT 3 STATUS field to 00b (i.e., ready);
7) send a Set Training Status message to the SP transmitter;
8) send a Transmit Train Tx Pattern message to the SP transmitter; and
9) wait for a Train Tx Pattern Transmitted message.
5.18.5 PTT_R (phy layer transmitter training receive pattern) state machine
PTT_R0:Idle PTT_R1:Initialize
PTT_R2:Receive_Train_Tx_Pattern
Figure 120 – PTT_R (phy layer transmitter training receive pattern) state machine
This state:
a) receives Training Control words and Training Status words;
b) transfers adjustment requests received from the attached phy’s receiver to the local phy’s transmitter;
c) checks the TTIU for errors; and
d) transfers the attached phy’s transmitter coefficient status to the local phy’s receiver.
If this state receives a Received TTIU message with an odd number of bits set to zero in the TTIU, then this
state shall discard the TTIU.
If this state receives a Received TTIU message and the TTIU is a Control/Status TTIU that contains:
a) an unsupported value;
b) a reserved value;
c) a reserved bit; or
d) a reserved combination in the Training Control word (see table 99),
then this state shall:
1) send a Transmit Error Response message to the PTT_T state machine with the arguments defined in
table 99;
2) send a Cancel message to the PTT_SC1 state machine, PTT_SC2 state machine, and PTT_SC3
state machine; and
Table 99 – Transmit Error Response message arguments sent to PTT_T state machine
Error
Training Control word Transmit Error Response message
field a b Error arguments c d
Condition Reference
COEFFICIENT 1 REQUEST
More than one Multiple Reserved Coefficients
COEFFICIENT 2 REQUEST Table 79
reserved value Requested
COEFFICIENT 3 REQUEST
COEFFICIENT 1 REQUEST
Reserved Coefficient Request
COEFFICIENT 2 REQUEST Reserved combination Table 80
Combination
COEFFICIENT 3 REQUEST
a If any reserved Train_Tx-SNW TTIU bit is set to one, then the Transmit Error Response message Error
argument shall be Reserved TTIU Bit Set To One.
b If this state is unable to determine the cause of the error, then the Transmit Error Response message
Error argument shall be Unknown.
c The Transmit Error Response message contains the following received Training Control word field
contents as arguments for all error conditions except pattern type errors:
a) Coefficient Settings;
b) Coefficient 1 Request;
c) Coefficient 2 Request; and
d) Coefficient 3 Request.
d
If more than one error condition is true, then this state shall use the priority defined in table 83 to
determine which Transmit Error Response message Error argument to use.
b) a PATTERN TYPE field of the Training Control word set to 000b (i.e., Control/Status TTIU); and
c) an even number of bits set to zero in the TTIU,
then:
a) if the TX INIT bit is set to zero in the received Training Status word (see table 77), then this state shall:
1) send:
1) the messages and arguments shown in table 100 to the SP receiver; and
2) a Coefficients Status Updated message to the SP receiver;
2) send to the PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3 state machine the
messages and arguments shown in table 101;
3) if the TRAIN COMP bit in the received Training Status word:
a) is set to zero, then send to the PTT_SC1 state machine, PTT_SC2 state machine, and
PTT_SC3 state machine the messages and arguments shown in table 102 and table 103; or
b) is set to one, then send a Cancel message to the PTT_SC1 state machine, PTT_SC2 state
machine, and PTT_SC3 state machine;
and
4) send a TTIU Received (Attached Transmitter Initialized) message to the PTT_T state machine;
or
b) if TX INIT bit is set to one in the received Training Status word, then this state shall send a TTIU
Received (Attached Transmitter Not Initialized) message to the PTT_T state machine.
Table 100 defines the mapping of transmitted status word fields to messages sent to the SP receiver.
a
COEFFICIENT 3 STATUS Coefficient 3 Status
a
This message’s argument is set to the value (i.e., Maximum, Minimum, Update_Complete, or Ready) of
the corresponding Training Status word field associated with the attached phy's transmitter.
Table 101 defines the mapping of Training Status word fields to messages sent to the PTT_GC1 state
machine, PTT_GC2 state machine, and PTT_GC3 state machine.
Table 101 – Mapping the Training Status word to PTT_GC1 state machine messages, PTT_GC2 state
machine messages, and PTT_GC3 state machine messages
11b maximum
b
00b ready Get Coefficient 2 Control (Start)
11b maximum
11b maximum
a
This message is sent to the PTT_GC1 state machine.
b
This message is sent to the PTT_GC2 state machine.
c
This message is sent to the PTT_GC3 state machine.
Table 102 defines the mapping of transmitted control word fields to messages sent to the PTT_SC1 state
machine, PTT_SC2 state machine, and PTT_SC3 state machine.
Table 102 – Mapping the Training Control word to PTT_SC1 state machine messages, PTT_SC2 state
machine messages, and PTT_SC3 state machine messages
Code Name
b e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h b f
010b reference_2 COEFFICIENT 2 REQUEST Set Coefficient 2 Request
c e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h c f
011b no_equalization COEFFICIENT 2 REQUEST Set Coefficient 2 Request
d e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h d f
100b vendor_unique COEFFICIENT 2 REQUEST Set Coefficient 2 Request
d g
COEFFICIENT 3 REQUEST Set Coefficient 3 Request
a This message argument is set to Set Reference_1 regardless of the values in the COEFFICIENT 1
REQUEST field, the COEFFICIENT 2 REQUEST field, and the COEFFICIENT 3 REQUEST field.
b This message argument is set to Set Reference_2 regardless of the values in the COEFFICIENT 1
REQUEST field, the COEFFICIENT 2 REQUEST field, and the COEFFICIENT 3 REQUEST field.
c This message argument is set to Set No_Equalization regardless of the values in the COEFFICIENT 1
REQUEST field, the COEFFICIENT 2 REQUEST field, and the COEFFICIENT 3 REQUEST field.
d This message argument is set to Set Vendor_Unique regardless of the values in the COEFFICIENT 1
REQUEST field, the COEFFICIENT 2 REQUEST field, and the COEFFICIENT 3 REQUEST field.
e This message is sent to the PTT_SC1 state machine.
f This message is sent to the PTT_SC2 state machine.
g This message is sent to the PTT_SC3 state machine.
h The Coefficient 1 Request Usage message (see table 103), the Coefficient 2 Request Usage message
(see table 103), or the Coefficient 3 Request Usage message (see table 103) shall not be sent to the
PTT_SC1 state machine, PTT_SC 2 state machine, or PTT_SC 3 state machine.
Table 103 defines the mapping of the Coefficient Request byte to messages sent to the PTT_SC3 state
machine, PTT_SC2 state machine, and PTT_SC1 state machine.
Table 103 – Mapping Coefficient Request byte to PTT_SC3 state machine message, PTT_SC2 state
machine message, and PTT_SC1 state machine messages
Coefficient
Request PTT_SC3 state machine PTT_SC2 state machine PTT_SC1 state machine
byte (table message message message
80)
message not
05h Hold Increment Dual Increment Dual
sent
message not
0Ah Hold Decrement Dual Decrement Dual
sent
message not
14h Increment Dual Increment Dual Hold
sent
message not
28h Decrement Dual Decrement Dual Hold
sent
a
If a Coefficient 1 Request Usage message is sent to the PTT_SC1 state machine, a Coefficient 2 Request
Usage message is sent to the PTT_SC 2 state machine, or a Coefficient 3 Request Usage message is
sent to the PTT_SC 3 state machine, then PTT_R2 shall send:
1) the Coefficient 1 Request Usage message, Coefficient 2 Request Usage message, or Coefficient 3
Request Usage message; and
2) the Set Coefficient 1 Request message, Set Coefficient 2 Request message, or Set Coefficient 3
Request message.
This state count of the number of consecutive received Training Status words in which the TRAIN COMP bit is
set to one. If this number is three or greater, then this state shall send a Local Phy’s Transmitter Training
Complete message to the PTT_T state machine.
5.18.6 PTT_SC (phy layer transmitter training set transmitter coefficient) state machines
5.18.6.1 PTT_SC (phy layer transmitter training set transmitter coefficient) state machines overview
The PTT_SC1 state machines’ functions are to adjust the local phy’s transmitter coefficients’ and to manage
those coefficients’ status.
Figure 121 shows the PTT_SC1 state machine, PTT_SC2 state machine, and PTT_SC3 state machine.
PTT_SC1_1:Wait_Inc_Dec
Current Coefficient
1 Status (Ready) PTT_T
PTT_R Set Coefficient 1 Request
PTT_R Cancel
PTT_R Coefficient 1 Request Usage
SP Transmitter Training (Disable)
PTT_SC1_2:Set_Coefficient
Adjust
PTT_R Cancel Coefficient 1
PTT_SC1_3:Wait_Hold
Set Coefficient 1
PTT_R
Request (Hold)
PTT_R Cancel
Figure 121 – PTT_SC1, PTT_SC2, and PTT_SC3 (phy layer transmitter training set transmitter
coefficient) state machines
The PTT_SC1 state machine’s function is to adjust one of the local phy’s transmitter coefficients and to
manage that coefficient’s status. This state machine consists of the following states:
a) PTT_SC1_0:Idle (see 5.18.6.3) (initial state);
b) PTT_SC1_1:Wait_Inc_Dec (see 5.18.6.4);
c) PTT_SC1_2:Set_Coefficient (see 5.18.6.5); and
d) PTT_SC1_3:Wait_Hold (see 5.18.6.6).
This state machine receives the following message from the SP state machine:
a) Transmitter Training (Disable).
This state:
a) requests the SP transmitter increment the coefficient, decrement the coefficient, set the coefficient to
its no equalization value, set the coefficient to its reference_1 value, set the coefficient to its
reference_2 value, or set the coefficient to its vendor_unique value;
b) waits for the SP transmitter to complete the requested adjustment; and
c) reports the status of the SP transmitter’s coefficient to the PTT_T state machine.
If this state was entered with an Increment argument and a Single argument, then this state shall send an
Adjust Coefficient 1 message to the SP transmitter with the following arguments:
a) Increment; and
b) Single.
If this state was entered with an Increment argument and a Dual argument, then this state shall send an
Adjust Coefficient 1 message to the SP transmitter with the following arguments:
a) Increment; and
b) Dual.
If this state was entered with a Decrement argument and a Single argument, then this state shall send an
Adjust Coefficient 1 message to the SP transmitter with the following arguments:
a) Decrement; and
b) Single.
If this state was entered with a Decrement argument and a Dual argument, then this state shall send an Adjust
Coefficient 1 message to the SP transmitter with the following arguments:
a) Decrement; and
b) Dual.
If this state was entered with a Set No_Equalization argument, then this state shall send an Adjust Coefficient
1 (Set No_Equalization) message to the SP transmitter.
If this state was entered with a Set Reference_1 argument, then this state shall send an Adjust Coefficient 1
(Set Reference_1) message to the SP transmitter.
If this state was entered with a Set Reference_2 argument, then this state shall send an Adjust Coefficient 1
(Set Reference_2) message to the SP transmitter.
If this state was entered with a Set Vendor_Unique argument, then this state shall send an Adjust Coefficient
1 (Set Vendor_Unique) message to the SP transmitter.
This state shall respond to the Transmitter Adjustment 1 Complete message received from the SP transmitter
with a message to the PTT_T state machine as defined in table 104.
This state waits for the attached phy’s transmitter to request a hold.
5.18.7 PTT_SC2 (phy layer transmitter training set transmitter coefficient 2) state machine
This state machine is identical to the PTT_SC1 state machine (see 5.18.6) except for the messages described
in table 105.
5.18.8 PTT_SC3 (phy layer transmitter training set transmitter coefficient 3) state machine
This state machine is identical to the PTT_SC1 state machine (see 5.18.6) except for the messages described
in table 106.
5.18.9 PTT_GC (phy layer transmitter training get transmitter coefficient) state machines
5.18.9.1 PTT_GC (phy layer transmitter training get transmitter coefficient) state machines overview
The PTT_GC state machines’ functions are to get coefficient adjustments being requested by the local phy’s
SP receiver for the attached phy’s transmitter and to manage those coefficients’ controls.
Figure 122 shows the PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3 state machine.
PTT_GC1_1:Get_Coefficient
Coefficient 1
Update Request PTT_T
Current Coefficient 1
PTT_GC1_2:Wait_Restart
Figure 122 – PTT_GC1, PTT_GC2, and PTT_GC3 (phy layer transmitter training get transmitter
coefficient) state machines
The PTT_GC1 state machine’s function is to get the coefficient 1 adjustment being requested by the local
phy’s SP receiver for the attached phy’s transmitter and to manage that coefficient’s control. This state
machine consists of the following states:
a) PTT_GC1_0:Idle (see 5.18.9.3) (initial state);
b) PTT_GC1_1:Get_Coefficient (see 5.18.9.4); and
c) PTT_GC1_2:Wait_Restart (see 5.18.9.5).
This state machine receives the following messages from the SP state machine:
a) Transmitter Training (Disable).
This state gets the coefficient that the local phy’s receiver is requesting be sent to the attached phy’s
transmitter.
This state shall repeatedly:
1) send a Get Current Coefficient 1 message to the SP receiver;
2) wait for a Current Coefficient 1 message received from the SP receiver; and
3) respond to the Current Coefficient 1 message received from the SP receiver with a message to the
PTT_T state machine as defined in table 107.
Message from the SP receiver Message sent to the PTT_T state machine
This state waits for the attached phy’s transmitter to indicate that the requested coefficient update is complete.
If this state receives a Get Coefficient 1 Control (Restart) message, then this state shall send a Coefficient 1
Update Request (Hold) message to the PTT_T state machine.
5.18.10 PTT_GC2 (phy layer transmitter training get transmitter coefficient 2) state machine
This state machine is identical to the PTT_GC1 state machine (see 5.18.9) except for the messages
described in table 108.
5.18.11 PTT_GC3 (phy layer transmitter training get transmitter coefficient 3) state machine
This state machine is identical to the PTT_GC1 state machine (see 5.18.9) except for the messages
described in table 109.
5.18.12 PTT_PL (phy layer transmitter training pattern lock) state machine
The PTT_PL state machine establishes the same transmitter training pattern lock at the local phy’s receiver as
was sent from the attached phy’s transmitter by searching for the pattern marker (see 5.11.4.2.3.4.3). The SP
receiver monitors and decodes the incoming data stream and forces the pattern marker to the first position of
the Train_Tx pattern (see 5.11.4.2.3.4) to perform pattern lock, when requested by the PTT_PL state machine.
After pattern lock synchronization has been achieved, this state machine evaluates the pattern marker at the
beginning of each Train_Tx pattern that is received. If five consecutive invalid pattern markers (see
5.11.4.2.3.4.3) are detected, then pattern lock is considered lost. If pattern lock is lost, then receipt of two
consecutive valid pattern markers (see 5.11.4.2.3.4.3) is required to reestablish pattern lock.
While pattern lock is lost, any Train_Tx pattern received is invalid.
The state machine shall transition to the PTT_PL0:Idle state from any other state after receiving a Transmitter
Training (Disable) message from the SP state machine (see 5.14.4.13).
This state machine consists of the following states:
a) PTT_PL0:Idle (see 5.18.12.2) (initial state);
b) PTT_PL1:Acquire_Lock (see 5.18.12.3);
c) PTT_PL2:Valid (see 5.18.12.4);
d) PTT_PL3:Lock_Acquired (see 5.18.12.5);
e) PTT_PL4:Lost1 (see 5.18.12.6);
f) PTT_PL5:Lost2 (see 5.18.12.7);
g) PTT_PL6:Lost3 (see 5.18.12.8); and
h) PTT_PL7:Lost4 (see 5.18.12.9).
This state machine receives the following message from the SP state machine:
a) Transmitter Training (Disable).
PTT_PL7:
Lost4
Valid Pattern
Marker Pattern Lock Lost SP
Figure 123 – PTT_PL (phy layer transmitter training pattern lock) state machine
This state waits for the SP receiver to receive a valid pattern marker.
This state waits for the SP receiver to receive the second pattern marker.
This state is reached after two valid pattern markers have been received without the receipt of an intervening
invalid pattern marker.
If this state is entered from the PTT_PL2:Valid state, then upon entry into this state, this state shall send a
Pattern Locked message to the PTT_R state machine (see 5.14) and the PTT_R state machine (see 5.18.5).
This state waits for the SP receiver to receive an invalid pattern marker.
This state is reached after one invalid pattern marker has been received.
This state is reached after two invalid pattern markers have been received.
This state is reached after three invalid pattern markers have been received.
This state is reached after four invalid pattern markers have been received.
If this state receives an Invalid Pattern Marker message, then this state shall send a Pattern Lock Lost
message to the:
a) PTT_R state machine (see 5.18.5); and
b) SP state machine (see 5.14).
5.19 PAPTA (phy layer active phy transmitter adjustment) state machines
The phy layer contains PAPTA state machines that control the physical link during active SP transmitter
adjustment. The PAPTA state machines are as follows:
a) PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients) state
machine (see 5.19.4);
b) PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients) state
machine (see 5.19.5); and
c) PAPTA_TC (phy layer SP receiver management of attached SP transmitter coefficient adjustments)
state machine (see 5.19.6).
After an Enable APTA message is received the phy may:
a) start adjustment of the attached phy; or
b) be adjusted by the attached phy.
After a Disable APTA message or a Disable APTA request is received the phy shall stop:
a) adjustment; and
b) responding to adjustment requests.
After a Received APTA_ADJUST message with an argument of Terminate is received the phy shall stop
adjustment.
If the state machine consists of multiple states, then the initial state is as indicated in the state machine
description in this subclause.
Any message, request, or confirmation received by a state that is not referred to in the description of that state
shall be ignored.
The SP transmitter sends binary primitives in response to messages from the PAPTA state machines (see
5.14.2) that:
a) specify changes to the attached SP transmitter coefficients (see 5.19.4); and
b) indicate APTA status (see 5.19.6).
The SP transmitter relationship to other SP transmitters is defined in 4.3.2.
5.19.2.2 SP transmitter sends APTA binary primitives messages when messages are received
The SP transmitter sends APTA binary primitives when messages are received from the PAPTA state
machines as indicated in table 110.
The individual coefficient limits and APTA status reporting definitions associated with relationships between
coefficients specified in SAS-4 shall be maintained by the SP transmitter while processing coefficient
adjustment requests.
In response to:
a) a Received APTA_COEFFICIENT_1 with an argument of Increment or Decrement;
b) a Received APTA_COEFFICIENT_2 with an argument of Increment or Decrement; or
c) a Received APTA_COEFFICIENT_3 with an argument of Increment or Decrement,
the SP transmitter shall adjust the specified coefficient if that adjustment results in the specified coefficient
being:
a) less than a maximum value; and
b) greater than a minimum value (see SAS-4).
In response to:
a) a Received APTA_COEFFICIENTS_1_2 with an argument of Increment or Decrement; or
b) a Received APTA_COEFFICIENTS_2_3 with an argument of Increment or Decrement,
the SP transmitter shall for each specified coefficient, adjust that coefficient if that adjustment results in:
a) that coefficient being less than a maximum value and greater than a minimum value; and
b) the other coefficient being less than a maximum value and greater than a minimum value.
If the SP transmitter adjusts a specified coefficient to a value less than a maximum value and greater than a
minimum value, then after the adjustment is complete the SP transmitter shall send to the APTA state
machine state that requested the SP transmitter adjustment the message associated with the adjusted
coefficient or coefficients (i.e., Transmit APTA_COEFFICIENT_1 (Updated) message, Transmit
APTA_COEFFICIENT_2 (Updated) message, Transmit APTA_COEFFICIENT_3 (Updated) message,
Transmit APTA_COEFFICIENTS_1_2 (Updated) message, or Transmit APTA_COEFFICIENTS_2_3
(Updated) message).
In response to:
a) a Received APTA_COEFFICIENT_1 (Increment);
b) a Received APTA_COEFFICIENT_2 (Increment); or
c) a Received APTA_COEFFICIENT_3 (Increment),
the SP transmitter shall adjust the specified coefficient if that adjustment results in the specified coefficient
being equal to a maximum value (see SAS-4).
In response to:
a) a Received APTA_COEFFICIENTS_1_2 (Increment); or
b) a Received APTA_COEFFICIENTS_2_3 (Increment),
the SP transmitter shall, for each specified coefficient, adjust that coefficient if that adjustment results in:
a) that coefficient being less than or equal to a maximum value; and
b) no coefficient being greater than a maximum value.
If the SP transmitter adjusts a specified coefficient to a maximum value, then after the adjustment is complete
the SP transmitter shall send to the APTA state machine state that requested the SP transmitter adjustment
the message associated with the adjusted coefficient or coefficients (i.e., Transmit APTA_COEFFICIENT_1
(Maximum) message, Transmit APTA_COEFFICIENT_2 (Maximum) message, Transmit
APTA_COEFFICIENT_3 (Maximum) message, Transmit APTA_COEFFICIENTS_1_2 (Maximum) message,
or Transmit APTA_COEFFICIENTS_2_3 (Maximum) message).
If the processing of the requested SP transmitter adjustment results in an adjustment that is greater than a
coefficient’s maximum value, then:
a) no adjustment shall be made to any coefficient; and
b) the SP transmitter shall send to the APTA state machine state that requested the SP transmitter
adjustment the message associated with the specified coefficient or coefficients (i.e., Transmit
APTA_COEFFICIENT_1 (Maximum) message, Transmit APTA_COEFFICIENT_2 (Maximum)
message, Transmit APTA_COEFFICIENT_3 (Maximum) message, Transmit
APTA_COEFFICIENTS_1_2 (Maximum) message, or Transmit APTA_COEFFICIENTS_2_3
(Maximum) message).
In response to:
a) a Received APTA_COEFFICIENT_1 (Decrement);
b) a Received APTA_COEFFICIENT_2 (Decrement); or
c) a Received APTA_COEFFICIENT_3 (Decrement),
the SP transmitter shall adjust the specified coefficient if that adjustment results in the specified coefficient
being equal to a minimum value (see SAS-4).
In response to:
a) a Received APTA_COEFFICIENTS_1_2 (Decrement); or
b) a Received APTA_COEFFICIENTS_2_3 (Decrement),
the SP transmitter shall for each specified coefficient, adjust that coefficient if that adjustment results in:
a) that coefficient being greater than or equal to a minimum value; and
b) no coefficient being less than a minimum value.
If the SP transmitter adjusts a specified coefficient to a minimum value, then after the adjustment is complete
the SP transmitter shall send to the APTA state machine state that requested the SP transmitter adjustment
the message associated with the adjusted coefficient or coefficients (i.e., Transmit APTA_COEFFICIENT_1
(Minimum) message, Transmit APTA_COEFFICIENT_2 (Minimum) message, Transmit
APTA_COEFFICIENT_3 (Minimum) message, Transmit APTA_COEFFICIENTS_1_2 (Minimum) message, or
Transmit APTA_COEFFICIENTS_2_3 (Minimum) message).
If the processing of the requested SP transmitter adjustment results in an adjustment that is less than a
coefficient’s minimum value, then:
a) no adjustment shall be made to any coefficient; and
b) the SP transmitter shall send to the APTA state machine state that requested the SP transmitter
adjustment the message associated with the specified coefficient or coefficients that is equal to or
less than a minimum value (i.e., Transmit APTA_COEFFICIENT_1 (Minimum) message, Transmit
APTA_COEFFICIENT_2 (Minimum) message, Transmit APTA_COEFFICIENT_3 (Minimum)
message, Transmit APTA_COEFFICIENTS_1_2 (Minimum) message, or Transmit
APTA_COEFFICIENTS_2_3 (Minimum) message).
The SP receiver:
a) manages APTA using an algorithm that is beyond the scope of this standard;
b) sends messages to the PAPTA state;
c) in response to binary primitives received by the SP receiver (see 5.14.2) that specify changes to the
local SP transmitter coefficients (see 5.19.4); and
d) requests coefficient changes by sending messages to the PAPTA_L_A state machine (see 5.19.5).
The SP receiver relationship to other SP receivers is defined in 4.3.3.
The SP receiver sends messages to the PAPTA state machines as indicated in table 111 when binary
primitives are received.
The SP receiver receives the following messages from the PAPTA_L_A state machine (see 5.19.5):
a) Get Next Coefficient.
In response to a Get Next Coefficient message, the SP receiver sends one of the following messages to the
PAPTA_L_A state machine (see 5.19.5):
a) Next Coefficient with an argument of:
A) Increment Coefficient 1;
B) Decrement Coefficient 1;
C) Increment Coefficient 2;
D) Decrement Coefficient 2;
E) Increment Coefficient 3;
F) Decrement Coefficient 3;
G) Increment Coefficients 1_2;
H) Decrement Coefficients 1_2;
I) Increment Coefficients 2_3;
J) Decrement Coefficients 2_3; or
K) Adjustment Complete.
5.19.4 PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine
PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients )
PAPTA_A_L0:Idle
PAPTA_A_L1:
Wait_For_Start
Disable APTA
SP Disable APTA PAPTA_A_L2:
Adjust_Local_Transmitter
Received
APTA_ADJUST
Attached Phy
Terminate Terminated APTA
APTA
Disable APTA
SP Disable APTA
Received APTA_COEFFICIENT_1 Transmit APTA_COEFFICIENT_1
Figure 124 – PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine
This state waits for a Received APTA_ADJUST message with an argument of Start.
5.19.5 PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
state machine
PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
PAPTA_L_A0:Initialize
Adjust Attached
Transmitter
PAPTA_L_A1:Start
Transmit APTA_ADJUST
Disable APTA
PAPTA_L_A2:
SP Disable APTA
Adjust_Attached_Transmitter
Received
APTA_ADJUST
Attached Phy
Terminated APTA
Adjustment Complete
Terminate APTA
Disable APTA
SP Disable APTA
Next Coefficient Get Next Coefficient
PAPTA_TC1 Coefficient 1 Adjustment Done L_A Adjust Coefficient 1 PAPTA_TC1
PAPTA_TC2 Coefficient 2 Adjustment Done L_A Adjust Coefficient 2 PAPTA_TC2
PAPTA_TC3 Coefficient 3 Adjustment Done L_A Adjust Coefficient 3 PAPTA_TC3
PAPTA_TC1_2 Coefficient 1_2 Adjustment Done L_A Adjust Coefficient 1_2 PAPTA_TC1_2
PAPTA_TC2_3 Coefficient 2_3 Adjustment Done L_A Adjust Coefficient 2_3 PAPTA_TC2_3
Received APTA_ADJUST Transmit APTA_ADJUST
Figure 125 – PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
state machine
This state sends a start APTA adjustment to the attached phy and waits for a response.
Upon entry into this state, this state shall send:
a) a Transmit APTA_ADJUST message with an argument of Start to the SP transmitter.
This state waits for:
a) a Received APTA_ADJUST message with an argument of Ready.
If this state receives a Received APTA_ADJUST message with an argument of Terminate, then this state shall
send:
a) an Attached Phy Terminated APTA confirmation to the management application layer.
If this state receives:
a) a Terminate APTA request from the management application layer;
b) a Disable APTA request from the link layer; or
c) a Disable APTA message,
then this state shall send:
a) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.
This state:
a) gets the coefficient that the local phy’s SP receiver is requesting be sent to the attached phy’s SP
transmitter;
b) sends messages to the PAPTA_TC state machines;
c) reports that the adjustment is complete; and
d) waits for a PAPTA_TC state machine to report completion of each coefficient change request.
Upon entry into this state, this state shall send:
a) a Get Next Coefficient message to the SP receiver.
This state receives a Next Coefficient message from the SP receiver and then sends a message to the
PAPTA_TC state machine (see 5.19.6) as defined in table 112.
If this state receives a Next Coefficient message with an argument of Adjustment Complete, then this state
shall send:
a) a Transmit APTA_ADJUST message with an argument of Complete to the SP transmitter; and
b) an Adjustment Complete confirmation to the management application layer.
After receiving:
a) a Coefficient 1 Adjustment Done message;
b) a Coefficient 2 Adjustment Done message;
c) a Coefficient 3 Adjustment Done message;
d) a Coefficients 1_2 Adjustment Done message; or
e) a Coefficients 2_3 Adjustment Done message,
then this state shall send a Get Next Coefficient message to the SP receiver.
If this state receives a Received APTA_ADJUST message with an argument of Terminate, then this state shall
send:
a) an Attached Phy Terminated APTA confirmation to the management application layer.
If this state receives:
a) a Terminate APTA request from the management application layer;
b) a Disable APTA request from the link layer; or
c) a Disable APTA message,
then this state shall send:
a) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.
PAPTA_TC1_0:Idle
PAPTA_TC1:Request_Change
SP Coefficient 1
Disable APTA PAPTA_L_A
Adjustment Done
Received Transmit
APTA_ADJUST APTA_ADJUST
Received Transmit
APTA_COEFFICIENT_1 APTA_COEFFICIENT_1
Figure 126 – PAPTA_TC (phy layer SP receiver management of attached SP transmitter coefficient
adjustments) state machines
This state machine requests changes to the value of coefficient 1 (see SAS-4) of the attached SP transmitter.
This state machine consists of the following states:
a) PAPTA_TC1_0:Idle (see 5.19.6.2.2) (initial state); and
b) PAPTA_TC1_1:Request_Change (see 5.19.6.2.3).
This state:
a) sends requests to the SP transmitter to send APTA binary primitives to adjust the attached phys SP
transmitter coefficient values;
b) waits for APTA status messages from the SP receiver; and
c) manages the Receiver Adaptation timer.
If this state was entered with an Increment argument, then this state shall send:
a) a Transmit APTA_COEFFICIENT_1 message with an argument of Increment to the SP transmitter.
If this state was entered with a Decrement argument, then this state shall send:
a) a Transmit APTA_COEFFICIENT_1 message with an argument of Decrement to the SP transmitter.
On receiving a Received APTT_COEFFICIENT_1 message with an argument of Updated, Maximum, or
Minimum, this state shall initialize and start the Receiver Adaptation timer.
When the Receiver Adaptation timer expires this state shall:
a) send a Coefficient 1 Adjustment Done message to the PAPTA_L_A state machine; and
b) stop the Receiver Adaptation timer.
If this state receives a Received APTA_ADJUST message with an argument of Terminate, then this state shall
send:
a) an Attached Phy Terminated APTA confirmation to the management application layer.
If this state receives:
a) a Terminate APTA request from the management application layer;
b) a Disable APTA request from the link layer; or
c) a Disable APTA message,
then this state shall send:
a) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.
This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 114.
This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 115.
This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 116.
This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 117.
5.20 Spinup
If a SAS target device receives COMSAS during the OOB sequence, then it shall not temporarily consume
additional power (e.g., to spin up rotating media) until allowed by the SA_PC state machine (see 9.2.10).
Expander devices that detect an attached SATA phy may halt the automatic phy reset sequence after the
COMSAS Detect Timeout (see 5.14) to delay temporary consumption of additional power. The resulting SATA
spinup hold is reported in the NEGOTIATED PHYSICAL LINK RATE field in the SMP DISCOVER response (see
9.4.4.10) and is released with the SMP PHY CONTROL function (see 9.4.4.28).
NOTE 13 - Some enclosures supporting both SATA devices and SAS target devices sequence power to each
attached device to avoid excessive power consumption during power on, since some SATA devices
temporarily consume additional power automatically after power on if staggered spin-up is not implemented
(see SATA).
6 Link layer
The link layer defines primitives, address frames, and connections. Link layer state machines interface to the
port layer and the phy layer and perform the identification and hard reset sequences, connection
management, and SSP, STP, and SMP specific frame transmission and reception.
6.2 Primitives
Primitives are dwords whose first character is a K28.3 or K28.5. Primitives are not considered big-endian or
little-endian. Primitives are interpreted as first, second, third, and last characters. Table 118 defines the
00primitive format.
Character Description
From b To b Primitive
Primitive Use a sequence
I E T I E T type c
All,
ALIGN (0)
SpNeg
SAS,
ALIGN (1) I E T I E T Single
SpNeg
ALIGN (2)
SAS
ALIGN (3)
NOTIFY (ENABLE SPINUP) I E T
NOTIFY (POWER LOSS EXPECTED) SAS I E T Single
NOTIFY (RESERVED 1) I E T
OOB_IDLE SpNeg I E T I E T Single
Key:
All = SAS logical links and SATA physical links
SAS = SAS logical links, both outside connections and inside any type of connection
NoConn = SAS logical links, outside connections
Conn = SAS logical links, inside connections
STP = SAS logical links, inside STP connections
SpNeg = SAS physical links, during speed negotiation
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the primitive is used.
b
The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c
The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, a triple primitive sequence, or a redundant
primitive sequence (see 6.2.4).
Table 120 defines the primitives not specific to the type of connection.
From b To b Primitive
a
Primitive Use sequence
I E T I E T type c
AIP (NORMAL) E
AIP (RESERVED 0)
AIP (RESERVED 1)
AIP (RESERVED 2)
NoConn I E T Extended
AIP (RESERVED WAITING ON PARTIAL)
AIP (WAITING ON CONNECTION) E
AIP (WAITING ON DEVICE) E
AIP (WAITING ON PARTIAL) E
BREAK SAS I E T I E T Redundant
BREAK_REPLY SAS I E T I E T Redundant
BROADCAST (CHANGE) I E I
BROADCAST (SES) T I
BROADCAST (EXPANDER) E I
BROADCAST (ASYNCHRONOUS EVENT) T I
NoConn Redundant
BROADCAST (RESERVED 3)
BROADCAST (RESERVED 4)
BROADCAST (RESERVED CHANGE 0) I
BROADCAST (RESERVED CHANGE 1) I
Key:
All = SAS logical links and SATA physical links
SAS = SAS logical links, both outside connections and inside any type of connection
NoConn = SAS logical links, outside connections
Conn = SAS logical links, inside connections
STP = SAS logical links, inside STP connections
SpNeg = SAS physical links, during speed negotiation
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the primitive is used.
b
The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c
The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
From b To b Primitive
Primitive Use a sequence
I E T I E T type c
CLOSE (CLEAR AFFILIATION) STP I T
CLOSE (NORMAL) I T
Triple
CLOSE (RESERVED 0) Conn I T
CLOSE (RESERVED 1)
EOAF NoConn I E T I E T Single
ERROR SAS E I E T Single
HARD_RESET NoConn I E I E T Redundant
OPEN_ACCEPT NoConn I T I T Single
Key:
All = SAS logical links and SATA physical links
SAS = SAS logical links, both outside connections and inside any type of connection
NoConn = SAS logical links, outside connections
Conn = SAS logical links, inside connections
STP = SAS logical links, inside STP connections
SpNeg = SAS physical links, during speed negotiation
I = SAS initiator ports
E = expander ports
T = SAS target ports
a The Use column indicates when the primitive is used.
b The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
From b To b Primitive
Primitive Use a sequence
I E T I E T type c
From b To b Primitive
Primitive Use a sequence
I E T I E T type c
PWR_ACK NoConn I E T I E T Redundant
PWR_DONE NoConn T I E Redundant
PWR_GRANT NoConn I E T Redundant
PWR_REQ NoConn T I E Redundant
SOAF NoConn I E T I E T Single
TRAIN
SpNeg I E T I E T Redundant
TRAIN_DONE
Key:
All = SAS logical links and SATA physical links
SAS = SAS logical links, both outside connections and inside any type of connection
NoConn = SAS logical links, outside connections
Conn = SAS logical links, inside connections
STP = SAS logical links, inside STP connections
SpNeg = SAS physical links, during speed negotiation
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the primitive is used.
b
The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c
The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
Table 121 defines the primitives used only inside SSP and SMP connections.
Table 121 – Primitives used inside SSP and SMP connections (part 1 of 2)
From b To b Primitive
Primitive Use a sequence
I E T I E T type c
Table 121 – Primitives used inside SSP and SMP connections (part 2 of 2)
From b To b Primitive
a
Primitive Use sequence
I E T I E T type c
a
The Use column indicates when the primitive is used.
b
The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c
The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
Table 122 lists the primitives used only inside STP connections and on SATA physical links.
Table 122 – Primitives used inside STP connections and on SATA physical links (part 1 of 2)
From b To b
Primitive
Primitive Use a
sequence type c
I E T I E T
SATA_CONT STP, SATA I T I T Single
SATA_DMAT STP, SATA I T I T Single
SATA_EOF STP, SATA I T I T Single
SATA_ERROR d SATA E T Single
SATA_HOLD STP, SATA I T I T Continued
SATA_HOLDA STP, SATA I T I T Continued
SATA I E
SATA_PMACK Repeated
STP
SATA_PMNAK STP, SATA I E T Repeated
SATA I E
SATA_PMREQ_P Continued
STP
Key:
STP = SAS logical links, inside STP connections
SATA = SATA physical links
I = STP initiator ports and SATA host ports
E = expander ports
T = STP target ports and SATA device ports
a The Use column indicates when the primitive is used.
b The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c
The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
d
Although included in this table, SATA_ERROR is not a primitive since it starts with K28.6. It does not
appear inside STP connections. It is an invalid dword, used by expander devices forwarding an error
onto a SATA physical link (see 6.2.8.1).
Table 122 – Primitives used inside STP connections and on SATA physical links (part 2 of 2)
From b To b
a Primitive
Primitive Use
sequence type c
I E T I E T
SATA I E
SATA_PMREQ_S Continued
STP
SATA_R_ERR STP, SATA I T I T Continued
SATA_R_IP STP, SATA I T I T Continued
SATA_R_OK STP, SATA I T I T Continued
SATA_R_RDY STP, SATA I T I T Continued
SATA_SOF STP, SATA I T I T Single
SATA_SYNC STP, SATA I T I T Continued
SATA_WTRM STP, SATA I T I T Continued
SATA_X_RDY STP, SATA I T I T Continued
Key:
STP = SAS logical links, inside STP connections
SATA = SATA physical links
I = STP initiator ports and SATA host ports
E = expander ports
T = STP target ports and SATA device ports
a The Use column indicates when the primitive is used.
b The From and To columns indicate the type of ports that originate each primitive or are the intended
destinations of each primitive.
Expander ports are not considered originators of primitives that are being forwarded from expander port
to expander port within an expander.
c The Primitive sequence type columns indicate whether the primitive is a single primitive sequence, a
repeated primitive sequence, a continued primitive sequence, an extended primitive sequence, a triple
primitive sequence, or a redundant primitive sequence (see 6.2.4).
d Although included in this table, SATA_ERROR is not a primitive since it starts with K28.6. It does not
appear inside STP connections. It is an invalid dword, used by expander devices forwarding an error
onto a SATA physical link (see 6.2.8.1).
Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)
Table 124 defines the primitive encoding for primitives not specific to type of connection.
Table 124 – Primitive encoding for primitives not specific to type of connection (part 1 of 2)
Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)
Table 124 – Primitive encoding for primitives not specific to type of connection (part 2 of 2)
Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)
Table 125 defines the primitive encodings for primitives used only inside SSP and SMP connections.
Table 125 – Primitive encoding for primitives used only inside SSP and SMP connections
Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)
Table 126 lists the primitive encodings for primitives used only inside STP connections and on SATA physical
links.
Table 126 – Primitive encoding for primitives used only inside STP connections and only on SATA
physical links
Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)
Length of
a b primitive
Primitive sequence type Transmit Receive Reference
parameter c
(dwords)
Single 1 1 0 to 3 6.2.4.2
Repeated 1 or more 1 0 6.2.4.3
Continued 2 followed by SATA_CONT 1 0 6.2.4.4
Extended 3 1 0 to 3 6.2.4.5
Triple 3 3 0 to 3 6.2.4.6
Redundant 6 3 0 or 1 6.2.4.7
a
Number of times the transmitter transmits the primitive to transmit the primitive sequence.
b
Number of times the receiver receives the primitive to detect the primitive sequence.
c
If the phy is in the SAS packet mode, then the length in dwords of the primitive parameter that may
occur after a primitive sequence within a primitive segment.
Primitives labeled as single primitive sequences (e.g., RRDY, SATA_SOF) shall be transmitted one time to
form a single primitive sequence. Section 6.2.2 describes the primitives that are single primitive sequences.
Receivers count each single primitive sequence received as a distinct single primitive sequence.
ALIGNs, and NOTIFYs are deletable primitives (see 6.2.5 and 6.5).
If the phy is in the SAS packet mode, then a primitive parameter with a length of one to three dwords may
follow a single primitive sequence. The primitive parameter that follows a single primitive sequence shall be
contained within a single primitive segment (i.e., the single primitive sequence plus the associated primitive
parameter, if any, shall be contained within a single SPL packet).
Primitives that form repeated primitive sequences (e.g., SATA_PMACK) shall be transmitted one or more
times. Section 6.2.2 describes the primitives that form repeated primitive sequences. Only STP primitives
form repeated primitive sequences. Any number of deletable primitives may be transmitted inside repeated
primitive sequences as described in 6.2.4.1.
Figure 127 shows an example of transmitting a repeated primitive sequence.
Time
STP
STP Another
primitive X
primitive X dword
(if needed)
Receivers do not count the number of times a repeated primitive is received. An expander device forwarding a
repeated primitive sequence may transmit more repeated primitives than it receives (i.e., expand) or transmit
fewer repeated primitives than it receives (i.e., contract). While transmitting a repeated primitive sequence,
the expander device is considered to be originating (see 6.5.2) rather than forwarding (see 6.5.4) for purposes
of deletable primitive insertion.
Figure 128 shows an example of receiving a repeated primitive sequence.
Time
STP
STP Another
primitive X
primitive X dword
(if needed)
Receive a new
Receive the repeated primitive sequence
primitive sequence or data dword
Primitives that form continued primitive sequences (e.g., SATA_HOLD) shall be transmitted as specified in
6.21.5. Section 6.2.2 describes the primitives that form continued primitive sequences. Any number of
deletable primitives may be transmitted inside continued primitive sequences as described in 6.2.4.1.
Primitives that form extended primitive sequences (e.g., AIP) shall be transmitted three times consecutively.
Section 6.2.2 describes the primitives that form extended primitive sequences. Any number of deletable
primitives may be transmitted inside extended primitive sequences or between primitive segments as
described in 6.2.4.1.
A receiver shall detect an extended primitive sequence after the primitive is received one time. The receiver
shall process an extended primitive sequence the same as a single primitive sequence (see 6.2.4.2).
If the phy is in the SAS packet mode, then a primitive parameter with a length of one to three dwords may
follow an extended primitive sequence. The primitive parameter that follows an extended primitive sequence
shall be contained within the second primitive segment of the extended primitive sequence (i.e., the extended
primitive sequence plus the associated primitive parameter, if any, shall be contained within two SPL packets
where the second SPL packet contains the associated primitive parameter, if any).
Figure 129 shows examples of extended primitive sequences while a phy is in the SAS dword mode.
Time
Transmitter transmits:
Extended Extended Extended Extended Extended
primitive Extended primitive primitive primitive primitive primitive
sequence sequence A sequence sequence sequence sequence
A A A B A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended B
Extended B
Extended B
Extended A
Extended A
Extended A
idle dword
idle dword
ALIGN
ALIGN
ALIGN
Receiver detects:
A A A A A A A A A A A A B B B A A A
Figure 129 –Extended primitive sequences while in the SAS dword mode
Figure 130 shows examples of extended primitive sequences while a phy is in the SAS packet mode.
Time
Transmitter transmits:
Extended primitive Extended primitive Extended primitive
sequence A sequence A sequence B
Primitive parameter
Primitive parameter
Primitive parameter
Scrambled idle
Extended A
Extended A
Extended A
Extended A
Extended A
Extended A
Extended B
Extended B
Extended B
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
ALIGN (3)
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
ALIGN (3)
ALIGN (1)
ALIGN (2)
segment
Primitive Primitive Primitive Primitive Primitive Primitive
segment segment segment segment segment segment
Receiver
detects:
A A A A A A B B B
Figure 130 –Extended primitive sequences while in the SAS packet mode
Primitives that form triple primitive sequences (e.g., CLOSE (NORMAL)) shall be transmitted three times
consecutively. Section 6.2.2 describes the primitives that form triple primitive sequences. Any number of
deletable primitives may be transmitted inside triple primitive sequences or between primitive segments as
described in 6.2.4.1.
A receiver that is required to detect a specific triple primitive sequence ignoring:
a) deletable primitives;
b) deletable binary primitives;
c) deletable extended binary primitives; and
d) scrambled idle segments,
shall detect that specific triple primitive sequence after the identical primitive is received in three consecutive
dwords. After detecting a triple primitive sequence, that receiver shall not detect a second instance of the
same triple primitive sequence until it has received three consecutive dwords that are not any of the following:
a) the original primitive;
b) a deletable primitive;
c) a deletable binary primitive;
d) a deletable extended binary primitive; or
e) a scrambled idle segment.
If the phy is in the SAS packet mode, then a primitive parameter with a length of one to three dwords may
follow a triple primitive sequence. The primitive parameter that follows a triple primitive sequence shall be
contained within the second primitive segment of the triple primitive sequence (i.e., the triple primitive
sequence plus the associated primitive parameter, if any, shall be contained within two SPL packets where the
second SPL packet contains the associated primitive parameter, if any).
Figure 131 shows examples of triple primitive sequences while a phy is in the SAS dword mode.
Time
Triple primitive Triple primitive
Triple primitive sequence A
sequence A sequence A
idle dword
idle dword
idle dword
idle dword
idle dword
idle dword
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
ALIGN
ALIGN
ALIGN
ALIGN
ALIGN
ALIGN
ALIGN
Receiver Receiver Receiver
detects detects detects
Time
Triple Triple Triple Triple
primitive primitive primitive primitive
sequence sequence sequence sequence
A B A B
Triple A
Triple A
Triple A
Triple B
Triple B
Triple B
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Triple B
Triple B
Triple B
ALIGN
ALIGN
ALIGN
ALIGN
ALIGN
Receiver Receiver Receiver ALIGN Receiver
detects detects detects detects
Figure 131 –Triple primitive sequences while in the SAS dword mode
Figure 132 shows examples of triple primitive sequences while a phy is in the SAS packet mode.
Time
Triple primitive Triple primitive
sequence A sequence A
Scrambled idle
Idle dword
Idle dword
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
ALIGN (3)
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
ALIGN (3)
segment
segment
segment
Triple A
Triple A
Triple A
Triple A
Triple A
Triple A
Primitive Primitive Primitive Primitive
segment segment segment segment
Receiver Receiver
detects detects
Time
Triple primitive Triple primitive
sequence A sequence B
Primitive parameter
Primitive parameter
Primitive parameter
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
ALIGN (3)
ALIGN (1)
ALIGN (2)
Triple A
Triple A
Triple A
Triple B
Triple B
Triple B
Figure 132 –Triple primitive sequences while in the SAS packet mode
Primitives that form redundant primitive sequences (e.g., BROADCAST (CHANGE)) shall be transmitted six
times consecutively. Section 6.2.2 describes the primitives that form redundant primitive sequences. Any
number of deletable primitives may be transmitted inside redundant primitive sequences or between primitive
segments as described in 6.2.4.1 unless prohibited by the primitives description (e.g., TRAIN, TRAIN_DONE).
A receiver that is required to detect a specific redundant primitive sequence ignoring:
a) deletable primitives;
b) deletable binary primitives;
c) deletable extended binary primitives; and
d) scrambled idle segments,
shall detect that specific redundant primitive sequence after the identical primitive is received in any three of
six consecutive dwords. After detecting a redundant primitive sequence, that receiver shall not detect a
second instance of the same redundant primitive sequence until it has received six consecutive dwords that
are not any of the following:
a) the original primitive;
b) a deletable primitive;
c) a deletable binary primitive;
d) a deletable extended binary primitive; or
e) a scrambled idle segment.
If the phy is in the SAS packet mode, then a primitive parameter with a length of one dword may follow a
redundant primitive sequence. The primitive parameter that follows a redundant primitive sequence shall be
contained within the second primitive segment of the redundant primitive sequence (i.e., the redundant
primitive sequence plus the associated primitive parameter, if any, shall be contained within two SPL packets
where the second SPL packet contains the associated primitive parameter, if any).
Figure 133 shows examples of redundant primitive sequences while a phy is in the SAS dword mode.
Time
Redundant primitive
sequence A Redundant primitive sequence A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
idle dword
idle dword
idle dword
idle dword
idle dword
idle dword
ALIGN
ALIGN
ALIGN
ALIGN
ALIGN
Receiver Receiver
detects detects
Time
Redundant primitive Redundant primitive Redundant primitive
sequence A sequence B sequence A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant B
Redundant B
Redundant B
Redundant B
Redundant B
Redundant B
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Figure 133 –Redundant primitive sequences while in the SAS dword mode
Figure 134 shows examples of redundant primitive sequences while a phy is in the SAS packet mode.
Time
Redundant primitive
sequence A Redundant primitive sequence A
Scrambled idle
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Idle dword
Idle dword
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (2)
segment
segment
segment
Primitive Primitive Primitive Primitive
segment segment segment segment
Receiver detects Receiver detects
Time
Redundant primitive Redundant primitive Redundant primitive
sequence A sequence B sequence A
Primitive parameter
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant B
Redundant B
Redundant B
Redundant B
Redundant B
Redundant B
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
Redundant A
ALIGN (1)
ALIGN (2)
ALIGN (1)
ALIGN (1)
ALIGN (2)
Primitive Primitive Primitive Primitive Primitive Primitive
segment segment segment segment segment segment
Receiver detects Receiver detects Receiver detects
Figure 134 –Redundant primitive sequences while in the SAS packet mode
6.2.5.1 ALIGN
Primitive Description
Used for OOB signals while D.C. mode is enabled and for the speed negotiation sequence,
ALIGN (0)
physical link rate tolerance management, phy power condition sequence, and rate matching.
Used for:
a) the speed negotiation sequence;
b) physical link rate tolerance management;
ALIGN (1)
c) phy power condition sequence;
d) padding within a primitive segment; and
e) rate matching.
Used for:
a) physical link rate tolerance management;
ALIGN (2)
b) padding within a primitive segment; and
c) rate matching.
Used for:
a) OOB signals while optical mode is enabled;
ALIGN (3)
b) padding within a primitive segment; and
c) physical link rate tolerance management, and rate matching.
If D.C. mode is enabled, then phys may use ALIGN (0) to construct OOB signals (see 5.7 and SAS-4). If
optical mode is enabled, then phys use ALIGN (3) to construct OOB signals (see 5.7 and SAS-4). Phys use
ALIGN (0) and ALIGN (1) during the:
a) speed negotiation sequence (see 5.11.4.2); and
b) phy power condition sequence (see 5.13).
If a phy is in SAS dword mode, then that phy shall rotate through transmitting ALIGN (0), ALIGN (1),
ALIGN (2), and ALIGN (3) for all ALIGNs transmitted after the phy reset sequence (e.g., if the first ALIGN
transmitted after the phy reset sequence is ALIGN (0), then the second transmitted is ALIGN (1), the third
transmitted is ALIGN (2), the fourth transmitted is ALIGN (3), the fifth transmitted is ALIGN (0), etc.).
NOTE 14 - ALIGN rotation is performed on a physical phy basis and is used to reduce radiated emissions.
Phys receiving ALIGNs after the phy reset sequence shall not verify the rotation and shall accept any of the
ALIGNs at any time.
Phys shall only detect an ALIGN after decoding all four characters in the primitive.
NOTE 15 - SATA devices are allowed to decode every dword starting with a K28.5 as an ALIGN, since ALIGN
is the only primitive defined starting with K28.5.
For physical link rate tolerance management and rate matching, ALIGNs may be replaced by NOTIFYs (see
6.2.5.2). ALIGNs shall not be replaced by NOTIFYs during OOB signals or speed negotiation.
6.2.5.2 NOTIFY
NOTIFY may be substituted in place of any ALIGN (see 6.2.5.1) being transmitted for physical link rate
tolerance management (see 6.5) or rate matching (see 6.17). Substitution of a NOTIFY in place of an ALIGN
may or may not affect the ALIGN rotation (i.e., the NOTIFY may take the place of one of the ALIGNs in the
rotation through ALIGN (0), ALIGN (1), ALIGN (2), and ALIGN (3), or may delay the rotation). A specific
NOTIFY shall not be transmitted in more than three consecutive dwords until at least three other dwords have
been transmitted.
NOTIFYs are deletable primitives (see 6.5). If a phy supports a specific NOTIFY primitive, then the phy should
decode that NOTIFY in logic running off the received clock without using an elasticity buffer rather than logic
after the elasticity buffer to avoid missing detection of important information.
NOTIFY shall not be forwarded through expander devices. Expander devices shall substitute an ALIGN for a
NOTIFY if necessary.
SAS target devices are not required to detect every transmitted NOTIFY.
The versions of NOTIFY representing different reasons are defined in table 129.
NOTIFY (ENABLE SPINUP) is transmitted by a SAS initiator port or expander port and is used to specify to a
SAS target device that it may temporarily consume additional power (e.g., to spin up rotating media) (see
9.2.10). The length of time the SAS target device consumes additional power and the amount of additional
power is vendor specific. NOTIFY (ENABLE SPINUP) shall interact with the SCSI target device's power
condition state transitions, controlled by the Power Conditions mode page (see SPC-6) and/or the START
STOP UNIT command (see SBC-3), as described in 9.2.10.
If power control is not enabled, then:
a) SAS initiator devices and expander devices shall use NOTIFY (ENABLE SPINUP) while attached to
SCSI target devices (i.e., SCSI target devices that report SSP target port support in their IDENTIFY
address frames);
b) SAS initiator ports and expander ports shall transmit one NOTIFY (ENABLE SPINUP) after power on
when the enclosure is ready for initial temporary consumption of additional power; and
c) after the initial NOTIFY (ENABLE SPINUP), SAS initiator ports and expander ports shall transmit
NOTIFY (ENABLE SPINUP) periodically.
The selection of when and how often to transmit NOTIFY (ENABLE SPINUP) is outside the scope of this
standard.
NOTE 16 - The SAS initiator device or expander device uses NOTIFY (ENABLE SPINUP) to avoid exceeding
enclosure power supply capabilities during temporary consumption of additional power by multiple SAS target
devices.
NOTIFY (ENABLE SPINUP) should be transmitted as frequently as possible to avoid incurring SCSI
application layer timeouts.
A SAS target device with multiple SSP target ports shall process a NOTIFY (ENABLE SPINUP) received by
any of its SSP target ports (e.g., if a dual-port SAS target device that powers on in the Stopped state receives
a START STOP UNIT command with the START bit set to one through one SSP target port followed by a
receipt of a NOTIFY (ENABLE SPINUP) on the other SSP target port, then the SAS target device may
temporarily consume additional power (see 9.2.10)).
NOTIFY (POWER LOSS EXPECTED) is transmitted by a SAS initiator port or expander port and is used to
specify to a SAS target device that power loss may occur within the time specified in the POWER LOSS TIMEOUT
field in the Shared Port Control mode page (see 9.2.7.6).
At least three NOTIFY (POWER LOSS EXPECTED) primitive sequences shall be transmitted by the SAS
initiator port or expander port.
If a SAS target device supports NOTIFY (POWER LOSS EXPECTED) and receives NOTIFY (POWER LOSS
EXPECTED) on an SSP target port, then:
a) each logical unit to which the SSP target port has access shall:
1) stop writing data to the medium as soon as possible without creating read errors for future reads
(e.g., on a direct-access block device, when a physical block boundary is reached); and
2) perform the actions for a power loss expected condition as defined in SAM-5;
and
b) the SAS target device shall:
A) on each phy that receives NOTIFY (POWER LOSS EXPECTED), if there is an SSP connection,
then transmit a BREAK primitive sequence on that connection; and
B) on each phy that does not receive NOTIFY (POWER LOSS EXPECTED), if there is an SSP
connection, then transmit a BREAK primitive sequence or a CLOSE primitive sequence on that
connection.
If the SAS target device receives any frames after receiving NOTIFY (POWER LOSS EXPECTED) before a
connection is closed, then it should discard the received frames.
The SCSI application layer that receives a Power Loss Expected event shall:
a) start the power loss timer;
b) send an Accept_Reject OPENs (Reject SSP) request to all ST_T state machines (i.e., all SSP
connection requests result in OPEN_REJECT (RETRY));
c) if a SCSI Command Received transport protocol service indication is received, then the SCSI device
server shall abort that command and send an Accept_Reject OPENs (Reject SSP) request to the
ST_T state machine on which the SCSI Command Received transport protocol service indication was
received; and
d) if the power loss timeout timer expires, then the SCSI application layer shall send an Accept_Reject
OPENs (Accept SSP) request to all ST_T state machines.
After power on, the power loss timeout timer shall be initialized and stopped until a NOTIFY (POWER LOSS
EXPECTED) is received.
6.2.5.3 OOB_IDLE
OOB_IDLE (see 5.14.4.2 and SAS-4) is used while a phy is in optical mode for:
a) OOB signals; and
b) speed negotiation.
AIP is transmitted by an expander device after a connection request to specify that the connection request is
being processed and specify the status of the connection request.
The versions of AIP representing different statuses are defined in table 130.
Primitive Description
Expander device has accepted the connection request. This primitive may be
AIP (NORMAL)
transmitted multiple times (see 6.16.5.3).
AIP (RESERVED 0)
AIP (RESERVED 1) Reserved. Processed the same as AIP (NORMAL).
AIP (RESERVED 2)
Expander device has determined the routing for the connection request, but
AIP (WAITING ON either the destination phys are all being used for connections or there are
CONNECTION) insufficient routing resources to complete the connection request. This may
be transmitted multiple times (see 6.16.5.3).
Expander device has determined the routing for the connection request and
AIP (WAITING ON DEVICE) forwarded the request to the output physical link. This is transmitted one time
(see 6.16.5.3).
Expander device has determined the routing for the connection request, but
AIP (WAITING ON PARTIAL) the destination phys are all busy with other partial pathways. This primitive
may be transmitted multiple times (see 6.16.5.3).
AIP (RESERVED WAITING
Reserved. Processed the same as AIP (WAITING ON PARTIAL).
ON PARTIAL)
6.2.6.2 BREAK
6.2.6.3 BREAK_REPLY
6.2.6.4 BROADCAST
BROADCASTs are used to notify SAS ports and expander devices in a SAS domain about certain events.
The versions of BROADCAST representing different Broadcasts (see table 14 in 4.1.15) are defined in table
131.
Primitive Description
A phy that has not completed the link reset sequence or a phy inside a connection shall:
a) not transmit a BROADCAST; and
b) ignore any received BROADCAST.
6.2.6.5 CLOSE
Primitive Description
Close an open STP connection and clear the affiliation (see 6.21.6).
Processed the same as CLOSE (NORMAL) if:
a) the connection is not an STP connection;
CLOSE (CLEAR AFFILIATION) b) the connection is an STP connection, but affiliations are not
implemented by the STP target port; or
c) the connection is an STP connection, but an affiliation is not
present.
CLOSE (NORMAL) Close a connection.
CLOSE (RESERVED 0)
Reserved. Processed the same as CLOSE (NORMAL).
CLOSE (RESERVED 1)
The CLOSE primitive parameter may be used by an expander device to send the extended fairness priority
(see 6.19.10) to an attached expander device.
The contents of the CLOSE primitive parameter shall be:
a) associated with a single OPEN address frame for which an expander device is arbitrating for access
to an outgoing expander port; and
b) set based on which of the following has the higher priority (see 6.19.10) of:
A) a received CLOSE primitive parameter (see 6.2.6.5.4); and
B) an OPEN address frame that an expander device is arbitrating for access to an outgoing
expander port (see 6.2.6.5.3).
Expander devices that do not support CLOSE primitive parameters and end devices shall ignore the contents
of the CLOSE primitive parameters’ dwords after the CLOSE (i.e., byte four to byte 15 of the primitive
segment).
Table 133 defines the primitive parameter format for the CLOSE.
Byte\
7 6 5 4 3 2 1 0
Bit
PARAMETER LENGTH
n HOP COUNT CONTROL 1 (10b)
(11b)
n+2 (MSB)
OPEN ARBITRATION WAIT TIME
n+3 (LSB)
n+4 (MSB)
••• OPEN DESTINATION SAS ADDRESS
n+11 (LSB)
6.2.6.5.3 CLOSE primitive parameter fields when being set from an open address frame
The CONTROL 1 field and the PARAMETER LENGTH field are defined in 5.5.4 and shall be set as shown in table
133 for the CLOSE primitive parameter.
The HOP COUNT field is a count of the number of expander devices the CLOSE has passed though without any
change to the CLOSE primitive parameter fairness information (see 6.19.10) and is a saturating counter.
The OPEN CONNECTION RATE field is set to contents of the CONNECTION RATE field (see 6.10.3) of the OPEN
address frame received by an expander device that the expander device is prevented from transmitting as a
result of resource limitations (e.g., all phys have active connections) (see 6.16.5.3).
The SMP OPEN PRIORITY bit is set to one when the SAS PROTOCOL field (see 6.10.3) of the OPEN address frame
received by an expander device is set to SMP. The SMP OPEN PRIORITY bit is set to zero when the SAS
PROTOCOL field is not set to SMP.
The HIGH PRIORITY bit is set to the contents of the High Priority argument as described in (see 6.16.5.1)
The OPEN ARBITRATION WAIT TIME field is set to the contents of the Arbitration Wait Time state machine variable
as described in (see 6.16.5.2.1).
The OPEN DESTINATION SAS ADDRESS field is set to the contents of the DESTINATION SAS ADDRESS field (see
6.10.3) of the OPEN address frame received by an expander device that the expander device is prevented
from transmitting as a result of resource limitations (e.g., all phys have active connections) (see 6.16.5.2).
6.2.6.5.4 CLOSE primitive parameter fields when being set from a received CLOSE with a
primitive parameter
The CONTROL 1 field and the PARAMETER LENGTH field are defined in 5.5.4 and shall be set as shown in table
133 for the CLOSE primitive parameter.
The HOP COUNT field is a count of the number of expander devices the CLOSE has passed though without any
change to the CLOSE primitive parameter fairness information (see 6.19.10) and is a saturating counter.
The OPEN CONNECTION RATE field, SMP OPEN PRIORITY bit, HIGH PRIORITY bit, OPEN ARBITRATION WAIT TIME field,
and OPEN DESTINATION SAS ADDRESS field are set to the contents of the corresponding field of the received
CLOSE primitive parameter (see 6.2.6.5.3).
6.2.6.7 ERROR
ERROR should be transmitted by an expander device while the expander device is forwarding dwords from a
SAS physical link or SATA physical link to a SAS physical link and receives an invalid dword or an ERROR.
Since an 8b10b coding error in one dword is sometimes not detected until the next dword (see table 51 in
5.3.9), expander devices should avoid deleting invalid dwords or ERRORs unless necessary (e.g., if the
elasticity buffer is full) to avoid hiding evidence that an error has occurred.
See 6.19 for details on error handling by expander devices.
6.2.6.8 HARD_RESET
HARD_RESET is used to force a phy to generate a hard reset (see 4.4.2) to its port. This primitive is only valid
after the phy reset sequence without an intervening identification sequence (see 4.4) and shall be ignored at
other times.
6.2.6.9 OPEN_ACCEPT
6.2.6.10 OPEN_REJECT
OPEN_REJECT specifies that a connection request has been rejected and specifies the reason for the
rejection. The result of some OPEN_REJECTs is to abandon (i.e., not retry) the connection request, and the
result of other OPEN_REJECTs is to retry the connection request.
All of the OPEN_REJECT versions defined in table 134 shall result in the originating port abandoning the
connection request.
All of the OPEN_REJECT versions defined in table 135 shall result in the originating port retrying the
connection request.
NOTE 17 - Some SAS logical phys compliant with earlier versions of this standard also transmit
OPEN_REJECT (RETRY) if they receive an OPEN address frame while their SL_CC state machines are in
the SL_CC5:BreakWait state (see 6.18.4.7).
When a SAS logical phy detects more than one reason to transmit an OPEN_REJECT, the SL_CC state
machine determines the priority in the SL_CC2:Selected state (see 6.18.4.4).
When an expander logical phy detects more than one reason to transmit an OPEN_REJECT, the ECM
determines the priority (see 6.16.5).
See 6.16 for details on connection requests.
OPEN_REJECT retry-class primitives (see table 135) may have an associated OPEN_REJECT retry-class
primitive parameter.
The OPEN_REJECT retry-class primitive parameter may be used by an end device or an expander device to
request the originator of a rejected OPEN address frame delay at least the time specified by the
OPEN_REJECT retry-class primitive parameter before initiating another OPEN address frame to the same
SAS destination address.
End devices that do not support OPEN_REJECT retry-class primitive parameters shall ignore the contents of
the next primitive segment’s dword after the OPEN_REJECT (see 5.5.4) if that dword’s:
a) CONTROL1 field is set to 10b (i.e., byte four to byte seven of the primitive segment);
b) CONTROL2 field is set to 10b (i.e., byte eight to byte 11 of the primitive segment); or
c) CONTROL3 field is set to 10b (i.e., byte 12 to byte 15 of the primitive segment).
Table 136 defines the primitive parameter format for the OPEN_REJECT retry-class primitives.
Byte\
7 6 5 4 3 2 1 0
Bit
CONTROL1 (10b)
PARAMETER LENGTH
n Reserved TIME SCALE CONTROL2 (10b)
(01b)
CONTROL3 (10b)
n+1 Reserved
n+2 (MSB)
OPEN RETRY DELAY
n+3 (LSB)
The CONTROL1 field, CONTROL2 field, or CONTROL3 field, and the PARAMETER LENGTH field are defined in 5.5.4
and shall be set as shown in table 136 for the OPEN_REJECT retry-class primitive parameter.
The TIME SCALE field (see table 137) indicates the time units for the contents of the OPEN RETRY DELAY field.
Code Description
00b 100 ns
01b 10 µs
10b 1 000 µs
11b Reserved
The OPEN RETRY DELAY field indicates the minimum time, in units indicated by the TIME SCALE field, that a SAS
port that receives an OPEN_REJECT should wait to establish a connection request with an associated SAS
port on the I_T nexus that received the OPEN_REJECT. An OPEN RETRY DELAY field set to 0000h indicates that
the Reject To Open Limit timer is set as described in table 200.
This Reject To Open Limit time is enforced by the port layer (see 7.2.2).
6.2.6.11 PS_ACK
PS_ACK specifies the positive acknowledgement of a PS_REQ. See 4.11, 6.13, 6.18, and 6.19 for details on
phy power conditions.
6.2.6.12 PS_NAK
PS_NAK specifies the negative acknowledgement of a PS_REQ. See 4.11, 6.13, 6.18, and 6.19 for details on
phy power conditions.
A PS_NAK occurs for the following reasons:
a) a PS_REQ is received and the requested low phy power condition is supported and disabled; or
b) a PS_REQ is received during an attempt to establish a connection.
6.2.6.13 PS_REQ
PS_REQ is used to request a transition to a specific low phy power condition (see 4.11.1).
The versions of PS_REQ representing different low phy power conditions are defined in table 138.
Primitive Description
PS_REQ (PARTIAL) Requests a transition into the partial phy power condition (see 4.11.1.3).
PS_REQ (SLUMBER) Requests a transition into the slumber phy power condition (see 4.11.1.4).
6.2.6.14 PWR_ACK
6.2.6.15 PWR_DONE
PWR_DONE is used by an end device to indicate it has completed consumption of the additional power
requested as a result of a PWR_GRANT (see 6.14).
6.2.6.16 PWR_GRANT
PWR_GRANT is used to specify that an end device may consume additional power (see 6.14).
6.2.6.17 PWR_REQ
PWR_REQ is used by an end device to request the consumption of additional power (see 6.14).
6.2.6.19 TRAIN
TRAIN is used during Train_Rx-SNW during speed negotiation. Deletable primitives shall not be transmitted
inside a TRAIN primitive sequence.
See 5.11.4.2.3.5 for details on Train_Rx-SNW.
6.2.6.20 TRAIN_DONE
TRAIN_DONE is used during Train_Rx-SNW during speed negotiation. Deletable primitives shall not be
transmitted inside a TRAIN_DONE primitive sequence.
See 5.11.4.2.3.5 for details on Train_Rx-SNW.
6.2.7.2 CREDIT_BLOCKED
CREDIT_BLOCKED specifies that no more RRDYs are going to be transmitted during this SSP connection
(i.e., transmit SSP frame credit is not going to be increased).
See 6.20.4 for details on SSP flow control.
CREDIT_BLOCKED is not used during an SMP connection.
6.2.7.3 DONE
DONE is used to start closing an SSP connection and specify a reason for doing so.
The versions of DONE representing different reasons are defined in table 139. The SSP state machines
describe when these are used (see 6.20.9).
Primitive Description
The SSP state machines (see 6.20.9) timed out waiting for an ACK or
NAK, and the phy is going to transmit BREAK primitive sequence in
DONE (ACK/NAK TIMEOUT)
1 ms unless DONE is received within 1 ms of transmitting the DONE
(ACK/NAK TIMEOUT).
DONE (RESERVED TIMEOUT 0)
Reserved. Processed the same as DONE (ACK/NAK TIMEOUT).
DONE (RESERVED TIMEOUT 1)
DONE (NORMAL) Finished transmitting all frames.
DONE (CLOSE) The SSP state machine (see 6.20.9)has received an RRDY (CLOSE).
DONE (RESERVED 0) Reserved. Processed the same as DONE (NORMAL).
The SSP state machines (see 6.20.9) timed out waiting for an RRDY or
received a CREDIT BLOCKED, and the phy is going to transmit BREAK
DONE (CREDIT TIMEOUT)
primitive sequence unless the phy receives a frame or a DONE within
1 ms of transmitting the DONE (CREDIT TIMEOUT).
If the phy is in the SAS dword mode, then EOF specifies the end of an SSP or SMP frame.
See 6.20.3 for details on SSP frame transmission and 6.22.1 for details on SMP frame transmission.
6.2.7.5 EXTEND_CONNECTION
NAK specifies the negative acknowledgement of an SSP frame and the reason for doing so.
The versions of NAK representing different reasons are defined in table 140.
Primitive Description
The frame had a bad CRC, an invalid dword, or an ERROR was received
NAK (CRC ERROR)
during frame reception.
NAK (RESERVED 0)
NAK (RESERVED 1) Reserved. Processed the same as NAK (CRC ERROR).
NAK (RESERVED 2)
Primitive Description
A phy shall not transmit RRDY after transmitting CREDIT_BLOCKED in a connection. See 6.20.4 for details
on SSP flow control.
RRDY is not used during an SMP connection.
6.2.8 Primitives used only inside STP connections and on SATA physical links
6.2.8.1 SATA_ERROR
SATA_ERROR should be transmitted by an expander device when it is forwarding dwords from a SAS logical
link to a SATA physical link and it receives an invalid dword or an ERROR.
Since an 8b10b coding error in one dword is sometimes not detected until the next dword (see table 51 in
5.3.9), expander devices should avoid deleting invalid dwords or ERRORs unless necessary (e.g., if the
elasticity buffer is full) to avoid hiding evidence that an error has occurred.
See 5.15 for details on error handling by expander devices.
Although included in this subclause, SATA_ERROR is not a primitive since it starts with K28.6. SATA_ERROR
does not appear inside STP connections. SATA_ERROR is an invalid dword.
SATA_PMREQ_P and SATA_PMREQ_S request entry into the partial interface power management sequence
and slumber interface power management sequence (see SATA). SATA_PMACK is used to accept a power
management request. SATA_PMNAK is used to reject an interface power management request.
See 6.21.4 for rules on STP flow control, which uses SATA_HOLD and SATA_HOLDA.
When a SATA port has a frame to transmit, it transmits SATA_X_RDY and waits for SATA_R_RDY before
transmitting the frame.
If the phy is in the SAS packet mode, then the expander device substitutes B_EOF for SATA_EOF to specify
the end of an STP frame as described in 6.21.3.
6.2.8.6 Other primitives used inside STP connections and on SATA physical links
Other primitives used in STP connections and on SATA physical links are defined in SATA.
From b To b Binary
a primitive
Binary primitive Use
sequence
I E T I E T
type c
APTA_ADJUST (COMPLETE)
APTA_ADJUST (READY)
APTA_ADJUST (START)
APTA_ADJUST (TERMINATE) NoConn I E T I E T Single
APTA_ADJUST (RESERVED 1)
APTA_ADJUST (RESERVED 2)
APTA_ADJUST (RESERVED 3)
APTA_COEFFICIENT_1 (DECREMENT)
APTA_COEFFICIENT_1 (INCREMENT)
APTA_COEFFICIENT_1 (MAXIMUM)
NoConn I E T I E T Single
APTA_COEFFICIENT_1 (MINIMUM)
APTA_COEFFICIENT_1 (UPDATED)
APTA_COEFFICIENT_1 (RESERVED 1)
APTA_COEFFICIENT_2 (DECREMENT)
APTA_COEFFICIENT_2 (INCREMENT)
APTA_COEFFICIENT_2 (MAXIMUM)
NoConn I E T I E T Single
APTA_COEFFICIENT_2 (MINIMUM)
APTA_COEFFICIENT_2 (UPDATED)
APTA_COEFFICIENT_2 (RESERVED 1)
Key:
NoConn = SAS logical links, outside connections
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the binary primitive is used.
b
The From and To columns indicate the type of ports that originate each binary primitive or are the
intended destinations of each binary primitive.
Expander ports are not considered originators of binary primitives that are being forwarded from
expander port to expander port within an expander.
c
The Binary primitive sequence type columns indicate whether the binary primitive is a single binary
primitive sequence, a triple binary primitive sequence, or a redundant binary primitive sequence (see
6.3.3).
From b To b Binary
a primitive
Binary primitive Use
sequence
I E T I E T
type c
APTA_COEFFICIENT_3 (DECREMENT)
APTA_COEFFICIENT_3 (INCREMENT)
APTA_COEFFICIENT_3 (MAXIMUM)
NoConn I E T I E T Single
APTA_COEFFICIENT_3 (MINIMUM)
APTA_COEFFICIENT_3 (UPDATED)
APTA_COEFFICIENT_3 (RESERVED 1)
APTA_COEFFICIENT_1_2 (DECREMENT)
APTA_COEFFICIENT_1_2 (INCREMENT)
APTA_COEFFICIENT_1_2 (MAXIMUM)
NoConn I E T I E T Single
APTA_COEFFICIENT_1_2 (MINIMUM)
APTA_COEFFICIENT_1_2 (UPDATED)
APTA_COEFFICIENT_1_2 (RESERVED 1)
APTA_COEFFICIENT_1_2 (DECREMENT)
APTA_COEFFICIENT_2_3 (INCREMENT)
APTA_COEFFICIENT_2_3 (MAXIMUM)
NoConn I E T I E T Single
APTA_COEFFICIENT_2_3 (MINIMUM)
APTA_COEFFICIENT_2_3 (UPDATED)
APTA_COEFFICIENT_2_3 (RESERVED 1)
Key:
NoConn = SAS logical links, outside connections
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the binary primitive is used.
b
The From and To columns indicate the type of ports that originate each binary primitive or are the
intended destinations of each binary primitive.
Expander ports are not considered originators of binary primitives that are being forwarded from
expander port to expander port within an expander.
c
The Binary primitive sequence type columns indicate whether the binary primitive is a single binary
primitive sequence, a triple binary primitive sequence, or a redundant binary primitive sequence (see
6.3.3).
Table 143 defines the binary primitives used only inside SSP connections and STP connections.
Table 143 – Binary primitives used inside SSP connections and STP connections
From b To b Binary
primitive
Binary primitive Use a
sequence
I E T I E T
type c
B_EOF (0)
B_EOF (0) (RESERVED 1)
B_EOF (1)
B_EOF (1) (RESERVED 1)
B_EOF (1) (RESERVED 2)
SSP,
B_EOF (2) I E T I E T Single
STP
B_EOF (2) (RESERVED 1)
B_EOF (2) (RESERVED 2)
B_EOF (3)
B_EOF (3) (RESERVED 1)
B_EOF (3) (RESERVED 2)
Key:
SAS = SAS logical links, both outside connections orand inside any type of connection
I = SAS initiator ports
E = expander ports
T = SAS target ports
a The Use column indicates when the binary primitive is used.
b The From and To columns indicate the type of ports that originate each binary primitive or are the
intended destinations of each binary primitive.
Expander ports are not considered originators of binary primitives that are being forwarded from
expander port to expander port within an expander.
c The Binary primitive sequence type columns indicate whether the binary primitive is a single binary
primitive sequence, a triple binary primitive sequence, or a redundant binary primitive sequence (see
6.3.3).
Table 144 defines the binary primitive codes for deletable binary primitives.
Byte
Binary primitive Hexadecimal
0 (first) 1 2 3 (last)
APTA_ADJUST (COMPLETE) 0Dh F1h 55h 65h 0DF15565h
APTA_ADJUST (READY) 0Dh F1h 59h 99h 0DF15999h
APTA_ADJUST (START) 0Dh F1h A5h 59h 0DF1A559h
APTA_ADJUST (TERMINATE) 0Dh F1h A9h A5h 0DF1A9A5h
APTA_ADJUST (RESERVED 1) 0Dh FDh 01h 3Dh 0DFD013Dh
APTA_ADJUST (RESERVED 2) 0Dh FDh 0Dh C1h 0DFD0DC1h
APTA_ADJUST (RESERVED 3) 0Dh FDh F1h 01h 0DFDF101h
APTA_COEFFICIENT_1 (DECREMENT) 01h F1h 3Dh 3Dh 01F13D3Dh
APTA_COEFFICIENT_1 (INCREMENT) 01h F1h C1h FDh 01F1C1FDh
APTA_COEFFICIENT_1 (MAXIMUM) 01h FDh 65h 99h 01FD6599h
APTA_COEFFICIENT_1 (MINIMUM) 01h FDh 69h 65h 01FD6965h
APTA_COEFFICIENT_1 (UPDATED) 01h FDh 95h A5h 01FD95A5h
APTA_COEFFICIENT_1 (RESERVED 1) 01h FDh 99h 59h 01FD9959h
APTA_COEFFICIENT_2 (DECREMENT) 09h B1h 6Dh D5h 09B16DD5h
APTA_COEFFICIENT_2 (INCREMENT) 09h B1h 9Dh E9h 09B19DE9h
APTA_COEFFICIENT_2 (MAXIMUM) 09h BDh 35h 4Dh 09BD354Dh
APTA_COEFFICIENT_2 (MINIMUM) 09h BDh 39h B1h 09BD39B1h
APTA_COEFFICIENT_2 (UPDATED) 09h BDh C5h 71h 09BDC571h
APTA_COEFFICIENT_2 (RESERVED 1) 09h BDh C9h 8Dh 09BDC98Dh
APTA_COEFFICIENT_3 (DECREMENT) 0Dh C1h 0Dh FDh 0DC10DFDh
APTA_COEFFICIENT_3 (INCREMENT) 0Dh C1h F1h 3Dh 0DC1F13Dh
APTA_COEFFICIENT_3 (MAXIMUM) 0Dh C1h FDh C1h 0DC1FDC1h
APTA_COEFFICIENT_3 (MINIMUM) 0Dh CDh 55h 59h 0DCD5559h
APTA_COEFFICIENT_3 (UPDATED) 0Dh CDh 59h A5h 0DCD59A5h
APTA_COEFFICIENT_3 (RESERVED 1) 0Dh CDh A5h 65h 0DCDA565h
APTA_COEFFICIENT_1_2 (DECREMENT) 0Dh D5h C5h A9h 0DD5C5A9h
APTA_COEFFICIENT_1_2 (INCREMENT) 0Dh D5h C9h 55h 0DD5C955h
APTA_COEFFICIENT_1_2 (MAXIMUM) 0Dh D9h 61h CDh 0DD961CDh
APTA_COEFFICIENT_1_2 (MINIMUM) 0Dh D9h 6Dh 31h 0DD96D31h
APTA_COEFFICIENT_1_2 (UPDATED) 0Dh D9h 91h F1h 0DD991F1h
APTA_COEFFICIENT_1_2 (RESERVED 1) 0Dh D9h 9Dh 0Dh 0DD99D0Dh
APTA_COEFFICIENT_2_3 (DECREMENT) 0Dh E5h 61h F1h 0DE561F1h
APTA_COEFFICIENT_2_3 (INCREMENT) 0Dh E5h 6Dh 0Dh 0DE56D0Dh
APTA_COEFFICIENT_2_3 (MAXIMUM) 0Dh E5h 91h CDh 0DE591CDh
APTA_COEFFICIENT_2_3 (MINIMUM) 0Dh E5h 9Dh 31h 0DE59D31h
APTA_COEFFICIENT_2_3 (UPDATED) 0Dh E9h C5h 95h 0DE9C595h
APTA_COEFFICIENT_2_3 (RESERVED 1) 0Dh E9h C9h 69h 0DE9C969h
Table 145 defines the binary primitive codes for binary primitives used only inside SSP and STP connections.
Table 145 – Binary primitive codes for binary primitives only used inside SSP and STP connections
Byte
Binary primitive Hexadecimal
0 (first) 1 2 3 (last)
Length of
a b primitive
Binary primitive sequence type Transmit Receive Reference
parameter c
(dword)
Single 1 1 0 to 3 6.3.3.2
a Number of times the transmitter transmits the binary primitive to transmit the binary primitive sequence.
b Number of times the receiver receives the binary primitive to detect the binary primitive sequence.
c The length of a primitive parameter that may occur after primitive sequence within a primitive segment.
A primitive parameter with a length of one to three dwords may follow a single binary primitive sequence. The
primitive parameter that follows a single binary primitive sequence shall be contained within a single primitive
segment (i.e., the single binary primitive sequence plus the associated primitive parameter, if any, shall be
contained within a single SPL packet).
6.3.4.1 APTA_ADJUST
6.3.4.2 APTA_COEFFICIENT_1
6.3.4.3 APTA_COEFFICIENT_2
6.3.4.4 APTA_COEFFICIENT_3
6.3.4.5 APTA_COEFFICIENT_1_2
6.3.4.6 APTA_COEFFICIENT_2_3
6.3.5 Binary primitives used only inside SSP and STP connections
B_EOF (0) No pad dwords in the last SPL frame segment or STP frame segment.
B_EOF (0) (RESERVED 1) Reserved
B_EOF (1) One pad dword in the last SPL frame segment or STP frame segment.
B_EOF (1) (RESERVED 1) Reserved
B_EOF (1) (RESERVED 2) Reserved
B_EOF (2) Two pad dwords in the last SPL frame segment or STP frame segment.
B_EOF (2) (RESERVED 1) Reserved
B_EOF (2) (RESERVED 2) Reserved
B_EOF (3) Three pad dwords in the last SPL frame segment or STP frame segment.
B_EOF (3) (RESERVED 1) Reserved
B_EOF (3) (RESERVED 2) Reserved
From b To b Extended
binary
Extended binary primitive Use a primitive
I E T I E T sequence
type c
PACKET_SYNC
SAS I E T I E T Single
PACKET_SYNC_LOST
LINK_RATE_MANAGEMENT SAS I E T I E T Single
Key:
SAS = SAS logical links, both outside connections orand inside any type of connection
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the extended binary primitive is used.
b
The From and To columns indicate the type of ports that originate each extended binary primitive or are
the intended destinations of each extended binary primitive.
Expander ports are not considered originators of extended binary primitives that are being forwarded
from expander port to expander port within an expander.
c
The Extended binary primitive sequence type column indicate whether the extended binary primitive is a
single extended binary primitive sequence, a triple extended binary primitive sequence, or a redundant
extended binary primitive sequence (see 6.4.3).
Table 155 defines the extended binary primitives not specific to the type of connection.
From b To b Extended
binary
Extended binary primitive Use a primitive
I E T I E T sequence
type c
Key:
SpNeg = SAS physical links, during speed negotiation
I = SAS initiator ports
E = expander ports
T = SAS target ports
a
The Use column indicates when the extended binary primitive is used.
b
The From and To columns indicate the type of ports that originate each extended binary primitive or are
the intended destinations of each extended binary primitive.
Expander ports are not considered originators of extended binary primitives that are being forwarded
from expander port to expander port within an expander.
c
The Extended binary primitive sequence type column indicate whether the extended binary primitive is a
single extended binary primitive sequence, a triple extended binary primitive sequence, or a redundant
extended binary primitive sequence (see 6.4.3).
Table 156 defines the extended binary primitive codes for deletable extended binary primitives.
Table 156 – Extended binary primitive codes for deletable extended binary primitives
Byte
Extended binary primitive Dword Hexadecimal
0 (first) 1 2 3 (last)
Table 157 defines the primitive codes for extended binary primitives not specific to type of connection.
Table 157 – Extended binary primitive codes for extended binary primitives not specific to any type of
connection
Byte
Extended binary primitive Dword Hexadecimal
0 (first) 1 2 3 (last)
a
0 0Eh F2h AAh A6h
0EF2AAA6
1 0Eh FEh F2h 02h 0EFEF202
END_TRAIN
2 0Eh FEh 0Eh C2h 0EFE0EC2
0EFE023Eh
3 0Eh FEh 02h 3Eh
a The PRIMITIVE SYNCHRONIZE SELECT field (see table 62) is set to 10b.
Single 1 1 6.4.3.2
a Number of times the transmitter transmits the extended binary primitive to transmit the extended binary
primitive sequence.
b Number of times the receiver receives the extended binary primitive to detect the extended binary
primitive sequence.
Extended binary primitives labeled as single extended binary primitive sequences (e.g., PACKET_SYNC,
PACKET_SYNC_LOST, and LINK_RATE_MANAGEMENT) shall be transmitted one time to form a single
extended binary primitive sequence.
Receivers count each extended binary primitive received that is labeled as a single extended binary primitive
sequence as a distinct single extended binary primitive sequence.
6.4.4.1 PACKET_SYNC
6.4.4.2 PACKET_SYNC_LOST
6.4.4.3 LINK_RATE_MANAGEMENT
LINK_RATE_MANAGEMENT is used for physical link rate tolerance management after a phy reset sequence
(see 6.5).
6.4.5.1 END_TRAIN
END_TRAIN is used during Train_Tx-SNW during speed negotiation to indicate the end of a Train_Tx pattern.
See 5.11.4.2.3.4 for details on Train_Tx-SNW.
Figure 135 shows an example of an elasticity buffer if the phy is in the SAS dword mode.
Dword Received
Dword Received
Dword Received
buffer to avoid overflows.
(Data Dword)
(e.g., for SAS physical link,
Dwords are discarded if the
(Primitive)
Received
NOTIFY
(Invalid)
after a Start SL_IR Receiver
elasticity buffer overflows.
confirmation and before a
Phy Layer Not Ready Synchronizers to communicate
confirmation from the SP across clock domains may be
state machine) integrated into the elasticity
buffer or implemented as
Load enable separate circuitry.
SP state
machine Unload
Elasticity buffer Internal PLL
clock
Load clock
NOTIFYs may be
detected either before or
Dword Received
Dword Received
Dword Received
(Data Dword)
Received
(Primitive)
NOTIFY
Clock
(Invalid)
recovery
circuitry
Confirmations
Clock Clock
Dword Received
(Primitive)
Bits
Messages
Figure 135 –Elasticity buffer with phys in the SAS dword mode
Figure 136 shows an example of an elasticity buffer if the phy is in the SAS packet mode.
QuadDword Received
(Primitive Parameter)
(Extended Primitive)
SPL Packet Received
only enabled after the phy discarded by the elasticity
Dword Received
Dword Received
Dword Received
Dword Received
(Binary Primitive)
(Invalid Dword)
(Data Dword)
reset sequence completes buffer to avoid overflows .
(Primitive)
Received
NOTIFY
(e.g., for SAS physical link , SPL packets are discarded
after a Start SL_IR Receiver if the elasticity buffer
confirmation and before a overflows.
Phy Layer Not Ready Synchronizers to communicate
confirmation from the SP across clock domains may be
state machine) integrated into the elasticity
buffer or implemented as
Load enable separate circuitry .
SP state
machine Unload
Elasticity buffer Internal PLL
clock
Load clock
NOTIFYs within primitive
segments may be detected either
before or after the elasticity buffer .
QuadDword Received
(Primitive Parameter)
Received
(Extended Primitive)
NOTIFY
Clock
SPL Packet Received
Dword Received
Dword Received
Dword Received
Dword Received
(Invalid Dword)
(Binary Primitive)
recovery
(Data Dword)
(Primitive)
circuitry
Figure 136 –Elasticity buffer with phys in the SAS packet mode
A logical phy in the SAS dword mode that is originating dwords (i.e., a logical phy in the SAS dword mode that
is not an expander logical phy forwarding dwords from another expander logical phy) shall only insert
deletable primitives for physical link rate tolerance management after the phy reset sequence (see 5.11)
completes as described in table 159.
Table 159 – Physical link rate tolerance management deletable primitive insertion requirement
Deletable primitives inserted for physical link rate tolerance management are in addition to deletable
primitives inserted for rate matching (see 6.17). See Annex H for a summary of their combined requirements.
See 6.2.5.1 for details on rotating through ALIGN (0), ALIGN (1), ALIGN (2), and ALIGN (3). NOTIFYs may
also be transmitted in place of ALIGNs (see 6.2.5.2) on SAS logical links.
6.5.3 Phys originating SPL packets while in the SAS packet mode
A logical phy in the SAS packet mode that is originating SPL packets (i.e., a logical phy in the SAS packet
mode that is not an expander logical phy forwarding SPL packets from another expander logical phy) shall
only insert deletable extended binary primitives for physical link rate tolerance management after the phy
reset sequence (see 5.11) completes as described in table 160.
Table 160 – Physical link rate tolerance management for deletable extended binary primitive
insertion requirement
6.5.4 Expander phys forwarding dwords and deletable extended binary primitives
An expander device that is forwarding dwords (i.e., is not originating dwords) is allowed to insert or delete as
many deletable primitives or deletable extended binary primitives as required to match the transmit and
receive connection rates. An expander device shall increase or reduce the number of deletable primitives,
deletable binary primitives, or deletable extended binary primitives based on clock frequency differences
between the expander device’s receiving phy and the expander device’s transmitting phy (e.g., if receiving at
-100 ppm and transmitting at +100 ppm, then it transmits more deletable primitives than it receives).
The expander device is also required to insert deletable primitives or scrambled idle segments for rate
matching (see 6.17). During an STP connection, the expander device shall:
a) preserve the incoming rate of any additional deletable primitives or deletable extended binary
primitives that it receives that are not discarded because of physical link rate tolerance management
or rate matching (e.g., the 1/128 deletable primitives received from an originating STP initiator phy
compliant with SAS-1.1 for STP initiator phy throttling); or
b) transmit one deletable primitive within every 128 dwords, without discarding any data dwords or
primitives.
The expander device may reduce the length of repeated primitive sequences (i.e., primitive, SATA_CONT,
and data dword sequences).
NOTE 18 - One possible implementation for expander devices forwarding dwords is for the expander device
to delete all deletable primitives received and to insert deletable primitives at the transmit phy whenever its
elasticity buffer is empty.
The STP target port of an STP SATA bridge is allowed to insert or delete as many deletable primitives as
required to match the transmit and receive connection rates.
Due to physical link rate tolerance management deletable primitive removal, the STP target port may not
receive a pair of deletable primitives every 256 dwords, even if the STP initiator port transmitted them in pairs.
However, the rate of the dword stream allows for deletable primitive insertion by the STP SATA bridge.
EXAMPLE - The STP SATA bridge deletes all deletable primitives received by the STP target port and inserts two
consecutive ALIGNs at the SATA host port when its elasticity buffer is empty or when 254 non-ALIGN dwords have been
transmitted. This meets the SATA host port requirement to buffer up to two dwords concurrently while they are being
received by the STP target port.
An expander device supporting the SSC modulation type of center-spreading also includes a
center-spreading tolerance buffer (see SAS-4).
If the phy is in the SAS dword mode, then idle dwords are vendor specific data dwords that are scrambled
(see 6.8.2).
If the phy is in the SAS packet mode, then Idle dwords are vendor specific data dwords that are scrambled
and placed into idle dword segments.
Phys shall transmit idle dwords if there are no other dwords to transmit and:
a) no connection is open;
b) an SSP connection is open; or
c) an SMP connection is open.
SATA_SYNC is a continued primitive sequence that may contain vendor specific data dwords (see 6.2.4.4)
that are scrambled (see 6.8) during an STP connection.
6.7 CRC
All frames include cyclic redundancy check (CRC) values to help detect transmission errors.
Frames transmitted in an STP connection shall include a CRC as defined by SATA. Address frames, SSP
frames, and SMP frames shall include a CRC as defined by this standard.
Annex C contains information on CRC generation/checker implementation.
Table 161 defines notation used in the following text describing CRC calculation. Arithmetic is modulo 2.
Notation Definition
Ft(x) For example, if the frame, except for the CRC field, contains one data dword set to 516F3019h,
then:
Ft(x) = x31 + x27 + x25 + x23 + x22 + x21 + x20 + x18 + x17 + x11 + x10 + x7 + x4 + x3
(i.e., in finite field notation Ft(x) = 8AF60C98h)
The identity polynomial of degree 31 (i.e., a polynomial with all of the coefficients set to one):
L(x) L(x) = x31 + x30 + + x + 1
(i.e., in finite field notation L(x) = FFFFFFFFh)
The CRC generator polynomial (i.e., the divisor polynomial):
G(x) G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
(i.e., in finite field notation G(x) = 1_04C11DB7h)
R(x) The remainder polynomial, which is of degree less than 32.
Rt(x) R(x) with the bit positions of each byte transposed.
Q(x) A quotient polynomial resulting from CRC calculation by the transmitter. This value is discarded.
Q’(x) A quotient polynomial resulting from CRC calculation by the receiver. This value is discarded.
M(x) A polynomial representing the transmitted frame including the CRC field, which is of degree k+31.
A polynomial representing the received frame including the received CRC field.
M’(x)
If the received frame has no errors, then M’(x) = M(x) and M’(x) is of degree k+31.
Mt’(x) M’(x) with the bit positions of each byte transposed.
The result of finding the remainder of an error-free reception of M(x) and also the remainder of
x32L(x) / G(x), which is a unique constant polynomial:
R’(x)
R’(x) = x31 + x30 + x26 + x25 + x24 + x18 + x15 + x14 + x12 + x11 + x10 + x8 + x6 + x5 + x4 + x3 + x + 1
(i.e., R’(x) = C704DD7Bh)
R’(x) with the bit positions of each byte transposed (i.e., bit 7 is bit 0, bit 6 is bit 1, etc.):
Rt’(x) = x31 + x30 + x29 + x25 + x24 + x21 + x15 + x13 + x12 + x11 + x9 + x8 + x7 + x6 + x4
Rt’(x)
+ x3 + x2 + x
(i.e., in finite field notation Rt’(x) = E320BBDEh)
NOTE 19 - The bit order of F(x) used to calculate the CRC is the same order as the bit transmission order
(i.e., the bits within each byte encoded into a data dword are transposed to match the implicit transposition in
the 8b10b encoding process).
Figure 137 shows the CRC process for an address frame, an SSP frame and SMP frame.
31 0
CRC generator
24 31 16 23 8 15 0 7
First Second Third Fourth
byte byte byte byte
Bit
Transpose
31 24 23 16 15 8 7 0
First Second Third Fourth
byte byte byte byte
Inverters
Figure 137 –Address frame, SSP frame, and SMP frame CRC bit ordering
Dwords within STP frames use little-endian. Those dwords are fed into the STP CRC generator without
swapping bits within each byte and without inverting the output like the SAS CRC generator. Figure 138
shows the STP CRC bit ordering.
31 CRC generator 0
31 24 23 16 15 8 7 0
Fourth Third Second First
byte byte byte byte
Since STP uses little-endian byte ordering, the first byte of a dword is in bits 7:0 rather than 31:24 as in SSP
and SMP. As a result, the first byte contains the least significant bit. In SSP and SMP, the first byte contains
the most significant bit.
See 6.9 for details on how the CRC generator fits into the dword flow along with the scrambler.
The CRC of received frame is calculated by the receiver in the same manner that it is generated by the
transmitter.
That is:
1) the received frame M’(x), including the CRC field, is transposed into Mt’(x);
2) the first 32 bits of the received transposed frame are inverted;
3) 32 bits of zero are appended to the end; and
4) this result is divided by the generator polynomial G(x) to find the remainder.
A received frame that has not incurred any CRC detectable errors during transmission generates a remainder
equal to R’(x).
If there were no transmission errors, then the received frame M’(x) equals M(x):
M’(x) = M(x)
= x32 × F(x) + L(x) + Rt(x)
The CRC R’(x) is derived as follows:
x(k + 32) × L(x) + x32 × Mt’(x) = x(k + 32) × L(x) + x32 × (x32 × Ft(x) + L(x) + R(x))
= x32 × Q(x) × G(x) + x32 × L(x)
However, G(x) divides x32L(x):
x(k + 32) × L(x) + x32 × (x32 × Ft(x) + L(x) + R(x)) = (x32 × Q(x) + Q’(x)) × G(x) + R’(x)
R’(x) is then transposed and inverted, in the same manner as is done by the transmitter, to obtain:
Rt’(x) + L(x) = 1CDF4421h
As an alternative to this process, the receiver may check the CRC validity of the frame by stripping off the last
32 bits, leaving F(x), and calculating the CRC as defined in 6.7.2. The frame has a valid CRC if the result L(x)
+ Rt(x) equals the last 32 bits of the frame that were stripped.
See 6.9 for details on where the CRC checker fits into the dword flow along with the descrambler.
6.8 Scrambling
Scrambling is used to reduce the probability of long strings of repeated patterns appearing on the physical
link.
Table 162 – Scrambling for different data dword types while in the SAS dword mode
Data dwords being transmitted in the SAS dword mode shall be XORed with a defined pattern to produce a
scrambled value encoded and transmitted on the physical link. Received data dwords shall be XORed with
the same pattern after decoding to produce the original data dword value, provided there are no transmission
errors.
The pattern that is XORed with the data dwords is defined by the output of a linear feedback shift register
implemented with the following polynomial:
NOTE 20 - Scrambling is not based on data feedback, so the sequence of values XORed with the data being
transmitted is constant.
The value of the linear feedback shift register shall be initialized at each SOF and SOAF to FFFFh.
For detailed requirements about scrambling of data dwords following SATA_SOF and SATA_CONT, see
SATA.
NOTE 21 - STP scrambling uses two linear feedback shift registers, since continued primitive sequences are
able to occur inside STP frames and the STP frame and the continued primitive sequence have independent
scrambling patterns.
NOTE 22 - Scrambling while in the SAS packet mode is not based on data feedback, so the sequence of
values XORed with the data being transmitted is constant.
The value of the linear feedback shift register shall be initialized after each PACKET_SYNC to 1D BFBCh (i.e.,
the linear feedback shift register starts with 1D BFBCh on the first byte sent or received after PACKET_SYNC
resulting in the associated pattern generator producing an output pattern based on that initial value for the
next SPL packet payload following the PACKET_SYNC).
See F.2 for the values of the first 128 8-bit outputs of the linear feedback shift register and arrangement of
linear feedback shift register stages that correspond to the initialization value described in this subclause.
6.9.1 Bit order of CRC and scrambler while in the SAS dword mode
If the phy is in the SAS dword mode, then figure 139 shows how data dwords and primitives are routed to the
bit transmission logic in figure 58 (see 5.4). Data dwords go through the CRC generator and scrambler.
Bit
transpose
Bit CRC Bit
31 generator 0
Bit
transpose
Frame data
CRC dword dword
Bit Bit
Scrambler
31 0
Z mux
Bit Bit
31 0
Z Dword
SAS primitive, SSP, or SMP dword to
transmit + data/primitive indicator (Z)
Figure 139 –Transmit path bit ordering while in the SAS dword mode
If the phy is in the SAS dword mode, then figure 140 shows the routing of dwords received from the bit
reception logic in figure 59 (see 5.4). The CRC Error Occurred message is sent to the SL state machine (see
6.18), SL_IR state machine (see 6.12), SSP state machine (see 6.20), and SMP state machine (see 6.22) to
indicate that a CRC error occurred on the received frame.
Dword received
Bit Bit
Descrambler
31 0
Third Third
(Dxx.y) (Dxx.y)
byte byte
Dword Second
Second (Dxx.y)
compare (Dxx.y) byte
byte
First First
(Dxx.y) (Kxx.y) (e.g., K28.5)
CRC Error Occured byte byte
Data dword SAS primitive
Link layer state machines
(i.e., SL_IR, SL, SSP, SMP)
Figure 140 –Receive path bit ordering while in the SAS dword mode
Figure 141 shows the STP transmit path bit ordering. The CRC Error Occurred message is sent to the STP
state machine (see 6.21) to indicate that a CRC error occurred on the received frame.
Z mux
(4th : 3rd : 2nd : 1st)
Bit Byte Bit
31 transpose 0
(1st : 2nd : 3rd : 4th)
Z Dword
Primitive
Bit Bit (i.e.,
Descrambler Kxx.y in
31 0
first byte)
Bit Bit
CRC generator
31 0
Dword
compare
Bit Bit Bit Bit
Data dword Primitive
31 0 31 0
Fourth Fourth
(Dxx.y) (Dxx.y)
byte byte
Second Second
(Dxx.y) (Dxx.y) byte
byte
First First
(e.g., FIS Type)(Dxx.y) (e.g., K28.3) (Kxx.y)
byte byte
Link layer state machines
STP data dword SATA primitive
(i.e., STP)
6.9.2 Bit order of CRC and scrambler while in the SAS packet mode
If the phy is in the SAS packet mode, then figure 143 shows how SPL packets are routed to the bit
transmission logic in figure 62. SPL frame segments go through the CRC generator and then through the
scrambler. Scrambled idle segments and idle dword segments go through the scrambler.
Header
SPL packet header and
H1 H0
SPL packet payload
to transmit
SPL frame segment Bit
Byte 0 transpose Header
B7 B6 B5 B4 B3 B2 B1 B0 Bit CRC Bit H1 H0
31 generator 0
Byte 0
...
Byte 3 Bit
B7 B6 B5 B4 B3 B2 B1 B0 transpose B7 B6 B5 B4 B3 B2 B1 B0
m
u
...
...
Byte 12
B7 B6 B5 B4 B3 B2 B1 B0 x CRC
Byte 1
dword
...
Byte 15 B7 B6 B5 B4 B3 B2 B1 B0
Bit Bit
B7 B6 B5 B4 B3 B2 B1 B0
31 0
mux Byte 2
B7 B6 B5 B4 B3 B2 B1 B0
Idle dword segment
4 idle dwords Byte 3
B7 B6 B5 B4 B3 B2 B1 B0
Bit Bit
...
...
31 0
Primitive segment
Byte 0 Scrambler
B7 B6 B5 B4 B3 B2 B1 B0 Byte 14
B7 B6 B5 B4 B3 B2 B1 B0
...
Byte 3
B7 B6 B5 B4 B3 B2 B1 B0
m
Byte 15
...
...
Byte 12 u
x Bit Bit B7 B6 B5 B4 B3 B2 B1 B0
B7 B6 B5 B4 B3 B2 B1 B0
31 0
...
Byte 15 mux
B7 B6 B5 B4 B3 B2 B1 B0
Figure 143 –Transmit path bit ordering while in the SAS packet mode
If the phy is in the SAS packet mode, then figure 144 shows the routing of unpacked data dwords contained in
received SPL packets (see figure 117). Data dwords go through:
a) the descrambler; and
b) the CRC generator.
Bit Bit
31 0
Descrambler
Bit
transpose
Bit CRC Bit
31 generator 0
Dword Bit
compare transpose
31 24 23 16 15 8 7 0
Link layer state machines
(i.e., SL_IR, SL, SSP, SMP)
1 0
B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
MSB LSB
Data dword received + Header
Figure 144 –Receive path bit ordering while in the SAS packet mode
Address frames are used for the identification sequence (see 6.11) and for connection requests (see 6.16).
Address frames are preceded by SOAF and followed by EOAF as shown in figure 145.
Time
Address Address Address
SOAF frame frame ... frame CRC EOAF
dword 0 dword 1 dword 6
Address frames shall only be transmitted outside connections. Partial address frames (i.e., not containing the
number of data dwords defined for the frame) shall not be transmitted. All data dwords in an address frame
shall be scrambled.
Table 163 defines the address frame format.
Byte\Bit 7 6 5 4 3 2 1 0
1
••• Frame type dependent bytes
27
28 (MSB)
••• CRC
31 (LSB)
The ADDRESS FRAME TYPE field indicates the type of address frame and is defined in table 164. This field
determines the definition of the frame type dependent bytes.
The CRC field contains a CRC value (see 6.7) that is computed over the entire address frame prior to the CRC
field.
Address frames with unknown address frame types, incorrect lengths, or CRC errors shall be ignored by the
recipient.
Table 165 defines the IDENTIFY address frame format used for the identification sequence. The IDENTIFY
address frame is transmitted by each logical phy after the phy reset sequence completes if the physical link is
a SAS physical link.
Byte\Bit 7 6 5 4 3 2 1 0
1 Reserved REASON
Restricted
SSP INITIATOR STP INITIATOR SMP INITIATOR (for OPEN
2 Reserved
PORT PORT PORT address
frame)
Restricted
SSP TARGET STP TARGET SMP TARGET (for OPEN
3 Reserved
PORT PORT PORT address
frame)
11
12
19
20 PHY IDENTIFIER
23
••• Reserved
27
28 (MSB)
••• CRC
31 (LSB)
The SAS DEVICE TYPE field indicates the type of SAS device type that contains the phy and is defined in table
166.
Code Description
The ADDRESS FRAME TYPE field shall be set as shown in table 165 for the IDENTIFY address frame format.
The REASON field indicates the reason for the link reset sequence and is defined in table 167.
Code Description
0h Unknown reason
1h Power on
Hard reset (e.g., the port containing this phy received a HARD_RESET primitive sequence
2h during the hard reset sequence) (see 4.4.2) or SMP PHY CONTROL function HARD RESET
phy operation (see 9.4.4.28)
SMP PHY CONTROL function LINK RESET phy operation or TRANSMIT SATA PORT
3h
SELECTION SIGNAL phy operation (see 9.4.4.28)
4h Loss of dword synchronization (see 5.15)
5h Obsolete
I_T nexus loss timer expired in the STP target port of an STP SATA bridge when the phy was
6h
attached to a SATA device (see 4.4.3).
7h Break Timeout Timer expired (see 6.16.11)
8h Phy test function stopped (see 9.4.4.29)
9h Expander device reduced functionality (see 4.5.8)
Ah to Fh Reserved
An SSP INITIATOR PORT bit set to one indicates that an SSP initiator port is present. An SSP INITIATOR PORT bit
set to zero indicates that an SSP initiator port is not present. Expander devices shall set the SSP INITIATOR
PORT bit to zero.
An STP INITIATOR PORT bit set to one indicates that an STP initiator port is present. An STP INITIATOR PORT bit
set to zero indicates that an STP initiator port is not present. Expander devices shall set the STP INITIATOR
PORT bit to zero.
An SMP INITIATOR PORT bit set to one indicates that an SMP initiator port is present. An SMP INITIATOR PORT bit
set to zero indicates that an SMP initiator port is not present. Expander devices may set the SMP INITIATOR
PORT bit to one.
An SSP TARGET PORT bit set to one indicates that an SSP target port is present. An SSP TARGET PORT bit set to
zero indicates that an SSP target port is not present. Expander devices shall set the SSP TARGET PORT bit to
zero.
An STP TARGET PORT bit set to one indicates that an STP target port is present. An STP TARGET PORT bit set to
zero indicates that an STP target port is not present. Expander devices shall set the STP TARGET PORT bit to
zero.
An SMP TARGET PORT bit set to one indicates that an SMP target port is present. An SMP TARGET PORT bit set to
zero indicates that an SMP target port is not present. Expander devices shall set the SMP TARGET PORT bit to
one.
The DEVICE NAME field indicates the device name (see 4.2.6) of the SAS device or expander device
transmitting the IDENTIFY address frame. A DEVICE NAME field set to 00000000 00000000h indicates the
device name is not provided in this field.
NOTE 23 - In expander devices, the DEVICE NAME field, if not set to 00000000 00000000h, contains the same
value as the SAS ADDRESS field.
For SAS ports, the SAS ADDRESS field indicates the port identifier (see 4.2.9) of the SAS port transmitting the
IDENTIFY address frame. For expander ports, the SAS ADDRESS field indicates the device name (see 4.2.6) of
the expander device transmitting the IDENTIFY address frame.
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy transmitting the IDENTIFY address
frame.
The BREAK_REPLY CAPABLE bit indicates that the phy is capable of responding to received BREAK primitive
sequences with a BREAK_REPLY primitive sequence (see 6.16.6).
The REQUESTED INSIDE ZPSDS bit indicates the value of the REQUESTED INSIDE ZPSDS bit in the zone phy
information (see 4.9.3.1) at the time the IDENTIFY address frame is transmitted. If the phy transmitting the
IDENTIFY address frame is contained in an end device, a non-zoning expander device, or a zoning expander
device with zoning disabled, then the REQUESTED INSIDE ZPSDS bit shall be set to zero.
The INSIDE ZPSDS PERSISTENT bit indicates the value of the INSIDE ZPSDS PERSISTENT bit in the zone phy
information (see 4.9.3.1) at the time the IDENTIFY address frame is transmitted. If the phy transmitting the
IDENTIFY address frame is contained in an end device, a non-zoning expander device, or a zoning expander
device with zoning disabled, then the INSIDE ZPSDS PERSISTENT bit shall be set to zero.
See 4.1.3 for additional requirements concerning the SAS DEVICE TYPE field, the BREAK_REPLY CAPABLE bit, the
SSP INITIATOR PORT bit, the STP INITIATOR PORT bit, the SMP INITIATOR PORT bit, the SSP TARGET PORT bit, the STP
TARGET PORT bit, the SMP TARGET PORT bit, and the SAS ADDRESS field.
A PARTIAL CAPABLE bit set to one indicates that the phy is capable of supporting the partial phy power condition
(see 4.11.1.3). A PARTIAL CAPABLE bit set to zero indicates that the phy is not capable of supporting the partial
phy power condition.
A SLUMBER CAPABLE bit set to one indicates that the phy is capable of supporting the slumber phy power
condition (see 4.11.1.4). A SLUMBER CAPABLE bit set to zero indicates that the phy is not capable of supporting
the slumber phy power condition.
If optical mode is enabled, then the PARTIAL CAPABLE bit and the SLUMBER CAPABLE bit shall be set to zero.
Code Description
01b The device containing the phy is capable of allowing the management of
additional consumption of power (see 6.14) by:
a) issuing PWR_REQ and PWR_DONE; and
b) responding to PWR_GRANT with PWR_ACK.
10b The device containing the phy is capable of managing the additional
consumption of power (see 6.14) by responding to:
a) PWR_REQ with PWR_ACK;
b) PWR_REQ with PWR_GRANT; and
c) PWR_DONE with PWR_ACK.
11b Reserved
A PERSISTENT CAPABLE bit set to one indicates that the phy is capable of establishing and maintaining a
persistent connection (see 4.1.13). A PERSISTENT CAPABLE bit set to zero indicates that the phy is not capable
of establishing or maintaining a persistent connection. If the phy transmitting the IDENTIFY address frame is
contained in an expander device, then the PERSISTENT CAPABLE bit shall be set to zero.
A power disable capable (PWR_DIS CAPABLE) bit set to one indicates that the SAS target device is a power
consumer device (see 6.14.2) that is capable of using the POWER DISABLE signal (see SAS-4). A power
source device (see 6.14.1) shall not set the PWR_DIS CAPABLE bit to one. A PWR_DIS CAPABLE bit set to zero
indicates that the consumer device is not capable of using the POWER DISABLE signal.
An SMP PRIORITY CAPABLE bit set to one indicates that the phy is capable of determining SMP frame priority
(see 6.16.3). An SMP PRIORITY CAPABLE bit set to zero indicates that the phy is not capable of determining SMP
frame priority.
A RETIMER PRESENT bit set to one indicates that one or more retimer lanes are present in the physical link. A
RETIMER PRESENT bit set to zero indicates that no retimer lane is present in the physical link.
An APTA CAPABLE bit set to one indicates that the phy’s transmitter supports SP transmitter coefficient
adjustments using APTA (see 5.12). An APTA CAPABLE bit set to zero indicates that the phy’s transmitter does
not support SP transmitter coefficient adjustments using APTA.
The CRC field is defined in 6.10.1.
Table 169 defines the OPEN address frame format used for connection requests.
Byte\Bit 7 6 5 4 3 2 1 0
INITIATOR
0 SAS PROTOCOL ADDRESS FRAME TYPE (1h)
PORT
2 (MSB)
INITIATOR CONNECTION TAG
3 (LSB)
11
12
19
22 (MSB)
ARBITRATION WAIT TIME
23 (LSB)
CREDIT SEND
24 COMPATIBLE FEATURES (000000b)
ADVANCE EXTEND
25
28 (MSB)
••• CRC
31 (LSB)
An INITIATOR PORT bit set to one specifies that the source port is acting as a SAS initiator port. An INITIATOR
PORT bit set to zero specifies that the source port is acting as a SAS target port. If a SAS port sets the
INITIATOR PORT bit to one, then the SAS phy shall operate only in its initiator role during the connection. If a
SAS port sets the INITIATOR PORT bit to zero, then the SAS port shall operate only in its target role during the
connection.
If a SAS port accepts an OPEN address frame with the INITIATOR PORT bit set to one, then the SAS port shall
operate only in its target role during the connection. If a SAS port accepts an OPEN address frame with the
INITIATOR PORT bit set to zero, then the SAS port shall operate only in its initiator role during the connection.
The SAS PROTOCOL field specifies the protocol for the connection being requested and is defined in table 170.
Code Description
000b SMP
001b SSP
010b STP
All others Reserved
The ADDRESS FRAME TYPE field shall be set as shown in table 169 for the OPEN address frame format.
The FEATURES field specifies any additional features that are incompatible with SPL-2 and is defined in table
171.
Code Description
0h No additional features
All others Reserved
The CONNECTION RATE field specifies the connection rate (see 4.1.12) being requested between the source
and destination, and is defined in table 172.
Code Description
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
All others Reserved
A SAS initiator port shall set the initial CONNECTION RATE field to:
a) the highest supported connection rate supported by a potential pathway as determined during the
discover process (e.g., based on the logical link rates of each logical link reported in the SMP
DISCOVER responses); or
b) the logical link rate of the logical phy used to transmit the OPEN address frame.
If a SAS initiator port selected a connection rate based on discover process information, but the connection
request results in OPEN_REJECT (CONNECTION RATE NOT SUPPORTED), then the discover process
information is no longer current and the discover process should be run again.
A SAS target port shall set the initial CONNECTION RATE field to:
a) the last known good connection rate established with the SAS initiator port; or
b) for the first frame that it intends to transmit in the connection, the connection rate that was used by the
SAS initiator port to deliver the command or task management function for that frame.
Each time that a connection request with a connection rate greater than 1.5 Gbit/s results in OPEN_REJECT
(CONNECTION RATE NOT SUPPORTED), the SAS port shall reattempt the connection request with a lower
connection rate (e.g., drop from 6 Gbit/s to 3 Gbit/s or 1.5 Gbit/s) and send the same frames in the resulting
connection that the SAS port intended to send at the initial connection rate.
The INITIATOR CONNECTION TAG field is used for SSP and STP connection requests to provide a SAS initiator
port an alternative to using the SAS target port’s SAS address for context lookup when the SAS target port
originates a connection request. An SSP initiator port or STP initiator port shall set the INITIATOR CONNECTION
TAG field to FFFFh if the SSP initiator port or STP initiator port does not require that this field be provided by
the SAS target port. If an SSP initiator port or STP initiator port does require the field to be provided, then the
SSP initiator port or STP initiator port should set the INITIATOR CONNECTION TAG field to a unique value per SAS
target port. When requesting a connection to a SAS initiator port, a SAS target port shall set the INITIATOR
CONNECTION TAG field to the most recent value received or the value received in one of the connection
requests for one of the outstanding commands or task management functions from the SAS initiator port. A
SAS initiator port shall:
a) use the same INITIATOR CONNECTION TAG field value for all connection requests to the same SAS
target port; and
b) only change the INITIATOR CONNECTION TAG field value when it has no commands or task management
functions outstanding to that SAS target port.
SAS target ports are not required to check consistency of the INITIATOR CONNECTION TAG field in different
connection requests from the same SAS initiator port. SMP initiator ports shall set the INITIATOR CONNECTION
TAG field to FFFFh for SMP connection requests.
The DESTINATION SAS ADDRESS field specifies the port identifier (see 4.2.9) of the SAS port to which a
connection is being requested.
The SOURCE SAS ADDRESS field specifies the port identifier (see 4.2.9) of the SAS port that originated the
OPEN address frame.
The SOURCE ZONE GROUP field identifies the zone group of the phy making the connection request. The
SOURCE ZONE GROUP field shall be:
a) set to 00h when transmitted by an end device;
b) set to 00h when transmitted by an expander device on a phy with the INSIDE ZPSDS bit set to zero;
c) set to the source zone group for the outgoing connection request as described in table 40 (see
4.9.3.5) when transmitted by an expander device on a phy with the INSIDE ZPSDS bit set to one;
d) ignored when received by an end device;
e) ignored when received by an expander device on a phy with the INSIDE ZPSDS bit set to zero; or
f) used to determine the source zone group for the incoming connection request as described in table
40 (see 4.9.3.5) when received by an expander device on a phy with the INSIDE ZPSDS bit set to one.
The PATHWAY BLOCKED COUNT field specifies the number of times the port has retried this connection request
due to receiving OPEN_REJECT (PATHWAY BLOCKED), OPEN_REJECT (RESERVED STOP 0), or
OPEN_REJECT (RESERVED STOP 1). The port shall not increment the PATHWAY BLOCKED COUNT value past
FFh. If the port changes connection requests, then the port shall set the PATHWAY BLOCKED COUNT field to 00h.
The ARBITRATION WAIT TIME field specifies how long the port transmitting the OPEN address frame has been
waiting for a connection request to be accepted or rejected. This time is maintained by the port layer in an
Arbitration Wait Time timer (see 7.2.2). For values from 0000h to 7FFFh, the Arbitration Wait Time timer
increments in one microsecond steps. For values from 8000h to FFFFh, the Arbitration Wait Time timer
increments in one millisecond steps. The maximum value represents 32 767 ms + 32 768 µs. Table 173
describes several values of the ARBITRATION WAIT TIME field. See 6.16.4 for details on arbitration fairness.
Code Description
0000h 0 µs
0001h 1 µs
••• •••
7FFFh 32 767 µs
8000h 0 ms + 32 768 µs
8001h 1 ms + 32 768 µs
••• •••
FFFFh 32 767 ms + 32 768 µs
The COMPATIBLE FEATURES field and the MORE COMPATIBLE FEATURES field shall be set as shown in table 169
for the OPEN address frame format. A phy receiving an OPEN address frame shall ignore the COMPATIBLE
FEATURES field and the MORE COMPATIBLE FEATURES field.
For SATA, a link reset sequence is a phy reset sequence (see 5.11).
For SAS, a link reset sequence is either:
a) the following sequence:
1) a phy reset sequence indicating that the physical link is using SAS rather than SATA; and
2) an identification sequence;
or
b) the following sequence:
1) a phy reset sequence indicating that the physical link is using SAS rather than SATA;
2) a hard reset sequence;
3) another phy reset sequence indicating that the physical link is using SAS rather than SATA; and
4) an identification sequence.
An identification sequence occurs when a logical phy:
a) transmits three IDENTIFY address frames (see 6.10.2); and
b) does not receive a HARD_RESET primitive sequence.
A hard reset sequence occurs when, after the phy reset sequence, a logical phy:
a) transmits a HARD_RESET primitive sequence (see 6.2.6.8); or
b) receives a HARD_RESET primitive sequence.
Time
Logical
Phy reset sequence Identification sequence
link 0
Three IDENTIFY
address frames
data dword
data dword
data dword
data dword
data dword
ALIGN (1)
ALIGN (1)
ALIGN (1)
Phy A Tx
Phy B Rx
Logical
Phy reset sequence Identification sequence
link 0
IDENTIFY
address frame
data dword 7 (i.e., CRC)
data dword
data dword
ALIGN (1)
ALIGN (1)
ALIGN (1)
SOAF
EOAF
Phy A Rx
Phy B Tx
Note - Phys transmit deletable primitives for physical link rate tolerance management
after the phy reset sequence.
Figure 147 shows phy A attempting to perform the identification sequence and phy B performing the hard
reset sequence. Because phy A receives a HARD_RESET primitive sequence, a hard reset sequence occurs.
Time
Phy reset
Phy reset sequence Hard reset sequence
sequence
Three IDENTIFY
address frames
data dword
data dword
data dword
data dword
data dword
ALIGN (1)
ALIGN (1)
ALIGN (1)
Phy A Tx
Phy B Rx
Phy reset
Phy reset sequence Hard reset sequence
sequence
HARD_RESET
primitive sequence
COMINIT
HARD_RESET
HARD_RESET
HARD_RESET
HARD_RESET
HARD_RESET
HARD_RESET
data dword
data dword
data dword
ALIGN (1)
ALIGN (1)
ALIGN (1)
Phy A Rx
Phy B Tx
Note - Phys transmit deletable primitives for physical link rate tolerance management
after the phy reset sequence.
Each logical phy receives one or more IDENTIFY address frames or a HARD_RESET primitive sequence
from the logical phy to which it is attached.
If a logical phy receives a valid IDENTIFY address frame (see 6.12.4.3.1) within 1 ms of phy reset sequence
completion, then the SAS address in the outgoing IDENTIFY address frames and the SAS address in the
incoming IDENTIFY address frame determine the port to which the logical phy belongs (see 4.1.3). The
logical phy ignores subsequent IDENTIFY address frames and HARD_RESETs until another phy reset
sequence occurs.
If a logical phy receives a HARD_RESET primitive sequence within 1 ms of phy reset sequence completion,
then the logical phy shall consider this to be a reset event and the port containing the logical phy shall process
a hard reset (see 4.4.2).
If a logical phy does not receive a HARD_RESET primitive sequence or a valid IDENTIFY address frame
within 1 ms of phy reset sequence completion, then the physical phy containing the logical phy shall restart
the phy reset sequence.
After completing the link reset sequence on a phy and completing internal initialization, the ECM within an
expander device shall be capable of routing connection requests through that phy. The expander device may
return OPEN_REJECT (NO DESTINATION) until it is ready to process connection requests.
The ECM of an externally configurable expander device is dependent on the completion of the discover
process (see 4.6) for routing connection requests using the table routing method.
6.12 SL_IR (link layer identification and hard reset) state machines
The SL_IR (link layer identification and hard reset) state machines control the flow of dwords on the physical
link that are associated with the identification and hard reset sequences. The state machines are as follows:
a) SL_IR_TIR (transmit IDENTIFY or HARD_RESET primitive sequence) state machine (see 6.12.3);
b) SL_IR_RIF (receive IDENTIFY address frame) state machine (see 6.12.4); and
c) SL_IR_IRC (identification and hard reset control) state machine (see 6.12.5).
The SL_IR state machines send the following messages to the SL state machines (see 6.18) in SAS devices
or the XL (see 6.19) state machine in expander devices:
a) Enable Disable SAS Link (Enable); and
b) Enable Disable SAS Link (Disable).
This state machine shall maintain the timers listed in table 174.
Figure 148 –SL_IR (link layer identification and hard reset) state machines
The SL_IR transmitter receives the following messages from the SL_IR state machines indicating primitive
sequences, frames, and dwords to transmit:
a) Transmit IDENTIFY Address Frame;
b) Transmit HARD_RESET; and
c) Transmit Idle Dword.
Upon receiving a Transmit IDENTIFY Address Frame message, the SL_IR transmitter shall transmit:
1) SOAF;
2) data dwords;
3) EOAF; and
4) at least 3 idle dwords.
NOTE 24 - Phys compliant with SAS-1.1 were not required to transmit idle dwords after EOAF.
The SL_IR transmitter sends the following messages to the SL_IR state machines:
a) HARD_RESET Transmitted; and
b) IDENTIFY Address Frame Transmitted.
The SL_IR receiver sends the following messages to the SL_IR state machines indicating primitive
sequences and dwords received from the SP_DWS receiver (see 5.15.2) and the SP_PS receiver (see
5.16.2):
a) SOAF Received;
b) Data Dword Received;
c) EOAF Received;
d) ERROR Received;
e) Invalid Dword Received; and
f) HARD_RESET Received.
The SL_IR receiver shall not require reception of any idle dwords after an IDENTIFY address frame.
The SL_IR receiver shall ignore all other dwords.
The SL_IR transmitter relationship to other transmitters is defined in 4.3.2. The SL_IR receiver relationship to
other receivers is defined in 4.3.3.
The SL_IR_TIR state machine’s function is to transmit three IDENTIFY address frames or a HARD_RESET
primitive sequence after the phy layer enables the link layer. This state machine consists of the following
states:
a) SL_IR_TIR1:Idle (see 6.12.3.2) (initial state);
b) SL_IR_TIR2:Transmit_Identify (see 6.12.3.3);
c) SL_IR_TIR3:Transmit_Hard_Reset (see 6.12.3.4); and
d) SL_IR_TIR4:Completed (see 6.12.3.5).
This state machine receives the following requests from the management application layer:
a) Transmit IDENTIFY Address Frame; and
b) Transmit HARD_RESET.
This state machine shall start in the SL_IR_TIR1:Idle state. This state machine shall transition to the
SL_IR_TIR1:Idle state from any other state after receiving a Phy Layer Not Ready confirmation.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL_IR transmitter.
Upon entry into this state, this state shall send either three Transmit IDENTIFY Address Frame messages to
the SL_IR transmitter.
NOTE 25 - Phys compliant with SAS-1.1 only transmitted one Transmit IDENTIFY Address Frame message.
After this state receives an IDENTIFY Address Frame Transmitted message in response to its thirdTransmit
IDENTIFY Address Frame message, this state shall send an Identify Transmitted message to the SL_IR_IRC
state machine.
This transition shall occur after receiving three Identify Transmitted messages.
Upon entry into this state, this state shall send a Transmit HARD_RESET message to the SL_IR transmitter.
After this state receives a HARD_RESET Transmitted message, this state shall send a HARD_RESET
Transmitted confirmation to the management application layer.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL_IR transmitter.
The SL_IR_RIF state machine receives an IDENTIFY address frame and checks the IDENTIFY address
frame to determine if the frame should be accepted or discarded by the link layer.
This state machine consists of the following states:
a) SL_IR_RIF1:Idle (see 6.12.4.2) (initial state);
b) SL_IR_RIF2:Receive_Identify_Frame (see 6.12.4.3); and
c) SL_IR_RIF3:Completed (see 6.12.4.4).
This state machine shall start in the SL_IR_RIF1:Idle state. This state machine shall transition to the
SL_IR_RIF1:Idle state from any other state after receiving a Phy Layer Not Ready confirmation.
This state waits for an SOAF to be received from the physical link, indicating an address frame is arriving.
This state receives the dwords of an address frame and the EOAF.
If this state receives an SOAF Received message, then this state shall discard the address frame in progress,
send an Address Frame Failed confirmation to the management application layer to indicate that an invalid
address frame was received, and start receiving the new address frame.
If this state receives more than eight Data Dword Received messages (i.e., 32 bytes) after an SOAF Received
message and before an EOAF Received message, then this state shall discard the address frame and send
an Address Frame Failed confirmation to the management application layer to indicate that an invalid address
frame was received.
If this state receives an Invalid Dword Received message or an ERROR Received message after an SOAF
Received message and before an EOAF Received message, then this state shall either:
a) ignore the invalid dword or ERROR; or
b) discard the address frame in progress and send an Address Frame Failed confirmation to the
management application layer to indicate that an invalid address frame was received.
After receiving an EOAF Received message, this state shall check if the received frame is a valid IDENTIFY
address frame.
This state shall accept an IDENTIFY address frame and send an Identify Received message to the
SL_IR_IRC state machine if:
a) the ADDRESS FRAME TYPE field is set to 0h (i.e., IDENTIFY);
b) the number of bytes between the SOAF and EOAF is 32; and
c) no CRC Error Occurred message was received for this IDENTIFY address frame,
otherwise this state shall discard the address frame and send an Address Frame Failed confirmation to the
management application layer to indicate that an invalid address frame was received.
The SL_IR_IRC state machine ensures that IDENTIFY address frames have been both received and
transmitted before enabling the rest of the link layer, and notifies the link layer if a HARD_RESET primitive
sequence is received before an IDENTIFY address frame has been received.
This state machine consists of the following states:
a) SL_IR_IRC1:Idle (see 6.12.5.2) (initial state);
b) SL_IR_IRC2:Wait (see 6.12.5.3); and
c) SL_IR_IRC3:Completed (see 6.12.5.4).
This state machine shall start in the SL_IR_IRC1:Idle state. This state machine shall transition to the
SL_IR_IRC1:Idle state from any other state after receiving a Phy Layer Not Ready confirmation.
This state waits for the link layer to be enabled. Upon entry into this state, this state shall:
a) send an Enable Disable SAS Link (Disable) message to the SL state machines (see 6.18) or XL state
machine (see 6.19) halting any link layer activity; and
b) send a Phy Disabled confirmation to the SL_P_C state machine, port layer, and the management
application layer indicating that the phy is not ready for use.
This state ensures that an IDENTIFY address frame has been received by the SL_IR_RIF state machine and
that an IDENTIFY address frame has been transmitted by the SL_IR_TIR state machine before enabling the
rest of the link layer. The IDENTIFY address frames may be transmitted and received on the physical link in
any order.
After this state receives an Identify Received message, this state shall send a Stop SNTT request to the phy
layer.
After this state receives an Identify Transmitted message, this state shall initialize and start the Receive
Identify Timeout timer. If an Identify Received message is received before the Receive Identify Timeout timer
expires, then this state shall:
a) send an Identification Sequence Complete confirmation to the management application layer, with
arguments carrying the contents of the incoming IDENTIFY address frame;
b) send an Enable Disable SAS Link (Enable) message to the SL state machines (see 6.18) in a SAS
logical phy or the XL state machine (see 6.19) in an expander logical phy indicating that the rest of the
link layer may start operation; and
c) send a Phy Enabled confirmation to the SL_P_C state machine (see 6.14.5), port layer, and the
management application layer indicating that the phy is ready for use.
If the Receive Identify Timeout timer expires before an Identify Received message is received, then this state
shall send an Identify Timeout confirmation to the management application layer to indicate that an identify
timeout occurred.
If this state receives a HARD_RESET Received message before an Identify Received message is received,
then this state shall send a HARD_RESET Received confirmation to the port layer and the management
application layer and a Stop SNTT request to the phy layer.
If this state receives a HARD_RESET Received message after an Identify Received message is received,
then the HARD_RESET Received message shall be ignored.
Figure 149 shows the sequence to transition from the active phy power condition to a low phy power
condition.
Phy A Tx
Phy B Rx
D.C. idle
Phy A Rx
Phy B Tx
Key:
Dwords
PS_ACK
PS_REQ transmitted by Long time
pattern the link layer
Figure 149 –Transitioning from the active phy power condition to a low phy power condition
The transition to a low phy power condition is acknowledged using a PS_ACK pattern as defined in table 175.
Pattern Description
Sequence of:
PS_ACK pattern 1) PS_ACK primitive sequence (see 6.2.6.11); and
2) three idle dwords.
After sending a PS_ACK pattern the transmitter may continue to transmit a vendor specific number of idle
dwords.
After sending a PS_REQ primitive sequence, if no PS_ACK primitive sequence is received before the Power
Condition Request Timeout timer (see table 187 and table 190) expires, then the transition to the low phy
power condition is aborted and the phy remains in the active phy power condition.
6.14 Power control and SL_P (link layer power control) state machines
An expander device or SAS initiator device that is capable of processing requests for additional consumption
of power (i.e., a power source device):
a) indicates support for processing requests for additional consumption of power by setting the POWER
CAPABLE field to 10b in the IDENTIFY address frame (see 6.10.2);
b) notifies the management application layer when a power consumer device is requesting the
consumption of power beyond the typical peak power used while in the active power condition;
c) manages power consumption grants sent to a power consumer device; and
d) processes power consumption requests received from a power consumer device.
The processing of requests for additional consumption of power is enabled in a power source device that:
a) sets the POWER CAPABLE field to 10b in the IDENTIFY address frame; and
b) receives an IDENTIFY address frame with the POWER CAPABLE field set to 01b.
A power source device that sets the POWER CAPABLE field to 10b in the IDENTIFY address frame on any phy
shall set the POWER CAPABLE field to 10b in the IDENTIFY address frame for all phys within that power source
device.
A power source device uses PWR_REQ, PWR_GRANT, PWR_DONE, and PWR_ACK.
A power source device shall on a phy:
a) only make requests to a SL_P_S state machine if the phy is enabled;
b) exit any low phy power condition (see 4.11.1) before requesting a grant be sent to a power consumer
device; and
c) disable any enabled low phy power condition until the additional consumption of power is complete
and then re-enable any low phy power condition that was disabled.
A SAS target device that is capable of requesting additional consumption of power (i.e., a power consumer
device):
a) indicates support for requesting additional consumption of power by setting the POWER CAPABLE field
to 01b in the IDENTIFY address frame (see 6.10.2);
b) receives requests from the management application layer when consumption of power beyond the
typical peak power used while in the active power condition is required;
c) manages power consumption requests sent to a power source device; and
d) processes power consumption grants received from a power source device.
The requesting of additional consumption of power is enabled in a power consumer device that:
a) sets the POWER CAPABLE field to 01b in the IDENTIFY address frame; and
b) receives an IDENTIFY address frame with the POWER CAPABLE field set to 10b.
A power consumer device that sets the POWER CAPABLE field to 01b in the IDENTIFY address frame on any
phy shall set the POWER CAPABLE field to 01b in the IDENTIFY address frame for all phys within that power
consumer device.
A power consumer device shall only request the additional consumption of power on one phy at a time.
A power consumer device uses PWR_REQ, PWR_GRANT, PWR_DONE, and PWR_ACK.
A power consumer device shall on a phy:
a) exit any low phy power condition (see 4.11.1) before requesting consumption of power beyond the
typical peak power; and
b) disable any enabled low phy power conditions until consumption of power beyond the typical peak
power is complete and then re-enable any low phy power condition that was disabled.
A power source device may use NOTIFY (ENABLE SPINUP) to manage power on a SAS target device (see
6.2.5.2.2).
A power source device shall use NOTIFY (ENABLE SPINUP) to manage power on a SAS target device (see
6.2.5.2.2) if that power source device:
a) is not capable of managing requests for additional consumption of power; or
b) receives an IDENTIFY address frame with the POWER CAPABLE field set to 00b.
SL_P_S_2:
Wait_Grant
Cancel
Transmit Power Request SL_CC
Power Use Granted (PWR_GRANT) XL
PWR_REQ Received Transmit Power Request SL_CC
(PWR_ACK) XL
SL_P_S_3:
Wait_Done
Figure 150 –SL_P_S (link layer power source device) state machine
The SL_P_S transmitter receives the following message from the SL_P_S state machine specifying primitive
sequences to transmit:
a) Transmit NOTIFY (Enable Spinup).
The SL_P_S receiver sends the following messages to the SL_P_S state machine indicating the primitive
sequence received from the SP_DWS receiver (see 5.15.2) and the SP_PS receiver (see 5.16.2):
a) PWR_REQ Received;
b) PWR_DONE Received; and
c) PWR_ACK Received.
The SL_P_S receiver shall ignore all other dwords.
The SL_P_S transmitter relationship to other transmitters is defined in 4.3.2. The SL_P_S receiver
relationship to other receivers is defined in 4.3.3.
If this state receives a Transmit NOTIFY request, then this state shall send a Transmit NOTIFY (Enable
Spinup) message to the SL_P_S transmitter.
If this state receives a PWR_REQ Received message and the last Idle State Condition message received
contained an Active argument, then this state shall send:
a) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state; and
b) an Additional Power Request confirmation to the management application layer.
If this state receives a PWR_REQ Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send:
A) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state; and
B) an Additional Power Request confirmation to the management application layer.
If this state receives a PWR_DONE Received message and the last Idle State Condition message received
contained an Active argument, then this state shall send, then this state should send a Transmit Power
Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state.
If this state receives a PWR_DONE Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state.
Implementations compliant with SPL-3 may not send a Transmit Power Request (PWR_ACK) message in
response to a PWR_DONE Received message while in this state.
This state waits for a Power Use Granted request from the management application layer.
If this state receives a Power Use Granted request and the last Idle State Condition message received
contained an Active argument, then this state shall send a Transmit Power Request (PWR_GRANT) message
to the SL_CC0:Idle state or XL0:Idle state.
If this state receives a Power Use Granted request and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send a Transmit Power Request (PWR_GRANT) message to the SL_CC0:Idle state or XL0:Idle state.
If this state receives a PWR_REQ Received message and the last Idle State Condition message received
contained an Active argument, then this state shall send a Transmit Power Request (PWR_ACK) message to
the SL_CC0:Idle state or XL0:Idle state.
If this state receives a PWR_REQ Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state.
This state waits for the power consumer device to indicate the use of additional power consumption is
complete.
On entry this state shall:
a) initialize and start the Power Done timer; and
b) initialize and start the ACK Timeout timer.
If this state receives a PWR_ACK Received message, then this state shall stop the ACK Timeout timer.
If the ACK Timeout timer expires and the last Idle State Condition message received contained an Active
argument, then this state shall:
a) send a Transmit Power Request (PWR_GRANT) message to the SL_CC0:Idle state or XL0:Idle state;
and
b) initialize and start the ACK Timeout timer.
If the ACK Timeout timer expires and the last Idle State Condition message received contained an Inactive
argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message;
2) send a Transmit Power Request (PWR_GRANT) message to the SL_CC0:Idle state or XL0:Idle state;
and
3) initialize and start the ACK Timeout timer.
If this state receives a PWR_DONE Received message and the last Idle State Condition message received
contained an Active argument, then this state shall:
a) send a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state;
and
b) send a Power Use Complete confirmation to the management application layer.
If this state receives a PWR_DONE Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send:
A) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state; and
B) a Power Use Complete confirmation to the management application layer.
If the Power Done timer expires, then this state shall send a Power Done Timeout confirmation to the
management application layer.
This state machine shall maintain the timers listed in table 177.
Phy Enabled
Phy Disabled
SL_P_C_2:
Request_Power
SL_P_C_3:
Wait_Grant
SL_P_C_4:
Wait_Done
Phy Disabled
Phy Enabled
Figure 151 –SL_P_C (link layer power consumer device) state machine
The SL_P_C receiver sends the following messages to the SL_P_C state machine indicating the primitive
sequence received from the SP_DWS receiver (see 5.15.2) and the SP_PS receiver (see 5.16.2):
a) NOTIFY Received (Enable Spinup);
b) PWR_GRANT Received; and
c) PWR_ACK Received.
The SL_P_C receiver shall ignore all other dwords.
The SL_P_C receiver relationship to other receivers is defined in 4.3.3.
If this state receives a NOTIFY Received (Enable Spinup) message, then this state shall send a Power Use
Granted confirmation to the SA_PC state machine (see 9.2.10.2).
In this state, the phy is enabled:
a) if no Phy Disabled confirmation has been received since this state is entered; or
b) if a Phy Enable confirmation has been received after the last Phy Disabled confirmation was received.
In this state, the phy is disabled:
a) if no Phy Enabled confirmation has been received since this state is entered with a Phy Disabled
argument; or
b) a Phy Disabled confirmation is received without a subsequent Phy Enabled confirmation.
In this state, requesting power is enabled when:
a) the phy is enabled; and
b) the last Idle State Condition message received contained an Active argument.
If this state receives a PWR_GRANT Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send:
A) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state; and
B) a Power Use Granted confirmation to the SA_PC state machine (see 9.2.10.2).
If the ACK Timeout timer expires, then this state shall send a Power Request Failed (ACK Timeout)
confirmation to the SA_PC state machine (see 9.2.10.2).
If this state receives a Phy Disabled confirmation, then this state shall send a Power Request Failed (Phy
Disabled) confirmation to the SA_PC state machine (see 9.2.10.2).
This state waits for the power source device to allow additional consumption of power.
On entry this state shall initialize and start the Power Grant timer.
If this state receives a PWR_GRANT Received message and the last Idle State Condition message received
contained an Active argument, then this state shall:
a) send a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state; and
b) send a Power Use Granted confirmation to the SA_PC state machine (see 9.2.10.2).
If this state receives a PWR_GRANT Received message and the last Idle State Condition message received
contained an Inactive argument, then this state shall:
1) wait until receiving an Idle State Condition (Active) message; and
2) send:
A) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state; and
B) a Power Use Granted confirmation to the SA_PC state machine (see 9.2.10.2).
If the Power Grant timer expires, then this state shall send a Power Request Failed (Grant timeout)
confirmation to the SA_PC state machine (see 9.2.10.2).
This state waits for the management application layer to indicate that it no longer requires additional
consumption of power.
In this state the phy is enabled:
a) if no Phy Disabled confirmation has been received since this state is entered; or
b) if a Phy Enable confirmation has been received after the last Phy Disabled confirmation was received.
If this state:
a) receives a Power Use Complete request;
b) the phy is enabled; and
c) the last Idle State Condition received contained an Active argument,
then this state shall send a Transmit Power Request (PWR_DONE) message to the SL_CC0:Idle state.
If this state receives a Power Use Complete request and either phy is not enabled or the last Idle State
Condition received contained an Inactive argument, then this state shall:
1) wait until:
A) receiving an Idle State (Active) message; and
B) the phy is enabled;
and
2) send a Transmit Power Request (PWR_DONE) message to the SL_CC0:Idle state.
If this state sends a Transmit Power Request (PWR_DONE) message to the SL_CC0:Idle state, then this
state shall initialize and start the ACK Timeout timer.
If the ACK Timeout timer expires, then this state shall, at least one time:
1) send a Transmit Power Request (PWR_DONE) message to the SL_CC0:Idle state after:
A) the phy is enabled; and
B) the last Idle State Condition message received contains an Active argument;
and
2) initialize and start the ACK Timeout timer.
The number of times this state waits for an acknowledgement from the power source device is vendor
specific.
An expander device shall originate Broadcast (Change) from at least one phy in each of its expander ports
other than the expander port that is the cause for originating Broadcast (Change).
Expander devices shall originate Broadcast (Change) for the following expander phy-related reasons:
a) after an expander phy’s SP state machine transitions from the SP15:SAS_PHY_Ready state,
SP22:SATA_PHY_Ready state, SP31:SAS_PS_Low_Phy_Power state, SP32:SAS_PS_ALIGN0
state, or SP33:SAS_PS_ALIGN1 state to the SP0:OOB_COMINIT state (see 5.14);
NOTE 26 - This occurs when the expander phy is reset or disabled with the SMP PHY CONTROL function
DISABLE, LINK RESET, HARD RESET, or TRANSMIT SATA PORT SELECTION SIGNAL phy operations
(see 9.4.4.28) as well as when dword synchronization is lost for any other reason.
b) after an expander phy’s SP state machine reaches the SP26:SATA_SpinupHold state and sends a
SATA Spinup Hold confirmation as defined in 5.14.8 and 5.20;
c) after an expander phy’s SP state machine sends a SATA Port Selector change confirmation to the link
layer (see 5.14.3);
d) after an expander phy completes the link reset sequence (see 6.11);
e) after a virtual phy has been enabled or completed processing a reset requested by the SMP PHY
CONTROL function LINK RESET or HARD RESET phy operations (see 9.4.4.28); and
f) after an STP SATA bridge receives an initial Register - Device to host FIS (see 8.3.1).
In zoning expander devices with zoning enabled, forwarding Broadcasts is subject to restrictions defined in
4.9.5.
In zoning expander devices with zoning enabled, a Broadcast (Change) for an expander phy-related reason
shall be originated from the source zone group of the expander phy causing the Broadcast (Change) or from
zone group 1.
Expander devices shall originate Broadcast (Change) for the following expander device-related reasons:
a) after a self-configuring expander device has changed its SELF CONFIGURING bit from one to zero in the
SMP REPORT GENERAL response (see 9.4.4.4) as described in 4.7.4. In zoning expander devices
with zoning enabled, the source zone group shall be 01h; and
b) after a locked expander device is unlocked (i.e., a zoning expander device has changed its ZONE
CONFIGURING bit from one to zero in the SMP REPORT GENERAL response) (see 4.9.6.5, 4.9.6.6,
and 9.4.4.23), with the source zone group as specified in 4.9.6.5, 4.9.6.6, and 9.4.4.23.
Expander devices shall forward Broadcast (Change) after an expander phy receives Broadcast (Change).
For a virtual phy, if there is any time after a reset is originated during which connection requests to the
attached SAS address result in connection responses of OPEN_REJECT (NO DESTINATION), then the
expander device shall originate the Broadcast (Change) twice, once at the start of the reset (i.e., when the
SAS address becomes unavailable) and once at its completion (i.e., when the SAS address becomes
available). If there is no such time window, then the expander device shall originate the Broadcast (Change)
once.
SAS initiator ports may originate Broadcast (Change) to force other SAS initiator ports and expander ports to
re-run the discover process. SAS target ports should not originate Broadcast (Change).
See 9.4.4.4 for details on counting Broadcast (Change) origination in an expander device.
6.16 Connections
A connection is opened between a SAS initiator port and a SAS target port before communication begins. A
connection is established between one SAS initiator phy in the SAS initiator port and one SAS target phy in
the SAS target port.
SSP initiator ports open SSP connections to transmit SCSI commands, task management functions, and
transfer write data. SSP target ports open SSP connections to transfer read data, request write data, and
transmit service responses.
SMP initiator ports open SMP connections to transmit SMP requests and receive SMP responses.
STP initiator ports and STP target ports open STP connections to transmit SATA frames. An STP target port in
an expander device opens STP connections on behalf of SATA devices.
The OPEN address frame is used to request that a connection be opened (see 6.16.2.1). AIP primitive
sequences, OPEN_ACCEPT, and OPEN_REJECT are the responses to an OPEN address frame (see
6.16.2.2). A BREAK primitive sequence is used to abort connection requests (see 6.16.7) and to break a
connection (see 6.16.11). A CLOSE primitive sequence is used for orderly closing of a connection (see
6.16.9).
Connections use a single pathway from the SAS initiator phy to the SAS target phy. While a connection is
open, only one pathway shall be used for that connection.
For STP connections, connections may be between the STP initiator port and an STP target port of an STP
SATA bridge in an expander device. The SATA device behind the STP SATA bridge is not aware of SAS
connection management.
A wide port may have separate connections on each of its logical phys.
The OPEN address frame (see 6.10.3) is used to open a connection from a source port to a destination port
using one source phy (i.e., one logical phy in the source port) and one destination phy (i.e., one logical phy in
the destination port).
To make a connection request, the source port shall transmit an OPEN address frame through an available
logical phy (i.e., the source phy). The source phy shall transmit idle dwords after the OPEN address frame
until it receives a response or aborts the connection request with a BREAK primitive sequence.
After transmitting an OPEN address frame, the source phy shall initialize and start a 1 ms Open Timeout timer.
Whenever an AIP is received, the source phy shall reinitialize and restart the Open Timeout timer. Source
phys are not required to enforce a limit on the number of AIPs received before aborting the connection
request. When any connection response is received, the source phy shall reinitialize the Open Timeout timer.
If the Open Timeout timer expires before a connection response is received, then the source phy shall
transmit a BREAK primitive sequence to abort the connection request (see 6.16.7).
The OPEN address frame flows through expander devices onto intermediate logical links. If an expander
device on the pathway is unable to forward the connection request, then that expander device returns
OPEN_REJECT (see 6.16.5). If the OPEN address frame reaches the destination phy, then the destination
phy returns either OPEN_ACCEPT or OPEN_REJECT unless the OPEN address frame passed an OPEN
address frame from the destination phy with higher arbitration priority (see 6.16.4). Rate matching shall be
used on any logical links in the pathway with negotiated logical link rates that are faster than the requested
connection rate (see 6.17).
A wide port should not attempt to establish more connections to a destination port than the number of phys in
the destination port or the number of phys in the narrowest logical link on the pathway to the destination port.
A wide port should not attempt to establish more connections than the number of phys in the narrowest
common logical link on the pathways to the destination ports of those connections. Additional requirements for
STP connection requests are defined in 6.21.7. Additional requirements for SMP connection requests are
defined in 6.22.4.
Figure 152 shows an example of the simultaneous connection recommendations for wide ports.
7-wide
Port A
Port C
2-wide
a) A source port should not
attempt to open more than 7 4-wide
connections using this wide link
c) recommendations a), c), and h) together specify that port Z should not attempt to open more than one
connection to port D. If port Z has a connection open to port Y, then port Z should not attempt to open
another connection to port D until the first connection is closed.
After a logical phy transmits an OPEN address frame, it shall expect one or more of the results listed in table
178.
Result Description
SMP frame priority is used by an expander device to prioritize OPEN address frames with the SAS PROTOCOL
field set to SMP.
If an expander phy or a SAS phy supports SMP frame priority, then that phy shall set the SMP PRIORITY
CAPABLE bit to one in the IDENTIFY address frame (see 6.10.2).
Each SAS port and expander port shall include an Arbitration Wait Time timer that counts the time from the
moment when the port makes a connection request until the request is accepted or rejected. The Arbitration
Wait Time timer is in the port layer state machine (see 7.2.2). The Arbitration Wait Time timer shall count in
microseconds from 0 µs to 32 767 µs and in milliseconds from 32 768 µs to 32 767 ms + 32 768 µs. The
Arbitration Wait Time timer shall stop incrementing when its value reaches 32 767 ms + 32 768 µs.
A SAS port (i.e., a SAS initiator port or a SAS target port) shall start the Arbitration Wait Time timer when it
transmits the first OPEN address frame (see 6.10.3) for the connection request. When the SAS port
retransmits the OPEN address frame (e.g., after losing arbitration and handling an inbound OPEN address
frame), it shall set the ARBITRATION WAIT TIME field to the current value of the Arbitration Wait Time timer.
A SAS port should set the Arbitration Wait Time timer to zero when it transmits the first OPEN address frame
for the connection request. A SAS initiator port or SAS target port may be unfair by setting the ARBITRATION
WAIT TIME field in the OPEN address frame (see 6.10.3) to a higher value than its Arbitration Wait Time timer
indicates. However, an unfair SAS port shall not set the ARBITRATION WAIT TIME field to a value greater than or
equal to 8000h.
The expander port that receives an OPEN address frame shall set the Arbitration Wait Time timer to the value
of the incoming ARBITRATION WAIT TIME field and start the Arbitration Wait Time timer as the expander port
arbitrates for internal access to the outgoing expander port. When the expander device transmits the OPEN
address frame out another expander port, it shall set the outgoing ARBITRATION WAIT TIME field to the current
value of the Arbitration Wait Time timer maintained by the incoming expander port.
A SAS port shall stop the Arbitration Wait Time timer and set the Arbitration Wait Time timer to zero when the
SAS port has no more frames to send.
A SAS port shall stop the Arbitration Wait Time timer and set the Arbitration Wait Time timer to zero when the
SAS port receives one of the following connection responses:
a) OPEN_ACCEPT;
b) OPEN_REJECT (PROTOCOL NOT SUPPORTED);
c) OPEN_REJECT (ZONE VIOLATION);
d) OPEN_REJECT (RESERVED ABANDON 1);
e) OPEN_REJECT (RESERVED ABANDON 2);
f) OPEN_REJECT (RESERVED ABANDON 3);
g) OPEN_REJECT (STP RESOURCES BUSY); or
h) OPEN_REJECT (WRONG DESTINATION).
When an OPEN_REJECT (RETRY), OPEN_REJECT (RESERVED CONTINUE 0), or OPEN_REJECT
(RESERVED CONTINUE 1) is received:
a) if the CONTINUE AWT bit is set to one in the Protocol Specific Port mode page (see 9.2.7.4), then a
connection response of OPEN_REJECT (RETRY), OPEN_REJECT (RESERVED CONTINUE 0), or
OPEN_REJECT (RESERVED CONTINUE 1) shall not stop the Arbitration Wait Time timer and shall
not set the Arbitration Wait Time timer to zero; or
b) If the CONTINUE AWT bit is set to zero, then a SAS port shall stop the Arbitration Wait Time timer and
set the Arbitration Wait Time timer to zero.
A SAS port should not stop the Arbitration Wait Time timer and set the Arbitration Wait Time timer to zero
when the SAS port receives an incoming OPEN address frame that has priority over the outgoing OPEN
address frame according to table 179, regardless of whether the SAS port replies with an OPEN_ACCEPT or
an OPEN_REJECT.
When arbitrating for access to an outgoing expander port, the expander device shall select the connection
request based on the rules described in 6.16.5.
If two connection requests pass on a logical link, then the logical phy shall determine the winner by comparing
OPEN address frame field contents using the arbitration priority described in table 179.
Table 179 – Arbitration priority for OPEN address frames passing on a logical link
ARBITRATION WAIT TIME field value SOURCE SAS ADDRESS field value
See 6.10.3 for details on the OPEN address frame, the ARBITRATION WAIT TIME field and the SOURCE SAS
ADDRESS field.
An expander logical phy shall set its Request Path request High Priority argument to one when the expander
logical phy requests a path after:
a) the expander logical phy has forwarded an OPEN address frame to the logical link;
b) the expander logical phy receives an OPEN address frame with higher arbitration priority (see 6.16.4);
and
c) the destination SAS address and connection rate of the received OPEN address frame are not equal
to the source SAS address and connection rate of the transmitted OPEN address frame (see 6.19.4
and 6.19.8),
otherwise the expander logical phy shall set the High Priority argument to zero.
See the XL state machine (see 6.19) for detailed expander logical phy requirements.
The ECM shall arbitrate and assign or deny path resources for Request Path requests (see 4.5.6.3) from each
expander logical phy.
Arbitration includes adherence to the SAS arbitration fairness algorithm and path recovery. Path recovery is
used to avoid potential deadlock scenarios within the SAS topology by deterministically choosing which partial
pathways to tear down to allow at least one connection to complete.
The ECM shall maintain an Arbitration Wait Time state machine variable for each Request Path request that
the ECM is processing. The ECM shall initialize the Arbitration Wait Time state machine variable to the
Arbitration Wait Time argument upon receiving the Request Path request and shall repeatedly increment the
Arbitration Wait Time state machine variable until the ECM completes responding to the Request Path
request.
The Source SAS Address argument and Connection Rate argument are set to values received in the received
OPEN address frame.
The following are used by the ECM to compare Request Path requests:
a) Source SAS Address argument;
b) Connection Rate argument;
c) High Priority argument; and
d) Arbitration Wait Time state machine variable.
The High Priority argument is used to increase the priority of a Request Path request after a Backoff Retry
response is sent by an expander logical phy (see 6.19.4).
The ECM shall send an Arbitrating (Normal) confirmation after it has received a Request Path request.
The ECM shall send an Arbitrating (Waiting On Partial) confirmation if it is waiting on a partial pathway (see
4.1.11). The ECM is waiting on a partial pathway if:
a) there is a destination port capable of routing to the requested destination SAS address;
b) at least one expander logical phy within the destination port supports the requested connection rate;
c) each of the expander logical phys within the destination port is returning a Phy Status (Partial
Pathway) response or Phy Status (Blocked Partial Pathway) response; and
d) at least one of the expander logical phys within the destination port is returning a Phy Status (Partial
Pathway) response.
The ECM shall send an Arbitrating (Blocked On Partial) confirmation if it is waiting on a blocked partial
pathway (see 4.1.11). The ECM is waiting on a blocked partial pathway if:
a) there is a destination port capable of routing to the requested destination SAS address;
b) at least one expander logical phy within the destination port supports the requested connection rate;
and
c) each of the expander logical phys within the destination port is returning a Phy Status (Blocked Partial
Pathway) response.
The ECM shall send an Arbitrating (Waiting On Connection) confirmation if it is waiting on a connection to
complete (see 4.1.12). The ECM is waiting on a connection to complete if:
a) the connection request is blocked by an active connection;
b) the ECM is receiving Pause Phy responses from an expander logical phy associated with the
connection request and the phy identifier from the connection request is not the same as the Phy
Identifier argument of the Pause Phy responses; or
c) there are insufficient routing resources within the expander to complete the connection request.
A connection request shall be considered blocked by an active connection when:
a) there is a destination port capable of routing to the requested destination SAS address;
b) at least one expander logical phy within the destination port supports the requested connection rate;
c) each of the expander logical phys within the destination port is returning:
A) a Phy Status (Partial Pathway) response;
B) a Phy Status (Blocked Partial Pathway) response;
C) a Phy Status (Breaking Connection) response; or
D) a Phy Status (Connection) response;
and
d) at least one of the expander logical phys within the destination port is returning a Phy Status
(Connection) response.
The ECM shall generate the Arb Won confirmation when all of the following conditions are met:
a) the Request Path request maps to a destination expander logical phy that:
A) supports the connection rate; and
B) is not reporting:
a) a Phy Status (Partial Pathway) response;
b) a Phy Status (Blocked Partial Pathway) response;
c) a Phy Status (Breaking Connection) response; or
d) a Phy Status (Connection) response,
unless that expander logical phy is arbitrating for the requesting expander logical phy;
b) the ECM is:
A) not receiving Pause Phy responses from an expander logical phy associated with the connection
request; or
B) receiving Pause Phy responses from an expander logical phy associated with the connection
request and the phy identifier from the connection request is the same as the Phy Identifier
argument of the Pause Phy responses;
c) there are sufficient routing resources to complete the connection request;
d) no higher priority Request Path requests are present with the requesting expander logical phy as the
destination; and
e) the Request Path request is the highest priority Request Path request (see table 180) mapping to the
destination expander logical phy (i.e., only send one Arb Won confirmation for Request Path requests
to the same destination phy).
If two or more Request Path requests contend, then the ECM shall select the request with the highest
arbitration priority. The arbitration priority for a Request Path request (see table 180) consists of the following:
a) High Priority argument;
b) SMP Open Priority argument;
c) Arbitration Wait Time state machine variable;
d) Source SAS Address argument; and
e) Connection Rate argument.
Table 180 – Arbitration priority for a Request Path request in the ECM
The ECM shall generate the Arb Lost confirmation when all of the following conditions are met:
a) the Request Path request maps to a destination expander logical phy that:
A) supports the connection rate; and
B) is not reporting a Phy Status (Partial Pathway) response, a Phy Status (Blocked Partial Pathway)
response, a Phy Status (Breaking Connection) response, or a Phy Status (Connection) response
unless that expander logical phy is arbitrating for the requesting expander logical phy;
b) there are sufficient routing resources to complete the connection request; and
c) one of the following conditions are met:
A) the destination expander logical phy is making a Request Path request with the requesting
expander logical phy as its destination (i.e., when two expander logical phys both receive an
OPEN address frame destined for each other, the ECM provides the Arb Lost confirmation to the
expander logical phy that received the lowest priority OPEN address frame); or
B) the ECM is sending an Arb Won confirmation to another expander logical phy that is using the
requesting expander logical phy as the destination.
The ECM shall generate one of the following Arb Reject confirmations when any of the following conditions
are met and all the Arb Won conditions (see 6.16.5.2.3) are not met:
1) an Arb Reject (Bad Destination) confirmation if the source expander logical phy and destination
expander logical phys are in the same expander port and are using the direct routing method;
2) an Arb Reject (Retry) confirmation if the expander device is unable to process the connection request
because it has reduced functionality (see 4.5.8);
3) if the source expander logical phy and destination expander logical phys are in the same expander
port and are using the table routing method or the subtractive routing method, then:
A) an Arb Reject (No Destination) confirmation if the expander device is not configuring (see 4.7.4);
or
B) an Arb Reject (Retry) confirmation if the expander device is configuring;
4) if there are no destination expander logical phys (i.e., there is no direct routing or table routing match
and there is no subtractive phy), then:
A) an Arb Reject (No Destination) confirmation if the expander device is not configuring; or
B) an Arb Reject (Retry) confirmation if the expander device is configuring;
5) if access to the destination expander logical phys is prohibited by zoning (see 4.9.3), then:
A) an Arb Reject (Zone Violation) confirmation if the zoning expander device is unlocked; or
B) an Arb Reject (Retry) confirmation if the zoning expander device is locked;
6) an Arb Reject (Connection Rate Not Supported) confirmation if none of the destination expander
logical phys supports the connection rate; and
7) an Arb Reject (Pathway Blocked) confirmation if all the destination expander logical phys that support
the connection rate contain blocked partial pathways (i.e., are all returning Phy Status (Blocked Partial
Pathway) responses) and pathway recovery rules require this Request Path request be rejected to
release path resources (see 6.16.5.5).
Arbitration status shall be conveyed between expander devices and by expander devices to SAS endpoints
using AIP primitive sequences (see 6.2.6.1). This status is used to monitor the progress of connection
attempts and to facilitate pathway recovery as part of deadlock recovery.
The arbitration status of an expander logical phy is set to the last type of AIP received.
Before an expander device transmits an AIP primitive sequence, the expander device may have transmitted
an OPEN address frame on the same physical link. Arbitration fairness dictates which OPEN address frame
wins (see 6.16.4).
After transmitting an AIP primitive sequence, an expander device shall transmit at least one other dword (e.g.,
an idle dword) before transmitting another AIP primitive sequence.
Expander devices shall transmit at least one AIP primitive sequence every 128 dwords while originating AIP
(NORMAL) primitive sequences, AIP (WAITING ON PARTIAL) primitive sequences, or AIP (WAITING ON
CONNECTION) primitive sequence.
NOTE 27 - Expander devices compliant with SAS-1.1 were not required to transmit three consecutive AIP
primitives, as AIP was defined as a single primitive sequence (see 6.2.4.2) rather than as an extended
primitive sequence (see 6.2.4.5).
If SAS dword mode is enabled, then expander devices shall transmit an AIP primitive sequence (e.g., an AIP
(NORMAL)) within 128 dwords of receiving an OPEN address frame.
If SAS packet mode is enabled, then expander devices shall transmit an AIP primitive sequence (e.g., an AIP
(NORMAL)) within 300 ns of receiving an OPEN address frame.
Each expander logical phy shall maintain a Partial Pathway Timeout timer. This timer is used to identify
potential deadlock conditions and to request resolution by the ECM. An expander logical phy shall initialize the
Partial Pathway Timeout timer to the time reported in the PARTIAL PATHWAY TIMEOUT VALUE field in the SMP
DISCOVER response (see 9.4.4.10) and run the Partial Pathway Timeout timer whenever the ECM provides
an Arbitrating (Blocked On Partial) confirmation to the expander logical phy that all expander logical phys
within the requested destination port are blocked waiting on partial pathways.
NOTE 28 - The partial pathway timeout value allows flexibility in specifying how long an expander device
waits before attempting pathway recovery. The recommended default value (see 9.4.4.10) was chosen to
cover a wide range of topologies. Selecting small partial pathway timeout value values within a large topology
compromises performance as a result of the time a device waits after receiving OPEN_REJECT (PATHWAY
BLOCKED) before retrying the connection request. Similarly, selecting large partial pathway timeout value
values within a small topology compromises performance due to waiting longer than necessary to detect
pathway blockage.
When the Partial Pathway Timeout timer is not running, an expander logical phy shall initialize and start the
Partial Pathway Timeout timer when all expander logical phys within the requested destination port contain a
blocked partial pathway (i.e., are returning Phy Status (Blocked Partial Pathway)).
NOTE 29 - The Partial Pathway Timeout timer is not initialized and started if one or more of the expander
logical phys within a requested destination port are being used for a connection.
When one of the conditions in this subclause is not met, the expander logical phy shall stop the Partial
Pathway Timeout timer. If the Partial Pathway Timeout timer expires, then pathway recovery shall occur (see
6.16.5.5).
Pathway recovery provides a means to abort connection requests in order to prevent deadlock using pathway
recovery priority comparisons. Pathway recovery priority comparisons compare the PATHWAY BLOCKED COUNT
fields and SOURCE SAS ADDRESS fields of the OPEN address frames of the blocked connection requests as
described in table 181.
PATHWAY BLOCKED COUNT field value SOURCE SAS ADDRESS field value
If the ECM receives a Partial Pathway Timeout Timer Expired request from an arbitrating expander logical phy
expires (i.e., reaches a value of zero), the ECM shall determine whether to continue the connection request or
to abort the connection request.
The ECM shall reply to a connection request with Arb Reject (Pathway Blocked) when:
a) a Partial Pathway Timeout Timer Expired request has been received; and
b) the pathway recovery priority of the arbitrating expander logical phy (i.e., the expander logical phy
requesting the connection) is less than or equal to the pathway recovery priority of any of the
expander logical phys within the destination port that are sending Phy Status (Blocked Partial
Pathway) responses to the ECM.
The pathway blocked count and source SAS address values used to form the pathway recovery priority of a
destination phy are those of the Request Path request if the expander logical phy sent a Request Path request
to the ECM or those of the Forward Open indication if the expander logical phy received a Forward Open
indication from the ECR.
A logical phy aborts a connection request (see 6.16.7) and breaks a connection (see 6.16.11) by transmitting
a BREAK primitive sequence.
Logical phys shall enable the BREAK_REPLY method of responding to received BREAK primitive sequences
when:
a) the BREAK_REPLY CAPABLE bit transmitted by the logical phy in the outgoing IDENTIFY address frame
is set to one; and
b) the BREAK_REPLY CAPABLE bit received by the logical phy in the incoming IDENTIFY address frame is
set to one.
Logical phys shall disable the BREAK_REPLY method of responding to received BREAK primitive sequences
if the BREAK_REPLY CAPABLE bit received by the logical phy in the incoming IDENTIFY address frame is set to
zero.
Logical phys contained within SAS devices or expander devices that are compliant with this standard shall set
the BREAK_REPLY CAPABLE bit to one in their outgoing IDENTIFY address frame.
If the BREAK_REPLY method of responding to received BREAK primitive sequences is enabled, then the
logical phy transmits a BREAK_REPLY primitive sequence in response to a received BREAK primitive
sequence.
If the BREAK_REPLY method of responding to received BREAK primitive sequences is disabled, then the
logical phy response to a received BREAK primitive sequence is defined in 6.18 and 6.19.
NOTE 30 - Phys compliant with SAS-1.1 do not set the BREAK_REPLY CAPABLE bit to one in their outgoing
IDENTIFY address frames.
BREAK may be used to abort a connection request. The source phy shall transmit a BREAK primitive
sequence after the Open Timeout timer expires or if the source phy chooses to abort its request for any other
reason before a connection is established.
After transmitting a BREAK primitive sequence, the source phy shall initialize a Break Timeout timer to 1 ms
and start the Break Timeout timer.
After a source phy transmits a BREAK primitive sequence to abort a connection request, the source phy shall
expect one of the results listed in table 182.
BREAK_REPLY
method of
responding to
Result Description
received BREAK
primitive
sequences
Receive a BREAK primitive This confirms that the connection request has been
sequence aborted.
Disabled
Receive a BREAK_REPLY
Ignore the BREAK_REPLY primitive sequence.
primitive sequence
The originating phy shall transmit a BREAK_REPLY
Receive a BREAK primitive primitive sequence and wait to receive a BREAK_REPLY
sequence primitive sequence or for the BREAK Timeout timer to
Enabled expire.
Receive a BREAK_REPLY This confirms that the connection request has been
primitive sequence aborted.
Enabled or The originating phy shall assume the connection request
Break Timeout timer expires
disabled has been aborted.
When a logical phy transmitting a BREAK primitive sequence is attached to an expander device, the BREAK
or BREAK_REPLY response to the logical phy is generated by the expander logical phy to which the logical
phy is attached, not the other SAS logical phy in the connection. If the expander device has transmitted a
connection request to the destination, then the expander device shall also transmit a BREAK primitive
sequence to the destination. If the expander device has not transmitted a connection request to the
destination, then the expander device shall not transmit a BREAK primitive sequence to the destination. After
transmitting a BREAK primitive sequence or BREAK_REPLY primitive sequence back to the source phy, the
expander device shall ensure that a connection response does not occur (i.e., the expander device shall no
longer forward dwords from the destination). Figure 153 shows an example of BREAK usage.
Case 1: OPEN address frame has not propagated through the expander device:
OPEN Expander
address frame device idle dwords
Expander Expander Destination
Source phy
phy phy phy
idle dwords idle dwords
Case 1 result: Expander device transmits a BREAK_REPLY primitive sequence to the source phy.
BREAK
primitive sequence
Expander idle dwords
Expander device Expander Destination
Source phy
phy phy phy
idle dwords
BREAK_REPLY
primitive sequence
Case 2: OPEN address frame has propagated through the expander device:
Expander
OPEN device OPEN
address frame Forward Open address frame
Expander Expander Destination
Source phy
phy phy phy
idle dwords (none) idle dwords
Case 2 result: Expander device transmits a BREAK_REPLY primitive sequence to the source phy
and a BREAK primitive sequence to the destination phy, then waits for a BREAK_REPLY
primitive sequence from the destination phy.
Expander
BREAK device BREAK
primitive sequence primitive sequence
Forward Break
Expander Expander Destination
Source phy
phy phy phy
(none)
BREAK_REPLY BREAK_REPLY
primitive sequence primitive sequence
Figure 154 shows the sequence for a connection request where the Open Timeout timer expires.
transmitter receiver
OPEN address frame
Reset Open Timeout timer
AIP
Reset Open Timeout timer AIP
Receive 1 ms of idle
dwords without AIP -
Open Timeout timer
expires
Transmit BREAK primitive sequence
Receive BREAK primitive sequence
An expander device’s expander function initiates the closing of an SSP connection by sending a Begin SSP
Connection Close confirmation to the XL state machine (see 6.19.9) for each expander phy being used by the
SSP connection. Upon receipt of a Begin SSP Connection Close confirmation each expander phy associated
with the SSP connection being closed replaces the transmission of any:
a) RRDY (NORMAL) with an RRDY (CLOSE) (see 6.19.2); and
b) EXTEND_CONNECTION (NORMAL) with an EXTEND_CONNECTION (CLOSE) (see 6.19.2).
CLOSE is used to close a connection of any protocol. See 6.20.8 for details on closing SSP connections,
6.21.8 for details on closing STP connections, and 6.22.5 for details on closing SMP connections.
After transmitting a CLOSE primitive sequence and CLOSE primitive parameter (see 6.2.6.5.2), if any, the
originating phy shall initialize a Close Timeout timer to 1 ms and start the Close Timeout timer.
After the logical phy transmits a CLOSE primitive sequence and CLOSE primitive parameter, if any, to close a
connection, logical phy shall expect one of the results listed in table 183.
Result Description
No additional dwords for the connection shall follow the CLOSE primitive sequence except a CLOSE primitive
parameter, if any, Expander devices shall close the full-duplex connection upon forwarding a CLOSE primitive
sequence and a CLOSE primitive parameter, if any, in each direction.
When a logical phy has both transmitted and received a CLOSE primitive sequence, the logical phy shall
consider the connection closed.
Figure 155 shows example sequences for closing a connection with no CLOSE primitive parameter.
CLOSE primitive
sequence
time time
time time
If extended fairness priority is supported (i.e., EXTENDED FAIRNESS bit (see 9.4.4.4) is set to one), then the ECM
shall respond to a Request Fairness Priority request with a Fairness Priority confirmation.
If an ECM receives a Request Fairness Priority request and there is:
a) a blocked connection request associated with the expander logical phy that sent the Request
Fairness request, then the ECM shall send a Fairness Priority confirmation to the requesting
expander logical phy with the following arguments specifying the highest priority OPEN address frame
requesting access to the logical phy specified by the Phy Identifier argument:
A) High Priority;
In addition to aborting a connection request, a BREAK primitive sequence may also be used to break a
connection in cases where CLOSE is not available. After transmitting a BREAK primitive sequence, the
originating phy shall ignore all incoming dwords except for BREAKs, BREAK_REPLYs, and deletable
primitives.
After transmitting a BREAK primitive sequence, the originating phy shall initialize a Break Timeout timer to
1 ms and start the Break Timeout timer.
After a logical phy transmits a BREAK primitive sequence to break a connection, the logical phy shall expect
one of the results listed in table 184.
BREAK_REPLY
method of
responding to
Result Description
received BREAK
primitive
sequences
Receive a BREAK
This confirms that the connection has been broken.
primitive sequence
Disabled
Receive BREAK_REPLY
Ignore the BREAK_REPLY primitive sequence.
primitive sequence
The originating phy shall transmit a BREAK_REPLY
Receive a BREAK primitive sequence and wait to receive a BREAK_REPLY
primitive sequence primitive sequence or for the BREAK Timeout timer to
Enabled expire.
Receive a
BREAK_REPLY primitive This confirms that the connection has been broken.
sequence
The originating phy shall assume the connection has been
Enabled or Break Timeout timer
broken. The originating phy may perform a link reset
disabled expires
sequence.
In addition to a BREAK, a connection is considered broken if a link reset sequence starts (i.e., the SP state
machine transitions from SP15:SAS_PHY_Ready or SP22:SATA_PHY_Ready to SP0:OOB_COMINIT (see
5.14)).
See 6.20.7 for additional rules on breaking an SSP connection.
Each successful connection request contains the connection rate (see 4.1.12) of the pathway.
If the logical phy’s logical link rate is faster than the connection rate, then that logical phy shall insert:
a) deletable primitives between dwords; or
b) SPL packets containing a scrambled idle segment between SPL packets.
Each logical phy in the pathway while in the SAS dword mode shall insert deletable primitives between
dwords if the logical phy’s logical link rate is faster than the connection rate as described in table 185.
Table 185 – Rate matching deletable primitive insertion requirements while in the SAS dword mode
Deletable primitives inserted for rate matching are in addition to deletable primitives inserted for physical link
rate tolerance management (see 6.5). See Annex H for a summary of their combined requirements.
Figure 156 shows an example of rate matching between a 3 Gbit/s originating phy and a 3 Gbit/s receiving
phy, with an intermediate 1.5 Gbit/s physical link in between them.
Physical link B
Physical link A Physical link C
1.5 Gbit/s
3 Gbit/s negotiated 3 Gbit/s negotiated
negotiated physical
physical link rate physical link rate
link rate
Sample dwords on physical links (from left to right) during a 1.5 Gbit/s connection:
Time
Physical
ALIGN dword 0 ALIGN dword 1 ALIGN dword 2 ALIGN dword
link A
Physical
link B dword dword 0 dword 1 dword 2
Physical
dword ALIGN dword ALIGN dword 0 ALIGN dword 1 ALIGN
link C
Figure 156 –Rate matching example while in the SAS dword mode
A logical phy originating dwords shall start rate matching at the selected connection rate starting with the first
dword that is not a deletable primitive inserted for physical link rate tolerance management following:
a) transmitting the EOAF for an OPEN address frame; or
b) transmitting an OPEN_ACCEPT.
An expander logical phy forwarding dwords shall not insert deletable primitives for rate matching based on
counting dwords transmitted and shall insert deletable primitives whenever it underflows.
The source phy transmits idle dwords including deletable primitives at the selected connection rate while
waiting for the connection response. This enables each expander device to start forwarding dwords from the
source phy to the destination phy after forwarding an OPEN_ACCEPT.
A logical phy shall stop inserting deletable primitives for rate matching after:
a) transmitting the first dword in a CLOSE primitive sequence;
b) transmitting the first dword in a BREAK primitive sequence;
c) transmitting the first dword in a BREAK_REPLY primitive sequence;
d) receiving an OPEN_REJECT for a connection request; or
e) losing arbitration to a received OPEN address frame.
Each logical phy in the pathway while in the SAS packet mode shall insert SPL packets containing a
scrambled idle segment between SPL packets if the logical phy’s logical link rate is faster than the connection
rate as described in table 186.
Table 186 – Rate matching deletable primitive insertion requirements while in the SAS packet mode
SPL packet payloads containing a scrambled idle segment inserted for rate matching are in addition to
deletable extended binary primitives contained in primitive segments for physical link rate tolerance
management (see 6.5). See Annex H for a summary of their combined requirements.
Figure 157 shows an example of rate matching between a 22.5 Gbit/s originating phy and a 22.5 Gbit/s
receiving phy, with an intermediate 12 Gbit/s physical link in between them.
Physical
link B 4 dwords 4 dwords 4 dwords 4 words
(G4)
Figure 157 –Rate matching example while in the SAS packet mode
A logical phy originating SPL packets shall start rate matching at the selected connection rate starting with the
first SPL packet that does not contain a deletable extended binary primitive inserted for physical link rate
tolerance management following an SPL packet containing:
a) an EOAF for an OPEN address frame; or
b) an OPEN_ACCEPT.
An expander logical phy forwarding the contents of a received SPL packet:
a) shall not insert scrambled idle segments for rate matching based on counting SPL packets
transmitted; and
b) shall insert scrambled idle segments whenever it underflows.
The source phy transmits SPL packets that include scrambled idle segments or deletable extended binary
primitives at the selected connection rate while waiting for the connection response. This enables each
expander device to start forwarding SPL packet payloads containing a scrambled idle segment from the
source phy to the destination phy after forwarding an OPEN_ACCEPT.
A logical phy shall stop inserting SPL packet payloads containing scrambled idle segments for rate matching
after:
a) transmitting the first SPL packet payload containing a CLOSE primitive sequence;
b) transmitting the first SPL packet payload a BREAK primitive sequence;
c) transmitting the first SPL packet payload a BREAK_REPLY primitive sequence;
d) receiving an OPEN_REJECT for a connection request; or
e) losing arbitration to a received OPEN address frame.
The SL (link layer for SAS logical phys) state machines control connections, handles connection requests
(i.e., OPEN address frames), CLOSEs, and BREAKs. The SL state machines are as follows:
a) SL_RA (receive OPEN address frame) state machine (see 6.18.3); and
b) SL_CC (connection control) state machine (see 6.18.4).
All the SL state machines shall begin after receiving an Enable Disable SAS Link (Enable) message from the
SL_IR state machines.
If a state machine consists of multiple states, then the initial state is as indicated in the state machine
description.
Figure 158, figure 159, and figure 160 show the SL state machines.
Figure 158 –SL (link layer for SAS logical phys) state machines (1 of 3)
SL_RA SL_CC8:PS_Request
Accept_Reject SL_CC0
Opens SL_CC0
(to all states)
Phy Layer Manage Phy
Ready (SAS) Power Conditions
Figure 159 –SL (link layer for SAS logical phys) state machines (2 of 3)
Figure 160 –SL (link layer for SAS logical phys) state machines (3 of 3)
The SL transmitter receives the following messages from the SL state machines specifying primitive
sequences, frames, and dwords to transmit:
a) Transmit Idle Dword;
b) Transmit SOAF/Data Dwords/EOAF;
c) Transmit OPEN_ACCEPT;
d) Transmit OPEN_REJECT with an argument indicating the specific type (e.g., Transmit
OPEN_REJECT (Retry));
e) Transmit BREAK;
f) Transmit BREAK_REPLY;
g) Transmit PS_REQ with an argument indicating the specific type (e.g., Transmit PS_REQ (Partial) or
Transmit PS_REQ (Slumber));
h) Transmit PS_ACK Pattern (see 6.13);
i) Transmit PS_NAK;
j) Transmit BROADCAST;
k) Transmit PWR_REQ;
l) Transmit PWR_ACK;
m) Transmit PWR_DONE;
n) Transmit PWR_GRANT; and
o) Transmit CLOSE with an argument indicating the specific type (e.g., Transmit CLOSE (Normal)).
When the SL transmitter is requested to transmit a dword from any state within any of the SL state machines,
the SL transmitter shall transmit that dword. If there are multiple requests to transmit, then the following
priority should be followed when selecting the dword to transmit:
1) BREAK_REPLY;
2) BREAK;
3) CLOSE;
4) OPEN_ACCEPT or OPEN_REJECT;
5) SOAF, data dword, or EOAF;
6) PWR_REQ, PWR_ACK, PWR_DONE, or PWR_GRANT;
7) PS_REQ, PS_ACK Pattern, or PS_NAK; and
8) idle dword.
When there is no outstanding message specifying a dword to transmit, the SL transmitter shall transmit idle
dwords.
The SL transmitter sends the following messages to the SL state machines based on dwords that have been
transmitted:
a) SOAF/Data Dwords/EOAF Transmitted; and
b) PS_ACK Pattern Transmitted.
The SL receiver sends the following messages to the SL state machines indicating primitive sequences and
dwords received from the SP_DWS receiver (see 5.15.2) and the SP_PS receiver (see 5.16.2):
a) SOAF Received;
b) Data Dword Received;
c) EOAF Received;
d) BROADCAST Received with an argument indicating the specific type (e.g., BROADCAST Received
(Change));
e) BREAK Received;
f) BREAK_REPLY Received;
g) OPEN_ACCEPT Received;
h) OPEN_REJECT Received with an argument indicating the specific type (e.g., OPEN_REJECT
Received (No Destination));
i) AIP Received;
j) CLOSE Received with an argument indicating the specific type (e.g., CLOSE Received (Normal));
k) NOTIFY Received (Power Loss Expected);
l) PS_REQ Received with an argument indicated the specific type (e.g., PS_REQ Received (Partial) or
PS_REQ Received (Slumber));
m) PS_ACK Received;
n) PS_NAK Received;
o) ERROR Received; and
p) Invalid Dword Received.
The SL_RA state machine’s function is to receive address frames and determine if each received address
frame is a valid OPEN address frame. This state machine consists of one state.
This state machine receives SOAFs, dwords of an OPEN address frames, and EOAFs.
This state machine shall ignore all messages except SOAF Received, Data Dword Received and EOAF
Received.
If this state machine receives a subsequent SOAF Received message after receiving an SOAF Received
message but before receiving an EOAF Received message, then this state machine shall discard the address
frame in progress.
If this state machine receives more than eight Data Dword Received messages (i.e., 32 bytes) after an SOAF
Received message and before an EOAF Received message, then this state machine shall discard the
address frame.
If this state machine receives an Invalid Dword Received message or an ERROR Received message after an
SOAF Received message and before an EOAF Received message, then this state machine shall either:
a) ignore the invalid dword or ERROR; or
b) discard the address frame.
After receiving an EOAF Received message, this state machine shall check if the address frame is a valid
OPEN address frame.
This state machine shall accept an address frame if:
a) the ADDRESS FRAME TYPE field is set to 1h (i.e., OPEN);
b) the number of data dwords between the SOAF and EOAF is eight; and
c) no CRC Error Occurred message was received for this address frame,
otherwise this state machine shall discard the address frame. If the frame is not discarded then this state
machine shall send an OPEN Address Frame Received message to the SL_CC0:Idle state and the
SL_CC1:ArbSel state with an argument that contains all the data dwords received in the OPEN address
frame.
This state machine shall start in the SL_CC0:Idle state. The state machine shall transition to the SL_CC0:Idle
state from any other state after receiving an Enable Disable SAS Link (Disable) message from the SL_IR state
machines (see 6.12).
This machine receives the following messages from the SSP link layer state machine (see 6.20.9), the STP
link layer state machine, and SMP link layer state machine (see 6.22.6):
a) Request Break; and
b) Request Close.
This state machine sends the following messages to the SL_P_S link layer state machine (see 6.14.4) and
SL_P_C link layer state machine (see 6.14.5):
a) Idle State Condition (Active); and
b) Idle State Condition (Inactive).
This state machine sends the following messages to the SSP link layer state machine, the STP link layer state
machine, and SMP link layer state machine:
a) Enable Disable SSP (Enable);
b) Enable Disable SSP (Disable);
c) Enable Disable STP (Enable);
d) Enable Disable STP (Disable);
e) Enable Disable SMP (Enable); and
f) Enable Disable SMP (Disable).
This state machine receives the following messages from the SL_IR state machines (see 6.12):
a) Enable Disable SAS Link (Enable); and
b) Enable Disable SAS Link (Disable).
Any message received by a state that is not referred to in the description of that state or in this subclause shall
be ignored.
If this state machine receives an Accept_Reject OPENs (Accept SSP) request, then this state machine shall
set the Reject SSP Opens state machine variable (see table 188) to NO. If this state machine receives an
Accept_Reject OPENs (Reject SSP) request, then this state machine shall set the Reject SSP Opens state
machine variable to YES.
If this state machine receives an Accept_Reject OPENs (Accept SMP) request, then this state machine shall
set the Reject SMP Opens state machine variable (see table 188) to NO. If this state machine receives an
Accept_Reject OPENs (Reject SMP) request, then this state machine shall set the Reject SMP Opens state
machine variable to YES.
If this state machine receives an Accept_Reject OPENs (Accept STP) request, then this state machine shall
set the Reject STP Opens state machine variable (see table 188) to NO. If this state machine receives an
Accept_Reject OPENs (Reject STP) request, then this state machine shall set the Reject STP Opens state
machine variable to YES.
If this state machine receives a Manage Power Conditions (Accept Partial) request from the management
application layer, then this state machine shall set the Accept Partial state machine variable (see table 188) to
YES. If this state machine receives a Manage Power Conditions (Accept Slumber) request from the
management application layer, then this state machine shall set the Accept Slumber state machine variable
(see table 188) to YES.
If this state machine receives a Manage Power Conditions (Reject Partial) request from the management
application layer, then this state machine shall set the Accept Partial state machine variable to NO. If this state
machine receives a Manage Power Conditions (Reject Slumber) request from the management application
layer, then this state machine shall set the Accept Slumber state machine variable to NO.
The default value of the Accept Partial state machine variable shall be set to NO and default value of the
Accept Slumber state machine variable shall be set to NO.
Any detection of an internal error shall cause the SL_CC state machine to transition to the SL_CC5:BreakWait
state.
This state machine shall maintain the timers listed in table 187.
This state machine shall maintain the state machine variables listed in table 188.
This state is the initial state and is the state that is used while there is no connection pending or established.
Upon entry into this state, this state shall:
a) send an Enable Disable SSP (Disable) message to the SSP link layer state machines;
b) send an Enable Disable SMP (Disable) message to the SMP link layer state machines;
c) send an Enable Disable STP (Disable) message to the STP link layer state machines;
d) send an Idle State Condition (Active) message to the SL_P_S link layer state machine (see 6.14.4)
and SL_P_C link layer state machine (see 6.14.5);
e) initialize and start the Idle timer;
f) send a Connection Closed (Transition to Idle) confirmation to the port layer;
g) send an Enable APTA confirmation to the management application layer; and
h) send an Enable APTA request to the phy layer.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL transmitter (see 6.6).
c) Transmit Power Request (PWR_DONE) message, then this state shall send a Transmit PWR_DONE
message to the SL transmitter; or
d) Transmit Power Request (PWR_GRANT) message, then this state shall send a Transmit
PWR_GRANT message to the SL transmitter.
If the Idle timer expires, then this state shall:
a) send an Idle State Condition (Active) message to the SL_P_S link layer state machine (see 6.14.4)
and SL_P_C link layer state machine (see 6.14.5); and
b) initialize and start the Idle timer.
If this state has not sent a Transmit PS_ACK Pattern message to the SL transmitter, then this transition shall
occur after receiving:
a) an Enable Disable SAS Link (Enable) message; and
b) an Open Connection request.
The Open Connection request includes these arguments:
a) Initiator Port Bit;
b) Protocol;
c) Connection Rate;
d) Initiator Connection Tag;
e) Destination SAS Address;
f) Source SAS Address;
g) Pathway Blocked Count; and
h) Arbitration Wait Time.
If persistent connections are supported (see 4.1.13.2), then the Open Connection request includes the
following argument:
a) Send Extend Bit.
If credit advance is implemented (see 4.1.14), then the Open Connection request includes the following
argument:
a) Credit Advance Bit.
Before this transition, this state shall send:
a) an Idle State Condition (Inactive) message to the SL_P_S link layer state machine (see 6.14.4);
b) an Idle State Condition (Inactive) message to the SL_P_C link layer state machine (see 6.14.5);
c) an APTA Disabled (Active Connection) confirmation to the management application layer; and
d) a Disable APTA request to the phy layer.
If this state has not sent a Transmit PS_ACK Pattern message to the SL transmitter, then this transition shall
occur after receiving:
a) an Enable Disable SAS Link (Enable) message; and
b) a Change Phy Power Condition (Enter Slumber) or Change Phy Power Condition (Enter Partial)
request from the management application layer.
This transition shall include the Phy Power Condition (Enter Partial) argument or Phy Power Condition (Enter
Slumber) argument that corresponds to the Change Phy Power Condition request.
Before this transition, this state shall send:
a) an Idle State Condition (Inactive) message to the SL_P_S link layer state machine (see 6.14.4);
b) an Idle State Condition (Inactive) message to the SL_P_C link layer state machine (see 6.14.5);
c) an APTA Disabled (Low Phy Power Condition) confirmation to the management application layer; and
d) a Disable APTA request to the phy layer.
Table 189 – OPEN_REJECT Received message to Open Failed confirmation mapping (part 1 of 2)
OPEN_REJECT Received (Connection Rate Not Open Failed (Connection Rate Not
Supported) Supported)
OPEN_REJECT Received (Protocol Not Supported) Open Failed (Protocol Not Supported)
OPEN_REJECT Received (STP Resources Busy) Open Failed (STP Resources Busy)
Table 189 – OPEN_REJECT Received message to Open Failed confirmation mapping (part 2 of 2)
This transition shall occur after receiving an SOAF/Data Dwords/EOAF Transmitted message if:
a) one or more AIP Received messages have been received before an OPEN Address Frame Received
message is received (i.e., the incoming OPEN address frame overrides the outgoing OPEN address
frame); or
b) no AIP Received messages have been received before an OPEN Address Frame Received message
is received, and:
A) SMP frame priority is enabled (see 6.16.3):
a) the SAS PROTOCOL field in the transmitted OPEN address frame was set to other than SMP;
and
b) the SAS PROTOCOL field in the received OPEN address frame is set to SMP;
or
B) the arbitration fairness rules (see 6.16.4) indicate the received OPEN address frame overrides
the outgoing OPEN address frame if:
a) SMP frame priority is disabled (see 6.16.3);
b) SMP frame priority is enabled and:
A) the SAS PROTOCOL field in the transmitted OPEN address frame was set to other than
SMP; and
B) the SAS PROTOCOL field in the received OPEN address frame is set to other than SMP;
or
c) SMP frame priority is enabled and:
A) the SAS PROTOCOL field in the transmitted OPEN address frame was set to SMP; and
B) the SAS PROTOCOL field in the received OPEN address frame is set to SMP.
The arbitration fairness comparison shall compare:
a) the value of the arbitration wait time argument in the Open Connection request for the outgoing OPEN
address frame; and
b) the value of the ARBITRATION WAIT TIME field received in the incoming OPEN address frame.
If persistent connections are supported (see 4.1.13.2) and:
a) the SEND EXTEND bit is set to one in the received OPEN address frame and the INITIATOR PORT bit is
set to one in the received OPEN address frame, then this transition shall include an Extend
Connection (Transmit) argument;
b) the SEND EXTEND bit is set to zero in the received OPEN address frame, then this transition shall
include an Extend Connection (Off) argument; or
c) the INITIATOR PORT bit is set to zero in the received OPEN address frame, then this transition shall
include an Extend Connection (Off) argument.
If credit advance is implemented (see 4.1.14) and:
a) the CREDIT ADVANCE bit is set to one in the received OPEN address frame; and
b) the SAS PROTOCOL field is set to 001b (i.e., SSP) in the received OPEN address frame,
then this transition shall include an Advance Credit (Received) argument.
This transition shall occur after receiving an SOAF/Data Dwords/EOAF Transmitted message if a BREAK
Received message has not been received and after:
a) sending an Open Failed (Arb Stopped) confirmation to the port layer;
b) sending an Open Failed (Open Timeout Occurred) confirmation to the port layer; or
c) a NOTIFY Received (Power Loss Expected) message is received.
If a NOTIFY Received (Power Loss Expected) message was received and the SAS port that contains this
state machine supports NOTIFY (Power Loss Expected) (e.g., the SAS port is an SSP target port), then this
transition shall include a Power Loss Expected argument.
This state completes the establishment of an SSP, SMP, or STP connection when an incoming connection
request has won arbitration by sending a Transmit OPEN_ACCEPT message, or rejects opening a connection
by sending a Transmit OPEN_REJECT message to the SL transmitter.
This state shall respond to an incoming OPEN address frame using the following rules:
1) if the OPEN address frame DESTINATION SAS ADDRESS field does not match the SAS address of this
port, then this state shall send a Transmit OPEN_REJECT (Wrong Destination) message to the SL
transmitter (see 6.18.4.4.2);
2) if the OPEN address frame INITIATOR PORT bit, SAS PROTOCOL field, FEATURES field, and/or INITIATOR
CONNECTION TAG field are set to values that are not supported (e.g., a connection request from an
SMP target port), then this state shall send a Transmit OPEN_REJECT (Protocol Not Supported)
message to the SL transmitter (see 6.18.4.4.2);
3) if the OPEN address frame CONNECTION RATE field is set to a connection rate that is not supported,
then this state shall send a Transmit OPEN_REJECT (Connection Rate Not Supported) message to
the SL transmitter (see 6.18.4.4.2);
4) if the OPEN address frame SAS PROTOCOL field is set to STP, the STP target port supports affiliations,
and the source SAS address is not that of an STP initiator port with an affiliation established (see
6.21.6), then this state shall send a Transmit OPEN_REJECT (STP Resources Busy) message to the
SL transmitter (see 6.18.4.4.2);
5) if the OPEN address frame SAS PROTOCOL field is set to SSP and the Reject SSP Opens state
machine variable is set to YES, then this state shall send a Transmit OPEN_REJECT (Retry)
message to the SL transmitter (see 6.18.4.4.2);
6) if the OPEN address frame SAS PROTOCOL field is set to SMP and the Reject SMP Opens state
machine variable is set to YES, then this state shall send a Transmit OPEN_REJECT (Retry)
message to the SL transmitter (see 6.18.4.4.2);
7) if the OPEN address frame SAS PROTOCOL field is set to STP and the Reject STP Opens state
machine variable is set to YES, then this state shall send a Transmit OPEN_REJECT (Retry)
message to the SL transmitter (see 6.18.4.4.2);
8) if the OPEN address frame SAS PROTOCOL field is set to SSP and the Reject SSP Opens state
machine variable is set to NO, then this state shall send a Transmit OPEN_ACCEPT message to the
SL transmitter and send a Connection Opened (SSP, Destination Opened) confirmation to the port
layer (see 6.18.4.4.3);
9) if the OPEN address frame SAS PROTOCOL field is set to SMP and the Reject SMP Opens state
machine variable is set to NO, then this state shall send a Transmit OPEN_ACCEPT message to the
SL transmitter and send a Connection Opened (SMP, Destination Opened) confirmation to the port
layer (see 6.18.4.4.3); or
10) if the OPEN address frame SAS PROTOCOL field is set to STP and the Reject STP Opens state
machine variable is set to NO, then this state shall send a Transmit OPEN_ACCEPT message to the
SL transmitter and send a Connection Opened (STP, Destination Opened) confirmation to the port
layer (see 6.18.4.4.3).
If this state sends a Transmit OPEN_REJECT message to the SL transmitter, then it shall also send an
Inbound Connection Rejected confirmation to the port layer.
NOTE 31 - Possible livelock scenarios occur if the BREAK_REPLY method of responding to BREAK primitive
sequences is disabled and a SAS logical phy transmits a BREAK primitive sequence to abort a connection
request (e.g., if its Open Timeout timer expires). SAS logical phys responding to OPEN Address frames faster
than 1 ms reduce susceptibility to this problem.
This transition shall occur after sending a Transmit OPEN_REJECT message to the SL transmitter.
This transition shall occur after sending a Connection Opened confirmation to the port layer.
This transition shall include:
a) an Open SSP Connection, Open STP Connection, or Open SMP Connection argument based on the
requested protocol;
b) the received OPEN address frame;
c) the Extend Connection argument, if persistent connections are supported (see 4.1.13.2); and
d) the Advance Credit argument, if the transition into this state included an Advance Credit argument.
If the SAS port that contains this state machine supports NOTIFY (Power Loss Expected) (e.g., the SAS port
is an SSP target port), then this transition shall occur:
a) after receiving a NOTIFY Received (Power Loss Expected) message and shall include a Power Loss
Expected argument.
This state enables the SSP, STP, or SMP link layer state machine to transmit dwords during a connection. See
6.17 for details on rate matching during the connection.
If this state is entered from SL_CC1:ArbSel state or the SL_CC2:Selected state with an argument of Open
SMP Connection, then this state shall send an Enable Disable SMP (Enable) message to the SMP link layer
state machines (see 6.22.6).
If this state is entered from SL_CC1:ArbSel state or the SL_CC2:Selected state with an argument of Open
SSP Connection, then:
1) this state shall send an Enable Disable SSP (Enable) message to the SSP link layer state machines
(see 6.20.9);
2) if this state is entered with an Advance Credit (Received) argument, then this state shall send an
Advance Credit (Received) message to the SSP link layer state machines (see 6.20.9); and
3) if this state is entered with an Advance Credit (Transmitted) argument, then this state shall send an
Advance Credit (Transmitted) message to the SSP link layer state machines (see 6.20.9).
If this state is entered from SL_CC1:ArbSel state or the SL_CC2:Selected state with an argument of Open
STP Connection, then this state shall send an Enable Disable STP (Enable) message to the STP link layer
state machines (see 6.21.10).
If this state is entered from SL_CC1:ArbSel state or the SL_CC2:Selected state with an argument of Open
SSP Connection and persistent connections are supported (see 4.1.13.2), then this state if entered with:
a) an Extend Connection (Transmit) argument, shall:
A) send a Persistent Connection (Transmit) message to the SSP_EM link layer state machine (see
6.20.9.12); and
B) send a Persistent Connection Established (Disabled) confirmation to the port layer;
b) an Extend Connection (Wait) argument, shall:
A) send a Persistent Connection (Wait) message to the SSP_EM link layer state machine (see
6.20.9.12); and
B) send a Persistent Connection Established (Disabled) confirmation to the port layer;
or
c) an Extend Connection (Off) argument, send a Persistent Connection (Off) message to the SSP_EM
link layer state machine (see 6.20.9.12).
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL transmitter until the SSP, SMP, or STP link layer state machine starts transmitting.
A CLOSE Received message may be received at any time while in this state, but shall be ignored during SSP
and SMP connections. If a CLOSE Received (Clear Affiliation) message is received during an STP
connection, then this state shall clear any affiliation (see 6.21.6).
If a Request Break message is received and a BREAK Received message has not been received, then this
state shall send a Connection Closed (Break Requested) confirmation to the port layer.
If a BREAK Received message is received, then this state shall send a Connection Closed (Break Received)
confirmation to the port layer.
This state closes the connection and releases all resources associated with the connection.
Upon entry into this state, this state shall:
1) send a Transmit CLOSE (Normal) message or Transmit CLOSE (Clear Affiliation) message to the SL
transmitter (see 6.21.8); and
2) initialize and start the Close Timeout timer.
A CLOSE Received message may be received at any time while in this state. If a CLOSE Received (Clear
Affiliation) message is received during an STP connection, then this state shall clear any affiliation (see
6.21.6).
NOTE 32 - Possible livelock scenarios occur if the BREAK_REPLY method of responding to received BREAK
primitive sequences is disabled and a SAS logical phy transmits a BREAK primitive sequence to break a
connection (e.g., if its Close Timeout timer expires). SAS logical phys responding to CLOSE faster than 1 ms
reduce susceptibility to this problem.
If a CLOSE Received message is received, then this state shall send a Connection Closed (Normal)
confirmation to the port layer.
If a BREAK Received message is received, then this state shall send a Connection Closed (Break Received)
confirmation to the port layer.
If a BREAK Received message has not been received and no CLOSE Received message is received in
response to a Transmit CLOSE message before the Close Timeout timer expires, then this state shall send a
Connection Closed (Close Timeout) confirmation to the port layer.
This state closes the connection if one is established and releases all resources associated with the
connection.
Upon entry into this state, this state shall:
1) send a Transmit BREAK message to the SL transmitter; and
2) initialize and start the Break Timeout timer.
If this state:
a) is entered with a Power Loss Expected argument; or
b) receives a NOTIFY Received (Power Loss Expected) message and the SAS port that contains this
state machine supports NOTIFY (Power Loss Expected) (e.g., the SAS port is an SSP target port),
then this state shall send a NOTIFY Received (Power Loss Expected) confirmation to the port layer.
If a BREAK Received message is received and the BREAK_REPLY method of responding to received
BREAK primitive sequences is enabled (see 6.16.6), then this state shall send a Transmit BREAK_REPLY
message to the SL transmitter.
NOTE 33 - Some SAS logical phys compliant with SAS-1.1 send a Transmit OPEN_REJECT (Retry)
message to the SL transmitter in response to each OPEN Address Frame Received message received while
in this state.
This state closes any connection and releases all resources associated with this connection.
Upon entry into this state:
a) if the BREAK_REPLY method of responding to received BREAK primitive sequences is enabled (see
6.16.6), then this state shall send a Transmit BREAK_REPLY message to the SL transmitter (see
6.18.4.8.2); and
b) if the BREAK_REPLY method of responding to received BREAK primitive sequences is disabled (see
6.16.6), then this state shall send a Transmit BREAK message to the SL transmitter.
If this state:
a) is entered with a Power Loss Expected argument; or
b) receives a NOTIFY Received (Power Loss Expected) message and the SAS port that contains this
state machine supports NOTIFY (Power Loss Expected) (e.g., the SAS port is an SSP target port),
then this state shall send a NOTIFY Received (Power Loss Expected) confirmation to the port layer.
This state closes an STP connection and releases all resources associated with the connection.
Upon entry into this state, this state shall:
1) send a Transmit CLOSE (Normal) message or Transmit CLOSE (Clear Affiliation) message to the SL
transmitter (see 6.21.8); and
2) send a Connection Closed (Normal) confirmation to the port layer (see 6.18.4.9.2).
NOTE 34 - Possible livelock scenarios occur if the BREAK_REPLY method of responding to received BREAK
primitive sequences is disabled and a SAS logical phy transmits a BREAK primitive sequence to break a
connection (e.g., if its Close Timeout timer expires). SAS logical phys responding to a CLOSE primitive
sequence faster than 1 ms reduce susceptibility to this problem.
This state requests the attached phy change to a low phy power condition.
Upon entry into this state, this state shall:
a) if entered with the Phy Power Condition (Enter Partial) argument, then send a Transmit PS_REQ
(Partial) message to the SL transmitter;
b) if entered with the Phy Power Condition (Enter Slumber) argument, then send a Transmit
PS_REQ (Slumber) message to the SL transmitter; and
c) initialize and start the Power Condition Request Timeout timer.
If this state:
a) is entered with the Phy Power Condition (Enter Partial) argument; and
b) receives a PS_REQ Received (Slumber) message,
then this state shall set the Phy Power Condition argument to Enter Partial.
If this state:
a) is entered with the Phy Power Condition (Enter Slumber) argument; and
b) receives a PS_REQ Received (Partial) message,
then this state shall:
a) set the Phy Power Condition argument to Enter Partial; and
b) if the Accept Partial state machine variable is set to:
A) YES, then send a Transmit PS_ACK Pattern message to the SL transmitter; or
B) NO, then send a Transmit PS_NAK message to the SL transmitter.
If this state:
a) receives a PS_REQ Received message;
b) the PS_REQ Received message argument is requesting the same power condition as the Phy Power
Condition argument; and
c) the attached SAS address is greater than the port identifier (i.e., SAS address),
then this state shall send:
a) a Transmit PS_ACK Pattern message to the SL transmitter;
b) a Manage Phy Power Conditions (Stop DWS) request to the phy layer; and
c) a Manage Phy Power Conditions (Stop PS) request to the phy layer.
If a Change Phy Power Condition request is received, then this state shall send a Phy Power Condition Status
(Retry Change Phy Power Condition Request) confirmation to the management application layer.
If an Open Connection request is received, then this state shall send an Open Failed (Low Phy Power
Condition) confirmation to the port layer.
If a BROADCAST Received (Change) message, BROADCAST Received (Reserved Change 0) message, or
BROADCAST Received (Reserved Change 1) message is received, then this state shall send a Change
Received confirmation to the management application layer.
If a Transmit Broadcast request is received, then this state shall send a Retry Transmit Broadcast confirmation
to the management application layer.
This state requests the phy be placed into a low phy power condition.
If this state is entered with a Phy Power Condition (Enter Partial) argument, then this state shall send:
a) a Manage Phy Power Conditions (Enter Partial) request to the phy layer; and
b) a Phy Power Condition Status (In Partial) confirmation to the management application layer.
If this state is entered with Phy Power Condition (Enter Slumber) argument, then this state shall send:
a) a Manage Phy Power Conditions (Enter Slumber) request to the phy layer; and
b) a Phy Power Condition Status (In Slumber) confirmation to the management application layer.
If this state receives a:
a) Change Phy Power Condition (Enter Slumber) request and the current phy power condition is partial;
or
b) Change Phy Power Condition (Enter Partial) request and the current phy power condition is slumber,
then this state shall send a Phy Power Condition Status (Request Exit Power Condition) confirmation to the
management application layer.
If a Transmit Broadcast request is received, then this state shall send a Retry Transmit Broadcast confirmation
to the management application layer.
If this state receives an Open Connection request or a Change Phy Power Condition (Exit Power Condition)
request, then this state shall send a Manage Phy Power Conditions (Exit) request to the phy layer.
This transition shall occur after receiving both a Phy Layer Ready (SAS) confirmation and an Open
Connection request. The Open Connection request includes these arguments:
a) Initiator Port Bit;
b) Protocol;
c) Connection Rate;
d) Initiator Connection Tag;
e) Destination SAS Address;
f) Source SAS Address;
g) Pathway Blocked Count; and
h) Arbitration Wait Time.
If persistent connections are supported (see 4.1.13.2), then the Open Connection request includes the
following argument:
a) Send Extend Bit.
If credit advance is implemented (see 4.1.14), then the Open Connection request includes the following
argument:
a) Credit Advance Bit.
The XL state machine controls the flow of dwords on the logical link and establishes and maintains
connections with another XL state machine as facilitated by the expander function (e.g., the ECM and ECR).
This state machine consists of the following states:
a) XL0:Idle (see 6.19.3) (initial state);
b) XL1:Request_Path (see 6.19.4);
c) XL2:Request_Open (see 6.19.5);
d) XL3:Open_Confirm_Wait (see 6.19.6);
e) XL5:Forward_Open (see 6.19.7);
f) XL6:Open_Response_Wait (see 6.19.8);
g) XL7:Connected (see 6.19.9);
h) XL8:Close_Wait (see 6.19.10);
i) XL9:Break (see 6.19.11);
j) XL10:Break_Wait (see 6.19.12);
k) XL11:PS_Request (see 6.19.13); and
l) XL12:PS_Quiet (see 6.19.14).
NOTE 35 - Actions contained in the removed XL4:Open_Reject state have been placed into the
XL1:Request_Path state.
This state machine shall start in the XL0:Idle state. The XL state machine shall transition to the XL0:Idle state
from any other state after receiving an Enable Disable SAS Link (Disable) message from the SL_IR state
machines (see 6.12).
This state machine receives the following messages from the SL_IR state machines:
a) Enable Disable SAS Link (Enable); and
b) Enable Disable SAS Link (Disable).
This state machine sends the following messages to the SL_P_S link layer state machine (see 6.14.4):
a) Idle State Condition (Active); and
b) Idle State Condition (Inactive).
Any message received by a state that is not referred to in the description of that state shall be ignored.
If this state machine receives a Manage Power Conditions (Accept Partial) request from the ECM, then this
state machine shall set the Accept Partial state machine variable (see table 191) to YES. If this state machine
receives a Manage Power Conditions (Accept Slumber) request from the ECM, then this state machine shall
set the Accept Slumber state machine variable (see table 191) to YES.
If this state machine receives a Manage Power Conditions (Reject Partial) request from the ECM, then this
state machine shall set the Accept Partial state machine variable to NO. If this state machine receives a
Manage Power Conditions (Reject Slumber) request from the ECM, then this state machine shall set the
Accept Slumber state machine variable to NO.
The default value of the Accept Partial state machine variable and Accept Slumber state machine variable
shall be NO.
This state machine shall maintain the timers listed in table 190.
Partial Pathway Timeout timer Partial pathway timeout value (see 6.16.5.4)
Break Timeout timer 1 ms
Power Condition Request Timeout timer 1 ms
Idle timer 1 ms
For SSP connections, the value in the SSP CONNECT TIME
SSP Maximum Connection Time Limit timer LIMITfield (see 9.4.4.4). For SMP connections and STP
connections this timer is not used.
Wait For Frame Timeout timer 1 ms
Delay Expander Forward Open Indication The value in the INITIAL TIME TO DELAY EXPANDER FORWARD
timer OPEN INDICATION field (see 9.4.4.4).
The XL state machine shall maintain the state machine variables listed in table 191.
Used to determine if the ECM is permitting this phy to enter a partial phy
Accept Partial
power condition.
Used to determine if the ECM is permitting this phy to enter a slumber phy
Accept Slumber
power condition.
Open Source SAS
The SAS address of the SAS port that originated the OPEN address frame.
Address
Open Destination SAS The SAS address of the SAS port that is the destination of the OPEN
Address address frame.
XL0:Idle XL9:Break
XL11:PS_Request
XL12:PS_Quiet
XL11:PS_Request
XL12:PS_Quiet
Figure 161 –XL (link layer for expander logical phys) state machine (1 of 4)
XL2:Request_Open XL3:Open_Confirm_Wait
XL1: Request_Path Forward Dword
Forward Open
Forward Break
Phy Status
BREAK
Transmit Idle Dword XL0:Idle
Received Arb Status
XL1:Request_Path
Open Accept
XL7:Connected
Open Reject
XL9:Break
Backoff Retry
XL10:Break_Wait
XL5:Forward_Open
Backoff
Reverse Path
Forward
XL11:PS_Request Break Manage
Power
Conditions
XL0:Idle
(to all states)
XL6:Open_Response_Wait
XL1:Request_Path
Phy Status
(to all states,
Forward causing
Forward Break
Break Broadcast transition to
Event Notify Arb Status XL0:Idle)
SL_IR
Open Accept Enable
Disable
Open Reject SAS
Link
Backoff Retry (Disable)
Figure 162 –XL (link layer for expander logical phys) state machine (2 of 4)
XL7:Connected XL8:Close_Wait
Forward Dword
Forward Dword Forward Break
Forward Close
Fairness Priority
Forward Close Forward Break
Forward Break
Phy Status
Forward Break
Request
Phy Status
Fairness Priority
Begin SSP
Connection Close
Forward Close
Manage
XL6: XL0:Idle
Power
Open_Response_Wait Conditions
Forward Dword XL9:Break
(to all states)
XL3:
Open_Confirm_Wait (to all states,
XL9:Break XL10:Break_Wait causing
transition to
XL0:Idle)
SL_IR
BREAK_REPLY Received
Transmit Enable
XL11:PS_Request
BREAK Received BREAK Disable
Broadcast SAS
XL0:Idle XL0:Idle
Event Link
XL3: Open_Confirm_Wait (Disable)
Forward Open Notify
XL6:Open_Response_Wait Transmit
Transmit BREAK_REPLY
XL0:Idle
Broadcast Phy Status
XL1:Request_Path
XL12:PS_Quiet
Change
Retry Transmit Phy Power XL0:Idle
Broadcast Condition
Backoff Retry
XL0:Idle Phy Power
XL9:Break Condition Status
Open Reject
Figure 163 –XL (link layer for expander logical phys) state machine (3 of 4)
XL0:Idle
XL3:Open_Confirm_Wait
Figure 164 –XL (link layer for expander logical phys) state machine (4 of 4)
The XL transmitter receives the following messages from the XL state machine specifying primitive
sequences, frames, and dwords to transmit:
a) Transmit Idle Dword;
b) Transmit AIP with an argument indicating the specific type (e.g., Transmit AIP (Normal));
c) Transmit BREAK;
d) Transmit BREAK_REPLY;
e) Transmit BROADCAST with an argument indicating the specific type (e.g., Transmit BROADCAST
(Change));
f) Transmit CLOSE with an argument indicating the specific type (e.g., Transmit CLOSE (Normal)) and
with the following arguments, if any:
A) Open Connection Rate;
B) Open Destination SAS Address;
C) Open Arbitration Wait Time;
D) SMP Open Priority;
E) High Priority; and
F) Hop Count;
g) Transmit OPEN_ACCEPT;
h) Transmit OPEN_REJECT, with an argument indicating the specific type (e.g., Transmit
OPEN_REJECT (No Destination));
i) Transmit PS_REQ with an argument indicating the specific type (e.g., Transmit PS_REQ (Partial) or
Transmit PS_REQ (Slumber));
j) Transmit PS_ACK Pattern (see 6.13);
k) Transmit PS_NAK;
l) Transmit PWR_ACK;
m) Transmit PWR_GRANT;
n) Substitute to Close;
o) Stop Substituting;
p) Transmit OPEN Address Frame; and
q) Transmit Dword.
The XL transmitter sends the following messages to the XL state machine based on dwords that have been
transmitted:
a) OPEN Address Frame Transmitted; and
b) PS_ACK Pattern Transmitted.
The XL transmitter shall ensure physical link rate tolerance management requirements are met (see 6.5) while
originating dwords or originating SPL packets.
The XL transmitter shall ensure physical link rate tolerance management requirements are met while
forwarding dwords or forwarding SPL packets (i.e., during a connection) by inserting or deleting as many
deletable primitives or deletable extended binary primitives as required to match the transmit and receive
connection rates (see 6.5.4).
The XL transmitter shall ensure physical link rate tolerance management requirements are met (see 6.5)
during and after switching from forwarding dwords or forwarding SPL packets to originating dwords or
forwarding SPL packets, including, for example:
a) when transmitting a BREAK primitive sequence;
b) when transmitting a BREAK_REPLY primitive sequence;
c) when transmitting a CLOSE primitive sequence;
d) when transmitting an idle dword after closing a connection (i.e., after receiving a BREAK primitive
sequence, BREAK_REPLY primitive sequence, or CLOSE primitive sequence);
e) while transmitting a SATA frame to a SAS logical link during an STP connection, when transmitting the
first SATA_HOLDA in response to detection of SATA_HOLD; and
f) while receiving dwords of a SATA frame from a SAS logical link during an STP connection, when
transmitting SATA_HOLD.
The XL transmitter may insert a deletable primitive or a deletable extended binary primitive before transmitting
a BREAK, BREAK_REPLY, CLOSE, or SATA_HOLDA to meet physical link rate tolerance management
requirements.
The XL transmitter shall insert a deletable primitive or a deletable extended binary primitive before switching
from originating dwords or originating SPL packets to forwarding dwords or forwarding SPL packets, including,
for example:
a) when transmitting OPEN_ACCEPT;
b) when transmitting the last idle dword before a connection is established (i.e., after receiving
OPEN_ACCEPT);
c) while transmitting a SATA frame to a SAS logical link during an STP connection, when transmitting the
last dword from the STP flow control buffer in response to release of SATA_HOLD;
d) while transmitting a SATA frame to a SAS logical link during an STP connection, when transmitting the
last SATA_HOLDA in response to release of SATA_HOLD (e.g., if the STP flow control buffer is
empty); and
e) while receiving dwords of a SATA frame from a SAS logical link during an STP connection, when
transmitting the last SATA_HOLD.
NOTE 36 - This ensures that physical link rate tolerance management requirements are met, even if the
forwarded dword stream does not include a deletable primitive until the last possible dword.
The XL transmitter shall ensure rate matching requirements are met during a connection (see 6.17).
After receiving a Substitute To Close message the XL transmitter shall transmit:
a) an RRDY (CLOSE) in place of each received RRDY (NORMAL); and
b) an EXTEND_CONNECTION (CLOSE) in place of each received
EXTEND_CONNECTION (NORMAL).
If the XL transmitter receives a Stop Substituting message after receiving a Substitute To Close message,
then the XL transmitter shall cancel the replacement:
a) of RRDY (NORMAL) with RRDY (CLOSE); and
b) of EXTEND_CONNECTION (NORMAL) with EXTEND_CONNECTION (CLOSE).
When there is no outstanding message specifying a dword to transmit, the XL transmitter shall transmit idle
dwords.
The XL receiver sends the following messages to the XL state machine indicating primitive sequences,
primitive parameters, frames, and dwords received from the SP_DWS receiver (see 5.15.2) and the SP_PS
receiver (see 5.16.2):
a) AIP Received with an argument indicating the specific type (e.g., AIP Received (Normal));
b) BREAK Received;
c) BREAK_REPLY Received;
d) BROADCAST Received;
e) CLOSE Received with an argument indicating the specific type (e.g., CLOSE Received (Normal)) and
with the following arguments, if any, received in Dword Received (Primitive Parameter) confirmations
associated with the received CLOSE:
A) Open Connection Rate;
B) Open Destination SAS Address;
C) Open Arbitration Wait Time;
D) SMP Open Priority;
E) High Priority;
F) Hop Count; and
G) Source Phy Identifier (i.e., the phy identifier of the expander logical phy that received the
CLOSE);
f) OPEN_ACCEPT Received;
g) OPEN_REJECT Received;
h) OPEN Address Frame Received;
i) PS_REQ Received with an argument indicated the specific type (e.g., PS_REQ Received (Partial)) or
PS_REQ Received (Slumber));
j) PS_ACK Received;
k) PS_NAK Received;
l) SOF Received;
m) Dword Received with an argument indicating the data dword or primitive received. Deletable
primitives are not included; and
n) Invalid Dword Received.
The XL receiver shall ignore all other dwords.
While receiving an address frame, if the XL receiver receives an invalid dword or ERROR, then the XL
receiver shall either:
a) ignore the invalid dword or ERROR; or
b) discard the address frame.
The XL transmitter relationship to other transmitters is defined in 4.3.2. The XL receiver relationship to other
receivers is defined in 4.3.3.
This state is the initial state and is the state that is used when there is no connection pending or established.
Upon entry into this state, this state shall:
a) send an Idle State Condition (Active) message to the SL_P_S link layer state machine;
b) initialize the Delay Expander Forward Open Indication timer to the Delay Expander Forward Open
Indication Timer argument and start the Delay Expander Forward Open Indication timer;
c) send an Enable APTA confirmation to the ECM;
d) send an Enable APTA request to the phy layer; and
e) initialize and start the Idle timer.
This state shall repeatedly send Idle requests to the ECM.
This state shall repeatedly send a Pause Phy response with the Phy Identifier argument set to the Source Phy
Identifier argument to the ECM until the Delay Expander Forward Open Indication timer expires.
If a Phy Layer Not Ready confirmation is received, then this state shall send a Broadcast Event Notify (Phy
Not Ready) request to the BPP.
If a SATA Spinup Hold confirmation is received, then this state shall send a Broadcast Event Notify (SATA
Spinup Hold) request to the BPP.
If an Enable Disable SAS Link (Enable) message is received, then this state shall send a Broadcast Event
Notify (Identification Sequence Complete) request to the BPP.
If a SATA Port Selector Change confirmation is received, then this state shall send a Broadcast Event Notify
(SATA Port Selector Change) request to the BPP.
If a BROADCAST Received message is received, then this state shall send a Broadcast Event Notify request
to the BPP with the argument indicating the specific BROADCAST primitive sequence received (e.g., Change
Received).
If a Transmit Broadcast indication is received and this state has not sent a Transmit PS_ACK Pattern
message, then this state shall send a Transmit BROADCAST message to the XL transmitter with an argument
specifying the specific type from the Transmit Broadcast indication, otherwise this state shall request that idle
dwords be transmitted by repeatedly sending Transmit Idle Dword messages to the XL transmitter. If a
Transmit Broadcast indication is received and this state has sent a Transmit PS_ACK Pattern message to the
XL transmitter, then this state shall send a Retry Transmit Broadcast request to the BPP.
If a BREAK Received message is received and the BREAK_REPLY method of responding to received
BREAK primitive sequences is enabled (see 6.16.6), then this state shall send a Transmit BREAK_REPLY
message to the XL transmitter.
If a PS_REQ Received (Partial) message is received and the Accept Partial state machine variable is set to
YES, then this state shall send:
a) a Transmit PS_ACK Pattern message to the XL transmitter;
b) a Manage Phy Power Conditions (Stop DWS) request to the phy layer; and
c) a Manage Phy Power Conditions (Stop PS) request to the phy layer.
If a PS_REQ Received (Slumber) message is received and the Accept Slumber state machine variable is set
to YES, then this state shall send:
a) a Transmit PS_ACK Pattern message to the XL transmitter;
b) a Manage Phy Power Conditions (Stop DWS) request to the phy layer; and
c) a Manage Phy Power Conditions (Stop PS) request to the phy layer.
If a PS_REQ Received (Partial) message is received and the Accept Partial state machine variable is set to
NO, then this state shall send a Transmit PS_NAK message to the XL transmitter. If a PS_REQ Received
(Slumber) message is received and the Accept Slumber state machine variable is set to NO, then this state
shall send a Transmit PS_NAK message to the XL transmitter.
If a Forward Open indication is received from the ECM and this state has sent a Transmit PS_ACK Pattern
message to the XL transmitter, then this state shall send a Backoff Retry response to the ECR.
If a Change Phy Power Condition request is received and this state has sent a Transmit PS_ACK Pattern
message to the XL transmitter, then this state shall send a Phy Power Condition Status (Retry Change Phy
Power Condition Request) confirmation to the ECM.
This state shall ignore any Change Phy Power Condition (Exit Power Condition) requests.
If this state receives a:
a) Transmit Power Request (PWR_ACK) message, then this state shall send a Transmit PWR_ACK
message to the SL transmitter; or
b) Transmit Power Request (PWR_GRANT) message, then this state shall send a Transmit
PWR_GRANT message to the SL transmitter.
If the Idle timer expires, then this state shall:
a) send an Idle State Condition (Active) message to the SL_P_S link layer state machine; and
b) initialize and start the Idle timer.
If this state has not sent a Transmit PS_ACK Pattern message to the XL transmitter, then this transition shall
occur after receiving:
a) an Enable Disable SAS Link (Enable) message; and
b) a Forward Open indication.
This transition shall include an ECR Forward Open argument that contains the arguments received in the
Forward Open indication.
If an OPEN Address Frame Received message is received, then this transition shall include:
a) an OPEN Address Frame Received argument that contains the arguments received in the OPEN
Address Frame Received message.
Before this transition, this state shall:
a) send an Idle State Condition (Inactive) message to the SL_P_S link layer state machine (see 6.14.4);
b) send an APTA Disabled (Active Connection) confirmation to the ECM;
c) send a Disable APTA request to the phy layer;
d) if a Transmit Broadcast indication is received coincident with receiving either a Forward Open
indication or an OPEN Address Frame Received message, then send a Transmit BROADCAST
message with the same argument to the XL transmitter;
e) if a BREAK Received message is received coincident with receiving either a Forward Open indication
or an OPEN Address Frame Received message, then:
A) send a Transmit BREAK_REPLY message to the XL transmitter if the BREAK_REPLY method of
responding to received BREAK primitive sequences is enabled (see 6.16.6); and
B) send a Transmit BREAK message to the XL transmitter if the BREAK_REPLY method of
responding to received BREAK primitive sequences is disabled (see 6.16.6);
f) stop the Delay Expander Forward Open Indication timer; and
g) stop the Idle timer.
If this state has not sent a Transmit PS_ACK Pattern message to the XL transmitter, then this transition shall
occur after receiving:
a) an Enable Disable SAS Link (Enable) message; and
b) a Change Phy Power Condition request.
This transition shall include the following arguments that corresponds to the Change Phy Power Condition
request:
a) Phy Power Condition (Enter Partial); or
b) Phy Power Condition (Enter Slumber).
Before this transition, this state shall:
a) send an Idle State Condition (Inactive) message to the SL_P_S link layer state machine (see 6.14.4);
b) send an APTA Disabled (Low Phy Power Condition) confirmation to the ECM;
c) send a Disable APTA request to the phy layer;
d) stop the Delay Expander Forward Open Indication timer; and
e) stop the Idle timer.
If this state is entered from the XL6:Open_Response_Wait state, then this state shall set the High Priority
argument to one. If this state is entered from any other state, then this state shall set the High Priority
argument to zero.
If the OPEN Address Frame Received (Protocol) argument is set to SMP, then this state shall set the SMP
Open Priority argument to one. If the OPEN Address Frame Received (Protocol) argument is set to SSP or
STP, then this state shall set the SMP Open Priority argument to zero.
Upon entry into this state, this state shall:
a) send a Request Path request to the ECM with:
A) the following OPEN Address Frame Received arguments:
a) Initiator Port Bit;
b) Protocol;
c) Connection Rate;
d) Initiator Connection Tag;
e) Destination SAS Address;
f) Source SAS Address;
g) Pathway Blocked Count;
h) Arbitration Wait Time;
B) an SMP Open Priority argument; and
C) a High Priority argument;
b) set the Open Source SAS Address state machine variable to the Source SAS Address argument; and
c) set the Open Destination SAS Address state machine variable to the Destination SAS Address
argument.
This state is used to arbitrate for connection resources and to specify the destination of the connection.
If an Arbitrating (Normal) confirmation is received, then this state shall repeatedly send Transmit AIP (Normal)
messages and Transmit Idle Dword messages to the XL transmitter in accordance with AIP transmission rules
(see 6.16.5.3).
If an Arbitrating (Waiting On Partial) confirmation or an Arbitrating (Blocked On Partial) confirmation is
received, then this state shall repeatedly send Transmit AIP (Waiting On Partial) messages and Transmit Idle
Dword messages to the XL transmitter in accordance with AIP transmission rules (see 6.16.5.3).
If an Arbitrating (Waiting On Partial) confirmation is received, then this state shall repeatedly send a Phy
Status (Partial Pathway) response to the ECM.
If an Arbitrating (Blocked On Partial) confirmation is received, then this state shall repeatedly send a Phy
Status (Blocked Partial Pathway) response to the ECM.
If an Arbitrating (Waiting On Connection) confirmation is received, then this state shall repeatedly send
Transmit AIP (Waiting On Connection) messages and Transmit Idle Dword messages to the XL transmitter in
accordance with AIP transmission rules (see 6.16.5.3).
If an Arbitrating (Waiting On Connection) confirmation is received, then this state shall repeatedly send a Phy
Status (Connection) response to the ECM.
This state shall send one of the following messages to the XL transmitter:
a) a Transmit OPEN_REJECT (No Destination) message when an Arb Reject (No Destination)
confirmation is received;
b) a Transmit OPEN_REJECT (Bad Destination) message when an Arb Reject (Bad Destination)
confirmation is received;
c) a Transmit OPEN_REJECT (Connection Rate Not Supported) message when an Arb Reject
(Connection Rate Not Supported) confirmation is received;
d) a Transmit OPEN_REJECT (Zone Violation) message when an Arb Reject (Zone Violation)
confirmation is received;
e) a Transmit OPEN_REJECT (Pathway Blocked) message when an Arb Reject (Pathway Blocked)
confirmation is received; or
f) a Transmit OPEN_REJECT (Retry) message when an Arb Reject (Retry) confirmation is received.
This state maintains the Partial Pathway Timeout timer.
If the Partial Pathway Timeout timer is not already running, then the Partial Pathway Timeout timer shall be
initialized and started when an Arbitrating (Blocked On Partial) confirmation is received.
If the Partial Pathway Timeout timer is already running, then the Partial Pathway Timeout timer shall continue
to run if an Arbitrating (Blocked On Partial) confirmation is received.
The Partial Pathway Timeout timer shall be stopped when one of the following confirmations is received:
a) Arbitrating (Waiting On Partial); or
b) Arbitrating (Waiting On Connection).
If the Partial Pathway Timeout timer expires, then this state shall send a Partial Pathway Timeout Timer
Expired request to the ECM.
This transition shall occur if a Forward Open indication is received and none of the following confirmations
have been received:
a) Arbitrating (Normal);
b) Arbitrating (Waiting On Partial);
c) Arbitrating (Blocked On Partial);
This state is used to forward an OPEN address frame through the ECR to a destination phy.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the XL transmitter.
Upon entry into this state, this state shall:
a) send a Forward Open request to the ECR, with the following received OPEN Address Frame
Received arguments:
A) Initiator Port Bit;
B) Protocol;
C) Features;
D) Connection Rate;
E) Initiator Connection Tag;
F) Destination SAS Address;
G) Source SAS Address;
H) Source Zone Group;
I) Pathway Blocked Count;
J) Arbitration Wait Time;
K) Compatible Features; and
L) More Compatible Features;
b) set the Open Source SAS Address state machine variable to the Source SAS Address argument; and
c) set the Open Destination SAS Address state machine variable to the Destination SAS Address
argument.
This state waits for confirmation for an OPEN address frame sent on a destination phy.
This state shall send the following messages to the XL transmitter:
a) a Transmit AIP (Normal) message when an Arb Status (Normal) confirmation is received;
b) a Transmit AIP (Waiting On Partial) message when an Arb Status (Waiting On Partial) confirmation is
received;
c) a Transmit AIP (Waiting On Connection) message when an Arb Status (Waiting On Connection)
confirmation is received;
d) a Transmit AIP (Waiting On Device) message when an Arb Status (Waiting On Device) confirmation is
received;
e) a Transmit OPEN_ACCEPT message when an Open Accept confirmation is received;
f) a Transmit OPEN_REJECT message when an Open Reject confirmation is received with the
argument from the Open Reject confirmation, after releasing path resources; or
g) request idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages when none
of the previous conditions are present.
If a Backoff Retry confirmation is received, then this state shall release path resources.
If a BREAK Received message is received or a BREAK Received argument is included in the transition into
this state, then this state shall send a Forward Break request to the ECR.
This state shall repeatedly send a Phy Status (Partial Pathway) response to the ECM until an Arb Status
(Waiting On Partial) confirmation is received. After an Arb Status (Waiting on Partial) confirmation is received,
this state shall repeatedly send a Phy Status (Blocked Partial Pathway) response to the ECM.
If a Dword Received message is received containing a valid dword except a BREAK, then this state shall send
a Forward Dword request to the ECR containing that dword.
If:
a) an Invalid Dword Received message is received; and
b) the expander logical phy is forwarding to an expander logical phy attached to a SAS logical link,
then the expander logical phy shall:
a) send an ERROR with the Forward Dword request instead of the invalid dword; or
b) delete the invalid dword.
If:
a) an ERROR is received with the Dword Received message or an Invalid Dword Received message is
received; and
b) the expander logical phy is forwarding to an expander phy attached to a SATA physical link,
then the expander logical phy shall:
a) send a SATA_ERROR with the Forward Dword request instead of the invalid dword or ERROR
primitive; or
b) delete the ERROR or invalid dword.
This transition shall occur after sending a Transmit OPEN_REJECT message to the XL transmitter if:
a) a BREAK Received message has not been received; and
b) a BREAK Received argument was not included in the transition into this state.
This transition shall occur after receiving a Backoff Retry confirmation, after releasing path resources if:
a) a BREAK Received message has not been received; and
b) a BREAK Received argument was not included in the transition into this state.
This transition shall include an OPEN Address Frame Received argument containing the arguments in the
received OPEN Address Frame Received argument.
This transition shall occur after receiving a Backoff Reverse Path confirmation if:
a) a BREAK Received message has not been received; and
b) a BREAK Received argument was not included in the transition into this state.
The transition shall include:
a) OPEN Address Frame Received arguments contained in the received Backoff Reverse Path
arguments (i.e., the OPEN address frame).
This transition shall occur after sending a Transmit OPEN_ACCEPT message to the XL transmitter if:
a) a BREAK Received message has not been received; and
b) a BREAK Received argument was not included in the transition into this state.
This transition shall occur after receiving a Forward Break indication if:
a) a BREAK Received message has not been received; and
b) a BREAK Received argument was not included in the transition into this state.
This state is used to transmit an OPEN address frame passed with the transition into this state.
If a BROADCAST Received message is received, then this state shall send a Broadcast Event Notify request
to the BPP with the argument indicating the specific BROADCAST primitive sequence received (e.g., Change
Received).
Upon entry into this state, this state shall:
a) send a Transmit OPEN Address Frame message to the XL transmitter with the following arguments
set to the values specified in the ECR Forward Open argument included in the transition into this
state:
A) Initiator Port Bit;
B) Protocol;
C) Features;
D) Connection Rate;
E) Initiator Connection Tag;
This state waits for a response to a transmitted OPEN address frame and determines the appropriate action to
take based on the response.
This state shall either:
a) request idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages to the XL
transmitter, honoring ALIGN insertion rules for rate matching and physical link rate tolerance
management; or
b) send Transmit Dword messages to the XL transmitter to transmit all dwords received with Forward
Dword indications.
If a BROADCAST Received message is received before an AIP Received message is received, then this
state shall send a Broadcast Event Notify request to the BPP with the argument indicating the specific
BROADCAST primitive sequence received (e.g., Broadcast Event Notify (Change Received)).
This state shall send the following responses to the ECR, which are received by the source phy as
confirmations:
a) an Open Accept response when an OPEN_ACCEPT Received message is received;
b) an Open Reject response when an OPEN_REJECT Received message is received, after releasing
any path resources;
c) a Backoff Retry response, after releasing path resources, when:
A) an AIP Received message has not been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state;
C) SMP frame priority is enabled (see 6.16.3);
D) the SAS Protocol argument in:
a) the ECR Forward Open argument is set to other than SMP; and
b) the OPEN Address Frame Received message set to SMP or an OPEN Address Frame
Received SAS Protocol argument is set to SMP;
and
E) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are not equal to the source
SAS address and connection rate of the ECR Forward Open argument;
d) a Backoff Retry response, after releasing path resources, when:
A) an AIP Received message has not been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state containing a higher priority OPEN address
frame according to the arbitration fairness comparison (see 6.16.4) if:
a) SMP frame priority is disabled (see 6.16.3);
b) SMP frame priority is enabled and the SAS Protocol argument in:
A) the ECR Forward Open argument is set to other than SMP; and
B) the OPEN Address Frame Received message is set to other that SMP or an OPEN
Address Frame Received argument is set to other than SMP;
or
c) SMP frame priority is enabled and the SAS Protocol argument in:
A) the ECR Forward Open argument is set to SMP; and
B) the OPEN Address Frame Received message is set to SMP or an OPEN Address Frame
Received argument is set to SMP;
and
C) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are not equal to the source
SAS address and connection rate of the ECR Forward Open argument;
e) a Backoff Retry response, after releasing path resources, when:
A) an AIP Received message has been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state; and
C) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are not equal to the source
SAS address and connection rate of the ECR Forward Open argument;
f) a Backoff Reverse Path response when:
A) an AIP Received message has not been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state;
C) SMP frame priority is enabled (see 6.16.3);
D) the SAS Protocol argument in:
a) the ECR Forward Open argument is set to other than SMP;
b) the OPEN Address Frame Received message set to SMP or an OPEN Address Frame
Received SAS Protocol argument is set to SMP;
and
E) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are equal to the source
SAS address and connection rate of the ECR Forward Open argument;
g) a Backoff Reverse Path response when:
A) an AIP Received message has not been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state containing a higher priority OPEN address
frame according to the arbitration fairness comparison (see 6.16.4); if:
a) SMP frame priority is disabled (see 6.16.3);
b) SMP frame priority is enabled and the SAS Protocol argument in:
A) the ECR Forward Open argument is set to other than SMP; and
B) the OPEN Address Frame Received message is set to other that SMP or an OPEN
Address Frame Received argument is set to other than SMP;
or
c) SMP frame priority is enabled and the SAS Protocol argument in:
A) the ECR Forward Open argument is set to SMP; and
B) the OPEN Address Frame Received message is set to SMP or an OPEN Address Frame
Received argument is set to SMP;
and
C) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are equal to the source
SAS address and connection rate of the ECR Forward Open argument;
and
h) a Backoff Reverse Path response when:
A) an AIP Received message has been received;
B) an OPEN Address Frame Received message is received or an OPEN Address Frame Received
argument is included in the transition into this state; and
C) the destination SAS address and connection rate contained in the OPEN Address Frame
Received message or the OPEN Address Frame Received argument are equal to the source
SAS address and connection rate of the ECR Forward Open argument.
A Backoff Reverse Path response shall include the contents of:
a) the OPEN Address Frame Received message; or
b) the OPEN Address Frame Received argument included in the transition into this state.
This state shall send the following responses to the ECR, which are received by the source phy as
confirmations:
a) an Arb Status (Waiting On Device) response upon entry into this state;
b) an Arb Status (Normal) response when an AIP Received (Normal) message is received;
c) an Arb Status (Waiting On Partial) response when an AIP Received (Waiting On Partial) message is
received;
d) an Arb Status (Waiting On Connection) response when an AIP Received (Waiting On Connection)
message is received; and
e) an Arb Status (Waiting On Device) response when an AIP Received (Waiting On Device) message is
received.
If a BREAK Received message is received or a BREAK Received argument is included in the transition into
this state, then this state shall send a Forward Break request to the ECR (see 6.19.8.6).
This state shall repeatedly send a Phy Status (Partial Pathway) response to the ECM until an AIP Received
(Waiting On Partial) message is received. After an AIP Received (Waiting On Partial) message is received,
this state shall repeatedly send a Phy Status (Blocked Partial Pathway) response to the ECM.
If a PS_REQ Received message is received, then this state shall send a Transmit PS_NAK to the XL
transmitter.
This state provides a full-duplex path between two phys within an expander device.
If the connection is an SSP connection, then upon entry into this state, this state shall initialize and start the
Wait For Frame Timeout timer.
If the connection is an SSP connection, then this state shall initialize and start the SSP Maximum Connection
Time Limit timer when:
a) the Wait For Frame Timeout timer expires; or
b) an SOF Received message is received.
This state shall send Transmit Dword messages to the XL transmitter to transmit all dwords received with
Forward Dword indications. During an STP connection, the expander device may expand or contract a
repeated or continued primitive sequence (see 6.2.5).
If this state has not sent a Forward Close request to the ECR and a Dword Received message is received
containing a valid dword, except a BREAK or CLOSE, then this state shall send Forward Dword request
containing a valid dword to the ECR. During an STP connection, the expander device may expand or contract
a repeated or continued primitive sequence (see 6.2.5).
If:
a) an Invalid Dword Received message is received; and
b) the expander phy is forwarding to an expander logical phy attached to a SAS logical link,
then the expander logical phy shall:
a) send an ERROR with the Forward Dword request instead of the invalid dword; or
b) delete the invalid dword.
If:
a) an ERROR Received message is received with the Dword Received message or an Invalid Dword
Received message is received; and
b) the expander phy is forwarding to an expander logical phy attached to a SATA phy,
then the expander logical phy shall:
a) send a SATA_ERROR with the Forward Dword request instead of the invalid dword or ERROR
primitive; or
b) delete the ERROR or invalid dword.
If:
a) this state receives a Begin SSP Connection Close confirmation and:
A) the Wait For Frame Timeout timer has expired; or
B) an SOF Received message was received;
or
b) the SSP Maximum Connection Time Limit timer expires,
then this state shall send a Substitute To Close message to the XL transmitter.
If this state receives a Begin SSP Connection Close confirmation and:
a) the Wait For Frame Timeout timer has not expired; and
b) an SOF Received message has not been received,
then this state shall:
1) wait until:
A) the Wait For Frame Timeout timer expires; or
B) an SOF Received message is received;
and
2) send a Substitute To Close message to the XL transmitter.
If a CLOSE Received message is received, then this state shall:
1) stop the SSP Maximum Connection Time Limit timer;
2) send a Stop Substituting message to the XL transmitter; and
3) send a Forward Close request to the ECR with the arguments from the CLOSE Received message
(e.g., Type, Primitive Parameter, if any, and Source Phy Identifier, if any).
If a BREAK Received message is received, then this state shall:
1) stop the SSP Maximum Connection Time Limit timer;
2) send a Stop Substituting message to the XL transmitter; and
3) send a Forward Break request to the ECR (see 6.19.9.3).
This state shall repeatedly send a Phy Status (Connection) response to the ECM.
This transition shall occur after receiving a Forward Break indication if a BREAK Received message has not
been received.
This transition shall occur after:
a) stopping the SSP Maximum Connection Time Limit timer; and
b) sending a Stop Substituting message to the XL transmitter.
NOTE 37 - Possible livelock scenarios occur if the BREAK_REPLY method of responding to received BREAK
primitive sequences is disabled and a phy transmits a BREAK primitive sequence to break a connection
(e.g., if its Close Timeout timer expires). Phys responding to a CLOSE primitive sequence faster than 1 ms
reduce susceptibility to this problem.
If extended fairness priority is supported, then this state shall select the highest extended fairness priority
between the Fairness Priority confirmation from the ECM and the Forwarded Close Primitive Parameter
argument. The extended fairness priority (see table 192) consists of the following:
a) High Priority argument;
b) SMP Open Priority argument;
c) Arbitration Wait Time argument; and
d) Connection Rate argument.
If SAS packet mode is enabled and extended fairness priority is supported, then this state shall set the
CLOSE primitive parameters and the Delay Expander Forward Open Indication Timer argument as described
in table 193.
Table 193 – Setting CLOSE primitive parameters and Delay Expander Forward Open Indication timer
Open Destination SAS Address from
Fairness Forwarded Close Primitive Parameter
Forwarded
Priority equals
Close
confirmation
has Open Open Open
has State action
Primitive Destination Source Destination
Primitive
Parameter SAS SAS SAS
Parameter
arguments Address Address Address
arguments
in a in b in c
yes x x Select the highest extended fairness
x yes priority between Forwarded Close
Primitive Parameter arguments and
Fairness Priority confirmation
Primitive Parameter arguments. If
the selected highest fairness priority
yes yes is associated with:
x x yes
a) this expander device, then see
d; or
b) another expander device, then
see e.
no no no
See d
no yes x x x
x yes x
See e
yes no x x yes
x no no Not use any CLOSE primitive
parameter arguments on the
Transmit CLOSE message and set
no no x x x the Delay Expander Forward Open
Indication Timer argument to zero.
Key:
x = don’t care
a
The Open Destination SAS Address argument from the Fairness Priority confirmation.
b
The Open Source SAS Address state machine variable.
c
The Open Destination SAS Address state machine variable.
d
Set the CLOSE primitive parameters to the contents of the arguments of the Fairness Priority
confirmation from the ECM, set the HOP COUNT field to one, and set the Delay Expander Forward Open
Indication Timer argument to zero.
e
Set the CLOSE primitive parameter to the contents of the Forwarded Close Primitive Parameter
argument, set the HOP COUNT field to the current hop count plus one, and set the Delay Expander
Forward Open Indication Timer argument to the contents of the INITIAL TIME TO DELAY EXPANDER
FORWARD OPEN INDICATION field (see 9.4.4.4) multiplied by the Forwarded Close Primitive Parameter Hop
Count argument.
If SAS dword mode is enabled or extended fairness priority is not supported, then this state shall:
a) not use any CLOSE primitive parameter arguments on the Transmit CLOSE message; and
b) set the Delay Expander Forward Open Indication Timer argument to zero.
If a Dword Received message is received containing a valid dword except a BREAK or CLOSE, then this state
shall send a Forward Dword request to the ECR containing that dword. During an STP connection, the
expander device may expand or contract a repeated or continued primitive sequence (see 6.2.5).
If:
a) an Invalid Dword Received message is received; and
b) the expander logical phy is forwarding to an expander logical phy attached to a SAS logical link,
then the expander logical phy shall:
a) send an ERROR with the Forward Dword request instead of the invalid dword; or
b) delete the invalid dword.
If:
a) an ERROR Received message is received with the Dword Received message or an Invalid Dword
Received message is received; and
b) the expander logical phy is forwarding to an expander phy attached to a SATA physical link,
then the expander logical phy shall:
a) send a SATA_ERROR with the Forward Dword request instead of the invalid dword or ERROR
primitive; or
b) delete the ERROR or invalid dword.
If a CLOSE Received message is received, then this state shall release path resources and send a Forward
Close request to the ECR with the argument from the CLOSE Received message (see 6.19.10.2).
If this state was entered with an argument of Close Forwarded, then this state shall release path resources
after all the CLOSE primitive parameters, if any, have been received.
If a BREAK Received message is received, then this state shall send a Forward Break request to the ECR
(see 6.19.10.3).
This state shall repeatedly send a Phy Status (Connection) response to the ECM.
This state closes the connection, if there is one, and releases all path resources associated with the
connection.
This state closes the connection, if there is one, and releases path resources associated with the connection.
Upon entry into this state, this state shall:
1) send a Transmit BREAK message to the XL transmitter;
2) initialize and start the Break Timeout timer; and
3) repeatedly send a Phy Status (Breaking Connection) response to the ECM.
If a BREAK Received message is received and the BREAK_REPLY method of responding to received
BREAK primitive sequences is enabled (see 6.16.6), then this state shall send a Transmit BREAK_REPLY
message to the XL transmitter.
This state requests the attached phy change to a low phy power condition.
Upon entry into this state, this state shall:
a) if entered with the Phy Power Condition (Enter Partial) argument, then send a Transmit PS_REQ
(Partial) message to the XL transmitter;
b) if entered with the Phy Power Condition (Enter Slumber) argument, then send a Transmit
PS_REQ (Slumber) message to the XL transmitter; and
c) initialize and start the Power Condition Request Timeout timer.
If this state:
a) is entered with the Phy Power Condition (Enter Partial) argument; and
b) receives a PS_REQ Received (Slumber) message,
then this state shall set the Phy Power Condition argument to Partial.
If this state:
a) is entered with the Phy Power Condition (Enter Slumber) argument; and
b) receives a PS_REQ Received (Partial) message,
then this state shall:
a) set the Phy Power Condition argument to Partial; and
b) if the Accept Partial state machine variable is set to:
A) YES, then send a Transmit PS_ACK Pattern message to the XL transmitter; or
B) NO, then send a Transmit PS_NAK message to the XL transmitter.
If this state:
a) receives a PS_REQ Received message;
b) the PS_REQ Received message argument is requesting the same power condition as the Phy Power
Condition argument; and
c) the attached SAS address is greater than the port identifier (i.e., SAS Address),
then this state shall send:
a) a Transmit PS_ACK Pattern message to the XL transmitter;
b) a Manage Phy Power Conditions (Stop DWS) request to the phy layer; and
c) a Manage Phy Power Conditions (Stop PS) request to the phy layer.
If this state receives a Forward Open indication, then this state shall send a Backoff Retry response to the
ECR.
If a BROADCAST Received message is received, then this state shall send a Broadcast Event Notify request
to the BPP with the argument indicating the specific BROADCAST primitive sequence received (e.g., Change
Received).
If a Transmit Broadcast indication is received, then this state shall send a Retry Transmit Broadcast request to
the BPP.
This state requests the phy be placed into a low phy power condition.
If this state is entered with a Phy Power Condition (Enter Partial) argument, then this state shall send:
a) a Manage Phy Power Conditions (Enter Partial) request to the phy layer; and
b) a Phy Power Condition Status (In Partial) confirmation to the ECM.
If this state is entered with a Phy Power Condition (Enter Slumber) argument, then this state shall send:
a) a Manage Phy Power Conditions (Enter Slumber) request to the phy layer; and
b) a Phy Power Condition Status (In Slumber) confirmation to the ECM.
If this state receives a:
a) Change Phy Power Condition (Enter Slumber) request and the current phy power condition is partial;
or
b) Change Phy Power Condition (Enter Partial) request and the current phy power condition is slumber,
then this state shall send a Phy Power Condition Status (Request Exit Power Condition) confirmation to the
ECM.
If a Transmit Broadcast indication is received, then this state shall send a Retry Transmit Broadcast request to
the BPP.
If this state receives a Change Phy Power Condition (Exit Power Condition) request, then this state shall send
a Manage Phy Power Conditions (Exit) request to the phy layer.
If this state receives a Forward Open indication from the ECM, then this state shall send a Manage Phy Power
Conditions (Exit) request to the phy layer and if the phy is in:
a) a slumber phy power condition, send an Open Reject (Retry) response to the ECR; or
b) a partial phy power condition, send a Backoff Retry response to the ECR.
An SSP phy that accepts a connection request (i.e., an OPEN address frame) shall:
a) transmit at least one RRDY in that connection within 1 ms of transmitting an OPEN_ACCEPT; and
b) if persistent connections are supported (see 4.1.13.2), the SEND EXTEND bit is set to one in the
received OPEN address frame, and the INITIATOR PORT bit is set to one in the received OPEN address
frame, then transmit an EXTEND_CONNECTION (NORMAL).
If the SSP phy is not able to grant SSP frame credit, then it shall respond with OPEN_REJECT (RETRY) and
not accept the connection request.
To prevent livelocks (e.g., where ports are waiting on each other to accept a connection request):
a) a SAS phy shall not reject an incoming connection request to an SSP initiator port with
OPEN_REJECT (RETRY) as a result of the SAS port containing that SAS phy is waiting for an
outgoing connection request to be accepted (e.g., if the SAS phy is used by an SSP initiator port and
an SSP target port, they share a buffer, that buffer is being used by the SSP target port, and the SSP
target port is waiting to transmit a frame to another SSP initiator port before it is able to free that
buffer);
b) a SAS phy may reject an incoming connection request to an SSP initiator port with OPEN_REJECT
(RETRY) for any reason that is not dependent on the SAS port containing that SAS phy having an
outgoing connection request accepted (e.g., a temporary buffer full condition); and
c) a SAS phy may reject an incoming connection request to an SSP target port with OPEN_REJECT
(RETRY) for any reason, including because the SAS port containing that SAS phy is waiting for an
outgoing connection request to be accepted (e.g., to transmit a frame and empty a buffer).
SSP is a full duplex protocol. An SSP phy may receive an SSP frame or primitive in a connection while the
SSP phy is transmitting an SSP frame or primitive in the same connection. A wide SSP port may send and/or
receive SSP frames or primitives concurrently on different connections (i.e., on different phys).
If:
a) a connection is open;
b) a persistent connection has:
A) not been requested (i.e., the SEND EXTEND bit was set to zero in the OPEN address frame); or
B) been:
1) requested (i.e., the SEND EXTEND bit was set to one in the OPEN address frame);
2) established (see 4.1.13); and
3) disabled (see 6.20.9.12.4);
and
c) an SSP phy has no more SSP frames to transmit on that connection,
then the SSP phy transmits a DONE to start closing the connection (see 7.2.2.3.9). The other direction may
still be active, so the DONE may be followed by one or more of the following primitives:
a) CREDIT_BLOCKED;
b) RRDY;
c) ACK; or
d) NAK.
During an SSP connection the receiving SSP phy shall acknowledge SSP frames within 1 ms, if not discarded
as described in 6.20.9.7, with either:
a) ACK (i.e., positive acknowledgement) if the SSP frame was received into a frame buffer without
errors; or
b) NAK (CRC ERROR) (i.e., negative acknowledgement) if the SSP frame was received with a CRC
error (i.e., a bad CRC), an invalid dword, or an ERROR.
NOTE 38 - It is not required that frame recipients generate NAK (CRC ERROR) from invalid dwords and
ERRORs (see 6.20.9.2).
If an SSP frame results in a link layer error (e.g., is NAKed or creates an ACK/NAK timeout), then:
a) the transport layer (see 8.2.4) retries sending the SSP frame; or
b) the SCSI application layer aborts the SCSI command associated with that SSP frame.
6.20.3.2 SSP frame transmission and reception while in the SAS dword mode
During an SSP connection, while in the SAS dword mode, SSP frames are preceded by SOF and followed by
EOF as shown in figure 165.
Time
SSP SSP last SSP
SOF frame frame ... frame CRC EOF
dword 0 dword 1 dword
The last data dword after the SOF prior to the EOF always contains a CRC (see 6.7). The SSP link layer state
machine checks that the frame is a valid length and that the CRC is valid (see 6.20.9.7). Other primitives (e.g.,
CREDIT_BLOCKED, RRDY, ACK, and NAK) may be interspersed between the SOF, data dwords, and EOF.
6.20.3.3 SSP frame transmission and reception while in SAS packet mode
During an SSP connection while in SAS packet mode, SSP frames are preceded by SOF and followed by
B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) as shown in figure 166, figure 167, figure 168, and figure
169.
Time
last - 2 last -1
SSP SSP last SSP
SSP SSP
SOF frame frame ... frame CRC B_EOF (0)
frame frame
dword 0 dword 1 dword
dword dword
Time
last -1
SSP SSP last SSP
SSP Pad
SOF frame frame ... frame CRC B_EOF (1)
frame dword
dword 0 dword 1 dword
dword
Time
SSP SSP last SSP
Pad Pad
SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword
Time
SSP SSP last SSP
Pad Pad Pad
SOF frame frame ... frame CRC B_EOF (3)
dword dword dword
dword 0 dword 1 dword
The SSP frame transmission and reception while in SAS packet mode requirements for placement of the
CRC, pad dwords, B_EOF (0), B_EOF (1), B_EOF (2), and B_EOF (3) are as described in 6.20.3.4.
6.20.3.4 SSP frame and SMP frame transmission and reception while in SAS packet mode
The last data dword after the SOF, before the pad dwords, if any, and before the B_EOF (0), the B_EOF (1),
the B_EOF (2), or the B_EOF (3) shall contain a CRC (see 6.7). The position of the CRC in the last SPL frame
segment shall be determined by the first B_EOF (0), the B_EOF (1), the B_EOF (2), or the B_EOF (3)
following the last SPL frame segment as follows:
a) B_EOF (0) specifies the CRC is the fourth dword of the last SPL frame segment (i.e., there are no pad
dwords) (see figure 166);
b) B_EOF (1) specifies the CRC is the third dword of the last SPL frame segment (i.e., there is one pad
dword) (see figure 167);
c) B_EOF (2) specifies the CRC is the second dword of the last SPL frame segment (i.e., there are two
pad dwords) (see figure 168); and
d) B_EOF (3) specifies the CRC is the first dword of the last SPL frame segment (i.e., there are three
pad dwords) (see figure 169).
If a B_EOF is received on a SAS physical link that is in the SAS packet mode and that B_EOF is to be
forwarded to a SAS physical link that is in:
a) the SAS packet mode, then the expander device shall not make any changes to the SSP frame’s
B_EOF; or
b) the SAS dword mode, then the expander device shall replace that B_EOF with an EOF positioned in
the next dword after the CRC (see 6.7) before forwarding.
If an EOF is received on a SAS physical link that is in the SAS dword mode and that EOF is to be forwarded to
a SAS physical link that is in:
a) the SAS dword mode, then the expander device shall not make any changes to the SSP frame’s EOF;
or
b) the SAS packet mode, then the expander device shall replace that EOF with a B_EOF (0), B_EOF
(1), B_EOF (2), or B_EOF (3) after the pad dwords, if any, as described in this subclause.
The SSP link layer state machine checks that the frame is a valid length and that the CRC is valid (see
6.20.9.7). Other primitives (e.g., CREDIT_BLOCKED, RRDY, ACK, and NAK), binary primitives, or extended
binary primitives may be interspersed between:
a) the SOF (see figure 170);
b) the SSP frame segments or SMP frame segments; and
c) the B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) (see figure 171).
Time
SSP SSP
RRDY SOF ALIGN (2) ALIGN (3) frame frame ...
dword 0 dword 1
primitive segment
Time
last SSP
Pad Pad
... frame CRC RRDY B_EOF (2) DONE ALIGN (3)
dword dword
dword
An SSP phy uses the CREDIT ADVANCE bit in the OPEN address frame and RRDY to grant SSP frame credit for
permission for the other SSP phy in the connection to transmit frames.
If credit advance is implemented (see 4.1.14) and an OPEN address frame with the CREDIT ADVANCE bit set to
one is received, then:
1) at the beginning of each connection a transmit SSP frame credit of zero is established;
2) the transmit SSP frame credit is incremented by one (see 6.20.9.4);
3) the first RRDY received does not increment transmit SSP frame credit (see 6.20.9.4); and
4) each subsequent RRDY increments transmit SSP frame credit by one frame.
If credit advance is not implemented (see 4.1.14) or an OPEN address frame with the CREDIT ADVANCE bit set
to zero is received, then:
a) at the beginning of each connection a transmit SSP frame credit of zero is established; and
b) each RRDY increments transmit SSP frame credit by one frame.
Frame transmission decrements transmit SSP frame credit by one frame.
SSP phys shall not grant more that 255 SSP frame credits (i.e., outstanding received SSP frame credits shall
not exceed 255).
To prevent deadlocks where an SSP initiator port and SSP target port are both waiting on each other to
provide SSP frame credit, an SSP initiator port shall not refuse to provide SSP frame credit by withholding
RRDY because the SSP initiator port is waiting to transmit a frame. An SSP initiator port may refuse to
provide SSP frame credit for other reasons (e.g., temporary buffer full conditions).
An SSP target port may refuse to provide SSP frame credit for any reason, including because the SSP target
port is waiting to transmit a frame.
If SSP frame credit is zero and a persistent connection:
a) has not been established;
b) was established and has been disabled (see 6.20.9.12.4); or
c) has been established and the Persistent Connection Timeout timer (see table 196) has expired,
then SSP phys that are going to be unable to provide SSP frame credit for 1 ms may send
CREDIT_BLOCKED. The other phy may use this to avoid waiting 1 ms to transmit DONE (CREDIT
TIMEOUT) (see 6.20.9).
If SSP frame credit is nonzero and a persistent connection:
a) has not been established;
b) was established and has been disabled (see 6.20.9.12.4); or
c) has been established and the Persistent Connection Timeout timer (see table 196) has expired,
then SSP phys that are going to be unable to provide additional SSP frame credit for 1 ms, even if they
receive frames per the existing SSP frame credit, may transmit CREDIT_BLOCKED.
After sending CREDIT_BLOCKED, an SSP phy shall not transmit any additional RRDYs in the connection.
If a persistent connection has been established (see 4.1.13), then to maintain the persistent connection an
SSP phy shall transmit an EXTEND_CONNECTION within the interval specified by the Transmit Extend
Connection timer (see table 196) while the SSP phy has no SSP frame to transmit.
An EXTEND_CONNECTION is not transmitted within an SSP frame.
The management application layer initiates the closing of a persistent connection by sending a Close
Persistent Connection request for the SSP_EM state machine (see 6.20.9.12).
Table 194 shows which SSP frames shall be interlocked and which are non-interlocked.
COMMAND Interlocked
TASK Interlocked
XFER_RDY Interlocked
DATA Non-interlocked
RESPONSE Interlocked
Note - See 8.2 for SSP frame type definitions.
Before transmitting an interlocked frame, an SSP phy shall wait for all SSP frames to be acknowledged with
ACK or NAK, even if transmit SSP frame credit is available. After transmitting an interlocked frame, an SSP
phy shall not transmit another SSP frame until that interlocked frame has been acknowledged with ACK or
NAK, even if transmit SSP frame credit is available.
Before transmitting a non-interlocked frame, an SSP phy shall wait for:
a) all non-interlocked frames with different initiator port transfer tags; and
b) all interlocked frames,
to be acknowledged with ACK or NAK, even if transmit SSP frame credit is available.
After transmitting a non-interlocked frame, an SSP phy may transmit another non-interlocked frame with the
same initiator port transfer tag if transmit SSP frame credit is available. The phy shall not transmit:
a) a non-interlocked frame with a different initiator port transfer tag; or
b) an interlocked frame,
until all SSP frames have been acknowledged with ACK or NAK, even if transmit SSP frame credit is
available.
Transmitting an interlocked frame does not prevent the transmitting phy from receiving frames at the same
time (e.g., it is possible for an SSP initiator phy to transmit a COMMAND frame while receiving XFER_RDY,
DATA, or RESPONSE frames).
An SSP phy may transmit primitives responding to traffic that it is receiving (e.g., an ACK or NAK to
acknowledge an SSP frame, an RRDY to grant more transmit SSP frame credit, or a CREDIT_BLOCKED to
specify that no more RRDYs are going to be transmitted in the connection) while waiting for an interlocked
frame that it transmitted to be acknowledged. These primitives may also be interspersed within an SSP frame.
transmitter receiver
Interlocked frame
ACK or NAK
Interlocked frame
ACK or NAK
time time
Figure 173 shows an example of non-interlocked frame transmission with the same initiator port transfer tags.
transmitter receiver
Non-interlocked frame
Non-interlocked frame
Non-interlocked frame
Non-interlocked frame
ACK or NAK
Non-interlocked frame ACK or NAK
Non-interlocked frame
All non-
interlocked ACK or NAK
frames in this ACK or NAK
ACK or NAK
example have ACK or NAK
the same
initiator port
time time
transfer tag
Figure 173 –Non-interlocked frames with the same initiator port transfer tags
Figure 174 shows an example of non-interlocked frame transmission with different initiator port transfer tags.
transmitter receiver
Non-interlocked frame initiator port transfer tag A
Non-interlocked frame initiator port transfer tag A
Non-interlocked frame initiator port transfer tag A
Non-interlocked frame initiator port transfer tag A
ACK or NAK
ACK or NAK
Non-interlocked frame initiator port transfer tag A
Non-interlocked frame initiator port transfer tag A ACK or NAK
ACK or NAK
ACK or NAK
ACK or NAK
ACK or NAK
time time
Figure 174 –Non-interlocked frames with different initiator port transfer tags
In addition to the actions described in 6.16.11, the following shall be the responses by an SSP phy to a broken
connection:
a) received frames having no CRC error may be considered valid regardless of whether an ACK has
been transmitted in response to the frame prior to the broken connection;
b) transmitted frames for which an ACK has been received prior to a broken connection shall be
considered transmitted without error; and
c) transmitted frames for which an ACK or NAK has not been received prior to a broken connection shall
be considered to have been transmitted with an error.
DONE shall be exchanged prior to closing an SSP connection (see 7.2.2.3.9). The type of DONE indicates
additional information about why the SSP connection is being closed as follows:
a) DONE (NORMAL) specifies that the transmitter has no more SSP frames to transmit (i.e., normal
completion);
b) DONE (CLOSE) specifies that an end device has received an RRDY (CLOSE) (i.e., forced normal
completion);
c) DONE (CREDIT TIMEOUT) specifies that the transmitter still has SSP frames to transmit but did not
receive an RRDY granting transmit SSP frame credit within 1 ms or the transmitter has received a
CREDIT_BLOCKED and has consumed all RRDYs received; and
d) DONE (ACK/NAK TIMEOUT) specifies that the transmitter transmitted an SSP frame but did not
receive the corresponding ACK or NAK within 1 ms. As a result, the ACK/NAK count is not balanced
and the transmitter is going to transmit a BREAK primitive sequence in 1 ms unless the recipient
replies with DONE and the connection is closed.
transmitter receiver
DONE
(ACK, NAK, RRDY, and
CREDIT_BLOCKED may be
transmitted after the first
DONE)
DONE
CLOSE primitive
sequence
CLOSE primitive
sequence
time time
A Force Completion request sent to the SSP link layer (see 6.20.9.10) by a management application layer in
an end device requests an RRDY (CLOSE) be substituted (i.e., forced normal completion of a connection).
After a Force Completion request is received by the SSP link layer, the SSP link layer substitutes RRDY
(CLOSE) when granting more transmit SSP frame credit instead of transmitting RRDY (NORMAL) until the
connection is closed.
By sending a Begin SSP Connection Close confirmation to the XL link layer (see 6.19.9) a management
application layer in an expander device may request:
a) an RRDY (CLOSE) be substituted for an RRDY (NORMAL); and
b) an EXTEND_CONNECTION (CLOSE) be substituted for an EXTEND_CONNECTION (NORMAL).
In response to receiving an RRDY (CLOSE) or an EXTEND_CONNECTION (CLOSE) the SSP link layer
requests the transmission of a DONE (CLOSE). The transmission of a DONE (CLOSE) occurs if:
a) there are no SSP frames waiting to be transmitted by the SSP link layer (see 6.20.9.6.3);
b) there are no SSP frames being transmitted by the SSP link layer (see 6.20.9.6.4); and
c) the ACK/NAK count is balanced (see 6.20.9.3).
The SSP link layer contains several state machines that run in parallel to control the flow of dwords on the
physical link during an SSP connection. The SSP state machines are as follows:
a) SSP_TIM (transmit interlocked frame monitor) state machine (see 6.20.9.3);
b) SSP_TCM (transmit frame credit monitor) state machine (see 6.20.9.4);
c) SSP_D (DONE control) state machine (see 6.20.9.5);
d) SSP_TF (transmit frame control) state machine (see 6.20.9.6);
e) SSP_RF (receive frame control) state machine (see 6.20.9.7);
f) SSP_RCM (receive frame credit monitor) state machine (see 6.20.9.8);
g) SSP_RIM (receive interlocked frame monitor) state machine (see 6.20.9.9);
h) SSP_TC (transmit credit control) state machine (see 6.20.9.10);
i) SSP_TAN (transmit ACK/NAK control) state machine (see 6.20.9.11); and
j) SSP_EM (establish and manage persistent connection) state machine (see 6.20.9.12).
All the SSP state machines, except SSP_EM, shall start after receiving an Enable Disable SSP (Enable)
message from the SL state machines (see 6.18).
If persistent connections are supported (see 4.1.13.2), then the SSP_EM state machine shall start after
receiving an Enable Disable SSP (Enable) message from the SL state machines.
All the SSP state machines shall terminate after:
a) receiving an Enable Disable SSP (Disable) message from the SL state machines;
b) receiving a Request Close message from the SSP_D state machine indicating that the connection
has been closed;
c) receiving a Request Break message from the SSP_D state machine indicating that a BREAK primitive
sequence has been transmitted; or
d) receiving a NOTIFY Received (Power Loss Expected) message from the SP_DWS receiver or the
SP_PS receiver (see 5.16.2) if the SAS port that contains this state machine supports NOTIFY
(Power Loss Expected) (e.g., the SAS port is an SSP target port).
If a state machine consists of multiple states, then the initial state is as indicated in the state machine
description in this subclause.
The SSP state machines shall maintain the timers listed in table 195.
If persistent connections are supported (see 4.1.13.2), then the SSP state machines shall maintain the timers
listed in table 196.
Figure 176 shows the SSP state machines and states related to frame transmission.
SSP (link layer SSP for SSP phys ) state machines - frame transmission
SSP_TIM (transmit SSP_TF (transmit frame control)
Enable interlocked frame
SL monitor) SSP_TF1:
Disable SSP Connected_Idle
SSP_TIM
Tx Balance Status SSP_EM2 Tx Frame
Tx Balance Status
Request
SSP_D
Close
SSP_TCM (transmit Credit Timeout
Request frame
SSP_D Break credit monitor)
SSP_TF4:
SSP_TCM Transmit_DONE
RRDY Received
CREDIT_BLOCKED Received Tx Credit Status
EXTEND_CONNECTION Tx Credit Used
Received Transmit DONE
SL_CC Advance Credit Begin Close DONE
Transmitted
SSP_D (DONE
control) DONE
DONE Transmit
SSP_D Transmitted Requested SSP_EM
Transmitted DONE
Figure 176 –SSP (link layer for SSP phys) state machines (1 of 3 - frame transmission)
Figure 177 shows the SSP state machines and states related to frame reception.
SSP (link layer for SSP phys) state machines - frame reception
SSP_RF SSP_RCM (receive SSP_TC (transmit
(receive frame frame credit monitor) credit control)
control) SSP_TC
SSP_RF SSP_RCM Force Transmit RRDY
SOF Received Rx Credit Status Completion
RRDY Transmitted
Data Dword Frame Received
Received Transmit
Rx Credit Control CREDIT_BLOCKED
EOF Received
Persistent
B_EOF Received Credit Transmitted
Enable
DONE Received Disable
ERROR Received SSP_EM Rx Credit Control SSP_D
Invalid Dword
Received Rx Credit Status SSP_D
Transmit NAK
SSP_RIM
Rx Balance Status (receive
NAK Transmitted
interlocked
frame
monitor)
NOTIFY Received (to all states) SSP_RIM
Enable
SL_CC (to all states)
Disable SSP Transmitted ACK
Request
SSP_D (to all states) Transmitted NAK
Close
Request
SSP_D (to all states)
Break
Figure 177 –SSP (link layer for SSP phys) state machines (2 of 3 - frame reception)
Figure 178 shows the SSP state machine and states related to persistent connections.
SSP (link layer for SSP phys) state machines – persistent connection
SSP_EM2: Manage
Figure 178 –SSP (link layer for SSP phys) state machines (3 of 3 - persistent connection)
The SSP transmitter receives the following messages from the SSP state machines specifying primitive
sequences and frames to transmit:
a) Transmit RRDY with an argument indicating the specific type (e.g., Transmit RRDY (Normal));
b) Transmit CREDIT_BLOCKED;
c) Transmit ACK;
d) Transmit NAK with an argument indicating the specific type (e.g., Transmit NAK (CRC Error));
e) Transmit Frame with an argument containing the frame contents;
f) Transmit DONE with an argument indicating the specific type (e.g., Transmit DONE (Normal)); and
g) Transmit EXTEND_CONNECTION with an argument indicating the specific type (e.g., Transmit
EXTEND_CONNECTION (Normal)).
If SAS dword mode is enabled, then, in response to the Transmit Frame message, the SSP transmitter
transmits:
1) SOF;
2) the frame contents;
3) CRC; and
4) EOF.
If SAS packet mode is enabled, then, in response to the Transmit Frame message, the SSP transmitter
transmits:
1) SOF;
2) the frame contents;
3) CRC;
4) pad dwords, if any, as described in 6.20.3.3; and
5) B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) as described in 6.20.3.3.
If persistent connections are supported (see 4.1.13.2), then in response to the Transmit Frame message, the
SSP transmitter shall send a Transmitting Frame message to the SSP state machines before transmitting an
SOF.
The SSP transmitter shall not transmit an EXTEND_CONNECTION while processing a Transmit Frame
message (i.e., the EXTEND_CONNECTION shall only be transmitted outside an SSP frame).
When the SSP transmitter is requested to transmit a dword from any state within any of the SSP state
machines, the SSP transmitter shall transmit that dword. If there are multiple requests to transmit, then the
following priority should be followed when selecting the dwords to transmit:
1) RRDY, CREDIT_BLOCKED, ACK, NAK, or DONE;
2) SOF, the frame contents, CRC, and:
A) EOF;
B) B_EOF (0);
C) B_EOF (1);
D) B_EOF (2); or
E) B_EOF (3);
3) EXTEND_CONNECTION; and
4) idle dword.
The SSP transmitter sends the following messages to the SSP state machines based on dwords that have
been transmitted:
a) DONE Transmitted;
b) RRDY Transmitted;
c) CREDIT_BLOCKED Transmitted;
d) EXTEND_CONNECTION Transmitted;
e) ACK Transmitted;
f) NAK Transmitted;
g) Transmitting Frame; and
h) Frame Transmitted.
While there is no outstanding message specifying a dword to transmit, the SSP transmitter shall transmit idle
dwords.
The SSP receiver sends the following messages to the SSP state machines indicating primitive sequences
and dwords received from the SP_DWS receiver (see 5.15.2) or SP_PS receiver (see 5.16.2):
a) ACK Received;
b) NAK Received;
c) RRDY Received with an argument indicating the specific type (e.g., RRDY Received (Normal));
d) CREDIT_BLOCKED Received;
e) DONE Received with an argument indicating the specific type (e.g., DONE Received (Normal));
f) SOF Received;
g) Data Dword Received;
h) EOF Received;
i) B_EOF Received;
j) NOTIFY Received (Power Loss Expected);
k) ERROR Received;
l) EXTEND_CONNECTION Received with an argument indicating the specific type (e.g.,
EXTEND_CONNECTION Received (Normal)); and
m) Invalid Dword Received.
The SSP receiver shall ignore:
a) pad dwords, if any, received before a B_EOF as described in 6.20.3.3; and
b) all dwords not described in this subclause.
The SSP transmitter relationship to other transmitters is defined in 4.3.2. The SSP receiver relationship to
other receivers is defined in 4.3.3.
The SSP_TIM state machine’s function is to ensure that ACKs or NAKs are received for each transmitted
frame before the ACK/NAK timeout. This state machine consists of one state.
This state machine monitors the number of frames transmitted with a Number Of Frames Transmitted counter
and monitors the number of ACKs and NAKs received with a Number Of ACKs/NAKs Received counter. This
state machine ensures that an ACK or NAK is received for each frame transmitted and reports an ACK/NAK
timeout if they are not.
When the Number Of Frames Transmitted counter equals the Number Of ACKs/NAKs Received counter, the
ACK/NAK count is balanced and this state machine shall repeatedly send the Tx Balance Status (Balanced)
message to the SSP_TF2:Tx_Wait state and the SSP_EM state machine. When the Number Of Frames
Transmitted counter does not equal the Number Of ACKs/NAKs Received counter, the ACK/NAK count is not
balanced and this state machine shall send the Tx Balance Status (Not Balanced) message to the
SSP_TF2:Tx_Wait state and the SSP_EM state machine.
Each time a Frame Transmitted message is received, this state machine shall increment the Number Of
Frames Transmitted counter.
If the ACK/NAK count is not balanced, then each time an ACK Received message is received, this state
machine shall:
a) increment the Number Of ACKs/NAKs Received counter; and
b) send an ACK Received confirmation to the port layer.
If the ACK/NAK count is not balanced, then each time a NAK Received message is received, this state
machine shall:
a) increment the Number Of ACKs/NAKs Received counter; and
b) send a NAK Received confirmation to the port layer.
If the ACK/NAK count is balanced, then the ACK Received message and NAK Received message shall be
ignored and the ACK/NAK Timeout timer shall be stopped.
Each time the ACK/NAK count is not balanced, the ACK/NAK Timeout timer shall be initialized and started.
The ACK/NAK Timeout timer shall be reinitialized each time the Number Of ACKs/NAKs Received counter is
incremented. If the ACK/NAK Timeout timer expires, then this state machine shall send the ACK/NAK Timeout
confirmation to the port layer and to the following states:
a) SSP_TF1:Connected_Idle; and
b) SSP_TF2:Tx_Wait state.
When this state machine receives an Enable Disable SSP (Enable) message, Request Close message, or
Request Break message, the Number Of Frames Transmitted counter shall be set to zero and the Number Of
ACKs/NAKs Received counter shall be set to zero.
The SSP_TCM state machine’s function is to ensure that transmit SSP frame credit is available before a
frame is transmitted. This state machine consists of one state.
This state machine shall keep track of the number of transmit SSP frame credits available.
If an Advance Credit (Received) message is received, then this state machine shall:
1) increment transmit SSP frame credit by one frame;
2) ignore the first RRDY Received message received; and
3) add one transmit SSP frame credit for each subsequent RRDY Received message received.
If an Advance Credit (Received) message is not received, then this state machine shall add one transmit SSP
frame credit for each RRDY Received message received.
This state machine shall subtract one transmit SSP frame credit for each Tx Credit Used message received.
Upon starting this state machine, the number of transmit SSP frame credits available value shall be set to
zero.
The CREDIT_BLOCKED Received message indicates that transmit SSP frame credit is blocked. After
receiving a CREDIT_BLOCKED Received message, this state machine may ignore additional RRDY
Received messages until it receives a Request Close message or a Request Break message.
This state machine shall handle an EXTEND_CONNECTION Received (Close) message as if a
CREDIT_BLOCKED Received message was received.
The RRDY Received (Close) message indicates:
a) that transmit SSP frame credit is available; and
b) this state machine shall handle that RRDY Received (Close) message as if a CREDIT_BLOCKED
Received message was received.
After receiving an RRDY Received (Close) message, this state machine may ignore additional RRDY
Received messages until it receives a Request Close message or a Request Break message.
If this state receives an RRDY Received (Close) message or an EXTEND_CONNECTION Received (Close)
message, then this state shall repeatedly send a Begin Close message to the SSP_TF1:Connected_Idle
state.
While transmit SSP frame credit is available, this state machine repeatedly shall send the Tx Credit Status
(Available) message to the SSP_TF2:Tx_Wait state.
While transmit SSP frame credit is not available and transmit SSP frame credit is not blocked, this state
machine shall repeatedly send the Tx Credit Status (Not Available) message to the SSP_TF2:Tx_Wait state.
While transmit SSP frame credit is not available and transmit SSP frame credit is blocked, this state machine
shall repeatedly send the Tx Credit Status (Blocked) message to the SSP_TF2:Tx_Wait state.
When this state machine receives an Enable Disable SSP (Enable) message, a Request Close message, or a
Request Break message, this state shall set transmit SSP frame credit to not available and transmit SSP
frame credit shall be set to not blocked.
The SSP_D state machine’s function is to ensure a DONE has been received and transmitted before the
SL_CC state machine disables the SSP state machines. This state machine consists of one state.
This state machine ensures that a DONE is received and transmitted before the connection is closed. The
DONE may be transmitted and received in any order.
If a DONE (Close) Received message is received, then this state shall repeatedly send a Begin Close
message to the SSP_TF1:Connected_Idle state.
If a DONE Received message has been received before a Transmitted DONE message is received, then this
state machine shall send a Request Close message to the SL_CC state machine (see 6.18) and all the SSP
state machines after receiving the Transmitted DONE message.
If a DONE Received message, a Transmitted DONE (Normal) message, or a Transmitted DONE (Credit
Timeout) message has not been received and an Rx Credit Status (Extended) message or an Rx Credit
Control (Blocked) message has been received, then this state shall initialize and start the DONE Timeout
timer after receiving a Transmitted DONE (Normal) message or a Transmitted DONE (Credit Timeout)
message.
If a DONE Received message has not been received and a Transmitted DONE (Normal) message or a
Transmitted DONE (Credit Timeout) message has been received, then this state machine shall initialize and
start the DONE Timeout timer each time:
a) an Rx Credit Status (Extended) message is received; or
b) an Rx Credit Control (Blocked) message is received.
If a Transmitted DONE (Normal) message or a Transmitted DONE (Credit Timeout) message has been
received, then the DONE Timeout timer shall be reinitialized each time an EOF Received message or B_EOF
Received message is received.
If a Transmitted DONE (Normal) message or a Transmitted DONE (Credit Timeout) message has been
received, then the DONE Timeout timer shall be stopped after:
a) an Rx Credit Status (Exhausted) message is received; and
b) an Rx Credit Control (Blocked) message has not been received.
NOTE 39 - Stopping the timer ensures that, if SSP frame credit remains exhausted long enough that the
Credit Timeout timer of the other phy in the connection expires, then the other phy is able to transmit a DONE
(CREDIT TIMEOUT).
If a DONE Received message has not been received and a Transmitted DONE (ACK/NAK Timeout) message
has been received, then:
a) this state machine shall initialize and start the DONE Timeout timer; and
b) this state shall not reinitialize the DONE Timeout timer if an EOF Received message or B_EOF
Received message is received.
If a DONE Received message is received before the DONE Timeout timer expires, then this state machine
shall send a Request Close message to the SL_CC state machine and all the SSP state machines.
If a DONE Received message is not received before the DONE Timeout timer expires, then this state machine
shall send a Request Break message to the SL_CC state machine and all the SSP state machines.
If a DONE Received message is received, then this state machine shall send a DONE Received confirmation
to the port layer. A DONE Received (ACK/NAK Timeout) confirmation informs the port layer that the SSP
transmitter is going to close the connection within 1 ms. Other DONE Received confirmations (e.g., DONE
Received (Normal), DONE Received (Close), and DONE Received (Credit Timeout)) may be used by the
SCSI application layer to decide when to reuse initiator port transfer tags (see 9.2.2).
It is possible for the DONE Timeout timer in one phy (e.g., phy A) may expire concurrently with the ACK/NAK
Timeout timer in the other phy (e.g., phy B) in a connection.
EXAMPLE - If phy A receives DONE (NORMAL) indicating phy B has no more frames to transmit and phy A then transmits
a series of non-interlocked frames where one or more of the SOFs is corrupted, then phy A waits to receive all the ACKs
and/or NAKs after transmitting the series of non-interlocked frames. However, since phy B did not receive the full number
of SOFs, it does not transmit as many ACKs and/or NAKs as phy A is expecting. The ACK/NAK Timeout timer in phy A
expires and phy A transmits DONE (ACK/NAK TIMEOUT). Meanwhile, despite having transmitted DONE, phy B stops
receiving frames while phy A is waiting for the final ACKs and/or NAKs. Since phy B does not receive DONE or any more
frames, its DONE Timeout timer expires and phy B transmits a BREAK primitive sequence. Since the timers may expire at
different times (e.g., due to timer resolution differences), the DONE (ACK/NAK TIMEOUT) may be transmitted before,
concurrently with, or after the BREAK primitive sequence. Nevertheless, the phys handle the link layer error (i.e., the
ACK/NAK timeout or the DONE timeout) the same way (see 8.2.4.5 and 8.2.4.6).
The SSP_TF state machine’s function is to control when the SSP transmitter transmits SOF, frame dwords,
EOF, B_EOF, and DONE. This state machine consists of the following states:
a) SSP_TF1:Connected_Idle (see 6.20.9.6.2) (initial state);
b) SSP_TF2:Tx_Wait (see 6.20.9.6.3);
c) SSP_TF3:Transmit_Frame (see 6.20.9.6.4); and
d) SSP_TF4:Transmit_DONE (see 6.20.9.6.5).
This state machine shall start in the SSP_TF1:Connected_Idle state.
This state waits for a request to transmit a frame or to close the connection.
This state monitors the Tx Balance Status message and the Tx Credit Status message to ensure that frames
are transmitted and connections are closed at the proper time.
If this state is entered from the SSP_TF1:Connected_Idle state with a Transmit Frame Balance Required
argument or a Transmit Frame Balance Not Required argument, and if the last Tx Credit Status message:
a) received had an argument of Not Available, then this state shall initialize and start the Credit Timeout
timer; or
b) had an argument other than Not Available, then this state shall stop the Credit Timeout timer.
This transition shall occur if this state was entered from the SSP_TF1:Connected_Idle state with an argument
of Transmit Frame Balance Required if the last:
a) Tx Balance Status message received had an argument of Balanced; and
b) Tx Credit Status message received had an argument of Available.
This transition shall occur if this state was entered from the SSP_TF1:Connected_Idle state with an argument
of Transmit Frame Balance Not Required and if the last Tx Credit Status message received had an argument
of Available.
This transition shall occur:
a) after sending a Tx Credit Used message to the SSP_TCM state machine.
This state shall request a frame transmission by sending a Transmit Frame message to the SSP transmitter
with an argument containing the frame contents. Each time a Transmit Frame message is sent to the SSP
transmitter, one SSP frame (i.e., SOF, frame contents, CRC, and EOF or B_EOF) is transmitted.
In this state receiving a Frame Transmitted message indicates that the frame has been transmitted.
This state shall send one of the following messages to an SSP transmitter:
a) a Transmit DONE (Normal) message if this state was entered from the SSP_TF2:Tx_Wait state with
an argument of Close Connection;
b) a Transmit DONE (Close) message if this state was entered from the SSP_TF2:Tx_Wait state with an
argument of Full Duplex Close;
c) a Transmit DONE (ACK/NAK Timeout) message if this state was entered from the SSP_TF2:Tx_Wait
state or the SSP_TF1:Connected_Idle state with an argument of ACK/NAK Timeout; or
d) a Transmit DONE (Credit Timeout) message if this state was entered from the SSP_TF2:Tx_Wait
state with an argument of Credit Timeout.
NOTE 40 - Possible livelock scenarios occur if the BREAK_REPLY method of responding to received BREAK
primitive sequences is disabled and a SAS logical phy transmits a BREAK primitive sequence to break a
connection (e.g., if its Done Timeout timer expires). SAS logical phys responding to DONE faster than 1 ms
reduce susceptibility to this problem.
This state shall send a DONE Transmit Requested message to the SSP_EM1:Establish state and the
SSP_EM2:Manage state.
After a DONE Transmitted message is received, this state shall send the DONE Transmitted confirmation to
the port layer and send one of the following messages to the SSP_D state machine:
a) a Transmitted DONE (Normal) message if this state was entered from the SSP_TF2:Tx_Wait state
with an argument of Close Connection or Full Duplex Close;
b) a Transmitted DONE (ACK/NAK Timeout) message if this state was entered from the
SSP_TF2:Tx_Wait state or the SSP_TF1:Connected_Idle state with an argument of ACK/NAK
Timeout; or
c) a Transmitted DONE (Credit Timeout) message if this state was entered from the SSP_TF2:Tx_Wait
state with an argument of Credit Timeout.
The SSP_RF state machine’s function is to receive frames and determine whether or not those frames were
received without error. This state machine consists of one state.
This state machine:
a) checks the frame to determine if the frame should be accepted or discarded;
b) checks the frame to determine if an ACK or NAK should be transmitted; and
c) sends a Frame Received confirmation to the port layer.
If this state receives a subsequent SOF Received message after receiving an SOF Received message but
before receiving an EOF Received message or B_EOF Received message (e.g., SOF, data dwords, SOF,
data dwords, and EOF instead of SOF, data dwords, EOF, SOF, data dwords, and EOF), then this state shall
discard the frame in progress.
This state shall discard the frame if this state receives:
a) more than 263 Data Dword Received messages (i.e., 1 052 bytes) after an SOF Received message
and before:
A) an EOF Received message; or
B) a B_EOF Received message;
b) fewer than 7 Data Dword Received messages (i.e., 28 bytes) after an SOF Received message and
before:
A) an EOF Received message; or
B) a B_EOF Received message;
c) an Rx Credit Status (Credit Exhausted) message; or
d) a DONE Received message.
If this state receives an Invalid Dword Received message or an ERROR Received message after receiving an
SOF Received message and before receiving an EOF Received message or B_EOF Received message,
then this state machine shall either:
a) ignore the invalid dword or ERROR; or
b) discard the frame, send a Frame Received message to the SSP_RCM state machine, send a Frame
Received message to the SSP_RIM state machine, and send a Frame Received (Unsuccessful)
message to the SSP_TAN state machine.
If the frame is not discarded and a CRC Error Occurred message was received for the frame, then this state
machine shall send:
a) a Frame Received message to the SSP_RCM state machine;
b) a Frame Received message to the SSP_RIM state machine; and
c) a Frame Received (Unsuccessful) message to the SSP_TAN state machine.
If the frame is not discarded and no CRC Error Occurred message was received for the frame, then this state
machine shall send:
a) a Frame Received message to the SSP_RCM state machine;
b) a Frame Received message to the SSP_RIM state machine; and
c) a Frame Received (Successful) message to the SSP_TAN state machine and if the last Rx Balance
Status message received had an argument of:
A) Balanced, then send a Frame Received (ACK/NAK Balanced) confirmation to the port layer; or
B) Not Balanced, then send a Frame Received (ACK/NAK Not Balanced) confirmation to the port
layer.
The SSP_RCM state machine’s function is to ensure that there was transmit SSP frame credit given to the
originator for every frame that is received. This state machine consists of one state.
This state machine monitors the receiver’s resources and keeps track of the number of RRDYs transmitted
versus the number of frames received.
Upon starting this state machine, the following values shall be set to zero:
a) the number of RRDYs transmitted; and
b) the number of frames received.
If an Advance Credit (Transmitted) message is received, then this state machine shall send an Rx Credit
Control (Available) message to the SSP_TC state machine.
If:
a) resources are released or become available; and
b) this state machine has not sent the Rx Credit Control (Blocked) message to the SSP_TC state
machine and the SSP_D state machine,
then this state machine shall send the Rx Credit Control (Available) message to the SSP_TC state machine.
This state machine shall send the Rx Credit Control (Available) message to the SSP_TC state machine after
frame receive resources become available. The specifications for when or how resources become available is
outside the scope of this standard.
If this state machine has:
a) not received a Persistent Enable Disable (Enabled) message; or
b) received a Persistent Enable Disable (Enabled) message followed by a Persistent Enable Disable
(Disabled) message,
then this state machine may send the Rx Credit Control (Blocked) message to the SSP_TC state machine and
the SSP_D state machine when no further receive frame credit is going to become available within a credit
timeout (i.e., less than 1 ms), even if frames are received per the existing receive frame credit. After sending
the Rx Credit Control (Blocked) message to the SSP_TC state machine and the SSP_D state machine, this
state machine shall not send the Rx Credit Control (Available) message to the SSP_TC state machine or the
SSP_D state machine for the duration of the current connection.
This state machine shall indicate through the Rx Credit Control message only the amount of resources
available to handle received frames (e.g., if this state machine has resources for five frames, then the
maximum number of Rx Credit Control requests with the Available argument outstanding is five).
This state machine shall use the Credit Transmitted message to keep track of the number of RRDYs
transmitted. This state machine shall use the Frame Received message to keep a track of the number of
frames received.
If the number of Credit Transmitted messages received exceeds the number of Frame Received messages
received, then this state machine shall send an Rx Credit Status (Extended) message to the SSP_RF state
machine and the SSP_D state machine.
If the number of Credit Transmitted messages received equals the number of Frame Received messages
received, then this state machine shall send an Rx Credit Status (Exhausted) message to the SSP_RF state
machine and the SSP_D state machine.
If this state machine receives an Enable Disable SSP (Enable) message, Request Close message, or
Request Break message, then the frame receive resources shall be initialized to the no SSP frame credit
value for the current connection.
The SSP_RIM state machine’s function is to inform the SSP_RF state machine when the number of ACKs
and NAKs transmitted equals the number of the EOFs received and B_EOFs received. This state machine
consists of one state.
This state machine monitors the number of frames received with a Number Of Frames Received counter and
monitors the number of ACKs and NAKs transmitted with a Number Of ACKs/NAKs Transmitted counter.
Each time a Frame Received message is received, this state machine shall increment the Number Of Frames
Received counter.
Each time a Transmitted ACK message or a Transmitted NAK message is received, this state machine shall
increment the Number Of ACKs/NAKs Transmitted counter.
While the Number Of Frames Received counter equals the Number Of ACKs/NAKs Transmitted counter, this
state machine shall repeatedly send an Rx Balance Status (Balanced) message to the SSP_RF state
machine.
While the Number Of Frames Received counter does not equal the Number Of ACKs/NAKs Transmitted
counter, this state machine shall repeatedly send an Rx Balance Status (Not Balanced) message to the
SSP_RF state machine.
When this state machine receives an Enable Disable SSP (Enable) message, Request Close message, or
Request Break message, the Number Of Frames Received counter shall be set to zero and the Number Of
ACKs/NAKs Transmitted counter shall be set to zero.
The SSP_TC state machine’s function is to control the sending of requests to transmit an RRDY or
CREDIT_BLOCKED. This state machine consists of one state.
If this state machine receives an Rx Credit Control (Available) message, then this state machine shall send to
the SSP transmitter the indicated amount of resources available to handle received frames (e.g., if the
Available argument indicates five RRDYs are to be transmitted, then this state machine sends five Transmit
RRDY (Normal) messages to the SSP transmitter) and if this state has:
a) not received a Force Completion request, then this state machine shall send that number of Transmit
RRDY (Normal) messages; or
b) received a Force Completion request, then this state machine shall send that number of Transmit
RRDY (Close) messages.
If this state machine receives an RRDY Transmitted message, then this state machine shall send a Credit
Transmitted message to the SSP_RCM state machine.
If this state machine receives an Rx Credit Control (Blocked) message, then this state machine shall send a
Transmit CREDIT_BLOCKED message to the SSP transmitter.
The SSP_TAN state machine’s function is to control the sending of requests to transmit an ACK or NAK to the
SSP transmitter. This state machine consists of one state.
If this state machine receives a Frame Received (Successful) message, then this state machine shall send a
Transmit ACK message to the SSP transmitter.
If this state machine receives a Frame Received (Unsuccessful) message, then this state machine shall send
a Transmit NAK (CRC Error) message to the SSP transmitter.
If multiple Frame Received (Unsuccessful) messages and Frame Received (Successful) messages are
received, then the order in which the Transmit ACK messages and Transmit NAK messages are sent to the
SSP transmitter shall be the same order as the Frame Received (Unsuccessful) messages and Frame
Received (Successful) messages were received.
If this state machine receives an ACK Transmitted message, then this state machine shall send:
a) a Transmitted ACK message to the SSP_RIM state machine; and
b) an ACK Transmitted confirmation to the port layer.
If this state machine receives a NAK Transmitted argument, then this state machine shall send a Transmitted
NAK message to the SSP_RIM state machine.
The SSP_EM state machine’s function is to establish a persistent connection and manage the sending and
receiving of EXTEND_CONNECTIONs. This state machine consists of the following states:
a) SSP_EM1:Establish (see 6.20.9.12.2) (initial state); and
b) SSP_EM2:Manage (see 6.20.9.12.4).
This state machine shall start in the SSP_EM1:Establish state.
6.20.9.12.4 SSP_EM2:Manage
This state:
a) requests the SSP transmitter transmit EXTEND_CONNECTION; and
b) monitors the receipt of EXTEND_CONNECTION.
Upon entry into this state, this state shall initialize and start:
a) the Transmit Extend Connection timer; and
b) the Persistent Connection Timeout timer.
If this state receives:
a) a Frame Transmitted message, then this state shall initialize and start the Transmit Extend
Connection timer; or
b) a Transmitting Frame message, then this state shall stop the Transmit Extend Connection timer.
If the Transmit Extend Connection timer expires, then this state shall:
1) wait for a Tx Balance Status (Balanced) message;
2) send a Transmit EXTEND_CONNECTION (Normal) message to the SSP transmitter; and
3) after receiving an EXTEND_CONNECTION Transmitted message, initialize and start the Transmit
Extend Connection timer.
If this state receives an EXTEND_CONNECTION Received message, then this state shall initialize and start
the Persistent Connection Timeout timer.
If this state receives:
a) an SOF Received message, then this state shall stop the Persistent Connection Timeout timer; or
b) an EOF Received message or B_EOF Received message and the Persistent Connection Timeout
timer is currently stopped, then this state shall initialize and start the Persistent Connection Timeout
timer.
If:
a) the Persistent Connection Timeout timer expires;
b) this state receives a DONE Received message;
c) this state receives a Close Persistent Connection request; or
d) this state receives a DONE Transmit Requested message,
then this state shall send:
a) a Persistent Connection Established (Disabled) confirmation to the port layer; and
b) a Persistent Enable Disable (Disable) message to the SSP_RCM state machine.
If this state receives a No Pending Tx Frames request, then this state shall:
1) wait for a Tx Balance Status (Balanced) message; and
2) send a Transmit EXTEND_CONNECTION (Normal) message to the SSP transmitter.
STP frame transmission is defined by SATA. Other primitives may be interspersed during the connection as
defined by SATA.
STP encapsulates SATA with connection management. Table 197 summarizes STP link layer differences from
the SATA link layer (see SATA) that affect behavior during an STP connection.
Table 197 – STP link layer differences from SATA link layer during an STP connection
6.21.2 STP frame transmission and reception while in the SAS dword mode
During an STP connection, frames are preceded by SATA_SOF and followed by SATA_EOF as shown in
figure 179.
Time
SATA SATA
SATA
SATA_SOF frame frame ... SATA_EOF
CRC
dword 0 dword 1
The last data dword after the SOF prior to the EOF always contains a CRC (see 6.7).
6.21.3 STP frame transmission and reception while in the SAS packet mode
During an STP connection while in the SAS packet mode, STP frames are preceded by SATA_SOF and
followed by B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) as shown in figure 180, figure 181, figure 182,
and figure 183.
Time
last - 2 last -1
STP STP last STP
STP STP
SATA_SOF frame frame ... frame CRC B_EOF (0)
frame frame
dword 0 dword 1 dword
dword dword
Time
last -1
STP STP last STP
STP Pad
SATA_SOF frame frame ... frame CRC B_EOF (1)
frame dword
dword 0 dword 1 dword
dword
Time
STP STP last STP
Pad Pad
SATA_SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword
Time
STP STP last STP
Pad Pad Pad
SATA_SOF frame frame ... frame CRC B_EOF (3)
dword dword dword
dword 0 dword 1 dword
The last data dword after the SATA_SOF, before the pad dwords, if any, and before the B_EOF (0), the
B_EOF (1), the B_EOF (2), or the B_EOF (3) shall contain a CRC (see 6.7). An expander device shall
determine the position of the CRC in the last STP frame segment by the first B_EOF (0), the B_EOF (1), the
B_EOF (2), or the B_EOF (3) following the last SPL frame segment as follows:
a) B_EOF (0) specifies the CRC is the fourth dword of the last STP frame segment (i.e., there are no pad
dwords) (see figure 180);
b) B_EOF (1) specifies the CRC is the third dword of the last STP frame segment (i.e., there is one pad
dword) (see figure 181);
c) B_EOF (2) specifies the CRC is the second dword of the last STP frame segment (i.e., there are two
pad dwords) (see figure 182); and
d) B_EOF (3) specifies the CRC is the first dword of the last STP frame segment (i.e., there are three
pad dwords) (see figure 183).
If a B_EOF is received on a SAS physical link that is in the SAS packet mode and that B_EOF is to be
forwarded to:
a) a SAS physical link that is in the SAS packet mode, then the expander device shall not make any
changes to the STP frame’s B_EOF;
b) a SAS physical link that is in the SAS dword mode, then the expander device shall replace that
B_EOF with a SATA_EOF positioned in the next dword after the CRC (see 6.7) before forwarding; or
c) a SATA physical link, then the STP target device shall replace that B_EOF with a SATA_EOF
positioned in the next dword after the CRC (see 6.7) before forwarding.
If a SATA_EOF is received on a SAS physical link that is in the SAS dword mode and that SATA_EOF is to be
forwarded to a SAS physical link that is in:
a) the SAS dword mode, then the expander device shall not make any changes to the STP frame’s
SATA_EOF; or
b) the SAS packet mode, then the expander device shall replace that SATA_EOF with a B_EOF after the
pad dwords, if any, as described in this subclause.
Each STP phy (i.e., STP initiator phy and STP target phy) and expander logical phy through which the STP
connection is routed shall implement the SATA flow control protocol on each logical link in the pathway. The
flow control primitives are not forwarded through expander devices like other dwords.
When an STP phy or expander phy during an STP connection is receiving a SATA frame and its STP flow
control buffer begins to fill up, that STP phy or expander phy shall transmit SATA_HOLD. After transmitting
SATA_HOLD, the STP phy or expander phy shall accept at least the number of data dwords, SATA_EOFs, or
B_EOFs for the SATA frame defined in 6.21.4.3 into its STP flow control buffer and receives SATA_HOLDA
within that number of data dwords, SATA_EOFs, or B_EOFs. While receiving SATA_HOLDA, the STP phy or
expander phy does not place any data dwords into the STP flow control buffer. The STP phy or expander phy
shall stop transmitting SATA_HOLD when the STP flow control buffer empties enough to hold at least that
number of data dwords, SATA_EOFs, or B_EOFs.
When an STP phy or expander phy during an STP connection is transmitting a SATA frame and receives
SATA_HOLD, that STP phy or expander phy shall transmit no more than:
a) 20 data dwords or SATA_EOFs if SAS dword mode is enabled; or
b) 24 SPL frame segments or primitive segments containing B_EOF if SAS packet mode is enabled,
for the SATA frame and respond with SATA_HOLDA.
When a SATA host phy in an STP SATA bridge is receiving a SATA frame from a SATA physical link, that
SATA host phy shall transmit a SATA_HOLD when it is only capable of receiving 21 more data dwords for
Gen1 and Gen2 or 25 more data dwords for Gen3 (see SATA). The SATA host phy shall stop transmitting
SATA_HOLD (e.g., return to transmitting SATA_R_IP) when it is capable of receiving at least 21 more data
dwords for Gen1 and Gen2 or 24 more data dwords for Gen3.
NOTE 41 - SATA requires that frame transmission cease and SATA_HOLDA be transmitted within 20 data
dwords of receiving SATA_HOLD. Since the SATA physical link has non-zero propagation time for Gen1 or
Gen2, one dword of margin is included.
When a SATA host phy in an STP SATA bridge is transmitting a SATA frame to a SATA physical link, that
SATA host phy shall transmit no more than 19 dwords for Gen1 and Gen2 or 20 dwords for Gen3 (see SATA)
(e.g., including data dwords, deletable primitives, SATA_EOF, and SATA_HOLDs followed by data dwords)
after receiving SATA_HOLD before responding with SATA_HOLDA.
NOTE 42 - SATA assumes that once a SATA_HOLD is transmitted, frame transmission ceases and
SATA_HOLDA arrives within 20 dwords for Gen1 or Gen2. Since the SATA physical link has non-zero
propagation time for Gen1 or Gen2, one dword of margin is included.
While transmitting SATA_HOLD or SATA_HOLDA, the expander device is considered to be originating (see
6.5.2) rather than forwarding (see 6.5.4) for purposes of deletable primitive insertion.
All logical phys in a port shall support the same STP flow control buffer size. The STP flow control buffer size
is determined for each connector category (see SAS-4) to which the phy is attached as follows:
a) for the unmanaged passive connector category (see SAS-4) if SAS dword mode is enabled, then the
STP flow control buffer size shall be at least:
A) 24 data dwords, SATA_EOFs at the 1.5 Gbit/s logical link rate;
B) 28 data dwords, SATA_EOFs at the 3 Gbit/s logical link rate; or
C) 36 data dwords, SATA_EOFs at the 6 Gbit/s logical link rate;
NOTE 43 - For connectors in the unmanaged connector category the STP flow control buffer requirements
are based on (20 + (4 2n)) if SAS dword mode is enabled, where n is zero for 1.5 Gbit/s, one for 3 Gbit/s,
and two for 6 Gbit/s. The 20 portion of this equation is based on the frame transmitter requirements (see
SATA). The (4 2n) portion of this equation is based on:
a) one-way propagation time on a 10 m cable = 53 ns (see SAS-4);
b) round-trip propagation time on a 10 m cable = 106 ns (e.g., time to send SATA_HOLD and receive
SATA_HOLDA);
c) time to transmit a 1.5 Gbit/s dword = (0.6 ns/bit unit interval (see SAS-4)) (40 bits/dword) = 26.6 ns;
d) number of 1.5 Gbit/s dwords on the wire during round-trip propagation time = (106 ns / 26.6 ns) = 3.98
data dwords; and
e) rounding to four data dwords.
b) for the unmanaged active connector category (see SAS-4) if SAS dword mode is enabled, then the
STP flow control buffer size shall be at least:
A) 30 data dwords or SATA_EOFs at the 1.5 Gbit/s logical link rate;
B) 40 data dwords or SATA_EOFs at the 3 Gbit/s logical link rate; or
C) 60 data dwords or SATA_EOFs at the 6 Gbit/s logical link rate;
NOTE 44 - For connectors in the unmanaged active connector category the STP flow control buffer
requirements are based on (20 + (9.375 2n)) if SAS dword mode is enabled, where n is zero for
1.5 Gbit/s, one for 3 Gbit/s, and two for 6 Gbit/s. The 20 portion of this equation is based on the frame
transmitter requirements (see SATA). The (9.375 2n) portion of this equation is based on:
a) one-way propagation time on a 25 m cable = 133 ns (see SAS-4);
b) round-trip propagation time on a 25 m cable = 266 ns (e.g., time to send SATA_HOLD and receive
SATA_HOLDA);
c) time to transmit a 1.5 Gbit/s dword = (0.6 ns/bit unit interval (see SAS-4)) (40 bits/dword) = 26.6 ns;
and
d) number of 1.5 Gbit/s dwords on the wire during round-trip propagation time = (266 ns / 26.6 ns) = 10
data dwords.
c) for the managed connector category (see SAS-4) if SAS dword mode is enabled, then the total cable
assembly propagation delay is reported through the management protocol (see SAS-4). If the
propagation delay is less than or equal to 53 ns, then the STP flow control buffer size is 24 data
dwords, 28 data dwords, or 36 data dwords depending on the logical link rate (see a)). If the
propagation delay exceeds 53 ns, then the minimum STP flow control buffer size in dwords shall be
calculated using the following equation:
where:
NOTE 45 - For connectors in the managed active connector category where the cable reports total
propagation delay of 250 ns and connection rate at 6 Gbit/s and SAS dword mode is enabled, then the
STP flow control buffer requirements are based on Minimum buffer size = [20 + ((2 × Pd × R) / 40)]. The 20
portion of this equation is based on the frame transmitter requirements (see SATA). The [(2 × Pd × R) / 40]
portion of this equation is the number of dwords on the wire during a round trip, 2 × Pd is the round trip
propagation time. The 40 / R portion of this equation is the time to transmit a dword. For example, for a
100 m optical cable:
a) one-way propagation time = 500 ns;
b) round-trip propagation time = 1 000 ns (e.g., time to send SATA_HOLD and receive SATA_HOLDA);
c) time to transmit a 6 Gbit/s dword = (0.16 ns/bit unit interval) (40 bits/dword) = 6.6 ns;
d) number of 6 Gbit/s dwords on the wire during round-trip propagation time = (1 000 ns / 6.6 ns) = 150
data dwords; and
e) 20 is the buffer size required by SATA, resulting in a minimum STP flow control buffer size = 170 data
dwords
or
d) for the managed connector category (see SAS-4) if packet mode is enabled, then the total cable
assembly propagation delay is reported through the management protocol (see SAS-4). The
minimum STP flow control buffer size in SPL packets shall be calculated using the following equation:
where:
Pd is the propagation delay of cable assembly (e.g., in nanoseconds) (see SAS-4);
R is the nominal logical link rate (e.g., in gigabit per second); and
is 160 if the logical link rate is less than 22.5 Gbit/s and 150 if the logical link rate is
B
equal to 22.5 Gbit/s.
If the minimum buffer size is not an integer, then the minimum buffer size value shall be rounded to
the next highest integer value;
NOTE 46 - For connectors in the managed active connector category where the cable reports total
propagation delay of 500 ns, a connection rate at 22.5 Gbit/s, and if packet mode is enabled, then the STP
flow control buffer requirements are based on Minimum buffer size = [24 + ((2 × Pd × R) / B)]. The 24 portion
of this equation is based on the frame transmitter requirements described in this subclause. The [(2 × Pd × R)
/ B] portion of this equation is the number of SPL frame segments on the wire during a round trip and 2 × Pd
is the round trip propagation time. The B / R portion of this equation is the time to transmit an SPL packet
containing an SPL frame segment or the time to transmit an equivalent amount of data if the logical link rate is
less than 22.5 Gbit/s. For example, for a 100 m optical cable:
Direction of frame
being transferred
STP initiator First Second SATA
phy expander device expander device device
1.5 Gbit/s SAS 1.5 Gbit/s SAS
s
logical link logical link data dword
HOLDA SATA_CONT/idl
SATA_ e SATA_R_I
P
SATA device
phy stops
ords _HOLD
A
data dw SATA
SATA_CON
T/idle
transmitting
SATA_HOLDA
Time
or ds and resumes
data dw OLDA
SATA_H transmitting
ords data dwords
words dat a dw
data d
ords
data dw
words
data d
Key: Primitive
dword More than one dword Data buffer idle = idle dwords
One dword
After the STP initiator phy transmits SATA_HOLD, it receives a SATA_HOLDA reply from the first expander
device within 24 dwords. The first expander device transmits SATA_HOLD to the second expander device and
receives SATA_HOLDA within 24 dwords, buffering data dwords in the STP flow control buffer that the first
expander device is no longer able to forward to the STP initiator phy. The second expander device transmits
SATA_HOLD to the SATA device phy and receives SATA_HOLDA within 21 dwords, buffering data dwords in
the STP flow control buffer that it is no longer able to forward to the first expander device. When the SATA
device phy stops transmitting data dwords, its previous data dwords are stored in the STP flow control buffers
in both expander devices and the STP initiator phy.
After the STP initiator phy drains its STP flow control buffer and transmits SATA_R_IP, it receives data dwords
from the first expander device’s STP flow control buffer, followed by data dwords from the second expander
device’s STP flow control buffer, followed by data dwords from the SATA device phy.
If an STP phy is attached to a connector in the managed connector category (see SAS-4) and that STP phy
does not support the minimum buffer size for the logical link rate, then all phys in the STP port shall perform a
link reset sequence indicating the STP protocol is not supported with:
a) the STP INITIATOR PORT bit set to zero in the IDENTIFY address frame (see 6.10.2); and
b) the STP TARGET PORT bit set to zero in the IDENTIFY address frame (see 6.10.2).
An STP initiator port shall not originate an STP connection request to a destination STP target port on a
pathway that contains an expander device reporting insufficient buffer for STP support.
If an expander phy is attached to a connector in the managed connector category (see SAS-4) and that
expander phy does not support the minimum buffer size for the logical link rate, then all phys in the expander
port shall perform a link reset sequence indicating the STP protocol is not supported with the STP BUFFER TOO
SMALL bit set to one in:
If the SAS dword mode is enabled, then primitives that form continued primitive sequences (e.g.,
SATA_HOLD) shall be:
1) transmitted two times;
2) be followed by SATA_CONT, if needed; and
3) be followed by vendor specific scrambled data dwords, if needed.
If the SAS packet mode is enabled, then primitives that form continued primitive sequences (e.g.,
SATA_HOLD) shall be:
1) transmitted two times;
2) followed by SATA_CONT, if needed; and
3) followed by idle dword segments, if needed.
Deletable primitives may be transmitted inside continued primitive sequences as described in 6.2.4.1.
After the SATA_CONT, during the vendor specific scrambled data dwords:
a) a SATA_CONT continues the continued primitive sequence; and
b) any other STP primitive, including the primitive that is being continued, ends the continued primitive
sequence.
Figure 185 shows an example of transmitting a continued primitive sequence while in the SAS dword mode.
Time
Figure 185 –Transmitting a continued primitive sequence while in the SAS dword mode
Receivers shall detect a continued primitive sequence after at least one primitive is received. The primitive
may be followed by one or more of the same primitive. The primitive may be followed by one or more
SATA_CONTs, each of which may be followed by vendor specific data dwords. Receivers shall ignore invalid
dwords before, during, or after the SATA_CONTs. Receivers do not count the number of times the continued
primitive, the SATA_CONTs, or the vendor specific data dwords are received (i.e., receivers are in the state of
receiving the primitive).
Expanders forwarding dwords may or may not detect an incoming sequence of the same primitive and convert
the incoming sequence into a continued primitive sequence.
Figure 186 shows an example of receiving a continued primitive sequence while in the SAS dword mode.
Time
Figure 186 –Receiving a continued primitive sequence while in the SAS dword mode
An expander device forwarding a continued primitive sequence may transmit more dwords in the continued
primitive sequence than it receives (i.e., expand) or transmit fewer dwords in the continued primitive sequence
than it receives (i.e., contract). While transmitting a continued primitive sequence, the expander device is
considered to be originating (see 6.5.2) rather than forwarding (see 6.5.4) for purposes of deletable primitive
insertion.
6.21.6 Affiliations
The STP target port shall provide coherent access to a set of registers called an affiliation context for each
STP initiator port from which the STP target port accepts connections. An affiliation is a state entered by an
STP target port in which the STP target port refuses to accept connection requests from STP initiator ports
other than those that have established an affiliation.
An STP target port shall implement one of the affiliation policies defined in table 198.
An unlimited number of STP initiator ports are allowed to access the STP target port
No affiliations concurrently. The STP target port is cognizant of the SAS address of the STP
initiator port that sends each ATA command.
The STP target port implements more than one affiliation, so a limited number of
Multiple affiliations STP initiator ports are allowed to access the STP target port concurrently. The STP
target port implements no more than one affiliation context per STP initiator port.
The STP target port implements one affiliation, so one STP initiator port is allowed to
Single affiliation
access the STP target port at a time.
An STP SATA bridge that supports either no affiliations or multiple affiliations shall:
a) ensure that the SATA NCQ tags in commands issued to the SATA device are unique across all
affiliations;
b) ensure that a non-queued command received in one affiliation context is not issued to the SATA
device while another affiliation context has a queued command outstanding to the SATA device (e.g.,
the STP target port shall allow all queued commands in the SATA device to complete prior to issuing
the non-queued command);
c) ensure that a non-queued command received in one affiliation context is not issued to the SATA
device while another affiliation context has a non-queued command outstanding to the SATA device
(e.g., the STP target port shall allow the non-queued command in the SATA device to complete prior
to issuing the new non-queued command); and
d) ensure that a queued command received in one affiliation context is not issued to the SATA device
while another affiliation context has a non-queued command outstanding to the SATA device (e.g., the
STP target port shall allow any non-queued command in the SATA device to complete prior to issuing
the queued commands).
An STP SATA bridge that supports multiple affiliations may modify the queue depth reported in the ATA
IDENTIFY DEVICE data (see ACS-4) to each STP initiator port to ensure that all the STP initiator ports with
affiliations do not send more commands than the SATA device supports.
An STP target port that supports affiliations shall establish an affiliation whenever it accepts a connection
request from an STP initiator port that does not already have an affiliation. While all affiliation contexts are in
use, the STP target port shall reject all subsequent connection requests from other STP initiator ports with
OPEN_REJECT (STP RESOURCES BUSY).
An STP target port shall maintain an affiliation until any of the following occurs:
a) power on;
b) the management device server receives an SMP PHY CONTROL request specifying the phy with the
affiliation and specifying a phy operation of HARD RESET (see 9.4.4.28) from any SMP initiator port;
c) the management device server receives an SMP PHY CONTROL request specifying the phy with the
affiliation and specifying a phy operation of TRANSMIT SATA PORT SELECTION SIGNAL (see
9.4.4.28) from any SMP initiator port;
d) the management device server receives an SMP PHY CONTROL request specifying the phy with the
affiliation and specifying a phy operation of CLEAR AFFILIATION (see 9.4.4.28) from the same SAS
initiator port that has the affiliation;
e) an STP connection to a phy in the STP target port is closed with a CLOSE (CLEAR AFFILIATION)
primitive sequence; or
f) the STP target port encounters an I_T nexus loss.
The STP initiator port shall maintain an affiliation starting with the connection in which a command is
transmitted until all frames for the command have been delivered. An STP initiator port implementing
command queuing (see ACS-4 and SATA) shall maintain an affiliation while any commands are outstanding.
STP initiator ports should not keep affiliations while commands are not outstanding.
An STP target port that implements affiliations shall implement at least one affiliation context per STP target
port. Multiple phys on the same STP target port shall use the same set of affiliation contexts. Support for
affiliations is indicated in the SMP REPORT PHY SATA response (see 9.4.4.12).
An STP target port implementing multiple affiliations shall sort the affiliation contexts in a vendor specific
order. In the SMP REPORT PHY SATA response, if the SMP initiator port has the same SAS address as an
affiliated STP initiator port, then the management device server shall report the affiliation for that SAS address
as relative identifier 0 and shall report all additional affiliations with incrementing relative identifiers following
the sorted order. If the SMP initiator port does not have the same SAS address as an affiliated STP initiator
port, then the management device server shall report the affiliation contexts in the vendor specific order.
For example, if the STP target port supports four affiliation contexts sorted in order A, B, C, and D, when
returning the SMP REPORT PHY SATA response to an SMP initiator port, then the management device
server reports the affiliation contexts as described in table 199.
A A B C D
B B C D A
C C D A B
D D A B C
None A B C D
When the SATA host port in an STP SATA bridge receives a SATA_X_RDY from the attached SATA device,
the STP target port in the STP SATA bridge shall establish an STP connection to the appropriate STP initiator
port. If there is no affiliation, then the SATA host port may either:
a) perform a link reset on the SATA physical link; or
b) wait for an affiliation to be established.
If an STP SATA bridge receives a connection request for a SATA device that has delivered the initial Register
– Device to Host FIS in error, then it shall return an OPEN_REJECT (NO DESTINATION).
If there is a problem receiving the expected initial Register - Device to Host FIS, then the STP SATA bridge
should use SATA_R_ERR to retry until the FIS is received without error. In the DISCOVER response, the
ATTACHED SATA DEVICE bit is set to one and the ATTACHED SAS ADDRESS field is valid, but the ATTACHED SAS
DEVICE TYPE field is set to 000b (i.e., no device attached) during this time.
If an STP SATA bridge that retrieves IDENTIFY DEVICE data (see ACS-4) receives a connection request for
a SATA device before it has retrieved the IDENTIFY DEVICE data, then it shall return an OPEN_REJECT (NO
DESTINATION). If the STP SATA bridge has a problem retrieving the IDENTIFY DEVICE data (e.g., word 255
(i.e., the Integrity Word) is not correct), then it shall set the ATTACHED DEVICE NAME field to zero, set the
ATTACHED SAS DEVICE TYPE field to 001b (i.e., end device), and start accepting connections.
A wide STP initiator port shall not request more than one connection at a time to a specific STP target port.
While a wide STP initiator port is waiting for a response to a connection request to an STP target port, a SAS
phy in the STP initiator port shall not reject an incoming connection request from that STP target port with
OPEN_REJECT (RETRY) because the SAS port containing that SAS phy is waiting for an outgoing
connection request to be accepted. The SAS phy may reject an incoming connection request from that STP
target port with OPEN_REJECT (RETRY) for any reason that is not dependent on the SAS port containing
that SAS phy having an outgoing connection request accepted (e.g., because of a temporary buffer full
condition).
If a wide STP initiator port receives an incoming connection request from an STP target port while it has a
connection established with that STP target port, then the wide STP initiator port shall reject the request with
OPEN_REJECT (RETRY).
A wide STP target port shall not request more than one connection at a time to a specific STP initiator port.
While a wide STP target port is waiting for a response to a connection request or has established a connection
to an STP initiator port, the wide STP target port shall:
a) reject incoming connection requests from that STP initiator port with OPEN_REJECT (RETRY); and
b) if affiliations are supported and the maximum number of affiliations has been established (i.e., all
affiliation contexts are in use), then reject incoming connection requests from other STP initiator ports
that do not have affiliations with OPEN_REJECT (STP RESOURCES BUSY).
A SAS phy may reject an incoming connection request (i.e., an OPEN address frame) to an STP target port
with OPEN_REJECT (RETRY) for any reason, including because the SAS port containing that SAS phy is
waiting for an outgoing connection request to be accepted (e.g., to transmit a frame and empty a buffer).
An expander device should not allow its STP ports (e.g., the STP target ports in STP SATA bridges and any
STP initiator ports in the expander device) to attempt to establish more connections to a specific destination
port than the destination port width or the width of the narrowest physical link on the pathway to the
destination port. This does not apply to connection requests being forwarded by the expander device.
An expander device should not allow its STP ports (e.g., the STP target ports in STP SATA bridges and any
STP initiator ports in the expander device) to attempt to establish more connections than the width of the
narrowest common physical link on the pathways to the destination ports of those connections. This does not
apply to connection requests being forwarded by the expander device.
Figure 187 shows an example of the simultaneous connection recommendations for an expander device
containing STP ports.
Either STP port (i.e., either the STP initiator port or the STP target port) may originate closing an STP
connection. An STP port shall not originate closing an STP connection after sending a SATA_X_RDY or
SATA_R_RDY until after both sending and receiving SATA_SYNC. An STP port shall transmit a CLOSE
primitive sequence after receiving a CLOSE primitive sequence if it has not already transmitted a CLOSE
primitive sequence.
If an STP port receives a CLOSE primitive sequence after transmitting a SATA_X_RDY but before receiving a
SATA_R_RDY, then the STP port shall complete closing the connection (i.e., transmit a CLOSE primitive
sequence) and retransmit the SATA_X_RDY in a new connection.
When an STP initiator port closes an STP connection, it shall transmit a CLOSE (NORMAL) primitive
sequence or CLOSE (CLEAR AFFILIATION) primitive sequence. When an STP target port closes an STP
connection, it shall transmit a CLOSE (NORMAL) primitive sequence.
An STP initiator port may issue a CLOSE (CLEAR AFFILIATION) primitive sequence in place of a CLOSE
(NORMAL) primitive sequence to cause the STP target port to clear the affiliation (see 6.21.6) along with
closing the connection. If an STP target port receives a CLOSE (CLEAR AFFILIATION) primitive sequence,
then the STP target port shall clear the affiliation for the STP initiator port from which that CLOSE (CLEAR
AFFILIATION) primitive sequence was received.
See 6.16.9 for additional details on closing connections.
An STP SATA bridge shall break an STP connection if its SATA host phy loses dword synchronization (see
6.16.11).
The STP SATA bridge adds the outgoing OPEN address frames and CLOSEs so the STP initiator port sees
an STP target port. The STP SATA bridge removes incoming OPEN address frame and CLOSEs so the SATA
device port sees only a SATA host port. While the connection is open, the STP SATA bridge passes through
all dwords without modification. Both STP initiator port and STP target port use SATA, with SATA flow control
(see 6.21.4), while the connection is open.
Figure 188 shows an STP initiator port opening a connection when SAS dword mode is enabled, transmitting
a single SATA frame, and closing the connection.
STP STP
STP SATA host SATA
target SATA
initiator port port device port
port bridge
idle dwords idle dwords SATA_SYNC
OPEN address SATA_SYNC
frame
idle dwords AIP
OPEN_ACCEPT
SATA_SYNC
SATA_X_RDY
SATA_X_RDY
SATA_R_RDY
SATA_R_RDY
SATA_SOF
FIS
...FIS...
CRC SATA_SOF
SATA_EOF
FIS
SATA_WTRM ...FIS... SATA_R_IP
CRC
SATA_EOF
SATA_R_IP
SATA_WTRM
SATA_R_OK
SATA_R_OK
SATA_SYNC
SATA_SYNC
SATA_SYNC
SATA_SYNC
CLOSE
idle dwords
CLOSE
idle dwords
Figure 188 –STP initiator port opening an STP connection while SAS dword mode is enabled
Figure 189 shows a SATA device transmitting a SATA frame when SAS dword mode is enabled. In this
example, the STP target port in the STP SATA bridge opens a connection to an STP initiator port to send just
one frame, then closes the connection.
OPEN_ACCEPT
SATA_SYNC
SATA_X_RDY
SATA_R_RDY
SATA_R_RDY
SATA_SOF
FIS
...FIS...
CRC
SATA_SOF
SATA_EOF
FIS
SATA_R_IP ...FIS... SATA_WTRM
CRC
SATA_EOF
SATA_R_IP
SATA_WTRM
SATA_R_OK
SATA_R_OK
SATA_SYNC
SATA_SYNC
SATA_SYNC
SATA_SYNC
CLOSE
idle dwords
CLOSE
idle dwords
Figure 189 –STP target port opening an STP connection while SAS dword mode is enabled
The STP link layer uses the SATA link layer state machines (see SATA), modified to:
a) communicate with the port layer rather than directly with the transport layer;
b) interface with the SL state machines for connection management (e.g., to select when to open and
close STP connections, and to tolerate idle dwords between an OPEN address frame and the first
SATA primitive);
c) communicate with an STP transmitter and receiver; and
d) support an affiliation policy (see 6.21.6).
These modifications are not described in this standard.
The STP transmitter relationship to other transmitters is defined in 4.3.2. The STP receiver relationship to
other receivers is defined in 4.3.3.
A SAS device that contains an STP target port shall also contain an SMP target port.
Inside an SMP connection, the SMP initiator phy transmits a single SMP_REQUEST frame within 100 µs and
the SMP target phy responds with a single SMP_RESPONSE frame (see 8.4) within 1 900 µs.
6.22.1.1 SMP frame transmission and reception while in SAS dword mode
While in SAS dword mode, frames are surrounded by SOF and EOF as shown in figure 190. See 6.22.6 for
error handling details.
NOTE 47 - Unlike SSP, there is no acknowledgement of SMP frames with ACK and NAK and there is no
frame credit exchange with RRDY.
Time
SMP SMP
SOF frame frame ... CRC EOF
dword 0 dword 1
Figure 190 –SMP frame transmission while in the SAS dword mode
The last data dword after the SOF prior to the EOF always contains a CRC (see 6.7). The SMP link layer state
machine checks that the frame is not too short and that the CRC is valid (see 6.22.6).
6.22.2 SMP frame transmission and reception while in the SAS packet mode
During an SMP connection while in SAS packet mode, SMP frames are preceded by SOF and followed by
B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) as shown in figure 191, figure 192, figure 193, and figure
194.
Time
last - 2 last -1
SMP SMP last SMP
SMP SMP
SOF frame frame ... frame CRC B_EOF (0)
frame frame
dword 0 dword 1 dword
dword dword
Time
last -1
SMP SMP last SMP
SMP Pad
SOF frame frame ... frame CRC B_EOF (1)
frame dword
dword 0 dword 1 dword
dword
Time
SMP SMP last SMP
Pad Pad
SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword
Time
SMP SMP last SMP
Pad Pad Pad
SOF frame frame ... frame CRC B_EOF (3)
dword dword dword
dword 0 dword 1 dword
The requirements for placement of the CRC, pad dwords, B_EOF (0), B_EOF (1), B_EOF (2), and B_EOF (3)
while processing SMP frame transmission and reception in SAS packet mode are as described in 6.20.3.4.
By accepting an SMP connection, the SMP target phy indicates it is ready to receive one SMP_REQUEST
frame.
After the SMP initiator phy transmits one SMP_REQUEST frame, it shall be ready to receive one
SMP_RESPONSE frame.
After receiving the SMP_RESPONSE frame, the SMP initiator phy shall transmit a CLOSE (NORMAL)
primitive sequence to close the connection.
After transmitting the SMP_RESPONSE frame, the SMP target phy shall reply with a CLOSE (NORMAL)
primitive sequence.
See 6.16.9 for additional details on closing connections.
The SMP state machines control the flow of dwords on the physical link during an SMP connection. The SMP
state machines are as follows:
a) SMP_IP (link layer for SMP initiator phys) state machine (see 6.22.6.3); and
b) SMP_TP (link layer for SMP target phys) state machine (see 6.22.6.4).
The SMP transmitter receives the following messages from the SMP state machines specifying dwords and
frames to transmit:
a) Transmit Idle Dword; and
b) Transmit Frame with an argument containing the frame contents.
If SAS dword mode is enabled, then in response to the Transmit Frame message, the SMP transmitter
transmits:
1) SOF;
2) the frame contents;
3) CRC; and
4) EOF.
If SAS packet mode is enabled, then in response to the Transmit Frame message, the SMP transmitter
transmits:
1) SOF;
2) the frame contents;
3) CRC;
4) pad dwords, if any, as described in 6.20.3.3; and
5) B_EOF (0), B_EOF (1), B_EOF (2), or B_EOF (3) as described in 6.20.3.3.
The SMP transmitter sends the following message to the SMP state machines based on dwords that have
been transmitted:
a) Frame Transmitted.
While there is no outstanding message specifying a dword to transmit, the SMP transmitter shall transmit idle
dwords.
The SMP receiver sends the following messages to the SMP state machines indicating primitive sequences
and dwords received from the SP_DWS receiver (see 5.15.2) or SP_PS receiver (see 5.16.2):
a) SOF Received;
b) Data Dword Received;
c) EOF Received;
d) B_EOF Received;
e) ERROR Received; and
f) Invalid Dword Received.
The SMP receiver shall ignore:
a) pad dwords, if any, received before a B_EOF as described in 6.20.3.3; and
b) all dwords not described in this subclause.
The SMP transmitter relationship to other transmitters is defined in 4.3.2. The SMP receiver relationship to
other receivers is defined in 4.3.3.
6.22.6.3 SMP_IP (link layer for SMP initiator phys) state machine
The SMP_IP state machine’s function is to transmit an SMP request frame and then receive the
corresponding response frame. This state machine consists of the following states:
a) SMP_IP1:Idle (see 6.22.6.3.2) (initial state);
b) SMP_IP2:Transmit_Frame (see 6.22.6.3.3); and
c) SMP_IP3:Receive_Frame (see 6.22.6.3.4).
This state machine shall start in the SMP_IP1:Idle state on receipt of an Enable Disable SMP (Enable)
message from the SL state machines (see 6.18).
The SMP_IP state machine shall terminate after receiving an Enable Disable SMP (Disable) message from
the SL state machines.
SMP_IP1:Idle
SMP Transmit Transmit Idle
Break Dword
Request Break SL
Tx Frame
Enable
SL (to all states)
Disable SMP SMP_IP2:
Transmit_Frame
SMP Transmit
Break
Transmit Frame
Request Break SL
Frame Transmitted
Frame Transmitted
SMP_IP3:
Receive_Frame
CRC Error Occurred
SOF Received
Data Dword Received Transmit Idle
EOF Received Dword
B_EOF Received
ERROR Received
Invalid Dword
Received
SMP Transmit Break
Request Break SL
Frame Received Request Close SL
Figure 195 –SMP_IP (link layer for SMP initiator phys) state machine
This state shall send a Transmit Frame message to the SMP transmitter with an argument containing the
frame contents.
If an SMP Transmit Break request is received, then this state shall send a Request Break message to the SL
state machines (see 6.18) and terminate this state machine.
After the Frame Transmitted message is received, this state shall send a Frame Transmitted confirmation to
the port layer.
This state checks the SMP response frame and determines if the SMP response frame was received without
error (e.g., no CRC error).
If this state receives a subsequent SOF Received message after receiving an SOF Received message but
before receiving an EOF Received message or B_EOF Received message (e.g., SOF, data dwords, SOF,
data dwords, and EOF instead of SOF, data dwords, EOF, SOF, data dwords, and EOF), then this state shall
discard the frame in progress.
This state shall discard the frame, send a Frame Received (SMP Unsuccessful) confirmation to the port layer,
send a Request Break message to the SL state machines, and terminate this state machine if:
a) this state receives more than 257 Data Dword Received messages (i.e., 1 028 bytes) after an SOF
Received message and before an EOF Received message or B_EOF Received message; or
NOTE 48 - SMP target phys compliant with SAS 1.1 is allowed to send vendor specific SMP frames
containing 258 data dwords (i.e., 1 032 bytes).
b) this state receives fewer than two Data Dword Received messages (i.e., 8 bytes) after an SOF
Received message and before an EOF Received message or B_EOF Received message.
If this state receives an Invalid Dword Received message or an ERROR Received message after an SOF
Received message and before an EOF Received message, then this state machine shall either:
a) ignore the invalid dword or ERROR; or
b) discard the frame, send a Frame Received (SMP Unsuccessful) confirmation to the port layer, send a
Request Break message to the SL state machines, and terminate this state machine.
If a CRC Error Occurred message was received for the SMP response frame, then this state shall discard the
SMP response frame, send a Frame Received (SMP Unsuccessful) confirmation to the port layer, send a
Request Break message to the SL state machines, and terminate this state machine.
If no CRC Error Occurred message was received for the SMP response frame and the SMP response frame
is valid, then this state shall send:
a) a Frame Received (SMP Successful) confirmation to the port layer; and
b) a Request Close message to the SL state machines (see 6.18).
If an SMP Transmit Break request is received, then this state shall send a Request Break message to the SL
state machines and terminate this state machine.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SMP transmitter.
6.22.6.4 SMP_TP (link layer for SMP target phys) state machine
The SMP_TP state machine’s function is to receive an SMP request frame and then transmit the
corresponding SMP response frame. The SMP_TP state machine consists of the following states:
a) SMP_TP1:Receive_Frame (see 6.22.6.4.2) (initial state); and
b) SMP_TP2:Transmit_Frame (see 6.22.6.4.3).
This state machine shall start in the SMP_TP1:Receive_Frame state after receiving an Enable Disable SMP
(Enable) message from the SL state machines (see 6.18).
This state machine shall terminate after receiving an Enable Disable SMP (Disable) message from the SL
state machines.
Figure 196 shows the SMP_TP state machine.
Enable SMP_TP1:
SL Disable (to all states) Receive_Frame
SMP
SOF Received
Data Dword
Received
EOF Received Frame Received
B_EOF Received
ERROR Received
Transmit Idle
Invalid Dword
Dword
Received
Request Break SL
CRC Error Occurred
SMP_TP2:
Transmit_Frame
Request Break SL
SMP Transmit Break
Request Close SL
Figure 196 –SMP_TP (link layer for SMP target phys) state machine
This state waits for an SMP frame and determines if the SMP frame was received without error (e.g., no CRC
error).
If this state receives a subsequent SOF Received message after receiving an SOF Received message but
before receiving an EOF Received message or a B_EOF Received message (e.g., SOF, data dwords, SOF,
data dwords, and EOF instead of SOF, data dwords, EOF, SOF, data dwords, and EOF), then this state shall
discard the frame in progress.
This state shall discard the frame, send a Request Break message to the SL state machines (see 6.18) and
shall terminate this state machine if:
a) this state receives more than 257 Data Dword Received messages (i.e., 1 028 bytes) after an SOF
Received message and before an EOF Received message or a B_EOF Received message; or
NOTE 49 - SMP initiator phys compliant with SAS 1.1 is allowed to send vendor specific SMP frames
containing 258 data dwords (i.e., 1 032 bytes).
b) this state receives fewer than two Data Dword Received messages (i.e., 8 bytes) after an SOF
Received message and before an EOF Received message or a B_EOF Received message.
If this state receives an Invalid Dword Received message or an ERROR Received message after an SOF
Received message and before an EOF Received message or a B_EOF Received message, then this state
machine shall either:
a) ignore the invalid dword or ERROR; or
b) discard the frame, send a Request Break message to the SL state machines (see 6.18) and shall
terminate this state machine.
If a CRC Error Occurred message was received for the SMP request frame, then this state shall discard the
SMP request frame, send a Request Break message to the SL state machines (see 6.18) and shall terminate
this state machine, otherwise this state shall send a Frame Received (SMP Successful) confirmation to the
port layer.
This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SMP transmitter.
This transition shall occur after sending a Frame Received (SMP Successful) confirmation to the port layer.
If this state receives an SMP Transmit Break request, then this state shall send a Request Break message to
the SL state machines and terminate this state machine.
If this state receives a Tx Frame request, then this state shall send a Transmit Frame message to the SMP
transmitter with an argument containing the frame contents, then wait for a Frame Transmitted message. After
receiving a Frame Transmitted message, this state shall send a Frame Transmitted confirmation to the port
layer, send a Request Close message to the SL state machines (see 6.18) and terminate this state machine.
After sending Transmit Frame message to the SMP transmitter, this state shall request that idle dwords be
transmitted by repeatedly sending Transmit Idle Dword messages to the SMP transmitter.
7 Port layer
The port layer state machines interface with one or more SAS link layer state machines and one or more SSP,
SMP, and STP transport layer state machines to establish port connections and disconnections. The port layer
state machines also interpret or pass transmit data, receive data, commands, and confirmations between the
link layer, transport layer, and the management application layer.
The port layer consists of state machines that run in parallel and perform the following functions:
a) receive requests from the SSP, SMP, and STP transport layer state machines for connection
management (e.g., requests to open or close connections) and frame transmission;
b) receive requests from the management application layer;
c) send requests to the SAS link layer state machines for connection management and frame
transmission;
d) receive confirmation from the SAS link layer state machines;
e) send confirmations to the SSP, SMP, and STP transport layer state machines; and
f) send confirmations to the management application layer.
The port layer state machines are as follows:
a) PL_OC (port layer overall control) state machines (see 7.2.2); and
b) PL_PM (port layer phy manager) state machines (see 7.2.3).
There is one PL_OC state machine per port (see 4.1.3). There is one PL_PM state machine for each phy
contained in the port. Phys are assigned to ports by the management application layer. More than one port in
a SAS device may have the same SAS address if the ports are in different SAS domains (see 4.2.9).
Figure 197 shows examples of the port layer state machines and their interaction with the transport and link
layers.
b
Pending Tx Pending Tx Pending Tx
Pending Pending Pending
Frames for Frames for Frames for ...
destination destination ... destination
Tx Open Tx Open Tx Open
slot 1 slot 2 slot z
A B X
i i d d d
g
Retry
Frame Retry
Open
j
f
e e i e
The following is a description of the example processes in figure 197. These example processes do not
describe all of the possible condition or actions:
a) Transmit Frame requests are received by the PL_OC state machine;
b) the PL_OC state machine converts Transmit Frame requests into pending Tx Frame messages
associated with the destination SAS address;
c) the PL_OC state machine generates a pending Tx Open message for a pending Tx Frame message
when there is a pending Tx Open slot available;
d) the PL_OC state machine sends a pending Tx Open message as a Tx Open message to a PL_PM
state machine when a PL_PM machine is available, a slot is then available for a new pending Tx
Open message;
e) when a PL_PM state machine receives a Tx Open message, the PL_PM state machine attempts to
establish a connection with the destination SAS address through the link layer;
f) if a PL_PM state machine is unable to establish a connection with the destination SAS address, then
the PL_PM state machine sends a Retry Open message to the PL_OC state machine;
g) if there is a pending Tx Open slot available, then the PL_OC state machine converts a Retry Open
message to a pending Tx Open message with the pathway blocked count and arbitration wait time
context from the Retry Open message applied to the pending Tx Open message, and may start the
Reject To Open Limit timer;
h) if the PL_OC state machine does not convert a Retry Open to a pending Tx Open message, then the
PL_OC discards the Retry Open message. The PL_OC state machine may create a new Tx Open
message for the same pending Tx Frame at a later time or send the appropriate Transmission Status
confirmation to the transport layer. If the PL_OC state machine discards a Retry Open message, then
the pathway blocked count and arbitration wait time context from the Retry Open message are also
discarded;
i) after the Reject To Open Limit timer, if any, has expired and after a PL_PM state machine establishes
a connection with a destination SAS address, the PL_OC state machine sends pending Tx Frame
messages for the destination to the PL_PM state machine as Tx Frame messages;
j) if a PL_PM state machine is unable to send a Tx Frame message to the link layer as a Tx Frame
request (e.g., due to an SSP frame credit timeout), then the PL_PM state machine sends a Retry
Frame message to the PL_OC state machine, and the PL_OC state machine converts the Retry
Frame message into a pending Tx Frame message; and
k) if the PL_PM state machine is able to send a Tx Frame message as a Tx Frame request to the link
layer, then the PL_PM state machine sends a Transmission Status confirmation to the transport layer.
The Transmission Status confirmation from either the PL_OC state machine or a PL_PM state machine shall
include the following as arguments:
a) initiator port transfer tag;
b) Destination SAS Address; and
c) Source SAS Address.
This state machine shall maintain the timers listed in table 200.
Maximum number
Timer Initial value
of timers
Arbitration Wait One per pending Tx 0000h, a vendor specific value less than 8000h (see 6.16.4)
Time timer Open message or the value received with a Retry Open message.
PL_OC1:Idle PL_OC2:Overall_Control
If this state receives a HARD_RESET Received confirmation, then this state shall send a HARD_RESET
Received confirmation to the transport layer.
If this state receives a NOTIFY Received (Power Loss Expected) confirmation, then this state shall send a
NOTIFY Received (Power Loss Expected) confirmation to the transport layer.
If this state receives an Accept_Reject OPENs request, then this state shall send an Accept_Reject OPENs
request with the same arguments to all link layers in the port.
If this state receives a Transmit Frame request, then this state shall send a No Phys In Port confirmation to the
transport layer.
If the port is an STP target port or an STP initiator port, then the port shall handle all pending commands as
described in 4.4.3.
This transition shall occur after a Phy Enabled confirmation is received for at least one phy assigned to the
port.
This state may receive Transmit Frame requests from the transport layers (i.e., SSP and SMP) and Retry
Frame messages from PL_PM state machines. This state shall create a pending Tx Frame message for each
received Transmit Frame request and Retry Frame message. There may be more than one pending Tx Frame
message at a time for each SSP transport layer. There shall be only one pending Tx Frame message at a time
for each SMP transport layer.
This state selects PL_PM state machines through which connections are established. This state shall only
attempt to establish connections through PL_PM state machines whose phys are enabled. In a vendor
specific manner, this state selects PL_PM state machines on which connections are established to transmit
frames. This state shall receive a response to a message from a PL_PM state machine before sending
another message to that PL_PM state machine.
This state also:
a) receives connection management requests from the transport layers;
b) sends connection management messages to PL_PM state machines;
c) receives connection management messages from PL_PM state machines;
d) sends connection management confirmations to the transport layers;
e) receives requests from the management application layer; and
f) sends confirmations to the management application layer.
After receiving a Transmit Frame request for a destination SAS address for which there is no connection
established and for which no I_T Nexus Loss timer has been created, this state shall create an I_T Nexus
Loss timer for that SAS address if the protocol is:
a) SSP, the port is an SSP target port, the Protocol Specific Port mode page is implemented, and the I_T
NEXUS LOSS TIME field in the Protocol Specific Port mode page (see 9.2.7.4) is not set to 0000h;
b) STP, the port is an STP target port, and the STP SMP I_T NEXUS LOSS TIME field in the SMP
CONFIGURE GENERAL function is not set to 0000h; or
c) SMP, the port is an SMP initiator port, and the STP SMP I_T NEXUS LOSS TIME field in the SMP
CONFIGURE GENERAL function is not set to 0000h.
After receiving a Transmit Frame request for a destination SAS address for which there is no connection
established and for which no I_T Nexus Loss timer has been created this state may create an I_T Nexus Loss
timer for that SAS address if the protocol is:
a) SSP and the port is an SSP initiator port; or
b) STP and the port is an STP initiator port.
If this state creates an I_T Nexus Loss timer after receiving a Transmit Frame request for a destination SAS
address, then this state shall:
1) initialize that I_T Nexus Loss timer as specified in table 200 (see 7.2.2.1); and
2) not start that I_T Nexus Loss timer.
If there are no pending Tx Frame messages for a destination SAS address and an I_T Nexus Loss timer has
been created for that destination SAS address, then this state shall delete the I_T Nexus Loss timer for that
destination SAS address.
If this state receives a HARD_RESET Received confirmation, then this state shall:
a) discard all pending Tx Frame messages;
b) discard all pending Tx Open messages;
c) delete all timers (e.g., I_T Nexus Loss timers, Arbitration Wait Time timers, and Reject To Open Limit
timers);
d) send a Hard Reset message to each PL_PM state machine; and
e) send a HARD_RESET Received confirmation to the transport layer.
If this state receives a NOTIFY Received (Power Loss Expected) confirmation, then this state shall:
a) discard all pending Tx Frame messages;
b) discard all pending Tx Open messages;
c) delete all timers (e.g., I_T Nexus Loss timers, Arbitration Wait Time timers, and Reject To Open Limit
timers);
d) send a Close Connection message to each of the PL_PM state machines;
e) send a Cancel Open message to each of the PL_PM state machines; and
f) send a NOTIFY Received (Power Loss Expected) confirmation to the transport layer.
If this state receives a Phy Disabled confirmation from all the link layers in the port, then for each destination
SAS address accessible through this port for which no I_T Nexus Loss timer has been created, this state
should create an I_T Nexus Loss timer for that SAS address if the protocol is:
a) SSP, the port is an SSP target port, the Protocol-Specific Port mode page is implemented, and the I_T
NEXUS LOSS TIME field is not set to 0000h in the Protocol-Specific Port mode page (see 9.2.7.4);
b) STP, the port is an STP target port, and the STP SMP I_T NEXUS LOSS TIME field is not set to 0000h in
the SMP CONFIGURE GENERAL function; or
c) SMP, the port is an SMP initiator port, and the STP SMP I_T NEXUS LOSS TIME field is not set to 0000h in
the SMP CONFIGURE GENERAL function.
If this state receives a Phy Disabled confirmation from all the link layers in the port, then, for each destination
SAS address accessible through this port, this state may create an I_T Nexus Loss timer for that SAS address
if the protocol is:
a) SSP and the port is an SSP initiator port; or
b) STP and the port is an STP initiator port.
If this state receives a Phy Disabled confirmation from all the link layers in the port, an I_T Nexus Loss timer
has been created for a destination SAS address, and that I_T Nexus Loss timer is not running, then this state
shall:
1) initialize that I_T Nexus Loss timer; and
2) start that I_T Nexus Loss timer.
If this state receives a Phy Disabled confirmation from all the link layers in the port and an I_T Nexus Loss
timer has not been created for the destination SAS address (e.g., the destination port is an SSP target port
does not support the I_T NEXUS LOSS TIME field in the Protocol Specific Port mode page), then this state shall,
for the destination SAS address:
a) discard all pending Tx Frame messages;
b) discard all pending Tx Open messages;
c) delete all timers (e.g., Arbitration Wait Time timers and Reject To Open Limit timers); and
d) send a No Phys In Port confirmation to the transport layer.
After this state receives a Phy Disabled confirmation from all the link layers in the port, if a Phy Enabled
confirmation is not received from any phy in the port before the I_T Nexus Loss timer for a destination SAS
address has expired, then this state shall, for the destination SAS address:
a) discard all pending Tx Frame messages;
b) discard all pending Tx Open messages;
c) delete all timers (e.g., I_T Nexus Loss timers, Arbitration Wait Time timers, and Reject To Open Limit
timers); and
d) send a No Phys In Port confirmation to the transport layer.
If this state receives a Start I_T Nexus Loss Timer request from the management application layer for a
destination SAS Address accessible through this port for which no I_T Nexus Loss timer has been created,
then this state shall create an I_T Nexus Loss timer for the specified SAS address if the protocol is:
a) SSP, the port is an SSP target port, the Protocol-Specific Port mode page is implemented, and the I_T
NEXUS LOSS TIME field is not set to 0000h in the Protocol-Specific Port mode page (see 9.2.7.4);
b) STP, the port is an STP target port, and the STP SMP I_T NEXUS LOSS TIME field is not set to 0000h in
the SMP CONFIGURE GENERAL function; or
c) SMP, the port is an SMP initiator port, and the STP SMP I_T NEXUS LOSS TIME field is not set to 0000h in
the SMP CONFIGURE GENERAL function.
If this state receives a Start I_T Nexus Loss Timer request from the management application layer, then this
state may create an I_T Nexus Loss timer for the specified SAS address if the protocol is:
a) SSP and the port is an SSP initiator port; or
b) STP and the port is an STP initiator port.
If this state receives a Start I_T Nexus Loss Timer request from the management application layer, an I_T
Nexus Loss timer has been created for the specified destination SAS address, and that I_T Nexus Loss timer
is not running, then this state shall:
1) initialize that I_T Nexus Loss timer; and
2) start that I_T Nexus Loss timer.
This state receives Phy Enabled confirmations indicating when a phy is available.
This state receives Retry Open messages from a PL_PM state machine.
This state creates pending Tx Open messages based on pending Tx Frame messages and Retry Open
messages. Pending Tx Open messages are sent to a PL_PM state machine as Tx Open messages. This
state shall discard a pending Tx Open message if there are no pending Tx Frame messages for that
destination (e.g., after accepting an incoming connection in which the other phy provides transmit SSP frame
credit).
See 6.16.2.1 for additional requirements and recommendations on how this state decides to create pending
Tx Open messages.
If this state receives a Retry Open (Retry) message or a Retry Open (Low Phy Power Condition) message,
then this state shall process the Retry Open message.
If this state receives a Retry Open (No Destination) message or a Retry Open (Open Timeout Occurred)
message and an I_T Nexus Loss timer has not been created for the destination SAS address (e.g., the
destination port is an SSP target port does not support the I_T NEXUS LOSS TIME field in the Protocol Specific
Port mode page), then this state shall process the Retry Open message as either a Retry Open message or
an Unable To Connect message. This selection is vendor specific.
If this state receives a Retry Open (Pathway Blocked) message or Retry Open (Break Received) message,
and an I_T Nexus Loss timer has not been created for the destination SAS address, then this state shall
process the Retry Open message.
If this state receives a Retry Open (No Destination) message, a Retry Open (Open Timeout Occurred)
message, Retry Open (Break Received) message, or a Retry Open (Pathway Blocked) message, and an I_T
Nexus Loss timer has been created for the destination SAS address with an initial value of FFFFh, then this
state shall process the Retry Open message (i.e., the Retry Open message is never processed as an Unable
To Connect message).
If:
a) this state receives a Retry Open (No Destination) message, a Retry Open (Break Received)
message, or a Retry Open (Open Timeout Occurred) message;
b) an I_T Nexus Loss timer has been created for the destination SAS address; and
c) there is no connection established with the destination SAS address,
then this state shall check the I_T Nexus Loss timer and:
a) if the I_T Nexus Loss timer is not running, the I_T nexus loss time is not set to FFFFh, and the
CONFIGURING bit is set to zero in the REPORT GENERAL response (see 9.4.4.4) for each expander
device between this port and the destination port that is two or more levels away from this port, then
this state shall start the I_T Nexus Loss timer;
b) if the I_T Nexus Loss timer is running, then this state shall not stop the timer; and
c) if the I_T Nexus Loss timer has expired, then this state shall process the Retry Open message as if it
were an Unable To Connect message (see 7.2.2.3.6).
If this state:
a) receives a Retry Open (Pathway Blocked) message or Retry Open (Low Phy Power Condition)
message;
b) an I_T Nexus Loss timer has been created for the destination SAS address; and
c) there is no connection established with the destination SAS address,
then this state shall check the I_T Nexus Loss timer and if the I_T Nexus Loss timer:
a) is running, then this state shall not stop the timer; or
b) has expired, then this state shall process the Retry Open message as if it were an Unable To Connect
message (see 7.2.2.3.6).
If this state receives a Retry Open (Retry) message and an I_T Nexus Loss timer is running for the destination
SAS address, then this state shall:
a) stop the I_T Nexus Loss timer; and
b) initialize the I_T Nexus Loss timer (see table 200).
When a pending Tx Open message is sent to a PL_PM state machine as a Tx Open message, the Tx Open
message shall contain the following arguments to be used in an OPEN address frame:
a) Initiator Port Bit from the Transmit Frame request;
b) Protocol from the Transmit Frame request;
c) Connection Rate from the Transmit Frame request;
d) Initiator Connection Tag from the Transmit Frame request;
e) Destination SAS Address from the Transmit Frame request;
f) Source SAS Address from the Transmit Frame request;
g) Pathway Blocked Count; and
h) Arbitration Wait Time.
If persistent connections are supported (see 4.1.13.2), then the Tx Open message sent to a PL_PM state
machine shall contain the following additional argument to be used in an OPEN address frame:
a) Send Extend Bit from the Transmit Frame request.
If credit advance is implemented (see 4.1.14), then the Tx Open message sent to a PL_PM state machine
shall contain the following additional argument to be used in an OPEN address frame:
a) Credit Advance Bit from the Transmit Frame request.
If this state creates a pending Tx Open message from one of the following:
a) a Transmit Frame request;
b) a Retry Open (No Destination) message;
c) a Retry Open (Open Timeout Occurred) message;
d) a Retry Open (Break Received) message; or
e) a Retry Open (Retry) message if the CONTINUE AWT bit is set to zero in the Protocol Specific Port mode
page (see 9.2.7.4),
then this state shall set:
a) the pathway blocked count argument in the Tx Open message to zero; and
b) the arbitration wait time argument in the Tx Open message to zero or a vendor specific value less
than 8000h (see 6.16.4).
If a pending Tx Open message was created as the result of this state receiving a Retry Open (Retry) message
and the protocol for the connection is:
a) SSP, the Protocol Specific Port mode page is implemented, and the REJECT TO OPEN LIMIT field in the
Protocol Specific Port mode page (see 9.2.7.4) is not set to zero; or
b) STP and the STP REJECT TO OPEN LIMIT field is not set to zero in the SMP REPORT GENERAL
response (see 9.4.4.4),
then this state shall:
1) create a Reject To Open Limit timer associated with the pending Tx Open message that received the
Retry Open (Retry) message;
2) initialize the Reject To Open Limit timer as specified in table 200 (see 7.2.2.1);
3) start the Reject To Open Limit timer; and
4) wait at least until the Reject To Open Limit timer expires before sending a Tx Open message.
If a pending Tx Open message was created as the result this state receiving a Retry Open (Pathway Blocked)
message and the Retry Open pathway blocked count argument is:
a) FFh, then this state shall set the Tx Open pathway blocked count argument to FFh; or
b) less than FFh, then this state shall set the Tx Open pathway blocked count argument to the Retry
Open pathway blocked count argument plus 01h.
If a pending Tx Open message was created as the result of this state receiving one of the following:
a) a Retry Open (Opened By Destination) message;
b) a Retry Open (Opened By Other) message;
c) a Retry Open (Collided) message;
If this state receives a Connection Opened message or a Retry Open (Opened By Destination) message for a
SAS address, and an I_T Nexus Loss timer has been created for the SAS address, then this state shall:
a) if the I_T Nexus Loss timer for the SAS address has been running, then stop the timer; and
b) initialize the I_T Nexus Loss timer (see table 200).
If this state receives an Unable To Connect message shown in table 201, then this state shall establish an I_T
nexus loss event (see 7.2.2.3.8).
Table 201 defines the confirmation to be sent to the transport layer for each Unable To Connect message
received.
Unable To Connect (Connection Rate Not Supported) Transmission Status (I_T Nexus Loss)
Unable To Connect (Protocol Not Supported) Transmission Status (I_T Nexus Loss)
Unable To Connect (STP Resources Busy) Transmission Status (I_T Nexus Loss)
If this state receives a Retry Open (No Destination) message, a Retry Open (Open Timeout Occurred)
message, Retry Open (Low Phy Power Condition), or a Retry Open (Pathway Blocked) message and
processes it as an Unable To Connect message, then this state shall establish an I_T nexus loss event (see
7.2.2.3.8).
If this state receives a Retry Open (No Destination) message, a Retry Open (Open Timeout Occurred)
message, Retry Open (Break Received) message, Retry Open (Low Phy Power Condition) message, or a
Retry Open (Pathway Blocked) message and the I_T Nexus Loss timer for the SAS address has expired, then
this state shall establish an I_T nexus loss event (see 7.2.2.3.8).
If an I_T nexus loss event occurs, then this state shall perform the following:
a) delete the I_T Nexus Loss timer for the SAS address;
b) discard the Retry Open message;
c) send a Transmission Status (I_T Nexus Loss) confirmation for the pending Tx Frame message from
which the Retry Open message resulted;
d) discard the pending Tx Frame message from which the Retry Open message resulted;
e) send an I_T Nexus Loss Detected confirmation to the management application layer;
f) if this state has any pending Tx Frame messages with the same destination SAS address and
protocol as the Retry Open message, and this state has not sent a Tx Open message to a PL_PM
state machine for the messages, then this state shall send a Transmission Status (I_T Nexus Loss)
confirmation for each pending Tx Frame message and discard the pending Tx Frame messages and
any corresponding pending Tx Open messages; and
g) if this state has any pending Tx Frame messages with the same destination SAS address and
protocol as the Retry Open message, and this state has sent a Tx Open message to a PL_PM state
machine for a message, then this state shall send a Cancel Open message to each PL_PM state
machine to which it has sent a Tx Open message. After receiving an Unable To Connect (Arb
Stopped) message from a PL_PM state machine in response to the Cancel Open message, this state
shall send a Transmission Status (I_T Nexus Loss) confirmation for each pending Tx Frame message
and discard the pending Tx Frame messages and any corresponding pending Tx Open messages.
If this state receives an Accept_Reject OPENs request, then this state shall send an Accept_Reject OPENs
request with the same arguments to all phys in the port.
If this state receives an SMP Transmit Break request, then this state shall send an SMP Transmit Break
message to the PL_PM state machine associated with the corresponding SMP transport state machine. If
there is no PL_PM state machine associated with the request, then the PL_OC state machine shall ignore the
request.
If this state receives one of the following:
a) a Connection Closed (Close Timeout) message;
b) a Connection Closed (Break Requested) message; or
c) a Connection Closed (Break Received) message,
then this state shall not send a Tx Open or Tx Frame message to the PL_PM state machine that sent the
message until this state receives a Connection Closed (Transition to Idle) message from that PL_PM state
machine.
If this state receives a Connection Closed (Normal) message or a Connection Closed (Transition to Idle)
message indicating that a connection with a destination SAS address is no longer open, and this state has
pending Tx Open messages, then this state may send a Tx Open message to the PL_PM state machine that
sent the Connection Closed message.
If this port is a wide SSP port, then this state shall not reject an incoming connection request on one phy
because this state has an outgoing connection request on another phy.
If:
a) persistent connections are not supported (see 4.1.13.2);
b) this port is an SSP port;
c) there are no pending Tx Frame messages for a destination SAS address with which a PL_PM state
machine has established a connection; and
d) the connection was established by a message from this state,
then this state should send a Close Connection message to the PL_PM state machine.
If:
a) persistent connections are not supported (see 4.1.13.2);
b) this port is an SSP port;
c) has no pending Tx Frame messages for a destination SAS address with which a PL_PM state
machine has established a connection; and
d) the connection was established by the destination,
then this state may wait a vendor specific time and then shall send a Close Connection message to the
PL_PM state machine.
If:
a) persistent connections are supported (see 4.1.13.2);
b) this port is an SSP port;
c) Transmission Status (Frame Transmitted) message is received;
d) there are no pending Tx Frame messages for a destination SAS address with which a PL_PM state
machine has established a connection; and
e) the last Persistent Connection Established confirmation received from the link layer associated with
the PL_PM state machine contained an Enabled argument,
then this state shall send a No Pending Tx Frames request to the link layer:
a) associated with the PL_PM state machine; and
b) from which the last Persistent Connection Established (Enabled) confirmation was received.
If:
a) persistent connections are supported (see 4.1.13.2);
b) this port is an SSP port;
c) there are no pending Tx Frame messages for a destination SAS address with which a PL_PM state
machine has established a connection;
d) the connection was established by a message from this state; and
e) the last Persistent Connection Established confirmation received contained a Disabled argument (i.e.,
a Persistent Connection Established (Disabled) confirmation was received from the PL_PM state
machine that established the connection),
then this state should send a Close Connection message to the PL_PM state machine.
If:
a) persistent connections are supported (see 4.1.13.2);
b) this port is an SSP port;
c) has no pending Tx Frame messages for a destination SAS address with which a PL_PM state
machine has established a connection;
d) the connection was established by the destination; and
e) the last Persistent Connection Established confirmation received contained a Disabled argument (i.e.,
a Persistent Connection Established (Disabled) confirmation was received from the PL_PM state
machine that established the connection),
then this state:
1) may wait a vendor specific time; and
2) shall send a Close Connection message to the PL_PM state machine, if the last Persistent
Connection Established confirmation received did not contain an Enabled argument.
If this state has received a Disable Tx Frames message from a PL_PM state machine, then this state should
send a Close Connection message to the PL_PM state machine.
NOTE 50 - The PL_PM state machine sends a Close Connection request to the link layer upon receipt of a
Close Connection message or on expiration of the Bus Inactivity Time Limit timer (see 7.2.3.4.1).
In order to prevent livelocks, if this port is a wide SSP port, has multiple connections established, and has a
pending Tx Frame message, then this state shall send at least one Tx Frame message to a PL_PM state
machine before sending a Close Connection message to the PL_PM state machine.
After this state receives a Connection Opened message from a PL_PM state machine, this state selects
pending Tx Frame messages for the destination SAS address with the same initiator port bit and protocol
arguments, and, as an option, the same connection rate argument, and sends the messages to the PL_PM
state machine as Tx Frame messages.
This state may send a Tx Frame message to any PL_PM state machine that has established a connection
with the destination SAS address when the initiator port bit and protocol arguments match those in the Tx
Frame message.
After this state sends a Tx Frame message to a PL_PM state machine, this state shall not send another Tx
Frame message to that PL_PM state machine until this state receives a Transmission Status (Frame
Transmitted) message.
This state shall not send a Tx Frame message containing a Request Fence argument or Response Fence
argument to any PL_PM state machine until this state has received one of the following messages for each Tx
Frame message with the same nexus as specified by that Request Fence argument or Response Fence
argument:
a) Transmission Status (ACK Received);
b) Transmission Status (NAK Received);
c) Transmission Status (ACK/NAK Timeout); or
d) Transmission Status (Connection Lost Without ACK/NAK).
After this state sends a Tx Frame message containing a Request Fence argument or Response Fence
argument, this state shall not send another Tx Frame message with the same nexus as specified by that
Request Fence argument or Response Fence argument until this state has received one of the following
messages:
a) Transmission Status (ACK Received);
b) Transmission Status (NAK Received);
c) Transmission Status (ACK/NAK Timeout); or
d) Transmission Status (Connection Lost Without ACK/NAK).
Once this state has sent a Tx Frame message containing a Non-Interlocked argument to a PL_PM state
machine, this state shall not send a Tx Frame message containing a Non-Interlocked argument with the same
I_T_L nexus and command identifier combination to another PL_PM state machine until this state has
received one of the following messages for each Tx Frame message containing a Non-Interlocked argument
for the same I_T_L nexus and command identifier combination:
a) Transmission Status (ACK Received);
b) Transmission Status (NAK Received);
Cancel requests cause this state to cancel previous Transmit Frame requests. A Cancel request includes the
following arguments:
a) Destination SAS Address; and
b) Initiator Port Transfer Tag.
If this state receives a Cancel request and has not already sent a Tx Frame message for the Transmit Frame
request to a PL_PM state machine for the Transmit Frame request specified by the Cancel request, then this
state shall:
a) discard all Transmit Frame requests for the specified destination SAS address and initiator port
transfer tag; and
b) send a Transmission Status (Cancel Acknowledge) confirmation to the transport layer.
If this state receives a Cancel request and has already sent a Tx Frame message to a PL_PM state machine
for the Transmit Frame request specified by the Cancel request, then this state shall send a Cancel message
to the PL_PM state machine to which the Tx Frame message was sent. The Cancel message shall include the
initiator port transfer tag.
PL_PM1:Idle
Phy Enabled
Connection PL_PM3
Opened PL_PM3
PL_PM2:Req_Wait
PL_OC Tx Open
Open
Connection Connection
Opened
Inbound Connection
PL_OC
Connection Opened
Rejected PL_PM3
Open Failed
Retry
PL_OC
Open
PL_OC Hard Reset Unable To PL_OC
Connect
Cancel
PL_OC
Open
Stop Arb
PL_PM4:Wait_
For_Close
Connection Closed
Phy Disabled
(to all states, PL_OC Hard Reset Retry Open PL_OC
may cause Unable To
transition to Connection PL_OC
Connect
PL_PM1:Idle) Closed
PL_PM3:Connected
PL_PM1
PL_PM2
Frame Received
Frame Received ACK Transmitted
ACK Transmitted
PL_OC Tx Frame
Tx
PL_OC Cancel Frame
PL_OC Hard Reset
Frame
Transmitted
ACK Received
NAK Received Transmission
Status
ACK/NAK
Transmission
Timeout PL_OC
Status
Credit
Timeout Retry Frame PL_OC
DONE
Received
Disable Tx Frames PL_OC
PL_OC Close Connection
Close
Persistent Connection Connection
Established
DONE Connection
Transmitted Closed
This transition shall occur after a Connection Opened confirmation is received. The transition shall include the
received OPEN address frame.
This state sends an Open Connection request to the link layer and waits for a confirmation. This state sends
and receives connection management messages to and from the PL_OC state machine.
If this state receives a Hard Reset message, then this state shall terminate all operations.
If credit advance is implemented (see 4.1.14), then the Open Connection request shall contain the following
additional argument from the Tx Open message to be used in an OPEN address frame:
a) Credit Advance Bit.
If this state receives a Connection Opened confirmation, then this state shall send a Connection Opened
message to the PL_OC state machine.
If this state receives a Connection Opened confirmation and the confirmation was not in response to an Open
Connection request from this state (i.e., the connection was established in response to an OPEN address
frame from another SAS device), then this state shall discard any Open Connection request and send a Retry
Open message to the PL_OC state machine. If the Connection Opened confirmation was from the destination
of the Open Connection request, then this state shall send a Retry Open (Opened By Destination) message to
the PL_OC state machine. If the Connection Opened confirmation was from a destination other than the
destination of the Open Connection request, then this state shall send a Retry Open (Opened By Other)
message to the PL_OC state machine.
A Retry Open (Opened By Destination) or Retry Open (Opened By Other) message shall contain the following
arguments:
a) Initiator Port Bit set to the value received with the Tx Open message;
b) Protocol set to the value received with the Tx Open message;
c) Connection Rate set to the value received with the Tx Open message;
d) Initiator Connection Tag set to the value received with the Tx Open message;
e) Destination SAS Address set to the value received with the Tx Open message;
f) Source SAS Address set to the value received with the Tx Open message;
g) Pathway Blocked Count set to the value received with the Tx Open message; and
h) Arbitration Wait Time set to the value of the Arbitration Wait Time timer.
If persistent connections are supported (see 4.1.13.2), then a Retry Open (Opened By Destination) or Retry
Open (Opened By Other) message shall contain the following additional argument:
a) Send Extend Bit set to the value received with the Tx Open message.
If credit advance is implemented (see 4.1.14), then a Retry Open (Opened By Destination) or Retry Open
(Opened By Other) message shall contain the following additional argument:
a) Credit Advance Bit set to the value received with the Tx Open message.
If this state receives one of the Open Failed confirmations listed in table 203, then this state shall send either
a Retry Open message or an Unable To Connect message to the PL_OC state machine.
Table 203 defines the message to be sent to the PL_OC state machine for each Open Failed confirmation.
Open Failed (Low Phy Power Condition) Retry Open (Low Phy Power Condition)
Open Failed (Connection Rate Not Supported) Unable To Connect (Connection Rate Not Supported)
Open Failed (Protocol Not Supported) Unable To Connect (Protocol Not Supported)
Open Failed (STP Resources Busy) Unable To Connect (STP Resources Busy)
If this state receives an Inbound Connection Rejected confirmation after sending an Open Connection
request, then this state shall discard the Open Connection request and send a Retry Open (Collided)
message to the PL_OC state machine.
A Retry Open message shall include the following arguments:
a) Initiator Port Bit set to the value received with the Tx Open message;
b) Protocol set to the value received with the Tx Open message;
c) Connection Rate set to the value received with the Tx Open message;
d) Initiator Connection Tag set to the value received with the Tx Open message;
e) Destination SAS Address set to the value received with the Tx Open message;
f) Source SAS Address set to the value received with the Tx Open message;
g) Pathway Blocked Count argument set to the value received with the Tx Open message; and
h) Arbitration Wait Time set to the value of the Arbitration Wait Time timer.
If persistent connections are supported (see 4.1.13.2), then the Retry Open message shall include the
following additional argument:
a) Send Extend Bit set to the value received with the Tx Open message.
If credit advance is implemented (see 4.1.14), then a Retry Open message shall include the following
additional argument:
a) Credit Advance Bit set to the value received with the Tx Open message.
An Unable To Connect message shall include the following arguments:
a) Initiator Connection Tag set to the value received with the Tx Open message;
b) Destination SAS Address set to the value received with the Tx Open message; and
c) Source SAS Address set to the value received with the Tx Open message.
If this state receives a Cancel Open message and a Connection Opened confirmation has not been received,
then this state shall send a Stop Arb request to the link layer.
If a Connection Opened confirmation has not been received, then this transition shall occur after:
a) a Retry Open message is sent to the PL_OC state machine;
b) an Unable To Connect message is sent to the PL_OC state machine;
c) all operations have been terminated after receiving a Hard Reset message; or
d) a Phy Disabled confirmation is received.
This transition shall occur after one of the following confirmations is received:
a) an Open Failed (Open Timeout Occurred);
b) an Open Failed (Break Received); or
c) an Open Failed (Arb Stopped).
If this state was entered from the PL_PM1:Idle state, then this state shall send a Connection Opened
message to the PL_OC state machine that includes as an argument in the received OPEN address frame.
If:
a) the protocol for the connection is SSP, the port is an SSP target port, the Disconnect-Reconnect mode
page is implemented, and the CONNECT TIME LIMIT field in the Disconnect-Reconnect mode page (see
9.2.7.2) is not set to zero;
b) the protocol for the connection is SMP and the port is an SMP target port; or
c) the protocol for the connection is STP, the port is an STP target port, and the STP CONNECT TIME LIMIT
field is not set to zero in the SMP REPORT GENERAL response (see 9.4.4.4),
then, upon entry into this state, this state shall:
1) create a Maximum Connect Time Limit timer;
2) initialize the Maximum Connect Time Limit timer as specified in table 202 (see 7.2.3.1); and
3) start the Maximum Connect Time Limit timer.
If:
a) the protocol for the connection is SSP, the port is an SSP initiator port, and the CONNECT TIME LIMIT
field in the Disconnect-Reconnect mode page (see 9.2.7.2) for the destination SSP target port is not
set to zero; or
b) the protocol for the connection is STP, the port is an STP initiator port, and the STP CONNECT TIME LIMIT
field is not set to zero in the SMP REPORT GENERAL response (see 9.4.4.4) for the destination STP
target port,
then, upon entry into this state, this state may:
1) create a Maximum Connect Time Limit timer;
2) initialize the Maximum Connect Time Limit timer as specified in table 202 (see 7.2.3.1); and
3) start the Maximum Connect Time Limit timer.
If:
a) the protocol for the connection is SSP, the port is an SSP target port, and the BUS INACTIVITY LIMIT field
is set to a non-zero value in the Disconnect-Reconnect mode page (see 9.2.7.2); or
b) the protocol for the connection is STP, the port is an STP initiator port, and the STP BUS INACTIVITY
LIMIT field is not set to zero in the SMP REPORT GENERAL response for the destination STP target
port,
then, upon entry into this state, this state shall:
1) create a Bus Inactivity Time Limit timer;
2) initialize the Bus Inactivity Time Limit timer as specified in table 202; and
3) start the Bus Inactivity Time Limit timer.
If a Bus Inactivity Time Limit timer has been created and the connection is:
a) SSP and this state receives a Tx Frame message; or
b) STP and the phy is not both transmitting and receiving SATA_SYNC,
then this state shall:
1) stop the Bus Inactivity Time Limit timer, if it is running;
2) initialize the Bus Inactivity Time Limit timer as specified in table 202; and
3) start the Bus Inactivity Time Limit timer.
If this state receives a Tx Frame message, then this state shall send a Tx Frame request to the link layer. The
following arguments from the Tx Frame message shall be included with the Tx Frame request:
a) the frame to be transmitted; and
b) if this port is an SSP port, Balance Required or Balance Not Required.
For STP connections, this state connects the STP transport layer to the STP link layer.
If a Bus Inactivity Time Limit timer expires, then:
a) if persistent connections are not supported (see 4.1.13) and the connection is SSP and there is no Tx
Frame request outstanding (i.e., this state is not waiting for an ACK Received or NAK Received
confirmation), then this state shall send a Close Connection request to the link layer;
b) if persistent connections are not supported and the connection is SSP and there is a Tx Frame
request outstanding (i.e., this state is waiting for an ACK Received or NAK Received confirmation),
then this state shall send a Close Connection request to the link layer after receiving an ACK
Received or NAK Received confirmation; or
c) if the connection is STP, then this state shall send a Close Connection request to the link layer.
If:
a) the connection is SSP;
b) persistent connections are supported (see 4.1.13.2);
If this state receives a Tx Frame message after sending a Close Connection request but before receiving a
Connection Closed confirmation, then this state shall send a Retry Frame message to the PL_OC state
machine.
If this state receives a Frame Received confirmation, then this state shall send a Frame Received
confirmation to the transport layer. The confirmation shall include the arguments received with the
confirmation (e.g., the frame).
If this state receives an ACK Transmitted confirmation, then this state shall send an ACK Transmitted
confirmation to the transport layer including the initiator port transfer tag of the frame that was ACKed.
If this state receives a Frame Transmitted confirmation, then this state shall send:
a) a Transmission Status (Frame Transmitted) confirmation to the transport layer; and
b) a Transmission Status (Frame Transmitted) message to the PL_OC state machine.
If this state receives an ACK Received confirmation, then this state shall send:
a) a Transmission Status (ACK Received) confirmation to the transport layer; and
b) a Transmission Status (ACK Received) message to the PL_OC state machine.
If this state receives a NAK Received confirmation, then this state shall send:
a) a Transmission Status (NAK Received) confirmation to the transport layer; and
b) a Transmission Status (NAK Received) message to the PL_OC state machine.
If this state receives an ACK/NAK Timeout confirmation, then this state shall send:
a) a Transmission Status (ACK/NAK Timeout) confirmation to the transport layer; and
b) a Transmission Status (ACK/NAK Timeout) message to the PL_OC state machine.
If this state receives a Cancel message, then this state shall:
a) discard all Tx Frame requests for the specified initiator port transfer tag;
b) send a Transmission Status (Cancel Acknowledge) confirmation to the transport layer including the
destination SAS address and the initiator port transfer tag as arguments; and
c) discard any subsequent confirmations for previous Tx Frame requests sent for the initiator port
transfer tag.
If this state receives a Close Connection message from the PL_OC state machine, then this state shall send a
Close Connection request to the link layer.
If this state receives one of the following:
a) a Connection Closed (Normal) confirmation;
b) a Connection Closed (Close Timeout) confirmation;
c) a Connection Closed (Break Requested) confirmation;
d) a Connection Closed (Break Received) confirmation; or
e) a Connection Closed (Transition to Idle) confirmation,
then this state shall send a Connection Closed message to the PL_OC state machine including the argument
received with the confirmation.
If this state receives a Connection Closed (Transition to Idle) confirmation after receiving one of the following:
a) a Connection Closed (Break Received) confirmation; or
b) a Connection Closed (Break Requested) confirmation,
then this state shall send a Transmission Status (Break Received) confirmation to the transport layer.
If this state receives a Connection Closed (Normal) confirmation, a Connection Closed (Transition to Idle)
confirmation, or a Phy Disabled confirmation after sending a Transmission Status (Frame Transmitted)
confirmation, before receiving an ACK Received or NAK Received confirmation, then this state shall send:
a) a Transmission Status (Connection Lost Without ACK/NAK) confirmation to the transport layer; and
b) a Transmission Status (Connection Lost Without ACK/NAK) message to the PL_OC state machine.
If this state receives a Connection Closed (Normal) confirmation, a Connection Closed (Transition to Idle)
confirmation, or a Phy Disabled confirmation after sending a Tx Frame request but before receiving a Frame
Transmitted confirmation, then this state shall send a Retry Frame message to the PL_OC state machine.
If this state receives a Connection Closed confirmation during an SMP connection, then this state shall send a
Connection Closed confirmation to the transport layer.
If this state receives a Credit Timeout confirmation, then this state shall send a Retry Frame message to the
PL_OC state machine.
A Retry Frame message shall include the following arguments from the Tx Frame message:
a) Initiator Port Bit;
b) Protocol;
c) Connection Rate;
d) Initiator Connection Tag;
e) Destination SAS Address;
f) Source SAS Address; and
g) Frame.
After this state receives a DONE Received (Normal) confirmation or DONE Received (Credit Timeout)
confirmation, if this state does not receive a Tx Frame message within 1 ms, then this state shall send a
Disable Tx Frames message to the PL_OC state machine.
If this state receives a DONE Received (ACK/NAK Timeout) confirmation or DONE Transmitted confirmation,
then this state shall send a Disable Tx Frames message to the PL_OC state machine.
If this state receives an SMP Transmit Break message, then this state shall send an SMP Transmit Break
request to the link layer.
If this state receives a Hard Reset message, then this state shall terminate all operations.
After receiving a Connection Closed (Transition to Idle) confirmation, if this state was entered as the result of
the PL_PM2:Req_Wait state receiving:
a) an Open Failed (Open Timeout Occurred) confirmation, then this state shall send a Retry Open (Open
Timeout Occurred) message to the PL_OC state machine; or
b) an Open Failed (Break Received) confirmation, then this state shall send a Retry Open (Break
Received) message to the PL_OC state machine.
The Retry Open message shall include the following arguments:
a) Initiator Port Bit set to the value received with the Tx Open message;
b) Protocol set to the value received with the Tx Open message;
c) Connection Rate set to the value received with the Tx Open message;
d) Initiator Connection Tag set to the value received with the Tx Open message;
e) Destination SAS Address set to the value received with the Tx Open message;
f) Source SAS Address set to the value received with the Tx Open message;
g) Pathway Blocked Count set to the value received with the Tx Open message; and
h) Arbitration Wait Time set to the value of the Arbitration Wait Time timer.
If persistent connections are supported (see 4.1.13.2), then the Retry Open message shall include the
following additional argument:
a) Send Extend Bit set to the value received with the Tx Open message.
If this state receives a Connection Closed confirmation and the connection request was for an SMP
connection, then this state shall send a Connection Closed confirmation to the transport layer.
After receiving a Connection Closed (Transition to Idle) confirmation, if this state was entered after the
PL_PM2:Req_Wait state received an Open Failed (Arb Stopped) confirmation (i.e., as the result of the
PL_PM2:Req_Wait state sending a Stop Arb request), then this state shall send an Unable To Connect (Arb
Stopped) message to the PL_OC state machine.
If this state receives a Hard Reset message, then this state shall terminate all operations.
8 Transport layer
The transport layer defines frame formats and how frames are processed by this layer. Transport layer state
machines interface to the application layer and port layer and construct and parse frame contents. For SSP,
the transport layer only receives frames from the port layer for which an ACK is going to be transmitted by the
link layer.
Byte\Bit 7 6 5 4 3 2 1 0
0 FRAME TYPE
1 (MSB)
••• HASHED DESTINATION SAS ADDRESS
3 (LSB)
4 Reserved
5 (MSB)
••• HASHED SOURCE SAS ADDRESS
7 (LSB)
8 Reserved
9 Reserved
RETRY CHANGING
10 Reserved TLR CONTROL DATA RETRANSMIT DATA
FRAMES POINTER
12 Reserved
13
••• Reserved
15
16 (MSB)
INITIATOR PORT TRANSFER TAG
17 (LSB)
18 (MSB)
TARGET PORT TRANSFER TAG
19 (LSB)
20 (MSB)
••• DATA OFFSET
23 (LSB)
24
INFORMATION UNIT
••• (e.g., see table 207, table 209, table 211, table 212, or table 213)
m
The SSP frame header contains parameters defined in the first 24 bytes of the SSP frame.
Table 205 defines the FRAME TYPE field, which defines the format of the INFORMATION UNIT field.
Information
Type of information
Code Name of frame Originator unit size Reference
unit
(bytes)
Data information unit
DATA frame (i.e., (i.e., write Data
SSP initiator port or
01h write DATA frame or information unit or 1 to 1 024 8.2.2.4
SSP target port
read DATA frame) read Data
information unit)
Transfer Ready
05h XFER_RDY frame SSP target port 12 8.2.2.3
information unit
Command
06h COMMAND frame SSP initiator port 28 to 280 8.2.2.1
information unit
Response
07h RESPONSE frame SSP target port 24 to 1 024 8.2.2.5
information unit
Task Management
16h TASK frame Function information SSP initiator port 28 8.2.2.2
unit
F0h to FFh Vendor specific
All others Reserved
The HASHED DESTINATION SAS ADDRESS field contains the hashed value of the destination SAS address (see
4.2.5). See 8.2.6.2.2 and 8.2.6.3.2 for transport layer requirements on checking this field.
The HASHED SOURCE SAS ADDRESS field contains the hashed value of the source SAS address (see 4.2.5). See
8.2.6.2.2 and 8.2.6.3.2 for transport layer requirements on checking this field.
Table 206 defines the TLR CONTROL field for COMMAND frames. The TLR CONTROL field is reserved for all other
frame types.
If the SSP target port enables transport layer retries, then it shall set the RETRY DATA FRAMES bit to
01b one in any XFER_RDY frames that it transmits for this command.
If the SSP target port does not enable transport layer retries, then it shall set the RETRY DATA
FRAMES bit to zero in any XFER_RDY frames that it transmits for this command.
If an SSP initiator port supports transport layer retries, then it shall set the TLR CONTROL field to 01b in each
COMMAND frame that it sends unless it has determined that the I_T_L nexus does not support the TLR
CONTROL field.
If an SSP initiator port does not support transport layer retries, then it shall set the TLR CONTROL field to 10b in
each COMMAND frame that it sends unless it has determined that the I_T_L nexus does not support the TLR
CONTROL field.
An SSP initiator port determines that an I_T_L nexus does not support the TLR CONTROL field if the SSP
initiator port sends a COMMAND frame with the TLR CONTROL field set to 01b or 10b and receives a
RESPONSE frame with the DATAPRES field set to RESPONSE_DATA and the RESPONSE CODE field set to 02h
(i.e., INVALID FRAME). After determining that an I_T_L nexus does not support the TLR CONTROL field, the
SSP initiator port shall set the TLR CONTROL field to 00b for subsequent COMMAND frames for that I_T_L
nexus.
NOTE 51 - Initiator ports compliant with SAS-1.1 always set the TLR CONTROL field to 00b.
NOTE 52 - The TLR CONTROL SUPPORTED field in the Protocol Specific Logical Unit Information VPD page (see
9.2.11.3) indicates if the SSP target port supports the TLR CONTROL field set to a non-zero value.
An SSP target port sets the RETRY DATA FRAMES bit in an XFER_RDY frame based on the TLR CONTROL field
received in the COMMAND frame for the command (see table 206) and the TRANSPORT LAYER RETRIES bit in
the Protocol Specific Logical Unit mode page (see 9.2.7.3).
A RETRY DATA FRAMES bit set to one in an XFER_RDY frame specifies that the SSP initiator port shall enable
transport layer retries for write DATA transfers related to this XFER_RDY.
A RETRY DATA FRAMES bit set to zero in an XFER_RDY frame specifies that the SSP initiator port shall disable
transport layer retries for write DATA transfers related to this XFER_RDY.
The RETRY DATA FRAMES bit is reserved for frames other than XFER_RDY frames.
A RETRANSMIT bit set to one specifies that the frame is a retransmission after the SSP port failed in its previous
attempt to transmit the frame (e.g., the SSP port received a NAK for the frame transmitted in the previous
attempt). The RETRANSMIT bit is set to one for TASK frames, RESPONSE frames, and XFER_RDY frames
under the conditions defined in 8.2.4 and shall be set to zero for all other frame types.
A CHANGING DATA POINTER bit set to one specifies that the frame is a retransmission after the SSP port failed in
its previous attempt to transmit the frame or a subsequent frame and the DATA OFFSET field of the frame may
not be sequentially increased from that of the previous frame. The CHANGING DATA POINTER bit is set to one for
DATA frames under the conditions defined in 8.2.4.5 and shall be set to zero for all other frame types.
The NUMBER OF FILL BYTES field specifies the number of fill bytes between the INFORMATION UNIT field and the
CRC field. The NUMBER OF FILL BYTES field shall be set to 00b for all frame types except DATA frames as
specified in 8.2.2.4 and RESPONSE frames as specified in 8.2.2.5 (i.e., all other frame types are four-byte
aligned).
The INITIATOR PORT TRANSFER TAG field contains a value that allows the SSP initiator port to establish a context
for commands and task management functions.
For COMMAND frames and TASK frames, the SSP initiator port shall set the INITIATOR PORT TRANSFER TAG
field to a value that is unique for the I_T nexus established by the connection (see 6.16). An SSP initiator port
shall not reuse the same initiator port transfer tag when transmitting COMMAND frames or TASK frames to
different LUNs in the same SSP target port. An SSP initiator port may reuse an initiator port transfer tag when
transmitting frames to different SSP target ports. An SSP initiator port does not reuse an initiator port transfer
tag until it receives indication from the SSP target port that the initiator port transfer tag is no longer in use
(see 8.2.4, 8.2.5, and 9.2.2).
The INITIATOR PORT TRANSFER TAG field in a COMMAND frame contains the command identifier defined in
SAM-5. The INITIATOR PORT TRANSFER TAG field in a TASK frame is the association between a Send Task
Management Request (see 9.2.1.12) and a Received Task Management Function Executed (see 9.2.1.15).
The number space used in the INITIATOR PORT TRANSFER TAG fields is shared across COMMAND frames and
TASK frames (e.g., if an initiator port transfer tag is used for a COMMAND frame, then it is not also used for a
concurrent TASK frame).
For DATA, XFER_RDY, and RESPONSE frames, the SSP target port shall set the INITIATOR PORT TRANSFER
TAG field to the initiator port transfer tag of the command or task management function to which the frame
pertains.
The TARGET PORT TRANSFER TAG field provides an optional method for an SSP target port to establish the write
data context when receiving a write DATA frame (i.e., determine the command to which the write data
corresponds). Unlike the INITIATOR PORT TRANSFER TAG field, which was assigned by the SSP initiator port, the
TARGET PORT TRANSFER TAG field in a write DATA frame contains a value assigned by the SSP target port that
was delivered to the SSP initiator port in the XFER_RDY frame requesting the write data.
NOTE 53 - The TARGET PORT TRANSFER TAG field is useful if an SSP target port has more than one
XFER_RDY frame outstanding (i.e., the SSP target port has transmitted an XFER_RDY frame for each of two
or more commands and has not yet received all the write data for them).
SSP target ports may set the TARGET PORT TRANSFER TAG field to any value when transmitting any SSP frame.
SSP target ports that use this field should set the TARGET PORT TRANSFER TAG field in every XFER_RDY frame
to a value that is unique for the I_T_L nexus and command identifier combination (i.e., that is unique for every
XFER_RDY that is outstanding from the SSP target port).
SSP initiator ports shall set the TARGET PORT TRANSFER TAG field as follows:
a) for each write DATA frame that is sent in response to an XFER_RDY frame, the SSP initiator port
shall set the TARGET PORT TRANSFER TAG field to the value that was in the corresponding XFER_RDY
frame;
b) for each write DATA frame that is sent containing first burst data (see 8.2.2.4), the SSP initiator port
shall set the TARGET PORT TRANSFER TAG field to FFFFh; and
c) for frames other than write DATA frames, the SSP initiator port shall set the TARGET PORT TRANSFER
TAG field to FFFFh.
For DATA frames, the DATA OFFSET field is described in 8.2.2.4. For all other frame types, the DATA OFFSET field
shall be ignored.
The INFORMATION UNIT field contains the information unit, the format of which is defined by the FRAME TYPE field
(see table 205). The maximum size of the INFORMATION UNIT field is 1 024 bytes, making the maximum size of
the frame 1 052 bytes (i.e., 24 bytes of header + 1 024 bytes of data + 4 bytes of CRC).
Fill bytes shall be included after the INFORMATION UNIT field so the CRC field is aligned on a four byte boundary.
The number of fill bytes are specified by the NUMBER OF FILL BYTES field. The contents of the fill bytes are
vendor specific.
The CRC field contains a CRC value (see 6.7) that is computed over the entire SSP frame prior to the CRC field
including the fill bytes (i.e., all data dwords between the SOF and the CRC field). The CRC field is checked by
the link layer (see 6.20), not the transport layer.
A COMMAND frame is sent by an SSP initiator port to request that a command be processed by the SCSI
device server in a logical unit (see 8.2.3.3, 8.2.3.4, 8.2.3.5, and 8.2.3.6).
Table 207 defines the Command information unit used in a COMMAND frame.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• LOGICAL UNIT NUMBER
7
8 Reserved
ENABLE
9 FIRST COMMAND PRIORITY TASK ATTRIBUTE
BURST
10 Reserved
11 ADDITIONAL CDB LENGTH (n dwords) Reserved
12
••• CDB
27
28
••• ADDITIONAL CDB BYTES
27+n×4
The LOGICAL UNIT NUMBER field specifies the logical unit number of the logical unit to which the task router shall
route the command. The structure of the LOGICAL UNIT NUMBER field shall be as defined in SAM-5. If the
addressed logical unit does not exist, then the task router shall follow the rules for selection of incorrect logical
units defined in SAM-5.
An ENABLE FIRST BURST bit set to one specifies that the SSP target port shall expect first burst data for the
command as defined by the FIRST BURST SIZE field in the Disconnect-Reconnect mode page (see 9.2.7.2). An
ENABLE FIRST BURST bit set to zero specifies that the SSP target port shall not expect first burst data for the
command (i.e., the FIRST BURST SIZE field in the Disconnect-Reconnect mode page shall be ignored). SCSI
application clients shall only set the ENABLE FIRST BURST bit to one if:
a) the FIRST BURST SIZE field in the Disconnect-Reconnect mode page is set to a value other than 0000h;
and
b) the logical unit and SSP target port comply with this standard (e.g., as reported in the standard
INQUIRY data version descriptors (see SPC-6)).
The COMMAND PRIORITY field specifies the relative scheduling importance of a command with the TASK
ATTRIBUTE field set to 000b (i.e., SIMPLE) in relation to other commands already in the task set with SIMPLE
task attributes (see SAM-5).
The TASK ATTRIBUTE field is defined in table 208.
The ADDITIONAL CDB LENGTH field contains the length in dwords (i.e., four bytes) of the ADDITIONAL CDB BYTES
field.
The CDB field and ADDITIONAL CDB BYTES field together contain the CDB to be interpreted by the device server
in the addressed logical unit. Any bytes after the end of the actual CDB within the two fields shall be ignored
(e.g., a six-byte CDB occupies the first six bytes of the CDB field, the remaining ten bytes of the CDB field are
ignored, and the ADDITIONAL CDB BYTES field is not present).
The contents of the CDB are defined in the SCSI command standards (e.g., SPC-6).
A TASK frame is sent by an SSP initiator port to request that a task management function be processed by the
task manager in a logical unit (see 8.2.3.2).
Table 209 defines the Task Management Function information unit used in a TASK frame.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• LOGICAL UNIT NUMBER
7
8 Reserved
9 Reserved
10 TASK MANAGEMENT FUNCTION
11 Reserved
12 (MSB)
INITIATOR PORT TRANSFER TAG TO MANAGE
13 (LSB)
14
••• Reserved
27
The LOGICAL UNIT NUMBER field specifies the logical unit number of the logical unit, if any, to which the task
router shall route the task management function. The structure of the LOGICAL UNIT NUMBER field shall be as
defined in SAM-5. If the addressed logical unit does not exist, then the task router shall return a RESPONSE
frame with the DATAPRES field set to RESPONSE_DATA and its RESPONSE CODE field set to INCORRECT
LOGICAL UNIT NUMBER.
Uses
Uses INITIATOR
Task LOGICAL PORT
a b
Code management Support UNIT TRANSFER Description
function NUMBER TAG TO
field MANAGE
field
Uses
Uses INITIATOR
Task LOGICAL PORT
a b
Code management Support UNIT TRANSFER Description
function NUMBER TAG TO
field MANAGE
field
If the TASK MANAGEMENT FUNCTION field contains a reserved or unsupported value, then the task manager shall
return a RESPONSE frame with the DATAPRES field set to RESPONSE_DATA and its RESPONSE CODE field set
to TASK MANAGEMENT FUNCTION NOT SUPPORTED.
If the TASK MANAGEMENT FUNCTION field is set to ABORT TASK or QUERY TASK, then the INITIATOR PORT
TRANSFER TAG TO MANAGE field specifies the INITIATOR PORT TRANSFER TAG value from the COMMAND frame
that contained the command to be aborted or checked. For all other task management functions, the INITIATOR
PORT TRANSFER TAG TO MANAGE field shall be ignored.
An XFER_RDY frame is sent by an SSP target port to request write data from the SSP initiator port during a
write command or a bidirectional command (see 8.2.3.4 and 8.2.3.6).
Table 211 defines the Transfer Ready information unit used in an XFER_RDY frame.
Byte\Bit 7 6 5 4 3 2 1 0
0 (MSB)
••• REQUESTED OFFSET
3 (LSB)
4 (MSB)
••• WRITE DATA LENGTH
7 (LSB)
8
••• Reserved
11
The REQUESTED OFFSET field contains the application client buffer offset of the segment of write data in the
data-out buffer that the SSP initiator port may transmit using write DATA frames. The requested offset shall be
a multiple of four (i.e., each write DATA frame shall begin transferring data on a dword boundary).
The REQUESTED OFFSET field shall be set to 00000000h for the first XFER_RDY frame of a command unless:
a) the ENABLE FIRST BURST bit was set to one in the COMMAND frame (see 8.2.2.1); and
b) the FIRST BURST SIZE field is set to a value other than 0000h in the Disconnect-Reconnect mode page
(see 9.2.7.2.5).
If the ENABLE FIRST BURST bit was set to one in the COMMAND frame (see 8.2.2.1), then in the initial
XFER_RDY frame for the command, the SSP target port shall set the REQUESTED OFFSET field to the
application client buffer offset of the segment of write data following the first burst data defined by the FIRST
BURST SIZE field in the Disconnect-Reconnect mode page (see 9.2.7.2.5).
If any additional XFER_RDY frames are required for the command and transport layer retries are not being
used, then the REQUESTED OFFSET field shall be set to the sum of the requested offset and write data length of
the previous XFER_RDY frame.
The WRITE DATA LENGTH field contains the number of bytes of write data the SSP initiator port may transmit
using write DATA frames from the application client data-out buffer starting at the requested offset. The SSP
target port shall set the WRITE DATA LENGTH field to a value greater than or equal to 00000001h. If the MAXIMUM
BURST SIZE field is not set to 0000h in the Disconnect-Reconnect mode page, and a persistent connection has
not been established (see 4.1.13), then the SSP target port shall set the WRITE DATA LENGTH field to a value
less than or equal to the number of bytes specified by the MAXIMUM BURST SIZE field (see 9.2.7.2.5).
If an SSP target port transmits an XFER_RDY frame containing a WRITE DATA LENGTH field set to a value that
is not divisible by four, then the SSP target port shall not transmit any subsequent XFER_RDY frames for that
command (i.e., only the last XFER_RDY for a command may request a non-dword multiple write data length).
The value in the REQUESTED OFFSET field plus the value of the WRITE DATA LENGTH field shall not be greater
than 1_00000000h (i.e., a SCSI command shall not transfer more than 232 bytes of write data).
During a write command or a bidirectional command (see 8.2.3.4 and 8.2.3.6), one or more write DATA
frames are sent by an SSP initiator port to deliver write data.
During a read command or a bidirectional command (see 8.2.3.5 and 8.2.3.6), one or more read DATA frames
are sent by an SSP target port to deliver read data.
Table 212 defines the Data information unit used in a DATA frame.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• DATA
n
The DATA field contains the read data (i.e., data to the application client’s data-in buffer) or write data (i.e., data
from the application client’s data-out buffer).
The size of the DATA field (i.e., the data length) is determined by subtracting the following values from the
DATA frame size (i.e., the number of bytes between SOF and EOF (see 6.20.3)):
a) the number of bytes in the SSP frame header (i.e., 24);
b) the number of bytes in the CRC field (i.e., 4); and
c) the number of fill bytes, specified by the NUMBER OF FILL BYTES field in the SSP frame header (see
8.2.1).
The maximum size of the Data information unit (i.e., the DATA field) is the maximum size of any information
unit in an SSP frame (see 8.2.1). The minimum size of the Data information unit is one byte.
An SSP initiator port shall only transmit a write DATA frame:
a) in response to an XFER_RDY frame; or
b) after transmitting a COMMAND frame if the ENABLE FIRST BURST bit was set to one in the COMMAND
frame (see 8.2.2.1) and the FIRST BURST SIZE field in the Disconnect-Reconnect mode page is set to a
value other than 0000h (see 9.2.7.2.5).
If the MAXIMUM BURST SIZE field is not set to 0000h in the Disconnect-Reconnect mode page and a persistent
connection has not been established (see 4.1.13), then the maximum amount of data that is transferred at one
time by an SSP target port per I_T_L nexus and command identifier combination is limited by the value in the
MAXIMUM BURST SIZE field (see 9.2.7.2.5).
A write DATA frame shall only contain write data for a single XFER_RDY frame.
An SSP initiator port shall set the NUMBER OF FILL BYTES field to 00b in the SSP frame header (see 8.2.1) in all
write DATA frames that it transmits in response to an XFER_RDY frame except the last write DATA frame for
that XFER_RDY frame. An SSP initiator port may set the NUMBER OF FILL BYTES field to a non-zero value in the
last DATA frame that it transmits in response to an XFER_RDY.
An SSP target port shall set the NUMBER OF FILL BYTES field to 00b in the SSP frame header (see 8.2.1) in all
read DATA frames for a command except the last read DATA frame for that command. The SSP target port
may set the NUMBER OF FILL BYTES field to a non-zero value in the last read DATA frame for a command (i.e.,
only the last read DATA frame for a command may contain data with a length that is not a multiple of four).
An SSP initiator port shall not transmit a write DATA frame for a given I_T_L nexus and command identifier
combination after the SSP initiator port has sent a TASK frame that terminates that command (e.g., an
ABORT TASK).
The DATA OFFSET field in the SSP frame header (see 8.2.1) contains the application client buffer offset as
described by SAM-5. For read DATA frames, this is the offset into the application client’s data-in buffer. For
write DATA frames, this is the offset into the application client’s data-out buffer. The data offset shall be a
multiple of four (i.e., each DATA frame shall transfer data beginning on a dword boundary).
The DATA OFFSET field shall be set to 00000000h in the initial read DATA frame for a command with the ENABLE
FIRST BURST bit set to zero (see 8.2.2.1). If any additional read DATA frames are required for the command
and transport layer retries are not being used, then the DATA OFFSET field shall be set to the sum of the data
offset and data length of the previous read DATA frame.
The DATA OFFSET field shall be set to 00000000h in the initial write DATA frame for a command. If any
additional write DATA frames are required for the command and transport layer retries are not being used,
then the DATA OFFSET field shall be set to the sum of the data offset and data length of the previous write DATA
frame.
The value in the DATA OFFSET field plus the size of the DATA field shall not be greater than 1_00000000h (i.e., a
SCSI command shall not transfer more than 232 bytes of write data and/or more than 232 bytes of read data).
Byte\Bit 7 6 5 4 3 2 1 0
0
••• Reserved
7
8
STATUS QUALIFIER
9
10 Reserved DATAPRES
11 STATUS
12
••• Reserved
15
16 (MSB)
••• SENSE DATA LENGTH (n bytes)
19 (LSB)
20 (MSB)
••• RESPONSE DATA LENGTH (m bytes)
23 (LSB)
24
••• RESPONSE DATA (see table 215 in 8.2.2.5.3) (if any)
23+m
24+m
••• SENSE DATA (if any)
23+m+n
Table 214 defines the DATAPRES field, which specifies the format and content of the STATUS field, the STATUS
QUALIFIER field, the SENSE DATA LENGTH field, the RESPONSE DATA LENGTH field, the RESPONSE DATA field, and
the SENSE DATA field.
An SSP target port shall set the DATAPRES field to NO_DATA in a RESPONSE frame sent for a command that
completes without response data or sense data.
An SSP target port shall set the DATAPRES field to RESPONSE_DATA in a RESPONSE frame sent for:
a) every TASK frame; and
b) every COMMAND frame for which errors occur while the transport layer is processing the frame (see
8.2.5.3).
An SSP target port shall set the DATAPRES field to SENSE_DATA in a RESPONSE frame sent for a command
that completes with sense data to return (e.g., CHECK CONDITION status).
If the DATAPRES field is set to a reserved value, then the SSP initiator port shall discard the RESPONSE frame.
Table 215 defines the RESPONSE DATA field. The RESPONSE DATA field shall be present if the SSP target port
detects any of the conditions described by a non-zero value in the RESPONSE CODE field and shall be present
for a RESPONSE frame sent in response to a TASK frame.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• ADDITIONAL RESPONSE INFORMATION
2
3 RESPONSE CODE
The ADDITIONAL RESPONSE INFORMATION field contains additional response information for certain task
management functions (e.g., QUERY ASYNCHRONOUS EVENT) as defined in SAM-5. If the task
management function does not define additional response information or the logical unit does not support
additional response information, then the SSP target port shall set the ADDITIONAL RESPONSE INFORMATION field
to 000000h.
Table 216 defines the RESPONSE CODE field, which specifies the error condition or the completion status of a
task management function. See 9.2.1.5 and 9.2.1.15 for the mapping of these response codes to SCSI
service responses.
Code Description
a
09h INCORRECT LOGICAL UNIT NUMBER
b
0Ah OVERLAPPED INITIATOR PORT TRANSFER TAG ATTEMPTED
All others Reserved
a
Only valid when responding to a TASK frame.
b
Returned in case of command/task management function or task management
function/task management function initiator port transfer tag conflicts.
e) the SSP target port shall not include the RESPONSE DATA field;
f) the SSP target port shall set the SENSE DATA LENGTH field to a non-zero value indicating the number of
bytes in the SENSE DATA field. The value in the SENSE DATA LENGTH field shall not be greater than 1 000
(see table 205 in 8.2.1); and
g) the SSP target port shall set the SENSE DATA field to the sense data (see SAM-5).
The value in the SENSE DATA LENGTH field is not required to be a multiple of four. If the value is not a multiple of
four, then the value in the NUMBER OF FILL BYTES field in the SSP frame header is non-zero and fill bytes are
present.
Table 217 lists the sequences of SSP frames supporting the SCSI transport protocol services described in
9.2.1.
Sequence Reference
When multiple commands and/or task management functions are outstanding, frames from each of the
individual sequences may be interleaved in any order. RESPONSE frames may be returned in any order (i.e.,
the order in which TASK frames and COMMAND frames are sent has no effect on the order that RESPONSE
frames are returned).
Frames in a sequence may be transmitted during one or more connections (see 6.16) (e.g., for a write
command using a single XFER_RDY frame, the COMMAND frame may be transmitted in a connection
originated by the SSP initiator port, the XFER_RDY frame in a connection originated by the SSP target port,
the DATA frames in one or more connections originated by the SSP initiator port, and the RESPONSE frame
in a connection originated by the SSP target port. Alternatively, all the frames may be transmitted in one
connection).
Figure 201 shows the sequence of SSP frames for a task management function (e.g., ABORT TASK (see
SAM-5)), including the transport protocol services (see 9.2.1) invoked by the SCSI application layer.
Figure 202 shows the sequence of SSP frames for a non-data command (e.g., TEST UNIT READY (see
SPC-6)), including the transport protocol services (see 9.2.1) invoked by the SCSI application layer.
Figure 203 shows the sequence of SSP frames for a write command (e.g., MODE SELECT (see SPC-6)),
including the transport protocol services (see 9.2.1) invoked by the SCSI application layer.
Figure 204 shows the sequence of SSP frames for a read command (e.g., INQUIRY, REPORT LUNS, or
MODE SENSE (see SPC-6)), including the transport protocol services (see 9.2.1) invoked by the SCSI
application layer.
Figure 205 shows the sequence of SSP frames for a bidirectional command (e.g., XDWRITEREAD (see
SBC-3)), including the transport protocol services (see 9.2.1) invoked by the SCSI application layer.
An SSP target port may transmit read DATA frames for a bidirectional command at the same time it is
receiving write DATA frames for the same bidirectional command.
The transport layer, sometimes assisted by the SCSI application layer, handles some link layer errors (e.g.,
NAKs and ACK/NAK timeouts). See 8.2.5 for transport layer handling of transport layer errors (e.g., invalid
frame contents).
Link layer errors that occur when transmitting XFER_RDY and DATA frames are processed based on the
values in the TLR CONTROL field in the COMMAND frame header (see 8.2.1) and the TRANSPORT LAYER RETRIES
bit in the Protocol Specific Logical Unit mode page (see 9.2.7.3) of the logical unit that is the source of the
frame.
If transport layer retries are disabled, then the SSP target port:
a) sets the RETRY DATA FRAMES bit to zero in each XFER_RDY frame;
b) may or may not select a different value for the TARGET PORT TRANSFER TAG field in each XFER_RDY
frame than that used in the previous XFER_RDY frame for that I_T_L nexus and command identifier
combination;
c) processes XFER_RDY frame link layer errors as described in 8.2.4.4.3;
d) processes read DATA frame link layer errors as described in 8.2.4.5.3; and
e) processes write DATA frame link layer errors as described in 8.2.4.6.3.
If transport layer retries are enabled, then the SSP target port:
a) sets the RETRY DATA FRAMES bit to one in each XFER_RDY frame;
b) selects a different value for the TARGET PORT TRANSFER TAG field in each XFER_RDY frame than that
used in the previous XFER_RDY frame for that I_T_L nexus and command identifier combination;
c) processes XFER_RDY frame link layer errors as described in 8.2.4.4.2;
d) processes read DATA frame link layer errors as described in 8.2.4.5.2; and
e) processes write DATA frame link layer errors as described in 8.2.4.6.2.
If an SSP initiator port transmits a COMMAND frame and receives a NAK for that frame, then the COMMAND
frame was not received. The SSP initiator port should retransmit, in the same or in a new connection, the
COMMAND frame at least one time (see 8.2.6.2.3.3). The SSP initiator port may reuse the initiator port
transfer tag from the frame for which the NAK was received.
If an SSP initiator port transmits a COMMAND frame and does not receive an ACK or NAK for that frame
(e.g., times out or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
2) to determine whether the command was received, the SCSI application client calls Send Task
Management Request () (see 9.2.2) with:
A) Nexus set to the I_T_L nexus and the command identifier of the COMMAND frame; and
B) Function Identifier set to QUERY TASK;
and
3) the SSP initiator port transmits the TASK frame in a new connection to the SSP target port.
If the command is a write command or a bidirectional command and the SSP initiator port receives an
XFER_RDY frame for the I_T_L nexus and command identifier combination of the command before the
RESPONSE frame for the QUERY TASK, then the COMMAND frame was received and is being processed by
the SSP target port, and the XFER_RDY frame is valid.
If the command is a read command or a bidirectional command and the SSP initiator port receives a read
DATA frame for the I_T_L nexus and command identifier combination of the command before the RESPONSE
frame for the QUERY TASK, then the COMMAND frame was received and is being processed by the SSP
target port, and the read DATA frame is valid.
If the SSP initiator port receives a RESPONSE frame for the I_T_L nexus and command identifier
combination of the command before the RESPONSE frame for the QUERY TASK, then the COMMAND frame
was received by the SSP target port, the RESPONSE frame is valid, and the command processing is
complete. The SSP initiator port may reuse the initiator port transfer tag of the COMMAND frame.
If the SSP initiator port receives a RESPONSE frame for the QUERY TASK with a response code of TASK
MANAGEMENT FUNCTION SUCCEEDED, then the COMMAND frame was received by the SSP target port
(i.e., an ACK was transmitted by the SSP target port for the COMMAND frame) and the command is being
processed.
If the SSP initiator port receives a RESPONSE frame for the QUERY TASK with a response code of TASK
MANAGEMENT FUNCTION COMPLETE, then the COMMAND frame is not being processed. If neither an
XFER_RDY frame, a read DATA frame, nor a RESPONSE frame has been received for the I_T_L nexus and
command identifier combination of the command, then the COMMAND frame was not received. The SSP
initiator port should retransmit the COMMAND frame at least one time. The SSP initiator port may reuse the
initiator port transfer tag of the COMMAND frame.
If an SSP initiator port transmits a TASK frame and receives a NAK for that frame, then the TASK frame was
not received. The SSP initiator port should retransmit, in the same or in a new connection, the TASK frame at
least one time with the RETRANSMIT bit set to one (see 8.2.6.2.2.2). The SSP initiator port may reuse the
initiator port transfer tag from the frame for which the NAK was received.
If an SSP initiator port transmits a TASK frame and does not receive an ACK or NAK for that frame (e.g., an
ACK/NAK timeout occurs or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
2) the SCSI application client calls Send Task Management Request () using the same initiator port
transfer tag (see 9.2.2); and
3) the SSP initiator port transmits the TASK frame with the RETRANSMIT bit set to one in a new connection
to the SSP target port (see 8.2.6.2.2.2).
If the SSP initiator port receives a RESPONSE frame for the TASK frame that arrives before the ACK or NAK
for the TASK frame, then the TASK frame was received by the SSP target port (i.e., an ACK was transmitted
by the SSP target port for the TASK frame), the RESPONSE frame is valid, and the task management function
is complete (see 8.2.6.2.2.3). The initiator port may reuse the initiator port transfer tag of the TASK frame.
If transport layer retries are enabled, then the SSP target port processes link layer errors that occur while
transmitting XFER_RDY frames as described in 8.2.4.4.2.
If transport layer retries are disabled, then the SSP target port processes link layer errors that occur while
transmitting XFER_RDY frames as described in 8.2.4.4.3.
If an SSP target port transmits an XFER_RDY frame and receives a NAK for that frame, then the SSP target
port retransmits, in the same or a new connection, the XFER_RDY frame at least one time with:
a) the TARGET PORT TRANSFER TAG field set to a different value than in the original XFER_RDY frame;
b) the RETRANSMIT bit set to one; and
c) the other fields set to the same values as in the original XFER_RDY frame (see 8.2.6.3.3.3).
If an SSP target port transmits an XFER_RDY frame and does not receive an ACK or NAK for that frame (e.g.,
times out or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
and
2) the SSP target port retransmits, in a new connection, the XFER_RDY frame with:
A) the TARGET PORT TRANSFER TAG field set to a different value than in the original XFER_RDY frame;
B) the RETRANSMIT bit set to one; and
C) the other fields set to the same values as in the original XFER_RDY frame (see 8.2.6.3.3.3).
If an SSP initiator port is processing an XFER_RDY frame for an I_T_L nexus and command identifier
combination (e.g., transmitting write DATA frames for the command) and the SSP initiator port receives a new
XFER_RDY frame for that I_T_L nexus and command identifier combination with the RETRANSMIT bit set to
one in the frame, then the ST_ITS state machine stops processing the original XFER_RDY frame (i.e., stops
transmitting write DATA frames) and starts servicing the new XFER_RDY frame (see 8.2.6.2.3). The ST_ITS
state machine does not transmit any write DATA frames for the original XFER_RDY frame after transmitting a
write DATA frame for the new XFER_RDY frame.
An SSP target port may reuse the value in the TARGET PORT TRANSFER TAG field from an XFER_RDY frame for
an I_T_L nexus and command identifier combination after the SSP target port receives a write DATA frame for
a subsequent XFER_RDY frame for that I_T_L nexus and command identifier combination.
An SSP target port retransmits each XFER_RDY frame that does not receive an ACK or NAK at least one
time.
The number of times an SSP target port retransmits each XFER_RDY frame is vendor specific. When the
SSP target port reaches its vendor specific limit, the SSP target port follows the procedure for transport layer
retries disabled described in 8.2.4.4.3.
If an SSP target port transmits an XFER_RDY frame and receives a NAK for that frame, then:
1) the SCSI device server calls Send Command Complete () to return CHECK CONDITION status for
that command with the sense key set to ABORTED COMMAND and the additional sense code set to
NAK RECEIVED (see 9.2.3); and
2) the SSP target port transmits the RESPONSE frame in the same or a new connection.
If an SSP target port transmits an XFER_RDY frame and does not receive an ACK or NAK for that frame (e.g.,
times out or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
2) the SCSI device server calls Send Command Complete () to return CHECK CONDITION status for
that command with the sense key set to ABORTED COMMAND and the additional sense code set to
ACK/NAK TIMEOUT or CONNECTION LOST (see 9.2.3); and
3) the SSP target port transmits the RESPONSE frame in a new connection.
If an SSP target port transmits a read DATA frame for a command with transport layer retries enabled, then
the SSP target port processes link layer errors that occur while transmitting read DATA frames as described in
8.2.4.5.2.
If an SSP target port transmits a read DATA frame for a command with transport layer retries disabled, then
the SSP target port processes link layer errors that occur while transmitting read DATA frames as described in
8.2.4.5.3.
If an SSP target port transmits a read DATA frame and receives a NAK for that frame, then the read DATA
frame was not received. The SSP target port retransmits, in the same or in a new connection, all the read
DATA frames for that I_T_L nexus and command identifier combination since a previous time when ACK/NAK
balance occurred at least one time (see 8.2.6.3.3.4).
If an SSP target port transmits a read DATA frame and does not receive an ACK or NAK for that frame (e.g.,
an ACK/NAK timeout occurs or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
and
2) the ST_TTS state machine retransmits, in a new connection, all the read DATA frames for that I_T_L
nexus and command identifier combination since a previous time when ACK/NAK balance occurred
at least one time (see 8.2.6.3.3.4).
The CHANGING DATA POINTER bit is set to one in the first retransmitted read DATA frame and the CHANGING DATA
POINTERbit is set to zero in subsequent read DATA frames.
The ST_TTS state machine retransmits each read DATA frame that does not receive an ACK at least one time
(see 8.2.6.3.3).
The number of times an SSP target port retransmits each read DATA frame is vendor specific. When an SSP
target port reaches its vendor specific limit for retransmitting read DATA frames, the SSP target port follows
the procedure for transport layer retries disabled described in 8.2.4.5.3.
If an SSP target port transmits a read DATA frame and receives a NAK for that frame, then:
1) the SCSI device server calls Send Command Complete () to return CHECK CONDITION status for
that command with the sense key set to ABORTED COMMAND and the additional sense code set to
NAK RECEIVED (see 9.2.3); and
2) the SSP target port transmits the RESPONSE frame in the same or a new connection.
If an SSP target port transmits a read DATA frame and does not receive an ACK or NAK for that frame (e.g.,
an ACK/NAK timeout occurs), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
2) the SCSI device server calls Send Command Complete () to return CHECK CONDITION status for
that command with the sense key set to ABORTED COMMAND and the additional sense code set to
ACK/NAK TIMEOUT (see 9.2.3); and
3) the SSP target port transmits the RESPONSE frame in a new connection.
An SSP initiator port processes link layer errors that occur while transmitting write DATA frames transmitted in
response to an XFER_RDY frame that has its RETRY DATA FRAMES bit set to one as described in 8.2.4.6.2.
An SSP initiator port processes link layer errors that occur while transmitting write DATA frames in response to
an XFER_RDY frame that has its RETRY DATA FRAMES bit set to zero as described in 8.2.4.6.3.
If an SSP initiator port transmits a write DATA frame and receives a NAK for that frame, then the write DATA
frame was not received. The SSP_ITS state machine retransmits, in the same or in a new connection, all the
write DATA frames for the previous XFER_RDY frame (see 8.2.6.2.3.3.2).
If an SSP initiator port transmits a write DATA frame and does not receive an ACK or NAK for that frame (e.g.,
an ACK/NAK timeout occurs or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
and
2) the ST_ITS state machine retransmits, in a new connection, all the write DATA frames for the previous
XFER_RDY frame (see 8.2.6.2.3.3.2).
If that SSP initiator port receives a new XFER_RDY frame or a RESPONSE frame for the command while
retransmitting or preparing to retransmit the write DATA frames, then the ST_IFR state machine and ST_ITS
state machine process the XFER_RDY frame or RESPONSE frame and stop retransmitting the write DATA
frames (see 8.2.6.2.2 and 8.2.6.2.3). The ST_ITS state machine does not transmit a write DATA frame for the
previous XFER_RDY frame after transmitting a write DATA frame in response to the new XFER_RDY frame.
The CHANGING DATA POINTER bit is set to one in the first retransmitted write DATA frame and the CHANGING
DATA POINTER bit is set to zero in subsequent write DATA frames.
The ST_ITS state machine retransmits each write DATA frame that does not receive an ACK at least one time
(see 8.2.6.2.3).
The number of times an SSP initiator port retransmits each write DATA frame is vendor specific. When an
SSP initiator port reaches its vendor specific limit for retransmitting write DATA frames, the SSP initiator port
follows the procedure for transport layer retries disabled described in 8.2.4.6.3.
If an SSP initiator port transmits a write DATA frame and does not receive an ACK or NAK for that frame (e.g.,
an ACK/NAK timeout occurs or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
and
2) the SCSI application client aborts the command (see 9.2.2).
If an SSP initiator port transmits a write DATA frame and receives a NAK for that frame, then the SCSI
application client aborts the command (see 9.2.2).
If an SSP target port transmits a RESPONSE frame and receives a NAK for that frame, then the SSP target
port retransmits, in the same or a new connection, the RESPONSE frame at least one time with the
RETRANSMIT bit set to one and with the other fields set to the same values as in the original RESPONSE frame
(see 8.2.6.3.3.3).
If an SSP target port transmits a RESPONSE frame and does not receive an ACK or NAK for that frame (e.g.,
an ACK/NAK timeout occurs or the connection is broken), then:
1) the SSP_TF state machine closes the connection with DONE (ACK/NAK TIMEOUT) (see 6.20.9.6.5);
and
2) the SSP target port retransmits, in a new connection, the RESPONSE frame with:
A) the RETRANSMIT bit set to one; and
B) the other fields set to the same values as in the original RESPONSE frame (see 8.2.6.3.3.3).
The ST_TTS state machine retransmits each RESPONSE frame that does not receive an ACK at least one
time (see 8.2.6.3.3). The number of times an SSP target port retransmits each RESPONSE frame is vendor
specific.
If an SSP initiator port receives a RESPONSE frame with a RETRANSMIT bit set to one and the SSP initiator
port has previously received a RESPONSE frame for the same I_T_L nexus and command identifier
combination, then the ST_IFR state machine discards the extra RESPONSE frame (see 8.2.6.2.2.3). If the
ST_IFR state machine has not previously received a RESPONSE frame for the I_T_L nexus and command
identifier combination, then the state machine processes the RESPONSE frame.
This subclause contains a summary of how SSP ports process transport layer errors. This summary does not
include every error case. See 8.2.4 for transport layer handling of link layer errors (e.g., using transport layer
retries).
If an SSP initiator port receives a COMMAND frame, TASK frame, or an unsupported frame type, then the
ST_IFR state machine discards the frame (see 8.2.6.2.2.3).
If an SSP initiator port receives an XFER_RDY frame, read DATA frame, or RESPONSE frame with an
unknown INITIATOR PORT TRANSFER TAG field value, then the ST_IFR state machine discards the frame (see
8.2.6.2.3.7). The SCSI application client may then abort the command with that initiator port transfer tag.
If an SSP initiator port receives an XFER_RDY frame with a Transfer Ready information unit that is not 12
bytes long, then the ST_IFR state machine discards the frame (see 8.2.6.2.3.7). The SCSI application client
may then abort the command.
If an SSP initiator port receives an XFER_RDY frame in response to a command that does not specify write
data, then the ST_IFR state machine discards the frame (see 8.2.6.2.2.3) and the SCSI application client
aborts the command (see 9.2.2).
If an SSP initiator port receives an XFER_RDY frame requesting more write data than expected, then the
ST_ITS state machine discards the frame (see 8.2.6.2.3.3) and the SCSI application client aborts the
command (see 9.2.2).
If an SSP initiator port receives an XFER_RDY frame requesting zero bytes, then the ST_ITS state machine
discards the frame (see 8.2.6.2.3.3) and the SCSI application client aborts the command (see 9.2.2).
If transport layer retries are disabled and an SSP initiator port receives an XFER_RDY frame with a requested
offset that was not expected, then the ST_ITS state machine discards the frame (see 8.2.6.2.3.3) and the
SCSI application client aborts the command (see 9.2.2).
If an SSP initiator port receives a read DATA frame in response to a command with no read data, then the
ST_IFR state machine discards the frame (see 8.2.6.2.2.3) and the SCSI application client aborts the
command (see 9.2.2).
If an SSP initiator port receives a read DATA frame with more read data than expected, then the ST_ITS state
machine discards the frame (see 8.2.6.2.3.3) and the SCSI application client aborts the command (see 9.2.2).
The SSP initiator port may receive a RESPONSE frame for the command before being able to abort the
command.
If an SSP initiator port receives a read DATA frame with zero bytes, then the ST_ITS state machine discards
the frame (see 8.2.6.2.3.3) and the SCSI application client aborts the command (see 9.2.2). The SSP initiator
port may receive a RESPONSE frame for the command before being able to abort the command.
If transport layer retries are disabled and an SSP initiator port receives a read DATA frame with a data offset
that was not expected, then:
a) the ST_ITS state machine discards that frame and any subsequent read DATA frames received for
that command (see 8.2.6.2.3.7); and
b) the SCSI application client aborts the command (see 9.2.2).
The SSP initiator port may receive a RESPONSE frame for the command before being able to abort the
command.
If an SSP initiator port receives a RESPONSE frame that is not the correct length, then the ST_IFR state
machine considers the command or task management function completed with an error and discards the
frame (see 8.2.6.2.2.3).
If an SSP target port receives an XFER_RDY or RESPONSE frame or another unsupported frame type, then
the ST_TFR state machine discards the frame (see 8.2.6.3.2.2).
If an SSP target port receives a COMMAND frame and:
a) the frame is too short to contain a LOGICAL UNIT NUMBER field;
b) the frame is too short to contain a CDB;
c) the ADDITIONAL CDB LENGTH field specifies that the frame should be a different length; or
d) the TLR CONTROL field is set to a non-zero value and non-zero values are not supported,
then the ST_TTS state machine returns a RESPONSE frame with the DATAPRES field set to
RESPONSE_DATA and the RESPONSE CODE field set to INVALID FRAME (see 8.2.6.3.2.2).
If an SSP target port receives a TASK frame that is too short, then the ST_TTS state machine returns a
RESPONSE frame with the DATAPRES field set to RESPONSE_DATA and the RESPONSE CODE field set to
INVALID FRAME (see 8.2.6.3.2.2).
If an SSP target port receives a COMMAND frame with an initiator port transfer tag that is already in use for
another command and the SSP target port implements initiator port transfer tag checking, then the task router
and task managers return CHECK CONDITION status with the sense key set to ABORTED COMMAND and
the additional sense code set to OVERLAPPED COMMANDS ATTEMPTED (see 9.2.4).
If an SSP target port receives:
a) a COMMAND frame with an initiator port transfer tag that is already in use for a task management
function; or
b) a TASK frame with an initiator port transfer tag that is already in use for a command or another task
management function,
then the task router and task managers return a RESPONSE frame with the RESPONSE CODE field set to
OVERLAPPED INITIATOR PORT TRANSFER TAG ATTEMPTED (see 9.2.4).
If an SSP target port receives a write DATA frame with an unknown initiator port transfer tag, then the ST_TFR
state machine discards the frame (see 8.2.6.3.2).
If an SSP target port receives a write DATA frame that does not contain first burst data and for which there is
no XFER_RDY frame outstanding (i.e., it has received all requested write data), then the ST_TFR state
machine discards the frame (see 8.2.6.3.2.2).
If an SSP target port receives a TASK frame with an unknown logical unit number, then the ST_TFR state
machine returns a RESPONSE frame with the DATAPRES field set to RESPONSE_DATA and the RESPONSE
CODE field set to INCORRECT LOGICAL UNIT NUMBER (see 8.2.6.3.2.2).
If an SSP target port receives a COMMAND frame or TASK frame with a TARGET PORT TRANSFER TAG field set
to a value other than FFFFh, then the ST_TFR state machine may return a RESPONSE frame with the
DATAPRES field set to RESPONSE_DATA and the RESPONSE CODE field set to INVALID FRAME (see
8.2.6.3.2.2).
If an SSP target port is using target port transfer tags and receives a write DATA frame with an unknown target
port transfer tag, then the ST_TFR state machine discards the frame (see 8.2.6.3.3).
If transport layer retries are disabled and an SSP target port receives a write DATA frame with a data offset
that was not expected, then:
a) the ST_TTS state machine discards the frame (see 8.2.6.3.3.6.1); and
b) the SCSI device server terminates the command with CHECK CONDITION status with the sense key
set to ABORTED COMMAND and the additional sense code set to DATA OFFSET ERROR (see
9.2.3).
If an SSP target port receives a write DATA frame with more write data than expected (i.e., the write DATA
frame contains data in excess of that requested by an XFER_RDY frame or, for first burst data, indicated by
the FIRST BURST LENGTH field in the Disconnect-Reconnect mode page), then:
a) the ST_TTS state machine discards the frame (see 8.2.6.3.3.6.1); and
b) the SCSI device server terminates the command with CHECK CONDITION status with the sense key
set to ABORTED COMMAND and the additional sense code set to TOO MUCH WRITE DATA (see
9.2.3).
If an SSP target port receives a write DATA frame with zero bytes, then:
a) the ST_TTS state machine discards the frame (see 8.2.6.3.3.6.1); and
b) the SCSI device server terminates the command with CHECK CONDITION status with the sense key
set to ABORTED COMMAND and the additional sense code set to INFORMATION UNIT TOO
SHORT (see 9.2.3).
NOTE 54 - Although allowed by this standard, the ST state machines do not handle bidirectional commands
that result in concurrent write DATA frames and read DATA frames.
8.2.6.2 ST_I (transport layer for SSP initiator ports) state machines
ST_ITS4:Prepare_Task
Command
Complete
Received
ST_ITS5:Prepare_Data_Out
Received Task
Management Transmission
Function Status
Executed
XFER_RDY Arrived
Transmit
Transmission Complete Frame
Cancel
Transmission
Nexus Loss Status
Frame Received
ACK
Transmitted
Transport Reset
ST_ITS6:Receive_Data_In
Reception Complete
HARD_RESET
Accept_Reject
Received Transmission
OPENs
(to all state Status
machines)
Figure 206 – ST_I (transport layer for SSP initiator ports) state machines
If this state machine receives a Send SCSI Command transport protocol service request, then this state
machine shall send a Request (Send Command) message with Command arguments and Application Client
Buffer arguments to the ST_ITS state machine for the specified initiator port transfer tag.
The following is the list of Command arguments:
a) connection rate;
b) initiator connection tag;
c) Destination SAS Address;
d) Source SAS Address set to the SAS address of the SSP initiator port;
e) initiator port transfer tag;
f) logical unit number;
g) command priority;
h) task attribute;
i) additional CDB length;
j) CDB;
k) additional CDB bytes, if any;
l) first burst enabled; and
m) request fence.
The following is the list of Application Client Buffer arguments:
a) data-in buffer size;
b) data-out buffer; and
c) data-out buffer size.
If the command specifies a write operation and the Send SCSI Command transport service request contains a
First Burst Enabled argument, then the Request (Send Command) message shall also include the Enable
First Burst argument and the number of bytes for the First Burst Size argument.
If this state machine receives a Send Task Management Request transport protocol service request, then this
state machine shall send a Request (Send Task) message with the Task arguments to the ST_ITS state
machine for the specified initiator port transfer tag.
The following is the list of Task arguments:
a) connection rate;
If this state machine receives a Frame Received (ACK/NAK Balanced) confirmation or Frame Received (ACK/
NAK Not Balanced) confirmation, then this state machine shall compare the frame type of the frame received
with the received confirmation (see table 205 in 8.2.1). If the confirmation was Frame Received (ACK/NAK
Balanced) and the frame type is not XFER_RDY, RESPONSE, or DATA, then this state machine shall discard
the frame. If the confirmation was Frame Received (ACK/NAK Not Balanced) and the frame type is not DATA,
then this state machine shall discard the frame.
If the frame type is correct relative to the Frame Received confirmation, then this state machine may check
that the hashed source SAS address matches the SAS address of the SAS port that transmitted the frame
and that the hashed destination SAS address matches the SAS address of the SAS port that received the
frame based on the connection information. If this state machine checks these SAS addresses and they do
not match, then this state machine:
a) shall discard the frame; and
b) may send a vendor specific confirmation to the SCSI application layer to cause the command using
that initiator port transfer tag to be aborted.
If the frame type is XFER_RDY, then this state machine shall check the length of the information unit. If the
length of the information unit is not correct, then this state machine:
a) shall discard the frame; and
b) may send a vendor specific confirmation to the SCSI application layer to cause the command using
that initiator port transfer tag to be aborted.
If the frame type is XFER_RDY and the initiator port transfer tag is for a command with no write data, then this
state machine shall:
a) discard the frame;
b) send a Command Complete Received transport protocol service confirmation with the Service
Response argument set to Service Delivery or Target Failure - XFER_RDY Not Expected to the SCSI
application layer; and
c) if there is an ST_ITS state machine for the initiator port transfer tag, then send a Return To Start
message to that state machine.
If the frame type is DATA and the initiator port transfer tag is for a command with no read data, then this state
machine shall:
a) discard the frame;
b) send a Command Complete Received transport protocol service confirmation with the Service
Response argument set to Service Delivery or Target Failure - DATA Not Expected to the SCSI
application layer; and
c) if there is an ST_ITS state machine for the initiator port transfer tag, then send a Return To Start
message to that state machine.
If the frame type is RESPONSE, then this state machine shall check the length of the information unit. If the
length of the information unit is not correct and the RESPONSE frame was for a command, then this state
shall discard the frame and send a Command Complete Received transport protocol service confirmation to
the SCSI application layer with the Service Response argument set to Service Delivery or Target Failure -
RESPONSE Incorrect Length. If the length of the information unit is not correct and the RESPONSE frame
was for a task management function, then this state machine shall discard the frame and send a Received
Task Management Function Executed transport protocol service confirmation to the SCSI application layer
with the Service Response argument set to Service Delivery or Target Failure - RESPONSE Incorrect Length.
If the frame type is correct relative to the Frame Received confirmation, then this state machine shall check
the initiator port transfer tag. If the initiator port transfer tag does not specify a valid ST_ITS state machine,
then this state machine shall discard the frame and may send a vendor specific confirmation to the SCSI
application layer to cause the command using that initiator port transfer tag to be aborted.
If the frame type is RESPONSE and this state machine has previously received a RESPONSE frame for the
I_T_L nexus and command identifier combination, then this state machine shall discard the frame.
If the frame type is RESPONSE, the fields checked in the frame are correct, and this state machine has not
previously received a RESPONSE frame for this I_T_L nexus and command identifier combination, then this
state machine shall send a Return To Start message to the ST_ITS state machine for the specified initiator
port transfer tag and:
a) if the RESPONSE frame was for a command, then this state machine shall send a Command
Complete Received transport protocol service confirmation to the SCSI application layer with the
arguments set as specified in table 243; or
b) if the RESPONSE frame was for a task management request, then this state machine shall send a
Received Task Management Function Executed transport protocol service confirmation to the SCSI
application layer with the arguments set as specified in table 253.
If the frame type is XFER_RDY and the fields checked in the frame are correct, then this state machine shall
wait to receive an ACK Transmitted confirmation.
If this state machine receives an ACK Transmitted confirmation for an XFER_RDY frame, then it shall send an
XFER_RDY Arrived message to the ST_ITS state machine specified by the initiator port transfer tag. The
message shall include the following Xfer_Rdy arguments:
a) retry data frames;
b) retransmit bit;
c) target port transfer tag;
d) requested offset; and
e) write data length.
If the frame type is DATA and the fields checked in the frame are correct, then this state machine shall send a
Data-In Arrived message to the ST_ITS state machine specified by the initiator port transfer tag. The message
shall include the following Read Data arguments:
a) changing data pointer;
b) number of fill bytes;
c) data offset; and
d) data.
If this state machine receives a Transmission Complete (I_T Nexus Loss) message, then this state machine
shall send a Nexus Loss event notification to the SCSI application layer.
Table 218 defines the transport protocol service confirmation and Delivery Result argument generated as a
result of receiving a Transmission Complete message or a Reception Complete message indicating that an
error occurred during the transmission or reception of a frame.
Table 218 – Confirmations sent to the SCSI application layer if a frame transmission error
or reception error occurs
Message received from ST_ITS state Transport protocol service confirmation and Delivery
machine Result argument sent to the SCSI application layer
Transmission Complete Command Complete Received (Service Delivery or Target
(Command Failed, ACK/NAK Timeout) Failure - ACK/NAK Timeout)
Transmission Complete Command Complete Received (Service Delivery or Target
(Command Failed, Connection Failed) Failure - Connection Failed)
Transmission Complete Command Complete Received (Service Delivery or Target
(Command Failed, NAK Received) Failure - NAK Received)
Transmission Complete Received Task Management Function Executed (Service
(Task Failed, ACK/NAK Timeout) Delivery or Target Failure - ACK/NAK Timeout)
Transmission Complete Received Task Management Function Executed (Service
(Task Failed, Connection Failed) Delivery or Target Failure - Connection Failed)
Transmission Complete Received Task Management Function Executed (Service
(Task Failed, NAK Received) Delivery or Target Failure - NAK Received)
Transmission Complete Command Complete Received (Service Delivery or Target
(XFER_RDY Incorrect Write Data Length) Failure - XFER_RDY Incorrect Write Data Length)
Transmission Complete Command Complete Received (Service Delivery or Target
(XFER_RDY Requested Offset Error) Failure - XFER_RDY Requested Offset Error)
Transmission Complete Command Complete Received (Service Delivery or Target
(Cancel Acknowledged) Failure - Cancel Acknowledged)
Reception Complete Command Complete Received (Service Delivery or Target
(Command Failed, ACK/NAK Timeout) Failure - ACK/NAK Timeout)
Reception Complete Command Complete Received (Service Delivery or Target
(Data Offset Error) Failure - DATA Data Offset Error)
Reception Complete Command Complete Received (Service Delivery or Target
(Too Much Read Data) Failure - DATA Too Much Read Data)
Reception Complete Command Complete Received (Service Delivery or Target
(Incorrect Data Length) Failure - DATA Incorrect Data Length)
Reception Complete Command Complete Received (Service Delivery or Target
(Cancel Acknowledged) Failure - Cancel Acknowledged)
The transport protocol service confirmation shall include the initiator port transfer tag as an argument.
If this state machine receives an Accept_Reject OPENs (Accept SSP) request or an Accept_Reject OPENs
(Reject SSP) request, then this state machine shall send an Accept_Reject OPENs request with the same
arguments to the port layer.
If this state machine receives a HARD_RESET Received confirmation, then this state machine shall send a
Transport Reset event notification to the SCSI application layer.
If this state machine receives a No Phys In Port confirmation, then this state machine shall send a Command
Complete Received (Service Delivery or Target Failure - Connection Failed) or Received Task Management
Function Executed (Service Delivery or Target Failure - Connection Failed) confirmation to the SCSI
application layer for each ST_ITS state machine that is not in the ST_ITS1:Initiator_Start state.
This state machine may receive vendor specific requests from the SCSI application layer that cause this state
machine to send a Cancel message to an ST_ITS state machine.
Current offset in the application client’s data-in buffer (i.e., the application
Data-In Buffer Offset
client buffer for read data)
Current offset in the application client’s data-out buffer (i.e., the application
Data-Out Buffer Offset
client buffer for write data)
Offset in the application client’s data-out buffer (i.e., the application client
Previous Requested Offset
buffer for write data) from the last XFER_RDY frame received
Previous Write Data Length Write data length from the last XFER_RDY frame received
This state machine shall maintain the state machine arguments defined in table 220.
This transition shall occur after receiving a Request (Send Command) message.
This transition shall occur after receiving a Request (Send Task) message.
If this state is entered from the ST_ITS3:Prepare_Command state for transmission of a COMMAND frame,
then this state shall send a Transmit Frame (Interlocked) request to the port layer.
If this state is entered from the ST_ITS6:Receive_Data_In state and the vendor specific number of retries has
not been reached for the COMMAND frame requesting a read operation, then this state shall send a Transmit
Frame (Interlocked) request to the port layer.
If this state is entered from the ST_ITS4:Prepare_Task state for transmission of a TASK frame, then this state
shall send a Transmit Frame (Interlocked) request to the port layer.
If this state is entered from the ST_ITS5:Prepare_Data_Out state for transmission of a write DATA frame, then
this state shall send a Transmit Frame (Non-Interlocked) request to the port layer after this state has received
an XFER_RDY Arrived message.
If this state is entered from the ST_ITS5:Prepare_Data_Out state for transmission of a write DATA frame and
first burst is enabled, then this state shall send a Transmit Frame (Non-Interlocked) request to the port layer
after this state has received a Transmission Status (Frame Transmitted) confirmation and a Transmission
Status (ACK Received) confirmation for the COMMAND frame.
A Transmit Frame request shall include the COMMAND frame from the ST_ITS3:Prepare_Command state or
from the ST_ITS6:Receive_Data_In state, the TASK frame from the ST_ITS4:Prepare_Task state, or the write
DATA frame from the ST_ITS5:Prepare_Data_Out state and the following arguments to be used for any
OPEN address frame:
a) Initiator Port Bit set to one;
b) Protocol set to SSP;
c) Connection Rate;
d) Initiator Connection Tag;
e) Destination SAS Address; and
f) Source SAS Address.
If persistent connections are supported (see 4.1.13.2), then the Transmit Frame request shall include the
following additional argument to be used for any OPEN address frame:
a) Send Extend Bit.
If credit advance is implemented (see 4.1.14), then the Transmit Frame request shall include the following
additional argument to be used for an OPEN address frame:
a) Credit Advance Bit.
After sending a Transmit Frame request this state shall wait to receive a Transmission Status confirmation.
If the confirmation is Transmission Status (I_T Nexus Loss), then this state shall send a Transmission
Complete (I_T Nexus Loss) message to the ST_IFR state machine. This Transmission Complete message
shall include the initiator port transfer tag as an argument.
If the confirmation is not Transmission Status (Frame Transmitted) or Transmission Status (I_T Nexus Loss)
(see table 201), and the Transmit Frame request was for a COMMAND frame or a DATA frame, then this state
shall send a Transmission Complete (Command Failed, Connection Failed) message to the ST_IFR state
machine. The message shall include the initiator port transfer tag.
If the confirmation is not Transmission Status (Frame Transmitted) or Transmission Status (I_T Nexus Loss)
(see table 201), and the Transmit Frame request was for a TASK frame, then this state shall send a
Transmission Complete (Task Failed, Connection Failed) message to the ST_IFR state machine. The
message shall include the initiator port transfer tag.
If the confirmation is Transmission Status (Frame Transmitted) and:
a) the Transmit Frame request was for a COMMAND frame not requesting a read operation;
b) a COMMAND frame not requesting a write operation;
c) a TASK frame; or
d) a write DATA frame where the number of data bytes that have been transmitted equal the Data-Out
Buffer Size state machine argument,
then this state shall wait to receive one of the following confirmations:
a) Transmission Status (ACK Received);
b) Transmission Status (NAK Received);
c) Transmission Status (ACK/NAK Timeout); or
d) Transmission Status (Connection Lost Without ACK/NAK).
If the confirmation is Transmission Status (Frame Transmitted) and the Transmit Frame request was for a
COMMAND frame requesting a write operation, or a write DATA frame where the number of data bytes that
have been transmitted is less than the Data-Out Buffer Size state machine argument and the write data length
from the previous XFER_RDY frame, then this state shall wait to receive one of the following:
a) a Transmission Status (ACK Received) confirmation;
b) a Transmission Status (NAK Received) confirmation;
c) a Transmission Status (ACK/NAK Timeout) confirmation;
d) a Transmission Status (Connection Lost Without ACK/NAK) confirmation; or
e) an XFER_RDY Arrived message.
If an XFER_RDY Arrived message is received, then the ST_ITS shall respond to the XFER_RDY frame as if a
Transmission Status (ACK Received) confirmation was received.
If the number of data bytes requested to be transmitted for the Send SCSI Command transport protocol
service request are fewer than the number of bytes in the service request, then this state may send additional
Transmit Frame requests for write DATA frames for the transport protocol service request before receiving a
Transmission Status (ACK Received), Transmission Status (NAK Received), Transmission Status (ACK/NAK
Timeout), or Transmission Status (Connection Lost Without ACK/NAK) confirmation for Transmit Frame
requests for previous write DATA frames sent for the I_T_L nexus and command identifier combination.
After a Transmission Status (Frame Transmitted) confirmation is received, if a Transmission Status (NAK
Received) confirmation is received, the Transmit Frame request was for a COMMAND frame, and the vendor
specific number of retries has not been reached, then this state shall send a Transmit Frame (Interlocked)
request to the port layer (i.e., the last COMMAND frame is retransmitted).
After a Transmission Status (Frame Transmitted) confirmation is received, if a Transmission Status (NAK
Received) confirmation is received, the Transmit Frame request was for a TASK frame, and the vendor
specific number of retries has not been reached, then this state shall send a Transmit Frame (Interlocked)
request to the port layer (i.e., the last TASK frame is retransmitted).
Table 221 defines the messages that this state shall send to the ST_IFR state machine upon receipt of the
listed confirmations, based on the conditions under which each confirmation was received.
Confirmation received
Conditions under which confirmation was Message sent to the
from
received ST_IFR state machine
the port layer
Transmission Complete
Transmission Status (ACK/ The Transmit Frame request was for a COMMAND (Command Failed, ACK/
NAK Timeout) or frame.
NAK Timeout)
Transmission Status
(Connection Lost Without Transmission Complete
ACK/NAK) The Transmit Frame request was for a TASK frame. (Task Failed, ACK/NAK
Timeout)
The Transmit Frame request was for a COMMAND Transmission Complete
frame and the vendor specific number of retries has (Command Failed, NAK
Transmission Status (NAK been reached. Received)
Received) The Transmit Frame request was for a TASK frame Transmission Complete
and the vendor specific number of retries has been (Task Failed, NAK
reached. Received)
Transmission Complete
Transmission Status (NAK The Transmit Frame request was for a write DATA
frame and: (Data-Out Failed, NAK
Received)
a) the RETRY DATA FRAMES bit was set to zero in Received)
Transmission Status (ACK/ the XFER_RDY frame requesting the data; or
NAK Timeout) or b) the RETRY DATA FRAMES bit was set to one in Transmission Complete
Transmission Status the XFER_RDY frame requesting the data and (Data-Out Failed, ACK/NAK
(Connection Lost Without the vendor specific number of retries has been Timeout)
ACK/NAK) reached.
After this state sends a Transmission Complete (Command Failed, ACK/NAK Timeout) message this state
shall continue processing messages and confirmations.
If this state receives a Return to Start message or a Return to Start argument, and this state has not received
confirmations for all Transmit Frame requests sent to the port layer, then this state shall send a Cancel
request to the port layer. This state may also send a Cancel request to the port layer to cancel a previous
Transmit Frame request.
If this state receives a Cancel message or a Cancel argument, and this state has received confirmations for all
Transmit Frame requests sent to the port layer, then this state shall send a Transmission Complete (Cancel
Acknowledged) message to the ST_IFR state machine.
If this state receives a Cancel message or a Cancel argument, and this state has not received confirmations
for all Transmit Frame requests sent to the port layer, then this state shall send a Cancel request to the port
layer. This state may also send a Cancel request to the port layer to cancel a previous Transmit Frame
request. The Cancel request shall include the following arguments:
a) Destination SAS Address; and
b) Initiator Port Transfer Tag.
NOTE 55 - The Cancel message results from a vendor specific request from the SCSI application layer after
the SCSI application layer has used a task management function to determine that the SSP target port did not
receive the COMMAND frame.
If this state receives a Transmission Status (Cancel Acknowledged) confirmation, then this state shall send a
Transmission Complete (Cancel Acknowledged) message to the ST_IFR state machine.
If this state receives an XFER_RDY Arrived message, then this state shall verify the Xfer_Rdy state machine
argument as specified in table 222. If the verification fails, then this state shall send the Transmission
Complete message specified in table 222 to the ST_IFR state machine.
Table 222 – Transmission Complete messages for XFER_RDY frame verification failures
If first burst is enabled, then this transition shall occur and include the First Burst argument after receiving a
Transmission Status (Frame Transmitted) confirmation:
a) followed by a Transmission Status (ACK Received) confirmation for a COMMAND frame requesting a
write operation; or
b) for a Transmit Frame (Non-interlocked) request if the Data-Out Buffer Offset state machine variable is
less than the first burst size.
This transition shall occur after receiving:
a) an XFER_RDY Arrived message; or
b) a Transmission Status (Frame Transmitted) confirmation for a Transmit Frame (Non-interlocked)
request if the Data-Out Buffer Offset state machine variable is less than the Requested Offset
Xfer_Rdy state machine argument plus the Write Data Length Xfer_Rdy state machine argument.
NOTE 56 - This transition occurs even if this state has not received a Transmission Status (ACK Received)
confirmation for the write DATA frame.
NOTE 57 - This transition occurs even if this state has not received a Transmission Status (ACK Received)
for the COMMAND frame.
This state shall construct a COMMAND frame using the Command arguments:
a) set the FRAME TYPE field to 06h (i.e., COMMAND frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Destination SAS Address
Commands argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP initiator port’s SAS address;
d) set the RETRY DATA FRAMES bit to zero;
e) set the RETRANSMIT bit to zero;
f) set the CHANGING DATA POINTER bit to zero;
g) set the NUMBER OF FILL BYTES field to 00b;
h) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Command argument;
i) TARGET PORT TRANSFER TAG field to FFFFh;
j) set the DATA OFFSET field to 00000000h;
k) in the information unit, set the LOGICAL UNIT NUMBER field to the Logical Unit Number Command
argument;
l) in the information unit, set the ENABLE FIRST BURST bit to the Enable First Burst Command argument;
m) in the information unit, set the COMMAND PRIORITY field to the Command Priority Command argument;
n) in the information unit, set the TASK ATTRIBUTE field to the Task Attribute Command argument;
o) in the information unit, set the ADDITIONAL CDB LENGTH field to the Additional CDB Length Command
argument;
p) in the information unit, set the CDB field to the CDB Command argument;
q) in the information unit, set the ADDITIONAL CDB BYTES field to the Additional CDB Bytes Command
argument, if any; and
r) no fill bytes.
This state shall construct a TASK frame using the Task arguments:
a) set the FRAME TYPE field to 16h (i.e., TASK frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Destination SAS Address
Task argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP initiator port’s SAS address;
d) set the RETRY DATA FRAMES bit to zero;
e) set the RETRANSMIT bit to the Retransmit Bit Task argument;
f) set the CHANGING DATA POINTER bit to zero;
g) set the NUMBER OF FILL BYTES field to 00b;
h) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Task argument;
This state shall construct a write DATA frame using the following Xfer_Rdy state machine arguments and
Command state machine arguments:
a) set the FRAME TYPE field to 01h (i.e., DATA frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Destination SAS Address
Command argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP initiator port’s SAS address;
d) set the RETRY DATA FRAMES bit to zero;
e) set the RETRANSMIT bit to zero;
f) set the CHANGING DATA POINTER bit as specified in this subclause;
g) set the NUMBER OF FILL BYTES field to the number of fill bytes, based on the length of the specified
data;
h) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Command argument;
i) set the TARGET PORT TRANSFER TAG field to FFFFh if this state received a First Burst argument or the
Target Port Transfer Tag Xfer_Rdy argument if this state did not receive a First Burst argument;
j) set the DATA OFFSET field to the Data-Out Buffer Offset state machine variable;
k) in the information unit, set the DATA field to the information that starts at the location in the Data-Out
Buffer state machine argument pointed to by the Data-Out Buffer Offset state machine variable. If the
number of bytes remaining to be transferred as defined by the following calculation:
bytes remaining to be transferred = Write Data Length Xfer_Rdy state machine argument - (Data-Out
Buffer Offset state machine argument - Requested Offset Xfer_Rdy state machine argument)
is equal to the maximum size of the write Data information unit, then the amount of data shall be the
maximum size of the write Data information unit, otherwise, the amount of data shall be the lesser of:
A) the bytes remaining to be transferred; and
B) the maximum size of the Write information unit;
and
l) fill bytes, if any.
If this state is entered without a Retry argument, then this state shall set the CHANGING DATA POINTER bit to
zero.
If this state is entered with a Retry argument, then this state shall set the CHANGING DATA POINTER bit to one.
After constructing the write DATA frame, this state shall set the Data-Out Buffer Offset state machine variable
to the value of the DATA OFFSET field plus the number of bytes in the DATA field in the write Data information
unit.
If this state receives a Data-In Arrived message, then this state shall verify the values in the read DATA frame
received with the message as defined in table 223.
If the verification fails, then this state sends the Reception Complete message specified in table 223 to the
ST_IFR state machine.
Table 223 – Reception Complete messages for read DATA frame verification failures
If:
a) transport layer retries are enabled;
b) the CHANGING DATA POINTER bit is set to zero;
c) the DATA OFFSET field is not set to the Data-In Buffer Offset state machine variable;
d) the DATA OFFSET field is less than the Data-In Buffer Size state machine argument; and
e) the DATA OFFSET field plus the number of bytes in the DATA field in the read Data information unit is
less than or equal to the Data-In Buffer Size state machine argument,
then this state should discard all Data-In Arrived messages until a read DATA frame is received in which the
CHANGING DATA POINTER bit is set to one. This state shall resume processing additional Data-In Arrived
messages when it receives a Data-In Arrived message with the CHANGING DATA POINTER bit set to one.
If the read DATA frame verification is successful or after this state resumes processing Data-In Arrived
messages, then this state shall process the data received in the read DATA frame and set the Data-In Buffer
Offset state machine variable to the DATA OFFSET field plus the number of bytes in the DATA field in the read
Data information unit.
If data received in the read DATA frame overlaps data previously received and verified as having no errors,
then this state may either discard the overlapping data or replace the previously received data with the new
data.
If this state receives a Transmission Status (ACK/NAK Timeout) confirmation or a Transmission Status
(Connection Lost Without ACK/NAK) confirmation, then this state shall send a Reception Complete
(Command Failed, ACK/NAK Timeout) message to the ST_IFR state machine.
After this state sends a Reception Complete (Command Failed, ACK/NAK Timeout) message, this state shall
continue processing messages and confirmations.
If this state receives a Cancel message, then this state shall send a Reception Complete (Cancel
Acknowledged) message to the ST_IFR state machine. The Reception Complete message shall include the
initiator port transfer tag as an argument.
NOTE 58 - The Cancel message results from a vendor specific request from the SCSI application layer after
the SCSI application layer has used a task management function to determine that the SSP target port did not
receive the COMMAND frame.
8.2.6.3 ST_T (transport layer for SSP target ports) state machines
Cancel
Transmission
Data-Out Status
Notify Received
Received
Data-In ST_TTS4:Prepare_
Frame Received Delivered Xfer_Rdy Transmit
ACK Data Transfer
Frame
Transmitted Terminated
SCSI Command
Received Cancel
Transmission
Task Management
Status
Request Received
Transmission Complete
ST_TTS5:Receive_
Data_Out
No Phys In
Port Nexus
(to all state Loss
machines) Transmission
Transport
Status
Reset
Figure 207 – ST_T (transport layer for SSP target ports) state machines
If this state machine receives a Frame Received (ACK/NAK Balanced) or Frame Received (ACK/NAK Not
Balanced) confirmation, then this state machine shall check the frame type in the received frame (see table
205 in 8.2.1). If the frame type is not COMMAND, TASK, or DATA, then this state machine shall discard the
frame. If the confirmation was Frame Received (ACK/NAK Not Balanced) and the frame type is not DATA,
then this state machine shall discard the frame.
This state machine may check that reserved fields in the received frame are zero. If non-zero values are not
supported in the TLR CONTROL field in a COMMAND frame, then the TLR CONTROL field shall be treated as a
reserved field. If any reserved fields are checked and they are not set to zero, then this state machine shall
send the following to an ST_TTS state machine that does not have an active command or task management
function and discard the frame:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Destination SAS Address argument set to the SAS address from which the invalid frame was
received; and
c) the Service Response argument set to Invalid Frame.
The check of reserved fields within the frame shall not apply to the reserved fields within the CDB in a
COMMAND frame. Checking of reserved fields in a CDB is described in SPC-6.
The following is the list of Transport Response arguments:
a) Connection Rate;
b) Initiator Connection Tag;
c) Destination SAS Address (i.e., the SAS address to which the RESPONSE frame is to be transmitted);
d) Source SAS Address set to the SAS address of the SAS port containing the state machine;
e) Initiator Port Transfer Tag; and
f) Service Response.
The Response Fence argument is not included in the Transport Response arguments.
If the frame type is correct relative to the Frame Received confirmation, then this state machine may check
that the hashed source SAS address matches the SAS address of the SAS port that transmitted the frame
and that the hashed destination SAS address matches the SAS address of the SAS port that received the
frame based on the connection information. If this state machine checks these SAS addresses and they do
not match, then this state machine shall discard the frame.
If the frame type is COMMAND or TASK, then this state machine shall check the length of the information unit.
If the length of the information unit is not correct, then this state machine shall send the following to an
ST_TTS state machine that does not have an active command or task management function and discard the
frame:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Destination SAS Address argument set to the SAS address from which the invalid frame was
received; and
c) the Service Response argument set to Invalid Frame.
If the frame type is TASK, this state machine checks initiator port transfer tags, the RETRANSMIT bit is set to one
in the new TASK frame, and the initiator port transfer tag for the new TASK frame is the same as the initiator
port transfer tag for a previous TASK frame where the task management function for the previous TASK frame
is not complete, then this state machine shall discard the new TASK frame and not send a Task Management
Request Received confirmation to the SCSI application layer.
If the frame type is TASK and this state machine does not check initiator port transfer tags, then this state
machine shall ignore the RETRANSMIT bit.
If the frame type is COMMAND or TASK, then this state machine may check the target port transfer tag. If this
state checks the target port transfer tag and it is set to a value other than FFFFh, then this state machine shall
send the following to an ST_TTS state machine that does not have an active command or task management
function and discard the frame:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Destination SAS Address argument set to the SAS address from which the invalid frame was
received; and
c) the Service Response argument set to Invalid Frame.
If the frame type is TASK, then this state machine shall check the logical unit number. If the logical unit
number is unknown, then this state machine shall send the following to an ST_TTS state machine that does
not have an active command or task management function and discard the frame:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Destination SAS Address argument set to the SAS address from which the invalid frame was
received; and
c) the Service Response argument set to Incorrect Logical Unit Number.
If:
a) the frame type is DATA and this frame is for first burst data; or
b) this state machine did not assign a target port transfer tag for the data transfer,
then this state machine may check the target port transfer tag. If the target port transfer tag is set to a value
other than FFFFh, then this state machine shall send the following to an ST_TTS state machine that does not
have an active command or task management function and discard the frame:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Destination SAS Address argument set to the SAS address from which the invalid frame was
received; and
c) the Service Response argument set to Invalid Frame.
If the frame type is COMMAND or TASK and the fields checked in the frame are correct, then this state
machine shall wait to receive an ACK Transmitted confirmation.
If the frame type is COMMAND, the fields checked in the frame are correct, and this state machine receives
an ACK Transmitted confirmation, then this state machine shall send a SCSI Command Received transport
protocol service indication with the following arguments to the SCSI application layer:
a) Source SAS Address (i.e., the SAS address that transmitted the COMMAND frame);
b) Initiator Port Transfer Tag;
c) Logical Unit Number;
d) Task Attribute;
e) Command Priority;
f) CDB; and
g) Additional CDB Bytes, if any.
If the frame type is TASK, the fields checked in the frame are correct, and this state machine receives an ACK
Transmitted confirmation, then this state machine shall send a Task Management Request Received transport
protocol service indication with the following arguments to the SCSI application layer:
a) Source SAS Address (i.e., the SAS address that transmitted the TASK frame);
b) Initiator Port Transfer Tag;
c) Logical Unit Number;
d) Task Management Function; and
e) Initiator Port Transfer Tag To Manage.
If the frame type is DATA and the initiator port transfer tag does not match an initiator port transfer tag for an
outstanding command performing write operations, then this state machine shall discard the frame.
If the frame type is DATA and the initiator port transfer tag matches an initiator port transfer tag for an
outstanding command performing write operations when first burst is disabled or for which no Transmission
Complete (Xfer_Rdy Delivered) message has been received from an ST_TTS state machine, then this state
machine shall discard the frame.
If the frame type is DATA and a target port transfer tag was received in a Transmission Complete (Xfer_Rdy
Delivered) message, then this state machine shall check the target port transfer tag. If the target port transfer
tag received in the DATA frame does not match the Target Port Transfer Tag argument in the Transmission
Complete (Xfer_Rdy Delivered) message, then this state machine shall discard the frame.
If the frame type is DATA, the fields checked in the frame are correct, and first burst is enabled or this state
machine has received a Transmission Complete (Xfer_Rdy Delivered) from the ST_TTS state machine for the
request, then this state machine shall send a Data-Out Arrived message to the ST_TTS state machine
specified by the initiator port transfer tag in the frame. The message shall include the content of the write
DATA frame.
If this state machine receives a Send Data-In transport protocol service request from the SCSI application
layer, then this state machine shall send a Request (Send Data-In) message to an ST_TTS state machine that
does not have an active command or task management function. The message shall include the following
Data-In arguments:
a) Connection Rate;
b) Initiator Connection Tag;
c) Destination SAS Address (i.e., the SAS address to which the read DATA frame is to be transmitted);
d) Source SAS Address set to the SAS address of the SSP target port;
e) Initiator Port Transfer Tag;
f) Device Server Buffer;
g) Request Byte Count; and
h) Application Client Buffer Offset.
If this state machine receives a Receive Data-Out transport protocol service request from the SCSI application
layer, then this state machine shall send a Request (Receive Data-Out) message to an ST_TTS state
machine that does not have an active command or task management function. The message shall include the
following Data-Out state machine arguments:
a) Connection Rate;
b) Initiator Connection Tag;
c) Destination SAS Address (i.e., the SAS address to which the XFER_RDY frame is to be transmitted);
d) Source SAS Address set to the SAS address of the SSP target port;
e) Initiator Port Transfer Tag;
f) Device Server Buffer;
g) Request Byte Count;
h) Application Client Buffer Offset; and
i) Target Port Transfer Tag.
If first burst is enabled, then the Request (Receive Data_Out) message shall also include the Enable First
Burst argument and First Burst Size argument. The First Burst Size argument shall be set to the first burst size
from the Disconnect-Reconnect mode page (see 9.2.7.2.5).
If this state machine receives a Send Command Complete transport protocol service response from the SCSI
application layer with the Service Response argument set to TASK COMPLETE, then this state machine shall
send a Request (Send Application Response) message to the ST_TTS state machine specified by the initiator
port transfer tag. The message shall include the following Application Response arguments:
a) Connection Rate;
b) Initiator Connection Tag;
c) Destination SAS Address (i.e., the SAS address to which the RESPONSE frame is to be transmitted);
d) Source SAS Address set to the SAS address of the SSP target port;
e) Initiator Port Transfer Tag;
f) Status;
g) Status Qualifier, if any;
h) Sense Data, if any; and
i) Response Fence.
If this state machine receives a Task Management Function Executed transport protocol service response
from the SCSI application layer, then this state machine shall send the following to the ST_TTS state machine
specified by the initiator port transfer tag:
a) a Request (Send Transport Response) message with the Transport Response arguments;
b) the Service Response argument set as specified in table 225; and
c) the Response Fence argument set to the Task Management Function Executed transport protocol
service response Response Fence argument.
Table 225 specifies which argument to send with the Request (Send Transport Response) message based on
the Service Response argument that was received.
Table 225 – Task Management Function Executed Service Response argument mapping to
Request (Send Transport Response) Service Response argument
If this state machine receives a Terminate Data Transfer transport protocol service request from the SCSI
application layer and this state machine has not sent a Request message to an ST_TTS state machine for the
Send Data-In or Receive Data-Out transport protocol service request to which the Terminate Data Transfer
request applies, then this state machine shall:
1) discard the Terminate Data Transfer transport protocol service request and any corresponding Send
Data-In or Receive Data-Out transport protocol service request; and
2) send a Data Transfer Terminated transport protocol service confirmation to the SCSI application layer.
If this state machine receives a Terminate Data Transfer transport protocol service request from the SCSI
application layer and this state machine has sent a Request message to an ST_TTS state machine for the
Send Data-In transport protocol service request to which the Terminate Data Transfer request applies, then
this state machine shall send a Cancel message to the ST_TTS state machine specified by the initiator port
transfer tag and the Send Data-In transport protocol service request.
If this state machine receives a Terminate Data Transfer transport protocol service request from the SCSI
application layer and this state machine has sent a Request message to an ST_TTS state machine for the
Receive Data-Out transport protocol service request to which the Terminate Data Transfer request applies,
then this state machine shall send a Cancel message to the ST_TTS state machine specified by the initiator
port transfer tag and the Receive Data-Out transport protocol service request.
This state machine receives Transmission Complete messages and Reception Complete messages that may
result in this state machine sending a Nexus Loss event notification or a transport protocol service
confirmation to the SCSI application layer.
If this state machine receives:
a) a Transmission Complete (I_T Nexus Loss) message, then this state machine shall send a Nexus
Loss event notification to the SCSI application layer; or
b) a Transmission Complete (Break Occurred) message or a Reception Complete (Break Occurred)
message, then this state machine shall send a Break Occurred event notification to the SCSI
application layer.
Table 226 defines messages received from ST_TTS state machines and the corresponding transport protocol
service confirmations, if any, that shall be sent upon receipt of the message.
Each transport protocol service confirmation shall include the following arguments:
a) the initiator port transfer tag; and
a) the I_T nexus or I_T_L nexus identifying the scope of the data transfer.
If this state machine receives an Accept_Reject OPENs (Accept SSP) request or an Accept_Reject OPENs
(Reject SSP) request, then this state machine shall send an Accept_Reject OPENs request with the same
arguments to the port layer.
If this state machine receives a HARD_RESET Received confirmation, then this state shall send a Transport
Reset event notification to the SCSI application layer.
If this state machine receives a No Phys In Port confirmation, then this state shall send a Nexus Loss event
notification to the SCSI application layer.
The state machine shall maintain the state machine variables defined in table 227.
Offset into the application client’s data-in buffer (i.e., the application client
Read Data Offset
buffer for read data)
Offset into the application client’s data-in buffer (i.e., the application client
buffer for read data) of last point at which the number of Transmission
Balance Point Read Data Offset
Status (ACK Received) confirmations or arguments was equal to the
number of transmitted read DATA frames
The number of Transmission Status (Frame Transmitted) confirmations
Read Data Frames Transmitted
received for read DATA frames
The number of Transmission Status (ACK Received) confirmations
Read Data Frames ACKed
received for read DATA frames
One greater than the offset into the application client’s data-in buffer (i.e.,
Read Data Buffer End the application client buffer for read data) of the last location into which
read data is to be placed
SCSI device server requested offset in the application client buffer for
Requested Write Data Offset
write data
Amount of write data requested by the SCSI device server from the
Requested Write Data Length
application client buffer
Offset into the application client’s data-out buffer (i.e., the application
Write Data Offset
client buffer containing write data)
This state machine shall maintain the state machine arguments defined in table 228.
The Data-In arguments received in the Request (Send Data-In) message (see
Data-In
8.2.6.3.2.3)
The Data-Out arguments received in the Request (Receive Data-Out) message
Data-Out
(see 8.2.6.3.2.3)
d) set the Read Data Frames ACKed state machine variable to zero;
e) set the Read Data Buffer End state machine variable to the Application Client Buffer Offset Data-In
state machine argument plus the Request Byte Count Data-In state machine argument; and
f) set the Requested Write Data Offset state machine variable to the Application Client Buffer Offset
Data-Out state machine argument.
If this state was entered without an Enable First Burst Data-Out state machine argument, then the Requested
Write Data Length state machine variable shall be set to the Request Byte Count Data-Out state machine
argument.
If this state was entered with an Enable First Burst Data-Out state machine argument, then the Requested
Write Data Length state machine variable shall be set to the First Burst Size Data-Out state machine
argument.
If this state was entered without an Enable First Burst Data-Out state machine argument, then this transition
shall occur:
a) after a Request (Receive Data-Out) message is received.
If this state was entered with an Enable First Burst Data-Out state machine argument, then this transition shall
occur:
a) after a Request (Receive Data-Out) message is received.
If this state is entered from the ST_TTS3:Prepare_Data_In state for transmission of a read DATA frame, then
this state shall send a Transmit Frame (Non-Interlocked) request to the port layer.
If this state is entered from the ST_TTS4:Prepare_Xfer_Rdy state for transmission of an XFER_RDY frame,
then this state shall send a Transmit Frame (Interlocked) request to the port layer.
If this state is entered from the ST_TTS6:Prepare_Response state for transmission of a RESPONSE frame,
then this state shall send a Transmit Frame (Interlocked) request to the port layer.
All Transmit Frame requests from this state shall include the read DATA frame from the
ST_TTS3:Prepare_Data_In state, the XFER_RDY frame from the ST_TTS4:Prepare_Xfer_Rdy state, or the
RESPONSE frame from the ST_TTS6:Prepare_Response state and the following arguments to be used for
any OPEN address frame:
a) Initiator Port Bit set to zero;
NOTE 59 - If the number of data bytes that have been transmitted for a Request (Send Data-In) message are
fewer than the Request Byte Count Data-In state machine argument, then this state transitions to the
ST_TTS3:Prepare_Data_In state to construct the additional read DATA frames for the request before
receiving a Transmission Status (ACK Received), Transmission Status (NAK Received), Transmission Status
(ACK/NAK Timeout), or Transmission Status (Connection Lost Without ACK/NAK) confirmation.
When the Read Data Frames Transmitted state machine variable equals the Read Data Frames ACKed state
machine variable and the Transmit Frame request was for a read DATA frame, this state shall:
a) not modify the Balance Point Read Data Offset state machine variable (i.e., the balance point remains
at the last point at which balance occurred); or
b) set the Balance Point Read Data Offset state machine variable to the current Read Data Offset state
machine variable.
If the Transmit Frame request was for a RESPONSE frame, the vendor specific number of retries has not
been reached, and this state receives one of the following confirmations:
a) Transmission Status (NAK Received);
b) Transmission Status (ACK/NAK Timeout); or
c) Transmission Status (Connection Lost Without ACK/NAK),
then this state shall:
a) set the RETRANSMIT bit to one;
b) set the other fields to the same values as contained in the failed RESPONSE frame; and
c) resend a Transmit Frame (Interlocked) request to the port layer for the failed RESPONSE frame.
If transport layer retries are enabled, the Transmit Frame request was for an XFER_RDY frame, the vendor
specific number of retries has not been reached, and this state receives one of the following confirmations:
a) Transmission Status (NAK Received);
b) Transmission Status (ACK/NAK Timeout); or
c) Transmission Status (Connection Lost Without ACK/NAK),
then this state shall:
a) set the RETRANSMIT bit to one;
b) set the TARGET PORT TRANSFER TAG field to a value that is different than the target port transfer tag in
the previous XFER_RDY frame associated with the Data-Out state machine arguments and is
different than any other target port transfer tag currently in use. If write data is received for a
subsequent XFER_RDY frame for a command, then all target port transfer tags used for previous
XFER_RDY frames for the command are no longer in use;
c) set the other fields to the same values contained in the failed XFER_RDY frame; and
d) resend a Transmit Frame (Interlocked) request to the port layer for the failed XFER_RDY frame.
Table 229 defines messages that this state shall send to the ST_TFR state machine upon receipt of the listed
confirmations and arguments, based on the conditions under which each confirmation or argument was
received.
Transmission Complete
The Transmit Frame request was for an (Xfer_Rdy Delivered) with
XFER_RDY frame. a Target Port Transfer Tag
argument
The Transmit Frame request was for a Transmission Complete
RESPONSE frame. (Response Delivered)
Transmission Status (ACK
Received) The Transmit Frame request was for a read
DATA frame and the Read Data Offset state
machine variable is equal to:
Transmission Complete
a) the Read Data Buffer End state machine
(Data-In Delivered)
variable; and
b) the Balance Point Read Data Offset state
machine variable.
Transmission Status (NAK
Received), Transmission Status The Transmit Frame request was for a
Transmission Complete
(ACK/NAK Timeout), or RESPONSE frame and the vendor specific
(Response Failed)
Transmission Status (Connection number of retries has been reached.
Lost Without ACK/NAK)
Transmission Complete
Transmission Status (NAK The Transmit Frame request was for an (Xfer_Rdy Failed, NAK
Received) XFER_RDY frame and if transport layer Received)
retries are:
Transmission Status (ACK/NAK a) disabled; or Transmission Complete
Timeout) or Transmission Status b) enabled and the vendor specific number
(Xfer_Rdy Failed,
(Connection Lost Without ACK/ of retries has been reached. Connection Failed)
NAK)
Transmission Complete
Transmission Status (NAK
(Data-In Failed, NAK
Received)
Received)
The Transmit Frame request was for a read
Transmission Complete
Transmission Status (ACK/NAK DATA frame and if transport layer retries are:
(Data-In Failed, ACK/NAK
Timeout) a) disabled; or
Timeout)
b) enabled and the vendor specific number
of retries has been reached. Transmission Complete
Transmission Status (Connection (Data-In Failed,
Lost Without ACK/NAK) Connection Lost Without
ACK/NAK)
Table 230 defines messages that this state shall send to the ST_TFR state machine upon receipt of the listed
confirmations and arguments.
If this state receives a Cancel message or a Cancel argument and this state has received confirmations for all
Transmit Frame requests sent to the port layer, then this state shall send a Transmission Complete (Data
Transfer Terminated) message to the ST_TFR state machine.
If this state receives a Cancel message or a Cancel argument and this state has not received confirmations
for all Transmit Frame requests sent to the port layer, then this state shall send a Cancel request to the port
layer to cancel previous Transmit Frame requests. The Cancel request shall include the following arguments:
a) Destination SAS Address; and
b) Initiator Port Transfer Tag.
Upon receipt of a Transmission Status (Cancel Acknowledged) confirmation or argument this state shall send
a Transmission Complete (Data Transfer Terminated) message to the ST_TFR state machine.
A Transmission Complete message to the ST_TFR state machine shall include the following arguments:
a) Destination SAS Address; and
b) Initiator Port Transfer Tag.
This state retrieves the data from the Device Server Buffer Data-In state machine argument and constructs a
read DATA frame.
This state shall construct a read DATA frame using the Data-In state machine arguments as follows:
a) set the FRAME TYPE field to 01h (i.e., DATA frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Destination SAS Address
Data-In state machine argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP target port’s SAS address;
d) set the RETRY DATA FRAMES bit to zero;
e) set the RETRANSMIT bit to zero;
f) set the CHANGING DATA POINTER as specified in this subclause;
g) set the NUMBER OF FILL BYTES field to the number of fill bytes to be used in the DATA frame for the
specified read data;
h) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Data-In state machine
argument;
i) set the TARGET PORT TRANSFER TAG field to a vendor specific value;
j) set the DATA OFFSET field as specified in this subclause;
k) in the information unit, set the DATA field as specified in this subclause; and
l) fill bytes, if required.
If this state is entered without a Retry argument, then this state shall:
a) set the CHANGING DATA POINTER bit to zero;
b) set the DATA OFFSET field to the Read Data Offset state machine variable; and
c) in the information unit, set the DATA field to the information in the Device Server Buffer argument that
corresponds to the read data to be transferred. If the Read Data Buffer End state machine variable
minus the Read Data Offset state machine variable is equal to the maximum size of the read Data
information unit, then the amount of data shall be the maximum size of the read Data information unit,
otherwise the amount of data shall be the lesser of:
A) the Read Data Buffer End state machine variable minus the Read Data Offset state machine
variable; and
B) the maximum size of the read Data information unit for this Send Data-In request.
If this state is entered with a Retry argument, then this state shall either:
a) set the CHANGING DATA POINTER bit to one;
b) set the DATA OFFSET field to the Balance Point Read Data Offset state machine variable;
c) set the Read Data Offset state machine variable to the Balance Point Read Data Offset state machine
variable;
d) set the Read Data Frames Transmitted state machine variable to zero;
e) set the Read Data Frames ACKed state machine variable to zero; and
f) in the information unit, set the DATA field to the information in the Device Server Buffer argument that
corresponds to the read data to be transferred. If the Read Data Buffer End state machine variable
minus the Read Data Offset state machine variable is equal to the maximum size of the read Data
information unit, then the amount of data shall be the maximum size of the read Data information unit,
otherwise the amount of data shall be the lesser of:
A) the Read Data Buffer End state machine variable minus the Balance Point Read Data Offset state
machine variable; and
B) the maximum size of the read Data information unit for this Send Data-In request
or:
a) set the CHANGING DATA POINTER bit to one;
b) set the DATA OFFSET field to the Application Client Buffer Offset Data-In state machine argument;
c) set the Read Data Offset state machine variable to the Application Client Buffer Offset Data-In state
machine argument;
d) set the Read Data Frames Transmitted state machine variable to zero;
e) set the Read Data Frames ACKed state machine variable to zero; and
f) in the information unit, set the DATA field to the information in the Device Server Buffer argument that
corresponds to the read data to be transferred. If the Request Byte Count Data-In state machine
argument is equal to the maximum size of the read Data information unit, then the amount of data
shall be the maximum size of the read Data information unit, otherwise the amount of data shall be the
lesser of:
A) the Request Byte Count Data-In state machine argument; and
B) the maximum size of the read Data information unit for this Send Data-In request.
This state shall construct an XFER_RDY frame using the Data-Out state machine arguments:
a) set the FRAME TYPE field to 05h (i.e., XFER_RDY frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Destination SAS Address
Data-Out state machine argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP target port’s SAS address;
d) set the RETRY DATA FRAMES bit to one if transport layer retries are enabled and zero if transport layer
retries are disabled;
e) set the RETRANSMIT bit to zero;
f) set the CHANGING DATA POINTER bit to zero;
g) set the NUMBER OF FILL BYTES field to 00b;
h) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Data-Out state machine
argument;
i) if transport layer retries are disabled, then set the TARGET PORT TRANSFER TAG field to a vendor
specific value;
j) if transport layer retries are enabled, then set the TARGET PORT TRANSFER TAG field to a vendor specific
value that is different from:
A) the target port transfer tag in the previous XFER_RDY frame associated with the Data-Out state
machine arguments; and
B) any other target port transfer tag currently in use.
If write data is received for a subsequent XFER_RDY frame for a command, then all target port
transfer tags used for previous XFER_RDY frames for the command are no longer in use;
k) set the DATA OFFSET field to 00000000h;
l) in the information unit, set the REQUESTED OFFSET field to the Requested Write Data Offset state
machine variable;
m) in the information unit, set the WRITE DATA LENGTH field as specified in this subclause; and
n) no fill bytes.
If the SSP target port has the resources available to receive all of the write data as indicated by the Requested
Write Data Length state machine variable, then this state shall set the WRITE DATA LENGTH field in the
XFER_RDY information unit to the Requested Write Data Length state machine variable.
If the SSP target port does not have the resources available to receive all of the write data as indicated by the
Requested Write Data Length state machine variable (e.g., the SSP target port has a vendor specific limit as
to how much write data may be received during one operation), then this state shall set the WRITE DATA
LENGTH field in the XFER_RDY information unit and the Requested Write Data Length state machine variable
to a value representing the amount of write data for which the SSP target port has available resources to
receive.
Upon entry into this state, the Write Data Offset state machine variable is set to the Requested Write Data
Offset state machine variable.
If this state receives a Data-Out Arrived message, then this state shall verify the write DATA frame received
with the Data-Out Arrived values as specified in table 231. If the verification test fails, then this state sends the
message specified in table 231 to the ST_TFR state machine.
Table 231 – Reception Complete message for write DATA frame verification failures
Transport layer retries are disabled and the DATA OFFSET field is not equal
to the Write Data Offset state machine variable.
If:
a) transport layer retries are enabled;
b) the CHANGING DATA POINTER bit is set to zero; and
c) the value in the DATA OFFSET field is not equal to the Write Data Offset state machine variable,
then this state should discard all Data-Out Arrived messages until the CHANGING DATA POINTER bit is set to one.
This state shall resume processing additional Data-Out Arrived messages when it receives a Data-Out Arrived
message with the CHANGING DATA POINTER bit set to one.
If the WRITE data frame verification is successful and the Data-Out Arrived message is not discarded, then
this state shall:
a) process the write data as indicated in the Data-Out state machine arguments using the Device Server
Buffer (e.g., logical block address) to which the write data is to be transferred; and
b) set the Write Data Offset state machine variable to the current Write Data Offset state machine
variable plus the number of bytes received in the DATA field of the write Data information unit.
If the WRITE data frame verification is successful and the CHANGING DATA POINTER bit set to one, then this
state shall:
a) set the Write Data Offset state machine variable to the Requested Write Data Offset state machine
variable plus the number of bytes received in the DATA field of the write Data information unit; and
b) process the write data as indicated in the Data-Out state machine arguments using the Device Server
Buffer (e.g., logical block address) to which the write data is to be transferred.
If data received in the write DATA frame overlaps data previously received and verified to have no errors, then
this state may either discard the overlapping data or replace the previously received data with the new data.
If the Initiator Response Timeout timer is implemented, then this state shall initialize and start the Initiator
Response Timeout timer:
a) upon entry into this state; and
b) when this state receives and verifies the write DATA frame received with the Data-Out Arrived values
(i.e., Data-Out data was received and processed).
If the Initiator Response Timeout timer is running, then this state shall stop the timer before transitioning from
this state.
If the Initiator Response Timeout timer expires, then this state shall send a Reception Complete (Initiator
Response Timeout) message to the ST_TFR state machine.
If the Write Data Offset state machine variable equals the Request Byte Count Data-Out state machine
argument plus the Application Client Buffer Offset Data-Out state machine argument, then this state shall
send a Reception Complete (Data-Out Received) message to the ST_TFR state machine after an ACK
Transmitted confirmation is received for each write DATA frame received.
If this state receives a Cancel message, then this state shall send a Reception Complete (Data Transfer
Terminated) message to the ST_TFR state machine.
If this state receives Transmission Status (Break Received) confirmation, then this state shall send a
Reception Complete (Break Occurred) message to the ST_TFR state machine.
The Reception Complete message, if any, shall include the initiator port transfer tag as an argument.
This transition shall occur after sending a Reception Complete message to the ST_TFR state machine.
equal to the Requested Write Data Offset state machine variable plus the Requested Write Data
Length state machine variable;
2) after an ACK Transmitted confirmation is received for each write DATA frame received;
3) after determining the amount of write data already transferred by subtracting the Application Client
Buffer Offset Data-Out state machine argument from the Write Data Offset state machine variable;
4) after setting the Requested Write Data Length state machine variable to the Request Byte Count
Data-Out state machine argument minus the amount of write data already transferred; and
5) after setting the Requested Write Data Offset state machine variable to the Write Data Offset state
machine variable.
This state shall construct a RESPONSE frame using the received Application Response arguments or the
received Transport Response arguments as follows:
a) set the FRAME TYPE field to 07h (i.e., RESPONSE frame);
b) set the HASHED DESTINATION SAS ADDRESS field to the hashed value of the Application Response or
Transport Response Destination SAS Address argument;
c) set the HASHED SOURCE SAS ADDRESS field to the hashed value of the SSP target port’s SAS address;
d) set the RETRY DATA FRAMES bit to zero;
e) set the RETRANSMIT bit to zero;
f) set the CHANGING DATA POINTER bit to zero;
g) set the INITIATOR PORT TRANSFER TAG field to the Initiator Port Transfer Tag Application Response
argument or the Initiator Port Transfer Tag Transport Response argument;
h) set the TARGET PORT TRANSFER TAG field to a vendor specific value;
i) set the DATA OFFSET field to 00000000h;
j) set the information unit as specified in this subclause; and
k) fill bytes, if needed as specified in this subclause.
If this state was entered with the Transport Response arguments, then this state shall set the fields as follows:
a) set the NUMBER OF FILL BYTES field to the number of fill bytes, based on the length of the response
data, if any;
b) in the information unit, set the DATAPRES field to RESPONSE DATA;
c) in the information unit, set the STATUS field to 00h;
d) in the information unit, set the STATUS QUALIFIER field to 0000h;
e) in the information unit, set the SENSE DATA LENGTH field to 00000000h;
f) in the information unit, set the RESPONSE DATA LENGTH field to 00000004h;
g) in the information unit, set the RESPONSE DATA field as specified in table 232; and
h) in the information unit, do not include the SENSE DATA field.
Table 232 defines how the RESPONSE DATA field shall be set based on the arguments received with the
Request (Send Transport Response) message.
Table 232 – Request (Send Transport Response) message Service Response argument to
RESPONSE frame RESPONSE DATA field mapping
If this state was entered with the Application Response arguments, then this state shall set the fields as
follows:
a) in the information unit, set the DATAPRES field to SENSE_DATA if sense data is to be included in the
information unit or NO_DATA if sense data is not to be included in the information unit;
b) in the information unit, set the STATUS field to the status;
c) in the information unit, set the STATUS QUALIFIER field to the status qualifier, if any;
d) in the information unit, set the SENSE DATA LENGTH field to the length of the sense data, if any;
e) in the information unit, set the RESPONSE DATA LENGTH field to 00000000h;
f) in the information unit, do not include the RESPONSE DATA field;
g) in the information unit, set the SENSE DATA field to the sense data, if any; and
h) NUMBER OF FILL BYTES field set to the number of fill bytes, based on the length of the sense data, if
needed.
A SATA device phy transmits a Register - Device to Host FIS after completing the link reset sequence, except
for the case described in G.5. The expander device shall update a set of shadow registers with the contents of
this FIS and shall not deliver this FIS to any STP initiator port. SMP initiator ports may read the shadow
register contents using the SMP REPORT PHY SATA function (see 9.4.4.12). The expander device originates
a Broadcast (Change) after receiving the Register - Device to Host FIS (see 6.15).
STP initiator ports and STP target ports shall not generate BIST Activate FISes and shall process any BIST
Activate FISes received as frames having invalid FIS types (i.e., have the link layer generate SATA_R_ERR in
response).
The STP transport layer uses the transport layer state machines defined in SATA, modified to communicate
with the port layer rather than directly with the link layer. These modifications are not described in this
standard.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE
1
••• Frame-type dependent bytes
n-4
n-3 (MSB)
••• CRC
n (LSB)
Table 234 defines the SMP FRAME TYPE field, which defines the format of the frame-type dependent bytes.
The SMP_REQUEST frame is sent by an SMP initiator port to request an SMP function be performed by a
management device server. Table 235 defines the SMP_REQUEST frame format.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (40h)
1
••• Request bytes
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field shall be set as shown in table 235 for the SMP_REQUEST frame format.
The format and length of the request bytes is defined by the SMP function description (see 9.4.4.2).
The number of request bytes are either:
a) three bytes; or
b) three bytes plus an integer multiple of four bytes,
so the CRC field is aligned on a four byte boundary.
The maximum number of request bytes is 1 023, making the maximum size of the frame 1 028 bytes (i.e., 1
byte header + 1 023 request bytes + 4 bytes of CRC).
NOTE 60 - If a management application client compliant with SAS-1.1 sends a vendor specific SMP request
frame containing 1 027 request bytes, then SMP_TP state machine discards that SMP request frame as it
that exceeds the maximum allowed request size of 1 023 bytes (see 6.22.6.4.2.2). SMP request frames
defined in SAS-1.1 do not have more than 39 request bytes.
The SMP_RESPONSE frame is sent by an SMP target port in response to an SMP_REQUEST frame. Table
236 defines the SMP_RESPONSE frame format.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1
••• Response bytes
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field shall be set as shown in table 236 for the SMP_RESPONSE frame format.
The format and length of the request bytes is defined by the SMP function description (see 9.4.4.3).
The number of response bytes are either:
a) three bytes; or
b) three bytes plus an integer multiple of four bytes,
so the CRC field is aligned on a four byte boundary.
The maximum number of response bytes is 1 023, making the maximum size of the frame 1 028 bytes (i.e., 1
byte header + 1 023 request bytes + 4 bytes of CRC).
NOTE 61 - If a management device server compliant with SAS-1.1 sends a vendor specific SMP response
frame containing 1 027 response bytes, then the SMP_IP state machine discards that SMP response frame
as it exceeds the maximum allowed request size of 1 023 bytes (see 6.22.6.3.4). SMP response frames
defined in SAS-1.1 do not have more than 59 request bytes.
Inside an SMP connection, the SMP initiator port transmits a single SMP_REQUEST frame and the SMP
target port replies with a single SMP_RESPONSE frame.
Figure 208 shows the sequence of SMP frames.
SMP_REQUEST
SMP_RESPONSE
time time
The SMP transport layer contains state machines that process requests from the management application
layer and return confirmations to the management application layer. The SMP transport state machines are as
follows:
a) MT_IP (transport layer for SMP initiator ports) state machine (see 8.4.5.2); and
b) MT_TP (transport layer for SMP target ports) state machine (see 8.4.5.3).
8.4.5.2 MT_IP (transport layer for SMP initiator ports) state machine
The MT_IP state machine processes requests from the management application layer. These management
requests are sent to the port layer, and the resulting SMP frame or error condition is sent to the management
application layer as a confirmation.
This state machine consists of the following states:
a) MT_IP1:Idle (see 8.4.5.2.2) (initial state);
Transmit Frame
Connection
Closed
Transmission
Status SMP Frame
Transmit Receive
Failure
Connection
Closed
Received SMP
Function Complete
Frame Received
Figure 209 – MT_IP (transport layer for SMP initiator ports) state machine
This state constructs an SMP_REQUEST frame using the following arguments received in the transition into
this state:
a) Request Bytes
and sends a Transmit Frame request to the port layer with the following arguments:
a) Initiator Port bit set to one;
b) Protocol set to SMP;
c) Connection Rate;
d) Initiator Connection Tag set to FFFFh;
e) Destination SAS Address;
f) Source SAS Address set to the SAS address of the SMP initiator port; and
g) Request Bytes.
This state waits for a confirmation from the port layer that either an SMP frame has been received or a failure
occurred.
If a Frame Received (SMP Successful) confirmation is received and the SMP frame type is equal to 41h, then
this state shall send a Received SMP Function Complete confirmation to the management application layer.
If a Frame Received (SMP Successful) confirmation is received and the SMP frame type is not equal to 41h,
then this state shall send an SMP Frame Transmit Receive Failure confirmation to the management
application layer.
If a Connection Closed or Frame Received (SMP Unsuccessful) confirmation is received, then this state shall
send an SMP Frame Transmit Receive Failure confirmation to the management application layer.
8.4.5.3 MT_TP (transport layer for SMP target ports) state machine
The MT_TP state machine informs the management application layer of the receipt of an SMP frame and
sends the resulting SMP frame to the port layer.
This state machine consists of the following states:
a) MT_TP1:Idle (see 8.4.5.3.2) (initial state); and
b) MT_TP2:Respond (see 8.4.5.3.3).
This state machine shall start in the MT_TP1:Idle state.
Figure 210 shows the MT_TP state machine.
MT_TP1:Idle MT_TP2:Respond
Transmission
Status
Accept_Reject SMP
OPENs Transmit
Break SMP
Connection
Accept_Reject Closed
Connection
OPENs Closed
Figure 210 – MT_TP (transport layer for SMP target ports) state machine
The MT_TP state machine shall comply with the time limits listed in table 237.
This state waits for a Frame Received (SMP Successful) confirmation. If the SMP frame type is not equal to
40h, then this state shall discard the frame and send an SMP Transmit Break request to the port layer,
otherwise this state shall send an SMP Function Received confirmation to the management application layer.
If an Accept_Reject OPENs (Accept SMP) request or an Accept_Reject OPENs (Reject SMP) request is
received, then this state shall send an Accept_Reject OPENs request with the same arguments to the port
layer.
This state waits for a Send SMP Response request, which includes the following argument:
a) Response Bytes.
After receiving a Send SMP Response request, this state shall construct an SMP_RESPONSE frame using
the arguments from the Send SMP Response request and send a Transmit Frame request to the port layer
within the SMP Response time limit specified in table 237 (see 8.4.5.3.1).
If this state receives a Connection Closed confirmation, then this state shall send an SMP Connection Closed
confirmation to the management application layer.
9 Application layer
The application layer defines SCSI, ATA, and management specific features.
A SCSI application client requests the processing of a SCSI command by invoking SCSI transport protocol
services, the collective operation of which is conceptually modeled in the following procedure call (see
SAM-5):
Service response = Execute Command (IN (I_T_L Nexus, Command Identifier, CDB, Task Attribute,
[Data-In Buffer Size], [Data-Out Buffer], [Data-Out Buffer
Size], [Command Priority]), OUT ([Data-In Buffer], [Sense
Data], [Sense Data Length], Status, [Status Qualifier]))
This standard defines the transport protocol services required by SAM-5 in support of this procedure call.
Table 238 describes the mapping of the Execute Command procedure call to transport protocol services and
the SSP implementation of each transport protocol service.
A SCSI application client requests the processing of a SCSI task management function by invoking SCSI
transport protocol services, the collective operation of which is conceptually modeled in the following
procedure calls (see SAM-5):
a) Service Response = ABORT TASK (IN (Nexus));
b) Service Response = ABORT TASK SET (IN (Nexus));
c) Service Response = CLEAR ACA (IN (Nexus));
d) Service Response = CLEAR TASK SET (IN (Nexus));
e) Service Response = I_T NEXUS RESET (IN (Nexus));
f) Service Response = LOGICAL UNIT RESET (IN (Nexus));
g) Service Response = QUERY TASK (IN (Nexus));
h) Service Response = QUERY TASK SET (IN (Nexus), OUT ([Additional Response Information]));
and
i) Service Response = QUERY ASYNCHRONOUS EVENT (IN (Nexus), OUT ([Additional Response
Information])).
This standard defines the transport protocol services required by SAM-5 in support of these procedure calls.
Table 239 describes the mapping of these procedure calls to transport protocol services and the SSP
implementation of each transport protocol service.
Table 239 – Task management function procedure call transport protocol services
Task management
Transport protocol services are used as the requests and confirmations to the SSP transport layer state
machines (see 8.2.6) from the SCSI application layer.
A SCSI application client invokes the Send SCSI Command SCSI transport protocol service request to
request that an SSP initiator port transmit a COMMAND frame.
Send SCSI Command (IN (I_T_L Nexus, Command Identifier, CDB, Task Attribute, [Data-In Buffer
Size], [Data-Out Buffer], [Data-Out Buffer Size], [Command Priority], [CRN],
[First Burst Enabled], [Request Fence]))
Table 240 shows how the arguments to the Send SCSI Command SCSI transport protocol service are used.
Table 240 – Send SCSI Command SCSI transport protocol service arguments
Command Identifier Specifies the INITIATOR PORT TRANSFER TAG field in the COMMAND frame header.
Task Attribute Specifies the TASK ATTRIBUTE field in the COMMAND frame.
[CRN] Ignored
[Command Priority] Specifies the COMMAND PRIORITY field in the COMMAND frame.
Specifies the ENABLE FIRST BURST bit in the COMMAND frame and causes the
SSP initiator port to transmit the number of bytes indicated by the FIRST BURST
[First Burst Enabled]
SIZE field in the Disconnect-Reconnect mode page (see 9.2.7.2.5) for the SSP
target port without waiting for an XFER_RDY frame.
If included, specifies an I_T nexus, I_T_L nexus, or I_T_L nexus and command
[Request Fence]
identifier combination for which the COMMAND frame is fenced.
a
See the restrictions on the REQUESTED OFFSET field and the WRITE DATA LENGTH field in the SSP
XFER_RDY frame (see 8.2.2.3) and the DATA OFFSET field in the SSP DATA frame (see 8.2.1).
A SCSI application client shall set the Request Fence argument to the nexus containing any commands or
task management functions that the command affects (e.g., for a PERSISTENT RESERVE OUT command
with a PREEMPT AND ABORT service action, the SCSI application client sets the Response Fence argument
to the I_T_L nexus) or upon which the command depends (e.g., when the Task Attribute argument is set to
Ordered, the SCSI application client sets the Response Fence argument to the I_T_L nexus and command
identifier combination of the previous command). If the SCSI application client is not able to determine the
nexus affected by the command or upon which the command depends, then the SCSI application client
should set the Request Fence argument to the I_T nexus.
An SSP target port invokes the SCSI Command Received SCSI transport protocol service indication to notify
a task manager that the SSP target port has received a COMMAND frame.
SCSI Command Received (IN (I_T_L Nexus, Command Identifier, CDB, Task Attribute, [Command
Priority], [CRN], [First Burst Enabled]))
Table 241 shows how the arguments to the SCSI Command Received SCSI transport protocol service are
determined.
Table 241 – SCSI Command Received SCSI transport protocol service arguments
Indicates the value of the INITIATOR PORT TRANSFER TAG field in the
Command Identifier
COMMAND frame header.
Indicates the value of the CDB field and the ADDITIONAL CDB BYTES field, if
CDB
any, in the COMMAND frame.
Task Attribute Indicates the value of the TASK ATTRIBUTE field in the COMMAND frame.
[CRN] Ignored
Indicates that first burst data is being delivered based on the ENABLE
[First Burst Enabled] FIRST BURST bit in the COMMAND frame and the FIRST BURST SIZE field in
the Disconnect-Reconnect mode page (see 9.2.7.2.5).
A SCSI device server invokes the Send Command Complete SCSI transport protocol service response to
request that an SSP target port transmit a RESPONSE frame.
Send Command Complete (IN (I_T_L Nexus, Command Identifier, [Sense Data], [Sense Data
Length], Status, [Status Qualifier], Service Response, [Response
Fence]))
A SCSI device server shall only call Send Command Complete () after receiving SCSI Command
Received ().
A SCSI device server shall not call Send Command Complete () for a given I_T_L nexus and command
identifier combination until the SCSI device server has:
a) responded to all outstanding Receive Data-Out () calls for that I_T_L nexus and command identifier
combination with Data-Out Received (); and
b) responded to all outstanding Send Data-In () calls for that I_T_L nexus and command identifier
combination with Data-In Delivered ().
Table 242 shows how the arguments to the Send Command Complete SCSI transport protocol service are
used.
Table 242 – Send Command Complete SCSI transport protocol service arguments
Command Identifier Specifies the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame header.
[Sense Data] Specifies the SENSE DATA field in the RESPONSE frame.
[Sense Data Length] Specifies the SENSE DATA LENGTH field in the RESPONSE frame.
[Status Qualifier] Specifies the STATUS QUALIFIER field in the RESPONSE frame.
Specifies the DATAPRES field and STATUS field in the RESPONSE frame:
a) COMMAND COMPLETE: The DATAPRES field is set to NO_DATA or
SENSE_DATA; or
Service Response b) SERVICE DELIVERY OR TARGET FAILURE - Overlapped Initiator Port
Transfer Tag Attempted: The DATAPRES field is set to RESPONSE_DATA and
the RESPONSE CODE field is set to OVERLAPPED INITIATOR PORT
TRANSFER TAG ATTEMPTED.
If included, specifies an I_T nexus, I_T_L nexus, or I_T_L nexus and command
[Response Fence]
identifier combination for which the RESPONSE frame is fenced.
A SCSI device server shall set the Response Fence argument to the nexus containing any commands or task
management functions that the command affects (e.g., for a PERSISTENT RESERVE OUT command with a
PREEMPT AND ABORT service action, the SCSI device server sets the Response Fence argument to the
I_T_L nexus) or upon which the command completion depends (e.g., when returning a unit attention condition
with the additional sense code set to COMMANDS CLEARED BY ANOTHER INITIATOR, the SCSI device
server sets the Response Fence argument to the I_T_L nexus). If the SCSI device server is not able to
determine the nexus affected by the command or upon which the command depends, then the SCSI device
server should set the Response Fence argument to the I_T nexus.
An SSP initiator port invokes the Command Complete Received SCSI transport protocol service
confirmation to notify a SCSI application client that the SSP initiator port has received a response for its
COMMAND frame (e.g., a RESPONSE frame or a NAK) or terminated a command because of an error.
Command Complete Received (IN (I_T_L Nexus, Command Identifier, [Data-In Buffer], [Sense
Data], [Sense Data Length], Status, [Status Qualifier], Service
Response))
Table 243 shows how the arguments to the Command Complete Received SCSI transport protocol service
are determined.
Table 243 – Command Complete Received SCSI transport protocol service arguments
Indicates the value of the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame
Command Identifier
header or COMMAND frame header.
[Sense Data] Indicates the value of the SENSE DATA field in the RESPONSE frame.
[Sense Data The smaller of the value of the SENSE DATA LENGTH field in the RESPONSE frame and
Length] the actual number of sense data bytes received by the SSP initiator port.
Status Indicates the value of the STATUS field in the RESPONSE frame.
[Status Qualifier] Indicates the value of the STATUS QUALIFIER field in the RESPONSE frame.
Either:
a) COMMAND COMPLETE: The RESPONSE frame contains a DATAPRES field set
to NO_DATA or SENSE_DATA; or
b) SERVICE DELIVERY OR TARGET FAILURE: Either:
A) the RESPONSE frame contains a DATAPRES field set to RESPONSE_DATA
Service Response
and a RESPONSE CODE field set to INVALID FRAME or OVERLAPPED
INITIATOR PORT TRANSFER TAG ATTEMPTED; or
B) the ST_IFR state machine detects an error as described in 8.2.6.2.2.3 and
8.2.6.2.2.4 (e.g., a NAK was received for the COMMAND frame or the length
of the RESPONSE frame is incorrect).
A SCSI device server invokes the Send Data-In SCSI transport protocol service request to request that an
SSP target port transmit a read DATA frame.
Send Data-In (IN (I_T_L Nexus, Command Identifier, Device Server Buffer, Application Client Buffer
Offset, Request Byte Count))
A SCSI device server shall only call Send Data-In () during a read command or bidirectional command.
A SCSI device server shall not call Send Data-In () for a given I_T_L nexus and command identifier
combination after the SCSI device server has called Send Command Complete () for that I_T_L nexus and
command identifier combination (e.g., a RESPONSE frame for that I_T_L nexus and command identifier
combination has been transmitted) or called Task Management Function Executed () for a task management
function that terminates that command (e.g., an ABORT TASK).
Table 244 shows how the arguments to the Send Data-In SCSI transport protocol service are used.
Specifies the INITIATOR PORT TRANSFER TAG field in the read DATA frame
Command Identifier
header.
Application Client Buffer Offset Specifies the DATA OFFSET field in the read DATA frame.
Request Byte Count Specifies the size of the read DATA frame.
An SSP target port invokes the Data-In Delivered SCSI transport protocol service indication to notify a SCSI
device server of the results of transmitting a read DATA frame.
Data-In Delivered (IN (I_T_L Nexus, Command Identifier, Delivery Result))
Table 245 shows how the arguments to the Data-In Delivered SCSI transport protocol service are
determined.
Indicates the value of the INITIATOR PORT TRANSFER TAG field in the read DATA frame
Command Identifier
header.
A SCSI device server invokes the Receive Data-Out SCSI transport protocol service request to request that
an SSP target port transmit an XFER_RDY frame.
Receive Data-Out (IN (I_T_L Nexus, Command Identifier, Application Client Buffer Offset, Request
Byte Count, Device Server Buffer))
A SCSI device server shall only call Receive Data-Out () during a write command or bidirectional command.
A SCSI device server shall not call Receive Data-Out () for a given I_T_L nexus and command identifier
combination until the Data-Out Received () has completed without error for the previous Receive Data-Out ()
call for that I_T_L nexus and command identifier combination (i.e., no XFER_RDY frame shall be transmitted
until all write DATA frames for the previous XFER_RDY frame, if any, have been received, and the link layer
has provided acknowledgement for all of the previous write DATA frames for that I_T_L nexus and command
identifier combination).
A SCSI device server shall not call Receive Data-Out () for a given I_T_L nexus and command identifier
combination after a Send Command Complete () has been called for that I_T_L nexus and command
identifier combination or after a Task Management Function Executed () has been called for a task
management function that terminates that command (e.g., an ABORT TASK).
If the Protocol Specific Port mode page (see 9.2.7.4) is supported and the value in the MAXIMUM ALLOWED
XFER_RDY field is not set to zero, then a SCSI device server shall not call Receive Data-Out () for a given I_T
nexus more than the number of times specified in the MAXIMUM ALLOWED XFER_RDY field in the Protocol
Specific Port mode page, until a Data-Out Received () has completed without error for one of the previous
Receive Data-Out () calls for that I_T nexus. For each Data-Out Received () that completes without error for
one of the previous Receive Data-Out () calls for that I_T nexus, the device server may call Receive
Data-Out () for that I_T nexus.
Table 246 shows how the arguments to the Receive Data-Out SCSI transport protocol service are used.
Specifies the INITIATOR PORT TRANSFER TAG field in the XFER_RDY frame
Command Identifier
header.
Application Client Buffer Offset Specifies the REQUESTED OFFSET field in the XFER_RDY frame.
Request Byte Count Specifies WRITE DATA LENGTH field in the XFER_RDY frame.
An SSP target port invokes the Data-Out Received SCSI transport protocol service indication to notify a SCSI
device server of the result of transmitting an XFER_RDY frame (e.g., receiving write DATA frames in
response).
Data-Out Received (IN (I_T_L Nexus, Command Identifier, Delivery Result))
Table 247 shows how the arguments to the Data-Out Received SCSI transport protocol service are
determined.
Indicates the value of the INITIATOR PORT TRANSFER TAG field in the XFER_RDY frame
Command Identifier
header.
A SCSI device server invokes the Terminate Data Transfer SCSI transport protocol service request to
request that an SSP target port terminate any Send Data-In () or Receive Data-Out () SCSI transport
protocol services transport protocol services, if any, being processed using the specified nexus.
Terminate Data Transfer SCSI transport protocol service request:
Terminate Data Transfer (IN (Nexus, [Command Identifier]))
Table 248 shows how the arguments to the Terminate Data Transfer SCSI transport protocol service are
used.
Table 248 – Terminate Data Transfer SCSI transport protocol service arguments
Nexus I_T nexus or I_T_L nexus identifying the scope of the data transfers to terminate.
Command Identifier Identifies the command associated with the data transfer being terminated.
An SSP target port invokes the Data Transfer Terminated SCSI transport protocol service confirmation to
notify a SCSI device server that all data transfers for the indicated nexus have been terminated.
Data Transfer Terminated SCSI transport protocol service confirmation:
Data Transfer Terminated (IN (Nexus), [Command Identifier])
Table 249 shows how the arguments to the Data Transfer Terminated SCSI transport protocol service are
determined.
Table 249 – Data Transfer Terminated SCSI transport protocol service arguments
Nexus I_T nexus or I_T_L nexus identified by the preceding Terminate Data Transfer () call.
Command Identifier Identifies the command associated with the data transfer being terminated.
A SCSI application client invokes the Send Task Management Request SCSI transport protocol service
request to request that an SSP initiator port transmit a TASK frame.
Send Task Management Request (IN (Nexus, [Command Identifier], Function Identifier, Task
Management Tag, [Request Fence]))
Table 250 shows how the arguments to the Send Task Management Request SCSI transport protocol
service are used.
Table 250 – Send Task Management Request SCSI transport protocol service arguments
Command Identifier Specifies the INITIATOR PORT TRANSFER TAG TO MANAGE field in the TASK frame header.
Specifies the TASK MANAGEMENT FUNCTION field in the TASK frame. Only these task
management functions are supported:
a) ABORT TASK (Nexus argument specifies an I_T_L Nexus and a command
identifier);
b) ABORT TASK SET (Nexus argument specifies an I_T_L Nexus);
c) CLEAR ACA (Nexus argument specifies an I_T_L Nexus);
Function Identifier d) CLEAR TASK SET (Nexus argument specifies an I_T_L Nexus);
e) I_T NEXUS RESET (Nexus argument specifies an I_T Nexus);
f) LOGICAL UNIT RESET (Nexus argument specifies an I_T_L Nexus);
g) QUERY TASK (Nexus argument specifies an I_T_L Nexus and a command
identifier);
h) QUERY TASK SET (Nexus argument specifies an I_T_L Nexus); and
i) QUERY ASYNCHRONOUS EVENT (Nexus argument specifies an I_T_L Nexus).
Task Management
Specifies the INITIATOR PORT TRANSFER TAG field in the TASK frame header.
Tag
If included, specifies an I_T nexus, I_T_L nexus, or I_T_L nexus and command
[Request Fence]
identifier combination for which the TASK frame is fenced.
A SCSI application client shall set the Request Fence argument to the Nexus argument.
An SSP target port invokes the Task Management Request Received SCSI transport protocol service
indication to notify a task manager that the SSP target port has received a TASK frame.
Task Management Request Received (IN (Nexus, [Command Identifier], Function Identifier, Task
Management Tag))
Table 251 shows how the arguments to the Task Management Request Received SCSI transport protocol
service are determined.
Table 251 – Task Management Request Received SCSI transport protocol service arguments
Indicates the value of the INITIATOR PORT TRANSFER TAG TO MANAGE field in the TASK
Command Identifier
frame header.
Indicates the value of the TASK MANAGEMENT FUNCTION field in the TASK frame. Only
these task management functions are supported:
a) ABORT TASK (Nexus argument indicates an I_T_L Nexus and a command
identifier);
b) ABORT TASK SET (Nexus argument indicates an I_T_L Nexus);
c) CLEAR ACA (Nexus argument indicates an I_T_L Nexus);
d) CLEAR TASK SET (Nexus argument indicates an I_T_L Nexus);
Function Identifier
e) I_T NEXUS RESET (Nexus argument indicates an I_T Nexus);
f) LOGICAL UNIT RESET (Nexus argument indicates an I_T_L Nexus);
g) QUERY TASK (Nexus argument indicates an I_T_L Nexus and a command
identifier);
h) QUERY TASK SET (Nexus argument indicates an I_T_L Nexus); and
i) QUERY ASYNCHRONOUS EVENT (Nexus argument indicates an I_T_L
Nexus).
Task Management Indicates the value of the INITIATOR PORT TRANSFER TAG field in the TASK frame
Tag header.
A task manager invokes the Task Management Function Executed SCSI transport protocol service
response to request that an SSP target port transmit a RESPONSE frame.
Task Management Function Executed (IN (Nexus, [Command Identifier], Service Response,
[Additional Response Information], Task Management Tag,
[Response Fence]))
A task manager shall only call Task Management Function Executed () after receiving Task Management
Request Received ().
Table 252 shows how the arguments to the Task Management Function Executed SCSI transport protocol
service are used.
Table 252 – Task Management Function Executed SCSI transport protocol service arguments
Command Identifier Specifies the command that was managed by the task management function.
Specifies the DATAPRES field and RESPONSE CODE field in the RESPONSE frame:
a) FUNCTION COMPLETE: The DATAPRES field is set to RESPONSE_DATA and
the RESPONSE CODE field is set to TASK MANAGEMENT FUNCTION
COMPLETE;
b) FUNCTION SUCCEEDED: The DATAPRES field is set to RESPONSE_DATA and
the RESPONSE CODE field is set to TASK MANAGEMENT FUNCTION
SUCCEEDED;
c) FUNCTION REJECTED: The DATAPRES field is set to RESPONSE_DATA and
the RESPONSE CODE field is set to TASK MANAGEMENT FUNCTION NOT
SUPPORTED;
Service Response
d) INCORRECT LOGICAL UNIT NUMBER: The DATAPRES field is set to
RESPONSE_DATA and the RESPONSE CODE field is set to INCORRECT
LOGICAL UNIT NUMBER;
e) SERVICE DELIVERY OR TARGET FAILURE: The DATAPRES field is set to
RESPONSE_DATA and the RESPONSE CODE field is set to TASK MANAGEMENT
FUNCTION FAILED; or
f) SERVICE DELIVERY OR TARGET FAILURE - Overlapped Initiator Port Transfer
Tag Attempted: The DATAPRES field is set to RESPONSE_DATA and the
RESPONSE CODE field is set to OVERLAPPED INITIATOR PORT TRANSFER
TAG ATTEMPTED.
[Additional
Response Specifies the ADDITIONAL RESPONSE INFORMATION field in the RESPONSE frame.
Information]
Task Management
Specifies the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame header.
Tag
If included, specifies an I_T nexus, I_T_L nexus, or I_T_L nexus and command
[Response Fence]
identifier combination for which the RESPONSE frame is fenced.
A SCSI device server shall set the Response Fence argument to the Nexus argument.
9.2.1.15 Received Task Management Function Executed SCSI transport protocol service
An SSP initiator port invokes the Received Task Management Function Executed SCSI transport protocol
service confirmation to notify a SCSI application client that the SSP initiator port has received a response to a
TASK frame (e.g., received a RESPONSE frame or a NAK).
Received Task Management Function Executed (IN (Nexus, [Command Identifier], Service
Response, [Additional Response Information],
Task Management Tag))
Table 253 shows how the arguments to the Received Task Management Function Executed SCSI transport
protocol service are determined.
Table 253 – Received Task Management Function Executed SCSI transport protocol service
arguments
Indicates the command that was managed by the task management function, (i.e., the
Command
Command Identifier is set to the contents of the INITIATOR PORT TRANSFER TAG TO
Identifier
MANAGE field of the TASK frame that contained an INITIATOR PORT TRANSFER TAG field
[Additional
Response Indicates the ADDITIONAL RESPONSE INFORMATION field in the RESPONSE frame.
Information]
Task Management Indicates the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame header or
Tag the TASK frame header.
If a SCSI application client processes Command Complete Received () with a Service Response of:
a) Service Delivery or Target Failure - XFER_RDY Incorrect Write Data Length;
b) Service Delivery or Target Failure - XFER_RDY Requested Offset Error;
c) Service Delivery or Target Failure - XFER_RDY Not Expected;
If a SCSI device server processes SCSI Command Received () and the CDB argument does not contain all
the bytes of the CDB (see SPC-6), then the SCSI device server shall terminate the command with CHECK
CONDITION status with the sense key set to ILLEGAL REQUEST and the additional sense code set to
INVALID FIELD IN COMMAND INFORMATION UNIT.
If a SCSI device server processes Data-Out Received () with a Delivery Result set to a value in table 254,
then the SCSI device server shall terminate the command with CHECK CONDITION status with the sense
key set to ABORTED COMMAND and the additional sense code set as indicated in table 254.
DELIVERY FAILURE - TOO MUCH WRITE DATA TOO MUCH WRITE DATA
DELIVERY FAILURE - INFORMATION UNIT TOO SHORT INFORMATION UNIT TOO SHORT
If a SCSI target device performs initiator port transfer tag checking and a task router or task manager
processes SCSI Command Received () with an initiator port transfer tag already in use by another command
(i.e., an overlapped command (see SAM-5)) in any logical unit, then the task router or task managers shall:
a) abort all task management functions received on that I_T nexus; and
b) respond to the overlapped command as defined in SAM-5.
If a SCSI target device performs initiator port transfer tag checking and:
a) a task router or task manager processes SCSI Command Received () with an initiator port transfer
tag already in use by a task management function in any logical unit; or
b) a task router or task manager processes Task Management Request Received () with an initiator
port transfer tag already in use by a command or task management function in any logical unit,
then the task router or task manager shall:
a) abort all commands received on that I_T nexus;
b) abort all task management functions received on that I_T nexus; and
c) call Task Management Function Executed () with the Service Response set to SERVICE
DELIVERY OR TARGET FAILURE - Overlapped Initiator Port Transfer Tag Attempted (i.e.,
requesting that the SSP target port set the DATAPRES field to RESPONSE_DATA and the RESPONSE
CODE field to OVERLAPPED INITIATOR PORT TRANSFER TAG ATTEMPTED).
Table 255 lists the SCSI transport protocol services for event notifications supported by this standard.
Power Loss Expected (IN ( SCSI Port )) d T Power Loss Expected 6.2.5.2.3
SAS-specific vital product data accessed with the INQUIRY command (see SPC-6) is described in 9.2.11.
SAS-specific log pages accessed with the LOG SELECT command and LOG SENSE command (see SPC-6)
are described in 9.2.8.
SAS-specific mode pages accessed with the MODE SELECT command and MODE SENSE command (see
SPC-6) are described in 9.2.7.
SAS-specific diagnostic pages accessed with the SEND DIAGNOSTIC command and RECEIVE
DIAGNOSTIC RESULTS command (see SPC-6) are described in 9.2.9.
Zoning (see 4.9) is applied to SES-3 diagnostic pages as described in 9.2.9.
The power condition states controlled by the START STOP UNIT command (see SBC-3) for a SAS device are
described in 9.2.10.
Table 256 defines mode pages supported by logical units in SCSI target devices in SAS domains (i.e., with
SSP target ports) that support the MODE SELECT command or MODE SENSE command.
FFh Return all subpages for this mode page code SPC-6
FFh Return all subpages for this mode page code SPC-6
If any field in an implemented mode page is not implemented, then the value of the field shall be assumed to
be zero (i.e., as if the field is set to zero) (see SPC-6).
If a mode page defined by this standard is not implemented, then the value of each field in that mode page
that is:
a) allowed by this standard to be changeable (e.g., not defined as a read only field); and
b) not used solely to define the mode page structure (e.g., the NUMBER OF PHYS field in the Phy Control
And Discover mode page) or coordinate access to the mode page (e.g., the GENERATION CODE field in
the Phy Control And Discover mode page),
shall be assumed to be zero (i.e., as if the mode page is implemented and the field is set to zero).
The Disconnect-Reconnect mode page (see SPC-6) provides the SCSI application client the means to tune
the performance of a service delivery subsystem. Table 257 defines the parameters that are applicable to SAS
SSP.
The SCSI application client sends the values in the fields to be used by the SCSI device server to control the
SSP connections by means of a MODE SELECT command. The SCSI device server shall then communicate
the field values to the SSP target port. The field values are communicated from the SCSI device server to the
SSP target port in a vendor specific manner.
SAS devices shall only use the parameter fields defined in table 257. If any other fields within the
Disconnect-Reconnect mode page of the MODE SELECT command contain a non-zero value, then the SCSI
device server shall terminate the MODE SELECT command with CHECK CONDITION status with the sense
key set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER LIST.
Byte\Bit 7 6 5 4 3 2 1 0
2 Reserved
3 Reserved
4 (MSB)
BUS INACTIVITY LIMIT
5 (LSB)
6
Reserved
7
8 (MSB)
CONNECT TIME LIMIT
9 (LSB)
10 (MSB)
MAXIMUM BURST SIZE
11 (LSB)
12
Reserved
13
14 (MSB)
FIRST BURST SIZE
15 (LSB)
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 257 for the
Disconnect-Reconnect mode page for SAS SSP.
The BUS INACTIVITY LIMIT field is defined in SPC-6 and 9.2.7.2.2.
The CONNECT TIME LIMIT field is defined in SPC-6 and 9.2.7.2.3.
The MAXIMUM BURST SIZE field is defined in SPC-6 and 9.2.7.2.4.
The FIRST BURST SIZE field is defined in SPC-6 and 9.2.7.2.5.
The BUS INACTIVITY LIMIT field contains the maximum time, in 100 s increments, that an SSP target port is
permitted to maintain a connection (see 4.1.12) without transferring a frame to the SSP initiator port. If this
time is exceeded and a persistent connection has not been established (see 4.1.13), then the SSP target port
shall prepare to close the connection (i.e., by requesting to have the link layer transmit DONE). This value
may be rounded as defined in SPC-6. A value of 0000h in this field specifies that there is no bus inactivity time
limit. The bus inactivity time limit is enforced by the port layer (see 7.2.3).
The CONNECT TIME LIMIT field contains the maximum duration of a connection (see 4.1.12) in 100 s
increments (e.g., a value of 0001h in this field means that the time is less than or equal to 100 s and a value
of 0002h in this field means that the time is less than or equal to 200 s). If this time is exceeded and a
persistent connection has not been established (see 4.1.13), then the SSP target port shall prepare to close
the connection. If an SSP target port is transferring a frame when the maximum connection time limit is
exceeded, then the SSP target port shall complete transfer of the frame before preparing to close the
connection. This value may be rounded as defined in SPC-6. A value of 0000h in this field specifies that there
is no maximum connection time limit. The maximum connection time limit is enforced by the port layer (see
7.2.3).
If a persistent connection has been established (see 4.1.13), then the MAXIMUM BURST SIZE field shall be
ignored.
If a persistent connection has not been established (see 4.1.13), then:
a) for read data, the MAXIMUM BURST SIZE field contains the maximum amount of data in 512-byte
increments that is transferred during a connection by an SSP target port per I_T_L nexus and
command identifier combination without transferring at least one frame for a different I_T_L nexus
and command identifier combination.
If the SSP target port:
A) has read data to transfer for only one I_T_L nexus and command identifier combination; and
B) has no requests to transfer write data for any I_T_L nexus and command identifier
combination,
then the SSP target port shall prepare to close the connection after the amount of data specified by
the MAXIMUM BURST SIZE field is transferred to the SSP initiator port; and
b) for write data, the MAXIMUM BURST SIZE field shall specify the maximum amount of data that an SSP
target port requests via a single XFER_RDY frame (see 8.2.2.3).
If a persistent connection has not been established (see 4.1.13), then:
a) the MAXIMUM BURST SIZE field is specified in 512-byte increments (e.g., a value of 0001h in this field
means that the number of bytes transferred to the SSP initiator port for the nexus is less than or equal
to 512, and a value of 0002h in this field means that the number of bytes transferred to the SSP
initiator port for the nexus is less than or equal to 1 024). A value of 0000h in this field specifies that
there is no maximum burst size; and
b) in terms of the SCSI transport protocol services (see 9.2.1), the SCSI device server shall limit the
Request Byte Count argument to the Receive Data-Out transport protocol service and the Send
Data-In transport protocol service to the amount specified in this field.
If the ENABLE FIRST BURST bit is set to zero in the COMMAND frame, then the FIRST BURST SIZE field is ignored.
If the ENABLE FIRST BURST bit is set to one in the COMMAND frame, then the FIRST BURST SIZE field contains
the maximum amount of write data in 512-byte increments that may be sent by the SSP initiator port to the
SSP target port without having to receive an XFER_RDY frame (see 8.2.2.3) from the SSP target port (e.g., a
value of 0001h in this field means that the number of bytes transferred by the SSP initiator port is less than or
equal to 512 and a value of 0002h in this field means that the number of bytes transferred by the SSP initiator
port is less than or equal to 1 024).
Specifying a non-zero value in the FIRST BURST SIZE field is equivalent to an implicit XFER_RDY frame for
each command requiring write data where the WRITE DATA LENGTH field of the XFER_RDY frame is set to 512
times the value of the FIRST BURST SIZE field.
The rules for data transferred using the value in the FIRST BURST SIZE field are the same as those used for data
transferred for an XFER_RDY frame (i.e., the number of bytes transferred using the value in the FIRST BURST
SIZE field is as if that number of bytes was requested by an XFER_RDY frame).
If the amount of data to be transferred for the command is less than the amount of data specified by the FIRST
BURST SIZE field, then the SSP target port shall not transmit an XFER_RDY frame for the command. If the
amount of data to be transferred for the command is greater than the amount of data specified by the FIRST
BURST SIZE field, then the SSP target port shall transmit an XFER_RDY frame after it has received all of the
data specified by the FIRST BURST SIZE field from the SSP initiator port. All data for the command is not
required to be transferred during the same connection in which the command is transferred.
A value of 0000h in this field specifies that there is no first burst size (i.e., an SSP initiator port transmits no
write DATA frames to the SSP target port before receiving an XFER_RDY frame).
The first burst size is handled by the SCSI transport protocol services (see 9.2.1) and the SSP transport layer
(see 8.2.6).
The Protocol Specific Logical Unit mode page (see SPC-6) contains parameters that affect SSP target port
operation on behalf of the logical unit.
The mode page policy (see SPC-6) for this mode page shall be either shared or per target port. If the SAS
target device has multiple SSP target ports, then the mode page policy should be per target port.
Parameters in this mode page shall affect all phys in:
a) the SSP target port if the mode page policy is per target port; or
b) all SSP target ports in the SAS target device if the mode page policy is shared.
Table 258 defines the format of the page for SAS SSP.
Table 258 – Protocol Specific Logical Unit mode page for SAS SSP
Byte\Bit 7 6 5 4 3 2 1 0
TRANSPORT
2 Reserved LAYER PROTOCOL IDENTIFIER (6h)
RETRIES
••• Reserved
7
The Protocol Specific Port mode page (see SPC-6) contains parameters that affect SSP target port operation.
If the mode page is implemented by one logical unit in a SCSI target device, then it shall be implemented by
all logical units in the SCSI target device that support the MODE SELECT or MODE SENSE commands.
The mode page policy (see SPC-6) for this mode page shall be either shared or per target port. If a SAS target
device has multiple SSP target ports, then the mode page policy should be per target port.
Parameters in this mode page shall affect all phys in:
a) the SSP target port if the mode page policy is per target port; or
b) all SSP target ports in the SAS target device if the mode page policy is shared.
Table 259 defines the format of the page for SAS SSP.
Table 259 – Protocol Specific Port mode page for SAS SSP
Byte\Bit 7 6 5 4 3 2 1 0
BROADCAST
READY LED
2 Reserved CONTINUE AWT ASYNCHRONOUS PROTOCOL IDENTIFIER (6h)
MEANING
EVENT
3 Reserved
4 (MSB)
I_T NEXUS LOSS TIME
5 (LSB)
6 (MSB)
INITIATOR RESPONSE TIMEOUT
7 (LSB)
8 (MSB)
REJECT TO OPEN LIMIT
9 (LSB)
11
••• Reserved
15
The READY LED MEANING bit specifies the READY LED signal behavior (see 9.4.1). Regardless of the mode
page policy (see SPC-6) for this mode page, the shared mode page policy shall be applied to the READY LED
MEANING bit.
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 259 for the Protocol
Specific Port mode page for SAS SSP indicating that this is a SAS SSP specific mode page.
The I_T NEXUS LOSS TIME field contains the minimum time that the SSP target port shall retry connection
requests to an SSP initiator port that are rejected with certain responses indicating that the SSP initiator port
may no longer be present (see 7.2.2) before recognizing an I_T nexus loss (see 4.4.3).
An SSP initiator port should retry connection requests for at least the time indicated by the I_T NEXUS LOSS
TIMEfield in the Protocol Specific Port mode page for the SSP target port to which it is trying to establish a
connection (see 4.4.3).
Table 260 defines the values of the I_T NEXUS LOSS TIME field. This value is enforced by the port layer (see
7.2.2).
Code a Description
The SSP target port shall never recognize an I_T nexus loss (i.e., it shall
FFFFh
retry the connection requests forever).
a
If this mode page is implemented, then the default value of the I_T NEXUS LOSS TIME field should be
non-zero. It is recommended that this value be 07D0h (i.e., 2 000 ms).
The INITIATOR RESPONSE TIMEOUT field contains the minimum time in one millisecond increments that the SSP
target port shall wait for the receipt of a frame (e.g., a write DATA frame) before aborting the command
associated with that frame. An INITIATOR RESPONSE TIMEOUT field set to 0000h indicates that the SSP target
port shall disable the initiator response timeout timer. This value is enforced by the transport layer (see
8.2.6.3).
The REJECT TO OPEN LIMIT field contains the minimum time, in 10 µs increments, that the SSP target port shall
wait to establish a connection request with an initiator port on an I_T nexus after receiving an OPEN_REJECT
(RETRY), OPEN_REJECT (RESERVED CONTINUE 0), or OPEN_REJECT (RESERVED CONTINUE 1).
This value may be rounded as defined in SPC-6. A REJECT TO OPEN LIMIT field set to 0000h indicates that the
minimum time is vendor specific. This minimum time is enforced by the port layer (see 7.2.3).
The MAXIMUM ALLOWED XFER_RDY field specifies the maximum number of times a device server may call the
Receive Data-Out transport protocol service as described in 9.2.1.8. A MAXIMUM ALLOWED XFER_RDY field set
to zero specifies that there is no limit to the number of times a device server may call the Receive Data-Out
transport protocol service.
The Phy Control And Discover mode page contains parameters that affect SSP target phy operation. If the
mode page is implemented by one logical unit in a SCSI target device, then it shall be implemented by all
logical units in the SCSI target device that support the MODE SELECT command or MODE SENSE
command.
The mode page policy (see SPC-6) for this mode page shall be shared for all SSP target ports. Parameters in
this mode page shall affect only the referenced phy.
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)
4 Reserved
6 GENERATION CODE
7 NUMBER OF PHYS
••• •••
n - 47
The GENERATION CODE field is a one-byte counter that shall be incremented by one by the SCSI device server
every time the values in this mode page or the Enhanced Phy Control mode page (see 9.2.7.7) are changed.
A GENERATION CODE field set to 00h indicates the generation code is unknown. The SCSI device server shall
wrap this field to 01h as the next increment after the generation code reaches its maximum value (i.e., FFh).
The GENERATION CODE field is also contained in the Enhanced Phy Control mode page (see 9.2.7.7) and the
Protocol Specific Port log page (see 9.2.8.1) and may be used to correlate phy settings across mode page
and log page accesses.
NOTE 62 - SCSI device servers compliant with SAS-1.1 set the GENERATION CODE field to 00h.
The NUMBER OF PHYS field contains the number of phys in the SAS target device and indicates the number of
SAS phy mode descriptors in the SAS phy mode descriptor list. This field shall not be changeable with the
MODE SELECT command.
The SAS phy mode descriptor list contains a SAS phy mode descriptor for each phy in the SAS target device,
not just the SAS target port, starting with the lowest numbered phy and ending with the highest numbered phy
as determined by the value in the PHY IDENTIFIER field in the SAS phy mode descriptor.
2
Reserved
3
4 Reserved ATTACHED SAS DEVICE TYPE ATTACHED REASON
27
••• Reserved for IDENTIFY frame related fields
31
32 PROGRAMMED MINIMUM PHYSICAL LINK RATE HARDWARE MINIMUM PHYSICAL LINK RATE
33 PROGRAMMED MAXIMUM PHYSICAL LINK RATE HARDWARE MAXIMUM PHYSICAL LINK RATE
34
••• Reserved
41
42
••• Vendor specific
43
44
••• Reserved
47
The PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL LINK RATE field are
defined in the SMP PHY CONTROL function (see 9.4.4.28) for accesses with MODE SELECT commands
and in the SMP DISCOVER function (see 9.4.4.10) for accesses with MODE SENSE commands.
The fields in the SAS phy mode descriptor not defined in this subclause are defined in the SMP DISCOVER
response (see 9.4.4.10). These fields shall not be changeable with the MODE SELECT command.
The Shared Port Control mode page contains parameters that affect SSP target port operation. If the mode
page is implemented by one logical unit in a SCSI target device, then it shall be implemented by all logical
units in the SCSI target device that support the MODE SELECT command or MODE SENSE command.
The mode page policy (see SPC-6) for this mode page shall be shared for all SSP target ports.
Table 263 defines the format of this mode page.
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (000Ch)
3 (LSB)
4 Reserved
6 (MSB)
POWER LOSS TIMEOUT
7 (LSB)
8 Reserved
12
••• Reserved
15
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 263 for the Shared Port Control
mode page.
The SUBPAGE CODE field is defined in SPC-6 and shall be set as shown in table 263 for the Shared Port Control
mode page.
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 263 for the Shared Port Control
mode page.
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 263 for the Shared Port
Control mode page indicating that this is a SAS SSP specific mode page.
The POWER LOSS TIMEOUT field contains the maximum time, in one millisecond increments, that a target port
shall respond to connection requests with OPEN_REJECT (RETRY) after receiving NOTIFY (POWER LOSS
EXPECTED) (see 6.2.5.2.3). A POWER LOSS TIMEOUT field set to 0000h specifies that the maximum time is
vendor specific. The power loss timeout shall be restarted on each NOTIFY (POWER LOSS EXPECTED) that
is received.
The POWER GRANT TIMEOUT field contains the minimum time, in one second increments, that a SAS target
device shall wait to receive a PWR_GRANT (see 6.14.5.4) from a power source device (see 6.14.1). A POWER
GRANT TIMEOUT field set to 00h specifies that the time limit is vendor specific.
The FOURPHYS bit, the TWOPHYS bit, and the ONEPHY bit (i.e., the port mode bitmap) specify the number of phys
per port as described in table 264. For a MODE SELECT command, if any bit in the port mode bitmap in the
parameter data is set to one and is different than the current value for that bit, then upon successful
completion of that command the SAS target device shall:
1) disable all phys;
2) configure all phys as specified in table 264;
3) wait at least the time specified in the PORT MODE CHANGE DELAY TIME field; and
4) enable all phys.
The application client should not change the number of phys per port if any command is outstanding on any
LUN in this SAS device.
Table 264 — FOURPHYS bit, the TWOPHYS bit, and the ONEPHY bit
Bit
Description
FOURPHYS TWOPHYS ONEPHY
For a MODE SENSE command, the number of phys per port is not
0b 0b 0b reported. For a MODE SELECT command, no change to the
number of phys per port is requested.
The PORT MODE CHANGE DELAY TIME field specifies the minimum time in seconds that the phys shall be
disabled when a bit in the port mode bitmap is changed from 0b to 1b.
The Enhanced Phy Control mode page contains parameters that affect SSP target phy operation. If the mode
page is implemented by one logical unit in a SCSI target device, then it shall be implemented by all logical
units in the SCSI target device that support the MODE SELECT command or MODE SENSE command.
The mode page policy (see SPC-6) for this mode page shall be shared for all SSP target ports.
Table 265 defines the format of this mode page.
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)
4 Reserved
6 GENERATION CODE
7 NUMBER OF PHYS
••• Enhanced phy control mode descriptor (first) (see table 266)
27
••• •••
n - 19
••• Enhanced phy control mode descriptor (last) (see table 266)
n
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 265 for the Enhanced Phy
Control mode page (i.e., 4 + ((the value of the NUMBER OF PHYS field) (the length in bytes of the enhanced
phy control mode descriptor))).
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 265 for the Enhanced
Phy Control mode page indicating that this is a SAS SSP specific mode page.
The GENERATION CODE field is defined in the Phy Control and Discover mode page (see 9.2.7.5).
The NUMBER OF PHYS field contains the number of phys in the SAS target device and indicates the number of
enhanced phy control mode descriptors in the enhanced phy control mode descriptor list. This field shall not
be changeable with the MODE SELECT command.
The enhanced phy control mode descriptor list contains an enhanced phy control mode descriptor for each
phy in the SAS target device, not just the SAS target port, starting with the lowest numbered phy and ending
with the highest numbered phy as determined by the value in the PHY IDENTIFIER field in the enhanced phy
control mode descriptor.
Byte\Bit 7 6 5 4 3 2 1 0
0 Reserved
1 PHY IDENTIFIER
2 (MSB)
DESCRIPTOR LENGTH (0010h)
3 (LSB)
11
12
15
16
Reserved
17
OPTICAL
NEGOTIATED
18 Reserved MODE NEGOTIATED PHYSICAL LINK RATE
SSC
ENABLED
ENABLE ENABLE
19 Reserved Obsolete
SLUMBER PARTIAL
The DESCRIPTOR LENGTH field contains the length in bytes that follow in the descriptor and shall be set as
shown in table 266 for the enhanced phy control mode descriptor.
An ENABLE SLUMBER bit set to one specifies that the SCSI device server shall enable the management
application layer to control the slumber phy power condition (see 4.11.1.4) on the phy specified by the PHY
IDENTIFIER field. An ENABLE SLUMBER bit set to zero specifies that the SCSI device server shall disable control
of the slumber phy power condition by the management application layer on the phy specified by the PHY
IDENTIFIER field.
An ENABLE PARTIAL bit set to one specifies that the SCSI device server shall enable the management
application layer to control the partial phy power condition (see 4.11.1.3) on the phy specified by the PHY
IDENTIFIER field. An ENABLE PARTIAL bit set to zero specifies that the SCSI device server shall disable control of
the partial phy power condition by the management application layer on the phy specified by the PHY
IDENTIFIER field.
The fields in the enhanced phy control mode descriptor not defined in this subclause are defined in the SMP
DISCOVER response (see 9.4.4.10). These fields shall not be changeable with the MODE SELECT
command.
The Out Of Band Management Control mode page contains parameters that control the reporting of out of
band attributes as defined in SFF-8609 over the out of band management interface (see 9.4.2).
If this mode page is implemented by one logical unit in a SCSI target device, then it shall be implemented by
all logical units in that SCSI target device that support the MODE SELECT command or MODE SENSE
command. The mode page policy (see SPC-6) for this mode page shall be shared for all SSP target ports.
Table 267 defines the format of the Out Of Band Management Control mode page.
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n-3)
3 (LSB)
4 RE Reserved
5 Reserved
6 (MSB)
PROTOCOL REVISION CODE
7 (LSB)
8
Attribute control descriptor (first)
x
x+1
Attribute control descriptor (second)
y
... ...
n-k
Attribute control descriptor (last)
n
The SUBPAGE CODE field is defined in SPC-6 and shall be set as shown in table 267 for Out Of Band
Management Control mode page.
The PAGE LENGTH field is defined in SPC-6.
The Reporting Enable (RE) bit set to one specifies that the device server shall enable the transfer of attribute
information over the out of band management interface (see SFF-8609), based on fields in the attribute
control descriptors in this mode page. The RE bit set to zero specifies that the device server shall not transfer
any information over the out of band management interface.
If the RE bit is changed from one to zero by a MODE SELECT command, then the device server transfers the
stopping transmission packet (see SFF-8609) as described in 9.4.2.1. If the RE bit is changed from zero to one
by a MODE SELECT command, then the device server transfers the protocol revision code packet (see
SFF-8609) as described in 9.4.2.1.
The PROTOCOL REVISION CODE field specifies the revision of SFF-8609 specification implemented. The
SFF-8609 revision code consists of two numeric values separated by a period (e.g., SFF-8609 Revision 1.2).
The PROTOCOL REVISION CODE field is encoded such that the first byte (i.e., most significant byte) of this field
contains the numerical value of the revision that precedes the period and the second byte (i.e., least
significant byte) of this field contains the numerical value of the revision that follows the period (e.g., SFF-8609
Revision 1.2 is encoded as 0102h). This field shall not be changeable by a MODE SELECT command.
The attribute control descriptor list contains a list of descriptors that controls if the attribute identified by the
descriptor identifier is transferred over the out of band management interface and other related control
settings.
Table 268 defines the format of the attribute control descriptor.
Byte\Bit 7 6 5 4 3 2 1 0
1 Reserved
2 (MSB)
DESCRIPTOR LENGTH (n-3)
3 (LSB)
The DESCRIPTOR IDENTIFIER field specifies the attribute associated with this descriptor. Table 269 defines the
values of the DESCRIPTOR IDENTIFIER field.
The DESCRIPTOR LENGTH field specifies the number of bytes of mode parameters that follow in this descriptor.
The descriptor specific mode parameters contain parameters that control the reporting of the specific
descriptor type (i.e., attribute) based on the descriptor identifier.
Table 270 defines the format of the Temperature attribute control descriptor.
Byte\Bit 7 6 5 4 3 2 1 0
1 Reserved
2 (MSB)
DESCRIPTOR LENGTH (0008h)
3 (LSB)
4 Reserved TRE
5 REPORTING INTERVAL
9 Reserved
11 Reserved
The DESCRIPTOR IDENTIFIER field and DESCRIPTOR LENGTH field are defined in 9.2.7.8.1 and shall be set to the
values shown in table 270 for the Temperature attribute control descriptor.
The temperature reporting enabled (TRE) bit set to one specifies that reporting of this attribute is enabled over
the out of band management interface. The TRE bit set to zero specifies that reporting of this attribute is not
enabled.
The REPORTING INTERVAL field specifies the interval in seconds (i.e., how often) that the device server should
transfer this attribute over the out of band management interface as described in this subclause. The interval
is from the start of the transfer of this attribute over the out of band management interface to the start of the
next transfer of this attribute. If the device server processes a MODE SELECT command that sets the
REPORTING INTERVAL field to zero, then the device server shall terminate that MODE SELECT command with
CHECK CONDITION status, with the sense key set to ILLEGAL REQUEST, and the additional sense code set
to INVALID FIELD IN PARAMETER LIST.
The MINIMUM REPORTING INTERVAL field, if non-zero, specifies the minimum time in seconds that shall elapse
between the start of the transfer of this attribute over the out of band management interface and the start of
the next transfer of this attribute, whether the transfer of this attribute is the result of a value in the REPORTING
INTERVAL field, the CHANGE UP field, or the CHANGE DOWN field.
If the MINIMUM REPORTING INTERVAL field is set to zero, then the CHANGE UP field, and the CHANGE DOWN field
are ignored.
If the MINIMUM REPORTING INTERVAL field is set to a non-zero value and the CHANGE UP field is:
a) set to zero, then the device server shall not transfer this attribute as the result of a temperature
increase; or
b) set to a non-zero value, then an increase in temperature from the last time the attribute was
transferred that is greater than or equal to the number of degrees Celsius specified in the CHANGE UP
field shall result in the device server transferring this attribute as described in this subclause.
If the MINIMUM REPORTING INTERVAL field is set to a non-zero value and the CHANGE DOWN field is:
a) set to zero, then the device server shall not transfer this attribute as the result of a temperature
decrease; or
b) set to a non-zero value, then a decrease in temperature from the last time the attribute was
transferred that is greater than or equal to the number of degrees Celsius specified in the CHANGE
DOWN field shall result in the device server transferring this attribute as described in this subclause.
The device server shall transfer this attribute over the out of band management interface, if:
a) the TRE bit is set to one;
b) the interval since the most recent transfer of this attribute is greater than or equal to the minimum
reporting interval, if non-zero; and
c) at least one of the following conditions is met:
A) the interval since the most recent transfer of this attribute is greater than or equal to the reporting
interval;
B) a temperature increase has occurred that is greater than or equal to the non-zero value in the
CHANGE UP field; or
C) a temperature decrease has occurred that is greater than or equal to the non-zero value in the
CHANGE DOWN field.
If the device server processes a MODE SELECT command that sets the MINIMUM REPORTING INTERVAL field to
a value greater than or equal to the REPORTING INTERVAL field, then the device server shall terminate that
MODE SELECT command with CHECK CONDITION status, with the sense key set to ILLEGAL REQUEST,
and the additional sense code set to INVALID FIELD IN PARAMETER LIST.
The TEST MODE field enables a test mode for this attribute that allows for simulating temperature conditions as
described in table 271. If the TEST MODE field is set to a non-zero value and the device server processes a
MODE SELECT command that changes any of the changeable fields in this descriptor, then the device should
restart the test mode as if the TEST MODE field was just changed to another non-zero value (e.g., if a test mode
sequence is in progress, and the device server processes a MODE SELECT command that changes
REPORTING INTERVAL field, then the device should restart the test mode sequence using the new reporting
interval value).
Code Description a
Test mode is disabled and the device server should transfer the actual temperature of the
00b SCSI device over the out of band management interface based on other fields in this
descriptor.
A test mode is enabled and the device server should transfer a sequence of incrementing
temperature values expressed in two’s complement over the out of band management
interface. The device server shall start at the temperature specified in the TEST MODE
TEMPERATURE field and increment the reported temperature by one every reporting interval
(i.e., based on the REPORTING INTERVAL field). Once the temperature being reported reaches
7Fh (127 degrees Celsius), the device server shall stop incrementing the reported
01b temperature value and continue to report this value until:
a) the test mode is disabled (i.e., 00b);
b) the test mode is changed to a different test mode; or
c) one of the following occurs:
A) a power on;
B) a hard reset; or
C) a logical unit reset.
A test mode is enabled and the device server should transfer a sequence of decrementing
temperature values expressed in two’s complement over the out of band management
interface. The device server shall start at the temperature specified in the TEST MODE
TEMPERATURE field and decrement the reported temperature by one every reporting interval
(i.e., based on the REPORTING INTERVAL field). Once the temperature being reported reaches
80h (-128 degrees Celsius), the device server shall stop decrementing the reported
10b temperature value and continue to report this value until:
a) the test mode is disabled (i.e., 00b);
b) the test mode is changed to a different test mode; or
c) one of the following occurs:
A) a power on;
B) a hard reset; or
C) a logical unit reset.
A test mode is enabled and the device server should transfer the temperature specified in
11b the TEST MODE TEMPERATURE field over the out of band management interface for every
reporting interval (i.e., based on the REPORTING INTERVAL field).
a
If a test mode is enabled, and the device server stopped transferring this attribute information
as part of a change to the stopped power condition or standby power condition as described in
9.4.2.1, then as a result of the logical unit returning to the active power condition or idle power
condition the device server should continue transferring this attribute information from where it
left off in the test mode (e.g., if the device server was transferring a sequence of incrementing
temperatures as part of the TEST MODE field being set to 01b and 75 degrees Celsius was the
last temperature transferred prior to a changing to a standby power condition or stopped power
condition, then after changing back to an active power condition or idle power condition, the
device server should resume transferring the temperature continuing at 76 degrees Celsius).
The TEST MODE TEMPERATURE field specifies the temperature in degrees Celsius in two’s complement notation
used in test modes specified by the TEST MODE field. This field is ignored if the TEST MODE field is set to 00b.
The Protocol Specific Port log page for SAS SSP defined in table 273 provides the SCSI application client a
means to determine information about phy events concerning the SAS target device’s phys. The parameter
codes for the Protocol Specific Port log page are listed in table 272.
Resettable or Support
Parameter code Description Reference
Changeable a Required
0000h Reserved
The Protocol Specific Port log page for SAS SSP has the format shown in table 273.
Table 273 – Protocol Specific Port log page for SAS SSP
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)
••• Protocol Specific Port log parameter (first) (see table 274)
••• •••
••• Protocol Specific Port log parameter (last) (see table 274)
n
The disable save (DS) bit, subpage format (SPF) bit, PAGE CODE field, SUBPAGE CODE field, and PAGE LENGTH
field are described in SPC-6. The SPF bit, PAGE CODE field, and SUBPAGE CODE field shall be set as shown in
table 273 for the Protocol Specific Port log page for SAS SSP.
The Protocol Specific Port log parameter list contains a Protocol Specific Port log parameter for each SCSI
port in the SAS target device.
9.2.8.2 Protocol Specific Port log parameter for SAS target ports
Table 274 defines the format for the Protocol Specific Port log parameter for SAS target ports. The SAS log
parameter is a list parameter (i.e., not a data counter) and only has cumulative (i.e., not threshold) values (see
SPC-6).
Table 274 – Protocol Specific Port log parameter for SAS target ports
Byte\Bit 7 6 5 4 3 2 1 0
0 (MSB)
PARAMETER CODE (relative target port identifier)
1 (LSB)
Parameter control byte - binary format list log parameter (see SPC-6)
2
DU Obsolete TSD Obsolete FORMAT AND LINKING
3 PARAMETER LENGTH (y - 3)
5 Reserved
6 GENERATION CODE
7 NUMBER OF PHYS
••• •••
y-m
The PARAMETER CODE field is defined in SPC-6 and contains the relative target port identifier (see SPC-6) of
the SSP target port that the log parameter describes.
The DU bit, TSD bit, and FORMAT AND LINKING field are described in SPC-6. These fields shall be set as
described for a binary format list log parameter (see SPC-6) for the Protocol Specific Port log parameter for
SAS target ports.
The PARAMETER LENGTH field is defined in SPC-6.
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 274 for the Protocol
Specific Port log page parameter for SAS target ports.
The GENERATION CODE field is defined in the Phy Control and Discover mode page (see 9.2.7.5).
The NUMBER OF PHYS field contains the number of phys in the SAS target port (not in the entire SAS target
device) and indicates the number of SAS phy log descriptors in the SAS phy log descriptor list.
The SAS phy log descriptor list contains SAS phy log descriptors.
Table 275 defines the SAS phy log descriptor.
Byte\Bit 7 6 5 4 3 2 1 0
0 Reserved
1 PHY IDENTIFIER
2 Reserved
15
16
23
25
••• Reserved
31
Byte\Bit 7 6 5 4 3 2 1 0
32 (MSB)
35 (LSB)
36 (MSB)
39 (LSB)
40 (MSB)
43 (LSB)
44 (MSB)
47 (LSB)
48
Reserved
49
52
••• •••
m - 11
The SAS PHY LOG DESCRIPTOR LENGTH field indicates the number of bytes that follow in the SAS phy log
descriptor. A SAS PHY LOG DESCRIPTOR LENGTH field set to 00h indicates that there are 44 additional bytes.
NOTE 63 - Logical units compliant with SAS and SAS-1.1 only support a 48 byte SAS phy log descriptor.
The INVALID DWORD COUNT field, RUNNING DISPARITY ERROR COUNT field, LOSS OF DWORD SYNCHRONIZATION
COUNT field, and PHY RESET PROBLEM COUNT field are defined in the SMP REPORT PHY ERROR LOG
response (see 9.4.4.11).
For the INVALID DWORD COUNT field, RUNNING DISPARITY ERROR COUNT field, LOSS OF DWORD SYNCHRONIZATION
COUNT field, and PHY RESET PROBLEM COUNT field, the phy should support a 32-bit counter, however the phy
may support a counter size less than 32-bits. If it reaches its maximum value, then the counter shall stop and
the SCSI device server shall set the field to FFFFFFFFh in the SAS phy log descriptor.
The PHY EVENT DESCRIPTOR LENGTH field indicates the number of bytes in the phy event descriptor (see
9.4.4.14.4).
The NUMBER OF PHY EVENT DESCRIPTORS field indicates the number of phy event descriptors in the phy event
descriptor list.
Each phy event descriptor uses the format defined for the SMP REPORT PHY EVENT function in table 346
(see 9.4.4.14.4).
The fields in the SAS phy log descriptor not defined in this subclause are defined in the SMP DISCOVER
response (see 9.4.4.10). These fields shall not be changeable with the LOG SELECT command.
Table 276 defines diagnostic pages supported by logical units in SCSI target devices in SAS domains (i.e.,
with SSP target ports) that support the SEND DIAGNOSTIC or RECEIVE DIAGNOSTIC RESULTS
commands.
An enclosure services process (see SES-3) describing elements in a SAS domain that are attached to a
zoning expander device with zoning enabled (see 4.9) shall apply the zone permission table when providing
access to those elements. Element types that may be subject to zoning include:
a) Device Slot element;
b) Array Device Slot element;
c) Enclosure Services Controller Electronics element;
d) SCC Controller Electronics element;
e) SCSI Port/Transceiver element;
f) SCSI Target Port element;
g) SCSI Initiator Port element;
h) SAS Expander element; and
i) SAS Connector element.
Table 277 defines SCSI enclosure services diagnostic pages supported by logical units in SCSI target devices
in SAS domains (e.g., with SSP target ports) that are affected by zoning.
The Protocol Specific diagnostic page provides a method for a SCSI application client to enable and disable
phy test functions (see 4.12) for selected phys. The diagnostic page format is specified in SPC-6.
The Protocol Specific diagnostic page is sent by a SCSI application client using the SEND DIAGNOSTIC
command. If the SCSI device server receives a RECEIVE DIAGNOSTIC RESULTS command with the PAGE
CODE field set to 3Fh, then the SCSI device server shall terminate the command with CHECK CONDITION
status with the sense key set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN
CDB.
Table 278 defines the Protocol Specific diagnostic page for SAS SSP.
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (001Ch)
3 (LSB)
4 PHY IDENTIFIER
PHY TEST
PHY TEST FUNCTION
7 Reserved FUNCTION PHY TEST FUNCTION PHYSICAL LINK RATE
SSC
SATA
••• Reserved
10
12
19
20
••• Reserved
31
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 278 for the Protocol Specific
diagnostic page for SAS SSP.
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 278 for the Protocol
Specific diagnostic page for SAS SSP indicating this is a SAS SSP specific diagnostic page.
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 278 for the Protocol Specific
diagnostic page for SAS SSP.
The PHY IDENTIFIER field specifies the phy identifier (see 4.2.10) of the phy that is to perform or to stop
performing a phy test function (i.e., the selected phy). If the PHY IDENTIFIER field specifies a phy that does not
exist, then the SCSI device server shall terminate the SEND DIAGNOSTIC command with CHECK
CONDITION status with the sense key set to ILLEGAL REQUEST and the additional sense code set to
INVALID FIELD IN PARAMETER LIST.
The PHY TEST FUNCTION field specifies the phy test function to be performed and is defined in table 279. If the
PHY TEST FUNCTION field specifies a phy test function that is not supported, then the SCSI device server shall
terminate the SEND DIAGNOSTIC command with CHECK CONDITION status with the sense key set to
ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER LIST.
If the selected phy is performing a phy test function, then the selected phy
shall stop performing the phy test function and originate a link reset
sequence.
00h STOP
If the selected phy is not performing a phy test function, then this function has
no effect on the selected phy. a
If the selected phy is not performing a phy test function, then the selected phy
shall perform the transmit pattern phy test function (see 4.12.2) using the phy
test pattern specified by the PHY TEST PATTERN field and the physical link rate
specified by the PHY TEST FUNCTION PHYSICAL LINK RATE field.
TRANSMIT
01h
PATTERN
If the selected phy is performing a phy test function, then the SCSI device
server shall terminate the SEND DIAGNOSTIC command with CHECK
CONDITION status with the sense key set to ILLEGAL REQUEST and the
additional sense code set to PHY TEST FUNCTION IN PROGRESS. a
If the PHY TEST FUNCTION field is set to 01h (i.e., TRANSMIT_PATTERN), then the PHY TEST PATTERN field
specifies the phy test pattern to be transmitted as defined by table 280. If the PHY TEST PATTERN field specifies
a phy test pattern that is not supported by the specified SAS phy, then the SCSI device server shall terminate
the SEND DIAGNOSTIC command with CHECK CONDITION status with the sense key set to ILLEGAL
REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER LIST.
00h Reserved
The selected phy shall repeatedly transmit JTPAT for RD+ and RD- (see
01h JTPAT
A.1).
02h CJTPAT The selected phy shall repeatedly transmit CJTPAT (see A.2).
03h PRBS9 The selected phy shall repeatedly transmit PRBS9 (see SAS-4)
04h PRBS15 The selected phy shall repeatedly transmit PRBS15 (see SAS-4)
The selected phy shall repeatedly transmit the TRAIN pattern (see
10h TRAIN
5.11.4.2.3.5).
12h IDLE The selected phy shall repeatedly transmit idle dwords (see 6.6).
The selected phy shall repeatedly transmit the dwords specified by the
PHY TEST PATTERN DWORDS CONTROL field and the PHY TEST PATTERN
DWORDS field without scrambling.
40h TWO_DWORDS
This pattern is only for use for characterization of the transmitter device
and the passive interconnect. Phys are not required to support all
patterns that may be specified.
A PHY TEST FUNCTION SATA bit set to one specifies that the phy shall transmit as a SATA phy during the phy test
function. A PHY TEST FUNCTION SATA bit set to zero specifies that the phy shall transmit as a SAS phy during
the phy test function. If the PHY TEST FUNCTION SATA bit is set to one and the phy does not support SATA, then
the SCSI device server shall terminate the SEND DIAGNOSTIC command with CHECK CONDITION status
with the sense key set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN
PARAMETER LIST.
The PHY TEST FUNCTION SSC field specifies the SSC modulation type (see SAS-4) that the phy shall use during
transmission during the phy test function and is defined in table 281. If the SSC modulation type specified by
the PHY TEST FUNCTION SSC field is not supported (e.g., if the phy is a SAS phy that does not support
center-spreading SSC, then it only supports no-spreading and down-spreading SSC), then the SCSI device
server shall terminate the SEND DIAGNOSTIC command with CHECK CONDITION status with the sense key
set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER LIST.
Code Description
00b No-spreading
11b Reserved
a If the PHY TEST FUNCTION SATA bit is set to one (i.e., a SATA phy is requested to transmit
center-spreading), then the SCSI device server shall terminate the SEND DIAGNOSTIC command with
CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and the additional sense
code set to INVALID FIELD IN PARAMETER LIST.
The PHY TEST FUNCTION PHYSICAL LINK RATE field specifies the physical link rate at which the phy test function
shall be performed and is defined in table 282. If the physical link rate specified by the PHY TEST FUNCTION
PHYSICAL LINK RATE field is less than the hardware minimum physical link rate or greater than the hardware
maximum physical link rate, then the SCSI device server shall terminate the SEND DIAGNOSTIC command
with CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and the additional sense code
set to INVALID FIELD IN PARAMETER LIST.
Code Description
0h to 7h Reserved
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
Dh to Fh Reserved
The PHY TEST PATTERN DWORDS CONTROL field and PHY TEST PATTERN DWORDS field are only used if the PHY
TEST PATTERN field is set to 40h (i.e., TWO_DWORDS) (see table 280).
The PHY TEST PATTERN DWORDS CONTROL field defined in table 283 controls whether the bytes in the PHY TEST
PATTERN DWORDS field are sent as control characters or data characters.
Code Description
Each byte in the PHY TEST PATTERN DWORDS field shall be sent as a data character (i.e., Dxx.y)
00h
(see 5.3.6) without scrambling.
The fifth byte in the PHY TEST PATTERN DWORDS field shall be sent as a control character (i.e.,
08h
Kxx.y) (see 5.3.7). Each other byte shall be sent as a data character without scrambling.
The first byte in the PHY TEST PATTERN DWORDS field shall be sent as a control character. Each
80h
other byte shall be sent as a data character without scrambling.
The first and fifth bytes in the PHY TEST PATTERN DWORDS field shall each be sent as a control
88h
character. Each other byte shall be sent as a data character without scrambling.
All
Reserved
others
The PHY TEST PATTERN DWORDS field contains the two dwords that are sent during a TWO_DWORDS test
pattern. Whether each byte in the dwords is sent as a control character or a data character is specified by the
PHY TEST PATTERN DWORDS CONTROL field. A byte specifying a control character shall only specify a control
character that is used in this standard (see table 50 in 5.3.7) and is supported by the phy (i.e., all phys support
K28.5 (i.e., BCh), but only phys supporting STP support K28.3 (i.e., 7Ch) or K28.6 (i.e., DCh)).
The SCSI device server shall terminate a SEND DIAGNOSTIC command specifying any unsupported
combination with CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and the
additional sense code set to INVALID FIELD IN PARAMETER LIST.
PHY TEST
PATTERN PHY TEST
DWORDS PATTERN Description
CONTROL DWORDS field
field
D10.2 characters (see table 48 in 5.3.6). This pattern contains 01b repeating
4A4A4A4A
00h and has the highest possible frequency. This pattern may be used for
4A4A4A4Ah
measuring intra-pair skew, rise time, fall time, and RJ (see SAS-4).
D21.5 characters (see table 48 in 5.3.6). This pattern contains 10b repeating
B5B5B5B5
00h and has the highest possible frequency. This pattern may be used for
B5B5B5B5h
measuring intra-pair skew, rise time, fall time, and RJ (see SAS-4).
D24.3 characters (see table 48 in 5.3.6). This pattern contains 0011b or 1100b
repeating (depending on starting disparity) and has half the highest possible
78787878
00h frequency. This pattern may be used for calibrating the JTF, calibrating the
78787878h
reference transmitter test load, and measuring transmitter device
S-parameters (see SAS-4).
D926D926 Pairs of D25.6 and D6.1 characters (see table 48 in 5.3.6). This pattern
00h
D926D926h contains 1001b repeating and has half the highest possible frequency.
D30.3 characters (see table 48 in 5.3.6). This pattern contains four bits of one
polarity, three bits of the other polarity, and three bits of the first polarity (e.g.,
7E7E7E7E
00h 11 11000111b), followed by the inverse (e.g., 00 00111000b). This pattern
7E7E7E7Eh
may be used for measuring transmitter equalization and SSC-induced jitter
(see SAS-4).
ALIGN (0) primitives (see table 124 in 6.2.3). This pattern may appear during
BC4A4A7B
88h OOB bursts (SAS-4), the SATA speed negotiation sequence (see 5.11.2.2),
BC4A4A7Bh
and the SAS speed negotiation sequence (see 5.11.4.2).
BC070707 ALIGN (1) primitives (see table 124 in 6.2.3). This pattern may appear during
88h
BC070707h the SAS speed negotiation sequences (see 5.11.4.2).
BC4A4A7B Pairs of an ALIGN (0) (see table 124 in 6.2.3) and a dword containing D10.2,
80h
4A787E7Eh D24.3, D30.3, and D30.3 characters (see table 48 in 5.3.6).
If the SELECT bit (see SES-3) is set to one for any element that represents a SAS device attached to an
expander phy for which the SAS initiator port performing the SEND DIAGNOSTIC command does not have
access according to the zone permission table, then the enclosure services process shall terminate the SEND
DIAGNOSTIC command with CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and
the additional sense code set to INVALID FIELD IN PARAMETER LIST.
The enclosure services process shall set the ELEMENT STATUS CODE field (see SES-3) to 8h (i.e., No Access
Allowed) for each element that represents a SAS device attached to an expander phy for which the SAS
initiator port performing the RECEIVE DIAGNOSTIC RESULTS command does not have access according to
the zone permission table.
The enclosure services process shall set the INVALID bit to one in the Additional Element Status descriptor (see
SES-3) for each element that represents a SAS target device attached to an expander phy for which the SAS
initiator port performing the RECEIVE DIAGNOSTIC RESULTS command does not have access according to
the zone permission table.
The logical unit power condition states (see 9.2.10.2) are controlled by the Power Condition mode page (see
SPC-6) and START STOP UNIT command (see SBC-3), if implemented, and shall interact with the SL_P_C
state machine (see 6.14.5) to control temporary consumption of additional power (e.g., to spin up rotating
media) as described in this subclause.
The device server in the logical unit sends requests to the SL_P_C state machine and receives confirmations
from the SL_P_C state machine to delay:
a) initial temporary consumption of additional power after power on;
b) temporary consumption of additional power requested by START STOP UNIT commands; and
c) temporary consumption of additional power while making a change from a standby power condition to
a higher power condition.
The SA_PC (SCSI application layer power condition) state machine describes how the SAS target device
processes logical unit power condition state change requests.
Logical units with device types other than direct-access block device (e.g., sequential-access devices) that
implement an additional power condition, not defined by this standard, that consumes more peak power
during a change from that additional power condition to a higher power condition than the typical peak power
consumption in the active power condition shall use the SL_P_C state machine (see 6.14.5) to delay
consumption of additional power when making the change to a higher power condition.
NOTE 64 - This state machine is an enhanced version of the logical unit power condition state machines
described in SPC-6 and SBC-3 that adds the interactions with the SL_P_C state machine.
While in the following SA_PC states the logical unit may be increasing power usage to enter a higher power
condition:
a) SA_PC_4:Active_Wait;
b) SA_PC_7:Idle_Wait; or
c) SA_PC_9:Standby_Wait.
While in the following SA_PC states the logical unit may be decreasing power usage to enter a lower power
condition:
a) SA_PC_5:Wait_Idle;
b) SA_PC_6:Wait_Standby; or
c) SA_PC_10:Wait_Stopped.
Any command causing a state machine transition (e.g., a START STOP UNIT command with the IMMED bit set
to zero) shall not complete with GOOD status until this state machine reaches the state (i.e., power condition)
required by the command.
This state machine shall start in the SA_PC_0:Powered_On state after power on. For direct-access block
devices, the SA_PC state machine shall be configured to transition to the SA_PC_8:Stopped state or the
SA_PC_4:Active_Wait state after power on by a mechanism outside the scope of this standard.
This state machine receives the following confirmations from the SL_P_C link layer state machine:
a) Power Use Granted; and
b) Power Request Failed.
This state machine sends the following requests to the SL_P_C link layer state machine:
a) Request Additional Power; and
b) Power Use Complete.
This state machine sends the following message to the management application layer:
a) Phy Power Condition Status.
This state machine uses the following timers that are controlled by the Power Condition mode page (see
SPC-6):
a) the idle condition timers; and
b) the standby condition timers.
If the SCSI device server processes a START STOP UNIT command with the IMMED bit set to one, then the
SCSI device server shall complete the command before completing the transition, if any, specified by a
START STOP UNIT command.
SA_PC_9: SA_PC_3:
Standby_Wait Standby
SA_PC_1:
Active
SA_PC_10:
Wait_Stopped
SA_PC_6:
Wait_Standby
Figure 211 – SA_PC (SCSI application layer power condition) state machine for SAS
See the PC0:Power_On state in SPC-6 for details about this state.
For SAS target devices that are not direct-access block devices, see the PC0:Power_On to PC4:Active_Wait
transition in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC0:Power_On to SSU_PC4:Active_Wait transition in SBC-3
for details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC0:Power_On to SSU_PC8:Stopped transition in SBC-3 for details about this transition.
See the PC1:Active state in SPC-6 for details about this state.
For SAS target devices that are not direct-access block devices, see the PC1:Active to PC5:Wait_Idle
transition in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC1:Active to SSU_PC5:Wait_Idle transition in SBC-3 for
details about this transition.
For SAS target devices that are not direct-access block devices, see the PC1:Active to PC6:Wait_Standby
transition in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC1:Active to SSU_PC6:Wait_Standby transition in SBC-3 for
details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC1:Active to SSU_PC10:Wait_Stopped transition in SBC-3 for details about this transition.
See the PC2:Idle state in SPC-6 for details about this state.
For SAS target devices that are not direct-access block devices, see the PC2:Idle to PC4:Active_Wait
transition in SPC-6 for details about this transition.
For direct access block devices, see the SSU_PC2:Idle to SSU_PC4:Active_Wait transition in SBC-3 for
details about this transition.
For SAS target devices that are not direct-access block devices, see the PC2:Idle to PC5:Wait_Idle transition
in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC2:Idle to SSU_PC5:Wait_Idle transition in SBC-3 for details
about this transition.
For devices that are not direct-access block device, see the PC2:Idle to PC6:Wait_Standby transition in
SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC2:Idles to SSU_PC6:Wait_Standby transition in SBC-3 for
details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC2:Idle to SSU_PC7:Idle_Wait transition in SBC-3 for details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC2:Idle to SSU_PC10:Wait_Stopped transition in SBC-3 for details about this transition.
See the PC3:Standby state in SPC-6 for details about this state.
For SAS target devices that are not direct-access block devices, see the PC3:Standby to PC4:Active_Wait
transition in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC3:Standby to SSU_PC4:Active_Wait transition in SBC-3 for
details about this transition.
For SAS target devices that are not direct-access block devices, see the PC3:Standby to PC6:Wait_Standby
transition in SPC-6 for details about this transition.
For direct-access block devices, see the SSU_PC3:Standby to SSU_PC6:Wait_Standby transition in SBC-3
for details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC3:Standby to SSU_PC7:Idle_Wait transition in SBC-3 for details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC3:Standby to SSU_PC9:Standby_Wait transition in SBC-3 for details about this transition.
This transition is only implemented in logical units that are direct-access block devices. See the
SSU_PC3:Standby to SSU_PC10:Wait_Stopped transition in SBC-3 for details about this transition.
If this state was entered with a Transitioning From Power On argument, Transitioning From Standby
argument, or Transitioning From Stopped argument, then this state shall:
1) send a Phy Power Condition Status (Disable Low Phy Power Conditions) message to the
management application layer; and
2) if power control is enabled and the consumption of additional power is required, then send a Request
Additional Power request to the SL_P_C state machine (see 6.14.5).
While in this state:
a) each idle condition timer that is enabled and not expired is running;
b) each standby condition timer that is enabled and not expired is running;
c) the SCSI device server shall provide pollable sense data (see SPC-6) with the sense key set to NO
SENSE and the additional sense code set to LOGICAL UNIT TRANSITIONING TO ANOTHER
POWER CONDITION;
d) if a Power Request Failed (Grant Timeout) confirmation is received, then this state shall send a
Request Additional Power request to the SL_P_C state machine on any phy;
e) if a Power Request Failed (ACK Timeout) confirmation or a Power Request Failed (Phy Disabled)
confirmation is received, then this state should send a Request Additional Power request to the
SL_P_C state machine on a different phy from the one that Power Request Failed confirmation was
received; and
f) the logical unit is performing the operations required for it to be in the SA_PC_1:Active state (e.g., a
hard disk drive spins up its media).
If this state was entered with a Transitioning From Idle argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero (see SBC-3), that the SCSI device server
is able to process and complete while in the SA_PC_2:Idle state;
b) the peak power consumed in this state shall be no more than the typical peak power consumed in the
SA_PC_1: Active state; and
c) if:
A) this state was entered with a Transitioning From Idle_c argument; and
B) the CCF IDLE field in the Power Conditions mode page (see SPC-6) is set to 10b (i.e., enabled),
then the SCSI device server shall terminate any command, except START STOP UNIT command,
that requires the logical unit be in the SA_PC_1:Active state to continue processing, with CHECK
CONDITION status, with the sense key set to NOT READY and the additional sense code set to
LOGICAL UNIT IS IN PROCESS OF BECOMING READY.
If this state was entered with a Transitioning From Standby argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero, that the SCSI device server is able to
process and complete while in the SA_PC_3:Standby state;
b) if the CCF STANDBY field in the Power Conditions mode page (see SPC-6) is set to 10b (i.e., enabled),
then the SCSI device server shall terminate any command, except a START STOP UNIT command,
that requires the logical unit be in the SA_PC_1:Active state or SA_PC_2:Idle state to continue
processing, with CHECK CONDITION status, with the sense key set to NOT READY and:
A) if power control is enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, ADDITIONAL
POWER USE NOT YET GRANTED;
B) if power control is not enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, NOTIFY (ENABLE
SPINUP) REQUIRED; or
C) if the Power Use Granted confirmation has been received, then the additional sense code set to
LOGICAL UNIT IN THE PROCESS OF BECOMING READY;
c) if a Power Use Granted confirmation has not been received, then the peak power consumption shall
be no more than the typical peak power consumed in the SA_PC_1: Active state; and
d) if a Power Use Granted confirmation has been received, then the peak power consumption is not
limited by this standard.
If this state was entered with a Transitioning From Stopped argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero, that the SCSI device server is able to
process and complete while in the SA_PC_8:Stopped state;
b) if the CCF STOPPED field in the Power Conditions mode page (see SPC-6) is set to 10b (i.e., enabled),
then the SCSI device server shall terminate any TEST UNIT READY command or media access
command, with CHECK CONDITION status, with the sense key set to NOT READY and:
A) if power control is enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, ADDITIONAL
POWER USE NOT YET GRANTED;
B) if power control is not enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, NOTIFY (ENABLE
SPINUP) REQUIRED; or
C) if the Power Use Granted confirmation has been received, then the additional sense code set to
LOGICAL UNIT IN THE PROCESS OF BECOMING READY;
c) if a Power Use Granted confirmation has not been received, then the peak power consumption shall
be no more than the typical peak power consumed in the SA_PC_1: Active state; and
d) if a Power Use Granted confirmation has been received, then the peak power consumption is not
limited by this standard.
If this state was entered with a Transitioning From Powered On argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero, that the SCSI device server is able to
process and complete while in the SA_PC_8:Stopped state for direct-access devices;
b) the SCSI device server shall terminate any TEST UNIT READY command or media access command
with CHECK CONDITION status with the sense key set to NOT READY and:
A) if power control is enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, ADDITIONAL
POWER USE NOT YET GRANTED;
B) if power control is not enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, NOTIFY (ENABLE
SPINUP) REQUIRED; or
C) if the Power Use Granted confirmation has been received, then the additional sense code shall be
set to LOGICAL UNIT IN THE PROCESS OF BECOMING READY;
c) if a Power Use Granted confirmation has not been received, then the peak power consumption shall
be no more than the typical peak power consumed in the SA_PC_1: Active state; and
d) if a Power Use Granted confirmation has been received, then the peak power consumption is not
limited by this standard.
If an idle condition timer or a standby condition timer is enabled and expires, then that timer shall be ignored.
When the SCSI device server meets the requirements for the logical unit being in the SA_PC_1:Active state
this state shall:
1) if this state sent a Request Additional Power request to the SL_P_C state machine (see 6.14.5), then
send a Power Use Complete request to the SL_P_C state machine (see 6.14.5); and
2) send a Phy Power Condition Status (Enable Low Phy Power Conditions) message to the
management application layer.
See the PC5:Wait_Idle state in SPC-6 for details about this state.
See the PC5:Wait_Idle to PC2:Idle transition in SPC-6 for details about this transition.
See the PC6:Wait_Standby state in SPC-6 for details about this state.
See the PC6:Wait_Standby to PC3:Standby transition in SPC-6 for details about this transition.
If this state was entered with a Transitioning From Standby argument or Transitioning From Stopped
argument, then this state shall:
1) send a Phy Power Condition Status (Disable Low Phy Power Conditions) message to the
management application layer; and
2) if power control is enabled and the consumption of additional power is required, then send a Request
Additional Power request to the SL_P_C state machine (see 6.14.5).
While in this state:
a) each idle condition timer that is enabled and not expired is running;
b) each standby condition timer that is enabled and not expired is running;
c) the SCSI device server shall provide pollable sense data (see SPC-6) with the sense key set to NO
SENSE and the additional sense code set to LOGICAL UNIT TRANSITIONING TO ANOTHER
POWER CONDITION;
d) if a Power Request Failed (Grant Timeout) confirmation is received, then this state shall send a
Request Additional Power request to the SL_P_C state machine on any phy;
e) if a Power Request Failed (ACK Timeout) confirmation or a Power Request Failed (Phy Disabled)
confirmation is received, then this state should send a Request Additional Power request to the
SL_P_C state machine on a different phy from the one that Power Request Failed confirmation was
received; and
f) the logical unit is performing the operations required for it to be in the SA_PC_2:Idle state (e.g., a hard
disk drive spinning up its media).
If this state was entered with a Transitioning From Idle argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero (see SBC-3), that the SCSI device server
is able to process and complete while in the SA_PC_2:Idle state; and
b) the peak power consumed in this state shall be no more than the typical peak power consumed in the
SA_PC_1: Active state.
If this state was entered with a Transitioning From Standby argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero, that the SCSI device server is able to
process and complete while in the SA_PC_3:Standby state;
b) if the CCF STANDBY field in the Power Conditions mode page (see SPC-6) is set to 10b (i.e., enabled),
then the SCSI device server shall terminate any command, except a START STOP UNIT command,
that requires the logical unit be in the SA_PC_1:Active state or SA_PC_2:Idle state to continue
processing, with CHECK CONDITION status, with the sense key set to NOT READY and:
A) if power control is enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, ADDITIONAL
POWER USE NOT YET GRANTED;
B) if power control is not enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, NOTIFY (ENABLE
SPINUP) REQUIRED; or
C) if the Power Use Granted confirmation has been received, then the additional sense code set to
LOGICAL UNIT IN THE PROCESS OF BECOMING READY;
c) if a Power Use Granted confirmation has not been received, then the peak power consumption shall
be no more than the typical peak power consumed in the SA_PC_1: Active state; and
d) if a Power Use Granted confirmation has been received, then the peak power consumption is not
limited by this standard.
If this state was entered with a Transitioning From Stopped argument, then:
a) the SCSI device server is capable of processing and completing the same commands, except a
START STOP UNIT command with the IMMED bit set to zero, that the SCSI device server is able to
process and complete while in the SA_PC_8:Stopped state;
b) if the CCF STOPPED field in the Power Conditions mode page (see SPC-6) is set to 10b (i.e., enabled),
then the SCSI device server shall terminate any TEST UNIT READY command or media access
command, with CHECK CONDITION status, with the sense key set to NOT READY and:
A) if power control is enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, ADDITIONAL
POWER USE NOT YET GRANTED;
B) if power control is not enabled (see 6.14) and the Power Use Granted confirmation has not been
received, then the additional sense code set to LOGICAL UNIT NOT READY, NOTIFY (ENABLE
SPINUP) REQUIRED; or
C) if the Power Use Granted confirmation has been received, then the additional sense code set to
LOGICAL UNIT IN THE PROCESS OF BECOMING READY;
c) if a Power Use Granted confirmation has not been received, then the peak power consumption shall
be no more than the typical peak power consumed in the SA_PC_1: Active state; and
d) if a Power Use Granted confirmation has been received, then the peak power consumption is not
limited.
If an idle condition timer or a standby condition timer is enabled and expires, then that timer shall be ignored.
When the SCSI device server meets the requirements for the logical unit being in the:
a) idle_a power condition, if this state was entered with a Transitioning To Idle_a argument;
b) idle_b power condition, if this state was entered with a Transitioning To Idle_b argument; or
c) idle_c power condition, if this state was entered with a Transitioning To Idle_c argument,
this state shall:
1) if this state sent a Request Additional Power request to the SL_P_C state machine (see 6.14.5), then
send a Power Use Complete request to the SL_P_C state machine (see 6.14.5); and
2) send a Phy Power Condition Status (Enable Low Phy Power Conditions) message to the
management application layer.
This state is only implemented in logical units that are direct-access block devices.
See the SSU_PC8:Stopped state in SBC-3 for details about this state.
See the SSU_PC8:Stopped to SSU_PC4:Active_Wait transition in SBC-3 for details about this transition.
The transition shall include:
a) a From Stopped argument.
See the SSU_PC8:Stopped to SSU_PC7:Idle_Wait transition in SBC-3 for details about this transition.
See the SSU_PC8:Stopped to SSU_PC9:Standby_Wait transition in SBC-3 for details about this transition.
This state is only implemented in logical units that are direct-access block devices.
See the SSU_PC9:Standby_Wait state in SBC-3 for details about this state.
See the SSU_PC9:Standby_Wait to SSU_PC3:Standby transition in SBC-3 for details about this transition.
This state is only implemented in logical units that are direct-access block devices.
See the SSU_PC10:Standby_Wait state in SBC-3 for details about this state.
See the SSU_PC10:Wait_Stopped to SSU_PC8:Stopped transition in SBC-3 for details about this transition.
Table 286 lists VPD pages for which this standard defines special requirements.
Table 286 – VPD pages with special requirements for SAS SSP
Page Support
VPD page name Reference
code requirements
90h Protocol Specific Logical Unit Information VPD page 9.2.11.3 and SPC-6 Mandatory
91h Protocol Specific Port Information VPD page 9.2.11.4 and SPC-6 Mandatory
In the Device Identification VPD page (83h) returned in response to an INQUIRY command (see SPC-6), each
logical unit in a SAS target device shall include the designation descriptors for the target port identifier (see
4.2.9) and the relative target port identifier (see SAM-5 and SPC-6) listed in table 287.
Table 287 – Device Identification VPD page designation descriptors for the SAS target port
Designation descriptor
Field in designation
descriptor
Target port identifier Relative target port identifier
ASSOCIATION 01b (i.e., SCSI target port) 01b (i.e., SCSI target port)
DESIGNATOR LENGTH 8 4
In the Device Identification VPD page (83h) returned in response to an INQUIRY command (see SPC-6), each
logical unit in a SAS target device shall include a designation descriptor for the SAS target device name (see
4.2.6) using NAA format and may include a designation descriptor for the SAS target device name using the
SCSI name string format as listed in table 288.
Table 288 – Device Identification VPD page designation descriptors for the SAS target device
Designation descriptor
Field in designation
descriptor
NAA format (required) SCSI name string format (optional)
ASSOCIATION 10b (i.e., SCSI target device) 10b (i.e., SCSI target device)
DESIGNATOR LENGTH 8 24
Logical units may include designation descriptors in addition to those required by this standard (e.g., SCSI
target devices with SCSI target ports using other SCSI transport protocols may return additional SCSI target
device names for those other SCSI transport protocols).
The Protocol Specific Logical Unit Information VPD page (see SPC-6) contains parameters for the logical unit
that are protocol specific based on the I_T nexus being used to access the logical unit.
The Protocol Specific Logical Unit Information VPD page shall only return information relating to SAS target
ports.
Table 289 defines the Protocol Specific Logical Unit Information VPD page for logical units with SSP ports.
Table 289 – Protocol Specific Logical Unit Information VPD page for SAS SSP
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)
••• •••
The PERIPHERAL QUALIFIER field and the PERIPHERAL DEVICE TYPE field are defined in SPC-6.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 289 for the Protocol Specific
Logical Unit Information VPD page for SAS SSP.
The PAGE LENGTH field is defined in SPC-6.
The logical unit information descriptor list is defined in SPC-6 and shall contain a logical unit information
descriptor for each SAS target port known to the SCSI device server.
Table 290 defines the logical unit information descriptor for logical units with SSP target ports.
Byte\Bit 7 6 5 4 3 2 1 0
0 (MSB)
RELATIVE PORT IDENTIFIER
1 (LSB)
••• Reserved
5
6 (MSB)
DESCRIPTOR LENGTH (0004h)
7 (LSB)
TLR
8 Reserved CONTROL
SUPPORTED
••• Reserved
11
The Protocol Specific Port Information VPD page (see SPC-6) contains parameters for the SAS target ports
that are protocol specific and are the same for all logical units in the SAS target device.
Table 291 defines the Protocol Specific Port Information VPD page for the SSP target ports.
Table 291 – Protocol Specific Port Information VPD page for SAS SSP
Byte\Bit 7 6 5 4 3 2 1 0
2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)
••• •••
The PERIPHERAL QUALIFIER field and the PERIPHERAL DEVICE TYPE field are defined in SPC-6.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 291 for the Protocol Specific Port
Information VPD page for SAS SSP.
The PAGE LENGTH field is defined in SPC-6.
The port information descriptor list is defined in SPC-6 and shall contain a port information descriptor for each
SAS target port known to the SCSI device server.
Table 292 defines the port information descriptor for the SSP target ports.
Byte\Bit 7 6 5 4 3 2 1 0
0 (MSB)
RELATIVE PORT IDENTIFIER
1 (LSB)
3 Reserved PWR_D_S
4
Reserved
5
6 (MSB)
DESCRIPTOR LENGTH (n-7)
7 (LSB)
••• •••
n-3
Byte\Bit 7 6 5 4 3 2 1 0
0 Reserved
1 PHY IDENTIFIER
SSP
2 Reserved PERSISTENT
CAPABLE
3 Reserved
The PHY IDENTIFIER field is defined in the SMP DISCOVER response (see 9.4.4.10).
An SSP PERSISTENT CAPABLE bit set to one indicates that the phy supports a persistent connection (see 4.1.13).
An SSP PERSISTENT CAPABLE bit set to zero indicates that the phy does not support persistent connections.
A SAS target device uses the READY LED signal to activate an externally visible LED that indicates the state
of readiness and activity of the SAS target device and may be used to transfer attribute information as defined
in SFF-8609 and controlled using the Out Of Band Management Control mode page (see 9.2.7.8). The
READY LED signal electrical characteristics are described in SAS-4.
The system is not required to generate any visual output when the READY LED signal is asserted. Additional
vendor specific flashing patterns may be used to signal vendor specific conditions.
SAS target devices without SSP target ports may transmit the READY LED signal using vendor specific
methods and patterns.
SAS target devices with SSP target ports shall follow the behavior indicated by the READY LED MEANING bit in
the Protocol Specific Port mode page (see 9.2.7.4) as described in table 294.
Power
condition a
(see READY LED MEANING bit set to zero b READY LED MEANING bit set to one
9.2.10) or
activity
If the SAS target device has rotating media and is in the process of performing a spinup or
spinup/ spindown, then the SAS target device shall toggle the READY LED signal between the
spindown asserted and negated states with a 1 s ± 0.1 s cycle using a 50 % ± 10 % duty cycle (e.g., the
LED is on for 0.5 s and off for 0.5 s).
If the SAS target device is in the process of formatting media, then the SAS target device shall
formatting
toggle the READY LED signal between the asserted and negated states in a vendor-specified
media
manner (e.g., with each cylinder change on a disk drive).
a
If the SAS target device has more than one logical unit and any logical unit is active or idle, then the
power condition of that logical unit should be used to control the READY LED signal.
b
If the target device has rotating media, then a READY LED MEANING bit set to zero results in a READY
LED signal behavior that provides an indication of the target device’s readiness for removal. A SAS
target device with rotating media that is not in a state for safe removal shall either toggle the READY
LED signal at a significant rate during spinup, during spindown, and while formatting media, or assert
the READY LED signal continuously. When removal is safe from a mechanical standpoint, the READY
LED signal shall be negated.
c
If the SAS target device supports the out of band management interface, then the SAS target device
may toggle the READY LED while transferring attribute information using the out of band management
interface.
The out of band management interface provides the ability to report attribute information about the SCSI
target device using the methods defined in SFF-8609. The attribute information is defined in the Out Of Band
Management Control mode page (see 9.2.7.8) and corresponds to the Data Code values in the Data Type
Definition in SFF-8609. The out of band management interface is enabled by setting the Reporting Enable
(RE) bit to one in the Out Of Band Management Control mode page.
The attribute information is transferred as described in SFF-8609. Fields in the Out Of Band Management
Control mode page specify and control the frequency at which attribute information is transferred. The device
server transfers the enabled attribute information over the out of band management interface, while in the
active power condition and idle power condition.
For each enabled attribute, the device server should transfer the attribute information based on the reporting
interval and other fields in the attribute control descriptor.
If:
a) multiple attributes are enabled; and
b) multiple attributes should be transferred at the same time based on the reporting interval of the
enabled attributes,
then the device server shall choose the attribute to be transferred next based on a vendor specific algorithm.
If:
1) the RE bit (see 9.2.7.8.1) is set to zero (i.e., the out of band management interface is disabled); and
2) the device server processes a MODE SELECT command that causes the RE bit to change from zero
to one (i.e., enabling the out of band management interface),
then device server shall transfer the protocol revision code packet (see SFF-8609) five times at a one second
interval, before transferring any enabled attribute information.
If the out of band management interface is enabled (i.e., the RE bit is set to one), then after a:
a) power on event;
b) hard reset event; or
c) microcode activation,
the device server shall transfer the protocol revision code packet five times at a one second interval, before
transferring any enabled attribute information.
If the RE bit is set to one and the logical unit changes to the:
a) standby power condition; or
b) stopped power condition,
then the device server should transfer the stopping transmission packet (see SFF-8609) twice with no more
than one second from the start of the first packet transfer to the start of the second, upon entry into this
condition. If the stopping transmission packet was transferred as part of entry into this condition, then the
device server should stop transferring the attribute information over the out of band management interface
until the logical unit changes to the:
a) active power condition; or
b) idle power condition.
If the RE bit is set to one and device server processes a MODE SELECT command that results in:
a) the RE bit changing to zero; or
b) the attribute enable bit (e.g., TRE bit (see 9.2.7.8.2)) in all attribute control descriptors (see 9.2.7.8)
being zero,
then the device server should transfer the stopping transmission packet twice with no more than one second
from the start of the first packet transfer to the start of the second, prior to stopping transmission of the
attribute information over the out of band management interface.
The management application client and management device server use the following four-step process to
perform SMP functions:
1) the management application client invokes Send SMP Function;
2) the SMP target port invokes SMP Function Received;
3) the management device server invokes Send SMP Function Response; and
4) the SMP initiator port invokes Received SMP Function Complete.
Function
SMP function Description Reference
code
REPORT MANUFACTURER
01h Return vendor and product identification 9.4.4.5
INFORMATION
02h Obsolete
REPORT
Return status of the discover process in a
03h SELF-CONFIGURATION 9.4.4.6
self-configuring expander device
STATUS
REPORT ZONE
04h Return zone permission table values 9.4.4.7
PERMISSION TABLE
Function
SMP function Description Reference
code
14h REPORT PHY EVENT Return phy events for the specified phy 9.4.4.14
20h DISCOVER LIST Return information about the specified phys 9.4.4.15
82h Obsolete
84h Reserved
Function
SMP function Description Reference
code
CONFIGURE ZONE
89h Configure the zone manager password 9.4.4.24
MANAGER PASSWORD
CONFIGURE ZONE
8Bh Configure the zone permission table 9.4.4.26
PERMISSION TABLE
8Ch to
Reserved
8Fh
92h PHY TEST FUNCTION Request a test function by the specified phy 9.4.4.29
93h CONFIGURE PHY EVENT Configure phy events for the specified phy 9.4.4.30
A0h to
Reserved
BFh
C0h to
Vendor specific
FFh
An SMP request frame is sent by a management application client via an SMP initiator port to request an SMP
function be performed by a management device server. Table 296 defines the SMP request frame format.
Byte a\Bit 7 6 5 4 3 2 1 0
1 FUNCTION
n-3 (MSB)
••• CRC
n (LSB)
a
Shaded byte numbers (e.g., bytes 0 to 3 and (n - 3) to n) show the bytes that are included in the request
frame if the REQUEST LENGTH field is set to 00h. Functions defined in SAS-1.1 may be defined as
containing more than eight bytes if the REQUEST LENGTH field is set to 00h.
The SMP frame header contains parameters defined in the first 4 bytes of the SMP frame.
The SMP FRAME TYPE field is defined by the SMP transport layer (see 8.4.1) and parsed by the SMP transport
layer state machines (see 8.4.5). The SMP FRAME TYPE field shall be set as shown in table 296 for the SMP
request frame format.
The FUNCTION field specifies which SMP function is being requested and is defined in table 295 (see 9.4.4.1).
If the management device server does not support the value in the FUNCTION field, then the management
device server shall return a function result of UNKNOWN SMP FUNCTION as described in table 298 (see
9.4.4.3.4).
The ALLOCATED RESPONSE LENGTH field specifies the maximum number of dwords that the management
application client has allocated in the data-in buffer for the additional response bytes in the response frame
(see 9.4.4.3).
For compatibility with SAS-1.1, an ALLOCATED RESPONSE LENGTH field set to 00h specifies that a specific
number of dwords are to be transferred as defined in the SMP function description. If the SMP function
description does not specify a specific number of dwords, then the number of dwords to be transferred is zero.
This condition shall not be considered as an error.
If the LONG RESPONSE bit is set to one in the REPORT GENERAL response (see 9.4.4.4), then the
management application client may set the ALLOCATED RESPONSE LENGTH field to a non-zero value in all SMP
request frames. If the LONG RESPONSE bit is set to zero in the REPORT GENERAL response, then the
management application client shall set the ALLOCATED RESPONSE LENGTH field to 00h in all SMP request
frames.
If the ALLOCATED RESPONSE LENGTH field is set to a non-zero value, then the management device server shall
truncate the additional response bytes to the number of dwords specified by the ALLOCATED RESPONSE LENGTH
field.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall truncate the
additional response bytes to the number of dwords specified by the SMP function description.
The allocated response length is used to limit the maximum amount of variable length data returned to the
management application client. Fields in the additional response bytes (e.g., fields containing counts of the
number of dwords in some or all of the data) shall not be altered to reflect the truncation, if any, that results
from an insufficient allocated response length.
The additional request bytes definition and length are based on the SMP function.
The number of additional request bytes are an integer multiple of four, so the CRC field is aligned on a four
byte boundary.
The maximum number of additional request bytes is 1 020, making the maximum size of the frame 1 028
bytes (i.e., 4 bytes of header + 1 020 bytes of data + 4 bytes of CRC).
NOTE 65 - If a management application client compliant with SAS-1.1 sends a vendor specific SMP request
frame containing 1 024 additional request bytes, then the SMP_TP state machine discards that SMP request
frame as it exceeds the maximum allowed request size of 1 023 bytes (see 6.22.6.4.2.2). SMP request
frames defined in SAS 1.1 do not have more than 36 additional request bytes.
If the management device server receives more additional request bytes than it expects (e.g., the
management device server complies with a previous version of this standard (i.e., SAS-1.1) defining 24
additional request bytes, but receives a request frame containing 36 additional request bytes), then the
management device server shall return a function result of INVALID REQUEST FRAME LENGTH.
For additional request bytes containing a DESCRIPTOR LENGTH field and a descriptor list, if the management
device server receives more bytes in each descriptor than it expects (e.g., the management device server
complies with a previous version of this standard (i.e., SAS-1.1) defining that a descriptor is 12 bytes, but
receives a request frame containing a descriptor list with 16 byte descriptors), then the management device
server shall return a function result of INVALID REQUEST FRAME LENGTH.
The CRC field is defined by the SMP transport layer (see 8.4.1) and parsed by the SMP link layer state
machines (see 6.22.6).
An SMP response frame is sent by a management device server via an SMP target port in response to an
SMP request frame. Table 297 defines the SMP response frame format.
Byte a\Bit 7 6 5 4 3 2 1 0
1 FUNCTION
2 FUNCTION RESULT
n-3 (MSB)
••• CRC
n (LSB)
a
Shaded byte numbers (e.g., bytes 0 to 3 and (n - 3) to n) show the bytes that are included in the
response frame if the ALLOCATED RESPONSE LENGTH field is set to 00h in the request frame. Functions
defined in SAS-1.1 may be defined as returning more than eight bytes if the ALLOCATED RESPONSE
LENGTH field is set to 00h.
The SMP FRAME TYPE field is defined by the SMP transport layer (see 8.4.1) and parsed by the MT state
machines (see 8.4.5). The SMP FRAME TYPE field shall be set as shown in table 297 for the SMP response
frame format.
The FUNCTION field indicates the SMP function to which this frame is a response and is defined in table 295
(see 9.4.4.1).
SMP FUNCTION
02h All The requested SMP function failed.
FAILED
INVALID
The SMP request frame length was invalid (see
03h REQUEST FRAME All
9.4.4.2).
LENGTH
CONFIGURE
GENERAL, ENABLE
DISABLE ZONING,
ZONE LOCK, ZONE
ACTIVATE,
CONFIGURE ZONE
MANAGER
PASSWORD, The management device server supports the SMP
INVALID
CONFIGURE ZONE function, but the EXPECTED EXPANDER CHANGE
04h EXPANDER
PHY INFORMATION, COUNT field does not match the current expander
CHANGE COUNT
CONFIGURE ZONE change count.
PERMISSION TABLE,
CONFIGURE ROUTE
INFORMATION, PHY
CONTROL, PHY
TEST FUNCTION,
CONFIGURE PHY
EVENT
ZONE UNLOCK,
ENABLE DISABLE
ZONING,
For ZONE UNLOCK, the locked zoning expander
CONFIGURE ZONE
device is processing the activate step.
MANAGER
05h BUSY
PASSWORD,
For the other functions, the management device
CONFIGURE ZONE
server is currently saving zoning values.
PHY INFORMATION,
CONFIGURE ZONE
PERMISSION TABLE
DISCOVER, REPORT
PHY ERROR LOG,
REPORT PHY SATA,
REPORT ROUTE
INFORMATION,
REPORT PHY
The phy specified by the PHY IDENTIFIER field or the
EVENT, DISCOVER
STARTING PHY IDENTIFIER field in the SMP request
PHY DOES NOT LIST, CONFIGURE
10h frame does not exist (e.g., the value is not less
EXIST ZONE PHY
than the value indicated in the NUMBER OF PHYS
INFORMATION,
field in the SMP REPORT GENERAL response).
CONFIGURE ROUTE
INFORMATION, PHY
CONTROL, PHY
TEST FUNCTION,
CONFIGURE PHY
EVENT
UNKNOWN PHY
13h PHY CONTROL See 9.4.4.28
OPERATION
PHY TEST
PHY TEST
15h FUNCTION IN See 9.4.4.29
FUNCTION
PROGRESS
DISCOVER, REPORT
PHY ERROR LOG,
REPORT PHY SATA,
REPORT ROUTE
INFORMATION,
The management device server processing the
REPORT PHY
SMP request frame does not have access to a
EVENT, CONFIGURE
specified phy (e.g., because of zoning or vendor
16h PHY VACANT ZONE PHY
specific reasons), although the value is less than
INFORMATION,
the value indicated in the NUMBER OF PHYS field in
CONFIGURE ROUTE
the SMP REPORT GENERAL response.
INFORMATION, PHY
CONTROL, PHY
TEST FUNCTION,
CONFIGURE PHY
EVENT
UNKNOWN
The descriptor type specified by the DESCRIPTOR
18h DESCRIPTOR DISCOVER LIST
TYPE field is not supported.
TYPE
UNKNOWN PHY The phy filter specified by the PHY FILTER field is
19h DISCOVER LIST
FILTER not supported.
CONFIGURE
GENERAL, ZONED
Zoning is enabled and the SMP initiator port does
BROADCAST, PHY
SMP ZONE not have access to a necessary zone group
20h CONTROL, PHY
VIOLATION according to the zone permission table (see
TEST FUNCTION,
4.9.3.2).
CONFIGURE PHY
EVENT
REPORT ZONE
MANAGER For ZONE LOCK see 9.4.4.21.
NO
PASSWORD, ZONE For REPORT ZONE MANAGER PASSWORD,
21h MANAGEMENT
LOCK, CONFIGURE see 9.4.4.8. For CONFIGURE ZONE MANAGER
ACCESS RIGHTS
ZONE MANAGER PASSWORD, see 9.4.4.24.
PASSWORD
UNKNOWN
ENABLE DISABLE
22h ENABLE DISABLE See 9.4.4.19
ZONING
ZONING VALUE
CONFIGURE ZONE
ZONE GROUP PHY INFORMATION, The ZONE GROUP field or NUMBER OF ZONE GROUPS
25h
OUT OF RANGE CONFIGURE ZONE field contains a value that is not supported.
PERMISSION TABLE
SOURCE ZONE
REPORT ZONE
28h GROUP DOES See 9.4.4.7
PERMISSION TABLE
NOT EXIST
Table 299 defines the priority of the SMP function results defined in table 298.
If the FUNCTION RESULT field is set to 00h, then the additional response bytes definition depends on the SMP
function requested. If the FUNCTION RESULT field is set to a value other than 00h, then the additional response
bytes may be present but shall be ignored.
The number of additional response bytes are an integer multiple of four, so the CRC field is aligned on a four
byte boundary.
The maximum number of additional response bytes is 1 020, making the maximum size of the frame 1 028
bytes (i.e., 4 bytes of header + 1 020 bytes of data + 4 bytes of CRC).
NOTE 66 - If a management device server compliant with SAS-1.1 sends a vendor specific SMP response
frame containing 1 024 additional response bytes then, the SMP_IP state machine discards that SMP
response frame as it exceeds the maximum allowed request size of 1 023 bytes (see 6.22.6.3.4). SMP
response frames defined in SAS-1.1 do not have more than 56 additional response bytes.
The management application client should ignore any additional response bytes beyond those that it expects
(e.g., if the management application client complies with a version of this standard defining 24 additional
response bytes, but receives a response frame containing 36 additional response bytes, then it should ignore
the last 12 additional response bytes).
For additional response bytes containing a DESCRIPTOR LENGTH field and a descriptor list, the management
application client should ignore any bytes in each descriptor beyond those that it expects (e.g., if the
management application client complies with a version of this standard defining that a descriptor has 24 bytes,
but receives a response frame containing a descriptor list with 36 byte descriptors, then it should ignore the
last 12 bytes of each descriptor).
The CRC field is defined by the SMP transport layer (see 8.4.1) and parsed by the SMP link layer state
machines (see 6.22.6).
The REPORT GENERAL function returns general information about the SAS device (e.g., a SAS device
contained in an expander device). This SMP function shall be implemented by all management device
servers.
Table 300 defines the REPORT GENERAL request format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (00h)
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 300 for the REPORT
GENERAL request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 300 for the REPORT GENERAL
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 28 bytes defined in table 301 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 301; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 300 for the REPORT
GENERAL request.
The CRC field is defined in 9.4.4.2.7.
Table 301 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (00h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
EXPANDER ROUTE INDEXES
7 (LSB)
LONG
8 Reserved
RESPONSE
9 NUMBER OF PHYS
12
••• ENCLOSURE LOGICAL IDENTIFIER
19
20
••• Reserved
27
28 (MSB)
SSP CONNECT TIME LIMIT
29 (LSB)
30 (MSB)
STP BUS INACTIVITY LIMIT
31 (LSB)
Byte\Bit 7 6 5 4 3 2 1 0
32 (MSB)
STP CONNECT TIME LIMIT
33 (LSB)
34 (MSB)
STP SMP I_T NEXUS LOSS TIME
35 (LSB)
PHYSICAL PHYSICAL
ZONING ZONING
36 NUMBER OF ZONE GROUPS Reserved ZONE LOCKED PRESENCE PRESENCE
SUPPORTED ENABLED
SUPPORTED ASSERTED
38 (MSB)
MAXIMUM NUMBER OF ROUTED SAS ADDRESSES
39 (LSB)
40
••• ACTIVE ZONE MANAGER SAS ADDRESS
47
48 (MSB)
ZONE LOCK INACTIVITY TIME LIMIT
49 (LSB)
50
Reserved
51
REDUCED EXTERNAL
56 Reserved
FUNCTIONALITY PORT
60 (MSB)
LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
61 (LSB)
Byte\Bit 7 6 5 4 3 2 1 0
62 (MSB)
MAXIMUM NUMBER OF STORED SELF-CONFIGURATION STATUS DESCRIPTORS
63 (LSB)
64 (MSB)
LAST PHY EVENT LIST DESCRIPTOR INDEX
65 (LSB)
66 (MSB)
MAXIMUM NUMBER OF STORED PHY EVENT LIST DESCRIPTORS
67 (LSB)
68 (MSB)
STP REJECT TO OPEN LIMIT
69 (LSB)
70
Reserved
71
72 (MSB)
••• CRC
75 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 301 for the REPORT
GENERAL response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 301 for the REPORT GENERAL
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set to one of the values defined in table 301
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field indicates the number of Broadcast (Change)s originated by an expander
device (see 6.15). Management device servers in expander devices shall support this field. Management
device servers in other SAS device types (e.g., end devices) shall set this field to 0000h. This field shall be set
to at least 0001h at power on. If the expander device has originated Broadcast (Change) for any reason
described in 6.15 since transmitting any SMP response frame containing an EXPANDER CHANGE COUNT field,
then it:
a) shall increment this field at least once from the value in the previous REPORT GENERAL response;
and
b) shall not increment this field when forwarding a Broadcast (Change).
This field shall wrap to at least 0001h after reaching the maximum value (i.e., FFFFh).
NOTE 67 - If a management application client uses the EXPANDER CHANGE COUNT field, then reading that
field often ensures that the field does not increment a multiple of 65 535 times between reading the field in an
expander device compliant with this standard or a multiple of 65 536 times between reading the field in an
expander device compliant with SAS-1.1.
NOTE 68 - Management device servers in expander devices compliant with SAS-1.1 wrap the EXPANDER
CHANGE COUNT field to 0000h.
NOTE 69 - The originated Broadcast (Change) count is also reported in the REPORT BROADCAST
response (see 9.4.4.9).
The EXPANDER ROUTE INDEXES field indicates the maximum number of expander route indexes per phy for the
expander device (see 4.5.7.4). Management device servers in externally configurable expander devices
containing phy-based expander route tables shall support this field. Management device servers in other SAS
device types (e.g., end devices, externally configurable expander devices with expander-based expander
route tables, and self-configuring expander devices) shall set the EXPANDER ROUTE INDEXES field to 0000h. Not
all phys in an externally configurable expander device are required to support the maximum number indicated
by this field.
A LONG RESPONSE bit set to one indicates that the management device server supports returning non-zero
values in the RESPONSE LENGTH field of the response frame for any SMP function if the ALLOCATED RESPONSE
LENGTH field in the request frame for that SMP function is set to a non-zero value. The LONG RESPONSE bit shall
be set to one.
NOTE 70 - SMP target devices compliant with SAS-1.1 set the LONG RESPONSE bit to zero in the REPORT
GENERAL response and set the RESPONSE LENGTH field to 00h in all SMP response frames.
The NUMBER OF PHYS field indicates the number of phys in the SAS device type, including any virtual phys and
any vacant phys.
A TABLE TO TABLE SUPPORTED bit set to one indicates that the expander device is a self-configuring expander
device that supports its table routing phys being attached to table routing phys in other expander devices (i.e.,
table-to-table attachment). The TABLE TO TABLE SUPPORTED bit shall only be set to one if the EXTERNALLY
CONFIGURABLE ROUTE TABLE bit is set to zero. A TABLE TO TABLE SUPPORTED bit set to zero indicates that the
expander device is not a self-configuring expander device that supports its table routing phys being attached
to table routing phys in other expander devices.
A ZONE CONFIGURING bit set to one indicates that the zoning expander device is locked and the zoning
expander shadow values differ from the zoning expander current values. A ZONE CONFIGURING bit set to zero
indicates that is not true. Management device servers in zoning expander devices shall support this bit.
Management device servers in non-zoning expander devices and in other SAS device types shall set this bit
to zero.
A SELF CONFIGURING bit set to one indicates that the management device server is in a self-configuring
expander device, the self-configuring expander device’s management application client is currently
performing the discover process (see 4.6), and that management application client has identified at least one
change to its expander routing table. Management device servers in self-configuring expander devices shall
support this bit. Management device servers in externally configurable expander devices and in other SAS
device types shall set this bit to zero.
An STP CONTINUE AWT bit set to one specifies that the STP port shall not stop the Arbitration Wait Time timer
and shall not set the Arbitration Wait Time timer to zero when the STP port receives an OPEN_REJECT
(RETRY). An STP CONTINUE AWT bit set to zero specifies that the STP port shall stop the Arbitration Wait Time
timer and shall set the Arbitration Wait Time timer to zero when the STP port receives an OPEN_REJECT
(RETRY).
An OPEN REJECT RETRY SUPPORTED bit set to one indicates that the expander device returns OPEN_REJECT
(RETRY) for any connection requests that detects a condition that results in OPEN_REJECT (NO
DESTINATION) while the SELF CONFIGURING bit is set to one (see 4.7.4) or the ZONE CONFIGURING bit is set to
one (see 4.9.6.3). An OPEN REJECT RETRY SUPPORTED bit set to zero indicates that the expander device
complies with SAS-1.1 (i.e., it returns OPEN_REJECT (NO DESTINATION) while the CONFIGURING bit is set to
one). Self-configuring expander devices compliant with this standard shall set the OPEN REJECT RETRY
SUPPORTED bit to one.
A CONFIGURES OTHERS bit set to one indicates that the expander device is a self-configuring expander device
that performs the configuration subprocess defined in 4.8. A CONFIGURES OTHERS bit set to zero indicates that
the expander device may or may not perform the configuration subprocess. Self-configuring expander devices
compliant with this standard shall set the CONFIGURES OTHERS bit to one.
The CONFIGURING bit indicates the logical OR of the ZONE CONFIGURING bit and the SELF CONFIGURING bit.
Changes in this bit from one to zero result in a Broadcast (Change) being originated (see 6.15). Management
device servers that support the ZONE CONFIGURING bit or the SELF CONFIGURING bit shall support this bit.
An EXTERNALLY CONFIGURABLE ROUTE TABLE bit set to one indicates that the management device server is in
an externally configurable expander device that has a phy-based expander route table that is required to be
configured with the SMP CONFIGURE ROUTE INFORMATION function (see 4.5.7.4). An EXTERNALLY
CONFIGURABLE ROUTE TABLE bit set to zero indicates that the management device server is not in an externally
configurable expander device (e.g., the management device server is in an end device, in a self-configuring
expander device, or in an expander device with no phys with table routing attributes).
The EXTENDED FAIRNESS bit set to one indicates that the expander device supports CLOSE primitive
parameters (see 6.2.6.5.2) and the Delay Expander Forward Open Indication timer. An EXTENDED FAIRNESS bit
set to zero indicates that the expander device ignores CLOSE primitive parameters.
The INITIATES SSP CLOSE bit set to one indicates that the expander device is capable of initiating the closing of
SSP connections (see 6.16.9). An INITIATES SSP CLOSE bit set to zero indicates that the expander device is not
capable of initiating closing of SSP connections.
The ENCLOSURE LOGICAL IDENTIFIER field identifies the enclosure, if any, in which the SMP target device is
located, and is defined in SES-3. The ENCLOSURE LOGICAL IDENTIFIER field shall be set to the same value
reported by the enclosure services process, if any, for the enclosure. An ENCLOSURE LOGICAL IDENTIFIER field
set to 00000000 00000000h indicates no enclosure information is available.
The SSP CONNECT TIME LIMIT field indicates the maximum connect time limit for expander device SSP
connections. The maximum time limit is specified by the CONFIGURE GENERAL function (see 9.4.4.18).
The STP BUS INACTIVITY LIMIT field indicates the bus inactivity time limit for STP connections. The STP bus
inactivity limit is specified by the CONFIGURE GENERAL function (see 9.4.4.18).
The STP CONNECT TIME LIMIT field indicates the maximum connect time limit for STP connections. The STP
maximum connect time limit is specified by the CONFIGURE GENERAL function (see 9.4.4.18).
The STP SMP I_T NEXUS LOSS TIME field indicates the minimum time that an STP target port and an SMP
initiator port retry certain connection requests. The STP SMP I_T nexus loss time timer is specified by the
CONFIGURE GENERAL function (see 9.4.4.18).
The NUMBER OF ZONE GROUPS field indicates the number of zone groups (e.g., the number of entries in the
zone group permission table) supported by the expander device and is defined in table 302.
Code Description
A ZONE LOCKED bit set to one indicates that the zoning expander device is locked (see 4.9.6.2). A ZONE LOCKED
bit set to zero indicates that the zoning expander device is not locked.
A PHYSICAL PRESENCE SUPPORTED bit set to one indicates that the expander device supports physical presence
as a mechanism for allowing locking from phys in zone groups without access to zone group 2. A PHYSICAL
PRESENCE SUPPORTED bit set to zero indicates that the expander device does not support physical presence
as a mechanism for allowing locking.
A PHYSICAL PRESENCE ASSERTED bit set to one indicates that the expander device is currently detecting
physical presence. A PHYSICAL PRESENCE ASSERTED bit set to zero indicates that the expander device is not
currently detecting physical presence. The PHYSICAL PRESENCE ASSERTED bit shall be set to zero if the
PHYSICAL PRESENCE SUPPORTED bit is set to zero.
A ZONING SUPPORTED bit set to one indicates that zoning is supported by the expander device (i.e., it is a
zoning expander device). A ZONING SUPPORTED bit set to zero indicates that zoning is not supported by the
expander device.
A ZONING ENABLED bit set to one indicates that zoning is enabled in the expander device. A ZONING ENABLED bit
set to zero indicates that zoning is disabled in the expander device. The ZONING ENABLED bit shall be set to
zero if the ZONING SUPPORTED bit is set to zero.
A SAVING bit set to one indicates that the management device server is currently saving zoning values to
non-volatile storage and may return a function result of BUSY for SMP zone management functions that
access saved zoning values. A SAVING bit set to zero indicates that the management device server is not
currently saving zoning values to non-volatile storage.
A SAVING ZONE MANAGER PASSWORD SUPPORTED bit set to one indicates that saving the zone manager
password is supported. A SAVING ZONE MANAGER PASSWORD SUPPORTED bit set to zero indicates that saving
the zone manager password is not supported.
A SAVING ZONE PHY INFORMATION SUPPORTED bit set to one indicates that saving the zone phy information is
supported. A SAVING ZONE PHY INFORMATION SUPPORTED bit set to zero indicates that saving the zone phy
information is not supported.
A SAVING ZONE PERMISSION TABLE SUPPORTED bit set to one indicates that saving the zone permission table is
supported. A SAVING ZONE PERMISSION TABLE SUPPORTED bit set to zero indicates that saving the zone
permission table is not supported.
A SAVING ZONING ENABLED SUPPORTED bit set to one indicates that saving the ZONING ENABLED bit is supported.
A SAVING ZONING ENABLED SUPPORTED bit set to zero indicates that saving the ZONING ENABLED bit is not
supported.
The MAXIMUM NUMBER OF ROUTED SAS ADDRESSES field indicates the number of routed SAS addresses in an
expander-based expander route table (see 4.5.7.4 and 4.9.3.4). Management device servers in expander
devices containing expander-based expander route tables shall support this field. Management device
servers in other SAS device types (e.g., end devices and expander devices with phy-based expander route
tables) shall set this field to 0000h.
The ACTIVE ZONE MANAGER SAS ADDRESS field indicates the SAS address (see 4.2.4) of the zone manager that
last locked the zoning expander device. If the zoning expander device is currently being configured by a
vendor specific sideband method, then the ACTIVE ZONE MANAGER SAS ADDRESS field shall be set to
00000000 00000000h. This field shall be set to 00000000 00000000h at power on.
The ZONE LOCK INACTIVITY TIME LIMIT field indicates the minimum time between any SMP ZONE LOCK
requests, SMP zone configuration function requests, or SMP ZONE ACTIVATE requests from the active zone
manager that the locked expander device allows and is set in the SMP ZONE LOCK request (see 9.4.4.21).
The POWER DONE TIMEOUT field indicates the maximum time the management application layer allows a power
consumer device (see 6.14.2) to consume additional power. The power done timeout is specified by the
CONFIGURE GENERAL function (see 9.4.4.18). A POWER DONE TIMEOUT field set to 00h or FFh indicates that
the maximum time is vendor specific.
The FIRST ENCLOSURE CONNECTOR ELEMENT INDEX field indicates the lowest CONNECTOR ELEMENT INDEX field of
all the expander phys in all the expander devices in the enclosure that indicate an internal connector to an end
device (see the SAS Connector element in SES-3) in their SMP DISCOVER responses.
The NUMBER OF ENCLOSURE CONNECTOR ELEMENT INDEXES field indicates the number of expander phys in all
the expander devices in the enclosure that indicate an internal connector to an end device (see the SAS
Connector element in SES-3) in their SMP DISCOVER responses.
NOTE 71 - The NUMBER OF ENCLOSURE CONNECTOR ELEMENT INDEXES field assumes that all internal
connectors to end devices are assigned to a contiguous range of CONNECTOR ELEMENT INDEX field values.
The INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION field indicates the time, in 100 ns increments,
that an expander phy uses, in conjunction with the contents of the HOP COUNT field (see 6.2.6.5.3) to
determine the time to wait before requesting the ECM assign path resources to a connection. The expander
device should set the default value for the INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION field to
at least 500 ns (i.e., 05h). The length of time the expander phy waits is determined from the following
calculation:
where:
delay in assigning resources is the number of nanoseconds the phy delays before allowing the ECM assign path
resources to a connection;
initial delay is the contents of the INITIAL TIME TO DELAY EXPANDER FORWARD OPEN
INDICATION field; and
The STP REJECT TO OPEN LIMIT field indicates the minimum time, in 10 µs increments, that an STP port waits to
establish a connection request with an initiator port on an I_T nexus after receiving an OPEN_REJECT
(RETRY), OPEN_REJECT (RESERVED CONTINUE 0), or OPEN_REJECT (RESERVED CONTINUE 1). An
STP REJECT TO OPEN LIMIT field set to 0000h indicates that the time limit is vendor specific.
The REPORT MANUFACTURER INFORMATION function returns vendor and product identification. This
SMP function may be implemented by any management device server.
Table 303 defines the request format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (01h)
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 303 for the REPORT
MANUFACTURER INFORMATION request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 303 for the REPORT
MANUFACTURER INFORMATION request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 60 bytes defined in table 304 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 304; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 303 for the REPORT
MANUFACTURER INFORMATION request.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (01h)
2 FUNCTION RESULT
9
••• Reserved
11
12 (MSB)
••• VENDOR IDENTIFICATION
19 (LSB)
20 (MSB)
••• PRODUCT IDENTIFICATION
35 (LSB)
36 (MSB)
••• PRODUCT REVISION LEVEL
39 (LSB)
40 (MSB)
••• COMPONENT VENDOR IDENTIFICATION
47 (LSB)
48 (MSB)
COMPONENT ID
49 (LSB)
50 COMPONENT REVISION LEVEL
51 Reserved
52
••• Vendor specific
59
60 (MSB)
••• CRC
63 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 304 for the REPORT
MANUFACTURER INFORMATION response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 304 for the REPORT
MANUFACTURER INFORMATION response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set to one of the values defined in table 304
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
A SAS-1.1 FORMAT bit set to one indicates that bytes 40 to 59 are as defined in this standard. A SAS-1.1 FORMAT
bit set to zero indicates that bytes 40 to 59 are vendor specific as defined in the original version of this
standard.
ASCII data fields (e.g., the VENDOR IDENTIFICATION field, the PRODUCT IDENTIFICATION field, the PRODUCT
REVISION LEVEL field, and the COMPONENT VENDOR IDENTIFICATION field) shall contain only graphic codes (i.e.,
code values 20h to 7Eh). Left-aligned fields shall place any unused bytes at the end of the field (i.e., at the
highest offset) and the unused bytes shall be filled with space characters (i.e., 20h).
The VENDOR IDENTIFICATION field contains eight bytes of ASCII data identifying the vendor of the subsystem
(e.g., the board or enclosure) containing the component. The data shall be left-aligned within the field. The
vendor identification string shall be one assigned by INCITS for use in the standard INQUIRY data VENDOR
IDENTIFICATION field. A list of assigned vendor identification strings is in SPC-6 and on the T10 web site (see
http://www.t10.org).
The PRODUCT IDENTIFICATION field contains 16 bytes of ASCII data identifying the type of the subsystem (e.g.,
the board or enclosure model number) containing the component, as defined by the vendor of the subsystem.
The data shall be left-aligned within the field. The PRODUCT IDENTIFICATION field should be changed whenever
the subsystem design changes in a way noticeable to a user (e.g., a different stock-keeping unit (SKU)).
The PRODUCT REVISION LEVEL field contains four bytes of ASCII data identifying the revision level of the
subsystem (e.g., the board or enclosure) containing the component, as defined by the vendor of the
subsystem. The data shall be left-aligned within the field. The PRODUCT REVISION LEVEL field should be
changed whenever the subsystem design changes (e.g., any component change, even including resistor
values).
All components on a subsystem should have the same values for their VENDOR IDENTIFICATION fields, PRODUCT
IDENTIFICATION fields, and PRODUCT REVISION LEVEL fields.
NOTE 72 - A use of the VENDOR IDENTIFICATION field and PRODUCT IDENTIFICATION field is for the
management application client to identify the subsystem (e.g., for a user interface). Another use of the
VENDOR IDENTIFICATION field, PRODUCT IDENTIFICATION field, and PRODUCT REVISION LEVEL field is for a
management application client to perform workarounds for problems in a specific revision of a subsystem.
The COMPONENT VENDOR IDENTIFICATION field contains eight bytes of ASCII data identifying the vendor of the
component (e.g., the expander device) containing the management device server. The data shall be
left-aligned within the field. The component vendor identification string shall be one assigned by INCITS for
use in the standard INQUIRY data VENDOR IDENTIFICATION field. A list of assigned vendor identification strings
is in SPC-6 and on the T10 web site (see http://www.t10.org).
The COMPONENT ID field contains a 16-bit identifier identifying the type of the component (e.g., the expander
device model number) containing the management device server, as defined by the vendor of the component.
The COMPONENT ID field should be changed whenever the component’s programming interface (e.g., the
management device server definition) changes.
The COMPONENT REVISION LEVEL field contains an 8-bit identifier identifying the revision level of the component
(e.g., the expander device) containing the management device server, as defined by the vendor of the
component. The COMPONENT REVISION LEVEL field should be changed whenever the component changes but
its programming interface does not change.
NOTE 73 - A use of the COMPONENT VENDOR IDENTIFICATION field and the COMPONENT ID field is for the
management application client to interpret vendor specific information (e.g., vendor specific SMP functions)
correctly for that component. Another use of the COMPONENT VENDOR IDENTIFICATION field, the COMPONENT ID
field, and the COMPONENT REVISION LEVEL field is for the management application client to perform
workarounds for problems in a specific revision of a component.
The vendor specific bytes are defined by the vendor of the subsystem (e.g., the board or enclosure)
containing the component.
The CRC field is defined in 9.4.4.3.7.
The REPORT SELF-CONFIGURATION STATUS function returns self-configuration expander device status.
This SMP function shall be implemented by the management device server in self-configuring expander
devices and shall not be implemented by any other management device servers.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (03h)
4
Reserved
5
6 (MSB)
STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
7 (LSB)
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 305 for the REPORT
SELF-CONFIGURATION STATUS request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 305 for the REPORT
SELF-CONFIGURATION STATUS request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 305 for the REPORT
SELF-CONFIGURATION STATUS request.
The STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field specifies the first self-configuration status
descriptor that the management device server shall return in the SMP response frame. If the specified index
does not contain a valid self-configuration status descriptor, then the STARTING SELF-CONFIGURATION STATUS
DESCRIPTOR INDEX field in the response may differ from the specified index. A STARTING SELF-CONFIGURATION
STATUS DESCRIPTOR INDEX field set to 0000h specifies that the management device server shall return no
self-configuration status descriptors.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (03h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
7 (LSB)
8 (MSB)
TOTAL NUMBER OF SELF-CONFIGURATION STATUS DESCRIPTORS
9 (LSB)
10 (MSB)
LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
11 (LSB)
13
••• Reserved
18
20
••• Self-configuration status descriptor (first) (see table 307 in 9.4.4.6.4)
••• •••
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 306 for the REPORT
SELF-CONFIGURATION STATUS response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 306 for the REPORT
SELF-CONFIGURATION STATUS response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 306 for the REPORT
SELF-CONFIGURATION STATUS response. A RESPONSE LENGTH field set to 00h does not have a special
meaning based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4). If the
management application client detects a change in the value of this field while retrieving multiple response
frames, then it should retrieve the response frames again.
The STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field indicates the index of the first
self-configuration status descriptor being returned. If the STARTING SELF-CONFIGURATION STATUS DESCRIPTOR
INDEX field in the SMP request frame is set to 0000h, then the management device server shall:
The TOTAL NUMBER OF SELF-CONFIGURATION STATUS DESCRIPTORS field indicates the number of
self-configuration status descriptors are available at this time from the management device server.
The LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field indicates the index of the last recorded
self-configuration status descriptor.
The SELF-CONFIGURATION STATUS DESCRIPTOR LENGTH field indicates the length, in dwords, of the
self-configuration status descriptor (see table 307 in 9.4.4.6.4).
The NUMBER OF SELF-CONFIGURATION STATUS DESCRIPTORS field indicates the number of self-configuration
status descriptors in the self-configuration status descriptor list.
The self-configuration status descriptor list contains self-configuration status descriptors (see table 307). The
management device server shall return either all the self-configuration status descriptors that fit in one SMP
response frame or all the self-configuration status descriptors until the index indicated in the LAST
SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field is reached. The self-configuration status descriptor list
shall start with the self-configuration status descriptor specified by the STARTING SELF-CONFIGURATION STATUS
DESCRIPTOR INDEX field and shall continue with self-configuration status descriptors sorted in ascending order,
wrapping from FFFFh to 0001h, based on the self-configuration status descriptor index. The self-configuration
status descriptor list shall not contain any truncated self-configuration status descriptors. If the STARTING
SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field is equal to the LAST SELF-CONFIGURATION STATUS
DESCRIPTOR INDEX field, then the self-configuration status descriptor at that index shall be returned.
Each self-configuration status descriptor follows the format defined in table 307.
Byte\Bit 7 6 5 4 3 2 1 0
0 STATUS TYPE
1 Reserved FINAL
2 Reserved
3 PHY IDENTIFIER
••• Reserved
7
15
The STATUS TYPE field indicates the type of status being reported and is defined in table 308.
Code Description
Status not related to specific layers (00h to 0Fh)
00h Reserved
01h Error not related to a specific layer
The expander device currently has a connection or is currently attempting to establish a
02h
connection with the SMP target port with the indicated SAS address.
Expander route table is full. The expander device was not able to add the indicated SAS
03h
address to the expander route table.
Expander device is out of resources (e.g., it discovered too many SAS addresses while
04h performing the discover process through a subtractive port). This does not affect the expander
route table.
05h to 1Fh Reserved
Status reported by the phy layer (20h to 3Fh)
20h Error reported by the phy layer
21h All phys in the expander port containing the indicated phy lost dword synchronization
22h to 3Fh Reserved
Status reported by the link layer (40h to 5Fh)
Code Description
40h Error reported by the link layer
41h Connection request failed as a result of an Open Timeout timer expiring
Connection request failed as a result of receiving an abandon-class OPEN_REJECT (e.g.,
42h BAD DESTINATION, PROTOCOL NOT SUPPORTED, ZONE VIOLATION, STP
RESOURCES BUSY, WRONG DESTINATION)
Connection request failed as a result of receiving a vendor specific number of retry-class
43h
OPEN_REJECTs (e.g., RETRY, PATHWAY BLOCKED)
Connection request failed as a result of an I_T nexus loss occurring (e.g., OPEN_REJECT
44h (NO DESTINATION) received for longer than the time specified by the STP SMP I_T NEXUS LOSS
TIME field in the CONFIGURE GENERAL function)
Code Description
The SAS ADDRESS field contains the SAS address of a self-configuring expander device that
returned a REPORT GENERAL response with the ZONE CONFIGURING bit set to one. Accesses
to SAS addresses two or more levels beyond this expander device may not succeed until the
A6h
indicated expander device completes configuration.
A FINAL bit set to one indicates that the expander device is no longer attempting to establish connections to the
SMP target port with the indicated SAS address as part of the discover process because of the error indicated
by the descriptor. A FINAL bit set to zero indicates that the expander device is still attempting to access the
SMP target port with the indicated SAS address as part of the discover process.
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy that was used to request a
connection with the SMP target port with the indicated SAS address.
The SAS ADDRESS field indicates the SAS address (see 4.2.4) of the SMP target port to which the expander
device established a connection or attempted to establish a connection.
The REPORT ZONE PERMISSION function returns a set of zone permission table entries. This function shall
be supported by all zoning expander devices.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (04h)
5 Reserved
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 309 for the REPORT
ZONE PERMISSION TABLE request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 309 for the REPORT ZONE
PERMISSION TABLE request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 309 for the REPORT
ZONE PERMISSION TABLE request.
The REPORT TYPE field specifies the zone permission table values that the management device server shall
return and is defined in table 310.
Code Description
The STARTING SOURCE ZONE GROUP field specifies the first source zone group (i.e., s) returned. If the value in
this field exceeds the end of the zone permission table, then the management device server shall return a
function result of SOURCE ZONE GROUP DOES NOT EXIST in the response frame (see table 298 in
9.4.4.3).
The MAXIMUM NUMBER OF ZONE PERMISSION DESCRIPTORS field specifies the maximum number of complete
zone permission descriptors that the management device server shall return.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (04h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
ZONE
6 Reserved REPORT TYPE
LOCKED
NUMBER OF ZONE
7 Reserved
GROUPS
8
••• Reserved
12
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 311 for the REPORT ZONE
PERMISSION TABLE response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 311 for the REPORT ZONE
PERMISSION TABLE response.
The zone permission descriptor format is based on the NUMBER OF ZONE GROUPS field as defined in table 312.
Table 313 defines the zone permission descriptor containing 128 zone groups.
Table 313 – Zone permission descriptor for a source zone group (i.e., s) with 128 zone groups
Byte\Bit 7 6 5 4 3 2 1 0
0 ZP[S, 127] ZP[S, 126] ZP[S, 125] ZP[S, 124] ZP[S, 123] ZP[S, 122] ZP[S, 121] ZP[S, 120]
••• •••
Table 314 defines the zone permission descriptor containing 256 zone groups.
Table 314 – Zone permission descriptor for a source zone group (i.e., s) with 256 zone groups
Byte\Bit 7 6 5 4 3 2 1 0
0 ZP[S, 255] ZP[S, 254] ZP[S, 253] ZP[S, 252] ZP[S, 251] ZP[S, 250] ZP[S, 249] ZP[S, 248]
••• •••
The zone permission descriptor contains all of the zone permission table entries for the source zone group
(i.e., s).
Table 315 defines how the zone permission descriptor bits shall be set by the management device server.
Source zone
Management device server requirements a
group (i.e., s)
The REPORT ZONE MANAGER PASSWORD function returns the zone manager password (see 4.9.1). This
SMP function may be implemented by a management device server in a zoning expander device and shall be
implemented if the management device server supports the CONFIGURE ZONE MANAGER PASSWORD
function (see 9.4.4.24). Other management device servers shall not support this SMP function. This function
shall only be processed if the request is received from:
a) an SMP initiator port that has access to zone group 2 (see 4.9.3.2); or
b) any SMP initiator port while physical presence is asserted.
If physical presence is not asserted and the SMP initiator port does not have access to zone group 2, then the
management device server shall return a function result of NO MANAGEMENT ACCESS RIGHTS in the
response frame (see table 298 in 9.4.4.3).
Table 316 defines the request format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (05h)
••• Reserved
7
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 316 for the REPORT
ZONE MANAGER PASSWORD request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 316 for the REPORT ZONE
MANAGER PASSWORD request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 316 for the REPORT
ZONE MANAGER PASSWORD request.
The REPORT TYPE field specifies the zone manager password value that the management device server shall
return and is defined in table 317.
Code Description
10b If the expander device does not support saving, then it shall return a function
result of SAVING NOT SUPPORTED in the response frame (see table 298 in
9.4.4.3).
11b Default zone manager password
a The CONFIGURE ZONE PASSWORD function updates the current zone manager
password, not a shadow zone manager password.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (05h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
7 Reserved
8
••• ZONE MANAGER PASSWORD
39
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 318 for the REPORT
ZONE MANAGER PASSWORD response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 318 for the REPORT ZONE
MANAGER PASSWORD response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 318 for the REPORT
ZONE MANAGER PASSWORD response. A RESPONSE LENGTH field set to 00h does not have a special
meaning based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The REPORT TYPE field indicates the value of the REPORT TYPE field in the request frame.
The ZONE MANAGER PASSWORD field indicates the zone manager password of the type indicated by the REPORT
TYPE field.
The REPORT BROADCAST function returns information about Broadcasts (see 4.1.15) that were either:
a) originated from this expander device or SAS device; or
b) received on a phy directly attached to an end device.
This SMP function may be implemented by any management device server.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (06h)
••• Reserved
7
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 319 for the REPORT
BROADCAST request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 319 for the REPORT
BROADCAST request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 319 for the REPORT
BROADCAST request.
The BROADCAST TYPE field, defined in the ZONED BROADCAST request (see table 366 in 9.4.4.20), specifies
the type of Broadcast for which counts shall be returned in the response frame.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (06h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
••• Reserved
9
12
••• •••
n - 11
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 320 for the REPORT
BROADCAST response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 320 for the REPORT
BROADCAST response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 320 for the REPORT
BROADCAST response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The BROADCAST TYPE field indicates the value of the BROADCAST TYPE field in the request frame.
The BROADCAST DESCRIPTOR LENGTH field indicates the length, in dwords, of the Broadcast descriptor (see
9.4.4.9.4).
The NUMBER OF BROADCAST DESCRIPTORS field indicates the number of Broadcast descriptors in the Broadcast
descriptor list.
NOTE 74 - If Broadcast descriptors are 8 bytes, then the number of Broadcast descriptors is limited to 126 by
the SMP response frame size (see 9.4.4.3.6).
The Broadcast descriptor list contains Broadcast descriptors as defined in 9.4.4.9.4. Broadcast descriptors
shall be returned for all Broadcasts of the type specified in the BROADCAST TYPE field for which the count is
non-zero. Broadcast descriptors shall be returned with the descriptor, if any, pertaining to no particular phy
(i.e., PHY IDENTIFIER field set to FFh) first, followed by descriptors, if any, in ascending order sorted by the PHY
IDENTIFIER field in each descriptor.
Byte\Bit 7 6 5 4 3 2 1 0
1 PHY IDENTIFIER
3 Reserved
4 (MSB)
BROADCAST COUNT
5 (LSB)
6
Reserved
7
The BROADCAST TYPE field, defined in the ZONED BROADCAST request (see table 366 in 9.4.4.20), indicates
the type of Broadcast described by this Broadcast descriptor.
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy that caused the Broadcast
described by this Broadcast descriptor to be originated or the phy on which the Broadcast was received. A
PHY IDENTIFIER field set to FFh indicates that no specific phy caused the Broadcast described by this
Broadcast descriptor.
The BROADCAST COUNT field indicates the number of Broadcasts that were either:
a) originated by the SAS device or expander device; or
b) received by a phy attached to an end device.
If the SAS device or expander device has originated the Broadcast or received the Broadcast since
transmitting a REPORT BROADCAST response, then it shall increment this field at least once from the value
in the previous REPORT BROADCAST response. It shall not increment this field when forwarding a
Broadcast. This field shall wrap to at least 0001h after the maximum value (i.e., FFFFh) has been reached.
NOTE 75 - If a management application client uses the BROADCAST COUNT field, then reading and saving all
the BROADCAST COUNT field values after performing the discover process (see 4.6), this allows the
management application client to read them after each receipt of each Broadcast to ensure that none of the
counts increments a multiple of 65 535 times between reading them.
For Broadcasts that are received, the BROADCAST REASON field shall be set to Fh. For Broadcasts that are
originated, the BROADCAST REASON field indicates the reason that the Broadcast described by this Broadcast
descriptor was originated and is defined in table 322.
BROADCAST
BROADCAST TYPE field Description
REASON field
0h Unspecified
The DISCOVER function returns information about the specified phy. This SMP function provides information
from the IDENTIFY address frame received by the phy during the last identification sequence and additional
phy-specific information. This SMP function shall be implemented by all management device servers.
NOTE 76 - The DISCOVER LIST function (see 9.4.4.15) returns information about one or more phys.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (10h)
••• Reserved
7
IGNORE
8 Reserved ZONE
GROUP
9 PHY IDENTIFIER
10
Reserved
11
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 323 for the DISCOVER
request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 323 for the DISCOVER request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 52 bytes defined in table 324 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 324; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 323
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are two dwords before the CRC field.
An IGNORE ZONE GROUP bit set to one specifies that the management device server shall return information
about the specified phy (i.e., the phy specified by the PHY IDENTIFIER field) regardless of the zone permission
table.
An IGNORE ZONE GROUP bit set to zero specifies that the management device server shall if the SMP initiator
port:
a) has access to the specified phy based on the zone permission table, then return the requested
information; or
b) does not have access to the specified phy, then return a function result of PHY VACANT in the
response frame (see table 298 in 9.4.4.3).
If the management device server is not in a zoning expander device with zoning enabled, then it shall ignore
the IGNORE ZONE GROUP bit.
The PHY IDENTIFIER field specifies the phy (see 4.2.10) for which the information is being requested.
The CRC field is defined in 9.4.4.2.7.
Table 324 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (10h)
2 FUNCTION RESULT
Byte\Bit 7 6 5 4 3 2 1 0
16
••• SAS ADDRESS
23
24
••• ATTACHED SAS ADDRESS
31
32 ATTACHED PHY IDENTIFIER
ATTACHED
ATTACHED ATTACHED
SMP
34 Reserved for IDENTIFY address frame-related fields APTA PWR_DIS
PRIORITY
CAPABLE CAPABLE
CAPABLE
35
••• Reserved for IDENTIFY address frame-related fields
39
40 PROGRAMMED MINIMUM PHYSICAL LINK RATE HARDWARE MINIMUM PHYSICAL LINK RATE
41 PROGRAMMED MAXIMUM PHYSICAL LINK RATE HARDWARE MAXIMUM PHYSICAL LINK RATE
42 PHY CHANGE COUNT
50
Vendor specific
51
52
••• ATTACHED DEVICE NAME
59
REQUESTED
INSIDE ZPSDS INSIDE ZPSDS REQUESTED ZONE GROUP ZONING
60 Reserved Reserved INSIDE ZPSDS
CHANGED BY PERSISTENT INSIDE ZPSDS PERSISTENT ENABLED
EXPANDER
61
Reserved for zoning-related fields
62
63 ZONE GROUP
64 SELF-CONFIGURATION STATUS
Byte\Bit 7 6 5 4 3 2 1 0
66
Reserved for self-configuration related fields
67
68
••• SELF-CONFIGURATION SAS ADDRESS
75
76
••• PROGRAMMED PHY CAPABILITIES
79
80
••• CURRENT PHY CAPABILITIES
83
84
••• ATTACHED PHY CAPABILITIES
87
88
••• Reserved
93
OPTICAL
NEGOTIATED
95 Reserved MODE Obsolete
SSC
ENABLED
DEFAULT DEFAULT DEFAULT
DEFAULT
INSIDE REQUESTED ZONE
96 Reserved Reserved Reserved ZONING
ZPSDS INSIDE GROUP
ENABLED
PERSISTENT ZPSDS PERSISTENT
97 Reserved
98 Reserved
99 DEFAULT ZONE GROUP
SAVED SAVED
SAVED ZONE
INSIDE REQUESTED SAVED ZONING
100 Reserved Reserved GROUP Reserved
ZPSDS INSIDE ENABLED
PERSISTENT
PERSISTENT ZPSDS
101 Reserved
102 Reserved
103 SAVED ZONE GROUP
105 Reserved
Byte\Bit 7 6 5 4 3 2 1 0
106 Reserved
110 (MSB)
••• DEVICE SLOT GROUP OUTPUT CONNECTOR
115 (LSB)
116 (MSB)
STP BUFFER SIZE
117 (LSB)
119 Reserved
120 (MSB)
••• CRC
123 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 324 for the DISCOVER
response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 324 for the DISCOVER response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set to one of the values defined in table 324
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy for which information is being
returned.
The ATTACHED SAS DEVICE TYPE field indicates the SAS device type attached to this phy and is defined in table
325.
Code Description
011b Obsolete
If the phy is a physical phy, then the ATTACHED SAS DEVICE TYPE field shall only be set to a value other than
000b:
a) if a SAS device or expander device is attached, then after the identification sequence is complete;
b) if a SATA phy is attached and the STP SATA bridge does not retrieve IDENTIFY DEVICE data (see
ACS-4), then after the STP SATA bridge receives the initial Register - Device to Host FIS; or
c) if a SATA phy is attached and the STP SATA bridge retrieves IDENTIFY DEVICE data, then after the
STP SATA bridge receives IDENTIFY DEVICE data or it encounters a failure retrieving that data.
If the NEGOTIATED PHYSICAL LINK RATE field (see table 326) is not set to a physical link rate, then the
management device server may set the ATTACHED SAS DEVICE TYPE field to 000b.
If the phy is a physical phy and a SAS phy or expander phy is attached, then the ATTACHED REASON field
indicates the value of the REASON field received in the IDENTIFY address frame (see 6.10.2) during the
identification sequence. If the phy is a physical phy and a SATA phy is attached, then the ATTACHED REASON
field shall be set to 0h after the initial Register - Device to Host FIS has been received. If the phy is a virtual
phy, then the ATTACHED REASON field shall be set to 0h.
The NEGOTIATED LOGICAL LINK RATE field is defined in table 326 and indicates the logical link rate being used by
the phy. For physical phys, this is negotiated during the link reset sequence. For virtual phys, this field should
be set to the maximum physical link rate supported by the expander device. The value in this field shall be the
same as the negotiated physical link rate.
Table 326 – NEGOTIATED LOGICAL LINK RATE field and NEGOTIATED PHYSICAL LINK RATE field
SP state machine
ResetStatus state Code Description
machine variable
UNKNOWN 0h Phy is enabled, unknown physical link rate. a
DISABLED 1h Phy is disabled.
PHY_ RESET_
2h Phy is enabled and a phy reset problem occurred (see 5.11.4.2.4).
PROBLEM
Phy is enabled, did not detect a SAS phy or an expander phy (i.e., the
attached phy did not respond with COMSAS within the COMSAS timeout)
SPINUP_HOLD 3h and entered the SATA spinup hold state. The SMP PHY CONTROL
function (see 9.4.4.28) phy operations of LINK RESET and HARD RESET
may be used to release the phy.
Phy is enabled and detected a SATA port selector. The physical link rate
has not been negotiated since the last time the phy’s SP state machine
entered the SP0:OOB_COMINIT state. The SATA spinup hold state has
not been entered since the last time the phy’s SP state machine entered
PORT_SELECTOR 4h
the SP0:OOB_COMINIT state. The value in this field may change to 3h,
8h, 9h, or Ah if attached to the active phy of the SATA port selector.
Presence of a SATA port selector is indicated by the ATTACHED SATA PORT
SELECTOR bit (see table 327).
Table 327 defines the ATTACHED SATA PORT SELECTOR bit and the ATTACHED SATA DEVICE bit.
Table 327 – ATTACHED SATA PORT SELECTOR and ATTACHED SATA DEVICE bits
ATTACHED ATTACHED
SATA PORT SATA
Description
SELECTOR bit DEVICE bit
abd cd
value value
The phy is a physical phy and the attached phy is neither a SAS phy nor an
expander phy (i.e., the attached phy did not respond with COMSAS within the
0 1 COMSAS timeout). No SATA port selector is present (i.e., the SP state machine
did not detect COMWAKE in response to the initial COMINIT, detected
COMINIT, and then timed out waiting for COMSAS).
The phy is a physical phy, the attached phy is a SATA port selector host phy, and
either the attached phy is:
1 0 a) the inactive host phy; or
b) the active host phy and a SATA device is either not present or not ready
behind the SATA port selector.
The phy is a physical phy, the attached phy is a SATA port selector’s active host
phy and neither a SAS phy nor an expander phy is present behind the SATA port
1 1
selector (i.e., the SP state machine detected COMWAKE while waiting for
COMINIT, detected COMINIT, and then timed out waiting for COMSAS).
a The ATTACHED SATA PORT SELECTOR bit shall be ignored if the NEGOTIATED LOGICAL LINK RATE field is set
to UNKNOWN (i.e., 0h), DISABLED (i.e., 1h), or RESET_IN_PROGRESS (i.e., 5h).
b Whenever the ATTACHED SATA PORT SELECTOR bit changes, the phy shall originate a Broadcast (Change)
(see 6.15).
c For the purposes of the ATTACHED SATA DEVICE bit, a SATA port selector is not considered a SATA
device.
d
The ATTACHED SATA PORT SELECTOR bit and the ATTACHED SATA DEVICE bit are updated as specified in the
SP state machine (see 5.14).
An ATTACHED SATA HOST bit set to one indicates a SATA host port is attached. An ATTACHED SATA HOST bit set
to zero indicates a SATA host port is not attached.
NOTE 77 - Support for SATA hosts is outside the scope of this standard.
If a SAS phy reset sequence occurs (see 5.11.4) (i.e., one or more of the ATTACHED SSP INITIATOR PORT bit, the
ATTACHED STP INITIATOR PORT bit, the ATTACHED SMP INITIATOR PORT bit, the ATTACHED SSP TARGET PORT bit, the
ATTACHED STP TARGET PORT bit, and/or the ATTACHED SMP TARGET PORT bit is set to one), then the ATTACHED
SATA PORT SELECTOR bit, the ATTACHED SATA DEVICE bit, and the ATTACHED SATA HOST bit shall each be set to
zero.
An ATTACHED SSP INITIATOR PORT bit set to one indicates that the attached phy supports an SSP initiator port.
An ATTACHED SSP INITIATOR PORT bit set to zero indicates that the attached phy does not support an SSP
initiator port. If the phy is a physical phy, then the ATTACHED SSP INITIATOR PORT bit indicates the value of the
SSP INITIATOR PORT bit received in the IDENTIFY address frame (see 6.10.2) during the identification
sequence.
An ATTACHED STP INITIATOR PORT bit set to one indicates that the attached phy supports an STP initiator port.
An ATTACHED STP INITIATOR PORT bit set to zero indicates that the attached phy does not support an STP
initiator port. If the phy is a physical phy, then the ATTACHED STP INITIATOR PORT bit indicates the value of the
STP INITIATOR PORT bit received in the IDENTIFY address frame (see 6.10.2) during the identification
sequence.
An ATTACHED SMP INITIATOR PORT bit set to one indicates that the attached phy supports an SMP initiator port.
An ATTACHED SMP INITIATOR PORT bit set to zero indicates that the attached phy does not support an SMP
initiator port. If the phy is a physical phy, then the ATTACHED SMP INITIATOR PORT bit indicates the value of the
SMP INITIATOR PORT bit received in the IDENTIFY address frame (see 6.10.2) during the identification
sequence.
The STP BUFFER TOO SMALL bit set to one indicates that the phy does not contain sufficient buffers to support
STP connections for the attached cable assembly (see 6.21.4). The STP BUFFER TOO SMALL bit set to zero
indicates that the phy may contain sufficient buffers to support STP connections for the attached cable
assembly.
An ATTACHED SSP TARGET PORT bit set to one indicates that the attached phy supports an SSP target port. An
ATTACHED SSP TARGET PORT bit set to zero indicates that the attached phy does not support an SSP target port.
If the phy is a physical phy, then the ATTACHED SSP TARGET PORT bit indicates the value of the SSP TARGET PORT
bit received in the IDENTIFY address frame (see 6.10.2) during the identification sequence.
An ATTACHED STP TARGET PORT bit set to one indicates that the attached phy supports an STP target port. An
ATTACHED STP TARGET PORT bit set to zero indicates that the attached phy does not support an STP target port.
If the phy is a physical phy, then the ATTACHED STP TARGET PORT bit indicates the value of the STP TARGET PORT
bit received in the IDENTIFY address frame (see 6.10.2) during the identification sequence.
An ATTACHED SMP TARGET PORT bit set to one indicates that the attached phy supports an SMP target port. An
ATTACHED SMP TARGET PORT bit set to zero indicates that the attached phy does not support an SMP target
port. If the phy is a physical phy, then the ATTACHED SMP TARGET PORT bit indicates the value of the SMP
TARGET PORT bit received in the IDENTIFY address frame (see 6.10.2) during the identification sequence.
If the phy is a physical phy, then the ATTACHED SSP INITIATOR PORT bit, the ATTACHED STP INITIATOR PORT bit, the
ATTACHED SMP INITIATOR PORT bit, the ATTACHED SSP TARGET PORT bit, the ATTACHED STP TARGET PORT bit, and
the ATTACHED SMP TARGET PORT bit shall be updated at the end of the identification sequence.
If a SATA phy reset sequence occurs (see 5.11.3) (i.e., the ATTACHED SATA PORT SELECTOR bit is set to one, the
ATTACHED SATA DEVICE bit is set to one, or the ATTACHED SATA HOST bit is set to one), then the ATTACHED SSP
INITIATOR PORT bit, the ATTACHED STP INITIATOR PORT bit, the ATTACHED SMP INITIATOR PORT bit, the ATTACHED
SSP TARGET PORT bit, the ATTACHED STP TARGET PORT bit, and the ATTACHED SMP TARGET PORT bit shall each be
set to zero.
If the phy is an expander phy, then the SAS ADDRESS field contains the SAS address of the expander device
(see 4.2.6). If the phy is a SAS phy, then the SAS ADDRESS field contains the SAS address of the SAS port (see
4.2.9). If the phy is a physical phy, then the SAS ADDRESS field contains the value of the SAS ADDRESS field
transmitted in the IDENTIFY address frame (see 6.10.2) during the identification sequence.
The ATTACHED SAS ADDRESS field is defined as follows:
a) if the attached port is an expander port, then the ATTACHED SAS ADDRESS field contains the SAS
address of the attached expander device (see 4.2.6);
b) if the attached port is a SAS port, then the ATTACHED SAS ADDRESS field contains SAS address of the
attached SAS port (see 4.2.9); or
c) if the attached port is a SATA device port, then the ATTACHED SAS ADDRESS field contains the SAS
address of the STP SATA bridge (see 4.5.2).
For a physical phy, the ATTACHED SAS ADDRESS field contains the value of the SAS ADDRESS field received in the
IDENTIFY address frame (see 6.10.2) during the identification sequence and shall be updated after:
a) the identification sequence completes, if a SAS phy or expander phy is attached; or
b) the COMSAS Detect Timeout timer expires (see 5.14.3.9), if a SATA phy is attached.
An STP initiator port should not make a connection request to the attached SAS address until the ATTACHED
SAS DEVICE TYPE field is set to a value other than 000b (see table 325).
The HARDWARE MINIMUM PHYSICAL LINK RATE field indicates the minimum physical link rate supported by the
phy. The values are defined in table 329.
The PROGRAMMED MAXIMUM PHYSICAL LINK RATE field indicates the maximum physical link rate set by the PHY
CONTROL function (see 9.4.4.28). The values are defined in table 328. The default value shall be the value of
the HARDWARE MAXIMUM PHYSICAL LINK RATE field.
Table 328 – PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL
LINK RATE field
Code Description
0h Not programmable
1h to 7h Reserved
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
Dh to Fh Reserved
The HARDWARE MAXIMUM PHYSICAL LINK RATE field indicates the maximum physical link rate supported by the
phy. The values are defined in table 329. If the phy is a virtual phy, then this field should be set to the
maximum physical link rate supported by the expander device.
Table 329 – The HARDWARE MINIMUM PHYSICAL LINK RATE field and the HARDWARE MAXIMUM PHYSICAL
LINK RATE field
Code Description
0h to 7h Reserved
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
Dh to Fh Reserved
The PHY CHANGE COUNT field indicates the number of Broadcast (Change)s originated by an expander phy.
Expander devices shall support this field. Other SAS device types shall not support this field. This field shall
be set to 00h at power on. The expander device shall increment this field at least once when:
a) the expander device originates a Broadcast (Change) for an expander phy-related reason described
in 6.15 from the specified expander phy; or
b) the zone phy information changes for the specified expander phy (e.g., when a locked expander
device is unlocked (see 4.9.6.5)).
The expander device shall not increment this field when forwarding a Broadcast (Change).
After incrementing the PHY CHANGE COUNT field, the expander device is not required to increment the PHY
CHANGE COUNT field again unless a DISCOVER response or a DISCOVER LIST response for the phy is
transmitted. The PHY CHANGE COUNT field shall wrap to 00h after the maximum value (i.e., FFh) has been
reached.
NOTE 78 - If a management application client uses the PHY CHANGE COUNT field, then reading it often
ensures that it does not increment a multiple of 256 times between reading the field.
A VIRTUAL PHY bit set to one indicates that the phy is a virtual phy and is part of an internal port and the
attached device is contained within the expander device. A VIRTUAL PHY bit set to zero indicates that the phy is
a physical phy and the attached device is not contained within the expander device.
The PARTIAL PATHWAY TIMEOUT VALUE field indicates the partial pathway timeout value in microseconds (see
6.16.5.4) set by the PHY CONTROL function (see 9.4.4.28). The recommended default value for PARTIAL
PATHWAY TIMEOUT VALUE is 7 µs.
The ROUTING ATTRIBUTE field indicates the routing attribute supported by the phy (see 4.5.7.1) and is defined in
table 330.
Direct routing Direct routing method for attached end devices. Attached expander
0h
attribute devices are not supported on this phy.
Either:
Subtractive routing
1h a) subtractive routing method for attached expander devices; or
attribute
b) direct routing method for attached end devices.
Either:
Table routing
2h a) table routing method for attached expander devices; or
attribute
b) direct routing method for attached end devices.
The ROUTING ATTRIBUTE field shall not change based on the attached SAS device type.
The CONNECTOR TYPE field indicates the type of connector used to access the phy, as reported by the
enclosure services process for the enclosure (see the SAS Connector element in SES-3). A CONNECTOR TYPE
field set to 00h indicates no connector information is available and that the CONNECTOR ELEMENT INDEX field
and the CONNECTOR PHYSICAL LINK fields shall be ignored.
The CONNECTOR ELEMENT INDEX field indicates the element index of the SAS Connector element representing
the connector used to access the phy, as reported by the enclosure services process for the enclosure (see
the SAS Connector element in SES-3).
The CONNECTOR PHYSICAL LINK field indicates the physical link in the connector used to access the phy, as
reported by the enclosure services process for the enclosure (see the SAS Connector element in SES-3).
The PHY POWER CONDITION field is defined in table 331 and indicates the power condition of the phy.
Code Description
11b Reserved
Code Description
01b Reserved
10b The SAS device containing the phy is capable of managing the additional
consumption of power (see 6.14.1) by responding to:
a) PWR_REQ with PWR_ACK;
b) PWR_REQ with PWR_GRANT; and
c) PWR_DONE with PWR_ACK.
11b Reserved
A SAS SLUMBER CAPABLE bit set to one indicates that the phy supports the slumber phy power condition (see
4.11.1.4). A SAS SLUMBER CAPABLE bit set to zero indicates that the phy does not support the slumber phy
power condition.
A SAS PARTIAL CAPABLE bit set to one indicates that the phy supports the partial phy power condition (see
4.11.1.3). A SAS PARTIAL CAPABLE bit set to zero indicates that the phy does not support the partial phy power
condition.
A SATA SLUMBER CAPABLE bit set to one indicates that the phy supports the SATA slumber interface power
management sequence (see 4.11.2). A SATA SLUMBER CAPABLE bit set to zero indicates that the phy does not
support the SATA slumber interface power management sequence.
A SATA PARTIAL CAPABLE bit set to one indicates that the phy supports the SATA partial interface power
management sequence (see 4.11.2). A SATA PARTIAL CAPABLE bit set to zero indicates that the phy does not
support the SATA partial interface power management sequence.
Code Description
Not capable of reporting the POWER DISABLE signal (see 4.14 and SAS-4) associated
00b
with the phy.
01b Reserved
10b The POWER DISABLE signal associated with the phy is negated.
11b The POWER DISABLE signal associated with the phy is asserted.
Code Description
Not capable of controlling the POWER DISABLE signal (see 4.14.2 and SAS-4) associated
00b
with the phy.
Capable of controlling the POWER DISABLE signal (see 4.14.2 and SAS-4) associated
01b
with the phy using the PWR_DIS CONTROL field in the SMP PHY CONTROL function.
Capable of controlling the POWER DISABLE signal (see 4.14.2 and SAS-4) associated
10b
with the phy and controlled by a method outside the scope of this standard.
11b Reserved
A SAS SLUMBER ENABLED bit set to one indicates that the slumber phy power condition (see 4.11.1.4) is enabled
on the phy (see table 394). A SAS SLUMBER ENABLED bit set to zero indicates that the slumber phy power
condition is disabled on the phy.
A SAS PARTIAL ENABLED bit set to one indicates that the partial phy power condition (see 4.11.1.3) is enabled on
the phy (see table 395). A SAS PARTIAL ENABLED bit set to zero indicates that the partial phy power condition is
disabled on the phy.
A SATA SLUMBER ENABLED bit set to one indicates that the SATA slumber interface power management
sequence (see 4.11.2) is enabled on the phy (see table 396). A SATA SLUMBER ENABLED bit set to zero
indicates that the SATA slumber interface power management sequence is disabled on the phy.
A SATA PARTIAL ENABLED bit set to one indicates that the SATA partial interface power management sequence
(see 4.11.2) is enabled on the phy (see table 397). A SATA PARTIAL ENABLED bit set to zero indicates that the
SATA partial interface power management sequence is disabled on the phy.
The ATTACHED DEVICE NAME field is defined as follows:
a) if the attached phy is an expander phy, then the ATTACHED DEVICE NAME field contains the device name
of the attached expander device (see 4.2.6);
b) if the attached phy is a SAS phy, then the ATTACHED DEVICE NAME field contains the device name of the
attached SAS device (see 4.2.6); or
c) if the attached phy is a SATA device phy, then the ATTACHED DEVICE NAME field contains the world wide
name of the SATA device (see 4.2.7) or 00000000 00000000h.
For physical phys, table 335 defines how the ATTACHED DEVICE NAME field is updated.
A SAS phy or The management device server shall set this field to the DEVICE
expander Completion of the NAME field in the incoming IDENTIFY address frame (i.e., the
phy is identification sequence attached expander device name or attached SAS device name (see
attached 4.2.6)).
Expiration of the
COMSAS Detect The management device server shall set this field to
Timeout timer (see 00000000 00000000h.
5.7.3)
Either:
a) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is
correct and words 108 to 111 (i.e., the World Wide Name field)
are not set to zero (see ACS-4), then the management device
server shall set this field to the world wide name indicated by
Reception of
words 108 to 111 according to table 20 in 4.2.7;
IDENTIFY DEVICE
A SATA phy b) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is
data (see ACS-4) from
is attached correct and words 108 to 111 (i.e., the World Wide Name) are
the SATA device a
set to zero, then the management device server shall set this
field to 00000000 00000000h; or
c) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is
not correct, then the management device server shall set this
field to 00000000 00000000h.
Processing a PHY
CONTROL function The management device server shall set this field to the value
SET ATTACHED specified in the ATTACHED DEVICE NAME field in the PHY CONTROL
DEVICE NAME phy request (see 9.4.4.28).
operation
a
This row only applies if the expander device originates the IDENTIFY DEVICE command.
A REQUESTED INSIDE ZPSDS CHANGED BY EXPANDER bit set to one indicates that the zoning expander device set
the REQUESTED INSIDE ZPSDS bit to zero in the zone phy information at the completion of the last link reset
sequence. A REQUESTED INSIDE ZPSDS CHANGED BY EXPANDER bit set to zero indicates that the zoning
expander device did not set the REQUESTED INSIDE ZPSDS bit to zero in the zone phy information at the
completion of the last link reset sequence. The REQUESTED INSIDE ZPSDS CHANGED BY EXPANDER bit shall be set
to zero if the management device server is not in a zoning expander device.
NOTE 79 - A use of the REQUESTED INSIDE ZPSDS CHANGED BY EXPANDER bit is for the zone manager to
determine why the REQUESTED INSIDE ZPSDS bit has changed in the DISCOVER response from the value to
which it last set the bit.
The INSIDE ZPSDS PERSISTENT bit indicates the value of the INSIDE ZPSDS PERSISTENT bit in the zone phy
information (see 4.9.3.1). The INSIDE ZPSDS PERSISTENT bit shall be set to zero if the management device
server is not in a zoning expander device.
The REQUESTED INSIDE ZPSDS bit indicates the value of the REQUESTED INSIDE ZPSDS bit in the zone phy
information (see 4.9.3.1). The REQUESTED INSIDE ZPSDS bit shall be set to zero if the management device
server is not in a zoning expander device.
The ZONE GROUP PERSISTENT bit indicates the value of the ZONE GROUP PERSISTENT bit in the zone phy
information (see 4.9.3.1). The ZONE GROUP PERSISTENT bit shall be set to zero if the management device
server is not in a zoning expander device.
The INSIDE ZPSDS bit indicates the value of the INSIDE ZPSDS bit in the zone phy information (see 4.9.3.1). The
INSIDE ZPSDS bit shall be set to zero if the management device server is not in a zoning expander device.
The ZONING ENABLED bit is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The ZONE GROUP field indicates the value of the ZONE GROUP field in the zone phy information (see 4.9.3.1).
The ZONE GROUP field shall be set to 00h if the management device server is not in a zoning expander device.
The SELF-CONFIGURATION STATUS field indicates the status of a self-configuring expander device pertaining to
the specified phy and is defined in table 336.
Code Description
01h to As defined for the STATUS TYPE field in the self-configuration status descriptor in the REPORT
FFh SELF-CONFIGURATION STATUS response (see table 306 in 9.4.4.6).
The SELF-CONFIGURATION LEVELS COMPLETED field indicates the number of levels of expander devices beyond
the expander port containing the specified phy for which the self-configuring expander device’s management
application client has completed the discover process and is defined in table 337.
Code Description
The management application client has completed discovery of the expander device attached
01h
to the expander port containing the specified phy (i.e., level 1).
The management application client has completed discovery of the expander devices attached
02h
to the expander device attached to the expander port containing the specified phy (i.e., level 2).
••• •••
The management application client has completed discovery of the expander devices attached
FFh
at level 255.
NOTE 80 - The SELF-CONFIGURATION LEVELS COMPLETED field does not reflect the level of externally
configurable expander devices that the configuration subprocess updates to enable the discover process to
proceed to higher levels.
The SELF-CONFIGURATION SAS ADDRESS field indicates the SAS address (see 4.2.4) of the SMP target port to
which the self-configuring expander device established a connection or attempted to establish a connection
using the specified phy and resulted in the status indicated by the SELF-CONFIGURATION STATUS field.
The PROGRAMMED PHY CAPABILITIES field indicates the SNW-3 phy capabilities bits that are going to be
transmitted in the next link reset sequence containing SNW-3 as defined in table 70.
The CURRENT PHY CAPABILITIES field indicates the outgoing SNW-3 phy capabilities bits transmitted in the last
link reset sequence as defined in table 70. If the last link reset sequence did not include SNW-3 or was a
SATA link reset sequence, then the CURRENT PHY CAPABILITIES field shall be set to 00000000h.
The ATTACHED PHY CAPABILITIES field indicates the incoming SNW-3 phy capabilities bits received in the last
SNW-3 as defined in table 70. If the last link reset sequence did not include SNW-3 or was a SATA link reset
sequence, then the ATTACHED PHY CAPABILITIES field shall be set to 00000000h.
The REASON field indicates the reason for the last reset of the phy. If the phy is a physical phy, then the REASON
field indicates the value of the REASON field transmitted in the IDENTIFY address frame (see 6.10.2) during the
identification sequence. If the phy is a physical phy and a SATA phy is attached, then the REASON field
indicates the reason for the link reset sequence (see 6.10.2).
The NEGOTIATED PHYSICAL LINK RATE field is defined in table 326. If the phy is a physical phy, then this field
indicates the physical link rate negotiated during the link reset sequence. If the phy is a virtual phy, then this
field should be set to the maximum physical link rate supported by the expander device. The negotiated
physical link rate may be less than the programmed minimum physical link rate or greater than the
programmed maximum physical link rate if the programmed physical link rates have been changed since the
last link reset sequence.
An OPTICAL MODE ENABLED bit set to one indicates that optical mode is enabled on the phy. An OPTICAL MODE
ENABLED bit set to zero indicates that D.C. mode is enabled on the phy.
A NEGOTIATED SSC bit set to one indicates that SSC is enabled (see SAS-4). A NEGOTIATED SSC bit set to zero
indicates that SSC is disabled. The NEGOTIATED SSC bit is only valid if the NEGOTIATED PHYSICAL LINK RATE field
is greater than or equal to 8h.
The DEFAULT INSIDE ZPSDS PERSISTENT bit contains the default value of the INSIDE ZPSDS PERSISTENT bit in the
zone phy information (see 4.9.3.1).
The DEFAULT REQUESTED INSIDE ZPSDS bit contains the default value of the REQUESTED INSIDE ZPSDS bit in the
zone phy information (see 4.9.3.1).
The DEFAULT ZONE GROUP PERSISTENT bit contains the default value of the ZONE GROUP PERSISTENT bit in the
zone phy information (see 4.9.3.1).
The DEFAULT ZONING ENABLED bit contains the default value of the ZONING ENABLED bit (see 4.9.3.1).
The DEFAULT ZONE GROUP field contains the default value of the ZONE GROUP field in the zone phy information
(see 4.9.3.1).
The SAVED INSIDE ZPSDS PERSISTENT bit contains the saved value of the INSIDE ZPSDS PERSISTENT bit in the
zone phy information (see 4.9.3.1).
The SAVED REQUESTED INSIDE ZPSDS bit contains the saved value of the REQUESTED INSIDE ZPSDS bit in the
zone phy information (see 4.9.3.1).
The SAVED ZONE GROUP PERSISTENT bit contains the saved value of the ZONE GROUP PERSISTENT bit in the zone
phy information (see 4.9.3.1).
The SAVED ZONING ENABLED bit contains the saved value of the ZONING ENABLED bit (see 4.9.3.1).
The SAVED ZONE GROUP field contains the saved value of the ZONE GROUP field in the zone phy information
(see 4.9.3.1).
The SHADOW INSIDE ZPSDS PERSISTENT bit contains the shadow value of the INSIDE ZPSDS PERSISTENT bit in the
zone phy information (see 4.9.3.1).
The SHADOW REQUESTED INSIDE ZPSDS bit contains the shadow value of the REQUESTED INSIDE ZPSDS bit in the
zone phy information (see 4.9.3.1).
The SHADOW ZONE GROUP PERSISTENT bit contains the shadow value of the ZONE GROUP PERSISTENT bit in the
zone phy information (see 4.9.3.1).
The SHADOW ZONING ENABLED bit contains the shadow value of the ZONING ENABLED bit (see 4.9.3.1).
The SHADOW ZONE GROUP field contains the shadow value of the ZONE GROUP field in the zone phy information
(see 4.9.3.1).
The DEVICE SLOT NUMBER field indicates the number of the enclosure device slot to which the phy provides
access, as reported by the enclosure services process for the enclosure (see the Additional Element Status
descriptor for Device Slot and Array Device Slot elements in SES-3). A DEVICE SLOT NUMBER field set to FFh
indicates that no device slot number is available.
The DEVICE SLOT GROUP NUMBER field indicates the number of the group of device slots containing the device
slot indicated by the DEVICE SLOT NUMBER field. A DEVICE SLOT GROUP NUMBER field set to FFh indicates that no
device slot group number is available.
Contents of the DEVICE SLOT GROUP NUMBER field may be the same as the Group ID reported via the SGPIO
input stream from the enclosure (see SFF-8485).
The DEVICE SLOT GROUP OUTPUT CONNECTOR field contains a left-aligned ASCII string describing the connector
of the enclosure containing the management device server attached to the device slot group indicated by the
DEVICE SLOT GROUP NUMBER field. A DEVICE SLOT GROUP OUTPUT CONNECTOR field set to 2020 20202020h (i.e.,
six space characters) indicates that no device slot group output connector information is available.
The STP BUFFER SIZE field indicates the largest buffer size in data dwords that is supported by the phy. An STP
BUFFER SIZE field set to 00h indicates unknown buffer size.
The BUFFERED PHY BURST SIZE field multiplied by 1 024 bytes indicates the optimum transfer size for the phy, if
that phy contains buffers. An initiator device may use this information to optimize write data transfers.
A BUFFERED PHY BURST SIZE field set to 00h indicates that the optimum transfer size is not specified or the phy
does not contain buffers. A BUFFERED PHY BURST SIZE field set to FFh indicates an optimum transfer size that is
greater than or equal to 261 120 bytes.
The CRC field is defined in 9.4.4.3.7.
The REPORT PHY ERROR LOG function returns error logging information about the specified phy. This SMP
function may be implemented by any management device server.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (11h)
••• Reserved
8
9 PHY IDENTIFIER
10
Reserved
11
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 338 for the REPORT PHY
ERROR LOG request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 338 for the REPORT PHY
ERROR LOG request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 28 bytes defined in table 339 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 339; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 338
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are two dwords before the CRC field.
The PHY IDENTIFIER field specifies the phy (see 4.2.10) for which information shall be reported.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (11h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER
10
Reserved
11
12 (MSB)
••• INVALID DWORD COUNT
15 (LSB)
16 (MSB)
••• RUNNING DISPARITY ERROR COUNT
19 (LSB)
20 (MSB)
••• LOSS OF DWORD SYNCHRONIZATION COUNT
23 (LSB)
24 (MSB)
••• PHY RESET PROBLEM COUNT
27 (LSB)
28 (MSB)
••• CRC
31 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 339 for the REPORT PHY
ERROR LOG response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 339 for the REPORT PHY
ERROR LOG response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set to one of the values defined in table 339
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The PHY IDENTIFIER field indicates the phy (see 4.2.10) for which information is being reported and is the same
as the PHY IDENTIFIER field in the request frame.
The INVALID DWORD COUNT field indicates the number of invalid dwords that have been received outside of phy
reset sequences (i.e., between when the SP state machine (see 5.14) sends a Phy Layer Ready (SAS)
confirmation or Phy Layer Ready (SATA) confirmation and when it sends a Phy Layer Not Ready confirmation
to the link layer). The count shall stop at the maximum value. The INVALID DWORD COUNT field is set to a vendor
specific value after power on.
The RUNNING DISPARITY ERROR COUNT field indicates the number of dwords containing running disparity errors
(see 5.3.5) that have been received outside of phy reset sequences. The count shall stop at the maximum
value. The RUNNING DISPARITY ERROR COUNT field is set to a vendor specific value after power on.
The LOSS OF DWORD SYNCHRONIZATION COUNT field indicates the number of times the phy has restarted the link
reset sequence because it lost dword synchronization (see 5.15) (i.e., the SP state machine transitioned from
SP15:SAS_PHY_Ready or SP22:SATA_PHY_Ready to SP0:OOB_COMINIT (see 5.14)). The count shall
stop at the maximum value. The LOSS OF DWORD SYNCHRONIZATION COUNT field is set to a vendor specific
value after power on.
The PHY RESET PROBLEM COUNT field indicates the number of times a phy reset problem (see 5.11.4.2.4)
occurred. The count shall stop at the maximum value. The PHY RESET PROBLEM COUNT field is set to a vendor
specific value after power on.
The CRC field is defined in 9.4.4.3.7.
The REPORT PHY SATA function returns information about the SATA state for a specified phy. This SMP
function shall be implemented by management device servers behind SMP target ports that share SAS
addresses with STP target ports and by management device servers in expander devices with STP SATA
bridges. This SMP function shall not be implemented by any other type of management device server.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (12h)
••• Reserved
8
9 PHY IDENTIFIER
10 AFFILIATION CONTEXT
11 Reserved
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 340 for the REPORT PHY
SATA request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 340 for the REPORT PHY SATA
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 56 bytes defined in table 341 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 341; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 340
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are two dwords before the CRC field.
The PHY IDENTIFIER field specifies the phy (see 4.2.10) for which information shall be reported.
The AFFILIATION CONTEXT field specifies the relative identifier of the affiliation context for which information
shall be reported (see 6.21.6).
The CRC field is defined in 9.4.4.2.7.
10 Reserved
STP I_T
AFFILIATIONS AFFILIATION
11 Reserved NEXUS LOSS
SUPPORTED VALID
OCCURRED
12
••• Reserved
15
16
••• STP SAS ADDRESS
23
24
••• REGISTER DEVICE TO HOST FIS
43
44
••• Reserved
47
48
••• AFFILIATED STP INITIATOR SAS ADDRESS
55
56
••• STP I_T NEXUS LOSS SAS ADDRESS
63
64 Reserved
65 AFFILIATION CONTEXT
68 (MSB)
••• CRC
71 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 341 for the REPORT PHY
SATA response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 341 for the REPORT PHY SATA
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set to one of the values defined in table 341
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The PHY IDENTIFIER field indicates the phy (see 4.2.10) for which information is being reported and is the same
as the PHY IDENTIFIER field in the request frame.
An STP I_T NEXUS LOSS OCCURRED bit set to one indicates that the STP target port encountered an I_T nexus
loss (see 4.4.3) in the specified affiliation context for the STP initiator port whose SAS address is indicated in
the STP I_T NEXUS LOSS SAS ADDRESS field. An STP I_T NEXUS LOSS OCCURRED bit set to zero indicates that:
a) an I_T nexus loss has not occurred in the specified affiliation context;
b) an I_T nexus loss has occurred in the specified affiliation context and been cleared by the SMP PHY
CONTROL function CLEAR STP I_T NEXUS LOSS phy operation (see table 392 in 9.4.4.28); or
c) the STP target port has established a connection with the indicated STP initiator port in the specified
affiliation context.
An AFFILIATIONS SUPPORTED bit set to one indicates that the specified affiliation context is supported by the
STP target port containing the specified phy. An AFFILIATIONS SUPPORTED bit set to zero indicates that the
specified affiliation context is not supported by the STP target port containing the specified phy.
An AFFILIATION VALID bit set to one indicates that the STP target port is currently maintaining an affiliation in the
specified affiliation context and the AFFILIATED STP INITIATOR SAS ADDRESS field is valid. An AFFILIATION VALID bit
set to zero indicates that the STP target port is not currently maintaining an affiliation in the specified affiliation
context and the AFFILIATED STP INITIATOR SAS ADDRESS field is not valid.
The STP SAS ADDRESS field indicates the SAS address (see 4.2.4) of the STP target port that contains the
specified phy.
The REGISTER DEVICE TO HOST FIS field indicates the contents of the initial Register - Device to Host FIS. For an
STP SATA bridge, this is delivered by the attached SATA device after a link reset sequence (see SATA). For a
native STP target port in an end device, this is directly provided.
The FIS contents shall be stored with little-endian byte ordering (e.g., the first byte of the field (i.e., byte 24)
contains the FIS Type).
For an STP SATA bridge, the first byte of the field (i.e., the FIS Type) shall be set to 00h on power on and
whenever the phy has restarted the link reset sequence after losing dword synchronization (see 5.15) (i.e., the
SP state machine transitioned from SP22:SATA_PHY_Ready to SP0:OOB_COMINIT (see 5.14)) to indicate
that the REGISTER DEVICE TO HOST FIS field does not contain the Register - Device to Host FIS contents of the
currently attached SATA device. The first byte of the field shall be set to 34h when the attached SATA device
has delivered the initial Register – Device to Host FIS. The remaining contents of the REGISTER DEVICE TO
HOST FIS field shall remain constant until a link reset sequence causes the attached SATA device to deliver
another initial Register – Device to Host FIS.
If the AFFILIATION VALID bit is set to one, then the AFFILIATED STP INITIATOR SAS ADDRESS field indicates the SAS
address (see 4.2.4) of the STP initiator port that has an affiliation in the specified affiliation context with the
STP target port that contains the specified phy. If the AFFILIATION VALID bit is set to zero, then the AFFILIATED
STP INITIATOR SAS ADDRESS field may contain the SAS address of the STP initiator port that previously had an
affiliation in the specified affiliation context with the STP target port that contains the specified phy.
The STP I_T NEXUS LOSS SAS ADDRESS field indicates the SAS address (see 4.2.4) of the last STP initiator port
for which the STP target port experienced an I_T nexus loss (see 4.4.3) in the specified affiliation context.
The AFFILIATION CONTEXT field indicates the relative identifier of the affiliation context for which
affiliation-related information (i.e., the AFFILIATIONS SUPPORTED bit, the AFFILIATION VALID bit, the AFFILIATED STP
INITIATOR SAS ADDRESS field, the STP I_T NEXUS LOSS OCCURRED bit, and the STP I_T NEXUS LOSS SAS ADDRESS
field) is being reported (see 6.21.6) and is the same as the AFFILIATION CONTEXT field in the request frame.
The CURRENT AFFILIATION CONTEXTS field indicates the current number of affiliations established by the STP
target port.
The MAXIMUM AFFILIATION CONTEXTS field indicates the maximum number of affiliation contexts supported by
the STP target port.
The CRC field is defined in 9.4.4.3.7.
The REPORT ROUTE INFORMATION function returns an expander route entry from a phy-based expander
route table within an expander device (see 4.5.7.4). This SMP function shall be supported by management
device servers in expander devices if the EXPANDER ROUTE INDEXES field is set to a non-zero value in the SMP
REPORT GENERAL response (see 9.4.4.4). This SMP function may be used as a diagnostic tool to resolve
topology issues.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (13h)
4
Reserved
5
6 (MSB)
EXPANDER ROUTE INDEX
7 (LSB)
8 Reserved
9 PHY IDENTIFIER
10
Reserved
11
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 342 for the REPORT
ROUTE INFORMATION request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 342 for the REPORT ROUTE
INFORMATION request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 40 bytes defined in table 343 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the non-zero value defined in table 343; and
b) return the response frame as defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 342
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are two dwords before the CRC field.
The EXPANDER ROUTE INDEX field specifies the expander route index for the expander route entry being
requested (see 4.5.7.4).
The PHY IDENTIFIER field specifies the phy identifier (see 4.2.10) of the phy for which the expander route entry
is being requested.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (13h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
EXPANDER ROUTE INDEX
7 (LSB)
8 Reserved
9 PHY IDENTIFIER
10
Reserved
11
EXPANDER
ROUTE
12 Reserved
ENTRY
DISABLED
13
••• Reserved
15
16
••• ROUTED SAS ADDRESS
23
24
••• Reserved
39
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 343 for the REPORT
ROUTE INFORMATION response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 343 for the REPORT ROUTE
INFORMATION response.
The REPORT PHY EVENT function returns phy events (see 4.13) concerning the specified phy. This SMP
function may be implemented by any management device server.
NOTE 81 - The REPORT PHY EVENT LIST function (see 9.4.4.16) returns information about one or more
phys.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (14h)
4 Reserved
••• Reserved
8
9 PHY IDENTIFIER
10
Reserved
11
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 344 for the REPORT PHY
EVENT request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 344 for the REPORT PHY EVENT
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 344 for the REPORT PHY
EVENT request.
The PHY IDENTIFIER field specifies the phy (see 4.2.9) for which information shall be reported.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (14h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER
10
••• Reserved
13
16
••• Phy event descriptor (first) (see table 346 in 9.4.4.14.4)
27
••• •••
n - 15
••• Phy event descriptor (last) (see table 346 in 9.4.4.14.4)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 345 for the REPORT PHY
EVENT response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 345 for the REPORT PHY EVENT
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 345 for the REPORT
PHY EVENT response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy for which information is being
reported and is the same as the PHY IDENTIFIER field in the request frame.
The PHY EVENT DESCRIPTOR LENGTH field indicates the length, in dwords, of the phy event descriptor (see
9.4.4.14.4).
The NUMBER OF PHY EVENT DESCRIPTORS field indicates the number of phy event descriptors in the phy event
descriptor list.
The phy event descriptor list contains phy event descriptors as defined in 9.4.4.14.4.
The CRC field is defined in 9.4.4.3.7.
Byte\Bit 7 6 5 4 3 2 1 0
••• Reserved
2
4 (MSB)
7 (LSB)
8 (MSB)
11 (LSB)
The PHY EVENT SOURCE field, defined in table 45 in 4.13, indicates the type of phy event being reported in the
PHY EVENT field.
The PHY EVENT field indicates the value (i.e., the count or peak value detected) of the phy event indicated by
the PHY EVENT SOURCE field.
If the phy event source is a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field indicates the
value of the peak value detector that causes the expander device to originate a Broadcast (Expander) (see
6.2.6.4). If the phy event source is not a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field
is reserved.
The DISCOVER LIST function returns information about the device (i.e., some fields from the REPORT
GENERAL response (see 9.4.4.4)) and one or more phys (i.e., some fields from the DISCOVER response
(see 9.4.4.10)). This SMP function shall be implemented by all management device servers. This function
provides the necessary information in a single SMP response for a self-configuring expander device to
perform the discover process and configure its own expander routing table.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (20h)
••• Reserved
7
IGNORE
10 ZONE Reserved PHY FILTER
GROUP
12
••• Reserved
15
16
28 (MSB)
••• CRC
31 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 347 for the DISCOVER
LIST request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 347 for the DISCOVER LIST
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 347 for the DISCOVER
LIST request.
The STARTING PHY IDENTIFIER field specifies the phy identifier of the first phy for which the information is being
requested.
The MAXIMUM NUMBER OF DISCOVER LIST DESCRIPTORS field specifies the maximum number of complete
DISCOVER LIST descriptors that the management device server shall return.
The IGNORE ZONE GROUP bit is defined in the SMP DISCOVER request (see 9.4.4.10).
The PHY FILTER field is defined in table 348 and specifies a filter limiting the phys that the management device
server shall return in the DISCOVER LIST descriptor list in the DISCOVER response.
Code Description
All phys. If the management device server is a zoning expander device with zoning enabled and
0h the IGNORE ZONE GROUP bit is set to zero, then for any phy that is not accessible the FUNCTION
RESULT field is set to PHY VACANT (see table 298).
Phys with:
a) the ATTACHED SAS DEVICE TYPE field (see 9.4.4.10) set to 010b or 011b (i.e., phys attached
1h
to expander devices); and
b) the FUNCTION RESULT field not set to PHY VACANT.
Phys with:
a) the ATTACHED SAS DEVICE TYPE field (see 9.4.4.10) set to a value other than 000b (i.e., phys
2h
attached to end devices or expander devices); and
b) the FUNCTION RESULT field not set to PHY VACANT.
Phys with:
a) the ATTACHED DEVICE TYPE field (see 9.4.4.10) set to 001b (i.e., phys attached to end
3h
devices); and
b) the FUNCTION RESULT field not set to PHY VACANT.
The DESCRIPTOR TYPE field is defined in table 349 and specifies the DISCOVER LIST descriptor format and
length.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (20h)
2 FUNCTION RESULT
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 350 for the DISCOVER
LIST response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 350 for the DISCOVER LIST
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 350 for the DISCOVER
LIST response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the ALLOCATED
RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The STARTING PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the first phy in the DISCOVER
LIST descriptor list. As a result of the filter specified by the PHY FILTER field in the request frame, the STARTING
PHY IDENTIFIER field may be different than the STARTING PHY IDENTIFIER field in the request frame (see
9.4.4.15.2).
The NUMBER OF DISCOVER LIST DESCRIPTORS field indicates the number of DISCOVER LIST descriptors
returned in the DISCOVER LIST descriptor list.
The PHY FILTER field indicates the phy filter (see table 348 in 9.4.4.15.2) being used and is the same as the
PHY FILTER field in the request frame.
The DESCRIPTOR TYPE field indicates the descriptor type (see table 349) being used and is the same as the
DESCRIPTOR TYPE field in the request frame.
The DISCOVER LIST DESCRIPTOR LENGTH field indicates the length, in dwords, of the DISCOVER LIST descriptor
(see table 349 in 9.4.4.15.2).
The ZONING SUPPORTED bit is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The ZONING ENABLED bit is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The SELF CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The ZONE CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The EXTERNALLY CONFIGURABLE ROUTE TABLE bit is defined in the SMP REPORT GENERAL response (see
9.4.4.4).
The LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field is defined in the REPORT
SELF-CONFIGURATION STATUS response (see 9.4.4.6).
The LAST PHY EVENT LIST DESCRIPTOR INDEX field is defined in the REPORT PHY EVENT LIST response (see
9.4.4.16).
The DISCOVER LIST descriptor list contains DISCOVER LIST descriptors for each phy:
a) starting with the phy whose phy identifier is specified in the STARTING PHY IDENTIFIER field in the
request (see 9.4.4.15.2);
b) satisfying the filter specified in the PHY FILTER field in the request (see table 348 in 9.4.4.15.2);
c) sorted in ascending order by phy identifier; and
d) that is able to be included in the response frame without being truncated.
Each DISCOVER LIST descriptor shall use the format specified in the DESCRIPTOR TYPE field in the request
(see table 349 in 9.4.4.15.2).
The management device server shall not include DISCOVER LIST descriptors for phys with phy identifiers
greater than or equal to the NUMBER OF PHYS field reported in the SMP REPORT GENERAL response (see
9.4.4.4). The management device server shall not include partial DISCOVER LIST descriptors.
The CRC field is defined in 9.4.4.3.7.
Byte\Bit 7 6 5 4 3 2 1 0
0 PHY IDENTIFIER
1 FUNCTION RESULT
Restricted
for
2 DISCOVER ATTACHED SAS DEVICE TYPE ATTACHED REASON
response
byte 12
Restricted
3 NEGOTIATED LOGICAL LINK RATE
for DISCOVER response byte 13
8 ZONE GROUP
12
••• ATTACHED SAS ADDRESS
19
21
••• Reserved
23
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy for which information is being
returned.
The FUNCTION RESULT field indicates the value that is returned in the FUNCTION RESULT field in the SMP
DISCOVER response for the specified phy (e.g., SMP FUNCTION ACCEPTED, PHY VACANT, or PHY
DOES NOT EXIST). If the FUNCTION RESULT field is set to PHY VACANT or PHY DOES NOT EXIST, then the
rest of the fields in the SHORT FORMAT descriptor shall be ignored.
The fields in the SHORT FORMAT descriptor not defined in this subclause are defined in the SMP
DISCOVER response (see 9.4.4.10).
The REPORT PHY EVENT LIST function returns phy events (see 4.13). This SMP function may be
implemented by any management device server.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (21h)
4
Reserved
5
6 (MSB)
STARTING PHY EVENT LIST DESCRIPTOR INDEX
7 (LSB)
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 352 for the REPORT PHY
EVENT LIST request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 352 for the REPORT PHY EVENT
LIST request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 352 for the REPORT PHY
EVENT LIST request.
The STARTING PHY EVENT LIST DESCRIPTOR INDEX field specifies the first phy event list descriptor that the
management device server shall return in the SMP response frame. A STARTING PHY EVENT LIST DESCRIPTOR
INDEX field set to 0000h specifies that the management device server shall return no phy event list descriptors.
The requested starting index and the indicated starting index in the response may differ.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (21h)
2 FUNCTION RESULT
4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
FIRST PHY EVENT LIST DESCRIPTOR INDEX
7 (LSB)
8 (MSB)
LAST PHY EVENT LIST DESCRIPTOR INDEX
9 (LSB)
11
••• Reserved
14
••• •••
••• Phy event list descriptor (last) (see table 354 in 9.4.4.16.4)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 353 for the REPORT PHY
EVENT LIST response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 353 for the REPORT PHY EVENT
LIST response.
Byte\Bit 7 6 5 4 3 2 1 0
0
Reserved
1
2 PHY IDENTIFIER
4 (MSB)
7 (LSB)
8 (MSB)
11 (LSB)
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) of the phy for which information is being
returned.
The PHY EVENT SOURCE field, defined in table 45 in 4.13, indicates the type of phy event being reported in the
PHY EVENT field.
The PHY EVENT field indicates the value (i.e., the count or peak value detected) of the phy event indicated by
the PHY EVENT SOURCE field.
If the phy event source is a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field indicates the
value of the peak value detector that causes the expander device to originate a Broadcast (Expander) (see
6.2.6.4). If the phy event source is not a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field
is reserved.
The REPORT EXPANDER ROUTE TABLE LIST function returns the contents of an expander-based
expander route table (see 4.5.7.4 and 4.9.3.4). The list may be in any order. Self-configuring expander
devices shall support this function.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (22h)
••• Reserved
7
8 (MSB)
MAXIMUM NUMBER OF EXPANDER ROUTE TABLE DESCRIPTORS
9 (LSB)
10 (MSB)
STARTING ROUTED SAS ADDRESS INDEX
11 (LSB)
12
••• Reserved
18
20
••• Reserved
27
28 (MSB)
••• CRC
31 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 355 for the REPORT
EXPANDER ROUTE TABLE LIST request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 355 for the REPORT EXPANDER
ROUTE TABLE LIST request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 355 for the REPORT
EXPANDER ROUTE TABLE LIST request.
The MAXIMUM NUMBER OF EXPANDER ROUTE TABLE DESCRIPTORS field specifies the maximum number of
expander route table descriptors that the management device server shall return.
The STARTING ROUTED SAS ADDRESS INDEX field specifies the index of the first routed SAS address that the
management device server shall return in the expander route table descriptor list.
The STARTING PHY IDENTIFIER field specifies the first phy identifier of the phy identifier bit map returned in each
expander route table descriptor (see table 357 in 9.4.4.17.3). This field should be set to a multiple of 48 (e.g.,
0, 48, or 96) and shall be less than the value indicated in the NUMBER OF PHYS field in the REPORT GENERAL
response (see 9.4.4.4).
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (22h)
2 FUNCTION RESULT
9 Reserved
10 EXPANDER ROUTE TABLE DESCRIPTOR LENGTH
12 (MSB)
FIRST ROUTED SAS ADDRESS INDEX
13 (LSB)
14 (MSB)
LAST ROUTED SAS ADDRESS INDEX
15 (LSB)
16
••• Reserved
18
19 STARTING PHY IDENTIFIER
20
••• Reserved
31
Expander route table descriptor list
32
••• Expander route table descriptor (first) (see table 357 in 9.4.4.17.4)
47
••• •••
n - 20
••• Expander route table descriptor (last) (see table 357 in 9.4.4.17.4)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 356 for the REPORT
EXPANDER ROUTE TABLE LIST response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 356 for the REPORT EXPANDER
ROUTE TABLE LIST response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 356 for the REPORT
EXPANDER ROUTE TABLE LIST response. A RESPONSE LENGTH field set to 00h does not have a special
meaning based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The EXPANDER CHANGE COUNT field is defined in the SMP REPORT GENERAL response (see 9.4.4.4).
The EXPANDER ROUTE TABLE CHANGE COUNT field indicates the number of times the expander route table has
been modified by the self-configuring expander device. Self-configuring expander devices shall support this
field. This field shall be set to at least 0001h at power on. If the self-configuring expander device modified the
expander route table since responding to a previous REPORT EXPANDER ROUTE TABLE LIST request,
then it shall increment this field at least once from the value in the previous REPORT EXPANDER ROUTE
TABLE LIST response. This field shall wrap to at least 0001h after the maximum value (i.e., FFFFh) has been
reached.
NOTE 82 - if a management application client uses the EXPANDER ROUTE TABLE CHANGE COUNT field, then
reading it often ensures that it does not increment a multiple of 65 535 times between reading the field.
The SELF CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The ZONE CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The CONFIGURING bit is defined in the REPORT GENERAL response (see 9.4.4.4).
The ZONING ENABLED bit is defined in the SMP REPORT GENERAL response (see 9.4.4.4). A ZONING ENABLED
bit set to one indicates that the ZONE GROUP field in each expander route table descriptor (see 9.4.4.17.4) is
valid. A ZONING ENABLED bit set to zero indicates that the ZONE GROUP field in each expander route table
descriptor is not valid.
The EXPANDER ROUTE TABLE DESCRIPTOR LENGTH field indicates the length, in dwords, of each expander route
table descriptor (see 9.4.4.17.4).
The NUMBER OF EXPANDER ROUTE TABLE DESCRIPTORS field indicates the number of expander route table
descriptors in the expander route table descriptor list.
The FIRST ROUTED SAS ADDRESS INDEX field indicates the index of the first expander route table descriptor
reported in the expander route table descriptor list.
The LAST ROUTED SAS ADDRESS INDEX field indicates the index of the last expander route table descriptor
reported in the expander route table descriptor list. The management application client may set the STARTING
ROUTED SAS ADDRESS INDEX field in its next REPORT EXPANDER ROUTE TABLE LIST request to the value of
this field plus one.
The STARTING PHY IDENTIFIER field indicates the value of the STARTING PHY IDENTIFIER field in the request frame,
rounded down to a multiple of 48.
The expander route table descriptor list contains expander route table descriptors as defined in 9.4.4.17.4.
The management device server shall return either all the expander route table descriptors that fit in one SMP
response frame or all the expander route table descriptors until the index indicated in the LAST ROUTED SAS
ADDRESS INDEX field is reached. The expander route table descriptor list shall start with the expander route
table descriptor indicated by the FIRST ROUTED SAS ADDRESS INDEX field and continue with expander route table
descriptors sorted in a vendor specific order based on the routed SAS address index. The expander route
table descriptor list shall not contain any truncated expander route table descriptors. If the FIRST ROUTED SAS
ADDRESS INDEX field is equal to the LAST ROUTED SAS ADDRESS INDEX field, then the expander route table
descriptor at that index shall be returned.
The CRC field is defined in 9.4.4.3.7.
Byte\Bit 7 6 5 4 3 2 1 0
0
••• ROUTED SAS ADDRESS
14 Reserved
15 ZONE GROUP
The ROUTED SAS ADDRESS field indicates the routed SAS address.
The PHY BIT MAP field indicates the phys to which connection requests to the SAS address indicated by the
ROUTED SAS ADDRESS field may be forwarded. This field is a bit map where each bit position indicates a
corresponding phy (e.g., bit zero of byte 13 indicates the phy indicated by the starting phy identifier). A bit set
to one indicates that connection requests to the SAS address indicated by the ROUTED SAS ADDRESS field may
be forwarded to the corresponding phy. A bit set to zero indicates that connection requests to the SAS
address indicated by the ROUTED SAS ADDRESS field are not forwarded to that corresponding phy. Bits
representing phys beyond the value of the NUMBER OF PHYS field reported in the REPORT GENERAL
response (see 9.4.4.4) shall be set to zero.
The ZONE GROUP field is defined in 4.9.3.1. The ZONE GROUP field is only valid if the ZONING ENABLED bit is set
to one (see 9.4.4.17.3).
The CONFIGURE GENERAL function requests actions by the SMP target device containing the management
device server. This SMP function may be implemented by any management device server. In zoning expander
devices, if zoning is enabled, then this function shall only be processed from SMP initiator ports that have
access to zone group 2 (see 4.9.3.2).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (80h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
SSP CONNECT TIME LIMIT
7 (LSB)
10 (MSB)
STP BUS INACTIVITY LIMIT
11 (LSB)
12 (MSB)
STP CONNECT TIME LIMIT
13 (LSB)
14 (MSB)
STP SMP I_T NEXUS LOSS TIME
15 (LSB)
18 (MSB)
STP REJECT TO OPEN LIMIT
19 (LSB)
20 (MSB)
••• CRC
23 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 358 for the CONFIGURE
GENERAL request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 358 for the CONFIGURE
GENERAL request.
An UPDATE SSP TIME LIMIT bit set to one specifies that the SSP CONNECT TIME LIMIT field shall be honored. An
UPDATE SSP TIME LIMIT bit set to zero specifies that the SSP CONNECT TIME LIMIT field shall be ignored.
An UPDATE POWER DONE TIMEOUT bit set to one specifies that the POWER DONE TIMEOUT field shall be honored.
An UPDATE POWER DONE TIMEOUT bit set to zero specifies that the POWER DONE TIMEOUT field shall be ignored.
An UPDATE STP REJECT TO OPEN LIMIT bit set to one specifies that the STP REJECT TO OPEN LIMIT field shall be
honored. An UPDATE STP REJECT TO OPEN LIMIT bit set to zero specifies that the STP REJECT TO OPEN LIMIT field
shall be ignored.
An UPDATE INITIAL TIME TO REDUCED FUNCTIONALITY bit set to one specifies that the INITIAL TIME TO REDUCED
FUNCTIONALITY field shall be honored. An UPDATE INITIAL TIME TO REDUCED FUNCTIONALITY bit set to zero
specifies that the INITIAL TIME TO REDUCED FUNCTIONALITY field shall be ignored.
An UPDATE STP SMP I_T NEXUS LOSS TIME bit set to one specifies that the STP SMP I_T NEXUS LOSS TIME field
shall be honored. An UPDATE STP SMP I_T NEXUS LOSS TIME bit set to zero specifies that the STP SMP I_T NEXUS
LOSS TIME field shall be ignored.
An UPDATE STP CONNECT TIME LIMIT bit set to one specifies that the STP CONNECT TIME LIMIT field shall be
honored. An UPDATE STP CONNECT TIME LIMIT bit set to zero specifies that the STP CONNECT TIME LIMIT field shall
be ignored.
An UPDATE STP BUS INACTIVITY LIMIT bit set to one specifies that the STP BUS INACTIVITY LIMIT field shall be
honored. An UPDATE STP BUS INACTIVITY LIMIT bit set to zero specifies that the STP BUS INACTIVITY LIMIT field
shall be ignored.
The INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION field specifies the maximum time, in 100 ns
increments, that an expander phy shall use, in conjunction with the contents of the HOP COUNT field (see
6.2.6.5.3) to wait before requesting the ECM assign path resources to a connection. A value of 00h in this field
specifies that the ECM assign path resources to a connection as resources become available. This value is
reported in the INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION field (see 9.4.4.4). The length of
time the expander phy shall wait is determined from the following calculation:
where:
delay in assigning resources is the number of nanoseconds the phy delays before allowing the ECM assign path
resources to a connection;
initial delay is the contents of the INITIAL TIME TO DELAY EXPANDER FORWARD OPEN
INDICATION field; and
Code a Description
The port shall never recognize an I_T nexus loss (i.e., it shall retry the connection
FFFFh
requests forever).
a
The default value of the STP SMP I_T NEXUS LOSS TIME field should be non-zero. It is recommended that this value be
07D0h (i.e., 2 000 ms).
The INITIAL TIME TO REDUCED FUNCTIONALITY field specifies the minimum time, in 100 ms increments, that an
expander device shall wait from originating a Broadcast (Expander) to reducing functionality (see 4.5.8). This
value is reported in the INITIAL TIME TO REDUCED FUNCTIONALITY field in the SMP REPORT GENERAL response
(see 9.4.4.4).
The POWER DONE TIMEOUT field specifies the maximum time, in one second increments, that a management
application layer allows a power consumer device (see 6.14.2) to consume additional power. This value is
reported in the POWER DONE TIMEOUT field in the SMP REPORT GENERAL response (see 9.4.4.4). A POWER
DONE TIMEOUT field set to 00h specifies that the time limit shall not be changed from the current value. A
POWER DONE TIMEOUT field set to FFh specifies that the time limit is vendor specific. The power done timeout
limit (see 6.14.4) is enforced by the management application layer.
The STP REJECT TO OPEN LIMIT field specifies the minimum time, in 10 µs increments, that an STP port shall
wait to establish a connection request with an initiator port on an I_T nexus after receiving an OPEN_REJECT
(RETRY), OPEN_REJECT (RESERVED CONTINUE 0), or OPEN_REJECT (RESERVED CONTINUE 1).
This value may be rounded as defined in SPC-6. An STP REJECT TO OPEN LIMIT field set to 0000h specifies that
the minimum time is vendor specific. This minimum time is enforced by the port layer (see 7.2.3). This value is
reported in the STP REJECT TO OPEN LIMIT field in the SMP REPORT GENERAL response (see 9.4.4.4).
The CRC field is defined in 9.4.4.2.7.
Table 360 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (80h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 360 for the CONFIGURE
GENERAL response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 360 for the CONFIGURE
GENERAL response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 360 for the CONFIGURE
GENERAL response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The ENABLE DISABLE ZONING function enables or disables zoning. This SMP function shall be supported
by SMP target ports in zoning expander devices (see 4.9). Other SMP target ports shall not support this SMP
function. This function is an SMP zone configuration function (see 4.9.6.3).
SMP zone configuration functions change the zoning expander shadow values, which do not become zoning
expander current values until the activate step (see 4.9.6.4).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (81h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6 Reserved SAVE
7 Reserved
ENABLE DISABLE
8 Reserved
ZONING
••• Reserved
11
12 (MSB)
••• CRC
15 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 361 for the ENABLE
DISABLE ZONING request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 361 for the ENABLE DISABLE
ZONING request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 361 for the ENABLE
DISABLE ZONING request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the CONFIGURE GENERAL request (see
9.4.4.18).
The SAVE field specifies whether the management device server shall apply the specified changes to the
shadow value and/or the saved value of the zoning enabled setting and is defined in table 362.
00b Shadow no
Code Description
00b No change
11b Reserved
If the ENABLE DISABLE ZONING field is set to 11b (i.e., reserved), then the management device server shall
return a function result of UNKNOWN ENABLE DISABLE ZONING VALUE in the response frame (see table
298 in 9.4.4.3).
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (81h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 364 for the ENABLE
DISABLE ZONING response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 364 for the ENABLE DISABLE
ZONING response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 364 for the ENABLE
DISABLE ZONING response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on
the ALLOCATED RESPONSE LENGTH field in the request frame.
The CRC field is defined in 9.4.4.3.7.
The ZONED BROADCAST function requests that the specified Broadcast (see 4.1.15) be forwarded as
specified in 4.9.5. This SMP function shall be supported by management device servers in zoning expander
devices (see 4.9). Other management device servers shall not support this SMP function. This SMP function
shall only be processed from SMP initiator ports that have access to zone group 3 (see 4.9.3.2).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (85h)
4
Restricted (for an EXPECTED EXPANDER CHANGE COUNT field)
5
••• •••
BROADCAST SOURCE ZONE GROUP (last)
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 365 for the ZONED
BROADCAST request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 365 for the ZONED BROADCAST
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 365 for the ZONED
BROADCAST request.
The BROADCAST TYPE field specifies the type of Broadcast that shall be forwarded and is defined in Table 366.
Code Description
The NUMBER OF BROADCAST SOURCE ZONE GROUPS field specifies the number of zone groups to which the
specified Broadcast is to be forwarded.
The Broadcast source zone group list contains BROADCAST SOURCE ZONE GROUP fields. The Broadcast source
zone group list shall contain no more than one entry for each source zone group.
Each BROADCAST SOURCE ZONE GROUP field specifies a source zone group for the Broadcast. The expander
device forwards the Broadcast to each destination zone group accessible to that source zone group as
specified in 4.9.5.
The PAD field contains zero, one, two, or three bytes set to 00h such that the total length of the SMP request
frame is a multiple of four bytes.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (85h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 367 for the ZONED
BROADCAST response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 367 for the ZONED BROADCAST
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 367 for the ZONED
BROADCAST response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The ZONE LOCK function locks a zoning expander device to provide exclusive access to SMP zone
configuration functions (see 4.9.6.3) for one zone manager. All zoning expander devices shall support this
function.
If:
a) the ZONING ENABLED bit is set to one, the ZONE LOCKED bit is set to zero in the REPORT GENERAL
response (see 9.4.4.4), and the SMP initiator port has access to zone group 2 (see 4.9.3.2);
b) the ZONE LOCKED bit is set to zero in the REPORT GENERAL response and the PHYSICAL PRESENCE
ASSERTED bit is set to one in the REPORT GENERAL response;
c) the ZONE LOCKED bit is set to zero in the REPORT GENERAL response and the request contains the
correct zone manager password (see 4.9.1); or
d) the ZONE LOCKED bit is set to one in the REPORT GENERAL response and the request originated
from the active zone manager,
then the management device server shall:
a) set the ACTIVE ZONE MANAGER SAS ADDRESS field to the SAS address of the SMP initiator port in the
ZONE LOCK response and the REPORT GENERAL response; and
b) set the ZONE LOCKED bit to one in the REPORT GENERAL response,
otherwise the management device server shall return a function result of NO MANAGEMENT ACCESS
RIGHTS.
When the management device server changes the ZONE LOCKED bit from zero to one, the locked zoning
expander device sets the zoning expander shadow values equal to the zoning expander current values.
Table 368 defines the request format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (86h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
ZONE LOCK INACTIVITY TIME LIMIT
7 (LSB)
8 (MSB)
39 (LSB)
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 368 for the ZONE LOCK
request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 368 for the ZONE LOCK request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 368 for the ZONE LOCK
request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the CONFIGURE GENERAL request (see
9.4.4.18).
The ZONE LOCK INACTIVITY TIME LIMIT field specifies the minimum time that the locked expander device shall
allow between any SMP zone configuration function requests or SMP ZONE LOCK requests from the active
zone manager (i.e., the maximum time that a zone manager may allow to pass without accessing the locked
expander device) and is reported in the SMP REPORT GENERAL response (see 9.4.4.21). This field
specifies the number of 100 ms increments that a locked zoning expander device shall remain locked without
processing any SMP zone configuration function or SMP ZONE LOCK function (e.g., a value of 0001h in this
field means that the time is less than or equal to 100 ms and a value of 0002h in this field means that the time
is less than or equal to 200 ms). A value of 0000h in this field specifies that there is no zone lock inactivity time
limit (i.e., the zone lock inactivity timer is disabled).
The ZONE MANAGER PASSWORD field specifies a password used to allow permission to lock without physical
presence being asserted.
The CRC field is defined in 9.4.4.2.7.
Table 369 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (86h)
2 FUNCTION RESULT
••• Reserved
7
15
16 (MSB)
••• CRC
19 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 369 for the ZONE LOCK
response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 369 for the ZONE LOCK
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 369 for the ZONE LOCK
response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the ALLOCATED
RESPONSE LENGTH field in the request frame.
The ACTIVE ZONE MANAGER SAS ADDRESS field is defined in the REPORT GENERAL response (see 9.4.4.4).
The CRC field is defined in 9.4.4.3.7.
The ZONE ACTIVATE function causes the zoning expander device to set the zoning expander current values
equal to the zoning expander shadow values (see 4.9.6.4). All zoning expander devices shall support this
function. This function is an SMP zone configuration function (see 4.9.6.3).
Table 370 defines the request format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (87h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6
Reserved
7
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 370 for the ZONE
ACTIVATE request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 370 for the ZONE ACTIVATE
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 370 for the ZONE
ACTIVATE request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the CONFIGURE GENERAL request (see
9.4.4.18).
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (87h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 371 for the ZONE
ACTIVATE response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 371 for the ZONE ACTIVATE
request.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 371 for the ZONE
ACTIVATE request. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The ZONE UNLOCK function unlocks a zoning expander device (see 4.9.6.5). All zoning expander devices
shall support this function. This function is an SMP zone configuration function (see 4.9.6.3).
If a locked zoning expander device processes a ZONE UNLOCK request from the active zone manager, then
the management device server shall set the ZONE LOCKED bit to zero in the REPORT GENERAL response
(see 9.4.4.4).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (88h)
4
Restricted (for an EXPECTED EXPANDER CHANGE COUNT field)
5
ACTIVATE
6 Reserved
REQUIRED
7 Reserved
8 (MSB)
••• CRC
11 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 372 for the ZONE
UNLOCK request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 372 for the ZONE UNLOCK
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 372 for the ZONE
UNLOCK request.
An ACTIVATE REQUIRED bit set to one specifies that the management device server shall unlock the zoning
expander device only if the activate step has been completed. An ACTIVATE REQUIRED bit set to zero specifies
that the management device server shall unlock the zoning expander device regardless of whether the
activate step has been completed.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (88h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 373 for the ZONE
UNLOCK response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 373 for the ZONE UNLOCK
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 373 for the ZONE
UNLOCK response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
The CONFIGURE ZONE MANAGER PASSWORD function configures the zone manager password (see
4.9.1). This SMP function may be supported by a management device server in a zoning expander device.
Other management device servers shall not support this SMP function. This SMP function shall only be
processed if the request is received from any:
a) SMP initiator port and specifies the correct zone manager password; or
b) SMP initiator port while physical presence is asserted.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (89h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6 Reserved SAVE
7 Reserved
8 (MSB)
39 (LSB)
40 (MSB)
71 (LSB)
72 (MSB)
••• CRC
75 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 374 for the CONFIGURE
ZONE MANAGER PASSWORD request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 374 for the CONFIGURE ZONE
MANAGER PASSWORD request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 374 for the CONFIGURE
ZONE MANAGER PASSWORD request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the CONFIGURE GENERAL request (see
9.4.4.18).
The SAVE field specifies whether the management device server shall apply the specified changes to the
current value and/or the saved value of the zone manager password and is defined in table 375.
00b Current a no
If physical presence is not asserted and the ZONE MANAGER PASSWORD field does not match the current zone
manager password maintained by the management device server, then the management device server shall
return a function result of NO MANAGEMENT ACCESS RIGHTS in the response frame (see table 298 in
9.4.4.3).
The NEW ZONE MANAGER PASSWORD field specifies a new value for the zone manager password maintained by
the management device server. A NEW ZONE MANAGER PASSWORD field set to ZERO (see table 34 in 4.9.1)
specifies that the zone manager password is disabled and all zone managers have access. A NEW ZONE
MANAGER PASSWORD field set to DISABLED (see table 34 in 4.9.1) specifies that the zone manager password
is disabled and access shall only be allowed if physical presence is asserted. If the expander device does not
support a zone manager password of DISABLED, then the management device server shall return a function
result of DISABLED PASSWORD NOT SUPPORTED in the response frame (see table 298 in 9.4.4.3).
The CRC field is defined in 9.4.4.2.7.
Table 376 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (89h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 376 for the CONFIGURE
ZONE MANAGER PASSWORD response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 376 for the CONFIGURE ZONE
MANAGER PASSWORD response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 376 for the CONFIGURE
ZONE MANAGER PASSWORD response. A RESPONSE LENGTH field set to 00h does not have a special
meaning based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The CRC field is defined in 9.4.4.3.7.
The CONFIGURE ZONE PHY INFORMATION function configures zone phy information for one or more phys
in a locked zoning expander device. This function shall be supported by all zoning expander devices. This
function is an SMP zone configuration function (see 4.9.6.3).
SMP zone configuration functions change the zoning expander shadow values, which do not become zoning
expander current values until the activate step (see 4.9.6.4).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (8Ah)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
••• Zone phy configuration descriptor (first) (see table 379 in 9.4.4.25.3)
11
••• •••
n-7
••• Zone phy configuration descriptor (last) (see table 379 in 9.4.4.25.3)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 377 for the CONFIGURE
ZONE PHY INFORMATION request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 377 for the CONFIGURE ZONE
PHY INFORMATION request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 377 for the CONFIGURE
ZONE PHY INFORMATION request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
The ZONE PHY CONFIGURATION DESCRIPTOR LENGTH field indicates the length, in dwords, of the zone phy
configuration descriptor (see 9.4.4.25.3).
The SAVE field specifies whether the management device server shall apply the specified changes to the
shadow value and/or the saved value of the zone phy information and is defined in table 378.
00b Shadow no
The NUMBER OF ZONE PHY CONFIGURATION DESCRIPTORS field specifies the number of zone phy configuration
descriptors in the zone phy configuration descriptor list.
The zone phy configuration descriptor list contain a zone phy configuration descriptors as defined in
9.4.4.25.3 for each expander phy in the expander device. The zone phy configuration descriptor list shall
contain no more than one zone phy configuration descriptor with the same value in the PHY IDENTIFIER field.
NOTE 83 - Because the maximum number of response bytes is 1 023 bytes (see 8.4.3), the length of the
header is 8 bytes, and the length of the zone phy configuration descriptor is 4 bytes, the zone phy
configuration descriptor list has a maximum of 254 entries.
Byte\Bit 7 6 5 4 3 2 1 0
0 PHY IDENTIFIER
2 Reserved
3 ZONE GROUP
The PHY IDENTIFIER field specifies the phy to which the zone phy configuration descriptor information shall be
applied.
The INSIDE ZPSDS PERSISTENT bit specifies the value of the INSIDE ZPSDS PERSISTENT bit in the zone phy
information (see 4.9.3.1).
The REQUESTED INSIDE ZPSDS bit specifies the value of the REQUESTED INSIDE ZPSDS bit in the zone phy
information (see 4.9.3.1).
The ZONE GROUP PERSISTENT bit specifies the value of the ZONE GROUP PERSISTENT bit in the zone phy
information (see 4.9.3.1).
The ZONE GROUP field specifies the value of the ZONE GROUP field in the zone phy information (see 4.9.3.1).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (8Ah)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 380 for the CONFIGURE
ZONE PHY INFORMATION response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 380 for the CONFIGURE ZONE
PHY INFORMATION response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 380 for the CONFIGURE
ZONE PHY INFORMATION response. A RESPONSE LENGTH field set to 00h does not have a special meaning
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The CRC field is defined in 9.4.4.3.7.
The CONFIGURE ZONE PERMISSION TABLE function configures the zone permission table. This function
shall be supported by all zoning expander devices. This function is an SMP zone configuration function (see
4.9.6.3).
SMP zone configuration functions change the zoning expander shadow values, which do not become zoning
expander current values until the zoning expander device processes the activate step (see 4.9.6.4).
Annex I describes examples of using multiple zone configuration descriptors.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (8Bh)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
NUMBER OF ZONE
8 Reserved SAVE
GROUPS
10
••• Reserved
15
16
Zone permission configuration descriptor (first) (see table 385 or table
••• 386 in 9.4.4.26.3)
31 or 47
••• •••
(n - 20) or
(n - 36)
Zone permission configuration descriptor (last) (see table 385 or table
••• 386 in 9.4.4.26.3)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 381 for the CONFIGURE
ZONE PERMISSION TABLE request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 381 for the CONFIGURE ZONE
PERMISSION TABLE request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 381 for the CONFIGURE
ZONE PERMISSION TABLE request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
The STARTING SOURCE ZONE GROUP field specifies the first source zone group (i.e., s) to be written with the first
zone permission configuration descriptor.
The NUMBER OF ZONE PERMISSION CONFIGURATION DESCRIPTORS field specifies the number of zone permission
configuration descriptors in the zone permission configuration descriptor list.
The NUMBER OF ZONE GROUPS field specifies the number of elements in each zone permission configuration
descriptor and is defined in table 382.
Code Description
The SAVE field specifies whether the management device server shall apply the specified changes to the
shadow value and/or the saved value of the zone permission table and is defined in table 383.
00b Shadow no
The ZONE PERMISSION CONFIGURATION DESCRIPTOR LENGTH field indicates the length, in dwords, of the zone
permission configuration descriptor (see 9.4.4.26.3).
The zone permission configuration descriptor list contains a zone permission configuration descriptor as
defined in 9.4.4.26.3 for each source zone group in ascending order starting with the source zone group
specified in the STARTING SOURCE ZONE GROUP field. The management device server shall process the zone
permission configuration descriptors in order (i.e., a subsequent zone permission configuration descriptor
overrides a previous zone permission configuration descriptor).
The CRC field is defined in 9.4.4.2.7.
The zone permission configuration descriptor format is based on the NUMBER OF ZONE GROUPS field as defined
in table 384.
Table 385 defines the zone permission configuration descriptor for a source zone group (i.e., s) containing 128
zone groups.
Table 385 – Zone permission configuration descriptor for source zone group for 128 zone groups
Byte\Bit 7 6 5 4 3 2 1 0
0 ZP[S, 127] ZP[S, 126] ZP[S, 125] ZP[S, 124] ZP[S, 123] ZP[S, 122] ZP[S, 121] ZP[S, 120]
••• •••
Table 386 defines the zone permission configuration descriptor for a source zone group (i.e., s) containing 256
zone groups.
Table 386 – Zone permission configuration descriptor for source zone group for 256 zone groups
Byte\Bit 7 6 5 4 3 2 1 0
0 ZP[S, 255] ZP[S, 254] ZP[S, 253] ZP[S, 252] ZP[S, 251] ZP[S, 250] ZP[S, 249] ZP[S, 248]
••• •••
The zone permission configuration descriptor contains all of the zone permission table entries for the source
zone group (i.e., s). To preserve symmetry about the ZP[s, s] table axis, the management device server shall
apply the same value to both the source and destination zone groups for the zone permission entries.
Table 387 defines how the zone permission descriptor bits shall be set by the management application client
and processed by the management device server.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (8Bh)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 388 for the CONFIGURE
ZONE PERMISSION TABLE response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 388 for the CONFIGURE ZONE
PERMISSION TABLE response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 388 for the CONFIGURE
ZONE PERMISSION TABLE response. A RESPONSE LENGTH field set to 00h does not have a special meaning
based on the ALLOCATED RESPONSE LENGTH field in the request frame.
The CRC field is defined in 9.4.4.3.7.
The CONFIGURE ROUTE INFORMATION function sets an expander route entry within the expander route
table of a configurable expander device. This SMP function shall be supported by management device
servers in expander devices if the CONFIGURABLE ROUTE TABLE field is set to one in the SMP REPORT
GENERAL response (see 9.4.4.4). Other management device servers shall not support this SMP function.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (90h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
EXPANDER ROUTE INDEX
7 (LSB)
8 Reserved
9 PHY IDENTIFIER
10
Reserved
11
DISABLE
EXPANDER
12 Reserved
ROUTE
ENTRY
13
••• Reserved
15
16
••• ROUTED SAS ADDRESS
23
24
••• Reserved
39
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 389 for the CONFIGURE
ROUTE INFORMATION request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 389 for the CONFIGURE ROUTE
INFORMATION request.
NOTE 84 - Future versions of this standard may change the value defined in table 390.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 389
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are 9 dwords before the CRC field.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
The EXPANDER ROUTE INDEX field specifies the expander route index for the expander route entry being
configured (see 4.5.7.4).
The PHY IDENTIFIER field specifies the phy identifier (see 4.2.10) of the phy for which the expander route entry
is being configured (see 4.5.7.4).
The DISABLE EXPANDER ROUTE ENTRY bit specifies whether the ECM shall use the expander route entry to route
connection requests (see 4.5.7.4). If the DISABLE EXPANDER ROUTE ENTRY bit is set to zero, then the ECM shall
use the expander route entry to route connection requests. If the DISABLE EXPANDER ROUTE ENTRY bit is set to
one, then the ECM shall not use the expander route entry to route connection requests.
The ROUTED SAS ADDRESS field specifies the SAS address for the expander route entry being configured (see
4.5.7.4).
The CRC field is defined in 9.4.4.2.7.
Table 390 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (90h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 390 for the CONFIGURE
ROUTE INFORMATION response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 390 for the CONFIGURE ROUTE
INFORMATION response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 390 for the CONFIGURE
ROUTE INFORMATION response.
The CRC field is defined in 9.4.4.3.7.
The PHY CONTROL function requests actions by the specified phy. This SMP function may be implemented
by any management device server. In zoning expander devices if zoning is enabled, then this function shall
only be processed from SMP initiator ports that have access to zone group 2 or the zone group of the
specified phy (see 4.9.3.2).
Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (40h)
1 FUNCTION (91h)
10 PHY OPERATION
UPDATE
PARTIAL
11 Reserved PATHWAY
TIMEOUT
VALUE
12
••• Reserved
23
24
••• ATTACHED DEVICE NAME
31
37
••• Reserved
39
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 391 for the PHY
CONTROL request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 391 for the PHY CONTROL
request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 4 bytes defined in table 399 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the value defined in table 399 (i.e., 00h); and
b) return the response frame as defined in 9.4.4.2.4.
NOTE 85 - Future versions of this standard may change the value defined in table 399.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 391
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are 9 dwords before the CRC field.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
The PHY IDENTIFIER field specifies the phy (see 4.2.10) to which the SMP PHY CONTROL request applies.
If:
a) a SAS phy is attached;
b) a SATA phy is attached and there is no affiliation; or
c) a SATA phy is attached and an affiliation exists for the STP initiator port with
the same SAS address as the SMP initiator port that opened this SMP
connection,
then:
a) if the specified phy is a physical phy, then perform a link reset sequence (see
4.4) on the specified phy and enable the specified phy even if the specified
phy is in a connection; and
b) if the specified phy is a virtual phy, then perform an internal reset and enable
the specified phy even if the specified phy is in a connection.
If a SATA phy is attached and an affiliation does not exist for the STP initiator port
01h LINK RESET
with the same SAS address as the SMP initiator port that opened this SMP
connection, then the management device server shall return a function result of
AFFILIATION VIOLATION in the response frame (see table 298 in 9.4.4.3). a
See 6.15 for Broadcast (Change) requirements related to this phy operation in an
expander device.
Any affiliation (see 6.21.6) shall continue to be present. The phy shall bypass the
SATA spinup hold state, if implemented (see 5.14.3.9).
If the specified phy is a physical phy, then perform a link reset sequence (see 4.4)
on the specified phy and enable the specified phy even if the specified phy is in a
connection. If the attached phy is a SAS phy or an expander phy, then the link reset
sequence shall include a hard reset sequence (see 4.4.2). If the attached phy is a
SATA phy, then the phy shall bypass the SATA spinup hold state. See 6.15 for
Broadcast (Change) requirements related to this phy operation in an expander
device.
HARD
02h
RESET
If the specified phy is a virtual phy, then perform an internal reset and enable the
specified phy even if the specified phy is in a connection.
The management device server shall return the PHY CONTROL response without
waiting for the HARD RESET phy operation to complete.
a
Phys compliant with SAS-1.1 did not reject this phy operation due to affiliations.
b
Phys compliant with SAS-1.1 returned SMP FUNCTION REJECTED.
Disable the specified phy (i.e., stop transmitting valid dwords and receiving dwords
on the specified phy). The LINK RESET and HARD RESET operations may be
03h DISABLE
used to enable the phy. See 6.15 for Broadcast (Change) requirements related to
this phy operation in an expander device.
04h Reserved
CLEAR Clear the error log counters reported in the REPORT PHY ERROR LOG function
05h
ERROR LOG (see 9.4.4.11) for the specified phy.
Clear an affiliation (see 6.21.6) from the STP initiator port with the same SAS
CLEAR address as the SMP initiator port that opened this SMP connection. If there is no
06h
AFFILIATION such affiliation, then the management device server shall return a function result of
AFFILIATION VIOLATION b in the response frame (see table 298 in 9.4.4.3).
If the expander phy incorporates an STP SATA bridge and supports SATA port
selectors, then the phy shall transmit the SATA port selection signal (see 5.7.4)
which causes the SATA port selector to select the attached phy as the active host
phy and make its other host phy inactive. See 6.15 for Broadcast (Change)
TRANSMIT requirements related to this phy operation in an expander device.
SATA PORT
07h
SELECTION Any affiliation (see 6.21.6) shall be cleared.
SIGNAL
If the expander phy does not support SATA port selectors, then the management
device server shall return a function result of PHY DOES NOT SUPPORT SATA.
If the expander phy supports SATA port selectors but is attached to a SAS phy or an
expander phy, then the management device server shall return a function result of
SMP FUNCTION FAILED in the response frame (see table 298 in 9.4.4.3).
CLEAR STP
The STP I_T NEXUS LOSS OCCURRED bit shall be set to zero in the REPORT PHY
08h I_T NEXUS
SATA function (see 9.4.4.12).
LOSS
SET
If the expander phy is attached to a SATA phy, then set the ATTACHED DEVICE NAME
ATTACHED
09h field reported in the DISCOVER response (see 9.4.4.10) to the value of the
DEVICE
ATTACHED DEVICE NAME field in the PHY CONTROL request.
NAME
All
Reserved
others
a
Phys compliant with SAS-1.1 did not reject this phy operation due to affiliations.
b
Phys compliant with SAS-1.1 returned SMP FUNCTION REJECTED.
If the operation specified by the PHY OPERATION field is unknown, then the management device sever shall
return a function result of UNKNOWN PHY OPERATION in the response frame (see table 298 in 9.4.4.3) and
not process any other fields in the request.
If the PHY IDENTIFIER field specifies the phy that is being used for the SMP connection and a phy operation of
LINK RESET, HARD RESET, or DISABLE is requested, then the management device server shall not perform
the requested operation and shall return a function result of SMP FUNCTION FAILED in the response frame
(see table 298 in 9.4.4.3).
An UPDATE PARTIAL PATHWAY TIMEOUT VALUE bit set to one specifies that the PARTIAL PATHWAY TIMEOUT VALUE
field shall be honored. An UPDATE PARTIAL PATHWAY TIMEOUT VALUE bit set to zero specifies that the PARTIAL
PATHWAY TIMEOUT VALUE field shall be ignored.
The ATTACHED DEVICE NAME field is used by the SET ATTACHED DEVICE NAME phy operation and is
reserved for all other phy operations. If a management application client detects the ATTACHED DEVICE NAME
field set to 00000000 00000000h in the DISCOVER response when a SATA device is attached, then it shall
set the ATTACHED DEVICE NAME field based on the IDENTIFY DEVICE data (see ACS-4) retrieved by an ATA
application client in the same SAS initiator device as follows:
a) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is correct and words 108 to 111 (i.e., the
World Wide Name field) are not set to zero, then set this field to the world wide name indicated by
words 108 to 111 according to table 20 in 4.2.7;
b) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is correct and words 108 to 111 (i.e., the
World Wide Name) are set to zero, then set this field to 00000000 00000000h; or
c) if IDENTIFY DEVICE data word 255 (i.e., the Integrity word) is not correct, then set this field to
00000000 00000000h.
The PROGRAMMED MINIMUM PHYSICAL LINK RATE field specifies the minimum physical link rate the phy shall
support during a link reset sequence (see 4.4.1). Table 393 defines the values for this field. This value is
reported in the DISCOVER response (see 9.4.4.10). If this field is changed along with a phy operation of LINK
RESET or HARD RESET, then that phy operation shall utilize the new value for this field.
The PROGRAMMED MAXIMUM PHYSICAL LINK RATE field specifies the maximum physical link rates the phy shall
support during a link reset sequence (see 4.4.1). Table 393 defines the values for this field. This value is
reported in the DISCOVER response (see 9.4.4.10). If this field is changed along with a phy operation of LINK
RESET or HARD RESET, then that phy operation shall utilize the new value for this field.
Table 393 – PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL
LINK RATE field
Code Description
1h to 7h Reserved
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
Dh to Fh Reserved
If:
a) the PROGRAMMED MINIMUM PHYSICAL LINK RATE field or the PROGRAMMED MAXIMUM PHYSICAL LINK RATE
field is set to an unsupported or reserved value; or
b) the PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL LINK RATE
field are set to an invalid combination of values (e.g., the minimum is greater than the maximum),
then the management device server shall not change either of their values and may return a function result of
SMP FUNCTION FAILED in the response frame (see table 298 in 9.4.4.3). If the management device server
returns a function result of SMP FUNCTION FAILED, then it shall not perform the requested phy operation.
Table 394 defines the ENABLE SAS SLUMBER field.
Code Description
00b No change
If supported, then the management device server shall manage slumber phy power conditions
01b
(see 4.11.1.6).
If supported, then the management device server shall disable slumber phy power conditions
10b
(see 4.11.1.6).
11b Reserved
If the ENABLE SAS SLUMBER field is set to an unsupported or reserved value, then the management device
server shall not issue a Manage Power Conditions request to any XL state machine and shall return a function
result of SMP FUNCTION FAILED in the response frame (see table 298).
Table 395 defines the ENABLE SAS PARTIAL field.
Code Description
00b No change
If supported, then the management device server shall manage partial phy power conditions
01b
(see 4.11.1.6).
If supported, then the management device server shall disable partial phy power conditions
10b
(see 4.11.1.6).
11b Reserved
If the ENABLE SAS PARTIAL field is set to an unsupported or reserved value, then the management device server
shall not issue a Manage Power Conditions request to any XL state machine and shall return a function result
of SMP FUNCTION FAILED in the response frame (see table 298).
Code Description
00b No change
If supported, then the management device server shall manage SATA slumber interface
01b
power management sequences (see 4.11.2).
If supported, then the management device server shall disable SATA slumber interface power
10b
management sequences (see 4.11.2).
11b Reserved
If the ENABLE SATA SLUMBER field is set to an unsupported or reserved value, then the management device
server shall not issue a Manage Power Conditions request to any XL state machine and shall return a function
result of SMP FUNCTION FAILED in the response frame (see table 298).
Table 397 defines the ENABLE SATA PARTIAL field.
Code Description
00b No change
If supported, then the management device server shall manage SATA partial interface power
01b
management sequences (see 4.11.2).
If supported, then the management device server shall disable SATA partial interface power
10b
management sequences (see 4.11.2).
11b Reserved
If the ENABLE SATA PARTIAL field is set to an unsupported or reserved value, then the management device
server shall not issue a Manage Power Conditions request to any XL state machine and shall return a function
result of SMP FUNCTION FAILED in the response frame (see table 298).
Code Description
00b No change
01b Reserved
If supported, then the management device server shall negate the POWER DISABLE
10b
signal (see 4.14.3 and SAS-4) associated with the phy.
If supported, then the management device server shall assert the POWER DISABLE signal
11b
(see 4.14.3 and SAS-4) associated with the phy.
The PARTIAL PATHWAY TIMEOUT VALUE field specifies the amount of time, in one microsecond intervals, the
expander phy shall wait after receiving an Arbitrating (Blocked On Partial) confirmation from the ECM before
requesting that the ECM resolve pathway blockage (see 6.16.5.5). A PARTIAL PATHWAY TIMEOUT VALUE field
value of zero (i.e., 0 µs) specifies that partial pathway resolution shall be requested by the expander phy after
receiving an Arbitrating (Blocked On Partial) confirmation from the ECM. This value is reported in the
DISCOVER response (see 9.4.4.10). The PARTIAL PATHWAY TIMEOUT VALUE field is only honored if the UPDATE
PARTIAL PATHWAY TIMEOUT VALUE bit is set to one.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (91h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 399 for the PHY
CONTROL response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 399 for the PHY CONTROL
response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 399 for the PHY
CONTROL response.
The PHY TEST FUNCTION function requests actions by the specified phy. This SMP function may be
implemented by any management device server. In zoning expander devices if zoning is enabled, then this
function shall only be processed from SMP initiator ports that have access to zone group 2 or the zone group
of the specified phy (see 4.9.3.2).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (92h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER
12
••• Reserved
14
PHY TEST
PHY TEST FUNCTION
15 Reserved FUNCTION PHY TEST FUNCTION PHYSICAL LINK RATE
SSC
SATA
16
••• Reserved
18
20
••• PHY TEST PATTERN DWORDS
27
28
••• Reserved
39
40 (MSB)
••• CRC
43 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 400 for the PHY TEST
FUNCTION request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 400 for the PHY TEST
FUNCTION request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
If the ALLOCATED RESPONSE LENGTH field is set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field to 00h in the response frame; and
b) return the first 4 bytes defined in table 403 plus the CRC field as the response frame.
If the ALLOCATED RESPONSE LENGTH field is not set to 00h, then the management device server shall:
a) set the RESPONSE LENGTH field in the response frame to the value defined in table 403 (i.e., 00h); and
b) return the response frame as defined in 9.4.4.2.4.
NOTE 86 - Future versions of this standard may change the value defined in table 403.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set to one of the values defined in table 400
based on the LONG RESPONSE bit in the REPORT GENERAL response (see 9.4.4.4). A REQUEST LENGTH field
set to 00h specifies that there are 9 dwords before the CRC field.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
The PHY IDENTIFIER field specifies the phy (see 4.2.10) to which the SMP PHY TEST PATTERN request
applies.
If the PHY IDENTIFIER field specifies the phy that is being used for the SMP connection, then the management
device server shall not perform the requested operation and shall return a function result of SMP FUNCTION
FAILED in the response frame (see table 298 in 9.4.4.3).
The PHY TEST FUNCTION field specifies the phy test function (see 4.12) to be performed and is defined in table
401. If the PHY TEST FUNCTION field specifies a phy test function that is not supported by the phy, then the
management device server shall return a function result of UNKNOWN PHY TEST FUNCTION in the
response frame (see table 298 in 9.4.4.3).
If the selected phy is performing a phy test function, then the selected phy shall
stop performing the phy test function and originate a link reset sequence.
00h STOP
If the selected phy is not performing a phy test function, then this function has
no effect on the selected phy.
If the selected phy is not performing a phy test function, then the selected phy
shall be set to transmit the phy test pattern specified by the PHY TEST PATTERN
field at the physical link rate specified by the PHY TEST FUNCTION PHYSICAL LINK
RATE field and set to ignore its receiver. If the selected phy receives data while
TRANSMIT transmitting the pattern (see 4.12.2), then the selected phy shall ignore the
01h
PATTERN received data.
If the selected phy is performing a phy test function, then the management
device server shall return a function result of PHY TEST FUNCTION IN
PROGRESS in the response frame (see table 298).
If the PHY TEST FUNCTION field is set to 01h (i.e., TRANSMIT PATTERN), then the PHY TEST PATTERN field
specifies the phy test pattern to be performed and is the same as that defined in table 280 for the Protocol
Specific diagnostic page (see 9.2.9.2). The phy test pattern shall be sent at the physical link rate specified by
the PHY TEST FUNCTION PHYSICAL LINK RATE field.
The PHY TEST FUNCTION SATA bit is as defined in the Protocol Specific diagnostic page (see 9.2.9.2).
The PHY TEST FUNCTION SSC field is as defined in table 281 for the Protocol Specific diagnostic page (see
9.2.9.2).
The PHY TEST FUNCTION PHYSICAL LINK RATE field specifies the physical link rate at which the phy test function,
if any, shall be performed. Table 402 defines the values for this field.
Code Description
0h to 7h Reserved
8h 1.5 Gbit/s
9h 3 Gbit/s
Ah 6 Gbit/s
Bh 12 Gbit/s
Ch 22.5 Gbit/s
Dh to Fh Reserved
The PHY TEST PATTERN DWORDS CONTROL field and the PHY TEST PATTERN DWORDS field are as defined in table
280 for the Protocol Specific diagnostic page (see 9.2.9.2).
The CRC field is defined in 9.4.4.2.7.
Table 403 defines the response format.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (92h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 403 for the PHY TEST
FUNCTION response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 403 for the PHY TEST
FUNCTION response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 403 for the PHY TEST
FUNCTION response.
The CONFIGURE PHY EVENT function configures phy events (see 4.13) for the specified phy. This SMP
function may be implemented by any management device server. In zoning expander devices, if zoning is
enabled, then this function shall only be processed from SMP initiator ports that have access to zone group 2
or the zone group of the specified phy (see 4.9.3.2).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (93h)
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
CLEAR
6 Reserved
PEAKS
7
Reserved
8
9 PHY IDENTIFIER
12
••• Phy event configuration descriptor (first) (see table 405 in 9.4.4.30.3)
19
••• •••
n - 11
••• Phy event configuration descriptor (last) (see table 405 in 9.4.4.30.3)
n-4
n-3 (MSB)
••• CRC
n (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.2.2 and shall be set as shown in table 404 for the CONFIGURE
PHY EVENT request.
The FUNCTION field is defined in 9.4.4.2.3 and shall be set as shown in table 404 for the CONFIGURE PHY
EVENT request.
The ALLOCATED RESPONSE LENGTH field is defined in 9.4.4.2.4.
The REQUEST LENGTH field is defined in 9.4.4.2.5 and shall be set as shown in table 404 for the CONFIGURE
PHY EVENT request.
The EXPECTED EXPANDER CHANGE COUNT field is defined in the SMP CONFIGURE GENERAL request (see
9.4.4.18).
A CLEAR PEAKS bit set to one specifies that all phy event peak value detectors shall be set to zero. A CLEAR
PEAKS bit set to zero specifies no change to the phy event peak value detectors.
The PHY IDENTIFIER field specifies the phy (see 4.2.9) to which the configure phy event information shall be
applied.
The PHY EVENT CONFIGURATION DESCRIPTOR LENGTH field indicates the length, in dwords, of the phy event
configuration descriptor (see 9.4.4.30.3).
The NUMBER OF PHY EVENT CONFIGURATION DESCRIPTORS field specifies the number of phy event configuration
descriptors in the phy event configuration descriptor list and shall be set to the same value as the NUMBER OF
PHY EVENT DESCRIPTORS field in the SMP REPORT PHY EVENT function (see 9.4.4.14).
The phy event configuration descriptor list contains phy event configuration descriptors as defined in
9.4.4.30.3.
The CRC field is defined in 9.4.4.2.7.
Byte\Bit 7 6 5 4 3 2 1 0
0
Reserved
2
4 (MSB)
7 (LSB)
The PHY EVENT SOURCE field, defined in table 45 in 4.13, specifies the type of event that shall be recorded by
the corresponding phy event monitor.
If the phy event source is a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field specifies the
value of the peak value detector that causes the expander device to originate a Broadcast (Expander) (see
6.2.6.4). If the phy event source is not a peak value detector, then the PEAK VALUE DETECTOR THRESHOLD field
is reserved.
If the PHY EVENT SOURCE field contains a value that is not supported, then the management device server shall
return a function result of UNKNOWN PHY EVENT SOURCE in the response frame (see table 298 in 9.4.4.3).
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (93h)
2 FUNCTION RESULT
4 (MSB)
••• CRC
7 (LSB)
The SMP FRAME TYPE field is defined in 9.4.4.3.2 and shall be set as shown in table 406 for the CONFIGURE
PHY EVENT response.
The FUNCTION field is defined in 9.4.4.3.3 and shall be set as shown in table 406 for the CONFIGURE PHY
EVENT response.
The FUNCTION RESULT field is defined in 9.4.4.3.4.
The RESPONSE LENGTH field is defined in 9.4.4.3.5 and shall be set as shown in table 406 for the CONFIGURE
PHY EVENT response. A RESPONSE LENGTH field set to 00h does not have a special meaning based on the
ALLOCATED RESPONSE LENGTH field in the request frame.
Annex A
(normative)
Table A.1 shows a pattern containing both JTPAT for RD+ and JTPAT for RD-. The 10b pattern resulting from
encoding the 8b pattern contains the desired bit sequences for the phase shifts with both starting running
disparities. For more details on JTPAT see SAS-4.
The compliant jitter tolerance pattern (CJTPAT) is the JTPAT for RD+ and RD- (see table A.1) included as the
payload in an SSP DATA frame or an SMP frame. The CJTPAT is:
1) SOF;
2) six data dwords containing either:
A) an SSP DATA frame header; or
B) an SMP frame header followed by 23 vendor specific bytes;
3) 112 data dwords containing JTPAT for RD+ and RD-;
1. Frame 1. Scrambled
header
XOR frame header
2. Pre-
CJTPAT XOR scrambled XOR 2. CJTPAT
CJTPAT
Scrambler Scrambler
Scrambler
output output
3. Scrambled
3. CRC XOR CRC
The “Scrambler output” column in table A.2 shows the scrambler output for each data dword in the frame. The
scrambler output is independent of the data pattern.
The “CJTPAT” column in table A.2 shows CJTPAT, transmitted on the physical link.
Not
SOF SOF Not applicable SOF
applicable
SMP frame
header and 3
0 unknown C2D2768Dh unknown
frame-type
dependent bytes
17 INFORMATION UNIT
Frame-type 9734A233h E94ADC4Dh 7E7E7E7Eh
field
dependent bytes
18 (dwords 8 to 15) 235E70F6h 5D200E88h 7E7E7E7Eh
33 INFORMATION UNIT
Frame-type 05B3F4Edh 7BCD8A93h 7E7E7E7Eh
field
dependent bytes
34 (dwords 24 to 31) 6B6DD300h 1513AD7Eh 7E7E7E7Eh
41 INFORMATION UNIT
Frame-type 1D9CEC6Ch 63E29212h 7E7E7E7Eh
field
dependent bytes
42 (dwords 32 to 39) 3B061C13h 4578626Dh 7E7E7E7Eh
57 INFORMATION UNIT
Frame-type D7B41976h 6201ACC3h B5B5B5B5h
field
dependent bytes
58 (dwords 48 to 55) 43BC8C7Bh F60939CEh B5B5B5B5h
65 INFORMATION UNIT
Frame-type 2833EFDEh 564D91A0h 7E7E7E7Eh
field
dependent bytes
66 (dwords 56 to 63) 3D93759Fh 43ED0BE1h 7E7E7E7Eh
81 INFORMATION UNIT
Frame-type 68645606h 161A2878h 7E7E7E7Eh
field
dependent bytes
82 (dwords 72 to 79) 2B67B52Fh 5519CB51h 7E7E7E7Eh
89 INFORMATION UNIT
Frame-type 3378AC62h 4D06D21Ch 7E7E7E7Eh
field
dependent bytes
90 (dwords 80 to 87) 00E86812h 7E96166Ch 7E7E7E7Eh
depends on depends on
118 CRC field a contents of first 3D2D7984h contents of first
6 data dwords 6 data dwords
Not
EOF <primitive> <primitive> <primitive>
applicable
a
The CRC field shall be set to a valid value for the frame.
A phy or test equipment transmitting CJTPAT outside connections may transmit it with fixed content as defined
in table A.3.
Table A.3 shows CJTPAT with fixed content:
a) interpreted as an SSP frame, with the FRAME TYPE field in the SSP frame header set to 01h (i.e.,
DATA), each other field in the SSP frame header set to zero, the INFORMATION UNIT field containing
JTPAT for RD+ and RD-, and the CRC field set to a fixed value; and
b) interpreted as an SMP frame, with the SMP FRAME TYPE field set to 01h (i.e., reserved), the frame-type
dependent bytes containing JTPAT for RD+ and RD-, and the CRC field set to a fixed value.
Data
Pre-scrambled Scrambler
dword SSP frame contents SMP frame contents CJTPAT
CJTPAT output
number
Not
SOF SOF Not applicable SOF
applicable
6
Frame-type
••• INFORMATION UNIT field See the INFORMATION UNIT field in table A.2
dependent bytes
117
Not
EOF EOF Not applicable EOF
applicable
A phy may be configured to transmit JTPAT for RD+ and RD- (see clause A.1) by:
a) using the SMP PHY TEST FUNCTION function (see 9.4.4.29) or the Protocol Specific diagnostic
page (see 9.2.9.2) specifying the phy, with the PHY TEST FUNCTION field set to 01h (i.e., TRANSMIT
PATTERN), and the PHY TEST PATTERN field set to 01h (i.e., JTPAT); or
b) vendor specific mechanisms.
A phy may be configured to transmit CJTPAT (see clause A.2) by:
a) using the SMP PHY TEST FUNCTION function (see 9.4.4.29) or the Protocol Specific diagnostic
page (see 9.2.9.2) specifying the phy, with the PHY TEST FUNCTION field set to 01h (i.e., TRANSMIT
PATTERN), and the PHY TEST PATTERN field set to 02h (i.e., CJTPAT);
b) including CJTPAT as a data pattern while processing SCSI commands (e.g., the WRITE BUFFER
command if the phy is in an SSP initiator port or the READ BUFFER command if the phy is in a target
port). The frame length shall be selected to ensure that the specified pattern is transmitted on the
physical link; or
c) vendor specific mechanisms.
If a phy receives JTPAT (see SAS-4) inside or outside a connection, then it considers the data dwords to be
idle dwords and ignores them.
If a phy receives CJTPAT (see clause A.2) outside a connection, then the SL receiver (see 6.18.2) considers
the SOF and EOF to be unexpected dwords and ignores them, and considers the data dwords to be idle
dwords and ignores them.
Phy-layer based phy event counters (e.g., invalid dword count, running disparity error count, loss of dword
synchronization count, elasticity buffer overflow count, and received ERROR count) count events that occur
while receiving idle dwords, so may be used to count events while receiving JTPAT or CTPAT.
If a phy receives CJTPAT inside an SSP connection, then the phy expects it to have a valid SSP frame header
(i.e., all fields in the SSP frame header are valid including the FRAME TYPE field and the SOURCE SAS ADDRESS
field) and follow SSP frame transmission rules (e.g., SSP frame credit, ACK or NAK exchange).
If a phy receives CJTPAT inside an SMP connection, then the phy expects it to have a valid SMP frame type
and follow SMP frame transmission rules (e.g., only one frame is transmitted in each direction per
connection). Sending CJTPAT inside SMP connections is not recommended.
This standard defines no mechanism for configuring a phy to expect to receive JTPAT or CJTPAT (e.g., to
compare the incoming pattern to the expected pattern).
Annex B
(informative)
Figure B.1 shows a speed negotiation between a phy A that supports only SNW-1 attached to a phy B that
only supports SNW-1. Both phys run:
1) SNW-1, supported by both phys; and
2) SNW-2, supported by neither phy.
Both phys then select 1.5 Gbit/s for Final-SNW, which is used to establish the negotiated physical link rate.
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure B.1 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-1 only)
Figure B.2 shows a speed negotiation between a phy A that supports SNW-1 and SNW-2 attached to a phy B
that supports SNW-1 and SNW-2. Both phys run:
1) SNW-1, supported by both phys;
2) SNW-2, supported by both phys; and
3) SNW-3, supported by neither phy.
Both phys then select 3 Gbit/s for Final-SNW, which is used to establish the negotiated physical link rate.
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure B.2 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, phy B: SNW-1, SNW-2)
Figure B.3 shows a speed negotiation between a phy A that supports SNW-1 to SNW-3 attached to a phy B
that only supports SNW-1 and SNW-2. Both phys run:
1) SNW-1, supported by both phys;
2) SNW-2, supported by both phys; and
3) SNW-3, supported by phy A but not by phy B.
Both phys then select 3 Gbit/s for Final-SNW, which is used to establish the negotiated physical link rate.
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure B.3 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, and SNW-3, phy B: SNW-1
and SNW-2)
Figure B.4 shows a speed negotiation between a phy A that supports SNW-2 and SNW-3 attached to a phy B
that only supports SNW-1 and SNW-2. Both phys run:
1) SNW-1, supported by phy B but not by phy A;
2) SNW-2, supported by both phys; and
3) SNW-3, supported by phy A but not by phy B.
Both phys then select 3 Gbit/s for Final-SNW, which is used to establish the negotiated physical link rate.
Phy A Tx
Phy B Rx
Phy A Rx
Phy B Tx
Figure B.4 – SAS speed negotiation sequence (phy A: SNW-2, SNW-3, phy B: SNW-1, SNW-2)
Figure B.5 shows a speed negotiation between a phy A that only supports SNW-1 attached to a phy B that
only supports SNW-2. Both phys run:
1) SNW-1, supported by phy A but not by phy B; and
2) SNW-2, supported by phy B but not by phy A.
Phy B continues to run SNW-3, but phy A determines speed negotiation is unsuccessful and may attempt
another phy reset sequence after a hot-plug timeout.
Phy B determines speed negotiation is not succeeding after SNW-3 and may retry the phy reset sequence
after a hot-plug timeout.
Phy A Tx
Phy B Rx
SNW-3
(invalid)
Phy A Rx
Phy B Tx
Figure B.5 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-2 only)
Annex C
(informative)
CRC
Data to 8b10b
encoder
Generating Polynomial
The following example C program generates the value for the CRC field in frames. The inputs are the data
dwords for the frame and the number of data dwords.
#include <stdio.h>
These equations implement the multiply function shown in figure C.1 and figure C.2. The ^ symbol represents
an XOR operation.
crc00 = d00^d06^d09^d10^d12^d16^d24^d25^d26^d28^d29^d30^d31;
crc01 = d00^d01^d06^d07^d09^d11^d12^d13^d16^d17^d24^d27^d28;
crc02 = d00^d01^d02^d06^d07^d08^d09^d13^d14^d16^d17^d18^d24^d26^d30^d31;
crc03 = d01^d02^d03^d07^d08^d09^d10^d14^d15^d17^d18^d19^d25^d27^d31;
crc04 =
d00^d02^d03^d04^d06^d08^d11^d12^d15^d18^d19^d20^d24^d25^d29^d30^d31;
crc05 = d00^d01^d03^d04^d05^d06^d07^d10^d13^d19^d20^d21^d24^d28^d29;
crc06 = d01^d02^d04^d05^d06^d07^d08^d11^d14^d20^d21^d22^d25^d29^d30;
crc07 = d00^d02^d03^d05^d07^d08^d10^d15^d16^d21^d22^d23^d24^d25^d28^d29;
crc08 = d00^d01^d03^d04^d08^d10^d11^d12^d17^d22^d23^d28^d31;
crc09 = d01^d02^d04^d05^d09^d11^d12^d13^d18^d23^d24^d29;
crc10 = d00^d02^d03^d05^d09^d13^d14^d16^d19^d26^d28^d29^d31;
crc11 =
d00^d01^d03^d04^d09^d12^d14^d15^d16^d17^d20^d24^d25^d26^d27^d28^d31;
crc12 =
d00^d01^d02^d04^d05^d06^d09^d12^d13^d15^d17^d18^d21^d24^d27^d30^d31;
crc13 = d01^d02^d03^d05^d06^d07^d10^d13^d14^d16^d18^d19^d22^d25^d28^d31;
crc14 = d02^d03^d04^d06^d07^d08^d11^d14^d15^d17^d19^d20^d23^d26^d29;
crc15 = d03^d04^d05^d07^d08^d09^d12^d15^d16^d18^d20^d21^d24^d27^d30;
crc16 = d00^d04^d05^d08^d12^d13^d17^d19^d21^d22^d24^d26^d29^d30;
crc17 = d01^d05^d06^d09^d13^d14^d18^d20^d22^d23^d25^d27^d30^d31;
crc18 = d02^d06^d07^d10^d14^d15^d19^d21^d23^d24^d26^d28^d31;
crc19 = d03^d07^d08^d11^d15^d16^d20^d22^d24^d25^d27^d29;
crc20 = d04^d08^d09^d12^d16^d17^d21^d23^d25^d26^d28^d30;
crc21 = d05^d09^d10^d13^d17^d18^d22^d24^d26^d27^d29^d31;
crc22 = d00^d09^d11^d12^d14^d16^d18^d19^d23^d24^d26^d27^d29^d31;
crc23 = d00^d01^d06^d09^d13^d15^d16^d17^d19^d20^d26^d27^d29^d31;
crc24 = d01^d02^d07^d10^d14^d16^d17^d18^d20^d21^d27^d28^d30;
crc25 = d02^d03^d08^d11^d15^d17^d18^d19^d21^d22^d28^d29^d31;
crc26 = d00^d03^d04^d06^d10^d18^d19^d20^d22^d23^d24^d25^d26^d28^d31;
crc27 = d01^d04^d05^d07^d11^d19^d20^d21^d23^d24^d25^d26^d27^d29;
crc28 = d02^d05^d06^d08^d12^d20^d21^d22^d24^d25^d26^d27^d28^d30;
crc29 = d03^d06^d07^d09^d13^d21^d22^d23^d25^d26^d27^d28^d29^d31;
crc30 = d04^d07^d08^d10^d14^d22^d23^d24^d26^d27^d28^d29^d30;
crc31 = d05^d08^d09^d11^d15^d23^d24^d25^d27^d28^d29^d30^d31;
Table C.1 shows several CRC examples when SAS dword mode is enabled. Table C.2 shows several CRC
examples when SAS packet mode is enabled. Data is shown in dwords, from first to last.
<SOF> <SOF>
00010203h 00000000h
04050607h 00000000h
08090A0Bh 00000000h
0C0D0E0Fh 00000000h
10111213h 8A7E2691h 00000000h 3B650D6Eh
14151617h 00000000h
18191A1Bh 00000000h
1C1D1E1Fh 00000001h
<CRC> <CRC>
<EOF> <EOF>
<SOF>
06D0B992h
00B5DF59h
<SOF>
00000000h
00000001h
00000000h
00000000h
1234FFFFh
00000000h
00000000h
00000000h
00000000h
00000000h 898C0D7Ah 3F4F1C26h
00000000h
00000000h
00000000h
00000000h
08000012h
00000000h
01000000h
<CRC>
00000000h
<EOF>
00000000h
<CRC>
<EOF>
<SOF> <SOF>
00010203h 00000000h
04050607h 00000000h
08090A0Bh 00000000h
0C0D0E0Fh 00000000h
10111213h 00000000h
14151617h 00000000h
8A7E2691h 3B650D6Eh
18191A1Bh 00000000h
1C1D1E1Fh 00000001h
<CRC> <CRC>
<Pad dword> <Pad dword>
<Pad dword> <Pad dword>
<Pad dword> <Pad dword>
<B_EOF (3)> <B_EOF (3)>
<SOF>
06D0B992h
<SOF> 00B5DF59h
00000001h 00000000h
00000000h 00000000h
00000000h 1234FFFFh
00000000h 00000000h
00000000h 00000000h
00000000h 00000000h
898C0D7Ah 3F4F1C26h
00000000h 00000000h
00000000h 08000012h
<CRC> 01000000h
<Pad dword> 00000000h
<Pad dword> 00000000h
<Pad dword> <CRC>
<B_EOF (3)> <Pad dword>
<Pad dword>
<B_EOF (2)>
Annex D
(informative)
Forward error correction utilizes redundant information to detect and correct errors at the receiver. The
redundant information is transmitted by way of parity symbols that are generated by a Reed Solomon code
encoding function. This annex provides some example implementations that describe the encoding process
along with some example results. The specific Reed Solomon code utilized in this standard is defined in 5.5.7.
Figure D.1 shows a forward error correction encoder used in SAS packet mode. The SPL packet header and
payload are realigned into 26 message symbols. The message symbols are passed into the encoding function
to produce four parity symbols. Finally, this example implementation reorders all symbols by interleaving the
parity symbols within the original message symbols using the ordering described in 5.5.7.2.
realignment M(x)
30 five-bit
Four five-bit symbols
26 five-bit Reed reordering
parity
message Solomon symbols P(x)
symbols code
encoding
function
An example implementation of a Reed Solomon code encoding function with a linear feedback shift register is
shown in figure D.2. In this example, the message symbols m25, m24, m23, to m0 are shifted into the linear
feedback shift register from most significant symbol to least significant symbol. After the shifting is complete,
the registers contain the parity symbols p0, p1, p2 and p3.
10 29 19 24
Reset LFSR
registers to 0 at
start of packet
p0 p1 p2 p3
Key:
= Galois Field GF(32) multiplication
= Galois Field GF(32) addition
#include <stdio.h>
// gen_parity() determines the parity symbols for a SAS-4 packet and
// interleaves into full set of 30 symbols
// structure definitions
typedef unsigned char symbol;
struct splpacket_byte {
unsigned char header;
unsigned char payload[16];
};
struct splpacket_symb {
symbol symb[30];
};
struct message_symb {
symbol symb[26];
};
struct parity_symb {
symbol symb[4];
};
struct encoded_symb {
symbol symb[30];
};
// support functions
struct splpacket_byte packet_load(void);
struct message_symb packet_to_message(struct splpacket_byte);
unsigned char symbol_to_alpha(symbol symb);
struct parity_symb gen_parity(struct message_symb);
struct encoded_symb gen_fec(struct message_symb, struct parity_symb);
// display functions
void packet_display(struct splpacket_byte);
void message_display(struct message_symb);
void parity_display(struct parity_symb);
void encoded_display(struct encoded_symb);
// tables
// Galois Field table where index represents the power of alpha and
// table entry is the decimal representation of the polynomial in alpha
const symbol GFtable[31] = { 1, 2, 4, 8, 16, 5, 10, 20, 13, 26, 17, 7, 14,
28, 29, 31, 27, 19, 3, 6, 12, 24, 21, 15, 30, 25, 23, 11, 22, 9, 18};
// SPL-4 G(x) where index is power of x and entry is the power of alpha
const symbol GenPoly[5] = {10, 29, 19, 24, 0};
// main process
int main(void) {
struct splpacket_byte packetbytes;
struct message_symb message;
struct parity_symb parity;
struct encoded_symb encoded;
// translate packet bytes to symbols, gen parity symbols, interleave symbols
packetbytes = packet_load();
message = packet_to_message(packetbytes);
parity = gen_parity(message);
encoded = gen_fec(message, parity);
// display various results
packet_display(packetbytes);
message_display(message);
parity_display(parity);
encoded_display(encoded);
}
// support functions
struct splpacket_byte packet_load(void)
{
struct splpacket_byte packet;
packet.header = 0x01;// primitive packet header
packet.payload[0] = 0xE2;// PACKET_SYNC Extended Binary
packet.payload[1] = 0x89;
packet.payload[2] = 0xE6;
packet.payload[3] = 0xCA;
packet.payload[4] = 0x17;
packet.payload[5] = 0x8E;
packet.payload[6] = 0x64;
packet.payload[7] = 0x6B;
packet.payload[8] = 0x6F;
packet.payload[9] = 0x2C;
packet.payload[10] = 0xDD;
packet.payload[11] = 0x99;
packet.payload[12] = 0xEA;
packet.payload[13] = 0x0F;
packet.payload[14] = 0x04;
packet.payload[15] = 0x43;
return packet;
}
// generate full FEC code word by interleaving parity with message per SPL-4
struct encoded_symb gen_fec(struct message_symb msg, struct parity_symb par)
{
struct encoded_symb encoded;
int i;
int p = 0;
encoded.symb[0] = msg.symb[0];
for (i = 1; i < 30; i++) {
if ((i % 6) == 0) { // insert parity symbol
encoded.symb[i] = par.symb[p];
p++;
} else { // insert next message symbol
encoded.symb[i] = msg.symb[i-p];
}
}
return encoded;
}
// display functions
void packet_display(struct splpacket_byte packet)
{
int i;
printf("header: %d \n",packet.header);
printf("payload bytes:\n");
for (i = 0; i <16; i++) {
printf("%2d ",i);
}
printf("\n");
for (i = 0; i <16; i++) {
printf("%02X ",packet.payload[i]);
}
printf("\n");
}
printf("%02X ",parity.symb[i]);
}
printf("\n");
}
0 1 2 3
10 16 13 0B
interleaved codeword symbols (transmit LS to MS bit on wire):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29
09 1C 09 14 19 15 10 1C 0B 18 11 04 16 1B 1A 1E 06 16 13 14 1B 19 14 1A 0B 1F
00 02 0C 08
Forward error correction encoding results for several different packets are given in table D.1.
bytes
Input
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Packet
01b E2h 89h E6h CAh 17h 8Eh 64h 6Bh 6Fh 2Ch DDh 99h EAh 0Fh 04h 43h
symbols mi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Message
09h 1Ch 09h 14h 19h 15h 1Ch 0Bh 18h 11h 04h 1Bh 1Ah 1Eh 06h 16h 14h
M(x)
17 18 19 20 21 22 23 24 25
1Bh 19h 14h 1Ah 1Fh 00h 02h 0Ch 08h
symbols pi
Parity
0 1 2 3
P(x)
10h 16h 13h 0Bh
PACKET_SYNC_LOST extended binary primitive:
Header
bytes
Input
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Packet
01b A6h FAh 03h C1h 50h 3Ch D1h 5Ch F9h C2h 91h 6Ch EDh 8Dh A5h 3Bh
symbols mi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Message
19h 14h 1Ah 1Fh 00h 02h 0Ch 08h 11h 07h 11h 06h 17h 12h 0Fh 01h 07h
M(x)
17 18 19 20 21 22 23 24 25
12h 0Ch 0Bh 1Bh 1Bh 18h 12h 0Eh 07h
symbols pi
Parity
0 1 2 3
P(x)
11h 1Fh 03h 01h
LINK_RATE_MANAGEMENT extended binary primitive:
Header
bytes
Input
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Packet
01b AEh 7Ch E1h 48h B6h F6h C6h D2h 9Dh A9h FEh 40h 30h 14h 4Fh 34h
bytes
Input
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Packet
10b 00h 11h 22h 33h 44h 55h 66h 77h 88h 99h AAh BBh CCh DDh EEh FFh
symbols mi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Message
02h 00h 11h 10h 08h 06h 03h 02h 15h 0Ah 06h 1Bh 1Dh 10h 18h 0Ch 0Ah
M(x)
17 18 19 20 21 22 23 24 25
15h 1Bh 05h 13h 1Bh 0Dh 17h 1Fh 1Fh
symbols pi
Parity
0 1 2 3
P(x)
0Fh 08h 00h 0Ah
Scrambled idle segment (e.g., immediately following a PACKET_SYNC):
Header
bytes
Input 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Packet 00b 6Ch BDh 94h 98h 53h C6h D8h CEh 50h 6Ah 75h C1h 04h 4Fh C3h 07h
symbols mi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Message
10h 0Dh 1Dh 05h 05h 11h 19h 09h 19h 18h 18h 16h 13h 01h 05h 15h 15h
M(x)
17 18 19 20 21 22 23 24 25
0Eh 01h 06h 01h 1Eh 14h 01h 1Fh 00h
symbols pi
Parity
0 1 2 3
P(x)
05h 1Ch 16h 14h
Annex E
(informative)
See 4.2.2 for a description of hashed SAS addresses and the algorithm used to create them.
The following are Monte-Carlo simulations evaluating the probability of collision in a system containing 128
addressable SAS ports. Four models were used for the models for the simulations:
a) random model;
b) sequential mode;
c) lots model; and
d) three lots model.
The random model uses a system with 128 randomly chosen 64-bit integers as SAS addresses.
The sequential model uses a system with 128 sequentially-assigned SAS addresses starting from a random
64-bit base.
The lots model uses:
a) two sequentially assigned SAS addresses with unique AOIs and random vendor specific identifiers;
b) 125 randomly drawn SAS addresses from a 10 000-unit production lot. The vendor specific identifiers
within the lot were assigned by 10 SAS address-writers, randomly drawn from a pool of 4 096
possible SAS address-writers. Each SAS address-writer assigns vendor specific identifiers
sequentially within its own subset of the vendor specific identifiers, starting from a randomly chosen
base at the beginning of the production run; and
c) one randomly chosen SAS address with another AOI, representing a replacement unit.
The three lots model uses:
a) two sequentially assigned SAS addresses with unique AOIs and random vendor specific identifiers;
b) 125 randomly drawn SAS addresses from three 10 000-unit lots. The vendor specific identifiers within
each lot were assigned by 10 SAS address-writers, randomly drawn from a pool of 4 096 possible
SAS address-writers for that vendor. Each SAS address-writer assigns vendor specific identifiers
sequentially within its own subset of the vendor specific identifiers, starting from a randomly chosen
base at the beginning of the production run. Each of the three lots has a different AOI; and
c) one randomly chosen SAS address with another AOI, representing a replacement unit.
Table E.1 lists the results of Monte-Carlo simulation.
SAS
Average collisions
address Trials Collisions
per system
model
three lots 2 000 000 000 662 503 0.000 331 251 5
One way to implement the hashing encoder in hardware is to use serial shift registers as shown in figure E.1.
For error correction purposes, the number of data bits is limited to 39. For hashing purposes, the circuit shown
serves as a divider. Because the period of this generator polynomial is 63, any binary sequence of length
exceeding 63 is treated as a 63-bit sequence with (bit 63) L + k added to (bit k modulo 2) for k = 0, to 62 and
any integer L. Therefore, using this generator polynomial to hash a 64-bit address is equivalent to hashing a
63-bit sequence with bit 63 added modulo 2 to bit 0. With this wrapping, a binary sequence of any length is
treated as an equivalent binary sequence of 63 bits, which, in turn, is treated as a degree-62 polynomial. After
feeding this equivalent degree-62 polynomial into the circuit shown, the shift register contains the remainder
from dividing the degree-62 input polynomial by the generator polynomial. This remainder is the hashed
result.
2 2 2 2 1 1 1 1 1 1 1
3 2 1 0 9 8 7 6 5 4 3
1 1 1
9 8 7 6 5 4 3 2 1 0
2 1 0
The following example C program generates a 24-bit hashed value from a 64-bit value.
typedef unsigned int uint32_t;
uint32_t hash(uint32_t upperbits, uint32_t lowerbits)
{
const unsigned distance_9_poly = 0x01DB2777;
uint32_t msb = 0x01000000;
uint32_t moving_one, leading_bit;
int i;
unsigned regg;
regg = 0;
moving_one = 0x80000000;
for (i = 31; i >= 0; i--) {
leading_bit = 0;
if (moving_one & upperbits) leading_bit = msb;
regg <<= 1;
regg ^= leading_bit;
if (regg & msb) regg ^= distance_9_poly;
moving_one >>= 1;
}
moving_one = 0x80000000;
for (i = 31; i >= 0; i--) { // note lower limit of i = 0;
leading_bit = 0;
if (moving_one & lowerbits) leading_bit = msb;
regg <<= 1;
regg ^= leading_bit;
if (regg & msb) regg ^= distance_9_poly;
moving_one >>= 1;
}
return regg & 0x00FFFFFF;
}
These equations generate the 24-bit hashed SAS address for the SSP frame header from a 64-bit SAS
address. The ^ symbol represents an XOR.
hash00=d00^d01^d03^d05^d07^d09^d10^d11^d12^d15^d16^d17^d18^d19^d20^d21^d22^d
23^d24^d25^d28^d30^d31^d33^d34^d36^d38^d39^d63;
hash01=d00^d02^d03^d04^d05^d06^d07^d08^d09^d13^d15^d26^d28^d29^d30^d32^d33^d
35^d36^d37^d38^d40^d63;
hash02=d00^d04^d06^d08^d11^d12^d14^d15^d17^d18^d19^d20^d21^d22^d23^d24^d25^d
27^d28^d29^d37^d41^d63;
hash03=d01^d05^d07^d09^d12^d13^d15^d16^d18^d19^d20^d21^d22^d23^d24^d25^d26^d
28^d29^d30^d38^d42;
hash04=d00^d01^d02^d03^d05^d06^d07^d08^d09^d11^d12^d13^d14^d15^d18^d26^d27^d
28^d29^d33^d34^d36^d38^d43^d63;
hash05=d00^d02^d04^d05^d06^d08^d11^d13^d14^d17^d18^d20^d21^d22^d23^d24^d25^d
27^d29^d31^d33^d35^d36^d37^d38^d44^d63;
hash06=d00^d06^d10^d11^d14^d16^d17^d20^d26^d31^d32^d33^d37^d45^d63;
hash07=d01^d07^d11^d12^d15^d17^d18^d21^d27^d32^d33^d34^d38^d46;
hash08=d00^d01^d02^d03^d05^d07^d08^d09^d10^d11^d13^d15^d17^d20^d21^d23^d24^d
25^d30^d31^d35^d36^d38^d47^d63;
hash09=d00^d02^d04^d05^d06^d07^d08^d14^d15^d17^d19^d20^d23^d26^d28^d30^d32^d
33^d34^d37^d38^d48^d63;
hash10=d00^d06^d08^d10^d11^d12^d17^d19^d22^d23^d25^d27^d28^d29^d30^d35^d36^d
49^d63;
hash11=d01^d07^d09^d11^d12^d13^d18^d20^d23^d24^d26^d28^d29^d30^d31^d36^d37^d
50;
hash12=d02^d08^d10^d12^d13^d14^d19^d21^d24^d25^d27^d29^d30^d31^d32^d37^d38^d
51;
hash13=d00^d01^d05^d07^d10^d12^d13^d14^d16^d17^d18^d19^d21^d23^d24^d26^d32^d
34^d36^d52^d63;
hash14=d01^d02^d06^d08^d11^d13^d14^d15^d17^d18^d19^d20^d22^d24^d25^d27^d33^d
35^d37^d53;
hash15=d02^d03^d07^d09^d12^d14^d15^d16^d18^d19^d20^d21^d23^d25^d26^d28^d34^d
36^d38^d54;
hash16=d00^d01^d04^d05^d07^d08^d09^d11^d12^d13^d18^d23^d25^d26^d27^d28^d29^d
30^d31^d33^d34^d35^d36^d37^d38^d55^d63;
hash17=d00^d02^d03^d06^d07^d08^d11^d13^d14^d15^d16^d17^d18^d20^d21^d22^d23^d
25^d26^d27^d29^d32^d33^d35^d37^d56^d63;
hash18=d01^d03^d04^d07^d08^d09^d12^d14^d15^d16^d17^d18^d19^d21^d22^d23^d24^d
26^d27^d28^d30^d33^d34^d36^d38^d57;
hash19=d00^d01^d02^d03^d04^d07^d08^d11^d12^d13^d21^d27^d29^d30^d33^d35^d36^d
37^d38^d58^d63;
hash20=d00^d02^d04^d07^d08^d10^d11^d13^d14^d15^d16^d17^d18^d19^d20^d21^d23^d
24^d25^d33^d37^d59^d63;
hash21=d01^d03^d05^d08^d09^d11^d12^d14^d15^d16^d17^d18^d19^d20^d21^d22^d24^d
25^d26^d34^d38^d60;
hash22=d00^d01^d02^d03^d04^d05^d06^d07^d11^d13^d24^d26^d27^d28^d30^d31^d33^d
34^d35^d36^d38^d61^d63;
hash23=d00^d02^d04^d06^d08^d09^d10^d11^d14^d15^d16^d17^d18^d19^d20^d21^d22^d
23^d24^d27^d29^d30^d32^d33^d35^d37^d38^d62^d63;
Table E.2 shows examples using simple SAS addresses as input values. Two of the input values hash to the
same value.
Table E.3 shows examples using realistic SAS addresses as input values.
Table E.4 shows examples using a walking ones pattern to generate the input values.
24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value
24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value
Table E.5 shows examples using a walking zeros pattern to generate the input values.
24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value
24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value
Annex F
(informative)
Scrambling
Figure F.1 shows an example of a SAS dword mode data scrambler. This example generates the value to
XOR with the dword input with two 16-bit parallel multipliers. The maximum width for the multiplier is 16 bits as
the generating polynomial is 16 bits.
32 bit XOR
32 bit data in 32 bit data out
32 bits
scr[15:0] scr[31:16]
Context
register 16 bit parallel
(16 bits) multiplier 16 bit parallel
multiplier
Scrambler
polynomial
For all implementations, the context register is initialized to produce a first dword output of C2D2768Dh for a
dword input of all zeros.
The following example C program generates the scrambled data dwords for transmission. The inputs are the
data dword to scramble and control indication to reinitialize the residual value (e.g., following an SOF).
#include <stdio.h>
if (reset)
scramble = 0xFFFF;
for (i = 0; i < 32; i++) /* serial shift register implementation */
{
dword ^= (scramble & 0x8000)? (1 << i):0;
scramble = (scramble << 1) ^ ((scramble & 0x8000)? poly:0);
}
return dword;
}
These equations generate the scrambled dwords to XOR with dwords before transmission and dword
reception to recover the original data. The ^ symbol represents an XOR operation. The initialized value for
d[15:0] is F0F6h (i.e., 0xF0F6) in this example.
scr0=d15^d13^d4^d0;
scr1=d15^d14^d13^d5^d4^d1^d0;
scr2=d14^d13^d6^d5^d4^d2^d1^d0;
scr3=d15^d14^d7^d6^d5^d3^d2^d1;
scr4=d13^d8^d7^d6^d3^d2^d0;
scr5=d14^d9^d8^d7^d4^d3^d1;
scr6=d15^d10^d9^d8^d5^d4^d2;
scr7=d15^d13^d11^d10^d9^d6^d5^d4^d3^d0;
scr8=d15^d14^d13^d12^d11^d10^d7^d6^d5^d1^d0;
scr9=d14^d12^d11^d8^d7^d6^d4^d2^d1^d0;
scr10=d15^d13^d12^d9^d8^d7^d5^d3^d2^d1;
scr11=d15^d14^d10^d9^d8^d6^d3^d2^d0;
scr12=d13^d11^d10^d9^d7^d3^d1^d0;
scr13=d14^d12^d11^d10^d8^d4^d2^d1;
scr14=d15^d13^d12^d11^d9^d5^d3^d2;
scr15=d15^d14^d12^d10^d6^d3^d0;
scr16=d11^d7^d1^d0;
scr17=d12^d8^d2^d1;
scr18=d13^d9^d3^d2;
scr19=d14^d10^d4^d3;
scr20=d15^d11^d5^d4;
scr21=d15^d13^d12^d6^d5^d4^d0;
scr22=d15^d14^d7^d6^d5^d4^d1^d0;
scr23=d13^d8^d7^d6^d5^d4^d2^d1^d0;
scr24=d14^d9^d8^d7^d6^d5^d3^d2^d1;
scr25=d15^d10^d9^d8^d7^d6^d4^d3^d2;
scr26=d15^d13^d11^d10^d9^d8^d7^d5^d3^d0;
scr27=d15^d14^d13^d12^d11^d10^d9^d8^d6^d1^d0;
scr28=d14^d12^d11^d10^d9^d7^d4^d2^d1^d0;
scr29=d15^d13^d12^d11^d10^d8^d5^d3^d2^d1;
scr30=d15^d14^d12^d11^d9^d6^d3^d2^d0;
scr31=d12^d10^d7^d3^d1^d0;
Table F.1 shows several SAS dword mode scrambler examples. Data is shown in dwords, from first to last.
<SOF> <SOF>
06D0B992h C402CF1Fh
00B5DF59h 1F936C31h
00000000h A508436Ch
00000000h 3452D354h
1234FFFFh 98616AFDh
00000000h BB1ABE1Bh
00000000h FA56B73Dh
00000000h 53F60B1Bh
00000000h F0809C41h
08000012h 7C7FC358h
01000000h BF865291h
00000000h 7A6FA7B6h
00000000h 3163E6D6h
3F4F1C26h a CF79E22Ah a
<EOF> <EOF>
<SOF> <SOF>
00000000h C2D2768Dh
00000000h 1F26B368h
00000000h A508436Ch
00000000h 3452D354h
00000000h 8A559502h
00000000h BB1ABE1Bh
00000000h FA56B73Dh
00000000h 53F60B1Bh
00000000h F0809C41h
00000000h 747FC34Ah
00000000h BE865291h
00000000h 7A6FA7B6h
00000000h 3163E6D6h
B00F2BCCh a 4039D5C0h a
<EOF> <EOF>
a The last dword represents a CRC dword.
0 C2D2768Dh 32 F46D6948h
1 1F26B368h 33 7BCD8A93h
2 A508436Ch 34 1513AD7Eh
3 3452D354h 35 1E72FEEEh
4 8A559502h 36 A014AA3Bh
5 BB1ABE1Bh 37 23AAD4E7h
6 FA56B73Dh 38 B0DC9E67h
7 53F60B1Bh 39 E0A573FBh
8 F0809C41h 40 06CA944Fh
9 747FC34Ah 41 63E29212h
10 BE865291h 42 4578626Dh
11 7A6FA7B6h 43 53260C93h
12 3163E6D6h 44 3E592202h
13 F036FE0Ch 45 2B6ECA63h
14 1EF3EA29h 46 636A1F1Fh
15 EB342694h 47 35B5A9EDh
16 53853B17h 48 4AA2A0FDh
17 E94ADC4Dh 49 71AFE196h
18 5D200E88h 50 E1D57B62h
19 6901EDD0h 51 55A0568Ah
20 FA9E38DEh 52 82D18968h
21 68DB4B07h 53 234CB4FFh
22 450A437Bh 54 83481E7Fh
23 960DD708h 55 B21AE87Fh
24 3F35E698h 56 A9C5EACDh
25 FE7698A5h 57 6201ACC3h
26 C80EF715h 58 F60939CEh
27 666090AFh 59 395F767Dh
28 FAF0D5CBh 60 2FA55841h
29 2B82009Fh 61 836D4A7Ah
30 0E317491h 62 388D587Ah
31 76F46A1Eh 63 773DFF5Ch
Figure F.2 shows an example of a SAS packet mode data scrambler. In this example an 8-bit pattern
generator provides 8-bit scrambling patterns. Four successive 8-bit scrambled patterns are assembled into a
dword that is XORed with the dword input. The dword resulting from the XOR is transmitted as described in
6.9.2 and 5.5.7.2.
32-bit XOR
32-bit data in 32-bit data out
32 bits
#define gScram 0xA10125 // G(x) = x^23 + x^21 + x^16 + x^8 + x^5 + x^2 + 1
#define shiftreg_init 0x1DBFBC
int i,j;
patternout = 0;
if (reset)
shiftreg = shiftreg_init;
// advance shift reg 8 times for one byte of pattern generator output
for (i = 0; i < 8; i++) {
// output set by shift reg bit 22, put in bit 7 then shifts to bit 0
patternout = (patternout >> 1) | (shiftreg & 0x00400000) >> 15;
// shifting shift reg and applying xor per polynomial if bit 22 set
shiftreg = (shiftreg << 1) ^ ((shiftreg & 0x00400000) ? gScram : 0);
}
byte ^= patternout;
return byte;
}
F.2.3 SAS packet mode 8-bit pattern generator implementation block diagram
A linear feedback shift register is used within the 8-bit pattern generator shown in figure F.3. In this example,
the value of bit 22 is the first output, corresponding to the LSB of the pat[7:0] bus shown in figure F.2. The shift
register is clocked to produce subsequent bits comprising the first byte, second byte, third byte, etc. This
example may be reorganized to produce multiple bits per clock.
Bit 17
Bit 18
Bit 19
Bit 20
Bit 21
Bit 22
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Bit 8
Bit 9
shift
register
output
pat 7
pat 6
pat 5
demux
pat 4
pat 3 pat[7:0]
pat 2
pat 1
LSB first pat 0
After PACKET_SYNC initialization the first 128 steps of the 8-bit pattern generator produces the consecutive
values shown in table F.3.
The 23-bit linear feedback shift register returns to its initial state if:
a) 223 - 1 bits are processed; or
b) a PACKET_SYNC is received.
Table F.3 – 8-bit pattern generator values produced after initialization of scrambler by PACKET_SYNC
0 to 15 6Ch BDh 94h 98h 53h C6h D8h CEh 50h 6Ah 75h C1h 04h 4Fh C3h 07h
16 to 31 75h 26h C6h 06h A3h B0h B4h ABh 05h 11h CCh 57h 4Eh 69h 42h 73h
32 to 47 1Dh 0Fh B7h 03h E0h 45h BAh 5Eh 30h EBh D7h 43h 2Ch 5Dh F5h D0h
48 to 63 15h 41h 76h 8Eh C3h 9Dh D1h 57h CDh FFh 76h A1h 7Ah 4Ch 64h 2Eh
64 to 79 87h 05h A3h 24h 89h FFh A2h 4Bh 46h 7Ch 1Dh 62h 12h 19h A5h 2Fh
80 to 95 E6h B3h CAh 33h EDh F3h 2Bh 88h 67h 3Eh ABh 96h E8h 9Eh 6Ah 5Dh
96 to 111 5Ch 1Ch 64h 1Dh F5h 2Ch 51h C8h D8h A8h F4h 4Dh 96h ACh 5Dh 7Ah
112 to 127 2Bh F4h 2Fh 09h 08h 2Eh 0Eh C9h 02h 4Bh AFh D9h 3Dh 4Eh 78h E7h
Annex G
(informative)
The following features of SATA are excluded from SAS STP or handled differently in a SAS domain:
a) extended differential voltages;
b) enclosure services;
c) staggered spin-up (see 5.20);
d) SATA device activity indication;
e) presence detect; and
f) power management improvements.
SATA is based on a model that assumes a SATA device is controlled by a single SATA host and does not
address the concept of multiple SATA hosts having the ability to access any given SATA device.
With STP SATA bridges, SATA devices are cast into an environment where multiple STP initiator ports, by
sharing the SATA host port of the STP SATA bridge, have access to the same SATA device. The SATA
protocol used inside STP connections does not account for the possibility that more than one STP initiator
port is vying for access to the SATA device. Affiliations provide a way to ensure contention for a SATA device
does not result in incoherent access to the SATA device when commands from different STP initiator ports
collide at the SATA device.
To prevent a SATA device from confusing commands from one STP initiator port with commands from another
STP initiator port, an STP initiator port requires a means to maintain exclusive access to a SATA device or
STP target port for the duration of the processing of a command.
For example, consider the case where an STP initiator port establishes a connection to send a command
(e.g., a read) and then closes the connection while the SATA device (e.g., a disk drive) retrieves the data (e.g.,
performs a seek operation to the track containing the data). If, after the connection is closed, another STP
initiator port is allowed to establish a connection and send another command, then the SATA device no longer
has a means to determine which STP initiator port should receive the data when the SATA device requests the
connection to send the data for the first command. This is because, unlike SCSI target devices, SATA devices
have no concept of multiple SATA hosts.
The consequences are worse for write commands since a possible result is wrong data written to media, with
the original data being overwritten and permanently lost.
Affiliations provide a means for an STP initiator port to establish atomic access to a SATA device across the
processing of a command or series of commands to the SATA device, without requiring the STP initiator port
to maintain a connection open to the STP target port for the duration of command processing.
G.3.2 Affiliation policy for static STP initiator port to STP target port mapping
Affiliations should not be used to enforce policies establishing fixed associations between STP initiator ports
and STP target ports.
G.3.3 Affiliation policy with SATA queued commands and multiple STP initiator ports
When sharing an affiliation context, STP initiator ports using queued commands when other STP initiator ports
may be accessing the same STP target port should, at vendor specific intervals, allow commands to complete
and release the affiliation to allow other STP initiator ports access to the STP target port.
Affiliation may or may not be necessary for STP target ports depending on whether the STP target port tracks
the STP initiator port’s SAS address on each command received. If the STP target port has the means to
manage and track commands from each STP initiator port independently, then affiliations are not necessary
because the STP target port is capable of associating each information transfer with the appropriate STP
initiator port and is capable of establishing a connection to the appropriate STP initiator port when sending
information back for a command.
An STP target port capable of tracking commands may support a limited number of STP initiator ports (i.e.,
more than one, but less than one per command) and use multiple affiliations in order to manage that
restriction.
An STP target port that behaves the same as a SATA device, in that it maintains only a single affiliation
context to be shared among all STP initiator ports, provides a way for STP initiator ports to maintain exclusive
access to the STP target port while commands remain outstanding. In this model, an STP target port is
capable of establishing connections to an STP initiator port, but is only capable of remembering the SAS
address of the last STP initiator port to establish a connection and therefore is only capable of requesting a
connection back to that same STP initiator port.
See 9.4.4.12 for an explanation of how an STP target port reports support for affiliations.
Not all the protocol elements for STP initiator ports to manage a SATA port selector (see SATA) in a SAS
domain are defined in this standard. Additional coordination between STP initiator ports may be needed to
avoid conflicting usage of the SATA port selector between STP initiator ports (e.g., between two SAS
domains). Such additional coordination is outside the scope of this standard.
Some SATA devices do not return the initial Register Device-to-Host FIS after a link reset sequence if they did
not detect the COMINIT during the link reset sequence (e.g., if the SATA device originated the link reset
sequence). While waiting for the initial Register Device-to-Host FIS, an STP SATA bridge responds as follows:
a) in the SMP DISCOVER response (see 9.4.4.10):
A) the ATTACHED SAS DEVICE TYPE field is set to 000b;
B) the NEGOTIATED LOGICAL LINK RATE field and the NEGOTIATED PHYSICAL LINK RATE field are set to a
value indicating the phy is enabled at a valid link rate;
C) the ATTACHED SATA DEVICE bit is set to one; and
D) the ATTACHED SAS ADDRESS field is set to the SAS address of the STP target port of the STP SATA
bridge;
and
b) returns OPEN_REJECT (NO DESTINATION) for connection requests to the SAS address of the STP
target port.
If an STP initiator port detects this situation for a vendor specific amount of time, then a management
application client should send an SMP PHY CONTROL function requesting a phy operation of LINK RESET or
HARD RESET to originate a new link reset sequence. The SATA device is expected to detect the COMINIT
during this link reset sequence and provide the initial Register Device-to-Host FIS.
Annex H
(informative)
Minimum deletable primitive and scrambled idle segment insertion rate summary
Table H.1 shows all the possible combinations of deletable primitive (see 6.2.5) insertion rates for physical link
rate tolerance management (see 6.5) and rate matching (see 6.17) if the phy is in the SAS dword mode.
Table H.1 – Minimum deletable primitive insertion rate examples while in the SAS dword mode
1.5 Gbit/s 1.5 Gbit/s 1 per 128 (physical link rate tolerance management)
While in SAS packet mode see table H.2 for all the possible combinations of:
a) scrambled idle segment insertion rates for rate matching (see 6.17.3); and
a) deletable primitive, deletable binary primitive, and extended deletable primitive insertion rates for
physical link rate tolerance management (see 6.5).
Table H.2 – Minimum insertion rate examples while in the SAS packet mode
Annex I
(informative)
This annex provides examples of using multiple zone permission configuration descriptors in the SMP
CONFIGURE ZONE PERMISSION TABLE function (see 9.4.4.26) if the number of zone groups is 128.
Table I.1 shows an example initial value of the zone permission table.
Zone
0a 1a 2 to 3 4 to 7 a 8 9 10 11 12 to 127
group
0a 0 1 0 0 0 0 0 0 0
1a 1 1 1 1 1 1 1 1 1
2 to 3 0 1 0 0 0 0 0 0 0
4 to 7 a 0 1 0 0 0 0 0 0 0
8 0 1 0 0 0 0 0 0 0
9 0 1 0 0 0 0 0 0 0
10 0 1 0 0 0 0 0 0 0
11 0 1 0 0 0 0 0 0 0
12 to 127 0 1 0 0 0 0 0 0 0
a
Zone permission table entries for this zone group are not changeable.
Table I.2 shows an example SMP CONFIGURE ZONE PERMISSION TABLE request where the STARTING
ZONE GROUP field is set to 10 (i.e., 0Ah) and the zone permission configuration descriptor list contains two
zone permission configuration descriptors.
Byte\Bit 7 6 5 4 3 2 1 0
1 FUNCTION (8Bh)
2 Reserved
4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
8 FFh
23 0Eh
24 00h
47 00h
48 (MSB)
••• CRC
51 (LSB)
Table I.3 shows the zone permission table after processing the first zone permission configuration descriptor
(i.e., source zone group 10).
Table I.3 – Zone permission table after processing first zone permission configuration descriptor
Zone
0a 1a 2 to 3 4 to 7 a 8 9 10 b 11 12 to 127
group
0a 0 1 0 0 0 0 0 0 0
1a 1 1 1 1 1 1 1 1 1
2 to 3 0 1 0 0 0 0 1 0 0
4 to 7 a 0 1 0 0 0 0 0 0 0
8 0 1 0 0 0 0 1 0 0
9 0 1 0 0 0 0 1 0 0
10 b 0 1 1 0 1 1 1 1 1
11 0 1 0 0 0 0 1 0 0
12 to 127 0 1 0 0 0 0 1 0 0
a
Zone permission table entries for this zone group are not changeable.
b
Changeable entries in this zone group are changed by the descriptor.
Table I.4 shows the zone permission table after processing the second zone permission configuration
descriptor (i.e., source zone group 11).
Table I.4 – Zone permission table after processing second zone permission configuration descriptor
Zone
0a 1a 2 to 3 4 to 7 a 8 9 10 11 b 12 to 127
group
0a 0 1 0 0 0 0 0 0 0
1a 1 1 1 1 1 1 1 1 1
2 to 3 0 1 0 0 0 0 1 0 0
4 to 7 a 0 1 0 0 0 0 0 0 0
8 0 1 0 0 0 0 1 0 0
9 0 1 0 0 0 0 1 0 0
10 0 1 1 0 1 1 1 0 1
11 b 0 1 0 0 0 0 0 0 0
12 to 127 0 1 0 0 0 0 1 0 0
a
Zone permission table entries for this zone group are not changeable.
b
Changeable entries in this zone group are changed by the descriptor.
Annex J
(informative)
SAS addressing
When a set of SAS phys transmit the same SAS address in the identification sequence but receive different
SAS addresses, indicating they are attached to more than one SAS domain, they become part of separate
SAS ports in separate SAS domains, and each SAS port shares the same SAS address. See figure 47 in
4.8.2 for an example of what happens if they are not in separate SAS domains.
The SAS addresses used by SAS ports in different SAS domains may be the same (e.g., when a set of phys
transmit the same SAS address in the identification sequence but receive different SAS addresses, indicating
they are attached to two separate SAS domains) so the SAS address serves as a port identifier (see 4.2.9)
rather than a port name (see 4.2.8).
When a set of expander phys transmit the same SAS address in the identification sequence but receive
different SAS addresses, indicating they are attached to separate SAS ports or expander ports, they become
part of separate expander ports in the same SAS domain.
The SMP port in an expander device has a port identifier that is the same as the device name of the expander
device (see 4.5.2) and is used for addressing an expander device. Expander ports are not individually
addressed.
Annex K
(informative)
This annex provides examples of how expander devices process connection requests.
Figure K.1 shows the topology used by examples in this annex.
Tx Rx Tx Rx
Device A Expander Expander Device B
(SSP/SMP
phy [X] phy [Y] (SSP target phy)
initiator phy)
Rx Tx Rx Tx
Expander
device
Tx Rx Tx Rx
Device C Expander Expander Device D
(SSP/SMP/STP (SATA device
phy [W] phy [Z]
initiator phy) phy)
Rx Tx Rx Tx
Table K.1 defines the column headers used within the figures contained within this annex.
Phy [W] XL state Expander phy [W] XL state machine state (see 6.19)
Phy [W] XL req/rsp Expander phy [W] XL requests and responses (see 4.5.6)
Phy [W] XL cnf/ind Expander phy [W] XL confirmations and indications (see 4.5.6)
Phy [X] XL state Expander phy [X] XL state machine state (see 6.19)
Phy [X] XL req/rsp Expander phy [X] XL requests and responses (see 4.5.6)
Phy [X] XL cnf/ind Expander phy [X] XL confirmations and indications (see 4.5.6)
Phy [Y] XL cnf/ind Expander phy [Y] XL confirmations and indications (see 4.5.6)
Phy [Y] XL req/rsp Expander phy [Y] XL requests and responses (see 4.5.6)
Phy [Y] XL state Expander phy [Y] XL state machine state (see 6.19)
Phy [Z] XL cnf/ind Expander phy [Z] XL confirmations and indications (see 4.5.6)
Phy [Z] XL req/rsp Expander phy [Z] XL requests and responses (see 4.5.6)
Phy [Z] XL state Expander phy [Z] XL state machine state (see 6.19)
18 January 2021
dwords) (connection connection
dwords) dwords
18 January 2021
Figure K.3 shows failure to establish a connection due to rejection of the connection request by an end device.
Arb Reject
OPEN_REJECT XL4:Open_Reject
idle dwords XL0:Idle
18 January 2021
Figure K.4 – Connection request - OPEN_REJECT by expander device
K.5 Connection request - arbitration lost
Working Draft SAS Protocol Layer - 5 (SPL-5)
18 January 2021
Figure K.5 shows two end devices attempting to establish a connection at the same time. This example assumes that the OPEN (A to B) address frame has
higher priority than the OPEN (B to A) address frame and therefore device A wins arbitration and device B loses arbitration.
Arb Status
(Waiting generated)
Arb Status
(Waiting On Device)
AIP (WAITING
ON DEVICE ) On Device) SOAF
OPEN (B to C)
idle dwords
EOAF
Backoff Retry idle dwords
Backoff Retry Request Path XL1:
XL1: Request Path Arbitrating Request_Path
Arbitrating AIP(NORMAL)
AIP (NORMAL) Request_Path (Normal)
(Normal) and/or idle
and/or idle dwords
18 January 2021
dwords
ArbWon
Forward Open XL2:
Request_Open
18 January 2021
Figure K.7 shows a higher priority OPEN address frame (B to A) received by a phy that has previously forwarded an OPEN address frame (A to B) whose
source (A) matches the winning destination (A). In this case expander phy [Y] forwards the higher priority OPEN to expander phy [X] (see 6.19.8).
Expander phy [X] Expander phy[Y]
Rx Tx XL state XL req/rsp XL cnf/ind XL cnf/ind XL req/rsp XL state Tx Rx
idle dwords idle dwords XL0:Idle XL0:Idle idle dwords idle dwords
SOAF
OPEN (A to B)
EOAF
Arbitrating
idle dwords AIP (NORMAL) XL1: Request Path
(Normal)
and/or idle Request_Path
ArbWon
dwords
XL2: Forward Open
Request_Open Forward Open
XL5: SOAF
XL3: Forward Dword Forward_Open OPEN (A to B)
Open_Cnf_Wait (idle dwords) Forward Dword EOAF
(idle dwords) XL6: idle dwords
Arb Status (Wait Open_Rsp_Wait (forwarded or
On Device) generated)
Arb Status (Wait
SOAF
AIP (WAITING On Device)
OPEN (B to A)
ON DEVICE)
EOAF
idle dwords Backoff Reverse idle dwords
Backoff Reverse Path
CLOSE
Forward Close idle dwords
Forward Close
CLOSE XL8:Close_Wait
idle dwords
Working Draft SAS Protocol Layer - 5 (SPL-5)
CLOSE
idle dwords Forward Close
XL0:Idle Forward Close
XL8:Close_Wait CLOSE
XL0:Idle idle dwords
18 January 2021
Figure K.8 – Connection close - single step
K.9 Connection close - simultaneous
Working Draft SAS Protocol Layer - 5 (SPL-5)
18 January 2021
Figure K.9 shows two end devices simultaneously transmitting a CLOSE primitive sequence to each other.
CLOSE CLOSE
idle dwords Forward Close Forward Close idle dwords
Forward Close Forward Close
CLOSE XL8:Close_Wait XL8:Close_Wait CLOSE
idle dwords XL0:Idle XL0:Idle idle dwords
BREAK
idle dwords BREAK XL9:Break
idle dwords XL0:Idle
18 January 2021
Figure K.10 – BREAK handling during path arbitration when the BREAK_REPLY method is disabled
K.11 BREAK handling during connection when the BREAK_REPLY method is disabled
Working Draft SAS Protocol Layer - 5 (SPL-5)
18 January 2021
Figure K.11 shows an expander device responding to the reception of a BREAK primitive sequence during a connection when the BREAK_REPLY method
of responding to BREAK primitive sequences is disabled (see 6.16.6).
BREAK
Forward Break idle dwords
Forward Break XL9:Break BREAK
BREAK XL10: XL0:Idle idle dwords
idle dwords Break_Wait
BREAK
idle dwords XL0:Idle
Figure K.11 – BREAK handling during a connection when the BREAK_REPLY method is disabled
K.12 BREAK handling during path arbitration when the BREAK_REPLY method is enabled
973
BREAK
idle dwords BREAK_REPLY XL9:Break
idle dwords XL0:Idle
18 January 2021
Figure K.12 – BREAK handling during path arbitration when the BREAK_REPLY method is enabled
K.13 BREAK handling during connection when BREAK_REPLY method is enabled
Working Draft SAS Protocol Layer - 5 (SPL-5)
18 January 2021
Figure K.13 shows an expander device responding to the reception of a BREAK primitive sequence during a connection when the BREAK_REPLY method
of responding to BREAK primitive sequences is enabled (see 6.16.6).
BREAK
Forward Break idle dwords
Forward Break XL9:Break BREAK _REPLY
BREAK XL10: XL0:Idle idle dwords
idle dwords Break_Wait
BREAK _REPLY
idle dwords XL0:Idle
Expander phy [W] - STP target port in an STP SATA bridge Expander phy [Z] - SATA host port in an STP SATA bridge
Rx Tx XL state XL req/rsp XL cnf/ind XL cnf/ind XL req/rsp XL state Tx Rx
idle dwords idle dwords XL0:Idle SYNC/CONT SATA device
SOAF dwords
OPEN (C to D)
EOAF
idle dwords XL1: Request Path Arbitrating
AIP (NORMAL) Request_Path (Normal)
and/or idle
dwords Arb Won
XL2: Forward Open
Request_Open Forward Open
(Waiting On Device)
AIP (WAITING
ON DEVICE ) Device)
Open Accept
idle dwords
Open Accept
Forward Dword
OPEN_ACCEPT (SATA device
Forward Dword
STP connection SATA device XL7:Connected (SATA device dwords 1)
dwords dwords 1 Forward Dword dwords 1)
Forward Dword
(STP connection Forward Dword
Forward Dword (SATA device
dwords) (STP connection
(SATA device dwords) STP connection
SATA device dwords)
dwords) dwords
dwords
18 January 2021
1
STP SATA bridge duplicates the dword stream that is being received from the SATA device before forwarding dwords- this ensures that a
continued SATA primitive is correctly forwarded to the STP initiator port.
18 January 2021
Figure K.15 shows an STP target port in an STP SATA bridge originating a connection on behalf of a SATA device that is requesting to transmit a frame.
Expander phy [W] - STP target port in an STP SATA bridge Expander phy [Z] - SATA host port in an STP SATA bridge
Rx Tx XL state XL req/rsp XL cnf/ind XL cnf/ind XL req/rsp XL state Tx Rx
idle dwords idle dwords XL0:Idle SYNC/CONT SYNC/CONT
X_RDY/CONT
Arb Won
Forward Open
Forward Open
SOAF XL5:
OPEN (D to C) Forward_Open Forward Dword
EOAF Forward Dword (idle dwords)
idle dwords XL6: (idle dwords)
(forwarded or Open_Rsp_Wait Arb Status
generated) (Waiting On Arb Status
Device) (Waiting On
OPEN_ACCEPT Device)
a STP SATA bridge duplicates the dword stream that is being received from the SATA device before forwarding dwords. This ensures that a
continued SATA primitive is correctly forwarded to the STP initiator port.
Figure K.15 – STP connection - originated by STP target port in an STP SATA bridge
976
K.16 STP connection close - originated by STP initiator port
977
Expander phy [W] - STP target port in an STP SATA bridge Expander phy [Z] - SATA host port in an STP SATA bridge
Rx Tx XL state XL req/rsp XL cnf/ind XL cnf/ind XL req/rsp XL state Tx Rx
STP connection SATA device XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword STP connection SATA device
dwords dwords (STP connection (SATA device (STP connection (SATA device dwords dwords
dwords) dwords) dwords) dwords)
SYNC /CONT
Forward Dword
SYNC/CONT Forward Dword (SYNC/CONT)
SYNC/CONT (SYNC/CONT)
Working Draft SAS Protocol Layer - 5 (SPL-5)
CLOSE
idle dwords Forward Close
Forward Close
Forward Close SYNC/CONT
Forward Close
CLOSE XL8:Close_Wait
idle dwords XL0:Idle
18 January 2021
Figure K.16 – STP connection close - originated by STP initiator port
K.17 STP connection close - originated by STP target port in an STP SATA bridge
Working Draft SAS Protocol Layer - 5 (SPL-5)
18 January 2021
Figure K.17 shows an STP target port in an STP SATA bridge closing an STP connection.
Expander phy [W] - STP target port in an STP SATA bridge Expander phy [Z] - SATA host port in an STP SATA bridge
Rx Tx XL state XL req/rsp XL cnf/ind XL cnf/ind XL req/rsp XL state Tx Rx
STP connection SATA device XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword STP connection SATA device
dwords dwords (STP connection (SATA device (STP connection (SATA device dwords dwords
dwords) dwords) dwords) dwords)
CLOSE
idle dwords
OPEN (A to B)
SOAF
EOAF
OPEN (B to A)
idle dwords
EOAF
XL1: Request Path
AIP (NORMAL) Request_Path Arbitrating Request Path XL1: idle dwords
and/or idle (Normal) Request_Path
dwords
Arb Won
XL2: Forward Open
Request_Open Forward Open
XL5: SOAF
XL3: Forward Dword Forward_Open
Open_Confirm_ (idle dwords) OPEN (A to B)
Working Draft SAS Protocol Layer - 5 (SPL-5)
Forward Dword
Wait (idle dwords) EOAF
Arb Status
AIP (WAITING XL6: Open_ Idle dwords
(Waiting on Arb Status
ON DEVICE) Response_Wait (forwarded or
Device) (Waiting on
Device)
generated)
idle dwords
Open Accept Open Accept OPEN_ACCEPT
OPEN_ACCEPT Forward Dword Forward Dword XL7:Connected Idle dwords connection
(connection (connection (forwarded) dwords
connection connection XL7:Connected dwords) dwords)
dwords dwords Forward Dword
(connection Forward Dword
dwords) (connection
18 January 2021
connection
dwords) dwords
Figure K.19 shows a topology used to illustrate pathway recovery. Exp[1] and Exp[2] are expander devices. A,
B, and C are end devices. A attempts to open a connection to B while B attempts to open a connection to A.
A C
OPEN(A to B,PBC=3) 3
1 1
XL3:Open_Cnf_Wait Exp[1]
XL1:Request_Path
XL6:Open_Rsp_Wait
2 3 4 5 2,4,6
The sequence of events used to identify pathway blockage and to perform pathway recovery are as follows:
1) Exp[1].Phy[1,2] and Exp[2].Phy[5,6] each send Phy Status (Partial Pathway) responses to the ECM to
indicate that they contain partial pathways;
2) Exp[1].Phy[5] and Exp[2].Phy[9] each receive Arbitrating (Waiting On Partial) confirmations from the
ECM, which cause them to transmit an AIP (WAITING ON PARTIAL) primitive sequence;
3) AIP (WAITING ON PARTIAL) is received by Exp[1].Phy[2] and Exp[2].Phy[6] then forwarded to
Exp[1].Phy[1] and Exp[2].Phy[5] as an Arb Status (Waiting On Partial) confirmation. Exp[1].Phy[1] and
Exp[2].Phy[5] each send Phy Status (Blocked On Partial) responses to ECM as confirmation that they
are blocked waiting on a partial pathway in another expander device;
4) Exp[1].Phy[5] and Exp[2].Phy[9] each receive Arbitrating (Blocked On Partial) confirmations from the
ECM while all destination phys send Phy Status (Blocked On Partial) responses, which cause them to
run their Partial Pathway Timeout timers;
5) the Partial Pathway Timeout timer expires in Exp[2].Phy[9]. This causes a request to the ECM to
resolve pathway blockage. The pathway recovery priority for this phy is not lower than all phys within
the destination port that are also blocked (i.e., the Request Path from Exp[2].Phy[9] has higher priority
than the Request Path from Exp[2].Phy[5], which is receiving Arbitrating (Blocked On Partial)). The
ECM does not provide an Arb Reject (Pathway Blocked) confirmation to Exp[2].Phy[9], so this
expander phy waits for pathway resolution to occur elsewhere in the topology;
6) the Partial Pathway Timeout timer expires in Exp[1].Phy[5]. This causes a request to the ECM to
resolve pathway blockage. The pathway recovery priority for this expander phy is lower than all
expander phys within the destination port that are also blocked (i.e., the Request Path from
Exp[1].Phy[5] is lower priority than the Request Path from Exp[1].Phy[1], which is receiving Arbitrating
(Blocked On Partial)). The ECM provides an Arb Reject (Pathway Blocked) confirmation to
Exp[1].Phy[5], which instructs this expander phy to reject the connection request using
OPEN_REJECT (PATHWAY BLOCKED);
NOTE 87 - The Partial Pathway Timeout timer in Exp[1].Phy[5] may expire before, after, or at the same time
the Partial Pathway Timeout timer expires in Exp[2].Phy[9].
7) OPEN_REJECT (PATHWAY BLOCKED) tears down partial pathway all the way to the originating end
device (Device B);
8) Exp[2].Phy[9] receives Arb Won and the partial pathway is extended through Exp[2].Phy[5]; and
9) OPEN (A to B) is delivered to device B.
Annex L
(informative)
Primitive encoding, binary primitive coding, and extended binary primitive coding
Table L.1 describes a set of the K28.5-based primitive encodings whose 40-bit values (after 8b10b encoding
with either starting running disparity) have a Hamming distance (i.e., the number of bits different in two
patterns) of at least 7. All the primitive encodings in 6.2 except for TRAIN and TRAIN_DONE were selected
from this list. Unassigned encodings may be used by future versions of this standard.
Character
Assignment
1st 2nd 3rd 4th
K28.5 D01.3 D01.3 D01.3 ALIGN (2)
K28.5 D01.4 D01.4 D01.4 ACK
K28.5 D01.4 D02.0 D31.4 RRDY (RESERVED 0)
K28.5 D01.4 D04.7 D24.0 NAK (RESERVED 1)
K28.5 D01.4 D07.3 D30.0 CREDIT_BLOCKED
K28.5 D01.4 D16.7 D07.3 NAK (RESERVED 2)
K28.5 D01.4 D24.0 D16.7 RRDY (NORMAL)
K28.5 D01.4 D27.4 D04.7 NAK (CRC ERROR)
K28.5 D01.4 D30.0 D02.0 RRDY (CLOSE)
K28.5 D01.4 D31.4 D29.7 NAK (RESERVED 0)
K28.5 D02.0 D01.4 D29.7 ERROR
K28.5 D02.0 D02.0 D02.0 HARD_RESET
K28.5 D02.0 D04.7 D01.4 CLOSE (RESERVED 1)
K28.5 D02.0 D07.3 D04.7 CLOSE (CLEAR AFFILIATION)
K28.5 D02.0 D16.7 D31.4 Obsolete
K28.5 D02.0 D24.0 D07.3 BREAK
K28.5 D02.0 D29.7 D16.7 BREAK_REPLY
K28.5 D02.0 D30.0 D27.4 CLOSE (NORMAL)
K28.5 D02.0 D31.4 D30.0 CLOSE (RESERVED 0)
K28.5 D04.7 D01.4 D24.0 BROADCAST (EXPANDER)
K28.5 D04.7 D02.0 D01.4 BROADCAST (CHANGE)
K28.5 D04.7 D04.7 D04.7 BROADCAST (ASYNCHRONOUS EVENT)
K28.5 D04.7 D07.3 D29.7 BROADCAST (SES)
K28.5 D04.7 D16.7 D02.0 BROADCAST (RESERVED 3)
K28.5 D04.7 D24.0 D31.4 BROADCAST (RESERVED CHANGE 0)
K28.5 D04.7 D27.4 D07.3 BROADCAST (RESERVED CHANGE 1)
K28.5 D04.7 D29.7 D30.0 BROADCAST (RESERVED 4)
Character
Assignment
1st 2nd 3rd 4th
K28.5 D04.7 D31.4 D27.4 Obsolete
K28.5 D07.0 D03.4 D13.4 OOB_IDLE
K28.5 D07.0 D07.0 D07.0 ALIGN (1)
K28.5 D07.3 D01.4 D31.4
K28.5 D07.3 D02.0 D04.7 PS_REQ (PARTIAL)
K28.5 D07.3 D04.7 D30.0
K28.5 D07.3 D07.3 D07.3 PWR_ACK
K28.5 D07.3 D24.0 D29.7 PWR_DONE
K28.5 D07.3 D27.4 D16.7 PWR_GRANT
K28.5 D07.3 D29.7 D27.4 PWR_REQ
K28.5 D07.3 D30.0 D24.0
K28.5 D07.3 D31.4 D02.0
K28.5 D10.2 D10.2 D27.3 ALIGN (0)
K28.5 D16.7 D01.4 D02.0
K28.5 D16.7 D02.0 D07.3
K28.5 D16.7 D04.7 D31.4
K28.5 D16.7 D16.7 D16.7 OPEN_ACCEPT
K28.5 D16.7 D24.0 D27.4
K28.5 D16.7 D27.4 D30.0 PS_ACK
K28.5 D16.7 D29.7 D24.0
K28.5 D16.7 D30.0 D04.7
K28.5 D16.7 D31.4 D01.4
K28.5 D24.0 D01.4 D16.7 EXTEND_CONNECTION (CLOSE)
K28.5 D24.0 D02.0 D29.7
K28.5 D24.0 D04.7 D07.3 SOF
K28.5 D24.0 D07.3 D31.4 EOAF
K28.5 D24.0 D16.7 D27.4 EOF
K28.5 D24.0 D24.0 D24.0
K28.5 D24.0 D27.4 D02.0 PS_NAK
K28.5 D24.0 D29.7 D04.7 EXTEND_CONNECTION (NORMAL)
K28.5 D24.0 D30.0 D01.4 SOAF
K28.5 D27.3 D27.3 D27.3 ALIGN (3)
K28.5 D27.4 D01.4 D07.3 AIP (RESERVED WAITING ON PARTIAL)
K28.5 D27.4 D04.7 D02.0
K28.5 D27.4 D07.3 D24.0 AIP (WAITING ON CONNECTION)
K28.5 D27.4 D16.7 D30.0 AIP (RESERVED 1)
K28.5 D27.4 D24.0 D04.7 AIP (WAITING ON PARTIAL)
K28.5 D27.4 D27.4 D27.4 AIP (NORMAL)
K28.5 D27.4 D29.7 D01.4 AIP (RESERVED 2)
Character
Assignment
1st 2nd 3rd 4th
K28.5 D27.4 D30.0 D29.7 AIP (WAITING ON DEVICE)
K28.5 D27.4 D31.4 D16.7 AIP (RESERVED 0)
K28.5 D29.7 D02.0 D30.0 OPEN_REJECT (RESERVED CONTINUE 0)
K28.5 D29.7 D04.7 D27.4 OPEN_REJECT (RESERVED STOP 1)
K28.5 D29.7 D07.3 D16.7 OPEN_REJECT (RESERVED INITIALIZE 1)
K28.5 D29.7 D16.7 D04.7 OPEN_REJECT (PATHWAY BLOCKED)
K28.5 D29.7 D24.0 D01.4 OPEN_REJECT (RESERVED CONTINUE 1)
K28.5 D29.7 D27.4 D24.0 OPEN_REJECT (RETRY)
K28.5 D29.7 D29.7 D29.7 OPEN_REJECT (NO DESTINATION)
K28.5 D29.7 D30.0 D31.4 OPEN_REJECT (RESERVED INITIALIZE 0)
K28.5 D29.7 D31.4 D07.3 OPEN_REJECT (RESERVED STOP 0)
K28.5 D30.0 D01.4 D04.7 DONE (ACK/NAK TIMEOUT)
K28.5 D30.0 D02.0 D16.7
K28.5 D30.0 D07.3 D27.4 DONE (CREDIT TIMEOUT)
K28.5 D30.0 D16.7 D01.4 DONE (RESERVED 0)
K28.5 D30.0 D24.0 D02.0 PS_REQ (SLUMBER)
K28.5 D30.0 D27.4 D29.7 DONE (RESERVED TIMEOUT 0)
K28.5 D30.0 D29.7 D31.4 DONE (CLOSE)
K28.5 D30.0 D30.0 D30.0 DONE (NORMAL)
K28.5 D30.0 D31.4 D24.0 DONE (RESERVED TIMEOUT 1)
K28.5 D31.3 D01.3 D07.0 NOTIFY (RESERVED 1)
K28.5 D31.3 D07.0 D01.3 NOTIFY (POWER LOSS EXPECTED)
K28.5 D31.3 D31.3 D31.3 NOTIFY (ENABLE SPINUP)
K28.5 D31.4 D01.4 D30.0 OPEN_REJECT (RESERVED ABANDON 3)
K28.5 D31.4 D02.0 D27.4 OPEN_REJECT (ZONE VIOLATION)
K28.5 D31.4 D04.7 D29.7 OPEN_REJECT (CONNECTION RATE NOT SUPPORTED)
K28.5 D31.4 D07.3 D02.0 OPEN_REJECT (RESERVED ABANDON 2)
K28.5 D31.4 D16.7 D24.0 OPEN_REJECT (WRONG DESTINATION)
K28.5 D31.4 D27.4 D01.4 OPEN_REJECT (STP RESOURCES BUSY)
K28.5 D31.4 D29.7 D07.3 OPEN_REJECT (PROTOCOL NOT SUPPORTED)
K28.5 D31.4 D30.0 D16.7 OPEN_REJECT (RESERVED ABANDON 1)
K28.5 D31.4 D31.4 D31.4 OPEN_REJECT (BAD DESTINATION)
Table L.2 describes the K28.5-based primitive encodings that do not have Hamming distances of 7 from the
other primitives.
Character
Assignment
1st 2nd 3rd 4th
K28.5 D30.3 D30.3 D30.3 TRAIN
K28.5 D30.3 D30.3 D10.2 TRAIN_DONE
Binary primitives that are D.C. balanced and have a minimum Hamming distance (i.e., the number of bits
different in two patterns) of at least seven are listed in L.2.
Table L.3 describes the set of the deletable binary primitives. Unassigned binary primitives shown in table L.3
may be used in future versions of this standard as deletable binary primitives.
Byte
Assignment
0 (first) a 1 2 3 (last)
01h 01h FDh FDh
01h 3Dh 0Dh FDh
01h 3Dh F1h 3Dh
01h 3Dh FDh C1h
01h CDh 31h FDh
01h CDh CDh 3Dh
01h D5h 5Dh CDh
01h D5h ADh F1h
01h D9h F5h 55h
01h D9h F9h A9h
01h E5h F5h 69h
01h E5h F9h 95h
01h E9h 5Dh F1h
01h E9h ADh CDh
01h F1h 3Dh 3Dh APTA_COEFFICIENT_1 (DECREMENT)
01h F1h C1h FDh APTA_COEFFICIENT_1 (INCREMENT)
01h FDh 65h 99h APTA_COEFFICIENT_1 (MAXIMUM)
01h FDh 69h 65h APTA_COEFFICIENT_1 (MINIMUM)
01h FDh 95h A5h APTA_COEFFICIENT_1 (UPDATED)
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL1 field, CONTROL2 field, or CONTROL3 field (see table 57)
is set to 01b.
Byte
a
Assignment
0 (first) 1 2 3 (last)
01h FDh 99h 59h APTA_COEFFICIENT_1 (RESERVED 1)
05h 4Dh 6Dh D5h
05h 4Dh 9Dh E9h
05h 55h 79h 79h
05h 55h B5h 9Dh
05h 69h 75h ADh
05h 69h B9h 75h
05h 7Dh C5h 4Dh
05h 7Dh C9h B1h
05h 8Dh F5h B1h
05h 8Dh F9h 4Dh
05h 99h 3Dh D9h
05h 99h CDh E5h
05h A5h 3Dh E5h
05h A5h CDh D9h
05h BDh 51h D5h
05h BDh 5Dh 29h
05h BDh A1h E9h
05h BDh ADh 15h
09h 55h F1h E5h
09h 59h CDh D9h
09h 65h 3Dh D9h
09h 7Dh 5Dh 15h
09h 7Dh ADh 29h
09h 8Dh 6Dh E9h
09h 8Dh 9Dh D5h
09h 95h FDh 19h
09h 99h 55h BDh
09h 99h A9h 7Dh
09h A5h 59h 7Dh
09h A5h A5h BDh
09h A9h F1h D9h
09h A9h FDh 25h
09h B1h 6Dh D5h APTA_COEFFICIENT_2 (DECREMENT)
09h B1h 9Dh E9h APTA_COEFFICIENT_2 (INCREMENT)
09h BDh 35h 4Dh APTA_COEFFICIENT_2 (MAXIMUM
09h BDh 39h B1h APTA_COEFFICIENT_2 (MINIMUM)
09h BDh C5h 71h APTA_COEFFICIENT_2 (UPDATED
09h BDh C9h 8Dh APTA_COEFFICIENT_2 (RESERVED 1)
0Dh 0Dh 3Dh 3Dh
0Dh 0Dh C1h FDh
0Dh 19h F5h 69h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL1 field, CONTROL2 field, or CONTROL3 field (see table 57)
is set to 01b.
Byte
a
Assignment
0 (first) 1 2 3 (last)
0Dh 19h F9h 95h
0Dh 25h F5h 55h
0Dh 25h F9h A9h
0Dh 31h 31h FDh
0Dh 31h CDh 3Dh
0Dh C1h 0Dh FDh APTA_COEFFICIENT_3 (DECREMENT)
0Dh C1h F1h 3Dh APTA_COEFFICIENT_3 (INCREMENT)
0Dh C1h FDh C1h APTA_COEFFICIENT_3 (MAXIMUM)
0Dh CDh 55h 59h APTA_COEFFICIENT_3 (MINIMUM)
0Dh CDh 59h A5h APTA_COEFFICIENT_3 (UPDATED)
0Dh CDh A5h 65h APTA_COEFFICIENT_3 (RESERVED 1)
0Dh CDh A9h 99h
0Dh D5h C5h A9h APTA_COEFFICIENT_1_2 (DECREMENT)
0Dh D5h C9h 55h APTA_COEFFICIENT_1_2 (INCREMENT)
0Dh D9h 61h CDh APTA_COEFFICIENT_1_2 (MAXIMUM)
0Dh D9h 6Dh 31h APTA_COEFFICIENT_1_2 (MINIMUM)
0Dh D9h 91h F1h APTA_COEFFICIENT_1_2 (UPDATED)
0Dh D9h 9Dh 0Dh APTA_COEFFICIENT_1_2 (RESERVED 1)
0Dh E5h 61h F1h APTA_COEFFICIENT_2_3 (DECREMENT)
0Dh E5h 6Dh 0Dh APTA_COEFFICIENT_2_3 (INCREMENT)
0Dh E5h 91h CDh APTA_COEFFICIENT_2_3 (MAXIMUM)
0Dh E5h 9Dh 31h APTA_COEFFICIENT_2_3 (MINIMUM)
0Dh E9h C5h 95h APTA_COEFFICIENT_2_3 (UPDATED)
0Dh E9h C9h 69h APTA_COEFFICIENT_2_3 (RESERVED 1)
0Dh F1h 55h 65h APTA_ADJUST (COMPLETE)
0Dh F1h 59h 99h APTA_ADJUST (READY)
0Dh F1h A5h 59h APTA_ADJUST (START)
0Dh F1h A9h A5h APTA_ADJUST (TERMINATE)
0Dh FDh 01h 3Dh APTA_ADJUST (RESERVED 1)
0Dh FDh 0Dh C1h APTA_ADJUST (RESERVED 2)
0Dh FDh F1h 01h APTA_ADJUST (RESERVED 3)
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL1 field, CONTROL2 field, or CONTROL3 field (see table 57)
is set to 01b.
L.2.3 Binary primitives for use outside SAS logical link connections
Table L.4 describes the set of the binary primitives used outside SAS logical link connections. Unassigned
binary primitives shown in table L.4 may be used in future versions of this standard as binary primitives that
are limited to use outside SAS logical link connections.
Table L.4 – Binary primitives used outside SAS logical link connections (part 1 of 2)
Byte
a
Assignment
0 (first) 1 2 3 (last)
51h 0Dh B9h D9h
51h 1Dh CDh A9h
51h 25h 71h F5h
51h 55h E9h 1Dh
51h 79h 8Dh 35h
51h 99h 59h 6Dh
51h 9Dh 35h 95h
51h C9h 75h C9h
51h CDh E1h A5h
51h E5h 05h F9h
51h F5h 7Dh 01h
55h 09h ADh 6Dh
55h 0Dh D5h 1Dh
55h 21h B5h B9h
55h 35h D9h 49h
55h 49h C5h F1h
55h 61h E1h CDh
55h 6Dh 61h 39h
55h 8Dh 09h F5h
55h 91h EDh 91h
55h B1h 29h 5Dh
55h C1h 99h 79h
55h C5h 35h 2Dh
55h C9h 79h 15h
55h D5h 85h C5h
55h DDh 0Dh 19h
55h EDh A9h 41h
59h 41h 59h BDh
59h 4Dh B5h 31h
59h 51h EDh 61h
59h 5Dh 49h C5h
59h 69h D1h 55h
59h 95h 31h E9h
59h A5h D5h A1h
59h ADh 89h 39h
59h B1h 55h 59h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.4 – Binary primitives used outside SAS logical link connections (part 2 of 2)
Byte
a
Assignment
0 (first) 1 2 3 (last)
59h B9h 2Dh 89h
59h F1h 61h 35h
59h F1h 89h D1h
5Dh 35h C1h 95h
5Dh 39h 15h 2Dh
5Dh 59h 31h 59h
5Dh 61h 1Dh E1h
5Dh 81h 65h E5h
5Dh 85h B9h 85h
5Dh 9Dh 51h 31h
5Dh ADh 41h C9h
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
L.2.4 Binary primitives for use inside SAS logical link connections
Table L.5 describes the set of the binary primitives used inside SAS logical link connections. Unassigned
binary primitives shown in table L.5 may be used in future versions of this standard as binary primitives that
are limited to use inside SAS logical link connections.
Table L.5 – Binary primitives used inside SAS logical link connections (part 1 of 3)
Byte
Use Assignment
0 (first) a 1 2 3 (last)
31h 19h 71h DDh SSP B_EOF (0)
31h 1Dh CDh 55h SSP B_EOF (0) (RESERVED 1)
31h 25h A9h 7Dh SSP
31h 45h D5h D9h SSP B_EOF (1)
31h 49h A5h BDh SSP B_EOF (1) (RESERVED 1)
31h 4Dh 79h 2Dh SSP B_EOF (1) (RESERVED 2)
31h 75h 4Dh 39h SSP
31h 8Dh 55h E5h SSP
31h 9Dh B5h 29h SSP
31h A5h 79h C9h SSP
31h C5h 3Dh 55h SSP
31h C9h E9h D1h SSP
31h D1h 8Dh 6Dh SSP
31h E1h B1h E5h SSP B_EOF (2)
31h EDh 2Dh A1h SSP B_EOF (2) (RESERVED 1)
Key:
SSP = SAS logical links, inside SSP connections
SMP = SAS logical links, inside SMP connections
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.5 – Binary primitives used inside SAS logical link connections (part 2 of 3)
Byte
a
Use Assignment
0 (first) 1 2 3 (last)
31h EDh D1h 31h SSP B_EOF (2) (RESERVED 2)
31h F9h 19h 95h SSP
31h F9h 21h 79h SSP
35h 09h 5Dh B9h SSP
35h 29h EDh 85h SSP
35h 35h 85h ADh SSP
35h 51h 49h F5h SSP B_EOF (3)
35h 5Dh 25h C9h SSP B_EOF (3) (RESERVED 1)
35h 5Dh B9h 11h SSP B_EOF (3) (RESERVED 2)
35h 6Dh 5Dh 41h SSP
35h 75h E1h 61h SSP
35h 91h D1h E9h SSP
35h A1h D9h 1Dh SSP
35h B9h 71h 25h SSP
35h CDh 81h 5Dh SSP
35h D1h 75h 19h SSP
35h E9h 95h 89h SSP
39h 15h E1h B9h SMP
39h 21h 75h 3Dh SMP
39h 4Dh 09h F9h SMP
39h 59h D5h 25h SMP
39h 65h 9Dh 0Dh SMP
39h 81h CDh B5h SMP
39h 91h B5h D1h SMP
39h ADh E1h 45h SMP
39h B5h 01h DDh SMP
39h B9h 49h E1h SMP
39h D5h D9h 81h SMP
Unassigned use group
3Dh 01h EDh 59h
Key:
SSP = SAS logical links, inside SSP connections
SMP = SAS logical links, inside SMP connections
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.5 – Binary primitives used inside SAS logical link connections (part 3 of 3)
Byte
a
Use Assignment
0 (first) 1 2 3 (last)
3Dh 15h 55h 4Dh
3Dh 2Dh 49h 35h
3Dh 35h 2Dh 91h
3Dh 39h A1h 1Dh
3Dh 41h 39h CDh
3Dh 45h 75h A1h
3Dh 89h 3Dh 61h
3Dh 8Dh 0Dh 8Dh
3Dh D5h 29h 29h
3Dh E1h 41h ADh
Key:
SSP = SAS logical links, inside SSP connections
SMP = SAS logical links, inside SMP connections
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
L.2.5 Binary primitives for use inside and outside SAS logical link connections
Table L.6 describes the set of the binary primitives used inside SAS logical link connections and outside SAS
logical link connections. Unassigned binary primitives shown in table L.6 may be used in future versions of this
standard as binary primitives that are limited to use inside SAS logical link connections and outside SAS
logical link connections.
Table L.6 – Binary primitives used inside and outside SAS logical link connections (part 1 of 2)
Byte
a
Assignment
0 (first) 1 2 3 (last)
A1h 15h DDh 69h
A1h 19h 6Dh F1h
A1h 29h 9Dh D9h
A1h 3Dh 3Dh 25h
A1h 49h D1h EDh
A1h 5Dh 29h 5Dh
A1h 85h EDh C5h
A1h 91h 35h EDh
A1h A1h EDh 39h
A1h B5h 75h 51h
A1h B9h E1h 95h
A1h DDh B1h C1h
A1h E9h 5Dh 0Dh
A1h F5h 89h 35h
A5h 2Dh 45h E9h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.6 – Binary primitives used inside and outside SAS logical link connections (part 2 of 2)
Byte
a
Assignment
0 (first) 1 2 3 (last)
A5h 45h 65h 3Dh
A5h 51h E1h D9h
A5h 61h ADh E1h
A5h 65h D5h 85h
A5h 8Dh 99h 39h
A5h ADh 29h D1h
A5h B1h 89h CDh
A5h C5h 15h F1h
A5h C9h E9h 25h
A5h DDh C5h 11h
A5h F1h B1h 29h
A9h 59h 35h 99h
A9h 6Dh 89h C5h
A9h 89h 49h DDh
A9h C5h 8Dh 59h
A9h D9h 45h 69h
ADh 1Dh 79h 09h
ADh 31h 59h A5h
ADh 69h D9h 11h
ADh 71h 1Dh 49h
ADh 85h E1h 69h
ADh 99h D1h 45h
ADh A5h 15h 1Dh
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.7 describes a set of the unassigned binary primitives. Binary primitives shown in table L.7 may be
assigned in future versions of this standard.
Byte
a
Assignment
0 (first) 1 2 3 (last)
Unassigned group 6
61h 15h 3Dh B9h
61h 19h 99h F5h
61h 25h DDh 35h
61h 29h 7Dh 69h
61h 31h A5h DDh
61h 45h E9h E9h
61h 5Dh 45h B5h
61h 69h C9h 9Dh
61h 6Dh 15h CDh
61h 6Dh E5h 51h
61h 75h 59h D1h
61h 89h BDh 1Dh
61h 9Dh C1h D9h
61h B5h 51h ADh
61h DDh 1Dh 61h
61h F5h 8Dh 89h
65h 11h DDh 8Dh
65h 2Dh A1h B5h
65h 41h F5h 65h
65h 5Dh D1h 29h
65h 69h 3Dh 91h
65h 81h 79h F1h
65h 85h 4Dh 6Dh
65h 85h B5h C9h
65h 99h 65h A9h
65h A9h 8Dh 71h
65h BDh 31h 19h
65h F1h 95h 15h
65h F9h 01h E5h
69h 39h C1h 6Dh
69h 45h ADh 95h
69h 61h 91h F9h
69h 95h E5h 25h
69h A1h 29h EDh
69h ADh 4Dh 91h
69h B9h B9h 41h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Byte
a
Assignment
0 (first) 1 2 3 (last)
69h C1h 55h D5h
69h C1h DDh 29h
69h D1h 69h 59h
69h E9h 71h A1h
6Dh 19h 5Dh 51h
6Dh 59h 8Dh A1h
6Dh 69h 69h 45h
6Dh 91h 19h 3Dh
6Dh B1h C5h C1h
6Dh E5h C1h 19h
Unassigned group 9
91h 4Dh 1Dh 9Dh
91h 51h B1h 7Dh
91h 6Dh 25h 6Dh
91h 75h B9h A1h
91h 99h EDh 49h
91h C1h 75h B5h
91h F5h 51h 1Dh
91h F9h 45h C5h
95h 05h 59h EDh
95h 05h A5h F5h
95h 19h 89h F9h
95h 29h D1h B5h
95h 35h E5h 19h
95h 4Dh F1h 89h
95h 59h 4Dh 2Dh
95h 61h 79h D1h
95h 79h B5h 05h
95h 89h 71h 79h
95h 9Dh 1Dh 45h
95h 9Dh 69h A1h
95h A1h 4Dh 75h
95h C1h ADh 1Dh
95h F1h 85h B1h
99h 09h B9h ADh
99h 45h 61h DDh
99h 4Dh EDh 05h
99h 5Dh 85h E1h
99h 61h C5h 79h
99h 71h 09h EDh
99h A5h 3Dh 29h
99h A9h 39h 55h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Byte
a
Assignment
0 (first) 1 2 3 (last)
99h B1h A5h 65h
99h B9h D1h 29h
99h C1h D9h 4Dh
99h D9h 81h 9Dh
9Dh 2Dh 8Dh 49h
9Dh 39h E1h C1h
9Dh 55h 11h B9h
9Dh 81h D5h 99h
9Dh C5h B1h 51h
9Dh C9h 25h A9h
Unassigned group C
C1h 19h F5h A5h
C1h 25h 6Dh ADh
C1h 31h D9h B9h
C1h 4Dh 59h 75h
C1h 51h BDh C9h
C1h 7Dh 15h 39h
C1h A5h 9Dh 4Dh
C1h A9h 25h F5h
C1h ADh C9h E1h
C1h DDh 81h 6Dh
C1h EDh 39h 89h
C5h 1Dh E1h 55h
C5h 35h 91h E5h
C5h 45h 89h DDh
C5h 45h FDh 11h
C5h 55h 4Dh E1h
C5h 79h E9h 09h
C5h 91h C5h 79h
C5h A1h 71h 9Dh
C5h A9h F5h 41h
C5h B5h 1Dh 91h
C5h CDh 45h 8Dh
C9h 21h E9h 5Dh
C9h 49h E9h B1h
C9h 65h D1h 2Dh
C9h 75h E5h 81h
C9h 81h BDh 71h
C9h 95h 41h F5h
C9h 99h CDh 15h
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Byte
a
Assignment
0 (first) 1 2 3 (last)
C9h B5h B1h 15h
C9h C5h 29h 3Dh
C9h DDh 25h 51h
C9h F9h 19h 25h
CDh 09h 15h DDh
CDh 0Dh 71h E1h
CDh 3Dh 09h A9h
CDh 51h A5h 2Dh
CDh E1h 81h 75h
CDh F1h 31h C1h
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 01b.
Table L.8 describes a set of 128-bit codes for extended binary primitives. Unassigned codes may be used by
future versions of this standard.
Byte
Dword a
Assignment
0 (first) 1 2 3 (last)
0 02h 02h FEh FEh
1 02h 3Eh 0Eh FEh
2 02h 3Eh F2h 3Eh
3 02h 3Eh FEh C2h
0 02h CEh 32h FEh
1 02h CEh CEh 3Eh
2 02h D6h 5Eh CEh
3 02h D6h AEh F2h
0 02h DAh F6h 56h
1 02h DAh FAh AAh
2 02h E6h F6h 6Ah
3 02h E6h FAh 96h
0 02h EAh 5Eh F2h
1 02h EAh AEh CEh
2 02h F2h 3Eh 3Eh
3 02h F2h C2h FEh
a
The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 10b.
Byte
Dword a
Assignment
0 (first) 1 2 3 (last)
0 02h FEh 66h 9Ah
1 02h FEh 6Ah 66h
2 02h FEh 96h A6h
3 02h FEh 9Ah 5Ah
0 06h 4Eh 6Eh D6h
1 06h 4Eh 9Eh EAh
2 06h 56h 7Ah 7Ah
3 06h 56h B6h 9Eh
0 06h 6Ah 76h AEh
1 06h 6Ah BAh 76h
2 06h 7Eh C6h 4Eh
3 06h 7Eh CAh B2h
0 06h 8Eh F6h B2h
1 06h 8Eh FAh 4Eh
2 06h 9Ah 3Eh DAh
3 06h 9Ah CEh E6h
0 06h A6h 3Eh E6h
1 06h A6h CEh DAh
2 06h BEh 52h D6h
3 06h BEh 5Eh 2Ah
0 06h BEh A2h EAh
1 06h BEh AEh 16h
2 0Ah 56h F2h E6h
3 0Ah 5Ah CEh DAh
0 0Ah 66h 3Eh DAh
1 0Ah 7Eh 5Eh 16h
2 0Ah 7Eh AEh 2Ah
3 0Ah 8Eh 6Eh EAh
0 0Ah 8Eh 9Eh D6h
1 0Ah 96h FEh 1Ah
2 0Ah 9Ah 56h BEh
3 0Ah 9Ah AAh 7Eh
0 0Ah A6h 5Ah 7Eh
1 0Ah A6h A6h BEh
2 0Ah AAh F2h DAh
3 0Ah AAh FEh 26h
0 0Ah B2h 6Eh D6h
1 0Ah B2h 9Eh EAh
2 0Ah BEh 36h 4Eh
3 0Ah BEh 3Ah B2h
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 10b.
Byte
Dword a
Assignment
0 (first) 1 2 3 (last)
0 0Ah BEh C6h 72h
1 0Eh 32h CEh 3Eh
2 0Eh C2h 0Eh FEh
3 0Eh C2h F2h 3Eh
0 0Eh C2h FEh C2h
1 0Eh CEh 56h 5Ah
2 0Eh CEh 5Ah A6h
3 0Eh CEh A6h 66h
0 0Eh CEh AAh 9Ah
1 0Eh D6h C6h AAh
2 0Eh D6h CAh 56h
3 0Eh DAh 62h CEh
0 0Eh DAh 6Eh 32h
1 0Eh DAh 92h F2h
2 0Eh DAh 9Eh 0Eh
3 0Eh E6h 62h F2h
0 0Eh E6h 6Eh 0Eh
1 0Eh E6h 92h CEh
2 0Eh E6h 9Eh 32h
3 0Eh EAh C6h 96h
0 0Eh EAh CAh 6Ah
1 0Eh F2h 56h 66h
2 0Eh F2h 5Ah 9Ah
3 0Eh F2h A6h 5Ah
0 0Eh F2h AAh A6h
1 0Eh FEh F2h 02h
END_TRAIN
2 0Eh FEh 0Eh C2h
3 0Eh FEh 02h 3Eh
0 A6h FAh 03h C1h
1 50h 3Ch D1h 5Ch
PACKET_SYNC_LOST
2 F9h C2h 91h 6Ch
3 EDh 8Dh A5h 3Bh
0 AEh 7Ch E1h 48h
1 B6h F6h C6h D2h
LINK_RATE_MANAGEMENT
2 9Dh A9h FEh 40h
3 30h 14h 4Fh 34h
0 E2h 89h E6h CAh
1 17h 8Eh 64h 6Bh
PACKET_SYNC
2 6Fh 2Ch DDh 99H
3 EAh 0Fh 04h 43h
a The PRIMITIVE SYNCHRONIZE SELECT field, CONTROL 1 field, CONTROL 2 field, or CONTROL 3 field (see table
57) is set to 10b.
Annex M
(informative)
Annex N
(informative)
This annex contains an example of the sequencing required between attached phys to successfully enter into
a partial phy power condition (see 4.11.1.3). Although this annex only contains an example:
a) of entering into a partial phy power condition a similar sequence is used to enter into a slumber phy
power condition (see 4.11.1.4); and
b) of phys in SAS dword mode, phys in SAS packet mode have the same sequencing except that:
A) the Stop PS message is substituted for the Stop DWS message; and
B) the SP_PS state machine is substituted for the SP_DWS state machine.
This example assumes both phys:
a) are in SAS dword mode;
b) have the partial phy power condition enabled (see 4.11.1.5 and 4.11.1.6);
c) have received IDENTIFY address frame that has the PARTIAL CAPABLE bit set to one (see 6.10.2);
d) are in the active phy power condition (see 4.11.1.2); and
e) have optical mode disabled.
Figure N.1 shows an example of a requesting SAS device’s sequencing of a successful request to enter a
partial phy power condition.
Figure N.2 shows an example of a SAS device’s sequencing of a successful request to enter a partial phy
power condition.
Time
SP state Management SL_CC state
machine application layer machine SL transmitter
SL_CC0
SP15
Change
Phy
Condition Power
req
(Enter Pa uest SL_CC8
rtial)
Transm
it
PS_RE
Q PS_RE
(P artia Q
l) 1
(PA RT
IAL )
SL reciever
CK 2
PS_A
K
SL_CC9 PS_AC
ed
Receiv
er
e Ph y Pow r Partial)
g e
Mana quest (Ent
s R e
it ion
SP31 Cond
SP_DWS state
Stop machine
DWS
Key:
Processing SP state name or SL state name
Figure N.1 – Example of a requesting SAS device’s sequencing of a successful request for entering a
partial phy power condition
Time
SP_DWS state SP state SL_CC state
machine machine machine SL reciever
SL_CC0 1
SP15 Q
PS_RE
Q IAL)
PS_RE (P ART
eive d
Rec
(Pa rtial)
SL transmitter
r Transm
Powe t PS_AC
it
Ph y es K
n a ge s Requ PS_A 2
Ma diti on WS) CK
Con (Stop D PS_AC
K
SL_CC9 e rn
Patt d
itte
WS Transm
pD
Sto r
Powe t
Ph y es
n a ge s Requ
Ma diti on artial)
SP31 Con nter P
(E
WS
pD
Sto
Key:
Processing SP state name or SL state name
NOTE - A Stop DWS message is sent from the SP state machine to the SP_DWS state machine twice. The
first prevents false errors as the link goes idle while the second provides consistency in the behavior of
SP31:SAS_PS_Low_Phy_Power (see 5.14.5.2) in both the SAS device requesting the low phy power
condition and the SAS device receiving the low phy power condition request.
Figure N.2 – Example of a SAS device’s sequencing for a successful request to enter a partial phy
power condition
Annex O
(informative)
The removal of peripheral device type from this standard resulted in changes in terminology (see table O.1)
and field names (see table O.2) between this standard and SPL-3.
Annex P
(informative)
Bibliography
1. For more information on the UML specification, contact the Object Modeling Group (see http://www.omg.org).