0% found this document useful (0 votes)
399 views1,059 pages

SAS Protocol Layer

SAS Protocol Layer

Uploaded by

Emily Wang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
399 views1,059 pages

SAS Protocol Layer

SAS Protocol Layer

Uploaded by

Emily Wang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1059

18 January 2021 T10/BSR INCITS 554 Revision 11

Working Draft Project


American National T10/BSR INCITS 554
Standard
Revision 11
18 January 2021

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

Telephone: (604) 415-6000


Email: [email protected]

Reference number
ISO/IEC 14776-265:201x
BSR INCITS 554-201x

Working Draft SAS Protocol Layer - 5 (SPL-5) i


T10/BSR INCITS 554 Revision 11 18 January 2021

Points of Contact

International Committee for Information Technology Standards (INCITS) T10 Technical Committee

T10 Chair T10 Vice-Chair


Mr. William Martin Mr. Curtis Ballard
Samsung Semiconductor, Inc Hewlett Packard Enterprise
7213 Marblethorpe Drive 3404 East Harmony Road
Roseville, CA 95747-5925 Fort Colllins, CO 90523
USA USA

Telephone: (916) 765-6875 Telephone: (970) 898-3013


mail: [email protected] Email: [email protected]

T10 Web Site: http://www.t10.org

INCITS Secretariat
Suite 610
1101 K Street, NW
Washington, DC 20005-7031
USA

Telephone: (202) 737-8888


Web site: http://www.incits.org
Email: [email protected]

Information Technology Industry Council


Web site: http://www.itic.org

Purchase INCITS Standards


Web site: http://www.incits.org/standards-information/purchase-standards-or-download-dpans

ii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

American National Standard


for Information Technology

SAS Protocol Layer - 5 (SPL-5)

Secretariat
Information Technology Industry Council

Approved (not yet approved)


American National Standards Institute, Inc.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) iii


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Printed in the United States of America

iv Working Draft SAS Protocol Layer - 5 (SPL-5)


T10/BSR INCITS 554

Revision Information

R.0 Revision SPL-5 r00 (15 October 2017)


First release of SPL-5. the project proposal was 16-251r1.
Incorporated these:
a) SPL-4r13 draft; and
b) Edits received from ANSI editing processing.

R.1 Revision SPL-5 r01 (24 October 2017)


Incorporated the following:
a) 17-135r2 SPL-5 Fixes (deletable primitives clarifications) [Friend, Geldman, Hery];
b) 17-071r2 SPL-5 Tx Training custom coefficient setting [Tim Symons];
c) 16-261r3 SPL-5 SFF-8609 Mode Page control structure [Kevin Marks];
d) 17-046r1 SPL-5 Obsolete Multiplexing [Brad Besmer];
e) removed duplicate ”or” from a), b) list in section 6.6.

R.2 Revision SPL-5 r02 (29 November 2017)


Incorporated the following:
a) 17-073r3 SPL-5 SFF-8609 Mode Page control structure – THE REDUX [Kevin Marks];
b) corrected incorporation error : omission of TRE bit from table 267;
c) corrected definition cross reference for primitive sequence;
d) 17-133r2 SPL-5 External port access during reduced functionality [Curtis Ballard];
e) 17-157r0 SPL-5 Mux residuals [Tim Symons];
f) 17-048r4 SPL-5 Interleaved SPL [Tim Symons].

R.3 Revision SPL-5 r03 (23 January 2018)


Incorporated the following:
a) 17-162r2 SPL-5 Editorial Clarifications [John Geldman].

R.4 Revision SPL-5 r04 (16 April 2018)


Converted files to Adobe FrameMaker 17.
Incorporated the following:
a) 17-103r6 SPL-5 Retimer [Tim Symons];
b) 18-026r1 SPL-5 Wide port text clarification [Tim Symons].

R.5 Revision SPL-5 r05 (20 June 2018)


Incorporated the following:
a) Increase signal name spacing in figure 117 to clarify PS Reset and Restart PS message destinations;
b) 18-035r0 SPL-5 SP_ReSync editorial fixes [Gerry Houlder];
c) Editorial section title correction for SP_Resync1 transition states [Brad Besmer].

R.6 Revision SPL-5 r06 (26 September 2018)


Incorporated the following:
a) editorial added missing word “to” in footnote of Table 83;
b) corrected table continuation settings (e.g., part 1 of 2);
c) 18-061r0 SPL-5 Fix SP_PS4 LostRecovered state description [Brad Besmer];

Working Draft SAS Protocol Layer - 5 (SPL-5) v


d) 18-070r4 SPL-5 PAPTA_L Transition from A2 to Start [Tim Symons];
e) 18-079r1 SPL-5 ALIGN (1) during SP13 [Tim Symons];
f) 18-091r0 SPL-5 Revised definition for differential signal levels [Fred Knight, Tim Symons];
g) 18-092r0 SPL-5 Obsolete logical link rate text removal [Tim Symons];
h) 18-093r0 SPL-5 Revised description of allowed expander topologies [Fred Knight, Tim Symons];
i) 18-094r1 SPL-5 SAS Scrambling in dword mode [Tim Symons].

R.7 Revision SPL-5 r07 (29 January 2019)


Incorporated the following:
a) 18-108r1 SPL-5 SSP Frame Headers [Tim Symons];
b) 18-117r3 SPL-5 Configure port mode [Curtis Ballard].

R.8 Revision SPL-5 r08 (15 May 2019)


Incorporated the following:
a) 19-031r1 SPL-5 Configure port mode enhancements [Curtis Ballard];
b) 19-006r2 SPL-5 SFF-8609 Mode Page control structure additions [Kevin Marks].

R.9 Revision SPL-5 r09 (4 February 2020)


Incorporated the following:
a) 19-093r1 SPL-5 Three IDENTIFY address frames [Tim Symons].

R.10 Revision SPL-5 r10 (27 March 2020)


Incorporated the following:
a) 20-035r2 SPL-5 Enable SP_ReSync state machine [Tim Symons].

R.11 Revision SPL-5 r11 (20 January 2021)


Incorporated the following:
a) 21-005r1 SPL-5: Align w/ Latest IEEE Company Identifier Renovations [Ralph O. Weber]
b) Revised outdated SPC-4 and SPC-5 references to current SPC-6 reference document.

vi Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Contents
Page
Revision Information ..........................................................................................................................................v
Foreword .............................................................................................................................................................l
Introduction ...................................................................................................................................................... liv

1 Scope ............................................................................................................................................................. 1

2 Normative references..................................................................................................................................... 3

3 Terms, definitions, symbols, abbreviations, keywords, and conventions....................................................... 4


3.1 Terms and definitions ............................................................................................................................... 4
3.2 Symbols and abbreviations .................................................................................................................... 29
3.2.1 Abbreviations .................................................................................................................................... 29
3.2.2 Units.................................................................................................................................................. 32
3.2.3 Symbols ............................................................................................................................................ 32
3.2.4 Mathematical operators .................................................................................................................... 33
3.3 Keywords................................................................................................................................................ 33
3.4 Editorial conventions .............................................................................................................................. 34
3.5 Numeric and character conventions ....................................................................................................... 35
3.5.1 Numeric conventions ........................................................................................................................ 35
3.5.2 Units of measure............................................................................................................................... 36
3.5.3 Byte encoded character strings conventions .................................................................................... 37
3.6 UML notation conventions ...................................................................................................................... 37
3.6.1 Notation conventions overview ......................................................................................................... 37
3.6.2 Constraint and note conventions ...................................................................................................... 37
3.6.3 Class diagram conventions............................................................................................................... 39
3.6.4 Object diagram conventions ............................................................................................................. 43
3.7 State machine conventions .................................................................................................................... 45
3.7.1 State machine conventions overview................................................................................................ 45
3.7.2 Transitions ........................................................................................................................................ 46
3.7.3 Messages, requests, indications, confirmations, responses, and event notifications ....................... 46
3.7.4 State machine counters, timers, and variables ................................................................................. 46
3.7.5 State machine arguments ................................................................................................................. 47
3.8 Bit and byte ordering .............................................................................................................................. 47
3.9 Notation for procedures and functions.................................................................................................... 48

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

Working Draft SAS Protocol Layer - 5 (SPL-5) vii


T10/BSR INCITS 554 Revision 11 18 January 2021

4.1.13.1 Persistent connection operation ................................................................................................ 70


4.1.13.2 Persistent connection support ................................................................................................... 71
4.1.14 Advancing credit ............................................................................................................................. 71
4.1.15 Broadcasts ...................................................................................................................................... 71
4.2 Names and identifiers............................................................................................................................. 73
4.2.1 Names and identifiers overview ........................................................................................................ 73
4.2.2 NAA IEEE Registered format identifier ............................................................................................. 75
4.2.3 NAA Locally Assigned format identifier............................................................................................. 76
4.2.4 SAS address ..................................................................................................................................... 76
4.2.5 Hashed SAS addresses.................................................................................................................... 76
4.2.6 Device names and expander device SAS addresses ....................................................................... 77
4.2.7 Device names for SATA devices with world wide names ................................................................. 78
4.2.8 Port names........................................................................................................................................ 78
4.2.9 Port identifiers and SAS port SAS addresses................................................................................... 78
4.2.10 Phy identifiers ................................................................................................................................. 79
4.3 State machines....................................................................................................................................... 80
4.3.1 State machine overview.................................................................................................................... 80
4.3.2 Transmit data path ............................................................................................................................ 81
4.3.3 Receive data path ............................................................................................................................. 86
4.3.3.1 Receive data path while in the SAS dword mode ....................................................................... 86
4.3.3.2 Receive data path while in the SAS packet mode....................................................................... 89
4.3.4 State machines and SAS Device, SAS Port, and SAS Phy classes................................................. 93
4.4 Events..................................................................................................................................................... 95
4.4.1 Reset sequences .............................................................................................................................. 95
4.4.2 Hard reset ......................................................................................................................................... 97
4.4.2.1 Hard reset overview .................................................................................................................... 97
4.4.2.2 Additional hard reset processing by SAS ports ........................................................................... 97
4.4.2.3 Additional hard reset processing by expander ports ................................................................... 97
4.4.3 I_T nexus loss................................................................................................................................... 97
4.4.4 Power loss expected......................................................................................................................... 98
4.5 Expander device model .......................................................................................................................... 99
4.5.1 Expander device model overview ..................................................................................................... 99
4.5.2 Expander ports................................................................................................................................ 100
4.5.3 Expander connection manager (ECM)............................................................................................ 101
4.5.4 Expander connection router (ECR)................................................................................................. 101
4.5.5 Broadcast propagation processor (BPP) ........................................................................................ 102
4.5.6 Expander device interfaces............................................................................................................. 102
4.5.6.1 Expander device interface overview.......................................................................................... 102
4.5.6.2 Expander device interfaces detail ............................................................................................. 104
4.5.6.3 ECM interface............................................................................................................................ 105
4.5.6.4 ECR interface ............................................................................................................................ 107
4.5.6.5 BPP interface ............................................................................................................................ 109
4.5.7 Expander device routing ................................................................................................................. 110
4.5.7.1 Routing attributes and routing methods .................................................................................... 110
4.5.7.2 Expander device topology routing attribute restrictions............................................................. 111
4.5.7.3 Connection request routing ....................................................................................................... 111
4.5.7.4 Expander route table ................................................................................................................. 111
4.5.7.4.1 Expander route table overview ............................................................................................ 111
4.5.7.4.2 Phy-based expander route table.......................................................................................... 112
4.5.7.4.3 Expander-based expander route table ................................................................................ 113
4.5.8 Expander device reduced functionality ........................................................................................... 113
4.5.9 Broadcast (Expander) handling ...................................................................................................... 114
4.6 Retimer device model........................................................................................................................... 114
4.6.1 Retimer device model overview .......................................................................................................114
4.6.2 Retimer lanes...................................................................................................................................114
4.6.3 Retimer function...............................................................................................................................114
4.6.3.1 Retimer function overview ..........................................................................................................114

viii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.6.3.2 Retimer link negotiation..............................................................................................................115


4.6.3.3 Retimer SNW-3 ......................................................................................................................... 115
4.6.3.4 Retimer phy transmitter training ................................................................................................ 115
4.6.3.5 Retimer SSC support .................................................................................................................115
4.6.3.6 IDENTIFY address frame ...........................................................................................................115
4.7 Discover process .................................................................................................................................. 116
4.7.1 Discover process overview ............................................................................................................. 116
4.7.2 Starting the discover process (Broadcast (Change) handling) ....................................................... 116
4.7.3 Discover process traversal.............................................................................................................. 116
4.7.4 Discover process in a self-configuring expander device ................................................................. 118
4.8 Configuration subprocess..................................................................................................................... 119
4.8.1 Configuration subprocess overview ................................................................................................ 119
4.8.2 Allowed expander device topologies............................................................................................... 119
4.8.3 Externally configurable expander device route table optimization .................................................. 120
4.8.4 Externally configurable expander device expander route index order ............................................ 121
4.9 Zoning................................................................................................................................................... 129
4.9.1 Zoning overview.............................................................................................................................. 129
4.9.2 Zoning expander device requirements............................................................................................ 133
4.9.3 Zoning operation ............................................................................................................................. 136
4.9.3.1 Zone phy information................................................................................................................. 136
4.9.3.2 Zone groups .............................................................................................................................. 139
4.9.3.3 Zone permission table ............................................................................................................... 139
4.9.3.4 Zoning expander route table ..................................................................................................... 141
4.9.3.5 Source zone group and destination zone group determination................................................. 142
4.9.4 Zone phy information and link reset sequences ............................................................................. 143
4.9.5 Broadcast processing in a zoning expander device with zoning enabled....................................... 146
4.9.6 Zone configuration .......................................................................................................................... 147
4.9.6.1 Zone configuration overview ..................................................................................................... 147
4.9.6.2 Lock step ................................................................................................................................... 147
4.9.6.3 Load step................................................................................................................................... 148
4.9.6.4 Activate step.............................................................................................................................. 149
4.9.6.5 Unlock step................................................................................................................................ 149
4.9.6.6 Zone lock inactivity timer ........................................................................................................... 150
4.9.6.7 Enable a zoning expander device ............................................................................................. 150
4.10 SAS device and expander device power conditions........................................................................... 150
4.11 Phy power conditions ......................................................................................................................... 151
4.11.1 Low phy power conditions............................................................................................................. 151
4.11.1.1 Low phy power conditions overview........................................................................................ 151
4.11.1.2 Active phy power condition...................................................................................................... 151
4.11.1.3 Partial phy power condition ..................................................................................................... 151
4.11.1.4 Slumber phy power condition .................................................................................................. 151
4.11.1.5 End device low phy power conditions ..................................................................................... 151
4.11.1.6 Expander device low phy power conditions ............................................................................ 152
4.11.2 SATA phy power conditions.......................................................................................................... 152
4.12 Phy test functions ............................................................................................................................... 153
4.12.1 Phy test functions overview .......................................................................................................... 153
4.12.2 Transmit pattern phy test function................................................................................................. 154
4.13 Phy events.......................................................................................................................................... 154
4.14 Using POWER DISABLE signal to create a power on event.............................................................. 159
4.14.1 Using POWER DISABLE signal to create a power on event overview......................................... 159
4.14.2 Discovering POWER DISABLE signal support ............................................................................. 159
4.14.3 Using a management device server to control the POWER DISABLE signal .............................. 160
4.15 Management application client model for APTA................................................................................. 160

5 Phy layer .................................................................................................................................................... 161


5.1 Phy layer overview ............................................................................................................................... 161
5.2 8b10b coding ........................................................................................................................................ 161

Working Draft SAS Protocol Layer - 5 (SPL-5) ix


T10/BSR INCITS 554 Revision 11 18 January 2021

5.2.1 8b10b coding overview ................................................................................................................... 161


5.2.2 8b10b coding notation conventions ................................................................................................ 161
5.3 Character encoding and decoding........................................................................................................ 163
5.3.1 Introduction ..................................................................................................................................... 163
5.3.2 Bit transmission order ..................................................................................................................... 163
5.3.3 Character transmission order.......................................................................................................... 163
5.3.4 Frame transmission order ............................................................................................................... 163
5.3.5 Running disparity (RD).................................................................................................................... 163
5.3.6 Data characters............................................................................................................................... 164
5.3.7 Control characters........................................................................................................................... 170
5.3.8 Encoding characters in the transmitter ........................................................................................... 171
5.3.9 Decoding characters in the receiver ............................................................................................... 171
5.4 SAS dword mode bit order ................................................................................................................... 172
5.5 SPL packet ........................................................................................................................................... 174
5.5.1 SPL packet overview ...................................................................................................................... 174
5.5.2 SPL packet format .......................................................................................................................... 175
5.5.3 SPL packet payload that contains a scrambled idle segment......................................................... 178
5.5.4 SPL packet payload that contains a primitive segment .................................................................. 178
5.5.5 SPL packet payload that contains an SPL frame segment............................................................. 185
5.5.6 SPL packet payload that contains an idle dword segment ............................................................. 185
5.5.7 Forward error correction ................................................................................................................. 186
5.5.7.1 Forward error correction overview............................................................................................. 186
5.5.7.2 Forward error correction encoding ............................................................................................ 188
5.5.7.3 Forward error correction decoding ............................................................................................ 191
5.5.8 Interleaved SPL .............................................................................................................................. 193
5.5.8.1 Interleaved SPL overview.......................................................................................................... 193
5.5.8.2 Interleaved SPL encoding ......................................................................................................... 193
5.5.8.3 Interleaved SPL decoding ......................................................................................................... 197
5.6 Dwords, primitives, binary primitives, extended binary primitives, data dwords, SPL
frame segments, and invalid dwords..................................................................................................... 197
5.7 Out of band (OOB) signals ................................................................................................................... 198
5.7.1 OOB signals overview..................................................................................................................... 198
5.7.2 Transmission of OOB signals ......................................................................................................... 199
5.7.3 Receiver detection of OOB signals ................................................................................................. 200
5.7.4 SATA port selection signal.............................................................................................................. 202
5.7.5 Phy power conditions...................................................................................................................... 202
5.8 Phy capabilities bits .............................................................................................................................. 202
5.9 BMC coding .......................................................................................................................................... 206
5.9.1 BMC coding overview ..................................................................................................................... 206
5.9.2 TTIU bit cell encoding in the transmitter ......................................................................................... 206
5.9.3 TTIU bit transmission order............................................................................................................. 207
5.9.4 TTIU bit cell decoding in the receiver.............................................................................................. 207
5.10 Train_Tx-SNW TTIUs ......................................................................................................................... 208
5.10.1 Train_Tx-SNW TTIU format .......................................................................................................... 208
5.10.2 Control/Status TTIU ...................................................................................................................... 209
5.10.3 Error Response TTIU.................................................................................................................... 213
5.11 Phy reset sequences .......................................................................................................................... 216
5.11.1 Phy reset sequences overview ..................................................................................................... 216
5.11.2 SATA phy reset sequence ............................................................................................................ 217
5.11.2.1 SATA OOB sequence ............................................................................................................. 217
5.11.2.2 SATA speed negotiation sequence ......................................................................................... 217
5.11.3 SAS to SATA phy reset sequence ................................................................................................ 218
5.11.4 SAS to SAS phy reset sequence .................................................................................................. 219
5.11.4.1 SAS OOB sequence................................................................................................................ 219
5.11.4.2 SAS speed negotiation sequence ........................................................................................... 222
5.11.4.2.1 SAS speed negotiation sequence overview ...................................................................... 222
5.11.4.2.2 SAS speed negotiation sequence timing specifications .................................................... 223

x Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.4.2.3 Speed negotiation window (SNW) definitions .................................................................... 224


5.11.4.2.3.1 SNW definitions overview ........................................................................................... 224
5.11.4.2.3.2 SNW-1, SNW-2, and Final-SNW................................................................................. 225
5.11.4.2.3.3 SNW-3......................................................................................................................... 226
5.11.4.2.3.4 Train_Tx-SNW ............................................................................................................ 228
5.11.4.2.3.4.1 Phy’s transmitter initial condition ............................................................................ 228
5.11.4.2.3.4.2 Transmitter training................................................................................................. 228
5.11.4.2.3.4.3 Pattern marker........................................................................................................ 230
5.11.4.2.3.4.4 Pattern marker detection while in SAS dword mode .............................................. 231
5.11.4.2.3.4.5 Pattern marker detection while in SAS packet mode ............................................. 232
5.11.4.2.3.5 Train_Rx-SNW while in SAS dword mode .................................................................. 233
5.11.4.2.3.6 Train_Rx-SNW while in SAS packet mode ................................................................. 235
5.11.4.2.4 SAS speed negotiation sequence...................................................................................... 238
5.11.4.2.5 SAS speed negotiation sequence examples ..................................................................... 239
5.11.4.2.6 Train_Tx pattern sequence................................................................................................ 247
5.11.4.2.6.1 Train_Tx pattern sequence overview .......................................................................... 247
5.11.4.2.6.2 Train_Tx pattern initial sequence ................................................................................ 248
5.11.4.2.6.3 Train_Tx pattern handshake sequence....................................................................... 251
5.11.4.2.6.3.1 Train_Tx pattern handshake sequence overview ................................................... 251
5.11.4.2.6.3.2 Attached phy’s receiver increment or decrement request ...................................... 251
5.11.4.2.6.3.3 Attached phy’s receiver reference_1, reference_2, or no_equalization request .... 254
5.11.4.2.6.4 Train_Tx pattern completion sequence....................................................................... 256
5.11.4.2.6.5 Invalid TTIU sequence ................................................................................................ 259
5.11.5 Phy reset sequence after devices are attached............................................................................ 260
5.12 APTA .................................................................................................................................................. 261
5.13 Phy power condition sequences......................................................................................................... 262
5.13.1 Transitioning from the active phy power condition to a low phy power condition ......................... 262
5.13.2 Transitioning from a low phy power condition to the active phy power condition ......................... 263
5.13.3 Events during low phy power condition......................................................................................... 263
5.14 SP (phy layer) state machine ............................................................................................................. 265
5.14.1 SP state machine overview........................................................................................................... 265
5.14.2 SP transmitter and SP receiver..................................................................................................... 268
5.14.3 OOB sequence states................................................................................................................... 272
5.14.3.1 OOB sequence states overview .............................................................................................. 272
5.14.3.2 SP0:OOB_COMINIT state....................................................................................................... 273
5.14.3.2.1 State description ................................................................................................................ 273
5.14.3.2.2 Transition SP0:OOB_COMINIT to SP1:OOB_AwaitCOMX............................................... 274
5.14.3.2.3 Transition SP0:OOB_COMINIT to SP3:OOB_AwaitCOMINIT_Sent ................................. 274
5.14.3.2.4 Transition SP0:OOB_COMINIT to SP4:OOB_COMSAS................................................... 274
5.14.3.3 SP1:OOB_AwaitCOMX state .................................................................................................. 274
5.14.3.3.1 State description ................................................................................................................ 274
5.14.3.3.2 Transition SP1:OOB_AwaitCOMX to SP0:OOB_COMINIT............................................... 274
5.14.3.3.3 Transition SP1:OOB_AwaitCOMX to SP4:OOB_COMSAS .............................................. 275
5.14.3.4 SP2:OOB_NoCOMSASTimeout state..................................................................................... 275
5.14.3.4.1 State description ................................................................................................................ 275
5.14.3.4.2 Transition SP2:OOB_NoCOMSASTimeout to SP0:OOB_COMINIT ................................. 275
5.14.3.4.3 Transition SP2:OOB_NoCOMSASTimeout to SP4:OOB_COMSAS................................. 275
5.14.3.5 SP3:OOB_AwaitCOMINIT_Sent state .................................................................................... 275
5.14.3.5.1 State description ................................................................................................................ 275
5.14.3.5.2 Transition SP3:OOB_AwaitCOMINIT_Sent to SP4:OOB_COMSAS ................................ 275
5.14.3.6 SP4:OOB_COMSAS state ...................................................................................................... 275
5.14.3.6.1 State description ................................................................................................................ 275
5.14.3.6.2 Transition SP4:OOB_COMSAS to SP5:OOB_AwaitCOMSAS_Sent ................................ 276
5.14.3.6.3 Transition SP4:OOB_COMSAS to SP6:OOB_AwaitNoCOMSAS ..................................... 276
5.14.3.6.4 Transition SP4:OOB_COMSAS to SP7:OOB_AwaitCOMSAS ......................................... 276
5.14.3.7 SP5:OOB_AwaitCOMSAS_Sent state .................................................................................... 276
5.14.3.7.1 State description ................................................................................................................ 276

Working Draft SAS Protocol Layer - 5 (SPL-5) xi


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.3.7.2 Transition SP5:OOB_AwaitCOMSAS_Sent to SP6:OOB_AwaitNoCOMSAS................... 276


5.14.3.8 SP6:OOB_AwaitNoCOMSAS state......................................................................................... 277
5.14.3.8.1 State description ................................................................................................................ 277
5.14.3.8.2 Transition SP6:OOB_AwaitNoCOMSAS to SP0:OOB_COMINIT ..................................... 277
5.14.3.8.3 Transition SP6:OOB_AwaitNoCOMSAS to SP8:SAS_Start.............................................. 277
5.14.3.9 SP7:OOB_AwaitCOMSAS state ............................................................................................. 277
5.14.3.9.1 State description ................................................................................................................ 277
5.14.3.9.2 Transition SP7:OOB_AwaitCOMSAS to SP2:OOB_NoCOMSASTimeout ........................ 277
5.14.3.9.3 Transition SP7:OOB_AwaitCOMSAS to SP6:OOB_AwaitNoCOMSAS ............................ 277
5.14.3.9.4 Transition SP7:OOB_AwaitCOMSAS to SP16:SATA_COMWAKE................................... 277
5.14.3.9.5 Transition SP7:OOB_AwaitCOMSAS to SP26:SATA _SpinupHold .................................. 278
5.14.4 SAS speed negotiation states....................................................................................................... 278
5.14.4.1 SAS speed negotiation states overview .................................................................................. 278
5.14.4.2 Negotiation idle........................................................................................................................ 278
5.14.4.3 SP8:SAS_Start state ............................................................................................................... 281
5.14.4.3.1 State description ................................................................................................................ 281
5.14.4.3.2 Transition SP8:SAS_Start to SP0:OOB_COMINIT ........................................................... 281
5.14.4.3.3 Transition SP8:SAS_Start to SP1:OOB_AwaitCOMX ....................................................... 282
5.14.4.3.4 Transition SP8:SAS_Start to SP9:SAS_WindowNotSupported ........................................ 282
5.14.4.3.5 Transition SP8:SAS_Start to SP10:SAS_AwaitALIGN...................................................... 282
5.14.4.3.6 Transition SP8:SAS_Start to SP27:SAS_Settings ............................................................ 282
5.14.4.4 SP9:SAS_WindowNotSupported state.................................................................................... 282
5.14.4.4.1 State description ................................................................................................................ 282
5.14.4.4.2 Transition SP9:SAS_WindowNotSupported to SP0:OOB_COMINIT ................................ 282
5.14.4.4.3 Transition SP9:SAS_WindowNotSupported to SP14:SAS_Fail ........................................ 282
5.14.4.5 SP10:SAS_AwaitALIGN state ................................................................................................. 282
5.14.4.5.1 State description ................................................................................................................ 282
5.14.4.5.2 Transition SP10:SAS_AwaitALIGN to SP0:OOB_COMINIT ............................................. 283
5.14.4.5.3 Transition SP10:SAS_AwaitALIGN to SP11:SAS_AwaitALIGN1 ...................................... 283
5.14.4.5.4 Transition SP10:SAS_AwaitALIGN to SP12:SAS_AwaitSNW .......................................... 283
5.14.4.5.5 Transition SP10:SAS_AwaitALIGN to SP14:SAS_Fail...................................................... 283
5.14.4.6 SP11:SAS_AwaitALIGN1 state ............................................................................................... 283
5.14.4.6.1 State description ................................................................................................................ 283
5.14.4.6.2 Transition SP11:SAS_AwaitALIGN1 to SP0:OOB_COMINIT ........................................... 283
5.14.4.6.3 Transition SP11:SAS_AwaitALIGN1 to SP12:SAS_AwaitSNW ........................................ 283
5.14.4.6.4 Transition SP11:SAS_AwaitALIGN1 to SP14:SAS_Fail.................................................... 283
5.14.4.7 SP12:SAS_AwaitSNW state ................................................................................................... 284
5.14.4.7.1 State description ................................................................................................................ 284
5.14.4.7.2 Transition SP12:SAS_AwaitSNW to SP0:OOB_COMINIT ................................................ 284
5.14.4.7.3 Transition SP12:SAS_AwaitSNW to SP13:SAS_Pass...................................................... 284
5.14.4.8 SP13:SAS_Pass state............................................................................................................. 284
5.14.4.8.1 State description ................................................................................................................ 284
5.14.4.8.2 Transition SP13:SAS_Pass to SP0:OOB_COMINIT ......................................................... 284
5.14.4.8.3 Transition SP13:SAS_Pass to SP8:SAS_Start ................................................................. 284
5.14.4.8.4 Transition SP13:SAS_Pass to SP15:SAS_PHY_Ready ................................................... 285
5.14.4.9 SP14:SAS_Fail state............................................................................................................... 285
5.14.4.9.1 State description ................................................................................................................ 285
5.14.4.9.2 Transition SP14:SAS_Fail to SP1:OOB_AwaitCOMX ....................................................... 285
5.14.4.9.3 Transition SP14:SAS_Fail to SP8:SAS_Start.................................................................... 285
5.14.4.10 SP15:SAS_PHY_Ready state............................................................................................... 285
5.14.4.10.1 State description .............................................................................................................. 285
5.14.4.10.2 Transition SP15:SAS_PHY_Ready to SP0:OOB_COMINIT ........................................... 286
5.14.4.10.3 Transition SP15:SAS_PHY_Ready to SP31:SAS_PS_Low_Phy_Power ....................... 286
5.14.4.11 SP27:SAS_Settings state...................................................................................................... 286
5.14.4.11.1 State description .............................................................................................................. 286
5.14.4.11.2 Transition SP27:SAS_Settings to SP0:OOB_COMINIT .................................................. 287
5.14.4.11.3 Transition SP27:SAS_Settings to SP1:OOB_AwaitCOMX.............................................. 287

xii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.4.11.4 Transition SP27:SAS_Settings to SP8:SAS_Start .......................................................... 287


5.14.4.11.5 Transition SP27:SAS_Settings to SP28:SAS_TrainSetup .............................................. 287
5.14.4.12 SP28:SAS_TrainSetup.......................................................................................................... 287
5.14.4.12.1 State description .............................................................................................................. 287
5.14.4.12.2 Transition SP28:SAS_TrainSetup to SP0:OOB_COMINIT ............................................. 288
5.14.4.12.3 Transition SP28:SAS_TrainSetup to SP29:SAS_Train_Rx ............................................. 288
5.14.4.12.4 Transition SP28:SAS_TrainSetup to SP34:SAS_Train_Tx ............................................. 288
5.14.4.13 SP34:SAS_Train_Tx state .................................................................................................... 288
5.14.4.13.1 State description .............................................................................................................. 288
5.14.4.13.2 Transition SP34:SAS_Train_Tx to SP1:OOB_AwaitCOMX ............................................ 288
5.14.4.13.3 Transition SP34:SAS_Train_Tx to SP28:SAS_TrainSetup ............................................. 289
5.14.4.13.4 Transition SP34:SAS_Train_Tx to SP29:SAS_Train_Rx ................................................ 289
5.14.4.14 SP29:SAS_Train_Rx state .................................................................................................... 289
5.14.4.14.1 State description .............................................................................................................. 289
5.14.4.14.2 Transition SP29:SAS_Train_Rx to SP0:OOB_COMINIT ................................................ 290
5.14.4.14.3 Transition SP29:SAS_Train_Rx to SP1:OOB_AwaitCOMX ............................................ 290
5.14.4.14.4 Transition SP29:SAS_Train_Rx to SP28:SAS_TrainSetup ............................................. 290
5.14.4.14.5 Transition SP29:SAS_Train_Rx to SP30:SAS_TrainingDone ......................................... 290
5.14.4.15 SP30:SAS_TrainingDone state ............................................................................................. 290
5.14.4.15.1 State description .............................................................................................................. 290
5.14.4.15.2 Transition SP30:SAS_TrainingDone to SP0:OOB_COMINIT ......................................... 291
5.14.4.15.3 Transition SP30:SAS_TrainingDone to SP1:OOB_AwaitCOMX ..................................... 291
5.14.4.15.4 Transition SP30:SAS_TrainingDone to SP28:SAS_TrainSetup ...................................... 291
5.14.4.15.5 Transition SP30:SAS_TrainingDone to SP15:SAS_PHY_Ready.................................... 291
5.14.5 SAS phy power conditions states ................................................................................................. 292
5.14.5.1 SAS phy power conditions states overview............................................................................. 292
5.14.5.2 SP31:SAS_PS_Low_Phy_Power state................................................................................... 293
5.14.5.2.1 State description ................................................................................................................ 293
5.14.5.2.2 Transition SP31:SAS_PS_Low_Phy_Power to SP0:OOB_COMINIT ............................... 294
5.14.5.2.3 Transition SP31:SAS_PS_Low_Phy_Power to SP32:SAS_PS_ALIGN0.......................... 294
5.14.5.2.4 Transition SP31:SAS_PS_Low_Phy_Power to SP35:SAS_PS_Sync .............................. 294
5.14.5.3 SP32:SAS_PS_ALIGN0 state ................................................................................................. 294
5.14.5.3.1 State description ................................................................................................................ 294
5.14.5.3.2 Transition SP32:SAS_PS _ALIGN0 state to SP0:OOB_COMINIT.................................... 295
5.14.5.3.3 Transition SP32:SAS_PS _ALIGN0 to SP33:SAS_PS _ALIGN1 ...................................... 295
5.14.5.4 SP33:SAS_PS_ALIGN1 state ................................................................................................. 295
5.14.5.4.1 State description ................................................................................................................ 295
5.14.5.4.2 Transition SP33:SAS_PS_ALIGN1 state to SP0:OOB_COMINIT..................................... 295
5.14.5.4.3 Transition SP33:SAS_PS_ALIGN1 state to SP15:SAS_PHY_Ready............................... 295
5.14.5.5 SP35:SAS_PS_Sync state...................................................................................................... 295
5.14.5.5.1 State description ................................................................................................................ 295
5.14.5.5.2 Transition SP35:SAS_PS _SYNC state to SP0:OOB_COMINIT ...................................... 296
5.14.5.5.3 Transition SP35:SAS_PS _SYNC state to SP15:SAS_PHY_Ready................................. 296
5.14.6 SATA host emulation states.......................................................................................................... 296
5.14.6.1 SATA host emulation states overview..................................................................................... 296
5.14.6.2 SP16:SATA_COMWAKE state ............................................................................................... 298
5.14.6.2.1 State description ................................................................................................................ 298
5.14.6.2.2 Transition SP16:SATA_COMWAKE to SP0:OOB_COMINIT ............................................ 298
5.14.6.2.3 Transition SP16:SATA_COMWAKE to SP17:SATA_AwaitCOMWAKE ............................ 298
5.14.6.3 SP17:SATA_AwaitCOMWAKE state....................................................................................... 298
5.14.6.3.1 State description ................................................................................................................ 298
5.14.6.3.2 Transition SP17:SATA_AwaitCOMWAKE to SP0:OOB_COMINIT ................................... 298
5.14.6.3.3 Transition SP17:SATA_AwaitCOMWAKE to SP18:SATA_AwaitNoCOMWAKE .............. 298
5.14.6.4 SP18:SATA_AwaitNoCOMWAKE state .................................................................................. 298
5.14.6.4.1 State description ................................................................................................................ 298
5.14.6.4.2 Transition SP18:SATA_AwaitNoCOMWAKE to SP0:OOB_COMINIT .............................. 298
5.14.6.4.3 Transition SP18:SATA_AwaitNoCOMWAKE to SP19:SATA_AwaitALIGN....................... 298

Working Draft SAS Protocol Layer - 5 (SPL-5) xiii


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.6.5 SP19:SATA_AwaitALIGN state............................................................................................... 299


5.14.6.5.1 State description ................................................................................................................ 299
5.14.6.5.2 Transition SP19:SATA_AwaitALIGN to SP0:OOB_COMINIT ........................................... 299
5.14.6.5.3 Transition SP19:SATA_AwaitALIGN to SP20:SATA_AdjustSpeed................................... 299
5.14.6.6 SP20:SATA_AdjustSpeed state .............................................................................................. 299
5.14.6.6.1 State description ................................................................................................................ 299
5.14.6.6.2 Transition SP20:SATA_AdjustSpeed to SP0:OOB_COMINIT .......................................... 299
5.14.6.6.3 Transition SP20:SATA_AdjustSpeed to SP21:SATA_TransmitALIGN ............................. 300
5.14.6.7 SP21:SATA_TransmitALIGN state.......................................................................................... 300
5.14.6.7.1 State description ................................................................................................................ 300
5.14.6.7.2 Transition SP21:SATA_TransmitALIGN to SP0:OOB_COMINIT ...................................... 300
5.14.6.7.3 Transition SP21:SATA_TransmitALIGN to SP22:SATA_PHY_Ready .............................. 300
5.14.6.8 SP22:SATA_PHY_Ready state............................................................................................... 300
5.14.6.8.1 State description ................................................................................................................ 300
5.14.6.8.2 Transition SP22:SATA_PHY_Ready to SP0:OOB_COMINIT ........................................... 300
5.14.6.8.3 Transition SP22:SATA_PHY_Ready to SP23:SATA_PM_Partial ..................................... 301
5.14.6.8.4 Transition SP22:SATA_PHY_Ready to SP24:SATA_PM_Slumber .................................. 301
5.14.6.9 SP23:SATA_PM_Partial state................................................................................................. 301
5.14.6.9.1 State description ................................................................................................................ 301
5.14.6.9.2 Transition SP23:SATA_PM_Partial to SP0:OOB_COMINIT ............................................. 301
5.14.6.9.3 Transition SP23:SATA_PM_Partial to SP16:SATA_COMWAKE ...................................... 301
5.14.6.9.4 Transition SP23:SATA_PM_Partial to SP19:SATA_AwaitALIGN ..................................... 301
5.14.6.10 SP24:SATA_PM_Slumber state............................................................................................ 301
5.14.6.10.1 State description .............................................................................................................. 301
5.14.6.10.2 Transition SP24:SATA_PM_Slumber to SP0:OOB_COMINIT ........................................ 301
5.14.6.10.3 Transition SP24:SATA_PM_Slumber to SP16:SATA_COMWAKE................................. 302
5.14.6.10.4 Transition SP24:SATA_PM_Slumber to SP19:SATA_AwaitALIGN ................................ 302
5.14.7 SATA port selector state SP25:SATA_PortSel ............................................................................. 302
5.14.7.1 State description...................................................................................................................... 302
5.14.7.2 Transition SP25:SATA_PortSel to SP1:OOB_AwaitCOMX .................................................... 302
5.14.8 SATA spinup hold state SP26:SATA_SpinupHold........................................................................ 303
5.14.8.1 State description...................................................................................................................... 303
5.14.8.2 Transition SP26:SATA_SpinupHold to SP0:OOB_COMINIT .................................................. 303
5.15 SP_DWS (phy layer dword synchronization) state machine .............................................................. 303
5.15.1 SP_DWS state machine overview ................................................................................................ 303
5.15.2 SP_DWS receiver ......................................................................................................................... 306
5.15.3 SP_DWS0:AcquireSync state....................................................................................................... 307
5.15.3.1 State description...................................................................................................................... 307
5.15.3.2 Transition SP_DWS0:AcquireSync to SP_DWS1:Valid1 ........................................................ 307
5.15.4 SP_DWS1:Valid1 state ................................................................................................................. 308
5.15.4.1 State description...................................................................................................................... 308
5.15.4.2 Transition SP_DWS1:Valid1 to SP_DWS0:AcquireSync ........................................................ 308
5.15.4.3 Transition SP_DWS1:Valid1 to SP_DWS2:Valid2 .................................................................. 308
5.15.5 SP_DWS2:Valid2 state ................................................................................................................. 308
5.15.5.1 State description...................................................................................................................... 308
5.15.5.2 Transition SP_DWS2:Valid2 to SP_DWS0:AcquireSync ........................................................ 308
5.15.5.3 Transition SP_DWS2:Valid2 to SP_DWS3:SyncAcquired ...................................................... 308
5.15.6 SP_DWS3:SyncAcquired state..................................................................................................... 308
5.15.6.1 State description...................................................................................................................... 308
5.15.6.2 Transition SP_DWS3:SyncAcquired to SP_DWS4:Lost1 ....................................................... 309
5.15.7 SP_DWS4:Lost1 state .................................................................................................................. 309
5.15.7.1 State description...................................................................................................................... 309
5.15.7.2 Transition SP_DWS4:Lost1 to SP_DWS5:Lost1Recovered ................................................... 309
5.15.7.3 Transition SP_DWS4:Lost1 to SP_DWS6:Lost2..................................................................... 309
5.15.8 SP_DWS5:Lost1Recovered state................................................................................................. 309
5.15.8.1 State description...................................................................................................................... 309
5.15.8.2 Transition SP_DWS5:Lost1Recovered to SP_DWS3:SyncAcquired ...................................... 309

xiv Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.15.8.3 Transition SP_DWS5:Lost1Recovered to SP_DWS6:Lost2 ................................................... 309


5.15.9 SP_DWS6:Lost2 state .................................................................................................................. 309
5.15.9.1 State description...................................................................................................................... 309
5.15.9.2 Transition SP_DWS6:Lost2 to SP_DWS7:Lost2Recovered ................................................... 309
5.15.9.3 Transition SP_DWS6:Lost2 to SP_DWS8:Lost3..................................................................... 310
5.15.10 SP_DWS7:Lost2Recovered state............................................................................................... 310
5.15.10.1 State description.................................................................................................................... 310
5.15.10.2 Transition SP_DWS7:Lost2Recovered to SP_DWS4:Lost1 ................................................. 310
5.15.10.3 Transition SP_DWS7:Lost2Recovered to SP_DWS8:Lost3 ................................................. 310
5.15.11 SP_DWS8:Lost3 state ................................................................................................................ 310
5.15.11.1 State description.................................................................................................................... 310
5.15.11.2 Transition SP_DWS8:Lost3 to SP_DWS0:AcquireSync ....................................................... 310
5.15.11.3 Transition SP_DWS8:Lost3 to SP_DWS9:Lost3Recovered ................................................. 310
5.15.12 SP_DWS9:Lost3Recovered state............................................................................................... 310
5.15.12.1 State description.................................................................................................................... 310
5.15.12.2 Transition SP_DWS9:Lost3Recovered to SP_DWS0:AcquireSync ...................................... 311
5.15.12.3 Transition SP_DWS9:Lost3Recovered to SP_DWS6:Lost2 ................................................. 311
5.16 SP_PS (phy layer SPL packet synchronization) state machine ......................................................... 311
5.16.1 SP_PS state machine overview.................................................................................................... 311
5.16.2 SP_PS receiver............................................................................................................................. 313
5.16.3 SP_PS0:AcquireSync state .......................................................................................................... 317
5.16.3.1 State description...................................................................................................................... 317
5.16.3.2 Transition SP_PS0:AcquireSync to SP_PS1:Valid1 ............................................................... 317
5.16.4 SP_PS1:Valid1 state..................................................................................................................... 317
5.16.4.1 State description...................................................................................................................... 317
5.16.4.2 Transition SP_PS1:Valid1 to SP_PS0:AcquireSync ............................................................... 317
5.16.4.3 Transition SP_PS1:Valid1 to SP_PS2:SyncAcquired ............................................................. 317
5.16.5 SP_PS2:SyncAcquired state ........................................................................................................ 318
5.16.5.1 State description...................................................................................................................... 318
5.16.5.2 Transition SP_PS2:SyncAcquired to SP_PS0:AcquireSync ................................................... 318
5.16.5.3 Transition SP_PS2:SyncAcquired to SP_PS3:Lost1 .............................................................. 318
5.16.6 SP_PS3:Lost1 state...................................................................................................................... 318
5.16.6.1 State description...................................................................................................................... 318
5.16.6.2 Transition SP_PS3:Lost1 to SP_PS0:AcquireSync ................................................................ 318
5.16.6.3 Transition SP_PS3:Lost1 to SP_PS5:Lost2............................................................................ 318
5.16.6.4 Transition SP_PS3:Lost1 to SP_PS4:LostRecovered ............................................................ 318
5.16.7 SP_PS4:LostRecovered state ...................................................................................................... 318
5.16.7.1 State description...................................................................................................................... 318
5.16.7.2 Transition SP_PS4:LostRecovered to SP_PS0:AcquireSync ................................................. 318
5.16.7.3 Transition SP_PS4:LostRecovered to SP_PS2:SyncAcquired ............................................... 319
5.16.7.4 Transition SP_PS4:LostRecovered to SP_PS3:Lost1 ............................................................ 319
5.16.8 SP_PS5:Lost2 state...................................................................................................................... 319
5.16.8.1 State description...................................................................................................................... 319
5.16.8.2 Transition SP_PS5:Lost2 to SP_PS0:AcquireSync ................................................................ 319
5.16.8.3 Transition SP_PS5:Lost2 to SP_PS4:LostRecovered ............................................................ 319
5.16.8.4 Transition SP_PS5:Lost2 to SP_PS6:Lost3............................................................................ 319
5.16.9 SP_PS6:Lost3 state...................................................................................................................... 319
5.16.9.1 State description...................................................................................................................... 319
5.16.9.2 Transition SP_PS6:Lost3 to SP_PS0:AcquireSync ................................................................ 319
5.16.9.3 Transition SP_PS6:Lost3 to SP_PS4:LostRecovered ............................................................ 320
5.17 SP_ReSync (phy layer resynchronization) state machine.................................................................. 320
5.17.1 SP_ReSync state machine overview ............................................................................................ 320
5.17.2 SP_ReSync0:Initial ....................................................................................................................... 321
5.17.2.1 State description...................................................................................................................... 321
5.17.2.2 Transition SP_ReSync0:Initial to SP_ReSync1:Start.............................................................. 321
5.17.3 SP_ReSync1:Start ........................................................................................................................ 321
5.17.3.1 State description...................................................................................................................... 321

Working Draft SAS Protocol Layer - 5 (SPL-5) xv


T10/BSR INCITS 554 Revision 11 18 January 2021

5.17.3.2 Transition SP_ReSync1:Start to SP_ReSync2:Request......................................................... 321


5.17.3.3 Transition SP_ReSync1:Start to SP_ReSync3:Response ...................................................... 322
5.17.4 SP_ReSync2:Request .................................................................................................................. 322
5.17.4.1 State description...................................................................................................................... 322
5.17.4.2 Transition SP_ReSync2:Request to SP_ReSync0:Initial ........................................................ 322
5.17.4.3 Transition SP_ReSync2:Request to SP_ReSync1:Start......................................................... 322
5.17.4.4 Transition SP_ReSync2:Request to SP_ReSync3:Response ................................................ 322
5.17.5 SP_ReSync3:Response ............................................................................................................... 322
5.17.5.1 State description...................................................................................................................... 322
5.17.5.2 Transition SP_ReSync3:Response state to SP_ReSync0:Initial ............................................ 323
5.17.5.3 Transition SP_ReSync3:Response state to SP_ReSync1:Start ............................................. 323
5.18 PTT (phy layer transmitter training) state machines........................................................................... 323
5.18.1 PTT state machines overview....................................................................................................... 323
5.18.2 SP transmitter additions for transmitter training............................................................................ 324
5.18.2.1 SP transmitter additions for transmitter training overview ....................................................... 324
5.18.2.2 TTIU transmit setup................................................................................................................. 324
5.18.2.3 No_equalization, reference_1, reference_2, and vendor_unique coefficient settings request 324
5.18.2.4 Coefficient limits ...................................................................................................................... 325
5.18.2.5 Coefficient request result of update complete ......................................................................... 325
5.18.2.5.1 Coefficient request processing .......................................................................................... 325
5.18.2.5.2 Coefficient adjustment completes...................................................................................... 325
5.18.2.5.3 No coefficient adjustment .................................................................................................. 325
5.18.2.6 Coefficient request result of maximum .................................................................................... 326
5.18.2.6.1 Coefficient request processing .......................................................................................... 326
5.18.2.6.2 Coefficient adjustment completes...................................................................................... 326
5.18.2.6.3 No coefficient adjustment .................................................................................................. 326
5.18.2.7 Coefficient request result of minimum ..................................................................................... 326
5.18.2.7.1 Coefficient request processing .......................................................................................... 326
5.18.2.7.2 Coefficient adjustment completes...................................................................................... 327
5.18.2.7.3 No coefficient adjustment .................................................................................................. 327
5.18.3 SP receiver additions for transmitter training ............................................................................... 327
5.18.4 PTT_T (phy layer transmitter training transmit pattern) state machine ......................................... 328
5.18.4.1 PTT_T state machine overview............................................................................................... 328
5.18.4.2 PTT_T0:Idle state.................................................................................................................... 331
5.18.4.2.1 State description ................................................................................................................ 331
5.18.4.2.2 Transition PTT_T0:Idle to PTT_T1:Initialize ...................................................................... 331
5.18.4.3 PTT_T1:Initialize state............................................................................................................. 331
5.18.4.3.1 State description ................................................................................................................ 331
5.18.4.3.2 Transition PTT_T1:Initialize to PTT_T0:Idle ...................................................................... 331
5.18.4.3.3 Transition PTT_T1:Initialize to PTT_T2:Tx_Training ......................................................... 332
5.18.4.4 PTT_T2:Tx_Training state....................................................................................................... 332
5.18.4.4.1 State description ................................................................................................................ 332
5.18.4.4.2 Entry conditions ................................................................................................................. 332
5.18.4.4.3 Control word and status word mappings ........................................................................... 333
5.18.4.4.4 Error message handling..................................................................................................... 334
5.18.4.4.5 Resetting attached phy’s transmitter ................................................................................. 334
5.18.4.4.6 Local phy’s transmitter and attached phy’s transmitter training completed ....................... 335
5.18.4.4.7 Transition PTT_T2:Tx_Training to PTT_T0:Idle ................................................................ 336
5.18.4.4.8 Transition PTT_T2:Tx_Training to PTT_T3:Local_Tx_Training ........................................ 336
5.18.4.5 PTT_T3:Local_Tx_Training state ............................................................................................ 336
5.18.4.5.1 State description ................................................................................................................ 336
5.18.4.5.2 Entry conditions ................................................................................................................. 336
5.18.4.5.3 Status word mappings ....................................................................................................... 336
5.18.4.5.4 Local phy’s transmitter and attached phy’s transmitter training completed ....................... 337
5.18.4.5.5 Error message handling..................................................................................................... 337
5.18.4.5.6 Transition PTT_T3:Local_Tx_Training to PTT_T0:Idle...................................................... 337
5.18.5 PTT_R (phy layer transmitter training receive pattern) state machine.......................................... 337

xvi Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.5.1 PTT_R state machine overview .............................................................................................. 337


5.18.5.2 PTT_R0:Idle state ................................................................................................................... 339
5.18.5.2.1 State description ................................................................................................................ 339
5.18.5.2.2 Transition PTT_R0:Idle to PTT_R1:Initialize ..................................................................... 339
5.18.5.3 PTT_R1:Initialize state ............................................................................................................ 339
5.18.5.3.1 State description ................................................................................................................ 339
5.18.5.3.2 Transition PTT_R1:Initialize to PTT_R0:Idle ..................................................................... 339
5.18.5.3.3 Transition PTT_R1:Initialize to PTT_R2:Receive_Train_Tx_Pattern ................................ 339
5.18.5.4 PTT_R2:Receive_Train_Tx_Pattern state .............................................................................. 339
5.18.5.4.1 State description ................................................................................................................ 339
5.18.5.4.2 Transition PTT_R2:Receive_Train_Tx_Pattern to PTT_R0:Idle........................................ 345
5.18.5.4.3 Transition PTT_R2:Receive_Train_Tx_Pattern to PTT_R1:Initialize ................................ 345
5.18.6 PTT_SC (phy layer transmitter training set transmitter coefficient) state machines ..................... 345
5.18.6.1 PTT_SC (phy layer transmitter training set transmitter coefficient) state machines overview 345
5.18.6.2 PTT_SC1 state machine overview .......................................................................................... 347
5.18.6.3 PTT_SC1_0:Idle state ............................................................................................................. 347
5.18.6.3.1 State description ................................................................................................................ 347
5.18.6.3.2 Transition PTT_SC1_0:Idle to PTT_SC1_1:Wait_Inc_Dec ............................................... 347
5.18.6.4 PTT_SC1_1:Wait_Inc_Dec state ............................................................................................ 347
5.18.6.4.1 State description ................................................................................................................ 347
5.18.6.4.2 Transition PTT_SC1_1:Wait_Inc_Dec to PTT_SC1_0:Idle ............................................... 347
5.18.6.4.3 Transition PTT_SC1_1:Wait_Inc_Dec to PTT_SC1_2:Set_Coefficient............................. 347
5.18.6.5 PTT_SC1_2:Set_Coefficient state .......................................................................................... 348
5.18.6.5.1 State description ................................................................................................................ 348
5.18.6.5.2 Transition PTT_SC1_2:Set_Coefficient to PTT_SC1_0:Idle ............................................. 349
5.18.6.5.3 Transition PTT_SC1_2:Set_Coefficient to PTT_SC1_3:Wait_Hold .................................. 349
5.18.6.6 PTT_SC1_3:Wait_Hold state .................................................................................................. 349
5.18.6.6.1 State description ................................................................................................................ 349
5.18.6.6.2 Transition PTT_SC1_3:Wait_Hold to PTT_SC1_0:Idle ..................................................... 349
5.18.6.6.3 Transition PTT_SC1_3:Wait_Hold to PTT_SC1_1:Wait_Inc_Dec .................................... 349
5.18.7 PTT_SC2 (phy layer transmitter training set transmitter coefficient 2) state machine .................. 349
5.18.8 PTT_SC3 (phy layer transmitter training set transmitter coefficient 3) state machine .................. 350
5.18.9 PTT_GC (phy layer transmitter training get transmitter coefficient) state machines..................... 350
5.18.9.1 PTT_GC (phy layer transmitter training get transmitter coefficient) state machines overview 350
5.18.9.2 PTT_GC1 state machine......................................................................................................... 351
5.18.9.3 PTT_GC1_0:Idle state............................................................................................................. 352
5.18.9.3.1 State description ................................................................................................................ 352
5.18.9.3.2 Transition PTT_GC1_0:Idle to PTT_GC1_1:Get_Coefficient ............................................ 352
5.18.9.4 PTT_GC1_1:Get_Coefficient state.......................................................................................... 352
5.18.9.4.1 State description ................................................................................................................ 352
5.18.9.4.2 Transition PTT_GC1_1:Get_Coefficient to PTT_GC1_0:Idle ............................................ 352
5.18.9.4.3 Transition PTT_GC1_1:Get_Coefficient to PTT_GC1_2:Wait_Restart ............................. 352
5.18.9.5 PTT_GC1_2:Wait_Restart state.............................................................................................. 353
5.18.9.5.1 State description ................................................................................................................ 353
5.18.9.5.2 Transition PTT_GC1_2:Wait_Restart to PTT_GC1_0:Idle ................................................ 353
5.18.10 PTT_GC2 (phy layer transmitter training get transmitter coefficient 2) state machine ............... 353
5.18.11 PTT_GC3 (phy layer transmitter training get transmitter coefficient 3) state machine ............... 353
5.18.12 PTT_PL (phy layer transmitter training pattern lock) state machine ........................................... 354
5.18.12.1 PTT_PL state machine overview........................................................................................... 354
5.18.12.2 PTT_PL0:Idle state................................................................................................................ 355
5.18.12.2.1 State description .............................................................................................................. 355
5.18.12.2.2 Transition PTT_PL0:Idle to PTT_PL1:Acquire_Lock ....................................................... 356
5.18.12.3 PTT_PL1:Acquire_Lock state................................................................................................ 356
5.18.12.3.1 State description .............................................................................................................. 356
5.18.12.3.2 Transition PTT_PL1:Acquire_Lock to PTT_PL2:Valid..................................................... 356
5.18.12.4 PTT_PL2:Valid state ............................................................................................................. 356
5.18.12.4.1 State description .............................................................................................................. 356

Working Draft SAS Protocol Layer - 5 (SPL-5) xvii


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.12.4.2 Transition PTT_PL2:Valid to PTT_PL1:Acquire_Lock..................................................... 356


5.18.12.4.3 Transition PTT_PL2:Valid to PTT_PL3:Lock_Acquired ................................................... 356
5.18.12.5 PTT_PL3:Lock_Acquired state.............................................................................................. 356
5.18.12.5.1 State description .............................................................................................................. 356
5.18.12.5.2 Transition PTT_PL3:Lock_Acquired to PTT_PL4:Lost1 .................................................. 356
5.18.12.6 PTT_PL4:Lost1 state............................................................................................................. 357
5.18.12.6.1 State description .............................................................................................................. 357
5.18.12.6.2 Transition PTT_PL4:Lost1 to PTT_PL3:Lock_Acquired .................................................. 357
5.18.12.6.3 Transition PTT_PL4:Lost1 to PTT_PL5:Lost2 ................................................................. 357
5.18.12.7 PTT_PL5:Lost2 state............................................................................................................. 357
5.18.12.7.1 State description .............................................................................................................. 357
5.18.12.7.2 Transition PTT_PL5:Lost2 to PTT_PL3:Lock_Acquired .................................................. 357
5.18.12.7.3 Transition PTT_PL5:Lost2 to PTT_PL6:Lost3 ................................................................. 357
5.18.12.8 PTT_PL6:Lost3 state............................................................................................................. 357
5.18.12.8.1 State description .............................................................................................................. 357
5.18.12.8.2 Transition PTT_PL6:Lost3 to PTT_PL3:Lock_Acquired .................................................. 357
5.18.12.8.3 Transition PTT_PL6:Lost3 to PTT_PL7:Lost4 ................................................................. 357
5.18.12.9 PTT_PL7:Lost4 state............................................................................................................. 357
5.18.12.9.1 State description .............................................................................................................. 357
5.18.12.9.2 Transition PTT_PL7:Lost4 to PTT_PL3:Lock_Acquired .................................................. 358
5.18.12.9.3 Transition PTT_PL7:Lost4 to PTT_PL1:Acquire_Lock .................................................... 358
5.19 PAPTA (phy layer active phy transmitter adjustment) state machines............................................... 358
5.19.1 PAPTA state machines overview.................................................................................................. 358
5.19.2 SP transmitter additions for APTA ................................................................................................ 358
5.19.2.1 SP transmitter additions for APTA overview ........................................................................... 358
5.19.2.2 SP transmitter sends APTA binary primitives messages when messages are received ........ 359
5.19.2.3 APTA Coefficient limits............................................................................................................ 360
5.19.2.3.1 APTA Coefficient limits overview ....................................................................................... 360
5.19.2.3.2 APTA Coefficient request result of updated....................................................................... 360
5.19.2.3.2.1 APTA Coefficient request processing ......................................................................... 360
5.19.2.3.2.2 APTA Coefficient adjustment completes..................................................................... 360
5.19.2.3.3 APTA Coefficient request result of maximum .................................................................... 360
5.19.2.3.3.1 APTA Coefficient request processing ......................................................................... 360
5.19.2.3.3.2 APTA Coefficient adjustment completes..................................................................... 361
5.19.2.3.3.3 APTA No coefficient adjustment ................................................................................. 361
5.19.2.3.4 APTA Coefficient request result of minimum ..................................................................... 361
5.19.2.3.4.1 APTA Coefficient request processing ......................................................................... 361
5.19.2.3.4.2 APTA Coefficient adjustment completes..................................................................... 361
5.19.2.3.4.3 APTA No coefficient adjustment ................................................................................. 362
5.19.3 SP receiver additions for APTA .................................................................................................... 362
5.19.3.1 SP receiver additions for APTA overview................................................................................ 362
5.19.3.2 SP receiver messages when APTA binary primitives are received......................................... 362
5.19.3.3 SP receiver messages that tune the attached SP transmitter................................................. 363
5.19.4 PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine ..................................................................................................................................... 364
5.19.4.1 PAPTA_A_L state machine overview...................................................................................... 364
5.19.4.2 PAPTA_A_L0:Idle state........................................................................................................... 365
5.19.4.2.1 State description ................................................................................................................ 365
5.19.4.2.2 Transition PAPTA_A_L0:Idle to PAPTA_A_L1:Wait_for_Start .......................................... 366
5.19.4.3 PAPTA_A_L1:Wait_For_Start state ........................................................................................ 366
5.19.4.3.1 State description ................................................................................................................ 366
5.19.4.3.2 Transition PAPTA_A_L1:Wait_For_Start to PAPTA_A_L0:Idle......................................... 366
5.19.4.3.3 Transition PAPTA_A_L1:Wait_For_Start to PAPTA_A_L2:Adjust_Local_Transmitter...... 366
5.19.4.4 PAPTA_A_L2:Adjust_Local_Transmitter state........................................................................ 366
5.19.4.4.1 State description ................................................................................................................ 366
5.19.4.4.2 Transition PAPTA_A_L2:Adjust_Local_Transmitter to PAPTA_A_L0:Idle ........................ 366
5.19.4.4.3 Transition PAPTA_A_L2:Adjust_Local_Transmitter to PAPTA_A_L1:Wait_For_Start...... 366

xviii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

6 Link layer.................................................................................................................................................... 376


6.1 Link layer overview ............................................................................................................................... 376
6.2 Primitives .............................................................................................................................................. 376
6.2.1 Primitives overview ......................................................................................................................... 376
6.2.2 Primitive summary .......................................................................................................................... 377
6.2.3 Primitive encodings......................................................................................................................... 386
6.2.4 Primitive sequences........................................................................................................................ 391
6.2.4.1 Primitive sequences overview ................................................................................................... 391
6.2.4.2 Single primitive sequence ......................................................................................................... 391
6.2.4.3 Repeated primitive sequence.................................................................................................... 392
6.2.4.4 Continued primitive sequence ................................................................................................... 392
6.2.4.5 Extended primitive sequence .................................................................................................... 393
6.2.4.6 Triple primitive sequence .......................................................................................................... 394
6.2.4.7 Redundant primitive sequence.................................................................................................. 396
6.2.5 Deletable primitives......................................................................................................................... 398
6.2.5.1 ALIGN........................................................................................................................................ 398
6.2.5.2 NOTIFY ..................................................................................................................................... 400
6.2.5.2.1 NOTIFY overview ................................................................................................................ 400
6.2.5.2.2 NOTIFY (ENABLE SPINUP)................................................................................................ 400
6.2.5.2.3 NOTIFY (POWER LOSS EXPECTED)................................................................................ 401
6.2.5.3 OOB_IDLE ................................................................................................................................ 401
6.2.6 Primitives not specific to type of connections ................................................................................. 402
6.2.6.1 AIP (Arbitration in progress) ...................................................................................................... 402
6.2.6.2 BREAK ...................................................................................................................................... 402
6.2.6.3 BREAK_REPLY ........................................................................................................................ 402
6.2.6.4 BROADCAST ............................................................................................................................ 402
6.2.6.5 CLOSE ...................................................................................................................................... 403

Working Draft SAS Protocol Layer - 5 (SPL-5) xix


T10/BSR INCITS 554 Revision 11 18 January 2021

6.2.6.5.1 CLOSE overview ................................................................................................................. 403


6.2.6.5.2 CLOSE primitive parameter................................................................................................. 404
6.2.6.5.3 CLOSE primitive parameter fields when being set from an open address frame ................ 404
6.2.6.5.4 CLOSE primitive parameter fields when being set from a received CLOSE with a
primitive parameter........................................................................................................................ 405
6.2.6.6 EOAF (End of address frame)................................................................................................... 405
6.2.6.7 ERROR ..................................................................................................................................... 405
6.2.6.8 HARD_RESET .......................................................................................................................... 405
6.2.6.9 OPEN_ACCEPT........................................................................................................................ 405
6.2.6.10 OPEN_REJECT ...................................................................................................................... 405
6.2.6.10.1 OPEN_REJECT overview ................................................................................................. 405
6.2.6.10.2 OPEN_REJECT retry-class primitive parameter ............................................................... 408
6.2.6.11 PS_ACK .................................................................................................................................. 409
6.2.6.12 PS_NAK .................................................................................................................................. 409
6.2.6.13 PS_REQ.................................................................................................................................. 409
6.2.6.14 PWR_ACK............................................................................................................................... 409
6.2.6.15 PWR_DONE............................................................................................................................ 409
6.2.6.16 PWR_GRANT ......................................................................................................................... 410
6.2.6.17 PWR_REQ .............................................................................................................................. 410
6.2.6.18 SOAF (Start of address frame)................................................................................................ 410
6.2.6.19 TRAIN...................................................................................................................................... 410
6.2.6.20 TRAIN_DONE ......................................................................................................................... 410
6.2.7 Primitives used only inside SSP and SMP connections ................................................................. 410
6.2.7.1 ACK (Acknowledge) .................................................................................................................. 410
6.2.7.2 CREDIT_BLOCKED.................................................................................................................. 410
6.2.7.3 DONE ........................................................................................................................................ 410
6.2.7.4 EOF (End of frame) ................................................................................................................... 411
6.2.7.5 EXTEND_CONNECTION.......................................................................................................... 411
6.2.7.6 NAK (Negative acknowledgement) ........................................................................................... 411
6.2.7.7 RRDY (Receiver ready)............................................................................................................. 412
6.2.7.8 SOF (Start of frame).................................................................................................................. 412
6.2.8 Primitives used only inside STP connections and on SATA physical links..................................... 412
6.2.8.1 SATA_ERROR .......................................................................................................................... 412
6.2.8.2 SATA_PMACK, SATA_PMNAK, SATA_PMREQ_P, and SATA_PMREQ_S (Power
management acknowledgements and requests) ............................................................................. 413
6.2.8.3 SATA_HOLD and SATA_HOLDA (Hold and hold acknowledge).............................................. 413
6.2.8.4 SATA_R_RDY and SATA_X_RDY (Receiver ready and transmitter ready) ............................. 413
6.2.8.5 SATA_EOF (End of frame)........................................................................................................ 413
6.2.8.6 Other primitives used inside STP connections and on SATA physical links ............................. 413
6.3 Binary primitives ................................................................................................................................... 414
6.3.1 Binary primitives overview .............................................................................................................. 414
6.3.2 Binary primitive codes..................................................................................................................... 417
6.3.3 Binary primitive sequences ............................................................................................................. 418
6.3.3.1 Binary primitive sequences overview ........................................................................................ 418
6.3.3.2 Single binary primitive sequence............................................................................................... 418
6.3.4 Deletable binary primitives.............................................................................................................. 419
6.3.4.1 APTA_ADJUST ......................................................................................................................... 419
6.3.4.2 APTA_COEFFICIENT_1 ........................................................................................................... 419
6.3.4.3 APTA_COEFFICIENT_2 ........................................................................................................... 420
6.3.4.4 APTA_COEFFICIENT_3 ........................................................................................................... 420
6.3.4.5 APTA_COEFFICIENT_1_2 ....................................................................................................... 421
6.3.4.6 APTA_COEFFICIENT_2_3 ....................................................................................................... 421
6.3.5 Binary primitives used only inside SSP and STP connections ....................................................... 422
6.3.5.1 B_EOF (binary end of frame) .................................................................................................... 422
6.4 Extended binary primitives ................................................................................................................... 423
6.4.1 Deletable extended binary primitives .............................................................................................. 423
6.4.2 Extended binary primitive codes ..................................................................................................... 425

xx Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.4.3 Extended binary primitive sequences ............................................................................................. 426


6.4.3.1 Extended binary primitive sequences overview ........................................................................ 426
6.4.3.2 Single extended binary primitive sequence............................................................................... 426
6.4.4 Deletable extended binary primitives .............................................................................................. 426
6.4.4.1 PACKET_SYNC ........................................................................................................................ 426
6.4.4.2 PACKET_SYNC_LOST............................................................................................................. 426
6.4.4.3 LINK_RATE_MANAGEMENT ................................................................................................... 426
6.4.5 Extended binary primitives not specific to type of connections....................................................... 427
6.4.5.1 END_TRAIN .............................................................................................................................. 427
6.5 Physical link rate tolerance management............................................................................................. 427
6.5.1 Physical link rate tolerance management overview ........................................................................ 427
6.5.2 Phys originating dwords while in the SAS dword mode .................................................................. 430
6.5.3 Phys originating SPL packets while in the SAS packet mode ........................................................ 431
6.5.4 Expander phys forwarding dwords and deletable extended binary primitives ................................ 431
6.6 Idle physical links.................................................................................................................................. 432
6.7 CRC...................................................................................................................................................... 432
6.7.1 CRC overview ................................................................................................................................. 432
6.7.2 CRC generation .............................................................................................................................. 434
6.7.3 CRC checking ................................................................................................................................. 436
6.8 Scrambling............................................................................................................................................ 437
6.8.1 Scrambling overview....................................................................................................................... 437
6.8.2 Scrambling while in the SAS dword mode ...................................................................................... 437
6.8.3 Scrambling while in the SAS packet mode ..................................................................................... 439
6.9 Bit order of CRC and scrambler ........................................................................................................... 440
6.9.1 Bit order of CRC and scrambler while in the SAS dword mode ...................................................... 440
6.9.2 Bit order of CRC and scrambler while in the SAS packet mode ..................................................... 444
6.10 Address frames .................................................................................................................................. 445
6.10.1 Address frames overview.............................................................................................................. 445
6.10.2 IDENTIFY address frame.............................................................................................................. 447
6.10.3 OPEN address frame.................................................................................................................... 451
6.11 Link reset sequence ........................................................................................................................... 455
6.11.1 Link reset sequence overview....................................................................................................... 455
6.11.2 Expander device handling of link reset sequences....................................................................... 458
6.12 SL_IR (link layer identification and hard reset) state machines.......................................................... 458
6.12.1 SL_IR state machines overview.................................................................................................... 458
6.12.2 SL_IR transmitter and receiver ..................................................................................................... 460
6.12.3 SL_IR_TIR (transmit IDENTIFY or HARD_RESET) state machine .............................................. 460
6.12.3.1 SL_IR_TIR state machine overview ........................................................................................ 460
6.12.3.2 SL_IR_TIR1:Idle state ............................................................................................................. 461
6.12.3.2.1 State description ................................................................................................................ 461
6.12.3.2.2 Transition SL_IR_TIR1:Idle to SL_IR_TIR2:Transmit_Identify .......................................... 461
6.12.3.2.3 Transition SL_IR_TIR1:Idle to SL_IR_TIR3:Transmit_Hard_Reset .................................. 461
6.12.3.3 SL_IR_TIR2:Transmit_Identify state ....................................................................................... 461
6.12.3.3.1 State description ................................................................................................................ 461
6.12.3.3.2 Transition SL_IR_TIR2:Transmit_Identify to SL_IR_TIR4:Completed .............................. 461
6.12.3.4 SL_IR_TIR3:Transmit_Hard_Reset state................................................................................ 461
6.12.3.4.1 State description ................................................................................................................ 461
6.12.3.4.2 Transition SL_IR_TIR3:Transmit_Hard_Reset to SL_IR_TIR4:Completed ....................... 461
6.12.3.5 SL_IR_TIR4:Completed state ................................................................................................. 461
6.12.4 SL_IR_RIF (receive IDENTIFY address frame) state machine .................................................... 462
6.12.4.1 SL_IR_RIF state machine overview ........................................................................................ 462
6.12.4.2 SL_IR_RIF1:Idle state ............................................................................................................. 462
6.12.4.2.1 State description ................................................................................................................ 462
6.12.4.2.2 Transition SL_IR_RIF1:Idle to SL_IR_RIF2:Receive_Identify_Frame............................... 462
6.12.4.3 SL_IR_RIF2:Receive_Identify_Frame state............................................................................ 462
6.12.4.3.1 State description ................................................................................................................ 462
6.12.4.3.2 Transition SL_IR_RIF2:Receive_Identify_Frame to SL_IR_RIF3:Completed ................... 463

Working Draft SAS Protocol Layer - 5 (SPL-5) xxi


T10/BSR INCITS 554 Revision 11 18 January 2021

6.12.4.4 SL_IR_RIF3:Completed state ................................................................................................. 463


6.12.5 SL_IR_IRC (identification and hard reset control) state machine ................................................. 463
6.12.5.1 SL_IR_IRC state machine overview........................................................................................ 463
6.12.5.2 SL_IR_IRC1:Idle state............................................................................................................. 463
6.12.5.2.1 State description ................................................................................................................ 463
6.12.5.2.2 Transition SL_IR_IRC1:Idle to SL_IR_IRC2:Wait.............................................................. 463
6.12.5.3 SL_IR_IRC2:Wait state ........................................................................................................... 463
6.12.5.3.1 State description ................................................................................................................ 463
6.12.5.3.2 Transition SL_IR_IRC2:Wait to SL_IR_IRC3:Completed .................................................. 464
6.12.5.4 SL_IR_IRC3:Completed state ................................................................................................. 464
6.13 Entering a low phy power condition.................................................................................................... 465
6.14 Power control and SL_P (link layer power control) state machines ................................................... 465
6.14.1 Power source device..................................................................................................................... 465
6.14.2 Power consumer device................................................................................................................ 466
6.14.3 NOTIFY (ENABLE SPINUP) usage .............................................................................................. 466
6.14.4 SL_P_S (link layer power source device) state machine.............................................................. 467
6.14.4.1 SL_P_S state machine overview............................................................................................. 467
6.14.4.2 SL_P_S transmitter and SL_P_S receiver .............................................................................. 468
6.14.4.3 SL_P_S_1:Idle state................................................................................................................ 469
6.14.4.3.1 State description ................................................................................................................ 469
6.14.4.3.2 Transition SL_P_S_1:Idle to SL_P_S_2:Wait_Grant......................................................... 469
6.14.4.4 SL_P_S_2:Wait_Grant state ................................................................................................... 469
6.14.4.4.1 State description ................................................................................................................ 469
6.14.4.4.2 Transition SL_P_S_2:Wait_Grant to SL_P_S_1:Idle......................................................... 470
6.14.4.4.3 Transition SL_P_S_2:Wait_Grant to SL_P_S_3:Wait_Done............................................. 470
6.14.4.5 SL_P_S_3:Wait_Done state.................................................................................................... 470
6.14.4.5.1 State description ................................................................................................................ 470
6.14.4.5.2 Transition SL_P_S_3:Wait_Done to SL_P_S_1:Idle ......................................................... 471
6.14.5 SL_P_C (link layer power consumer device) state machine......................................................... 471
6.14.5.1 SL_P_C state machine overview ............................................................................................ 471
6.14.5.2 SL_P_C receiver ..................................................................................................................... 474
6.14.5.3 SL_P_C_1:Idle state ............................................................................................................... 474
6.14.5.3.1 State description ................................................................................................................ 474
6.14.5.3.2 Transition SL_P_C_1:Idle to SL_P_C_2:Request_Power................................................. 474
6.14.5.4 SL_P_C_2:Request_Power state............................................................................................ 474
6.14.5.4.1 State description ................................................................................................................ 474
6.14.5.4.2 Transition SL_P_C_2:Request_Power to SL_P_C_1:Idle................................................. 475
6.14.5.4.3 Transition SL_P_C_2:Request_Power to SL_P_C_3:Wait_Grant .................................... 475
6.14.5.4.4 Transition SL_P_C_2:Request_Power to SL_P_C_4:Wait_Done ..................................... 475
6.14.5.5 SL_P_C_3:Wait_Grant state ................................................................................................... 475
6.14.5.5.1 State description ................................................................................................................ 475
6.14.5.5.2 Transition SL_P_C_3:Wait_Grant to SL_P_C_1:Idle ........................................................ 476
6.14.5.5.3 Transition SL_P_C_3:Wait_Grant to SL_P_C_4:Wait_Done ............................................ 476
6.14.5.6 SL_P_C_4:Wait_Done state ................................................................................................... 476
6.14.5.6.1 State description ................................................................................................................ 476
6.14.5.6.2 Transition SL_P_C_4:Wait_Done to SL_P_C_1:Idle......................................................... 476
6.15 SAS domain changes (Broadcast (Change) usage)........................................................................... 477
6.16 Connections........................................................................................................................................ 478
6.16.1 Connections overview................................................................................................................... 478
6.16.2 Opening a connection ................................................................................................................... 478
6.16.2.1 Connection request ................................................................................................................. 478
6.16.2.2 Results of a connection request .............................................................................................. 480
6.16.3 SMP frame priority ........................................................................................................................ 480
6.16.4 Arbitration fairness ........................................................................................................................ 480
6.16.5 Arbitration inside an expander device........................................................................................... 482
6.16.5.1 Expander logical phy arbitration requirements ........................................................................ 482
6.16.5.2 ECM arbitration requirements ................................................................................................. 482

xxii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.16.5.2.1 ECM arbitration requirements overview............................................................................. 482


6.16.5.2.2 Arbitrating confirmations .................................................................................................... 484
6.16.5.2.3 Arb Won confirmation ........................................................................................................ 484
6.16.5.2.4 Arb Lost confirmation......................................................................................................... 485
6.16.5.2.5 Arb Reject confirmation ..................................................................................................... 485
6.16.5.3 Arbitration status ..................................................................................................................... 486
6.16.5.4 Partial Pathway Timeout timer ................................................................................................ 486
6.16.5.5 Pathway recovery.................................................................................................................... 487
6.16.6 BREAK handling ........................................................................................................................... 487
6.16.7 Aborting a connection request ...................................................................................................... 488
6.16.8 Expander device request for an SSP connection close ................................................................ 490
6.16.9 Closing a connection..................................................................................................................... 490
6.16.10 Expander device closing a connection........................................................................................ 491
6.16.11 Breaking a connection ................................................................................................................ 492
6.17 Rate matching .................................................................................................................................... 493
6.17.1 Rate matching overview................................................................................................................ 493
6.17.2 Rate matching while in the SAS dword mode............................................................................... 493
6.17.3 Rate matching while in the SAS packet mode .............................................................................. 495
6.18 SL (link layer for SAS logical phys) state machines ........................................................................... 497
6.18.1 SL state machines overview ......................................................................................................... 497
6.18.2 SL transmitter and receiver........................................................................................................... 500
6.18.3 SL_RA (receive OPEN address frame) state machine ................................................................. 502
6.18.4 SL_CC (connection control) state machine .................................................................................. 502
6.18.4.1 SL_CC state machine overview .............................................................................................. 502
6.18.4.2 SL_CC0:Idle state ................................................................................................................... 504
6.18.4.2.1 State description ................................................................................................................ 504
6.18.4.2.2 Transition SL_CC0:Idle to SL_CC1:ArbSel ....................................................................... 506
6.18.4.2.3 Transition SL_CC0:Idle to SL_CC2:Selected .................................................................... 506
6.18.4.2.4 Transition SL_CC0:Idle to SL_CC8:PS_Request.............................................................. 507
6.18.4.2.5 Transition SL_CC0:Idle to SL_CC9:PS_Quiet................................................................... 507
6.18.4.3 SL_CC1:ArbSel state .............................................................................................................. 507
6.18.4.3.1 State description ................................................................................................................ 507
6.18.4.3.2 Transition SL_CC1:ArbSel to SL_CC0:Idle ....................................................................... 509
6.18.4.3.3 Transition SL_CC1:ArbSel to SL_CC2:Selected ............................................................... 509
6.18.4.3.4 Transition SL_CC1:ArbSel to SL_CC3:Connected............................................................ 510
6.18.4.3.5 Transition SL_CC1:ArbSel to SL_CC5:BreakWait ............................................................ 510
6.18.4.3.6 Transition SL_CC1:ArbSel to SL_CC6:Break.................................................................... 511
6.18.4.4 SL_CC2:Selected state ........................................................................................................... 511
6.18.4.4.1 State description ................................................................................................................ 511
6.18.4.4.2 Transition SL_CC2:Selected to SL_CC0:Idle .................................................................... 512
6.18.4.4.3 Transition SL_CC2:Selected to SL_CC3:Connected ........................................................ 512
6.18.4.4.4 Transition SL_CC2:Selected to SL_CC5:BreakWait ......................................................... 512
6.18.4.4.5 Transition SL_CC2:Selected to SL_CC6:Break ................................................................ 512
6.18.4.5 SL_CC3:Connected state........................................................................................................ 512
6.18.4.5.1 State description ................................................................................................................ 512
6.18.4.5.2 Transition SL_CC3:Connected to SL_CC4:DisconnectWait ............................................. 513
6.18.4.5.3 Transition SL_CC3:Connected to SL_CC5:BreakWait ...................................................... 513
6.18.4.5.4 Transition SL_CC3:Connected to SL_CC6:Break ............................................................. 513
6.18.4.5.5 Transition SL_CC3:Connected to SL_CC7:CloseSTP ...................................................... 514
6.18.4.6 SL_CC4:DisconnectWait state ................................................................................................ 514
6.18.4.6.1 State description ................................................................................................................ 514
6.18.4.6.2 Transition SL_CC4:DisconnectWait to SL_CC0:Idle ......................................................... 514
6.18.4.6.3 Transition SL_CC4:DisconnectWait to SL_CC5:BreakWait .............................................. 514
6.18.4.6.4 Transition SL_CC4:DisconnectWait to SL_CC6:Break ..................................................... 514
6.18.4.7 SL_CC5:BreakWait state ........................................................................................................ 515
6.18.4.7.1 State description ................................................................................................................ 515
6.18.4.7.2 Transition SL_CC5:BreakWait to SL_CC0:Idle ................................................................. 515

Working Draft SAS Protocol Layer - 5 (SPL-5) xxiii


T10/BSR INCITS 554 Revision 11 18 January 2021

6.18.4.8 SL_CC6:Break state................................................................................................................ 515


6.18.4.8.1 State description ................................................................................................................ 515
6.18.4.8.2 Transition SL_CC6:Break to SL_CC0:Idle......................................................................... 516
6.18.4.9 SL_CC7:CloseSTP state......................................................................................................... 516
6.18.4.9.1 State description ................................................................................................................ 516
6.18.4.9.2 Transition SL_CC7:CloseSTP to SL_CC0:Idle.................................................................. 516
6.18.4.10 SL_CC8:PS_Request state................................................................................................... 516
6.18.4.10.1 State description .............................................................................................................. 516
6.18.4.10.2 Transition SL_CC8:PS_Request to SL_CC9:PS_Quiet .................................................. 517
6.18.4.10.3 Transition SL_CC8:PS_Request to SL_CC0:Idle............................................................ 517
6.18.4.10.4 Transition SL_CC8:PS_Request to SL_CC2:Selected.................................................... 517
6.18.4.10.5 Transition SL_CC8:PS_Request to SL_CC6:Break ........................................................ 517
6.18.4.11 SL_CC9:PS_Quiet state........................................................................................................ 518
6.18.4.11.1 State description .............................................................................................................. 518
6.18.4.11.2 Transition SL_CC9:PS_Quiet to SL_CC0:Idle................................................................. 518
6.18.4.11.3 Transition SL_CC9:PS_Quiet to SL_CC1:ArbSel............................................................ 518
6.19 XL (link layer for expander logical phys) state machine ..................................................................... 519
6.19.1 XL state machine overview ........................................................................................................... 519
6.19.2 XL transmitter and receiver........................................................................................................... 525
6.19.3 XL0:Idle state ................................................................................................................................ 527
6.19.3.1 State description...................................................................................................................... 527
6.19.3.2 Transition XL0:Idle to XL1:Request_Path ............................................................................... 528
6.19.3.3 Transition XL0:Idle to XL5:Forward_Open .............................................................................. 529
6.19.3.4 Transition XL0:Idle to XL11:PS_Request................................................................................ 529
6.19.3.5 Transition XL0:Idle to XL12:PS_Quiet..................................................................................... 530
6.19.4 XL1:Request_Path state ............................................................................................................... 530
6.19.4.1 State description...................................................................................................................... 530
6.19.4.2 Transition XL1:Request_Path to XL0:Idle ............................................................................... 531
6.19.4.3 Transition XL1:Request_Path to XL2:Request_Open............................................................. 531
6.19.4.4 Transition XL1:Request_Path to XL5:Forward_Open ............................................................. 531
6.19.4.5 Transition XL1:Request_Path to XL9:Break............................................................................ 532
6.19.5 XL2:Request_Open state.............................................................................................................. 532
6.19.5.1 State description...................................................................................................................... 532
6.19.5.2 Transition XL2:Request_Open to XL3:Open_Confirm_Wait ................................................... 532
6.19.6 XL3:Open_Confirm_Wait state ..................................................................................................... 533
6.19.6.1 State description...................................................................................................................... 533
6.19.6.2 Transition XL3:Open_Confirm_Wait to XL0:Idle ..................................................................... 533
6.19.6.3 Transition XL3:Open_Confirm_Wait to XL1:Request_Path .................................................... 534
6.19.6.4 Transition XL3:Open_Confirm_Wait to XL5:Forward_Open ................................................... 534
6.19.6.5 Transition XL3:Open_Confirm_Wait to XL7:Connected .......................................................... 534
6.19.6.6 Transition XL3:Open_Confirm_Wait to XL9:Break.................................................................. 534
6.19.6.7 Transition XL3:Open_Confirm_Wait to XL10:Break_Wait....................................................... 534
6.19.7 XL5:Forward_Open state.............................................................................................................. 534
6.19.7.1 State description...................................................................................................................... 534
6.19.7.2 Transition XL5:Forward_Open to XL6:Open_Response_Wait................................................ 535
6.19.8 XL6:Open_Response_Wait state.................................................................................................. 535
6.19.8.1 State description...................................................................................................................... 535
6.19.8.2 Transition XL6:Open_Response_Wait to XL0:Idle.................................................................. 538
6.19.8.3 Transition XL6:Open_Response_Wait to XL1:Request_Path................................................. 538
6.19.8.4 Transition XL6:Open_Response_Wait to XL2:Request_Open ............................................... 538
6.19.8.5 Transition XL6:Open_Response_Wait to XL7:Connected ...................................................... 538
6.19.8.6 Transition XL6:Open_Response_Wait to XL9:Break .............................................................. 538
6.19.8.7 Transition XL6:Open_Response_Wait to XL10:Break_Wait ................................................... 538
6.19.9 XL7:Connected state .................................................................................................................... 538
6.19.9.1 State description...................................................................................................................... 538
6.19.9.2 Transition XL7:Connected to XL8:Close_Wait ........................................................................ 540
6.19.9.3 Transition XL7:Connected to XL9:Break ................................................................................. 540

xxiv Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.19.9.4 Transition XL7:Connected to XL10:Break_Wait...................................................................... 540


6.19.10 XL8:Close_Wait state ................................................................................................................. 540
6.19.10.1 State description.................................................................................................................... 540
6.19.10.2 Transition XL8:Close_Wait to XL0:Idle.................................................................................. 543
6.19.10.3 Transition XL8:Close_Wait to XL9:Break .............................................................................. 543
6.19.10.4 Transition XL8:Close_Wait to XL10:Break_Wait................................................................... 543
6.19.11 XL9:Break state .......................................................................................................................... 543
6.19.11.1 State description.................................................................................................................... 543
6.19.11.2 Transition XL9:Break to XL0:Idle........................................................................................... 544
6.19.12 XL10:Break_Wait state ............................................................................................................... 544
6.19.12.1 State description.................................................................................................................... 544
6.19.12.2 Transition XL10:Break_Wait to XL0:Idle ............................................................................... 544
6.19.13 XL11:PS_Request state.............................................................................................................. 544
6.19.13.1 State description.................................................................................................................... 544
6.19.13.2 Transition XL11:PS_Request to XL12:PS_Quiet .................................................................. 545
6.19.13.3 Transition XL11:PS_Request to XL0:Idle.............................................................................. 545
6.19.13.4 Transition XL11:PS_Request to XL1:Request_Path............................................................. 545
6.19.13.5 Transition XL11:PS_Request to XL9:Break .......................................................................... 546
6.19.14 XL12:PS_Quiet state .................................................................................................................. 546
6.19.14.1 State description.................................................................................................................... 546
6.19.14.2 Transition XL12:PS_Quiet to XL0:Idle................................................................................... 546
6.20 SSP link layer ..................................................................................................................................... 546
6.20.1 Opening an SSP connection......................................................................................................... 546
6.20.2 Full duplex..................................................................................................................................... 547
6.20.3 SSP frame transmission and reception ........................................................................................ 547
6.20.3.1 SSP frame transmission and reception overview.................................................................... 547
6.20.3.2 SSP frame transmission and reception while in the SAS dword mode ................................... 548
6.20.3.3 SSP frame transmission and reception while in SAS packet mode ........................................ 549
6.20.3.4 SSP frame and SMP frame transmission and reception while in SAS packet mode .............. 550
6.20.4 SSP flow control............................................................................................................................ 551
6.20.5 Extending an SSP connection with persistent connections .......................................................... 552
6.20.6 Interlocked frames ........................................................................................................................ 552
6.20.7 Breaking an SSP connection ........................................................................................................ 554
6.20.8 Closing an SSP connection .......................................................................................................... 554
6.20.9 SSP (link layer for SSP phys) state machines .............................................................................. 556
6.20.9.1 SSP state machines overview................................................................................................. 556
6.20.9.2 SSP transmitter and receiver .................................................................................................. 559
6.20.9.3 SSP_TIM (transmit interlocked frame monitor) state machine................................................ 561
6.20.9.4 SSP_TCM (transmit frame credit monitor) state machine ....................................................... 562
6.20.9.5 SSP_D (DONE control) state machine.................................................................................... 562
6.20.9.6 SSP_TF (transmit frame control) state machine ..................................................................... 564
6.20.9.6.1 SSP_TF state machine overview....................................................................................... 564
6.20.9.6.2 SSP_TF1:Connected_Idle state ........................................................................................ 564
6.20.9.6.2.1 State description ......................................................................................................... 564
6.20.9.6.2.2 Transition SSP_TF1:Connected_Idle to SSP_TF2:Tx_Wait ....................................... 564
6.20.9.6.2.3 Transition SSP_TF1:Connected_Idle to SSP_TF4:Transmit_DONE.......................... 564
6.20.9.6.3 SSP_TF2:Tx_Wait state .................................................................................................... 565
6.20.9.6.3.1 State description ......................................................................................................... 565
6.20.9.6.3.2 Transition SSP_TF2:Tx_Wait to SSP_TF3:Transmit_Frame...................................... 565
6.20.9.6.3.3 Transition SSP_TF2:Tx_Wait to SSP_TF4:Transmit_DONE...................................... 565
6.20.9.6.4 SSP_TF3:Transmit_Frame state ....................................................................................... 566
6.20.9.6.4.1 State description ......................................................................................................... 566
6.20.9.6.4.2 Transition SSP_TF3:Transmit_Frame to SSP_TF1:Connected_Idle.......................... 566
6.20.9.6.5 SSP_TF4:Transmit_DONE state ....................................................................................... 566
6.20.9.7 SSP_RF (receive frame control) state machine ...................................................................... 566
6.20.9.8 SSP_RCM (receive frame credit monitor) state machine........................................................ 567
6.20.9.9 SSP_RIM (receive interlocked frame monitor) state machine................................................. 568

Working Draft SAS Protocol Layer - 5 (SPL-5) xxv


T10/BSR INCITS 554 Revision 11 18 January 2021

6.20.9.10 SSP_TC (transmit credit control) state machine ................................................................... 569


6.20.9.11 SSP_TAN (transmit ACK/NAK control) state machine .......................................................... 569
6.20.9.12 SSP_EM (establish and manage persistent connection) state machine............................... 569
6.20.9.12.1 SSP_EM state machine overview.................................................................................... 569
6.20.9.12.2 SSP_EM1:Establish state................................................................................................ 570
6.20.9.12.3 Transition SSP_EM1:Establish to SSP_EM2:Manage .................................................... 570
6.20.9.12.4 SSP_EM2:Manage .......................................................................................................... 570
6.20.9.12.5 Transition SSP_EM2:Manage to SSP_EM1:Establish .................................................... 571
6.21 STP link layer ..................................................................................................................................... 571
6.21.1 STP frame transmission and reception overview.......................................................................... 571
6.21.2 STP frame transmission and reception while in the SAS dword mode......................................... 572
6.21.3 STP frame transmission and reception while in the SAS packet mode ........................................ 573
6.21.4 STP flow control............................................................................................................................ 574
6.21.4.1 STP flow control overview ....................................................................................................... 574
6.21.4.2 SATA frame buffering.............................................................................................................. 574
6.21.4.3 STP flow control buffer size..................................................................................................... 575
6.21.4.4 STP flow control example........................................................................................................ 577
6.21.4.5 STP insufficient buffer support ................................................................................................ 579
6.21.5 Continued primitive sequence....................................................................................................... 579
6.21.6 Affiliations...................................................................................................................................... 580
6.21.7 Opening an STP connection ......................................................................................................... 582
6.21.8 Closing an STP connection........................................................................................................... 585
6.21.9 STP connection management examples ...................................................................................... 585
6.21.10 STP (link layer for STP phys) state machines ............................................................................ 588
6.21.11 SMP target port support.............................................................................................................. 588
6.22 SMP link layer..................................................................................................................................... 588
6.22.1 SMP frame transmission and reception ........................................................................................ 588
6.22.1.1 SMP frame transmission and reception while in SAS dword mode ........................................ 588
6.22.2 SMP frame transmission and reception while in the SAS packet mode ....................................... 589
6.22.3 SMP flow control ........................................................................................................................... 590
6.22.4 Opening an SMP connection ........................................................................................................ 590
6.22.5 Closing an SMP connection.......................................................................................................... 590
6.22.6 SMP (link layer for SMP phys) state machines............................................................................. 590
6.22.6.1 SMP state machines overview ................................................................................................ 590
6.22.6.2 SMP transmitter and receiver.................................................................................................. 590
6.22.6.3 SMP_IP (link layer for SMP initiator phys) state machine ....................................................... 591
6.22.6.3.1 SMP_IP state machine overview ....................................................................................... 591
6.22.6.3.2 SMP_IP1:Idle state ............................................................................................................ 592
6.22.6.3.2.1 State description ......................................................................................................... 592
6.22.6.3.2.2 Transition SMP_IP1:Idle to SMP_IP2:Transmit_Frame .............................................. 593
6.22.6.3.3 SMP_IP2:Transmit_Frame state ....................................................................................... 593
6.22.6.3.3.1 State description ......................................................................................................... 593
6.22.6.3.3.2 Transition SMP_IP2:Transmit_Frame to SMP_IP3:Receive_Frame .......................... 593
6.22.6.3.4 SMP_IP3:Receive_Frame state ........................................................................................ 593
6.22.6.4 SMP_TP (link layer for SMP target phys) state machine ........................................................ 594
6.22.6.4.1 SMP_TP state machine overview...................................................................................... 594
6.22.6.4.2 SMP_TP1:Receive_Frame state ....................................................................................... 595
6.22.6.4.2.1 State description ......................................................................................................... 595
6.22.6.4.2.2 Transition SMP_TP1:Receive_Frame to SMP_TP2:Transmit_Frame ........................ 595
6.22.6.4.3 SMP_TP2:Transmit_Frame state ...................................................................................... 595

7 Port layer.................................................................................................................................................... 596


7.1 Port layer overview ............................................................................................................................... 596
7.2 Port layer state machines ..................................................................................................................... 596
7.2.1 Port layer state machines overview ................................................................................................ 596
7.2.2 PL_OC (port layer overall control) state machine ........................................................................... 598
7.2.2.1 PL_OC state machine overview ................................................................................................ 598

xxvi Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

7.2.2.2 PL_OC1:Idle state ..................................................................................................................... 600


7.2.2.2.1 PL_OC1:Idle state description ............................................................................................. 600
7.2.2.2.2 Transition PL_OC1:Idle to PL_OC2:Overall_Control........................................................... 601
7.2.2.3 PL_OC2:Overall_Control state.................................................................................................. 601
7.2.2.3.1 PL_OC2:Overall_Control state overview ............................................................................. 601
7.2.2.3.2 PL_OC2: Non-connection specific confirmations and requests........................................... 601
7.2.2.3.2.1 PL_OC2: Transmit Frame request ................................................................................ 601
7.2.2.3.2.2 PL_OC2: HARD_RESET Received confirmation.......................................................... 602
7.2.2.3.2.3 PL_OC2: NOTIFY Received (Power Loss Expected) confirmation .............................. 602
7.2.2.3.2.4 PL_OC2: Phy Disabled confirmation............................................................................. 602
7.2.2.3.2.5 PL_OC2: Start I_T Nexus Loss Timer request.............................................................. 603
7.2.2.3.3 PL_OC2:Overall_Control state establishing connections .................................................... 603
7.2.2.3.4 PL_OC2:Overall_Control state connection established....................................................... 607
7.2.2.3.5 PL_OC2:Overall_Control state unable to establish a connection — Unable To
Connect message.......................................................................................................................... 607
7.2.2.3.6 PL_OC2:Overall_Control state unable to establish a connection — Unable To
Connect message - Retry Open message processed as an Unable To Connect message ......... 608
7.2.2.3.7 PL_OC2:Overall_Control state unable to establish a connection — I_T Nexus
Loss timer expires ......................................................................................................................... 608
7.2.2.3.8 PL_OC2:Overall_Control state - I_T nexus loss event ........................................................ 608
7.2.2.3.9 PL_OC2:Overall_Control state connection management.................................................... 608
7.2.2.3.10 PL_OC2:Overall_Control state frame transmission ........................................................... 610
7.2.2.3.11 PL_OC2:Overall_Control state frame transmission cancellations ..................................... 611
7.2.2.3.12 Transition PL_OC2:Overall_Control to PL_OC1:Idle......................................................... 611
7.2.3 PL_PM (port layer phy manager) state machine ............................................................................ 612
7.2.3.1 PL_PM state machine overview ................................................................................................ 612
7.2.3.2 PL_PM1:Idle state ..................................................................................................................... 615
7.2.3.2.1 PL_PM1:Idle state description ............................................................................................. 615
7.2.3.2.2 Transition PL_PM1:Idle to PL_PM2:Req_Wait.................................................................... 615
7.2.3.2.3 Transition PL_PM1:Idle to PL_PM3:Connected .................................................................. 615
7.2.3.3 PL_PM2:Req_Wait state ........................................................................................................... 615
7.2.3.3.1 PL_PM2:Req_Wait state overview ...................................................................................... 615
7.2.3.3.2 PL_PM2:Req_Wait establishing a connection..................................................................... 615
7.2.3.3.3 PL_PM2:Req_Wait connection established......................................................................... 616
7.2.3.3.4 PL_PM2:Req_Wait unable to establish a connection.......................................................... 616
7.2.3.3.5 PL_PM2:Req_Wait connection management...................................................................... 618
7.2.3.3.6 Transition PL_PM2:Req_Wait to PL_PM1:Idle.................................................................... 618
7.2.3.3.7 Transition PL_PM2:Req_Wait to PL_PM3:Connected ........................................................ 618
7.2.3.3.8 Transition PL_PM2:Req_Wait to PL_PM4:Wait_For_Close................................................ 618
7.2.3.4 PL_PM3:Connected state ......................................................................................................... 618
7.2.3.4.1 PL_PM3:Connected state description ................................................................................. 618
7.2.3.4.2 Transition PL_PM3:Connected to PL_PM1:Idle .................................................................. 622
7.2.3.5 PL_PM4:Wait_For_Close state ................................................................................................. 622
7.2.3.5.1 PL_PM4:Wait_For_Close state description ......................................................................... 622
7.2.3.5.2 Transition PL_PM4:Wait_For_Close to PL_PM1:Idle.......................................................... 623

8 Transport layer ........................................................................................................................................... 624


8.1 Transport layer overview ...................................................................................................................... 624
8.2 SSP transport layer .............................................................................................................................. 625
8.2.1 SSP frame format ........................................................................................................................... 625
8.2.2 Information units ............................................................................................................................. 629
8.2.2.1 COMMAND frame - Command information unit........................................................................ 629
8.2.2.2 TASK frame - Task Management Function information unit ..................................................... 630
8.2.2.3 XFER_RDY frame - Transfer Ready information unit ............................................................... 633
8.2.2.4 DATA frame - Data information unit .......................................................................................... 634
8.2.2.5 RESPONSE frame - Response information unit ....................................................................... 636
8.2.2.5.1 RESPONSE frame - Response information unit overview .................................................. 636

Working Draft SAS Protocol Layer - 5 (SPL-5) xxvii


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.2.5.2 Response information unit - NO_DATA format.................................................................... 637


8.2.2.5.3 Response information unit - RESPONSE_DATA format ..................................................... 637
8.2.2.5.4 Response information unit - SENSE_DATA format............................................................. 638
8.2.3 Sequences of SSP frames.............................................................................................................. 639
8.2.3.1 Sequences of SSP frames overview ......................................................................................... 639
8.2.3.2 Task management function sequence of SSP frames .............................................................. 640
8.2.3.3 Non-data command sequence of SSP frames .......................................................................... 640
8.2.3.4 Write command sequence of SSP frames ................................................................................ 641
8.2.3.5 Read command sequence of SSP frames ................................................................................ 641
8.2.3.6 Bidirectional command sequence of SSP frames ..................................................................... 642
8.2.4 SSP transport layer handling of link layer errors............................................................................. 642
8.2.4.1 SSP transport layer handling of link layer errors overview........................................................ 642
8.2.4.2 COMMAND frame - handling of link layer errors ....................................................................... 643
8.2.4.3 TASK frame - handling of link layer errors ................................................................................ 644
8.2.4.4 XFER_RDY frame - handling of link layer errors....................................................................... 644
8.2.4.4.1 XFER_RDY frame overview ................................................................................................ 644
8.2.4.4.2 XFER_RDY frame with transport layer retries enabled ....................................................... 644
8.2.4.4.3 XFER_RDY frame with transport layer retries disabled....................................................... 645
8.2.4.5 Read DATA frame - handling of link layer errors....................................................................... 645
8.2.4.5.1 Read DATA frame overview ................................................................................................ 645
8.2.4.5.2 Read DATA frame with transport layer retries enabled ....................................................... 645
8.2.4.5.3 Read DATA frame with transport layer retries disabled....................................................... 646
8.2.4.6 Write DATA frame - handling of link layer errors ....................................................................... 646
8.2.4.6.1 Write DATA frame overview ................................................................................................ 646
8.2.4.6.2 Write DATA frame with transport layer retries enabled ....................................................... 646
8.2.4.6.3 Write DATA frame with transport layer retries disabled ....................................................... 647
8.2.4.7 RESPONSE frame - handling of link layer errors...................................................................... 647
8.2.5 SSP transport layer error handling summary.................................................................................. 647
8.2.5.1 SSP transport layer error handling summary introduction......................................................... 647
8.2.5.2 SSP initiator port transport layer error handling summary ........................................................ 647
8.2.5.3 SSP target port transport layer error handling summary........................................................... 648
8.2.6 ST (transport layer for SSP ports) state machines ......................................................................... 650
8.2.6.1 ST state machines overview ..................................................................................................... 650
8.2.6.2 ST_I (transport layer for SSP initiator ports) state machines .................................................... 650
8.2.6.2.1 ST_I state machines overview............................................................................................. 650
8.2.6.2.2 ST_IFR (initiator frame router) state machine ..................................................................... 652
8.2.6.2.2.1 ST_IFR state machine overview ................................................................................... 652
8.2.6.2.2.2 Processing transport protocol service requests ............................................................ 652
8.2.6.2.2.3 Processing Frame Received confirmations................................................................... 653
8.2.6.2.2.4 Processing Transmission Complete and Reception Complete messages.................... 654
8.2.6.2.2.5 Processing miscellaneous requests.............................................................................. 655
8.2.6.2.3 ST_ITS (initiator transport server) state machine ................................................................ 656
8.2.6.2.3.1 ST_ITS state machine overview ................................................................................... 656
8.2.6.2.3.2 ST_ITS1:Initiator_Start state......................................................................................... 657
8.2.6.2.3.2.1 State description ....................................................................................................... 657
8.2.6.2.3.2.2 Transition ST_ITS1:Initiator_Start to ST_ITS3:Prepare_Command......................... 657
8.2.6.2.3.2.3 Transition ST_ITS1:Initiator_Start to ST_ITS4:Prepare_Task ................................. 657
8.2.6.2.3.3 ST_ITS2:Initiator_Send_Frame state............................................................................ 657
8.2.6.2.3.3.1 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS1:Initiator_Start ..................... 661
8.2.6.2.3.3.2 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS5:Prepare_Data_Out............. 662
8.2.6.2.3.3.3 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS6:Receive_Data_In ............... 662
8.2.6.2.3.4 ST_ITS3:Prepare_Command state ............................................................................... 663
8.2.6.2.3.4.1 State description ....................................................................................................... 663
8.2.6.2.3.4.2 Transition ST_ITS3:Prepare_Command to ST_ITS2:Initiator_Send_Frame ........... 663
8.2.6.2.3.5 ST_ITS4:Prepare_Task state........................................................................................ 663
8.2.6.2.3.5.1 State description ....................................................................................................... 663
8.2.6.2.3.5.2 Transition ST_ITS4:Prepare_Task to ST_ITS2:Initiator_Send_Frame .................... 664

xxviii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.6.2.3.6 ST_ITS5:Prepare_Data_Out state ................................................................................ 664


8.2.6.2.3.6.1 State description ....................................................................................................... 664
8.2.6.2.3.6.2 Transition ST_ITS5:Prepare_Data_Out to ST_ITS2:Intiator_Send_Frame ............. 665
8.2.6.2.3.7 ST_ITS6:Receive_Data_In state................................................................................... 665
8.2.6.2.3.7.1 State description ....................................................................................................... 665
8.2.6.2.3.7.2 Transition ST_ITS6:Receive_Data_In to ST_ITS1:Initiator_Start ............................ 666
8.2.6.2.3.7.3 Transition ST_ITS6:Receive_Data_In to ST_ITS2:Initiator_Send_Frame ............... 666
8.2.6.3 ST_T (transport layer for SSP target ports) state machines ..................................................... 667
8.2.6.3.1 ST_T state machines overview............................................................................................ 667
8.2.6.3.2 ST_TFR (target frame router) state machine....................................................................... 669
8.2.6.3.2.1 ST_TFR state machine overview .................................................................................. 669
8.2.6.3.2.2 Processing Frame Received confirmations................................................................... 669
8.2.6.3.2.3 Processing transport protocol service requests and responses.................................... 671
8.2.6.3.2.4 Processing miscellaneous requests and confirmations ................................................ 675
8.2.6.3.3 ST_TTS (target transport server) state machine ................................................................. 675
8.2.6.3.3.1 ST_TTS state machine overview .................................................................................. 675
8.2.6.3.3.2 ST_TTS1:Target_Start state ......................................................................................... 676
8.2.6.3.3.2.1 State description ....................................................................................................... 676
8.2.6.3.3.2.2 Transition ST_TTS1:Target_Start to ST_TTS3:Prepare_Data_In............................ 677
8.2.6.3.3.2.3 Transition ST_TTS1:Target_Start to ST_TTS4:Prepare_Xfer_Rdy ......................... 677
8.2.6.3.3.2.4 Transition ST_TTS1:Target_Start to ST_TTS5:Receive_Data_Out......................... 677
8.2.6.3.3.2.5 Transition ST_TTS1:Target_Start to ST_TTS6:Prepare_Response ........................ 677
8.2.6.3.3.3 ST_TTS2:Target_Send_Frame state ............................................................................ 677
8.2.6.3.3.3.1 State description ....................................................................................................... 677
8.2.6.3.3.3.2 Transition ST_TTS2:Target_Send_Frame to ST_TTS1:Target_Start ...................... 681
8.2.6.3.3.3.3 Transition ST_TTS2:Target_Send_Frame to ST_TTS3:Prepare_Data_In .............. 681
8.2.6.3.3.3.4 Transition ST_TTS2:Target_Send_Frame to ST_TTS5:Receive_Data_Out ........... 681
8.2.6.3.3.4 ST_TTS3:Prepare_Data_In state.................................................................................. 682
8.2.6.3.3.4.1 State description ....................................................................................................... 682
8.2.6.3.3.4.2 Transition ST_TTS3:Prepare_Data_In to ST_TTS2:Target_Send_Frame .............. 683
8.2.6.3.3.5 ST_TTS4:Prepare_Xfer_Rdy state ............................................................................... 683
8.2.6.3.3.5.1 State description ....................................................................................................... 683
8.2.6.3.3.5.2 Transition ST_TTS4:Prepare_Xfer_Rdy to ST_TTS2:Target_Send_Frame ............ 684
8.2.6.3.3.6 ST_TTS5:Receive_Data_Out state............................................................................... 684
8.2.6.3.3.6.1 State description ....................................................................................................... 684
8.2.6.3.3.6.2 Transition ST_TTS5:Receive_Data_Out to ST_TTS1:Target_Start......................... 685
8.2.6.3.3.6.3 Transition ST_TTS5:Receive_Data_Out to ST_TTS4:Prepare_Xfer_Rdy ............... 685
8.2.6.3.3.7 ST_TTS6:Prepare_Response state .............................................................................. 686
8.2.6.3.3.7.1 State description ....................................................................................................... 686
8.2.6.3.3.7.2 Transition ST_TTS6:Prepare_Response to ST_TTS2:Target_Send_Frame ........... 687
8.3 STP transport layer............................................................................................................................... 687
8.3.1 Initial FIS ......................................................................................................................................... 687
8.3.2 BIST Activate FIS............................................................................................................................ 688
8.3.3 TT (transport layer for STP ports) state machines.......................................................................... 688
8.4 SMP transport layer.............................................................................................................................. 688
8.4.1 SMP transport layer overview ......................................................................................................... 688
8.4.2 SMP_REQUEST frame................................................................................................................... 689
8.4.3 SMP_RESPONSE frame ................................................................................................................ 689
8.4.4 Sequence of SMP frames ............................................................................................................... 690
8.4.5 MT (transport layer for SMP ports) state machines ........................................................................ 690
8.4.5.1 SMP transport layer state machines overview .......................................................................... 690
8.4.5.2 MT_IP (transport layer for SMP initiator ports) state machine .................................................. 690
8.4.5.2.1 MT_IP state machine overview............................................................................................ 690
8.4.5.2.2 MT_IP1:Idle state................................................................................................................. 691
8.4.5.2.2.1 State description ........................................................................................................... 691
8.4.5.2.2.2 Transition MT_IP1:Idle to MT_IP2:Send ....................................................................... 691
8.4.5.2.3 MT_IP2:Send state .............................................................................................................. 692

Working Draft SAS Protocol Layer - 5 (SPL-5) xxix


T10/BSR INCITS 554 Revision 11 18 January 2021

8.4.5.2.3.1 State description ........................................................................................................... 692


8.4.5.2.3.2 Transition MT_IP2:Send to MT_IP1:Idle ....................................................................... 692
8.4.5.2.3.3 Transition MT_IP2:Send to MT_IP3:Receive ................................................................ 692
8.4.5.2.4 MT_IP3:Receive state ......................................................................................................... 692
8.4.5.2.4.1 State description ........................................................................................................... 692
8.4.5.2.4.2 Transition MT_IP3:Receive to MT_IP1:Idle .................................................................. 692
8.4.5.3 MT_TP (transport layer for SMP target ports) state machine.................................................... 693
8.4.5.3.1 MT_TP state machine overview .......................................................................................... 693
8.4.5.3.2 MT_TP1:Idle state ............................................................................................................... 693
8.4.5.3.2.1 State description ........................................................................................................... 693
8.4.5.3.2.2 Transition MT_TP1:Idle to MT_TP2:Respond............................................................... 694
8.4.5.3.3 MT_TP2:Respond state....................................................................................................... 694
8.4.5.3.3.1 State description ........................................................................................................... 694
8.4.5.3.3.2 Transition MT_TP2:Respond to MT_TP1:Idle............................................................... 694

9 Application layer......................................................................................................................................... 695


9.1 Application layer overview .................................................................................................................... 695
9.2 SCSI application layer .......................................................................................................................... 695
9.2.1 SCSI transport protocol services .................................................................................................... 695
9.2.1.1 SCSI transport protocol services overview................................................................................ 695
9.2.1.2 Send SCSI Command SCSI transport protocol service ............................................................ 697
9.2.1.3 SCSI Command Received SCSI transport protocol service...................................................... 698
9.2.1.4 Send Command Complete SCSI transport protocol service ..................................................... 699
9.2.1.5 Command Complete Received SCSI transport protocol service............................................... 700
9.2.1.6 Send Data-In SCSI transport protocol service .......................................................................... 701
9.2.1.7 Data-In Delivered SCSI transport protocol service.................................................................... 702
9.2.1.8 Receive Data-Out SCSI transport protocol service ................................................................... 702
9.2.1.9 Data-Out Received SCSI transport protocol service ................................................................. 703
9.2.1.10 Terminate Data Transfer SCSI transport protocol service request ......................................... 704
9.2.1.11 Data Transfer Terminated SCSI transport protocol service confirmation ................................ 704
9.2.1.12 Send Task Management Request SCSI transport protocol service ........................................ 705
9.2.1.13 Task Management Request Received SCSI transport protocol service ................................. 706
9.2.1.14 Task Management Function Executed SCSI transport protocol service ................................. 706
9.2.1.15 Received Task Management Function Executed SCSI transport protocol service ................. 707
9.2.2 SCSI application client error handling............................................................................................. 708
9.2.3 SCSI device server error handling .................................................................................................. 709
9.2.3.1 SCSI Command Received () error handling.............................................................................. 709
9.2.3.2 Data-Out Received () error handling ......................................................................................... 710
9.2.4 Task router and task manager error handling................................................................................. 710
9.2.5 SCSI transport protocol services for event notifications ................................................................. 710
9.2.6 SCSI commands ............................................................................................................................. 711
9.2.6.1 INQUIRY command................................................................................................................... 711
9.2.6.2 LOG SELECT and LOG SENSE commands ............................................................................ 711
9.2.6.3 MODE SELECT and MODE SENSE commands ...................................................................... 711
9.2.6.4 SEND DIAGNOSTIC and RECEIVE DIAGNOSTIC RESULTS commands.............................. 711
9.2.6.5 START STOP UNIT command.................................................................................................. 711
9.2.7 SCSI mode parameters .................................................................................................................. 712
9.2.7.1 SCSI mode parameters overview.............................................................................................. 712
9.2.7.2 Disconnect-Reconnect mode page ........................................................................................... 712
9.2.7.2.1 Disconnect-Reconnect mode page overview ...................................................................... 712
9.2.7.2.2 BUS INACTIVITY LIMIT field ...................................................................................................... 714
9.2.7.2.3 CONNECT TIME LIMIT field....................................................................................................... 714
9.2.7.2.4 MAXIMUM BURST SIZE field ..................................................................................................... 714
9.2.7.2.5 FIRST BURST SIZE field........................................................................................................... 715
9.2.7.3 Protocol Specific Logical Unit mode page................................................................................. 715
9.2.7.4 Protocol Specific Port mode page ............................................................................................. 716
9.2.7.5 Phy Control And Discover mode page ...................................................................................... 718

xxx Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.2.7.6 Shared Port Control mode page................................................................................................ 722


9.2.7.7 Enhanced Phy Control mode page ........................................................................................... 724
9.2.7.8 Out Of Band Management Control mode page......................................................................... 727
9.2.7.8.1 Out Of Band Management Control mode page overview .................................................... 727
9.2.7.8.2 Temperature attribute control .............................................................................................. 729
9.2.8 SCSI log parameters....................................................................................................................... 732
9.2.8.1 Protocol Specific Port log page ................................................................................................. 732
9.2.8.2 Protocol Specific Port log parameter for SAS target ports ........................................................ 733
9.2.9 SCSI diagnostic parameters ........................................................................................................... 736
9.2.9.1 SCSI diagnostic parameters overview ...................................................................................... 736
9.2.9.2 Protocol Specific diagnostic page ............................................................................................. 737
9.2.9.3 Enclosure Control diagnostic page............................................................................................ 743
9.2.9.4 Enclosure Status diagnostic page ............................................................................................. 744
9.2.9.5 Additional Element Status diagnostic page ............................................................................... 744
9.2.10 SCSI power conditions.................................................................................................................. 744
9.2.10.1 SCSI power conditions overview............................................................................................. 744
9.2.10.2 SA_PC (SCSI application layer power condition) state machine ............................................ 744
9.2.10.2.1 SA_PC state machine overview ........................................................................................ 744
9.2.10.2.2 SA_PC_0:Powered_On state ............................................................................................ 748
9.2.10.2.2.1 State description ......................................................................................................... 748
9.2.10.2.2.2 Transition SA_PC_0:Powered_On to SA_PC_4:Active_Wait ..................................... 748
9.2.10.2.2.3 Transition SA_PC_0:Powered_On to SA_PC_8:Stopped .......................................... 748
9.2.10.2.3 SA_PC_1:Active state ....................................................................................................... 748
9.2.10.2.3.1 State description ......................................................................................................... 748
9.2.10.2.3.2 Transition SA_PC_1:Active to SA_PC_5:Wait_Idle .................................................... 748
9.2.10.2.3.3 Transition SA_PC_1:Active to SA_PC_6:Wait_Standby............................................. 748
9.2.10.2.3.4 Transition SA_PC_1:Active to SA_PC_10:Wait_Stopped .......................................... 748
9.2.10.2.4 SA_PC_2:Idle state ........................................................................................................... 748
9.2.10.2.4.1 State description ......................................................................................................... 748
9.2.10.2.4.2 Transition SA_PC_2:Idle to SA_PC_4:Active_Wait .................................................... 748
9.2.10.2.4.3 Transition SA_PC_2:Idle to SA_PC_5:Wait_Idle ........................................................ 749
9.2.10.2.4.4 Transition SA_PC_2:Idle to SA_PC_6:Wait_Standby................................................. 749
9.2.10.2.4.5 Transition SA_PC_2:Idle to SA_PC_7:Idle_Wait ........................................................ 749
9.2.10.2.4.6 Transition SA_PC_2:Idle to SA_PC_10:Wait_Stopped .............................................. 749
9.2.10.2.5 SA_PC_3:Standby state .................................................................................................... 749
9.2.10.2.5.1 State description ......................................................................................................... 749
9.2.10.2.5.2 Transition SA_PC_3:Standby to SA_PC_4:Active_Wait............................................. 749
9.2.10.2.5.3 Transition SA_PC_3:Standby to SA_PC_6:Wait_Standby ......................................... 749
9.2.10.2.5.4 Transition SA_PC_3:Standby to SA_PC_7:Idle_Wait................................................. 749
9.2.10.2.5.5 Transition SA_PC_3:Standby to SA_PC_9: Standby_Wait ........................................ 749
9.2.10.2.5.6 Transition SA_PC_3:Standby to SA_PC_10:Wait_Stopped ....................................... 750
9.2.10.2.6 SA_PC_4:Active_Wait state .............................................................................................. 750
9.2.10.2.6.1 State description ......................................................................................................... 750
9.2.10.2.6.2 Transition SA_PC_4:Active_Wait to SA_PC_1:Active ............................................... 752
9.2.10.2.7 SA_PC_5:Wait_Idle state .................................................................................................. 752
9.2.10.2.7.1 SA_PC_5:Wait_Idle state description ......................................................................... 752
9.2.10.2.7.2 Transition SA_PC_5:Wait_Idle to SA_PC_2:Idle ........................................................ 752
9.2.10.2.8 SA_PC_6:Wait_Standby state........................................................................................... 752
9.2.10.2.8.1 SA_PC_6:Wait_Standby state description .................................................................. 752
9.2.10.2.8.2 Transition SA_PC_6:Wait_Standby to SA_PC_3:Standby ......................................... 752
9.2.10.2.9 SA_PC_7:Idle_Wait state .................................................................................................. 752
9.2.10.2.9.1 State description ......................................................................................................... 752
9.2.10.2.9.2 Transition SA_PC_7:Idle_Wait to SA_PC_2:Idle ........................................................ 754
9.2.10.2.10 SA_PC_8:Stopped state.................................................................................................. 754
9.2.10.2.10.1 State description ....................................................................................................... 754
9.2.10.2.10.2 Transition SA_PC_8:Stopped to SA_PC_4:Active_Wait .......................................... 754
9.2.10.2.10.3 Transition SA_PC_8:Stopped to SA_PC_7:Idle_Wait .............................................. 754

Working Draft SAS Protocol Layer - 5 (SPL-5) xxxi


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.10.2.10.4 Transition SA_PC_8:Stopped to SA_PC_9:Standby_Wait ....................................... 754


9.2.10.2.11 SA_PC_9:Standby_Wait state......................................................................................... 754
9.2.10.2.11.1 SA_PC_9:Standby_Wait state description ................................................................ 754
9.2.10.2.11.2 Transition SA_PC_9:Standby_Wait to SA_PC_3:Standby ....................................... 754
9.2.10.2.12 SA_PC_10:Wait_Stopped state....................................................................................... 754
9.2.10.2.12.1 SA_PC_10:Wait_Stopped state description.............................................................. 754
9.2.10.2.12.2 Transition SA_PC_10:Wait_Stopped to SA_PC_8:Stopped ..................................... 754
9.2.11 SCSI vital product data (VPD) ...................................................................................................... 755
9.2.11.1 SCSI vital product data (VPD) overview.................................................................................. 755
9.2.11.2 Device Identification VPD page............................................................................................... 755
9.2.11.3 Protocol Specific Logical Unit Information VPD page ............................................................. 756
9.2.11.4 Protocol Specific Port Information VPD page.......................................................................... 758
9.3 ATA application layer............................................................................................................................ 761
9.4 Management application layer.............................................................................................................. 761
9.4.1 READY LED signal behavior .......................................................................................................... 761
9.4.2 Out of band management interface ................................................................................................ 763
9.4.2.1 Out of band management interface overview............................................................................ 763
9.4.3 Management protocol services ....................................................................................................... 764
9.4.4 SMP functions................................................................................................................................. 764
9.4.4.1 SMP functions overview ............................................................................................................ 764
9.4.4.2 SMP function request frame format........................................................................................... 767
9.4.4.2.1 SMP function request frame format overview...................................................................... 767
9.4.4.2.2 SMP FRAME TYPE field ........................................................................................................... 767
9.4.4.2.3 FUNCTION field ...................................................................................................................... 767
9.4.4.2.4 ALLOCATED RESPONSE LENGTH field ...................................................................................... 767
9.4.4.2.5 REQUEST LENGTH field........................................................................................................... 768
9.4.4.2.6 Additional request bytes ...................................................................................................... 768
9.4.4.2.7 CRC field ............................................................................................................................... 769
9.4.4.3 SMP function response frame format........................................................................................ 769
9.4.4.3.1 SMP function response frame format overview ................................................................... 769
9.4.4.3.2 SMP FRAME TYPE field ........................................................................................................... 770
9.4.4.3.3 FUNCTION field ...................................................................................................................... 770
9.4.4.3.4 FUNCTION RESULT field .......................................................................................................... 770
9.4.4.3.5 RESPONSE LENGTH field......................................................................................................... 778
9.4.4.3.6 Additional response bytes.................................................................................................... 778
9.4.4.3.7 CRC field ............................................................................................................................... 779
9.4.4.4 REPORT GENERAL function.................................................................................................... 779
9.4.4.5 REPORT MANUFACTURER INFORMATION function ............................................................ 787
9.4.4.6 REPORT SELF-CONFIGURATION STATUS function ............................................................. 790
9.4.4.6.1 REPORT SELF-CONFIGURATION STATUS function overview ........................................ 790
9.4.4.6.2 REPORT SELF-CONFIGURATION STATUS request ........................................................ 790
9.4.4.6.3 REPORT SELF-CONFIGURATION STATUS response ..................................................... 792
9.4.4.6.4 Self-configuration status descriptor ..................................................................................... 794
9.4.4.7 REPORT ZONE PERMISSION TABLE function ....................................................................... 796
9.4.4.7.1 REPORT ZONE PERMISSION TABLE function overview .................................................. 796
9.4.4.7.2 REPORT ZONE PERMISSION TABLE request.................................................................. 797
9.4.4.7.3 REPORT ZONE PERMISSION TABLE response ............................................................... 799
9.4.4.7.4 Zone permission descriptor ................................................................................................. 800
9.4.4.8 REPORT ZONE MANAGER PASSWORD function.................................................................. 801
9.4.4.9 REPORT BROADCAST function .............................................................................................. 804
9.4.4.9.1 REPORT BROADCAST function overview.......................................................................... 804
9.4.4.9.2 REPORT BROADCAST request ......................................................................................... 804
9.4.4.9.3 REPORT BROADCAST response....................................................................................... 806
9.4.4.9.4 Broadcast descriptor............................................................................................................ 807
9.4.4.10 DISCOVER function ................................................................................................................ 809
9.4.4.11 REPORT PHY ERROR LOG function..................................................................................... 826
9.4.4.12 REPORT PHY SATA function ................................................................................................. 829

xxxii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.13 REPORT ROUTE INFORMATION function ............................................................................ 833


9.4.4.14 REPORT PHY EVENT function .............................................................................................. 837
9.4.4.14.1 REPORT PHY EVENT function overview.......................................................................... 837
9.4.4.14.2 REPORT PHY EVENT request ......................................................................................... 838
9.4.4.14.3 REPORT PHY EVENT response....................................................................................... 839
9.4.4.14.4 Phy event descriptor .......................................................................................................... 840
9.4.4.15 DISCOVER LIST function ....................................................................................................... 841
9.4.4.15.1 DISCOVER LIST function overview................................................................................... 841
9.4.4.15.2 DISCOVER LIST request .................................................................................................. 842
9.4.4.15.3 DISCOVER LIST response................................................................................................ 845
9.4.4.15.4 DISCOVER LIST response SHORT FORMAT descriptor ................................................. 847
9.4.4.16 REPORT PHY EVENT LIST function...................................................................................... 848
9.4.4.16.1 REPORT PHY EVENT LIST function overview ................................................................. 848
9.4.4.16.2 REPORT PHY EVENT LIST request ................................................................................. 848
9.4.4.16.3 REPORT PHY EVENT LIST response .............................................................................. 850
9.4.4.16.4 Phy event list descriptor..................................................................................................... 852
9.4.4.17 REPORT EXPANDER ROUTE TABLE LIST function ............................................................ 852
9.4.4.17.1 REPORT EXPANDER ROUTE TABLE LIST function overview........................................ 852
9.4.4.17.2 REPORT EXPANDER ROUTE TABLE LIST request ....................................................... 853
9.4.4.17.3 REPORT EXPANDER ROUTE TABLE LIST response..................................................... 855
9.4.4.17.4 Expander route table descriptor......................................................................................... 857
9.4.4.18 CONFIGURE GENERAL function ........................................................................................... 857
9.4.4.19 ENABLE DISABLE ZONING function ..................................................................................... 861
9.4.4.20 ZONED BROADCAST function............................................................................................... 864
9.4.4.21 ZONE LOCK function .............................................................................................................. 867
9.4.4.22 ZONE ACTIVATE function ...................................................................................................... 870
9.4.4.23 ZONE UNLOCK function......................................................................................................... 871
9.4.4.24 CONFIGURE ZONE MANAGER PASSWORD function ......................................................... 873
9.4.4.25 CONFIGURE ZONE PHY INFORMATION function................................................................ 876
9.4.4.25.1 CONFIGURE ZONE PHY INFORMATION function overview ........................................... 876
9.4.4.25.2 CONFIGURE ZONE PHY INFORMATION request........................................................... 877
9.4.4.25.3 Zone phy configuration descriptor ..................................................................................... 879
9.4.4.25.4 CONFIGURE ZONE PHY INFORMATION response ........................................................ 879
9.4.4.26 CONFIGURE ZONE PERMISSION TABLE function .............................................................. 880
9.4.4.26.1 CONFIGURE ZONE PERMISSION TABLE function overview ......................................... 880
9.4.4.26.2 CONFIGURE ZONE PERMISSION TABLE request ......................................................... 881
9.4.4.26.3 Zone permission configuration descriptor .......................................................................... 883
9.4.4.26.4 CONFIGURE ZONE PERMISSION TABLE response ...................................................... 884
9.4.4.27 CONFIGURE ROUTE INFORMATION function ..................................................................... 885
9.4.4.28 PHY CONTROL function......................................................................................................... 888
9.4.4.29 PHY TEST FUNCTION function.............................................................................................. 897
9.4.4.30 CONFIGURE PHY EVENT function........................................................................................ 902
9.4.4.30.1 CONFIGURE PHY EVENT function overview ................................................................... 902
9.4.4.30.2 CONFIGURE PHY EVENT request................................................................................... 903
9.4.4.30.3 Phy event configuration descriptor .................................................................................... 904
9.4.4.30.4 CONFIGURE PHY EVENT response ................................................................................ 905

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 C (informative) CRC........................................................................................................................... 921


C.1 CRC generator and checker implementation examples ...................................................................... 921

Working Draft SAS Protocol Layer - 5 (SPL-5) xxxiii


T10/BSR INCITS 554 Revision 11 18 January 2021

C.2 CRC implementation in C .................................................................................................................... 921


C.3 CRC implementation with XORs.......................................................................................................... 923
C.4 CRC examples..................................................................................................................................... 924

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 E (informative) SAS address hashing ................................................................................................ 935


E.1 SAS address hashing overview ........................................................................................................... 935
E.2 Hash collision probability...................................................................................................................... 935
E.3 Hash generation................................................................................................................................... 936
E.4 Hash implementation in C .................................................................................................................... 937
E.5 Hash implementation with XORs ......................................................................................................... 938
E.6 Hash examples .................................................................................................................................... 939

Annex F (informative) Scrambling................................................................................................................. 943


F.1 Scrambling while in SAS dword mode ................................................................................................. 943
F.1.1 SAS dword mode scrambler implementation example ................................................................... 943
F.1.2 SAS dword mode scrambler implementation in C .......................................................................... 943
F.1.3 SAS dword mode scrambler implementation with XORs................................................................ 944
F.1.4 SAS dword mode scrambler examples........................................................................................... 945
F.2 Scrambling while in SAS packet mode................................................................................................. 947
F.2.1 SAS packet mode scrambler implementation example .................................................................. 947
F.2.2 SAS packet mode 8-bit pattern generator implementation in C...................................................... 947
F.2.3 SAS packet mode 8-bit pattern generator implementation block diagram...................................... 948
F.2.4 SAS packet mode 8-bit pattern generator output ........................................................................... 948

Annex G (informative) ATA architectural notes............................................................................................. 950


G.1 STP differences from SATA................................................................................................................. 950
G.2 STP differences from SATA................................................................................................................. 950
G.3 Affiliation policies ................................................................................................................................. 950
G.3.1 Affiliation policies overview ............................................................................................................ 950
G.3.2 Affiliation policy for static STP initiator port to STP target port mapping........................................ 951
G.3.3 Affiliation policy with SATA queued commands and multiple STP initiator ports ........................... 951
G.3.4 Applicability of affiliation for STP target ports................................................................................. 951
G.4 SATA port selector considerations ...................................................................................................... 951
G.5 SATA device not transmitting initial Register Device-to-Host FIS ....................................................... 952

Annex H (informative) Minimum deletable primitive and scrambled idle segment insertion rate summary .. 953

Annex I (informative) Zone permission configuration descriptor examples................................................... 956

Annex J (informative) SAS addressing ......................................................................................................... 960


J.1 SAS addressing in SAS domains ......................................................................................................... 960
J.2 Expander device SAS addresses ......................................................................................................... 960

Annex K (informative) Expander device handling of connections ................................................................. 961


K.1 Expander device handling of connections overview ............................................................................ 961
K.2 Connection request - OPEN_ACCEPT ................................................................................................ 963
K.3 Connection request - OPEN_REJECT by end device ......................................................................... 964
K.4 Connection request - OPEN_REJECT by expander device ................................................................ 965
K.5 Connection request - arbitration lost .................................................................................................... 966
K.6 Connection request - backoff and retry ................................................................................................ 967

xxxiv Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

K.7 Connection request - backoff and reverse path ................................................................................... 968


K.8 Connection close - single step ............................................................................................................. 969
K.9 Connection close - simultaneous ......................................................................................................... 970
K.10 BREAK handling during path arbitration when the BREAK_REPLY method is disabled................... 971
K.11 BREAK handling during connection when the BREAK_REPLY method is disabled ......................... 972
K.12 BREAK handling during path arbitration when the BREAK_REPLY method is enabled ................... 973
K.13 BREAK handling during connection when BREAK_REPLY method is enabled ................................ 974
K.14 STP connection - originated by STP initiator port .............................................................................. 975
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
K.17 STP connection close - originated by STP target port in an STP SATA bridge ................................. 978
K.18 Connection request - XL1:Request_Path to XL5:Forward_Open transition....................................... 979
K.19 Pathway blocked and pathway recovery example ............................................................................. 980

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 M (informative) Standards bodies contact information....................................................................... 999

Annex N (informative) Successful low phy power condition handshake sequence .................................... 1000

Annex O (informative) Terminology mapping to SPL-3............................................................................... 1003

Annex P (informative) Bibliography............................................................................................................. 1004

Working Draft SAS Protocol Layer - 5 (SPL-5) xxxv


T10/BSR INCITS 554 Revision 11 18 January 2021

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

xxxvi Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) xxxvii


T10/BSR INCITS 554 Revision 11 18 January 2021

machine message, and PTT_SC1 state machine messages .................................................................. 344


Table 104 – Mapping messages to the PTT_T state machine...................................................................... 348
Table 105 – PTT_SC1 messages to substitute for PTT_SC2 messages .................................................... 349
Table 106 – PTT_SC1 messages to substitute for PTT_SC3 messages .................................................... 350
Table 107 – Mapping messages to the PTT_T state machine...................................................................... 352
Table 108 – PTT_GC1 messages to substitute for PTT_GC2 messages ................................................... 353
Table 109 – PTT_GC1 messages to substitute for PTT_GC2 messages ................................................... 353
Table 110 – SP transmitter binary primitive messages................................................................................. 359
Table 111 – SP receiver binary primitive messages ..................................................................................... 362
Table 112 – Mapping messages to the PAPTA_TC state machine .............................................................. 370
Table 113 – PAPTA_TC state machine timers ............................................................................................. 371
Table 114 – PAPTA_TC1 messages to substitute for PAPTA_TC2 messages............................................ 374
Table 115 – PAPTA_TC1 messages to substitute for PAPTA_TC3 messages............................................ 374
Table 116 – PAPTA_TC1 messages to substitute for PAPTA_TC1_2 messages........................................ 374
Table 117 – PAPTA_TC1 messages to substitute for PAPTA_TC2_3 messages........................................ 375
Table 118 – Primitive format ......................................................................................................................... 376
Table 119 – Deletable primitives................................................................................................................... 377
Table 120 – Primitives not specific to type of connection ............................................................................. 378
Table 121 – Primitives used inside SSP and SMP connections ................................................................... 382
Table 122 – Primitives used inside STP connections and on SATA physical links....................................... 384
Table 123 – Primitive encoding for deletable primitives................................................................................ 386
Table 124 – Primitive encoding for primitives not specific to type of connection .......................................... 387
Table 125 – Primitive encoding for primitives used only inside SSP and SMP connections ........................ 389
Table 126 – Primitive encoding for primitives used only inside STP connections and only on SATA
physical links............................................................................................................................................ 390
Table 127 – Primitive sequences .................................................................................................................. 391
Table 128 – ALIGN primitives ....................................................................................................................... 399
Table 129 – NOTIFY primitives..................................................................................................................... 400
Table 130 – AIP primitives ............................................................................................................................ 402
Table 131 – BROADCAST primitives............................................................................................................ 403
Table 132 – CLOSE primitives...................................................................................................................... 403
Table 133 – CLOSE primitive parameter format ........................................................................................... 404
Table 134 – Abandon-class OPEN_REJECT primitives ............................................................................... 406
Table 135 – Retry-class OPEN_REJECT primitives..................................................................................... 407
Table 136 – OPEN_REJECT retry-class primitive parameter format ........................................................... 408
Table 137 – TIME SCALE field ......................................................................................................................... 409
Table 138 – PS_REQ primitives ................................................................................................................... 409
Table 139 – DONE primitives........................................................................................................................ 411
Table 140 – NAK primitives........................................................................................................................... 412
Table 141 – RRDY primitives........................................................................................................................ 412
Table 142 – Deletable binary primitives ........................................................................................................ 414
Table 143 – Binary primitives used inside SSP connections and STP connections ..................................... 416
Table 144 – Binary primitive codes for deletable binary primitives ............................................................... 417
Table 145 – Binary primitive codes for binary primitives only used inside SSP and STP connections......... 418
Table 146 – Binary primitive sequences ....................................................................................................... 418
Table 147 – APTA_ADJUST binary primitives.............................................................................................. 419
Table 148 – APTA_COEFFICIENT_1 binary primitives................................................................................ 420
Table 149 – APTA_COEFFICIENT_2 binary primitives................................................................................ 420
Table 150 – APTA_COEFFICIENT_3 binary primitives................................................................................ 421
Table 151 – APTA_COEFFICIENT_1_2 binary primitives............................................................................ 421
Table 152 – APTA_COEFFICIENT_2_3 binary primitives............................................................................ 422
Table 153 – B_EOF binary primitives ........................................................................................................... 422
Table 154 – Deletable extended binary primitives ........................................................................................ 423
Table 155 – Extended binary primitives not specific to type of connection................................................... 424
Table 156 – Extended binary primitive codes for deletable extended binary primitives................................ 425
Table 157 – Extended binary primitive codes for extended binary primitives not specific to any type of
connection................................................................................................................................................ 425

xxxviii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 158 – Extended binary primitive sequences ....................................................................................... 426


Table 159 – Physical link rate tolerance management deletable primitive insertion requirement................. 430
Table 160 – Physical link rate tolerance management for deletable extended binary primitive
insertion requirement ............................................................................................................................... 431
Table 161 – CRC notation and definitions .................................................................................................... 433
Table 162 – Scrambling for different data dword types while in the SAS dword mode................................. 438
Table 163 – Address frame format................................................................................................................ 446
Table 164 – ADDRESS FRAME TYPE field ......................................................................................................... 446
Table 165 – IDENTIFY address frame format............................................................................................... 447
Table 166 – SAS DEVICE TYPE field................................................................................................................. 448
Table 167 – REASON field .............................................................................................................................. 448
Table 168 – POWER CAPABLE field.................................................................................................................. 450
Table 169 – OPEN address frame format..................................................................................................... 451
Table 170 – SAS PROTOCOL field.................................................................................................................... 452
Table 171 – FEATURES field ........................................................................................................................... 452
Table 172 – CONNECTION RATE field............................................................................................................... 452
Table 173 – ARBITRATION WAIT TIME field ....................................................................................................... 454
Table 174 – SL_IR_IRC state machine timers.............................................................................................. 458
Table 175 – PS_ACK pattern........................................................................................................................ 465
Table 176 – SL_P_S state machine timers................................................................................................... 467
Table 177 – SL_P_C state machine timers................................................................................................... 472
Table 178 – Connection results of a connection request .............................................................................. 480
Table 179 – Arbitration priority for OPEN address frames passing on a logical link..................................... 482
Table 180 – Arbitration priority for a Request Path request in the ECM ....................................................... 485
Table 181 – Pathway recovery priority.......................................................................................................... 487
Table 182 – Results of aborting a connection request.................................................................................. 488
Table 183 – Results of closing a connection................................................................................................. 491
Table 184 – Results of breaking a connection .............................................................................................. 492
Table 185 – Rate matching deletable primitive insertion requirements while in the SAS dword mode ........ 493
Table 186 – Rate matching deletable primitive insertion requirements while in the SAS packet mode........ 495
Table 187 – SL_CC state machine timers .................................................................................................... 504
Table 188 – SL_CC state machine variables................................................................................................ 504
Table 189 – OPEN_REJECT Received message to Open Failed confirmation mapping ............................ 508
Table 190 – XL state machine timers............................................................................................................ 520
Table 191 – XL state machine variable......................................................................................................... 520
Table 192 – Extended fairness priority.......................................................................................................... 541
Table 193 – Setting CLOSE primitive parameters and Delay Expander Forward Open Indication timer ..... 542
Table 194 – SSP frame interlock requirements ............................................................................................ 552
Table 195 – SSP state machines timers ....................................................................................................... 556
Table 196 – SSP state machines timers for persistent connections ............................................................. 556
Table 197 – STP link layer differences from SATA link layer during an STP connection ............................. 571
Table 198 – Affiliation policies....................................................................................................................... 581
Table 199 – Affiliation context relative identifier example ............................................................................. 582
Table 200 – PL_OC state machine timers .................................................................................................... 599
Table 201 – Confirmations from Unable To Connect messages .................................................................. 607
Table 202 – PL_PM state machine timers .................................................................................................... 612
Table 203 – Messages from Open Failed confirmations............................................................................... 617
Table 204 – SSP frame format...................................................................................................................... 625
Table 205 – FRAME TYPE field ........................................................................................................................ 626
Table 206 – TLR CONTROL field for COMMAND frames ................................................................................. 627
Table 207 – COMMAND frame - Command information unit........................................................................ 629
Table 208 – TASK ATTRIBUTE field .................................................................................................................. 630
Table 209 – TASK frame - Task Management Function information unit ..................................................... 631
Table 210 – TASK MANAGEMENT FUNCTION field.............................................................................................. 632
Table 211 – XFER_RDY frame - Transfer Ready information unit ............................................................... 634
Table 212 – DATA frame - Data information unit .......................................................................................... 635
Table 213 – RESPONSE frame - Response information unit ....................................................................... 636

Working Draft SAS Protocol Layer - 5 (SPL-5) xxxix


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 214 – DATAPRES field ........................................................................................................................... 637


Table 215 – RESPONSE DATA field .................................................................................................................. 638
Table 216 – RESPONSE CODE field ................................................................................................................. 638
Table 217 – Sequences of SSP frames ........................................................................................................ 639
Table 218 – Confirmations sent to the SCSI application layer if a frame transmission error
or reception error occurs.......................................................................................................................... 655
Table 219 – ST_ITS state machine variables ............................................................................................... 656
Table 220 – ST_ITS state machine arguments............................................................................................. 657
Table 221 – Messages sent to the ST_IFR state machine ........................................................................... 659
Table 222 – Transmission Complete messages for XFER_RDY frame verification failures......................... 661
Table 223 – Reception Complete messages for read DATA frame verification failures ............................... 665
Table 224 – ST_T state machine timers ....................................................................................................... 667
Table 225 – Task Management Function Executed Service Response argument mapping to
Request (Send Transport Response) Service Response argument........................................................ 673
Table 226 – Confirmations sent to the SCSI application layer...................................................................... 674
Table 227 – ST_TTS state machine variables .............................................................................................. 676
Table 228 – ST_TTS state machine arguments ........................................................................................... 676
Table 229 – Messages sent to the ST_TFR state machine .......................................................................... 680
Table 230 – Additional messages sent to the ST_TFR state machine ......................................................... 681
Table 231 – Reception Complete message for write DATA frame verification failures................................. 684
Table 232 – Request (Send Transport Response) message Service Response argument to
RESPONSE frame RESPONSE DATA field mapping ................................................................................... 687
Table 233 – SMP frame format ..................................................................................................................... 688
Table 234 – SMP FRAME TYPE field................................................................................................................. 688
Table 235 – SMP_REQUEST frame format.................................................................................................. 689
Table 236 – SMP_RESPONSE frame format ............................................................................................... 689
Table 237 – MT_TP time limits ..................................................................................................................... 693
Table 238 – Execute Command procedure call transport protocol services................................................. 696
Table 239 – Task management function procedure call transport protocol services .................................... 697
Table 240 – Send SCSI Command SCSI transport protocol service arguments .......................................... 698
Table 241 – SCSI Command Received SCSI transport protocol service arguments ................................... 699
Table 242 – Send Command Complete SCSI transport protocol service arguments ................................... 700
Table 243 – Command Complete Received SCSI transport protocol service arguments ............................ 701
Table 244 – Send Data-In SCSI transport protocol service arguments ........................................................ 702
Table 245 – Data-In Delivered SCSI transport protocol service arguments ................................................. 702
Table 246 – Receive Data-Out SCSI transport protocol service arguments................................................. 703
Table 247 – Data-Out Received SCSI transport protocol service arguments............................................... 704
Table 248 – Terminate Data Transfer SCSI transport protocol service arguments ...................................... 704
Table 249 – Data Transfer Terminated SCSI transport protocol service arguments .................................... 705
Table 250 – Send Task Management Request SCSI transport protocol service arguments........................ 705
Table 251 – Task Management Request Received SCSI transport protocol service arguments ................. 706
Table 252 – Task Management Function Executed SCSI transport protocol service arguments................. 707
Table 253 – Received Task Management Function Executed SCSI transport protocol service arguments. 708
Table 254 – Delivery Result to additional sense code mapping ................................................................... 710
Table 255 – SCSI transport protocol events ................................................................................................. 711
Table 256 – SSP target port mode pages..................................................................................................... 712
Table 257 – Disconnect-Reconnect mode page for SAS SSP ..................................................................... 713
Table 258 – Protocol Specific Logical Unit mode page for SAS SSP ........................................................... 716
Table 259 – Protocol Specific Port mode page for SAS SSP ....................................................................... 717
Table 260 – I_T NEXUS LOSS TIME field........................................................................................................... 718
Table 261 – Phy Control And Discover mode page ...................................................................................... 719
Table 262 – SAS phy mode descriptor ......................................................................................................... 721
Table 263 – Shared Port Control mode page ............................................................................................... 722
Table 264 — FOURPHYS bit, the TWOPHYS bit, and the ONEPHY bit ............................................................... 723
Table 265 – Enhanced Phy Control mode page ........................................................................................... 724
Table 266 – Enhanced phy control mode descriptor..................................................................................... 726
Table 267 — Out Of Band Management Control mode page ....................................................................... 727

xl Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 268 — Attribute control descriptor format ........................................................................................... 728


Table 269 — DESCRIPTOR IDENTIFIER field ..................................................................................................... 728
Table 270 – Temperature attribute control descriptor format........................................................................ 729
Table 271 – TEST MODE field.......................................................................................................................... 731
Table 272 – Protocol Specific Port log parameters....................................................................................... 732
Table 273 – Protocol Specific Port log page for SAS SSP ........................................................................... 732
Table 274 – Protocol Specific Port log parameter for SAS target ports ........................................................ 733
Table 275 – SAS phy log descriptor.............................................................................................................. 734
Table 276 – SSP target port diagnostic pages.............................................................................................. 736
Table 277 – Diagnostic pages affected by zoning ........................................................................................ 737
Table 278 – Protocol Specific diagnostic page for SAS SSP........................................................................ 738
Table 279 – PHY TEST FUNCTION field ............................................................................................................ 739
Table 280 – PHY TEST PATTERN field .............................................................................................................. 740
Table 281 – PHY TEST FUNCTION SSC field...................................................................................................... 741
Table 282 – PHY TEST FUNCTION PHYSICAL LINK RATE field ............................................................................. 741
Table 283 – PHY TEST PATTERN DWORDS CONTROL field................................................................................. 742
Table 284 – TWO_DWORDS phy test pattern examples ............................................................................. 743
Table 285 – Summary of states in the SA_PC state machine ...................................................................... 745
Table 286 – VPD pages with special requirements for SAS SSP................................................................. 755
Table 287 – Device Identification VPD page designation descriptors for the SAS target port...................... 755
Table 288 – Device Identification VPD page designation descriptors for the SAS target device.................. 756
Table 289 – Protocol Specific Logical Unit Information VPD page for SAS SSP.......................................... 757
Table 290 – Logical unit information descriptor for SAS SSP....................................................................... 758
Table 291 – Protocol Specific Port Information VPD page for SAS SSP...................................................... 759
Table 292 – Port information descriptor for SAS SSP .................................................................................. 760
Table 293 – SAS phy information descriptor for SAS SSP ........................................................................... 761
Table 294 – READY LED signal behavior..................................................................................................... 762
Table 295 – SMP functions (FUNCTION field) ................................................................................................. 764
Table 296 – SMP request frame format ........................................................................................................ 767
Table 297 – SMP response frame format ..................................................................................................... 769
Table 298 – FUNCTION RESULT field ............................................................................................................... 770
Table 299 – Function result priority............................................................................................................... 774
Table 300 – REPORT GENERAL request .................................................................................................... 779
Table 301 – REPORT GENERAL response ................................................................................................. 780
Table 302 – NUMBER OF ZONE GROUPS field................................................................................................... 784
Table 303 – REPORT MANUFACTURER INFORMATION request............................................................. 787
Table 304 – REPORT MANUFACTURER INFORMATION response .......................................................... 788
Table 305 – REPORT SELF-CONFIGURATION STATUS request.............................................................. 790
Table 306 – REPORT SELF-CONFIGURATION STATUS response........................................................... 792
Table 307 – Self-configuration status descriptor........................................................................................... 794
Table 308 – STATUS TYPE field....................................................................................................................... 794
Table 309 – REPORT ZONE PERMISSION TABLE request ....................................................................... 797
Table 310 – REPORT TYPE field ...................................................................................................................... 798
Table 311 – REPORT ZONE PERMISSION TABLE response .................................................................... 799
Table 312 – Zone permission descriptors..................................................................................................... 800
Table 313 – Zone permission descriptor for a source zone group (i.e., s) with 128 zone groups................. 800
Table 314 – Zone permission descriptor for a source zone group (i.e., s) with 256 zone groups................. 801
Table 315 – Zone permission descriptor bit requirements ............................................................................ 801
Table 316 – REPORT ZONE MANAGER PASSWORD request .................................................................. 802
Table 317 – REPORT TYPE field ...................................................................................................................... 803
Table 318 – REPORT ZONE MANAGER PASSWORD response ............................................................... 803
Table 319 – REPORT BROADCAST request............................................................................................... 804
Table 320 – REPORT BROADCAST response ............................................................................................ 806
Table 321 – Broadcast descriptor ................................................................................................................. 807
Table 322 – BROADCAST REASON field for originated Broadcasts................................................................... 808
Table 323 – DISCOVER request .................................................................................................................. 809
Table 324 – DISCOVER response................................................................................................................ 810

Working Draft SAS Protocol Layer - 5 (SPL-5) xli


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 325 – ATTACHED SAS DEVICE TYPE field ................................................................................................ 813


Table 326 – NEGOTIATED LOGICAL LINK RATE field and NEGOTIATED PHYSICAL LINK RATE field......................... 815
Table 327 – ATTACHED SATA PORT SELECTOR and ATTACHED SATA DEVICE bits .............................................. 816
Table 328 – PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL
LINK RATE field .......................................................................................................................................... 819
Table 329 – The HARDWARE MINIMUM PHYSICAL LINK RATE field and the HARDWARE MAXIMUM PHYSICAL
LINK RATE field .......................................................................................................................................... 819
Table 330 – ROUTING ATTRIBUTE field ............................................................................................................ 820
Table 331 – PHY POWER CONDITION field........................................................................................................ 821
Table 332 – SAS POWER CAPABLE field ........................................................................................................... 821
Table 333 – PWR_DIS SIGNAL field.................................................................................................................. 822
Table 334 – PWR_DIS CONTROL CAPABLE field ................................................................................................ 822
Table 335 – ATTACHED DEVICE NAME field ...................................................................................................... 823
Table 336 – SELF-CONFIGURATION STATUS field.............................................................................................. 824
Table 337 – SELF-CONFIGURATION LEVELS COMPLETED field ........................................................................... 824
Table 338 – REPORT PHY ERROR LOG request ....................................................................................... 827
Table 339 – REPORT PHY ERROR LOG response .................................................................................... 828
Table 340 – REPORT PHY SATA request ................................................................................................... 830
Table 341 – REPORT PHY SATA response................................................................................................. 831
Table 342 – REPORT ROUTE INFORMATION request .............................................................................. 834
Table 343 – REPORT ROUTE INFORMATION response............................................................................ 836
Table 344 – REPORT PHY EVENT request................................................................................................. 838
Table 345 – REPORT PHY EVENT response .............................................................................................. 839
Table 346 – Phy event descriptor ................................................................................................................. 840
Table 347 – DISCOVER LIST request.......................................................................................................... 842
Table 348 – PHY FILTER field.......................................................................................................................... 843
Table 349 – DESCRIPTOR TYPE field ............................................................................................................... 844
Table 350 – DISCOVER LIST response ....................................................................................................... 845
Table 351 – SHORT FORMAT descriptor..................................................................................................... 847
Table 352 – REPORT PHY EVENT LIST request ........................................................................................ 848
Table 353 – REPORT PHY EVENT LIST response ..................................................................................... 850
Table 354 – Phy event list descriptor ............................................................................................................ 852
Table 355 – REPORT EXPANDER ROUTE TABLE LIST request............................................................... 853
Table 356 – REPORT EXPANDER ROUTE TABLE LIST response ............................................................ 855
Table 357 – Expander route table descriptor ................................................................................................ 857
Table 358 – CONFIGURE GENERAL request ............................................................................................. 858
Table 359 – STP SMP I_T NEXUS LOSS TIME field............................................................................................. 860
Table 360 – CONFIGURE GENERAL response........................................................................................... 861
Table 361 – ENABLE DISABLE ZONING request........................................................................................ 862
Table 362 – SAVE field ................................................................................................................................... 863
Table 363 – ENABLE DISABLE ZONING field ...................................................................................................... 863
Table 364 – ENABLE DISABLE ZONING response ..................................................................................... 864
Table 365 – ZONED BROADCAST request ................................................................................................. 865
Table 366 – BROADCAST TYPE field ................................................................................................................ 866
Table 367 – ZONED BROADCAST response .............................................................................................. 867
Table 368 – ZONE LOCK request ................................................................................................................ 868
Table 369 – ZONE LOCK response.............................................................................................................. 869
Table 370 – ZONE ACTIVATE request......................................................................................................... 870
Table 371 – ZONE ACTIVATE response...................................................................................................... 871
Table 372 – ZONE UNLOCK request ........................................................................................................... 872
Table 373 – ZONE UNLOCK response ........................................................................................................ 873
Table 374 – CONFIGURE ZONE MANAGER PASSWORD request ........................................................... 874
Table 375 – SAVE field ................................................................................................................................... 875
Table 376 – CONFIGURE ZONE MANAGER PASSWORD response......................................................... 875
Table 377 – CONFIGURE ZONE PHY INFORMATION request .................................................................. 877
Table 378 – SAVE field ................................................................................................................................... 878
Table 379 – Zone phy configuration descriptor............................................................................................. 879

xlii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 380 – CONFIGURE ZONE PHY INFORMATION response ............................................................... 879


Table 381 – CONFIGURE ZONE PERMISSION TABLE request................................................................. 881
Table 382 – NUMBER OF ZONE GROUPS field................................................................................................... 882
Table 383 – SAVE field ................................................................................................................................... 882
Table 384 – Zone permission configuration descriptors ............................................................................... 883
Table 385 – Zone permission configuration descriptor for source zone group for 128 zone groups ............ 883
Table 386 – Zone permission configuration descriptor for source zone group for 256 zone groups ............ 883
Table 387 – Zone permission configuration descriptor bit requirements ...................................................... 884
Table 388 – CONFIGURE ZONE PERMISSION TABLE response.............................................................. 884
Table 389 – CONFIGURE ROUTE INFORMATION request........................................................................ 886
Table 390 – CONFIGURE ROUTE INFORMATION response ..................................................................... 887
Table 391 – PHY CONTROL request ........................................................................................................... 889
Table 392 – PHY OPERATION field................................................................................................................... 891
Table 393 – PROGRAMMED MINIMUM PHYSICAL LINK RATE field and PROGRAMMED MAXIMUM PHYSICAL
LINK RATE field .......................................................................................................................................... 893
Table 394 – ENABLE SAS SLUMBER field.......................................................................................................... 894
Table 395 – ENABLE SAS PARTIAL field ........................................................................................................... 894
Table 396 – ENABLE SATA SLUMBER field........................................................................................................ 895
Table 397 – ENABLE SATA PARTIAL field.......................................................................................................... 895
Table 398 – PWR_DIS CONTROL field .............................................................................................................. 896
Table 399 – PHY CONTROL response ........................................................................................................ 896
Table 400 – PHY TEST FUNCTION request ................................................................................................ 898
Table 401 – PHY TEST FUNCTION field ............................................................................................................ 900
Table 402 – PHY TEST FUNCTION PHYSICAL LINK RATE field ............................................................................. 901
Table 403 – PHY TEST FUNCTION response ............................................................................................. 901
Table 404 – CONFIGURE PHY EVENT request .......................................................................................... 903
Table 405 – Phy event configuration descriptor............................................................................................ 904
Table 406 – CONFIGURE PHY EVENT response ....................................................................................... 905
Table A.1 – JTPAT for RD+ and RD- ............................................................................................................ 906
Table A.2 – CJTPAT ..................................................................................................................................... 908
Table A.3 – CJTPAT with fixed content ........................................................................................................ 914
Table C.1 – CRC examples while SAS dword mode is enabled................................................................... 924
Table C.2 – CRC examples while SAS packet mode is enabled .................................................................. 925
Table D.1 – Example forward error correction coding results ....................................................................... 933
Table E.1 – Monte-Carlo simulation results .................................................................................................. 936
Table E.2 – Hash results for simple SAS addresses .................................................................................... 939
Table E.3 – Hash results for realistic SAS addresses................................................................................... 939
Table E.4 – Hash results for a walking ones pattern..................................................................................... 940
Table E.5 – Hash results for a walking zeros pattern.................................................................................... 941
Table F.1 – SAS dword mode scrambler examples...................................................................................... 945
Table F.2 – Initial SAS dword mode scrambler output.................................................................................. 946
Table F.3 – 8-bit pattern generator values produced after initialization of scrambler by PACKET_SYNC ... 949
Table H.1 – Minimum deletable primitive insertion rate examples while in the SAS dword mode ................ 954
Table H.2 – Minimum insertion rate examples while in the SAS packet mode ............................................. 955
Table I.1 – Zone permission table example initial value ............................................................................... 956
Table I.2 – CONFIGURE ZONE PERMISSION TABLE request example .................................................... 957
Table I.3 – Zone permission table after processing first zone permission configuration descriptor.............. 958
Table I.4 – Zone permission table after processing second zone permission configuration descriptor ........ 959
Table K.1 – Column descriptions for connection examples .......................................................................... 962
Table L.1 – Primitives with Hamming distance of at least 7.......................................................................... 982
Table L.2 – Primitives without Hamming distance of 7 ................................................................................. 985
Table L.3 – Deletable binary primitives ......................................................................................................... 985
Table L.4 – Binary primitives used outside SAS logical link connections ..................................................... 988
Table L.5 – Binary primitives used inside SAS logical link connections........................................................ 989
Table L.6 – Binary primitives used inside and outside SAS logical link connections .................................... 991
Table L.7 – Unassigned binary primitives ..................................................................................................... 993
Table L.8 – Extended binary primitives ......................................................................................................... 996

Working Draft SAS Protocol Layer - 5 (SPL-5) xliii


T10/BSR INCITS 554 Revision 11 18 January 2021

Table M.1 – Standards bodies ...................................................................................................................... 999


Table O.1 – Terminology name mapping to SPL-3..................................................................................... 1003
Table O.2 – Field name mapping to SPL-3................................................................................................. 1003

xliv Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) xlv


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 55 – Extending a ZPSDS example .................................................................................................... 134


Figure 56 – Overtaking a ZPSDS example ................................................................................................... 135
Figure 57 – Zoning expander route table ...................................................................................................... 142
Figure 58 – SAS bit transmission logic ......................................................................................................... 173
Figure 59 – SAS bit reception logic .............................................................................................................. 174
Figure 60 – SPL packet formats with error correction information ................................................................ 176
Figure 61 – Examples of primitive segment alignment ................................................................................. 184
Figure 62 – Forward error correction encoding and transmission ................................................................. 189
Figure 63 – Forward error correction reception and decoding ...................................................................... 192
Figure 64 – Transmitter path interleaving two SPL packets .......................................................................... 194
Figure 65 – Receive path deinterleaving two SPL packets ........................................................................... 197
Figure 66 – OOB signal transmission ........................................................................................................... 199
Figure 67 – OOB signal detection ................................................................................................................. 201
Figure 68 – TTIU transmitter BMC encoding ................................................................................................ 206
Figure 69 – TTIU bit cell transmitter encoding .............................................................................................. 207
Figure 70 – TTIU bit cell receiver decoding .................................................................................................. 208
Figure 71 – SATA OOB sequence ................................................................................................................ 217
Figure 72 – SATA speed negotiation sequence ........................................................................................... 217
Figure 73 – SAS to SATA OOB sequence .................................................................................................... 219
Figure 74 – SAS to SAS OOB sequence ...................................................................................................... 221
Figure 75 – SNW-1, SNW-2, and Final-SNW ............................................................................................... 225
Figure 76 – SNW-3 ....................................................................................................................................... 227
Figure 77 – Train_Tx-SNW while in the SAS dword mode ........................................................................... 228
Figure 78 – Train_Tx-SNW while in the SAS packet mode .......................................................................... 229
Figure 79 – Pattern marker transmission while in the SAS dword mode ...................................................... 230
Figure 80 – Pattern marker transmission while in the SAS packet mode ..................................................... 231
Figure 81 – Valid pattern marker detection while in SAS dword mode ......................................................... 232
Figure 82 – Valid pattern marker detection while in SAS packet mode ........................................................ 233
Figure 83 – Train_Rx-SNW while in SAS dword mode ................................................................................. 234
Figure 84 – Train_Rx-SNW while in SAS packet mode ................................................................................ 236
Figure 85 – SAS speed negotiation sequence SNW flowchart ..................................................................... 238
Figure 86 – SAS speed negotiation sequence (both phys SNW-1 through Train_Rx-SNW with no
Train_Tx-SNW) ....................................................................................................................................... 240
Figure 87 – SAS speed negotiation sequence (both phys SNW-1 through Train_Rx-SNW with
Train_Tx-SNW) ....................................................................................................................................... 241
Figure 88 – SAS speed negotiation sequence (phy A: SNW-1 through SNW-3, phy B: SNW-2 only) .......... 242
Figure 89 – SAS speed negotiation sequence (phy A: SNW-3 only, phy B: SNW-1 only) ............................ 243
Figure 90 – SAS speed negotiation sequence - phy reset problem in Final-SNW ........................................ 244
Figure 91 – SAS speed negotiation sequence - phy reset problem in SNW-3 .............................................. 245
Figure 92 – SAS speed negotiation sequence - phy reset problem in Train_Rx-SNW ................................. 246
Figure 93 – SAS speed negotiation sequence - multiple Train_Rx-SNWs ................................................... 247
Figure 94 – Local phy achieves pattern lock before the attached phy achieves pattern lock ........................ 249
Figure 95 – Local phy achieves pattern lock after the attached phy achieves pattern lock ........................... 250
Figure 96 – Attached receiver handshake sequence (requesting two increments to coefficient 1) ............... 252
Figure 97 – Attached receiver handshake sequence (requesting one decrement and one increment to
coefficient 1) ............................................................................................................................................ 253
Figure 98 – Handshake sequence to set local phy’s receiver coefficients to no_equalization
values (attached phy) .............................................................................................................................. 255
Figure 99 – Handshake sequence to set local phy’s receiver coefficients to no_equalization
values (local phy) .................................................................................................................................... 256
Figure 100 – Local phy’s receiver indicates completion of training before the attached phy’s receiver
completes training ................................................................................................................................... 257
Figure 101 – Attached phy’s receiver indicates completion of training before the local phy’s receiver
completes training ................................................................................................................................... 258
Figure 102 – Processing an invalid TTIU ...................................................................................................... 260
Figure 103 – Hot-plug and the phy reset sequence ...................................................................................... 261
Figure 104 – SP transmitter adjustment procedure ...................................................................................... 262

xlvi Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 105 – Transition to active phy power condition .................................................................................. 263


Figure 106 – Hot plug and low phy power condition ..................................................................................... 264
Figure 107 – SP (phy layer) state machine - OOB sequence states ............................................................. 272
Figure 108 – SP (phy layer) state machine - SAS speed negotiation states ................................................. 279
Figure 109 – SP (phy layer) state machine - SAS speed negotiation states for SNW-3 and
Train_Rx-SNW and Train_Tx-SNW ........................................................................................................ 280
Figure 110 – SP (phy layer) state machine - SAS phy power condition states ............................................. 293
Figure 111 – SP (phy layer) state machine - SATA host emulation states .................................................... 297
Figure 112 – SP (phy layer) state machine – SATA port selector state ........................................................ 302
Figure 113 – SP (phy layer) state machine - SATA spinup hold state .......................................................... 303
Figure 114 – SP_DWS (phy layer dword synchronization) state machine .................................................... 306
Figure 115 – SP_PS (phy layer SPL packet synchronization) state machine ............................................... 313
Figure 116 – SPL packet payload primitive decoding ................................................................................... 315
Figure 117 – Unpacking SPL packet ............................................................................................................ 316
Figure 118 – SP_ReSync (phy layer resynchronization) state machine ....................................................... 321
Figure 119 – PTT_T (phy layer transmitter training transmit pattern) state machine .................................... 330
Figure 120 – PTT_R (phy layer transmitter training receive pattern) state machine ..................................... 338
Figure 121 – PTT_SC1, PTT_SC2, and PTT_SC3 (phy layer transmitter training set transmitter
coefficient) state machines ...................................................................................................................... 346
Figure 122 – PTT_GC1, PTT_GC2, and PTT_GC3 (phy layer transmitter training get transmitter
coefficient) state machines ...................................................................................................................... 351
Figure 123 – PTT_PL (phy layer transmitter training pattern lock) state machine ........................................ 355
Figure 124 – PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine .......................................................................................................................................... 365
Figure 125 – PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
state machine .......................................................................................................................................... 368
Figure 126 – PAPTA_TC (phy layer SP receiver management of attached SP transmitter coefficient
adjustments) state machines ................................................................................................................... 372
Figure 127 – Transmitting a repeated primitive sequence ............................................................................ 392
Figure 128 – Receiving a repeated primitive sequence ................................................................................ 392
Figure 129 – Extended primitive sequences while in the SAS dword mode ................................................. 393
Figure 130 – Extended primitive sequences while in the SAS packet mode ................................................ 394
Figure 131 – Triple primitive sequences while in the SAS dword mode ....................................................... 395
Figure 132 – Triple primitive sequences while in the SAS packet mode ....................................................... 396
Figure 133 – Redundant primitive sequences while in the SAS dword mode ............................................... 397
Figure 134 – Redundant primitive sequences while in the SAS packet mode .............................................. 398
Figure 135 – Elasticity buffer with phys in the SAS dword mode .................................................................. 428
Figure 136 – Elasticity buffer with phys in the SAS packet mode ................................................................. 429
Figure 137 – Address frame, SSP frame, and SMP frame CRC bit ordering ................................................ 435
Figure 138 – STP frame CRC bit ordering .................................................................................................... 436
Figure 139 – Transmit path bit ordering while in the SAS dword mode ........................................................ 440
Figure 140 – Receive path bit ordering while in the SAS dword mode ......................................................... 441
Figure 141 – STP transmit path bit ordering ................................................................................................. 442
Figure 142 – STP receive path bit ordering .................................................................................................. 443
Figure 143 – Transmit path bit ordering while in the SAS packet mode ........................................................ 444
Figure 144 – Receive path bit ordering while in the SAS packet mode ......................................................... 445
Figure 145 – Address frame transmission .................................................................................................... 445
Figure 146 – Identification sequence ............................................................................................................ 456
Figure 147 – Hard reset sequence ............................................................................................................... 457
Figure 148 – SL_IR (link layer identification and hard reset) state machines ............................................... 459
Figure 149 – Transitioning from the active phy power condition to a low phy power condition ..................... 465
Figure 150 – SL_P_S (link layer power source device) state machine ......................................................... 468
Figure 151 – SL_P_C (link layer power consumer device) state machine .................................................... 473
Figure 152 – Example simultaneous connection recommendations for wide ports ...................................... 479
Figure 153 – Aborting a connection request with a BREAK primitive sequence ........................................... 489
Figure 154 – Connection request timeout example ...................................................................................... 490
Figure 155 – Closing a connection example ................................................................................................. 491

Working Draft SAS Protocol Layer - 5 (SPL-5) xlvii


T10/BSR INCITS 554 Revision 11 18 January 2021

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

xlviii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) xlix


T10/BSR INCITS 554 Revision 11 18 January 2021

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:

AIM Global Inc IEEE

Adobe Systems Inc Hewlett Packard Inc.

American National Standards Institute Hewlett Packard Enterprise

Apple IBM Corporation

Dell Inc. Intel Corporation

Department of Commerce - NIST Microsoft Corporation

Distributed Management Task Force


Oracle
(DMTF)

Farance Inc. Purdue University

Telecommunications Industry
Futurewei Technologies Inc
Association (TIA)

United States Dept of Homeland


GS1GO
Security

l Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Organization Represented Name of Representative


Amphenol Corporation ......................................................... Gregory McSorley
Brad Brubaker (Alt.)
David Chan (Alt.)
Paul Coddington (Alt.)
Zhineng Fan (Alt.)
Adrian Green (Alt.)
Donald Harper (Alt.)
Yifan Huang (Alt.)
Martin Li (Alt.)
Chris Lyon (Alt.)
Alex Persaud (Alt.)
Chansy Phommachanh (Alt.)
Michael Scholeno (Alt.)
Michael Wingard (Alt.)
CN Wong (Alt.)
Matt Wright (Alt.)
Broadcom Limited ................................................................ Brad Besmer
Patrick Bashford (Alt.)
Srikiran Dravida (Alt.)
Jeffrey Gauvin (Alt.)
Rick Kutcipal (Alt.)
Bernhard Laschinsky (Alt.)
Mohammad Mobin (Alt.)
Robert Sheffield (Alt.)
James Smart (Alt.)
Jason Stuhlsatz (Alt.)
Pat Thaler (Alt.)
Bill Voorhees (Alt.)
Brocade................................................................................ David Peterson
Scott Kipp (Alt.)
Steven Wilson (Alt.)
Dell Inc. ................................................................................ David Black
Mark Bokhan (Alt.)
Erin Bournival (Alt.)
George Ericson (Alt.)
Mickey Felton (Alt.)
Christopher Goonan (Alt.)
Gary Kotzur (Alt.)
Bill Lynn (Alt.)
Kevin Marks (Alt.)
Ash McCarty (Alt.)
Daniel Oelke (Alt.)
Marlon Ramroopsingh (Alt.)
ENDL Texas ......................................................................... Ralph Weber
Foxconn Electronics............................................................. Fred Fons
Gary Hsieh (Alt.)
Glenn Moore (Alt.)
Mike Shu (Alt.)
Miller Zhao (Alt.)

Working Draft SAS Protocol Layer - 5 (SPL-5) li


T10/BSR INCITS 554 Revision 11 18 January 2021

Fujitsu America Inc............................................................... Kun Katsumata


Osamu Kimura (Alt.)
Mark Malcolm (Alt.)
Gene Owens (Alt.)
Hewlett Packard Enterprise.................................................. Curtis Ballard
Wayne Bellamy (Alt.)
Chris Cheng (Alt.)
Rob Elliott (Alt.)
Joe Foster (Alt.)
Barry Olawsky (Alt.)
Neil Wanamaker (Alt.)
Han Wang (Alt.)
Jeff Wolford (Alt.)
IBM Corporation ................................................................... Kevin Butt
Mike Osborne (Alt.)
Intel Corporation................................................................... Chunfei Ye
Marvell Semiconductor Inc................................................... Paul Wassenberg
Wei Liu (Alt.)
Wei Zhou (Alt.)
Micron Technology Inc ......................................................... Carl Mies
Jerry Barkley (Alt.)
Andrew Dunn (Alt.)
Roy Feng (Alt.)
Neal Galbo (Alt.)
Michael George (Alt.)
Alan Haffner (Alt.)
Daniel Hubbard (Alt.)
Sebastien Jean (Alt.)
Michael Selzler (Alt.)
Microsemi............................................................................. Tim Symons
Sanjay Goyal (Alt.)
Vincent Hache (Alt.)
David Hong (Alt.)
Adnan Jiwani (Alt.)
Keith Shaw (Alt.)
Ariel Sibley (Alt.)
Gregory Tabor (Alt.)
Jeremiah Tussey (Alt.)
Rod Zavari (Alt.)
Molex Inc.............................................................................. Jay Neer
Alex Haser (Alt.)
Ed Poh (Alt.)
Michael Rost (Alt.)
Darian Schulz (Alt.)
Scott Sommers (Alt.)
NetApp Inc ........................................................................... Frederick Knight
Chris Fore (Alt.)
Jaimon George (Alt.)
Oracle................................................................................... Dennis Appleyard
Jon Allen (Alt.)
Seth Goldberg (Alt.)
Hyon Kim (Alt.)
Martin Petersen (Alt.)
Phi Tran (Alt.)
Lee Wan-Hui (Alt.)
QLogic.................................................................................. Craig Carlson
Quantum Corporation........................................................... Darryl Torske

lii Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Samsung Semiconductor Inc (SSI) ...................................... William Martin


Judy Brock (Alt.)
HeeChang Cho (Alt.)
KeunSoo Jo (Alt.)
Sung Lee (Alt.)
Bhavith M.P. (Alt.)
Truong Nguyen (Alt.)
Aishwarya Ravichandran (Alt.)
Seagate Technology............................................................. Gerald Houlder
Alvin Cox (Alt.)
Ian Davies (Alt.)
Neil Edmunds (Alt.)
Timothy Feldman (Alt.)
John Fleming (Alt.)
Jim Hatfield (Alt.)
Tony Kilwein (Alt.)
Parag Maharana (Alt.)
Alan Westbury (Alt.)
Judy Westby (Alt.)
TE Connectivity .................................................................... Dan Gorenc
Tom Grzysiewicz (Alt.)
Kyle Klinger (Alt.)
Jeffery Mason (Alt.)
Joel Meyers (Alt.)
Andy Nowak (Alt.)
Eric Powell (Alt.)
Yasuo Sasaki (Alt.)
Toshiba America Electronic Components Inc....................... Tom Friend
Mark Carlson (Alt.)
Kambiz Esmaily (Alt.)
Don Harwood (Alt.)
Johanna Hernandez (Alt.)
Patrick Hery (Alt.)
Yuji Katori (Alt.)
Tom McGoldrick (Alt.)
James Welch (Alt.)
Scott Wright (Alt.)
VMware Inc .......................................................................... Murali Rajagopal
Deepak Babarjung (Alt.)
Patrick Dirks (Alt.)
Neil H. MacLean (Alt.)
Mike Panas (Alt.)
Ahmad Tawil (Alt.)

Working Draft SAS Protocol Layer - 5 (SPL-5) liii


T10/BSR INCITS 554 Revision 11 18 January 2021

Western Digital Corporation ................................................. Curtis Stevens


Joe Breher (Alt.)
David Brewer (Alt.)
Jorge Campello (Alt.)
Frank Chu (Alt.)
Marvin DeForest (Alt.)
Kirill Dimitrov (Alt.)
Jason Gao (Alt.)
Michael Koffman (Alt.)
Dave Landsman (Alt.)
Larry McMillan (Alt.)
Chet Mercado (Alt.)
Nadesan Narenthiran (Alt.)
Nathan Obr (Alt.)
Christopher Reed (Alt.)
Avraham Shimor (Alt.)
Yoni Shternhell (Alt.)

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.

liv Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) lv


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 0 shows the organization of the layers of this standard.

Management
SCSI application layer ATA application layer Clause 9
application layer

SSP transport layer STP transport layer SMP transport layer Clause 8

SAS port layer Clause 7

SSP link layer STP link layer SMP link layer


Clause 6
SAS link layer

SAS phy layer Clause 5

Figure 0 – Organization of this standard

lvi Working Draft SAS Protocol Layer - 5 (SPL-5)


AMERICAN NATIONAL STANDARD BSR INCITS 554-201x

American National Standard


for Information Technology -

SAS Protocol Layer - 5 (SPL-5)


1 Scope

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))

Direct-access block device


SSC-3 (ISO/IEC 14776-333)) SPC-6 (ISO/IEC 14776-456)
SCSI Architecture Model

command set
SBC-3 (ISO/IEC 14776-323)

SCSI transport protocols (e.g.,


FCP-3 (ISO/IEC 14776-223),
this standard)

Interconnects (e.g.,
SPI-5 (ISO/IEC 14776-115),
SAS-4 (ISO/IEC 14776-155))

Figure 1 – SCSI document relationships

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 1


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 2 shows the relationship of this standard to other standards and related projects in the ATA family of
standards.

(Packet-delivered command sets)


ATA/ATAPI
Command Set-4 Primary command set
ATA/ATAPI-8 Architecture Model
(ATA8-AAM (INCITS 451-2008))

Device-type specific command


ACS-4 (T13/BSR (shared for all device types)
sets
INCITS 529) (SPC-6 (ISO/IEC 14776-456))

ATA transport protocols (e.g.,


STP in this standard,
Serial ATA Revision 3.3)

ATA physical interconnects (e.g.,


SAS-4 (T10/BSR INCITS 534),
Serial ATA Revision 3.3)

Figure 2 – ATA document relationships

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 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

SFF-8485, Serial GPIO (SGPIO) Bus


SFF-8609, Management Interface for Drive Conditions
SFF-9639, Reference Guide for Multifunction 6X Unshielded Connector Pinouts

NOTE 2 - For more information on the current status of SFF documents, contact the Storage Networking
Industry Association (SNIA) (see www.snia.org/sff).

Working Draft SAS Protocol Layer - 5 (SPL-5) 3


T10/BSR INCITS 554 Revision 11 18 January 2021

3 Terms, definitions, symbols, abbreviations, keywords, and conventions

3.1 Terms and definitions

3.1.1 8b10b coding


coding scheme that represents an 8-bit byte (i.e., a control byte or data byte) as a 10-bit character (i.e., a
control character or data character)
Note 1 to entry: See 5.2.

3.1.2 8b10b encoding


method of encoding an 8-bit byte (i.e., a control byte or data byte) into a 10-bit character (i.e., a control
character or data character)
Note 1 to entry: See 5.2.

3.1.3 10b8b decoding


method for decoding a 10-bit character (i.e., a control character or data character) into an 8-bit byte (i.e., a
control byte or data byte)
Note 1 to entry: See 5.2.

3.1.4 active cable assembly


cable assembly (see SAS-4) that requires power for internal circuitry used in the transmission of the signal
through the cable assembly
Note 1 to entry: See SAS-4.

3.1.5 active phy power condition


normal power condition for a SAS phy or expander phy
Note 1 to entry: See 4.11.1.2.

3.1.6 active phy transmitter adjustment


adjustment of the SP transmitter coefficients without causing a link reset sequence or a link layer error

3.1.7 active zone manager


zone manager (see 3.1.290) that locks a zoning expander device (see 3.1.294)
Note 1 to entry: See 4.9.6.

3.1.8 address frame segment


SPL packet payload that contains four data dwords of an address frame

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.10 affiliation context


set of registers maintained by an STP target port for an STP initiator port holding an affiliation
Note 1 to entry: See 6.21.6.

4 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.12 application client


object that is the source of SCSI commands and task management function requests (see SAM-5), ATA
commands (see ATA8-AAM), or SMP function requests
Note 1 to entry: See 4.1.4.

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.14 AT Attachment (ATA)


standard for the internal attachment of storage devices to hosts
Note 1 to entry: See ATA8-AAM.

3.1.15 ATA device


storage peripheral that processes ATA commands and device management functions
Note 1 to entry: Analogous to a SCSI target device (see 3.1.220).
Note 2 to entry: See ATA8-AAM.

3.1.16 ATA domain


I/O system consisting of an ATA host and one or more ATA devices that communicate with one another by
means of a service delivery subsystem (see 3.1.228)
Note 1 to entry: Analogous to a SCSI domain (see 3.1.216).
Note 2 to entry: See ATA8-AAM.

3.1.17 ATA host


host device that originates requests to be processed by an ATA device
Note 1 to entry: Analogous to a SCSI initiator device (see 3.1.217).
Note 2 to entry: See ATA8-AAM.

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.19 attached SAS address


SAS address (see 3.1.190) of the attached phy or the SAS address of the STP target port in an STP SATA
bridge (see 4.5.2)
Note 1 to entry: For example, the SAS address of an attached phy may be received in the incoming
IDENTIFY address frame during the initialization sequence (see 4.1.2).

Working Draft SAS Protocol Layer - 5 (SPL-5) 5


T10/BSR INCITS 554 Revision 11 18 January 2021

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.22 binary primitive


dword in an SPL packet that contains primitives in which the PRIMITIVE SYNCHRONIZE SELECT field, CONTROL1
field, CONTROL2 field, or CONTROL3 field is set to 01b and the remaining 30 bits contain binary data

3.1.23 bi-phase mark code (BMC)


encoding in which a transition occurs at the beginning of each TTIU bit cell (see 3.1.279), a one is represented
by a transition in the middle of the TTIU bit cell, and a zero is represented by no transition within the TTIU bit
cell
Note 1 to entry: See 5.9.

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.25 broadcast propagation processor (BPP)


object within an expander function (see 3.1.77) that manages Broadcasts (see 3.1.24)
Note 1 to entry: See 4.5.5.

3.1.26 burst time


part of an OOB signal where the OOB burst is transmitted
Note 1 to entry: See SAS-4.

3.1.27 byte
sequence of eight contiguous bits considered as a unit

3.1.28 cable assembly


bulk cable with a separable connector at each end plus any retention, backshell, shielding features, or circuitry
used for cable management or signal transmission
Note 1 to entry: See SAS-4.

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.

6 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.31 class diagram


diagram that shows a collection of classes and their contents and relationships
Note 1 to entry: See 3.6.

3.1.32 codeword
message symbols and parity check symbols that are an indivisible group

3.1.33 command descriptor block (CDB)


structure used to communicate a command from a SCSI application client to a SCSI device server
Note 1 to entry: See SAM-5.

3.1.34 command identifier


numerical identifier of the command
Note 1 to entry: In this standard command identifier is synonymous with initiator port transfer tag.
Note 2 to entry: See SAM-5.

3.1.35 commonly supported setting


supported settings bit (see table 70) with a value set to one by both the phy and the attached phy as
transmitted during the most recent SNW-3

3.1.36 compliant jitter tolerance pattern (CJTPAT)


test pattern for jitter testing
Note 1 to entry: See A.2 and SAS-4.

3.1.37 configuration subprocess


subprocess invoked from the discover process (see 3.1.66) to configure an externally configurable expander
device (see 3.1.85)
Note 1 to entry: See 4.8.

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.40 connection rate


effective rate of dwords through the pathway (see 3.1.153) between a SAS initiator phy and a SAS target phy,
established through the connection request

3.1.41 connection request


request to establish a connection originated by a SAS phy (see 3.1.200) using an OPEN address frame (see
6.10.3)
Note 1 to entry: See 6.16.2.1.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 7


T10/BSR INCITS 554 Revision 11 18 January 2021

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.44 control byte


byte containing control information defined in table 49
Note 1 to entry: See 5.3.7.

3.1.45 control character (Kxx.y)


character containing control information defined in table 49
Note 1 to entry: See 5.3.7.

3.1.46 credit advance


SSP phy feature that increments a transmit SSP frame credit on receipt of an OPEN address frame without
waiting for an RRDY
Note 1 to entry: See 4.1.14.

3.1.47 cyclic redundancy check (CRC)


error checking mechanism that checks data integrity by computing a polynomial algorithm based checksum
Note 1 to entry: See 6.7.

3.1.48 D.C. idle


differential signal level that is nominally 0 V peak-to-peak
Note 1 to entry: See SAS-4.

3.1.49 D.C. mode


mode in which D.C. idle is used, during the idle time and negation time of an OOB signal (see SAS-4), and
during the RCDT time of speed negotiation windows (see 5.11.4.2.2)

3.1.50 data byte


byte containing data information defined in table 48
Note 1 to entry: See 5.3.6.

3.1.51 data character (Dxx.y)


character containing data information defined in table 48 (see 5.2)
Note 1 to entry: See 5.3.6.

3.1.52 data dword


dword containing four data bytes or four data characters with correct disparity

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.54 deletable binary primitive


binary primitive that may be deleted by a receiver instead of being placed into its elasticity buffer (see 6.4)
Note 1 to entry: See 6.3.4.

8 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.55 deletable extended binary primitive


extended binary primitive that may be deleted by a receiver instead of being placed into its elasticity buffer
(see 6.4)
Note 1 to entry: See 6.4.1.

3.1.56 deletable primitive


primitive which may be deleted by a receiver instead of being placed into its elasticity buffer (see 6.5)
Note 1 to entry: See 6.2.5.

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.58 device name


worldwide unique name for a device within a transport protocol
Note 1 to entry: See 4.2.6.

3.1.59 device server


object that processes SCSI commands (see SAM-5), ATA commands (see ATA8-AAM), or SMP functions
Note 1 to entry: See 4.1.4.

3.1.60 device type


device model implemented by the logical unit and indicated to the application client by the contents of the
PERIPHERAL DEVICE TYPE field in the standard INQUIRY data (see SPC-6)

3.1.61 differential high signal level


signal level that exists when the Tx+ signal of a transmitter circuit (see SAS-4) is higher than the voltage
measured on the Tx- signal of a transmitter circuit

3.1.62 differential low signal level


signal level that exists when the Tx+ signal of a transmitter circuit (see SAS-4) is lower than the voltage
measured on the Tx- signal of a transmitter circuit

3.1.63 direct current (D.C.)


non-alternating current component (see SAS-4) of a signal
Note 1 to entry: See SAS-4.

3.1.64 direct routing attribute


attribute of an expander phy that indicates that the expander phy may be used by the ECM (see 3.1.74) to
route a connection request to an end device
Note 1 to entry: See 4.5.7.1.

3.1.65 direct routing method


method the ECM (see 3.1.74) uses to route connection requests to an attached end device or an attached
expander device
Note 1 to entry: See 4.5.7.1.

Working Draft SAS Protocol Layer - 5 (SPL-5) 9


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.66 discover process


process performed by a management application client to discover all the SAS devices and expander devices
in the SAS domain
Note 1 to entry: The discover process invokes the configuration subprocess (see 3.1.37) as needed.
Note 2 to entry: See 4.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.70 dword synchronization


detection of an incoming stream of dwords from a physical link by a phy
Note 1 to entry: See 5.15.

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.72 end device


SAS device (see 3.1.191) or SATA device (see 3.1.205) that is not contained within an expander device (see
3.1.76)

3.1.73 event notification


information passed from the SSP transport layer to the SCSI application layer notifying the SCSI application
layer that a SCSI event has occurred
Note 1 to entry: See SAM-5.

3.1.74 expander connection manager (ECM)


an object within an expander function (see 3.1.77) that manages routing
Note 1 to entry: See 4.5.3.

3.1.75 expander connection router (ECR)


portion of an expander function (see 3.1.77) that routes messages between expander phys
Note 1 to entry: See 4.5.4.

10 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.76 expander device


device that is part of a service delivery subsystem (see 3.1.228), facilitates communication between SAS
devices (see 3.1.191) and SATA devices (see 3.1.205), and is either an externally configurable expander
device (see 3.1.85) or a self-configuring expander device (see 3.1.222)
Note 1 to entry: See 4.1.6.

3.1.77 expander function


object within an expander device (see 3.1.76) that contains an expander connection manager (see 3.1.74),
expander connection router (see 3.1.75), and a BPP (see 3.1.25)
Note 1 to entry: See 4.5.1.

3.1.78 expander logical phy


expander phy (see 3.1.79) or portion of a phy used for SAS logical link connections
Note 1 to entry: See 4.1.2.

3.1.79 expander phy


phy in an expander device (see 3.1.76) that interfaces to a service delivery subsystem (see 3.1.228)

3.1.80 expander port


expander device object that interfaces to a service delivery subsystem (see 3.1.228) and to SAS ports in other
devices
Note 1 to entry: See 4.5.2.

3.1.81 expander route entry


SAS address and an enable/disable bit in an expander route table (see 3.1.83)

3.1.82 expander route index


value used in combination with a phy identifier to select an expander route entry in an expander route table
(see 3.1.83) in an externally configurable expander device (see 3.1.85)
Note 1 to entry: See 4.5.7.4.

3.1.83 expander route table


table of expander route entries (see 3.1.81) within an expander device (see 3.1.76)
Note 1 to entry: The table is used by the expander function (see 3.1.77) to resolve connection requests.
Note 2 to entry: See 4.5.7.4.

3.1.84 extended binary primitive


SPL packet that contains a primitive in which the PRIMITIVE SYNCHRONIZE SELECT field is set to 10b and the
remaining 126 bits contain binary data

3.1.85 externally configurable expander device


non-self-configuring expander device (see 3.1.76) containing an expander route table (see 3.1.83)
Note 1 to entry: An externally configurable expander device is configurable with the SMP CONFIGURE
ROUTE INFORMATION function (see 9.4.4.27)
Note 2 to entry: See 4.1.6.

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 11


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.88 forward error correction


transmitted information that is used to check and attempt to correct a received SPL packet

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.90 frame information structure (FIS)


SATA frame format
Note 1 to entry: See SATA.

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.92 hard reset


SAS device or expander device action in response to a reset event in which the device performs the
operations described in 4.4.2

3.1.93 hard reset sequence


sequence that causes a hard reset (see 3.1.92)
Note 1 to entry: See 4.4 and 6.11.

3.1.94 hardware maximum physical link rate


maximum physical link rate capability of a phy

3.1.95 hardware minimum physical link rate


minimum physical link rate capability of a phy

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.97 highest priority commonly supported setting


commonly supported setting based on the priority defined in table 72

3.1.98 I_T nexus


nexus between a SAS initiator port and a SAS target port or a nexus between a SCSI initiator port and a SCSI
target port
Note 1 to entry: When referring to SAS ports (see 3.1.201), a nexus between a SAS initiator port and a SAS
target port.
Note 2 to entry: When referring to SCSI ports (see 3.1.219), a nexus between a SCSI initiator port and a SCSI
target port.
Note 3 to entry: See SAM-5.

12 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.99 I_T nexus loss


condition where a SAS port determines that another SAS port is no longer available or an I_T nexus loss
operation occurs in a SCSI port
Note 1 to entry: When referring to SAS ports (see 3.1.201), a condition where a SAS port determines that
another SAS port is no longer available.
Note 2 to entry: When referring to SCSI ports (see 3.1.219) (e.g., SSP ports), a condition resulting from the
events defined by SAM-5 in which the SCSI device performs the I_T nexus loss operations described in
SAM-5, SPC-6, and the appropriate command standards.
Note 3 to entry: See 4.4.3 and SAM-5.

3.1.100 I_T nexus loss event


event that results in an I_T nexus loss condition (see SAM-5)
Note 1 to entry: See 4.4.3 and SAM-5.

3.1.101 I_T nexus loss timer event


event that starts an I_T nexus loss timer (see 7.2.2.1)
Note 1 to entry: See 4.4.3.

3.1.102 I_T_L nexus


nexus between a SCSI initiator port, a SCSI target port, and a logical unit
Note 1 to entry: See SAM-5.

3.1.103 identification sequence


sequence where phys exchange IDENTIFY address frames
Note 1 to entry: See 4.4 and 6.11.

3.1.104 idle dword


data dword that is transmitted outside a frame
Note 1 to entry: See 6.6.

3.1.105 idle dword segment


SPL packet payload that contains four idle dwords (see 6.6) and is transmitted outside a frame

3.1.106 idle time


part of an OOB signal (see 3.1.147) where OOB idle (see 3.1.145) is being transmitted
Note 1 to entry: See 5.7.

3.1.107 IEEE-Administered Organizational Identifier (AOI)


24-bit organizational identifier that is administered by the IEEE
Note 1 to entry: AOIs are defined as administered organizational identifiers in the IEEE "Guidelines for Use of
Extended Unique Identifier (EUI), Organizationally Unique Identifier (OUI), and Company_ID (CID)" (see
https://standards.ieee.org/content/dam/ieee-standards/standards/web/documents/tutorials/eui.pdf).
Note 2 to entry: The IEEE defines some AOI values that are larger than 24 bits. Only 24-bit AOI values are
used by this standard.
Note 3 to entry: AOI values are available from the IEEE-SA Registration Authority (see
https://standards.ieee.org/products-services/regauth/index.html).

Working Draft SAS Protocol Layer - 5 (SPL-5) 13


T10/BSR INCITS 554 Revision 11 18 January 2021

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.109 information unit


portion of an SSP frame that carries command, task management function, data, response, or transfer ready
information
Note 1 to entry: See 8.2.2.

3.1.110 initiator connection tag


value in the OPEN address frame 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
Note 1 to entry: See 6.10.3.

3.1.111 initiator port transfer tag


value that allows an SSP initiator port to establish a context for commands and task management functions
Note 1 to entry: See 8.2.1.

3.1.112 interleaved SPL


interleaving of symbols from two or more SPL packets to be transmitted as an interleaved SPL packet (see
3.1.113)
Note 1 to entry: 5.5.8

3.1.113 interleaved SPL packet


construct that contains two or more SPL packets that are interleaved
Note 1 to entry: 5.5.8

3.1.114 invalid character


character that is not a control character (see 3.1.45) or a data character (see 3.1.51)

3.1.115 invalid dword


dword that is not a data dword, primitive parameter, or a primitive
Note 1 to entry: In the character context, a dword that contains an invalid character, a control character in
other than the first character position, a control character other than K28.3 or K28.5 in the first character
position, or one or more characters with a running disparity error.

3.1.116 invalid SPL packet


SPL packet in which the Reed Solomon code decoding function indicates a decode failure
Note 1 to entry: See 5.5.7.3.

3.1.117 jitter tolerance pattern (JTPAT)


test pattern for jitter testing
Note 1 to entry: See SAS-4.

3.1.118 least significant bit (LSB)


bit or bit position with the smallest numerical weighting in a group of bits that, when taken as a whole,
represent a numerical value
Note 1 to entry: This definition only applies when used in relation to binary codes.
Note 2 to entry: For example in the number 0001b the LSB is the bit that is set to one.

14 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.120 link reset sequence


phy reset sequence
Note 1 to entry: For SATA, a phy reset sequence (see 3.1.159).
Note 2 to entry: For SAS, a phy reset sequence followed by an identification sequence (see 3.1.103), or a phy
reset sequence followed by a hard reset sequence (see 3.1.93), another phy reset sequence, and an
identification sequence.
Note 3 to entry: See 4.4 and 6.11.

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.124 locked zoning expander device


zoning expander device (see 3.1.294) that has been locked by a zone manager (see 3.1.290)
Note 1 to entry: See 4.9.6.2.

3.1.125 logical link


physical link (see 3.1.160)
Note 1 to entry: See 4.1.2 and SAS-4.

3.1.126 logical link rate


link rate between two logical phys established as a result of speed negotiation between the physical phys
containing those logical phys

3.1.127 logical phy


phy (see 3.1.156)
Note 1 to entry: See 4.1.2.

3.1.128 logical unit


object that implements a device model and manages and processes commands sent by a SCSI application
client
Note 1 to entry: See SAM-5.

3.1.129 logical unit number (LUN)


identifier for a logical unit (see 3.1.128)
Note 1 to entry: See SAM-5.

Working Draft SAS Protocol Layer - 5 (SPL-5) 15


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.130 low phy power condition


partial phy power condition or the slumber phy power condition
Note 1 to entry: See 4.11.1.

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.133 most significant bit (MSB)


bit or bit position with the largest numerical weighting in a group of bits that, when taken as a whole, represent
a numerical value
Note 1 to entry: This definition only applies when used in relation to binary codes.
Note 2 to entry: For example, in the number 1000b, the bit that is set to one.

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.135 narrow link


physical link that attaches a narrow port to another narrow port
Note 1 to entry: See 4.1.3.

3.1.136 narrow port


port that contains exactly one phy
Note 1 to entry: See 4.1.3.

3.1.137 negation time


part of an OOB signal (see 3.1.147) during which OOB idle (see 3.1.145) is transmitted after the last OOB
burst (see 3.1.144)
Note 1 to entry: See 5.7.

3.1.138 negotiated logical link rate


current operational logical link rate (see 3.1.126)

3.1.139 negotiated physical link rate


current operational physical link rate (see 3.1.161)

3.1.140 negotiation idle


transmission of OOB idle (see 3.1.145)
Note 1 to entry: See 5.14.4.2.

16 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.143 object diagram


diagram that encompasses objects and their relationships at a point in time
Note 1 to entry: See 3.6.

3.1.144 OOB burst


transmission of signal transitions for a burst time
Note 1 to entry: See SAS-4.

3.1.145 OOB idle


transmission of D.C. idle when D.C. mode (see 3.1.49) is enabled or a defined sequence of dwords when
optical mode (see 3.1.149) is enabled
Note 1 to entry: See SAS-4.

3.1.146 OOB sequence


sequence where two phys exchange OOB signals (see 3.1.147)
Note 1 to entry: See 5.11.2.1 and 5.11.4.1.

3.1.147 OOB signal


pattern of idle time (see 3.1.106), burst time, and negation time (see 3.1.137) used during the link reset
sequence
Note 1 to entry: See 5.7.

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.149 optical mode


mode in which a defined sequence of dwords is used during the idle time and negation time of an OOB signal
(see SAS-4) and during the RCDT time of speed negotiation windows (see 5.11.4.2.2)

3.1.150 out of band management interface


management interface as defined in 9.4.2

Working Draft SAS Protocol Layer - 5 (SPL-5) 17


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.151 partial pathway


set of logical links participating in a connection request that have not yet conveyed a connection response
Note 1 to entry: See 4.1.11.

3.1.152 partial phy power condition


low phy power condition for a SAS phy or expander phy
Note 1 to entry: See 4.11.1.3.

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.154 pathway blocked count


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)

3.1.155 persistent connection


connection that may be extended indefinitely

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.157 phy identifier


value by which a phy is identified within a device
Note 1 to entry: See 4.2.10.

3.1.158 phy ready state


condition of a phy when its SP state machine (see 5.14) is in the SP15:SAS_PHY_Ready state (see
5.14.4.10)

3.1.159 phy reset sequence


OOB sequence (see 3.1.146) followed by a speed negotiation sequence (see 3.1.239)
Note 1 to entry: See 4.4 and 5.11.

3.1.160 physical link


two differential signal pairs, one pair in each direction, that connect two physical phys
Note 1 to entry: See 4.1.2 and SAS-4.

3.1.161 physical link rate


link rate between two physical phys established as a result of speed negotiation between those phys

3.1.162 physical phy


phy that contains a transceiver and electrically interfaces to a physical link to communicate with another
physical phy
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.

18 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.164 port identifier


value by which a port is identified within a domain
Note 1 to entry: See 4.2.9.

3.1.165 port name


worldwide unique name for a port within a transport protocol
Note 1 to entry: See 4.2.8.

3.1.166 potential pathway


set of logical links between a SAS initiator phy and a SAS target phy
Note 1 to entry: See 4.1.11.

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.169 primitive parameter


one to three dwords containing parameter information associated with a primitive or binary primitive within a
primitive segment

3.1.170 primitive segment


SPL packet payload that contains primitives, binary primitives, a primitive parameter, or an extended binary
primitive

3.1.171 primitive sequence


set of primitives treated as a single entity
Note 1 to entry: See 6.2.4.

3.1.172 programmed maximum physical link rate


maximum operational physical link rate of a phy
Note 1 to entry: The programmed maximum physical link rate may be programmed via the SMP PHY
CONTROL function (see 9.4.4.28) or the Phy Control and Discover mode page (see 9.2.7.5).

3.1.173 programmed minimum physical link rate


minimum operational physical link rate of a phy
Note 1 to entry: The programmed minimum physical link rate may be programmed via the SMP PHY
CONTROL function (see 9.4.4.28) or the Phy Control and Discover mode page (see 9.2.7.5).

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 19


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.175 read data


data transferred to the SCSI application client’s data-in buffer from the SCSI device server, as requested by
the Send Data-In transport protocol service (see 9.2.1.6)

3.1.176 receiver device (Rx)


device downstream from a receiver device compliance point containing a portion of the physical link and a
receiver circuit
Note 1 to entry: See SAS-4.

3.1.177 reduced control character


first character of a primitive that has been reduced from a character to a 2-bit value (see table 63 and table 64)
Note 1 to entry: The first character of a primitive is the control character.

3.1.178 Reed Solomon code


set of nonbinary cyclic error correcting codes where the symbol size determines the maximum codeword size
Note 1 to entry: Reed Solomon codes have:
a) a code length that is at least one less than the number of all possible states that may be assigned to a
symbol; and
b) a smallest possible number of differences between two codewords that is one greater than the
number of parity check symbols.

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.180 reset event


event that triggers a hard reset (see 4.4.2) in a SAS device

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.182 retimer device


device that contains one or more retimer lanes (see 3.1.184)

Note 1 to entry: See 4.1.7.

3.1.183 retimer function


object within a retimer lane that manages the retimer lane (see 3.1.184)

3.1.184 retimer lane


object in a retimer device that consists of a pair of retimer phys (see 3.1.185) and a retimer function (see
3.1.183)

Note 1 to entry: See 4.1.7.

3.1.185 retimer phy


phy in a retimer lane (see 3.1.184) that interfaces to the retimer function (see 3.1.183)

20 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.187 route table optimization


configuration subprocess (see 3.1.37) algorithm that reduces the number of entries required in an expander
route table (see 3.1.83) in an externally configurable expander device (see 3.1.85)
Note 1 to entry: See 4.8.3.

3.1.188 run length


number of consecutive identical bits in the transmitted signal
Note 1 to entry: For example, the pattern 00 11111010b includes the following run lengths of five 1s, one 0,
one 1, and indeterminate run lengths of 0s at the start and end.

3.1.189 running disparity (RD)


binary parameter with a negative (-) or positive (+) value indicating the cumulative encoded signal imbalance
between the one and zero signal state of all characters since dword synchronization has been achieved
Note 1 to entry: See 5.3.5.

3.1.190 SAS address


identifier assigned to a SAS port (see 3.1.201) or expander device (see 3.1.76)
Note 1 to entry: See 4.2.4.

3.1.191 SAS device


SAS initiator device and/or a SAS target device
Note 1 to entry: See 4.1.5.

3.1.192 SAS device type


end device or expander device in a SAS domain

3.1.193 SAS domain


I/O system defined by this standard that may serve as a SCSI domain
Note 1 to entry: See 4.1.9.

3.1.194 SAS dword mode


mode with a physical link rate less than or equal to 12 Gbit/s (i.e., G1, G2, G3, or G4)
Note 1 to entry: See 5.4.
Note 2 to entry: SAS dword mode is enabled at the start of an OOB sequence (see 5.14.3.2).

3.1.195 SAS initiator device


device containing SSP initiator ports, STP initiator ports, and/or SMP initiator ports in a SAS domain
Note 1 to entry: See 4.1.5.

3.1.196 SAS initiator phy


logical phy (see 3.1.127) in a SAS initiator device

3.1.197 SAS initiator port


SSP initiator port (see 3.1.247), STP initiator port (see 3.1.255), and/or SMP initiator port (see 3.1.232) in a
SAS domain

Working Draft SAS Protocol Layer - 5 (SPL-5) 21


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.198 SAS logical phy


SAS phy (see 3.1.200)
Note 1 to entry: See 4.1.2.

3.1.199 SAS packet mode


mode with a physical link rate greater than 12 Gbit/s (i.e., G5)
Note 1 to entry: See 5.4.

3.1.200 SAS phy


phy in a SAS device that interfaces to a service delivery subsystem (see 3.1.228)

3.1.201 SAS port


SAS initiator port (see 3.1.197) and/or a SAS target port (see 3.1.204)

3.1.202 SAS target device


device containing SSP target ports, STP target ports, and/or SMP target ports in a SAS domain
Note 1 to entry: See 4.1.5.

3.1.203 SAS target phy


logical phy (see 3.1.127) in a SAS target device

3.1.204 SAS target port


SSP target port (see 3.1.251), STP target port (see 3.1.261), and/or SMP target port (see 3.1.236) in a SAS
domain

3.1.205 SATA device


ATA device that contains a SATA device port in an ATA domain; analogous to a SAS target device (see
3.1.202)

3.1.206 SATA device port


ATA device object that interfaces to a service delivery subsystem (see 3.1.228) with SATA
Note 1 to entry: Analogous to a SAS target port (see 3.1.204).

3.1.207 SATA host


ATA host that contains a SATA host port in an ATA domain
Note 1 to entry: Analogous to a SAS initiator device (see 3.1.195).

3.1.208 SATA host port


ATA host object that interfaces to a service delivery subsystem (see 3.1.228) with SATA
Note 1 to entry: Analogous to a SAS initiator port (see 3.1.197).

3.1.209 SATA phy


phy in a SATA device or SATA port selector that interfaces to a service delivery subsystem (see 3.1.228)
Note 1 to entry: Analogous to a SAS phy (see 3.1.200).

3.1.210 SATA port selector


device that attaches to two SATA host ports (i.e., two ATA domains) and one SATA device port, and provides
the means for one SATA host to access the SATA device at any given time (see SATA)

22 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.211 SATA spinup hold


state entered by an expander phy attached to a SATA device in which it halts the automatic phy reset
sequence to delay temporary consumption of additional power
Note 1 to entry: An example of when a SATA device consumes additional power is during spin up of rotating
media.
Note 2 to entry: See 5.20.

3.1.212 saturating counter


counter that remains at its maximum value after reaching its maximum value

3.1.213 scrambled idle segment


SPL packet payload that contains four data dwords set to zero

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.215 SCSI device


device that contains one or more SCSI ports that are connected to a service delivery subsystem (see 3.1.228)
and supports a SCSI application protocol
Note 1 to entry: See SAM-5.

3.1.216 SCSI domain


I/O system consisting of a set of SCSI devices that communicate with one another by means of a service
delivery subsystem (see 3.1.228)
Note 1 to entry: See SAM-5.

3.1.217 SCSI initiator device


SCSI device containing SCSI application clients and SCSI initiator ports that originates device service and
task management requests to be processed by a SCSI target device and receives device service and task
management responses from SCSI target devices
Note 1 to entry: See SAM-5.

3.1.218 SCSI initiator port


SCSI initiator device object that acts as the connection between SCSI application clients and a service
delivery subsystem (see 3.1.228) through which requests and confirmations are routed
Note 1 to entry: See SAM-5.

3.1.219 SCSI port


SCSI initiator port and/or a SCSI target port
Note 1 to entry: See SAM-5.

3.1.220 SCSI target device


SCSI device containing logical units and SCSI target ports that receives device service and task management
requests for processing and sends device service and task management responses to SCSI initiator devices
Note 1 to entry: See SAM-5.

Working Draft SAS Protocol Layer - 5 (SPL-5) 23


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.221 SCSI target port


SCSI target device object that contains a task router and acts as the connection between SCSI device servers
and task managers and a service delivery subsystem (see 3.1.228) through which requests, indications,
responses, and confirmations are routed
Note 1 to entry: See SAM-5.

3.1.222 self-configuring expander device


expander device (see 3.1.76) containing an SMP initiator port and a management application client to perform
the discover process (see 3.1.66) to configure its own expander route table (see 3.1.83)
Note 1 to entry: See 4.7.4.

3.1.223 Serial ATA (SATA)


protocol defined by SATA (see clause 2)

3.1.224 Serial ATA Tunneled Protocol (STP)


protocol defined in this standard used by STP initiator ports (see 3.1.255) to communicate with STP target
ports (see 3.1.261) in a SAS domain
Note 1 to entry: See 6.21 and 8.3.

3.1.225 Serial Attached SCSI (SAS)


set of protocols defined by this standard and the interconnects defined in SAS-4

3.1.226 Serial Management Protocol (SMP)


protocol defined in this standard used by SMP initiator ports (see 3.1.232) to communicate with SMP target
ports (see 3.1.236) in a SAS domain
Note 1 to entry: See 6.22 and 8.4.

3.1.227 Serial SCSI Protocol (SSP)


protocol defined in this standard used by SSP initiator ports (see 3.1.247) to communicate with SSP target
ports (see 3.1.251) in a SAS domain
Note 1 to entry: See 6.20 and 8.2.

3.1.228 service delivery subsystem


part of the domain that transmits information
Note 1 to entry: A service delivery subsystem is the part of:
a) a SCSI I/O system that transmits information between a SCSI initiator port and a SCSI target port;
b) an ATA I/O system that transmits information between an ATA host and an ATA device; or
c) a SAS I/O system that transmits information between a SAS initiator port and a SAS target port.
Note 2 to entry: See 4.1.7.

3.1.229 slumber phy power condition


low phy power condition for a SAS phy or expander phy
Note 1 to entry: See 4.11.1.4.

3.1.230 SMP frame segment


SPL packet payload that contains four data dwords of an SMP frame (see 8.4.1)

3.1.231 SMP initiator phy


SAS initiator phy (see 3.1.196) in an SMP initiator port (see 3.1.232)

3.1.232 SMP initiator port


SAS initiator device object in a SAS domain that interfaces to a service delivery subsystem with SMP

24 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.233 SMP phy


SAS logical phy (see 3.1.198) in an SMP port

3.1.234 SMP port


SMP initiator port (see 3.1.232) and/or an SMP target port (see 3.1.236)

3.1.235 SMP target phy


SAS target phy (see 3.1.203) in an SMP target port (see 3.1.236)

3.1.236 SMP target port


SAS target device object in a SAS domain that interfaces to a service delivery subsystem (see 3.1.228) with
SMP

3.1.237 SMP zone configuration function


SMP function that configures zoning expander shadow values (see 3.1.296) and is only accepted by a locked
zoning expander device
Note 1 to entry: See 4.9.6.3.

3.1.238 SNW-3 bit cell time


time for transmitting a phy capabilities bit during SNW-3 (see 5.11.4.2.3.3)

3.1.239 speed negotiation sequence


sequence in which two phys negotiate the operational physical link rate
Note 1 to entry: See 5.11.2.2 and 5.11.4.2.

3.1.240 speed negotiation window (SNW)


portion of the SAS speed negotiation sequence
Note 1 to entry: See 5.11.4.2.3.

3.1.241 SPL frame segment


SPL packet payload that contains an address frame segment, SSP frame segment, SMP frame segment, or
STP frame segment

3.1.242 SPL packet


150 bits of which two bits contain header information, 128 bits contain an SPL packet payload, and 20 bits
contain forward error correction information
Note 1 to entry: See 5.5.2.

3.1.243 SPL packet payload


contains an idle dword segment, primitive segment, scrambled idle segment, or SPL frame segment
Note 1 to entry: See 5.5.2.

3.1.244 spread spectrum clocking (SSC)


technique of modulating the operating frequency of a transmitted signal (i.e., the physical link rate) to reduce
the measured peak amplitude of radiated emissions
Note 1 to entry: See SAS-4.

3.1.245 SSP frame segment


SPL packet payload that contains four data dwords of an SSP frame

3.1.246 SSP initiator phy


SAS initiator phy (see 3.1.196) in an SSP initiator port (see 3.1.247)

Working Draft SAS Protocol Layer - 5 (SPL-5) 25


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.247 SSP initiator port


SCSI initiator port in a SAS domain that implements SSP

3.1.248 SSP phy


SAS logical phy (see 3.1.198) in an SSP port

3.1.249 SSP port


SSP initiator port (see 3.1.247) and/or an SSP target port (see 3.1.251)

3.1.250 SSP target phy


SAS target phy (see 3.1.203) in an SSP target port (see 3.1.251)

3.1.251 SSP target port


SCSI target port in a SAS domain that implements SSP

3.1.252 state machine variable


variable that exists within the context of a state machine
Note 1 to entry: A state machine variable may contain status from one state that is used in another state of
the same state machine.
Note 2 to entry: The value contained in a state machine variable may affect subsequent state transitions or
state machine outputs.

3.1.253 STP frame segment


SPL packet payload that contains four data dwords of an STP frame

3.1.254 STP initiator phy


SAS initiator phy (see 3.1.196) in an STP initiator port (see 3.1.255)

3.1.255 STP initiator port


SAS initiator device object in a SAS domain that interfaces to a service delivery subsystem (see 3.1.228) with
STP

3.1.256 STP phy


SAS logical phy (see 3.1.198) in an STP port

3.1.257 STP port


STP initiator port (see 3.1.255) and/or an STP target port (see 3.1.261)

3.1.258 STP primitive (see 6.2.2)


primitive used only inside STP connections and on SATA physical links

3.1.259 STP SATA bridge


expander device object containing an STP target port, a SATA host port, and the functions required to forward
information between the STP target port and SATA host port to enable STP initiator ports in a SAS domain to
communicate with SATA devices in an ATA domain

3.1.260 STP target phy


SAS target phy (see 3.1.203) in an STP target port (see 3.1.261)

3.1.261 STP target port


SAS target device object in a SAS domain that interfaces to a service delivery subsystem (see 3.1.228) with
STP

26 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.262 subtractive routing attribute


attribute of an expander phy that indicates that the expander phy may be used by the ECM (see 3.1.74) to
route connection requests to an attached expander device that were not resolved using the direct routing
method or table routing method
Note 1 to entry: See 4.5.7.1.

3.1.263 subtractive routing method


method the ECM (see 3.1.74) uses to route connection requests not resolved using the direct routing method
or table routing method to an attached expander device (see 3.1.76)
Note 1 to entry: See 4.5.7.1.

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.265 table routing attribute


attribute of an expander phy that indicates that the expander phy may be used by the ECM (see 3.1.74) to
route connection requests using an expander route table (see 3.1.83)
Note 1 to entry: See 4.5.7.1.

3.1.266 table routing method


method the ECM (see 3.1.74) uses to route connection requests to an attached expander device (see 3.1.76)
using an expander route table (see 3.1.83)
Note 1 to entry: See 4.5.7.1.

3.1.267 target port transfer tag


optional value that allows an SSP target port to establish the write data context when receiving a write DATA
frame
Note 1 to entry: See 8.2.1.

3.1.268 task management function


task manager service capable of being requested by a SCSI application client to affect the processing of one
or more commands
Note 1 to entry: See SAM-5.

3.1.269 task manager


object that controls the sequencing of SCSI commands and processes SCSI task management functions
Note 1 to entry: See SAM-5.

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.271 Train_Rx-SNW window time


actual duration of Train_Rx-SNW

3.1.272 Train_Tx-SNW
speed negotiation window with transmitter training
Note 1 to entry: See 5.11.4.2.3.4.

Working Draft SAS Protocol Layer - 5 (SPL-5) 27


T10/BSR INCITS 554 Revision 11 18 January 2021

3.1.273 transmitter device (Tx)


device upstream from a transmitter device compliance point containing a portion of the physical link and a
transmitter circuit (see SAS-4)

3.1.274 transmitter training information unit (TTIU)


32 TTIU bit cells that follow a pattern marker transmitted during Train_Tx-SNW (see 5.11.4.2.3.4)
Note 1 to entry: See 5.11.4.2.3.5.

3.1.275 transport protocol service confirmation


information passed from the SSP transport layer to the SCSI application layer (e.g., from the SSP initiator port
to the SCSI application client) that notifies the SCSI application layer that a SCSI transport protocol service
has completed

3.1.276 transport protocol service indication


information passed from the SSP transport layer to the SCSI application layer notifying the SCSI application
layer (e.g., from the SSP target port to the SCSI device server) to begin a SCSI transport protocol service

3.1.277 transport protocol service request


information passed from the SCSI application layer to the SSP transport layer (e.g., from the SCSI application
client to the SCSI initiator port) to begin a SCSI transport protocol service

3.1.278 transport protocol service response


information passed from the SCSI application layer to the SSP transport layer (e.g., from the SCSI device
server to the SSP target port) that completes the SCSI transport protocol service

3.1.279 TTIU bit cell


group of ten UIs that encode a single bit of BMC (see 3.1.23) information

3.1.280 unit interval (UI)


time period that has the normalized, dimensionless, nominal duration of a symbol (see SAS-4) (e.g., 666.6 ps
at 1.5 Gbit/s, 333.3 ps at 3 Gbit/s, 166.6 ps at 6 Gbit/s, 83.3 ps at 12 Gbit/s, and 44.4 ps at 22.5 Gbit/s)
Note 1 to entry: See SAS-4.

3.1.281 valid character


character that is a control character (see 3.1.45) or a data character (see 3.1.51)

3.1.282 valid dword


dword that is a data dword (see 3.1.52) or a primitive (see 3.1.168)

3.1.283 virtual phy


phy (see 3.1.156) that interfaces with a vendor specific interface to another virtual phy inside the same device
Note 1 to entry: See 4.1.2.

3.1.284 wide link


group of physical links that attaches a wide port to another wide port
Note 1 to entry: See 4.1.3.

3.1.285 wide port


port that contains more than one phy
Note 1 to entry: See 4.1.3.

3.1.286 word
sequence of 16 contiguous bits considered as a unit

28 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.1.287 wrapping counter


counter that wraps back to zero after reaching its maximum value

3.1.288 write data


data transferred from the SCSI application client’s data-out buffer to the SCSI device server, as requested by
the Request Data-Out transport protocol service (see 9.2.1.8)

3.1.289 zone group


set of phys in a ZPSDS (see 3.1.292) that all have the same access permission
Note 1 to entry: See 4.9.

3.1.290 zone manager


entity responsible for configuring a ZPSDS (see 3.1.292)
Note 1 to entry: See 4.9.1.

3.1.291 zone permission table


table that defines access permission between the zone group of a source phy and the zone group of the
destination phy
Note 1 to entry: See 4.9.3.3.

3.1.292 zoned portion of a service delivery subsystem (ZPSDS)


group of zoning expander devices (see 3.1.294) that cooperate to control access between phys; the ZPSDS
may include all or part of a service delivery subsystem (see 3.1.228)
Note 1 to entry: See 4.9.

3.1.293 zoning expander current values


current zone permission table (see 3.1.291) and zone phy information in a zoning expander device (see
3.1.294)
Note 1 to entry: See 4.9.6.

3.1.294 zoning expander device


expander device (see 3.1.76) that supports zoning
Note 1 to entry: See 4.9.

3.1.295 zoning expander phy


expander phy in a zoning expander device (see 3.1.294)

3.1.296 zoning expander shadow values


shadow zone permission table (see 3.1.291) and zone phy information in a zoning expander device, which are
changed by SMP zone configuration functions (see 3.1.237) but do not become active until the activate step
(see 4.9.6.4) is performed
Note 1 to entry: See 4.9.6.

3.2 Symbols and abbreviations

3.2.1 Abbreviations

See Annex M for abbreviations of standards bodies (e.g., ISO).

Working Draft SAS Protocol Layer - 5 (SPL-5) 29


T10/BSR INCITS 554 Revision 11 18 January 2021

Abbreviations used in this standard:

Abbreviation Meaning

ACA auto contingent allegiance (see SAM-5)


ACK acknowledge (see 6.2.7.1)
AIP arbitration in progress (see 6.2.6.1)
AOI IEEE-Administered Organization Identifier (see 3.1.107)
APTA active phy transmitter adjustment
ATA AT attachment (see 3.1.14)
ATAPI AT attachment packet interface
ATA8-AAM AT Attachment - 8 ATA/ATAPI Architecture Model standard (see clause 2)
ACS-4 ATA Command Set-4 standard (see clause 2)
AWT arbitration wait time
BCH Bose, Chaudhuri and Hocquenghem code (see 4.2.5)
BIST built in self test
BMC bi-phase mark code (see 3.1.23)
BPP Broadcast propagation processor (see 3.1.25)
C1 coefficient 1 (see SAS-4)
C2 coefficient 2 (see SAS-4)
C3 coefficient 3 (see SAS-4)
CDB command descriptor block (see 3.1.33)
CJTPAT compliant jitter tolerance pattern (see 3.1.36)
CRC cyclic redundancy check (see 3.1.47)
CRN command reference number (see SAM-5)
D.C. direct current (see 3.1.63)
ECM expander connection manager (see 3.1.74)
ECR expander connection router (see 3.1.75)
EMI electromagnetic interference
EOAF end of address frame (see 6.2.6.6)
EOF end of frame (see 6.2.7.4)
FEC forward error correction (see 5.5.7)
FIS frame information structure (see 3.1.90)
G1 generation 1 physical link rate (i.e., 1.5 Gbit/s)
G2 generation 2 physical link rate (i.e., 3 Gbit/s)
G3 generation 3 physical link rate (i.e., 6 Gbit/s)
G4 generation 4 physical link rate (i.e., 12 Gbit/s)
G5 generation 5 physical link rate (i.e., 22.5 Gbit/s)
ID identifier
JTPAT jitter tolerance pattern (see 3.1.117)
LED light-emitting diode
LSB least significant bit (see 3.1.118)
LUN logical unit number (see 3.1.129)

30 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 31


T10/BSR INCITS 554 Revision 11 18 January 2021

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 used in this standard:

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

32 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.2.3 Symbols

Symbols used in this standard:

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

3.2.4 Mathematical operators

Mathematical operators used in this standard:

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.4 may not


keywords that indicate flexibility of choice with no implied preference (equivalent to “may or may not”)

Working Draft SAS Protocol Layer - 5 (SPL-5) 33


T10/BSR INCITS 554 Revision 11 18 January 2021

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”

3.3.11 vendor specific


something (e.g., a bit, field, or code value) that is not defined by this standard
Note 1 to entry: Specification of the referenced item is determined by the SCSI device vendor and may be
used differently in various implementations.

3.4 Editorial conventions

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.

34 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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:

a) red, specifically one of the following colors:


A) crimson; or
B) amber;
b) blue; or
c) green.
Lists sequenced by numbers show an ordering relationship between the listed 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.

3.5 Numeric and character conventions

3.5.1 Numeric conventions

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 35


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 1 shows some examples of decimal numbers using various numbering conventions.

Table 1 – Numbering conventions

French English This standard

0,6 0.6 0.6

3,141 592 65 3.14159265 3.141 592 65

1 000 1,000 1 000

1 323 462,95 1,323,462.95 1 323 462.95

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).

3.5.2 Units of measure

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.

36 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 2 compares the prefix, symbols, and power of the binary and decimal units.

Table 2 – Comparison of decimal prefixes and binary prefixes

Decimal Binary

Power Power
Prefix name Prefix symbol Prefix name Prefix symbol
(base-10) (base-2)

kilo k 103 kibi Ki 210

mega M 106 mebi Mi 220

giga G 109 gibi Gi 230

tera T 1012 tebi Ti 240

peta P 1015 pebi Pi 250

exa E 1018 exbi Ei 260

zetta Z 1021 zebi Zi 270

yotta Y 1024 yobi Yi 280

3.5.3 Byte encoded character strings conventions

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.

3.6 UML notation conventions

3.6.1 Notation conventions overview

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.

3.6.2 Constraint and note conventions

Class diagrams and object diagrams may include:


a) constraints, which specify requirements; and
b) notes, which are informative.

Working Draft SAS Protocol Layer - 5 (SPL-5) 37


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 3 shows the notation used for constraints and notes.

Table 3 – Constraint and note notation

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.

The absence of curly brackets defines a note that is informative. An


note text
example of a note is shown in figure 5.

38 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.6.3 Class diagram conventions

Table 4 shows the notation used for classes in class diagrams.

Table 4 – Class diagram notation for classes

Notation Description

Class Name Class Name Class Name


A class that may or may not
have attributes or operations

Class Name Class Name


A class that has attributes and
Attribute01[1] Attribute01[1] may or may not have
Attribute02[1] Attribute02[1] operations

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()

Working Draft SAS Protocol Layer - 5 (SPL-5) 39


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 5 shows the notation used to indicate multiplicity of classes and attributes in class diagrams.

Table 5 – Multiplicity notation

Notation a Description

not specified The number of instances of a class or attribute is not specified.

1 One instance of the class or attribute exists.

0..* Zero or more instances of the class or attribute exist.

1..* One or more instances of the class or attribute exist.

0..1 Zero or one instance of the class or attribute exists.

n..m n to m instances of the class or attribute exist (e.g., 2..8).

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.

Table 6 – Class diagram notation for associations

Notation Description

Class A association_name Class B Class A knows about Class B (i.e., read as


1..* 0..1 “Class A association_name Class B”) and
Class B knows about Class A (i.e., read as
“Class B association_name Class A”).
Multiplicity notation

Class B knows about Class A (i.e., read as


Class A Class B
“Class B knows about Class A”) but Class A
1 0..1 does not know about Class B.

Class A knows about Class B (i.e., read as


role name “Class A uses the role name attribute of
Class A Class B Class B”) but Class B does not know about
0..* 0..1 Class A.

Note - The use of role names and association names are optional.

40 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 3 shows examples of association relationships between classes.

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()

1..* association name 1 0..*


0..1 0..1 0..1 Attribute cc

Class B Class E Class F


Attribute 03[1] Attribute cc[1]

Figure 3 – Examples of association relationships in class diagrams

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.

Table 7 – Class diagram notation for aggregations

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.

The Part class is part of the Whole class, shall


W h o le P a rt only belong to one Whole class (i.e., read as “the
1 0..* whole contains the part”), and shall not continue
to exist if the Whole class is removed.

Figure 4 shows examples of aggregation relationships between classes.

Whole 0..* 1 Whole


Part A
Attribute 01[1] Attribute 01[1]
Attribute A[1]
Attribute 02[1] Attribute 02[1]
Operation 1()

1..* {Constraint between 1 1


0..1 associations} 1..* 1..*
Part
Part B Part C
Attribute 03[1]
Attribute B[1] Attribute C[1]

Figure 4 – Examples of aggregation relationships in class diagrams

Working Draft SAS Protocol Layer - 5 (SPL-5) 41


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 8 shows the notation used to denote generalization (i.e., “is a kind of”) relationships between classes.

Table 8 – Class diagram notation for generalizations

Notation Description

Subclass is a kind of superclass. A subclass shares


all the attributes and operations of the superclass
S u p e rc la s s S u b c la s s
(i.e., the subclass inherits from the superclass).
Inherited attributes are not duplicated in UML
drawings.

Figure 5 shows examples of generalization relationships between classes.

Single superclass /single subclass Multiple superclasses /single subclass


(i.e., muliple inheritance )
Superclass Superclass A Superclass B
Attribute 01[1] Attribute 1A[1] Attribute 1B[1]
Attribute 02[1] Attribute 2A[1] Attribute 2B[1]

Subclass A Subclass B
Attribute 03[1] Attribute 04[1]

Single superclass /multiple subclasses

Superclass
Attribute 01[1]
Attribute 02[1] There is no significance to
generalizations that are
combined or not combined .

Subclass A Subclass B Subclass C


Attribute A[1] Attribute B[1] Attribute C[1]

Figure 5 – Example of generalization relationships in class diagrams

Table 9 shows the notation used to denote dependency (i.e., “depends on”) relationships between classes.

Table 9 – Class diagram notation for dependency

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.

42 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 6 shows an example of a dependency relationship between classes.

Dependent Independent

Figure 6 – Example of a dependency relationship in class diagrams

3.6.4 Object diagram conventions

Table 10 shows the notation used for objects in object diagrams.

Table 10 – Object diagram notation for objects

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

label : Class Name


Attribute01 = x Notation for a named object with attributes
Attribute02 = y

: 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.

Table 11 – Object diagram notation for link

Notation Description

: O b je ct A : O b je ct B
An instance of an association between object A
and object B.

Working Draft SAS Protocol Layer - 5 (SPL-5) 43


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 7 shows examples of a link relationships between objects.

: Class A : Class Aa
Attribute 01 = round Attribute 01 = true
Attribute 02 = red Attribute 02 = 902

O1 : Class a A1 : Class aa B1 : Class bb C1 : Class cc


Attribute 03 = soft Attribute aa = rain Attribute cc = USA

Figure 7 – Examples of link relationships for object diagrams

44 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

3.7 State machine conventions

3.7.1 State machine conventions overview

Figure 8 shows how state machines are described. See 4.3 for a summary of the state machines in this
standard.

State machine name


State designator:State_Name State designator:State_Name
State
(from upper layer)
machine
Transition condition
Request name or name
response name Message name or state
designator
State Transition condition Transition condition Transition condition
designator State
designator
State
Message name
machine Request name or
name Message name response name
or state
designator
(to lower layer)

(different) State machine name (to all states, causing


transition to State
designator:State_Name) Message name

State designator:State_Name State designator:State_Name


Confirmation name, (to upper layer)
indication name, or
event notification name Transition condition Confirmation name,
indication name, or
(from lower layer) event notification name

Message name Message name


(from transmitter or (to transmitter or
Transition condition
receiver) receiver)

Figure 8 – State machine conventions

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 45


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

3.7.3 Messages, requests, indications, confirmations, responses, and event notifications

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.

3.7.4 State machine counters, timers, and variables

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

46 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

3.7.5 State machine arguments

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.

3.8 Bit and byte ordering

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.

Table 12 – Data dword containing a value

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

MSB Value LSB

Table 13 shows a data dword containing four one-byte fields, where byte 0 (the first byte) is on the left and

Working Draft SAS Protocol Layer - 5 (SPL-5) 47


T10/BSR INCITS 554 Revision 11 18 January 2021

byte 3 (the fourth byte) is on the right. Each byte has an MSB on the left and an LSB on the right.

Table 13 – Data dword containing four one-byte fields

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

Byte 0 Byte 1 Byte 2 Byte 3


MSB LSB MSB LSB MSB LSB MSB LSB
(First byte) (Second byte) (Third byte) (Fourth byte)

3.9 Notation for procedures and functions

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:

Result A single value representing the outcome of the procedure or function.


Procedure Name A descriptive name for the function to be performed.
IN (Input-1, Input-2, ...) A comma-separated list of names identifying caller-supplied input data
objects.
OUT (Output-1, Output-2, ...) A comma-separated list of names identifying output data objects to be
returned by the procedure.
[ ... ] Brackets enclose optional or conditional parameters and arguments.

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.

48 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4 General

4.1 Architecture

4.1.1 Architecture overview

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 49


T10/BSR INCITS 554 Revision 11 18 January 2021

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..* SAS 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

0..1 SAS Device SMP Port


SCSI Target Device Device Name[1] Target[1]
1
Initiator[0..1]
1 1 1 2..255
0..1 0..1
Expander Port
SAS Target Device
0..1 Attached SAS Address[1]
SCSI Initiator Device
0..1 1
SAS Initiator Device
1..65 535
SCSI Port Manages
1..255
Relative Port Identifier[1] SAS Port
SAS Address[1]
Attached SAS Address[1]
Note - See SAM-5 for more
details on the SCSI Domain, 1
Service Delivery Subsystem, 1..255 1..255 2..255
SCSI Device, and SCSI Port
classes. Phy
1..* device scope)
Phy Identifier[1] (with

Figure 9 – SAS Domain class diagram

50 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.1.2 Physical links and phys

4.1.2.1 Physical links and phys overview

For the electrical and mechanical specifications of the physical interconnect (i.e., physical link, physical layer,
and physical phy), see SAS-4.

4.1.2.2 Device links and phys

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 51


T10/BSR INCITS 554 Revision 11 18 January 2021

SATA phys are also referenced in this standard but are defined by SATA.

Phy
Phy identifier

SAS Phy Logical Phy Expander Phy


Physical Link Rate Logical Link Rate Physical Link Rate
Type = virtual, physical Logical Phy Identifier Type = virtual, physical
1

1
Expander Logical Phy

SSP Phy SAS Initiator Phy


Role = initiator, target Protocol = SSP, STP, SMP
1
Protocol

STP Phy SAS Target Phy


Role = initiator, target Protocol = SSP, STP, SMP
1
Protocol
1 1
SMP Phy SAS Logical Phy
Role = initiator, target

Figure 10 – Phy class diagram

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.

52 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 11 – SAS phy object diagram

Figure 12 shows the objects instantiated from the Expander Phy class, including:
a) expander phy;
a) virtual expander phy; and
a) expander logical phy.

Working Draft SAS Protocol Layer - 5 (SPL-5) 53


T10/BSR INCITS 554 Revision 11 18 January 2021

Expander phy : Expander Phy Virtual expander phy : Expander Phy


Physical Link Rate Physical Link Rate
Phy Identifier = x Phy Identifier = x
Type = physical Type = virtual

Expander logical phy : Logical Phy Expander logical phy : Logical Phy
Phy Identifier = x Phy Identifier = x
Logical Link Rate Logical Link Rate

Figure 12 – Expander phy object diagram

4.1.2.3 Retimer device links and phys

A retimer device (see 4.6) contains one or more retimer lanes.


Each retimer lane contains two retimer phys.
A retimer phy:
a) is a physical phy;
b) does not have a SAS address (see 4.2.4); and
c) does not have a phy identifier (see 4.2.10).
During the identification sequence (see 6.11), a retimer phy forwards a modified version of the IDENTIFY
address frame received (see 6.10.2) from the attached device (see 4.6.3.6).

4.1.3 Narrow ports and wide ports

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;

54 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) BREAK_REPLY CAPABLE bit;


c) SSP INITIATOR PORT bit;
d) STP INITIATOR PORT bit;
e) SMP INITIATOR PORT bit;
f) SSP TARGET PORT bit;
g) STP TARGET PORT bit;
h) SMP TARGET PORT bit;
i) SAS ADDRESS field;
j) INSIDE ZPSDS PERSISTENT bit;
k) REQUESTED INSIDE ZPSDS bit;
l) SLUMBER CAPABLE bit;
m) PARTIAL CAPABLE bit;
n) POWER CAPABLE bit;
o) PERSISTENT CAPABLE bit;
p) PWR_DIS CAPABLE bit; and
q) SMP PRIORITY CAPABLE bit.

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 55


T10/BSR INCITS 554 Revision 11 18 January 2021

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 Wide link

Phy Physical link Phy


SAS address Y

Wide port Wide port

SAS address B
Phy Physical link Phy
SAS address Y

SAS address B Wide link

Phy Physical link Phy


SAS address Z

Wide port Wide port

SAS address B
Phy Physical link Phy
SAS address Z

Each horizontal line represents a differential signal pair

Figure 13 – Ports (narrow ports and wide ports)

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

56 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

i) SMP Port.

Port Expander Device


SAS Address [1]

1 SAS address 1 SAS Address


2..255

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 }

{There shall be at least one Target SSP Port


attribute or one Initiator attribute
Target[0..1]
per phy contained within each instance }
Initiator[0..1]

{There shall be at least one Target


attribute or one Initiator attribute
contained within each instance }

Figure 14 – Port class diagram

Figure 15 shows the objects instantiated from the Port classes:


a) SAS Target Port class (i.e., SSP target port, STP target port, SMP target port);
b) SAS Initiator Port class (i.e., SSP initiator port, STP initiator port, SMP initiator port);
c) STP Port class (i.e., STP initiator port, STP target port, STP port);
d) SMP Port class (i.e., SMP initiator port, SMP target port, SMP port);
e) SSP Port class (i.e., SSP initiator port, SSP target port, SSP port);
f) Expander Device SMP Port class (i.e., SMP target port, SMP port); and
g) Expander Port class (i.e., expander port).

Working Draft SAS Protocol Layer - 5 (SPL-5) 57


T10/BSR INCITS 554 Revision 11 18 January 2021

Port objects remain instantiated even while no connection is open on any of the phys within the port.

Valid objects for the


Valid objects for the Valid objects for the
Expander Device
SAS Initiator Port class SAS Target Port class
SMP Port class
SSP initiator port : SAS Initiator Port SSP target port : SAS Target Port SMP target port : SMP port
SAS Address SAS Address SAS Address
Attached SAS Address Attached SAS Address Target
Protocol = SSP Protocol = SSP
SMP port : SMP Port
STP initiator port : SAS Initiator Port STP target port : SAS Target Port SAS Address
Target
SAS Address SAS Address
Initiator
Attached SAS Address Attached SAS Address
Protocol = STP Protocol = STP Valid object for the
Expander Port class
SMP initiator port : SAS Initiator Port SMP target port : SAS Target Port
SAS Address SAS Address Expander port : Expander Port
Attached SAS Address Attached SAS Address SAS Address
Protocol = SMP Protocol = SMP Attached SAS Address

Valid objects Examples of valid objects Examples of valid objects


for the SSP Port class for the STP Port class for the SMP Port class

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

SSP port : SSP Port STP port : STP Port


SMP port : SMP port
SAS Address SAS Address
Attached SAS Address
Attached SAS Address Attached SAS Address
Target01
Initiator Target01
Target02
Target Target02
Initiator01
Initiator
Initiator02

Figure 15 – Port object diagram

4.1.4 Application clients and device servers

This standard defines the following application clients:


a) a SCSI application client (see SAM-5) is the source of SCSI commands and task management
function requests. A SCSI application client uses an SSP initiator port to interface to a service delivery
subsystem;

58 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.1.5 SAS 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 59


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 16 shows examples of SAS devices with different port and phy configurations.

SAS device SAS device

Narrow port Narrow port

Phy Phy

SAS device

Phy Phy

Wide port Wide port

Phy Phy

SAS device

Phy Phy

Wide port Wide port

Phy Phy

Each horizontal line represents a differential signal pair

Figure 16 – SAS devices

An end device is a SAS device that is not contained in an expander device (see 4.1.6).

4.1.6 Expander devices

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)).

60 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 17 shows an expander device.

Expander device

Expander device s SAS address


is used by each expander phy SAS device (internal/
Expander port optional)
Management (internal/
Management SAS port
application optional)
device server
client (if any)
Expander SAS
SAS phy
phy address
(virtual)
SMP initiator SMP target (virtual)
port (if any) port

SAS Expander function


address

Expander port Expander port


STP SATA bridge (narrow port)
Expander device s (internal/optional)
Expander Expander
SAS address is SAS address
phy phy
used by each
expander phy

Either SSP, STP or SMP SATA

SAS initiator ports, SAS target ports, or SATA device


expander ports port

Figure 17 – Expander device

See 4.5 for a detailed model of an expander device.


Each expander phy has one of the following routing attributes (see 4.5.7.1):
a) direct routing attribute;
b) table routing attribute; or
c) subtractive routing attribute.
Expander devices containing expander phys with the table routing attribute also contain an expander route
table (see 4.5.7.4). An externally configurable expander device depends on a management application client
within the SAS domain to use the discover process (see 4.6) and the configuration subprocess (see 4.8) to
configure the expander route table.
A self-configuring expander device contains
a) a management application client that performs the discover process (see 4.6) and configures the
expander device’s own expander route table; and
b) an SMP initiator port.

Working Draft SAS Protocol Layer - 5 (SPL-5) 61


T10/BSR INCITS 554 Revision 11 18 January 2021

4.1.7 Retimer devices

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

Retimer  Retimer  Retimer 


phy function phy

SAS initiator phy, SAS initiator phy,
SAS target phy, or  SAS target phy, or 
expander phy expander phy

Figure 18 – Retimer device

See 4.6 for a detailed model of a retimer device.

4.1.8 Service delivery subsystem

A service delivery subsystem is either:


a) a set of physical links between a SAS initiator port and a SAS target port; or
b) a set of physical links and expander devices, supporting more than two SAS ports.
Physical links may contain retimer lanes.
See 4.1.10 for rules on constructing service delivery subsystems from multiple expander devices.

62 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.1.9 Domains

Figure 19 shows examples of SAS domains and ATA 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

SSP STP SMP SATA


SSP
target
SSP
SSP STP SMP SATA SATA
port
initiator
target target target device device
SAS ports
ports ports ports port port
domain SAS domain ATA domain ATA domain
If expander devices are present , SAS target ports may be located in SAS
devices contained in expander devices .

Figure 19 – Domains

Figure 20 shows a SAS domain bridging to one or more ATA 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 20 – SAS domain bridging to ATA domains

Working Draft SAS Protocol Layer - 5 (SPL-5) 63


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Service delivery Service delivery


subsystem subsystem
with expander with expander
devices SMP devices SMP

SSP STP SMP SSP SMP


STP
target target
SSP
SSP STP ports SSP
SSP STP ports
initiator
target target initiator
target target
ports
ports ports ports
ports ports
STP STP

SAS domain SAS domain


STP SATA STP SATA
bridges bridges

ATA SATA SATA ATA


domains domains
SATA port
selector
SATA
SATA

SATA device
ATA domain
ATA domains

Figure 21 – SAS domains bridging to ATA domains with SATA port selectors

64 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

SAS initiator SAS initiator SAS initiator SAS initiator


device device device device
Initiator Initiator Initiator Initiator Initiator Initiator
port port port port port port

Expander devices Expander devices

Target Target Target Target Target Target


port port port port port port
SAS target SAS target SAS target SAS target
device device device device

SAS domain SAS domain

Figure 22 – Devices spanning SAS domains

4.1.10 Expander device topologies

4.1.10.1 Expander device topology overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 65


T10/BSR INCITS 554 Revision 11 18 January 2021

4.1.10.2 Expander device topologies

Figure 23 shows an example of an expander topology with one expander device.

Service delivery subsystem


End device D D End device

Expander
End device D D End device
device

End device D D End device

Key:
D = direct routing method

Figure 23 – Single expander device topology example

66 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 24 shows examples of expander topologies with multiple expander devices.

Service delivery subsystem


End device D D End device

Expander Expander
End device D S S D End device
device device

End device D D End device

Service delivery subsystem


End device D D End device

Expander Expander Expander


End device D S T T S D End device
device device device

End device D D D D End device

End device End device

Service delivery subsystem


End device D D End device

Expander Expander Expander


End device D T T T T D End device
device device device

End device D D D D End device

End device End device

Service delivery subsystem


End device D D End device

Expander Expander Expander


End device D T T S S D End device
device device device

End device D T D End device

End device D T D End device

Expander Expander Expander


End device D T T S S D End device
device device device

End device D D D D End device

Key: End device End device


D = direct routing method
T = table routing method
S = subtractive routing method

Figure 24 – Multiple expander device topologies and routing methods

Working Draft SAS Protocol Layer - 5 (SPL-5) 67


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

SAS phy SAS phy

Expander device

SAS phy Expander phy Expander phy SAS phy

Expander phy Expander phy SAS phy


SAS phy

Key:
Single physical link Potential Pathway

Figure 25 – Potential pathways

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.

68 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 69


T10/BSR INCITS 554 Revision 11 18 January 2021

SAS initiator device Expander device SAS target device


1 1
Expander port Expander port
A A
Phy Expander phy Expander phy Phy
SAS 12 Gbit/s 3 Gbit/s SAS
Initiator Target
port 12 Gbit/s 3 Gbit/s port
Phy Expander phy Expander phy Phy
B C

SAS initiator device SAS target device


2 Expander port 2
C B
Phy Expander phy Expander phy Phy
12 Gbit/s 6 Gbit/s SAS
Target
24 Gbit/s 6 Gbit/s port
Phy Expander phy Expander phy Phy
D D

SAS Initiator Expander port


port
Expander port
E E
Phy Expander phy Expander phy Phy
24 Gbit/s 12 Gbit/s SAS
target
24 Gbit/s 12 Gbit/s port
Phy Expander phy Expander phy Phy
F F

Key: Single physical link Wide link X X Connection

Figure 26 – Multiple connections on wide ports

4.1.13 Persistent connections

4.1.13.1 Persistent connection operation

A persistent connection is an SSP connection (see 4.1.12) that:


a) is established after an EXTEND_CONNECTION (NORMAL) (see 6.2.7.5) has been transmitted and
received inside the SSP connection;
b) persists as long as the connected SAS initiator phy and SAS target phy:
A) transmit SSP frames; or
B) periodically exchange EXTEND_CONNECTION (NORMAL)s (see 6.20.9.12);
c) causes the PL_PM state machine to ignore the Bus Inactivity Time Limit timer, the Maximum Connect
Time Limit timer (see 7.2.3.4.1), and the MAXIMUM BURST SIZE field (see 9.2.7.2.4); and
d) ends:
A) after a DONE is received;
B) if a Phy Layer Not Ready confirmation from the phy layer occurs during the SSP connection; or
C) if an abort connection occurs (see 6.16.7).

70 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.1.13.2 Persistent connection support

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).

4.1.14 Advancing credit

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.

Table 14 – Broadcast types (part 1 of 2)

Broadcast Primitive a Description

Originated by an expander device to notify SAS initiator ports that a SAS


domain change has occurred (see 6.15). May also be originated by SAS
initiator ports.
Broadcast
yes
(Change) SAS target ports shall ignore this Broadcast.

See 4.7.2 for management application client handling of Broadcast


(Change).
Broadcast
Reserved. SAS ports (i.e., SAS initiator ports and SAS target ports) shall
(Reserved yes
process this Broadcast the same as Broadcast (Change).
Change 0)
Broadcast
Reserved. SAS ports shall process this Broadcast the same as Broadcast
(Reserved yes
(Change).
Change 1)
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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 71


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 14 – Broadcast types (part 2 of 2)

Broadcast Primitive a Description

Originated by a logical unit with a device type of 0Dh (i.e., enclosure


services device) (see SPC-6 and SES-3) accessible through a SAS target
port in the SAS domain to notify SAS initiator ports of an asynchronous
event.
Broadcast
yes
(SES)
A SCSI application client should poll all the logical units in the SAS domain
with device types of 0Dh to determine the source.

SAS target ports shall ignore this Broadcast.


Originated by an expander device to notify SAS initiator ports that an
expander event has occurred, including:
a) the expander device is going to have reduced functionality for a period
of time (see 4.5.8);
b) a phy event peak value detector has reached its threshold value; or
c) a phy event peak value detector has been cleared by an SMP
CONFIGURE PHY EVENT function (see 9.4.4.30).
Broadcast
yes
(Expander)
Expander events do not include SAS domain changes, which are
communicated with Broadcast (Change).

SAS target ports shall ignore this Broadcast.

See 4.5.9 for management application client handling of Broadcast


(Expander).
Originated by an SSP target port when an event occurs (e.g., a hard reset)
that causes one or more unit attention conditions to be established for one
or more logical units accessible through the SSP target port.
Broadcast
An SSP target port shall only originate one Broadcast (Asynchronous
(Asynchronous yes
Event) for each event that affects multiple logical units accessible through
Event)
the SSP target port (e.g., only one Broadcast (Asynchronous Event) is
originated when a hard reset occurs).

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.

72 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.2 Names and identifiers

4.2.1 Names and identifiers overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 73


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 15 describes the definitions of names and identifiers for SAS.

Table 15 – Names and identifiers

Attribute Format SAS usage References

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.

Port name Not defined 4.2.8

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).

Phy identifier 8-bit value Phy identifier 4.2.10


a For SATA devices without worldwide names, a device name may be set in the PHY CONTROL request
(see 9.4.4.28) ATTACHED DEVICE NAME field.

Table 16 describes the identifier attributes and name attributes for SCSI architecture model objects (see
SAM-5) using SAS SSP.

Table 16 – SCSI architecture model object attribute mapping

SCSI architecture model object


SAS SSP implementation
attribute

Initiator port identifier SAS address of an SSP initiator port

Initiator port name Not defined

Target port identifier SAS address of an SSP target port

Target port name Not defined

SCSI device name Device name of SAS device containing an SSP port

74 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.2.2 NAA IEEE Registered format identifier

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.

Table 17 – NAA IEEE Registered format

Byte\Bit 7 6 5 4 3 2 1 0

0 NAA (5h) (MSB)

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.

4.2.3 NAA Locally Assigned format identifier

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.

Table 18 – NAA Locally Assigned format

Byte\Bit 7 6 5 4 3 2 1 0

0 NAA (3h)

Working Draft SAS Protocol Layer - 5 (SPL-5) 75


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 18 – NAA Locally Assigned format

Byte\Bit 7 6 5 4 3 2 1 0

4 LOCALLY ADMINISTERED VALUE

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.

4.2.4 SAS address

A SAS address is an identifier using either:


a) the NAA IEEE Registered format (see 4.2.2); or
b) the NAA Locally Assigned format (see 4.2.3).
A SAS address should use the NAA IEEE Registered format (see 4.2.2).
A SAS address of 00000000 00000000h indicates an invalid identifier.

4.2.5 Hashed SAS addresses

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.

Table 19 – Hashed SAS address code parameters

Parameter Value

Number of bits per codeword 63

Number of data bits 39

Number of redundant bits 24

Minimum distance of the code 9

The generator polynomial for this code is:

76 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

G(x) = (x6 + x + 1) (x6 + x4 + x2 + x + 1) (x6 + x5 + x2 + x + 1) (x6 + x3 + 1)


After multiplication of the factors, the generator polynomial is:

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.

4.2.6 Device names and expander device SAS addresses

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.

4.2.8 Port names

Port names are not defined in SAS.


See Annex J for more information on SAS addresses.

Working Draft SAS Protocol Layer - 5 (SPL-5) 77


T10/BSR INCITS 554 Revision 11 18 January 2021

4.2.9 Port identifiers and SAS port SAS addresses

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.

4.2.10 Phy identifiers

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).

78 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.3 State machines

4.3.1 State machine overview

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

SCSI application Management application


ATA application
layer (SA) layer (MA)
layer (AA)

SAS port
SSP transport layer STP transport layer SMP transport layer
(ST) (TT) (MT)

... ...

Port layer (PL)

SAS phy ... ... ... ...


Logical phy

SSP link layer STP link layer SMP link layer


(SSP) (STP) (SMP)
SAS Port Control (PC)
SAS Port Control (PC)

Link layer (SL)

Phy layer (SP)

One or more SAS phys (with matching


number of TTs and MTs) per SAS port

One or more SAS ports per SAS device


Note 1 - The link layer includes the SL_IR state machines.
Note 2 - The phy layer includes the PTT state machines.

Figure 27 – State machines for SAS devices

Working Draft SAS Protocol Layer - 5 (SPL-5) 79


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Expander logical phy Expander logical phy


Expander Expander
link layer link layer
(XL) (XL)

Phy layer Expander Phy layer


(SP) function (SP)

One or more expander One or more expander


phys per expander port phys per expander port

One or more expander ports One or more expander ports


per expander device per expander device

Note - The expander link layer includes the SL_IR state machines.

Figure 28 – State machines for expander devices

4.3.2 Transmit data path

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).

80 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

SMP link layer


Management

Interleaved
Deletable
primitives

SPL
(MT)
SCSI application

Port layer
SSP transport

SSP link layer

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

Type of Not a rate


STP transport

STP link layer

primitive Not a physical link


connection
layer (AA)

layer (TT)

matching rate tolerance


deletable management
At each level, there is feedback
Key: primitive deletable primitive
to indicate when a dword has
Controls been transmitted and the next
Data path dword may be presented.

Figure 29 – Transmit data path in a SAS phy

Working Draft SAS Protocol Layer - 5 (SPL-5) 81


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

SCSI application layer (SA)


(initiator device: creates SCSI commands
target device: processes SCSI commands)

The SSP link layer may transmit


SSP transport layer (ST) ACK, NAK, RRDY, and
(builds and parses SSP frames) CREDIT_BLOCKED inside
frames

Port layer SSP link layer


(Transport layer to SSP transmitter
multiple link layers)

SSP_TF (transmit frame Frame


control) state machine
DONE

SSP link layer Idle dword


idle dword generator SSP dword

ACK
SSP_TAN (transmit ACK/
NAK control) state NAK
machine

SSP_TC (transmit credit RRDY


control) state machine
CREDIT_BLOCKED
SSP_EM (establish and
manage persistent
EXTEND_CONNECTION
connection) state machine

Figure 30 – SSP link, port, SSP transport, and SCSI application layer state machines

82 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Management application layer (MA)


(initiator device: creates SMP functions
target device: processes SMP functions)

SMP transport layer (MT)


(builds and parses SMP frames)

Port layer
(Multiple transport layers to
multiple link layers) SMP link layer
SMP transmitter

SMP_IP (link layer for


SMP initiator phys) or
Frame
SMP_IT (link layer for SMP dword
SMP target phys) state Idle dword
machine

Figure 31 – SMP link, port, SMP transport, and management application layer state machines

Working Draft SAS Protocol Layer - 5 (SPL-5) 83


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Power management SATA state machines are


primitives (e.g., defined by SATA and are
SATA_PMREQ_P, shown here only for
ATA application layer state machines (AA) SATA_PMREQ_S, reference
Host: vendor specific SATA_PMACK,
Device: Device Command layer (D) SATA_PMNAK) and
ALIGN
Request to transmit various FISes Miscellaneous
primitives (e.g.,
SATA_SYNC and
STP transport layer state machine (TT)
ALIGN)
(based on SATA transport layer state machines )
Host transport: HT (transmit FIS, decompose FIS) All primitives and dwords
Device transport: DT (transmit FIS, decompose FIS) are from the STP link
layer state machine

Port layer LPM


(Multiple transport layers to multiple
link layers) STP dword
LT
LR

STP link layer state machine


(based on SATA link state machine )
L = Link idle Transmit frame primitives
LT = Link transmit (e.g., SATA_X_RDY, Receive frame primitives (e.g.,
LR = Link receive SATA_HOLDA, SATA_R_RDY, SATA_SYNC,
LPM = Link power mode SATA_HOLD, SATA_SOF, SATA_R_IP, SATA_DMAT,
SATA_EOF, and SATA_HOLD, SATA_HOLDA,
SATA_WTRM) and data SATA_R_OK, and SATA_R_ERR)
dwords (frame and CRC)

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).

84 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Not a power control SL_IR_IRC state machine in


deletable primitive SL_IR_IRC3:Completed state Not a physical link
rate tolerance
At each level, there is feedback to indicate when a dword
management
has been transmitted and the next dword may be
deletable primitive
presented.
Key:
Controls
Data path

Figure 33 – Transmit data path and state machines in an expander phy

4.3.3 Receive data path

4.3.3.1 Receive data path while in the SAS dword mode

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 85


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

86 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

See figure 135 for more information about the elasticity buffer, which is not shown in figure 34.

SAS logical phy


SL_IR SOAF Received message SL_IR state
receiver Other messages machines

SL_P_S SL_P_S state


Messages
receiver machine

Each state machine SL_P_C SL_P_C state


receiver decodes only Messages
receiver machine
the specific primitives
used by its
corresponding state SOAF Received message SL state
SL receiver
machine Other messages machines

ACK Received message SSP state


SSP receiver
Other messages machines

STP state
STP receiver Messages
machines

SOF Received message SMP state


SMP receiver
Other messages machines

Link layer
Phy layer Dword Received (Primitive, Data Dword,
or Invalid Dword) confirmation

Find Dword message


Sync Acquired message
SP_DWS
receiver Dword Received (Primitive, Data Dword, or
Invalid Dword) message SP_DWS
Bits from Other messages state machine
physical
link Sync Lost message
Sync Acquired message

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 87


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Expander logical phy

SL_IR SOAF Received message SL_IR state


receiver Other messages machines
Each state
machine receiver
decodes only the SL_P_S SL_P_S state
Messages
specific primitives receiver machine
used by its
corresponding AIP Received message XL state
state machine XL receiver
Other messages machine

Link layer
Phy layer Dword Received (Primitive, Data Dword,
or Invalid Dword) confirmation

Find Dword message


Sync Acquired message
SP_DWS
receiver Dword Received (Primitive, Data Dword, or
Invalid Dword) message SP_DWS
Bits from Other messages state machine
physical
link Sync Lost message
Sync Acquired message

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

4.3.3.2 Receive data path while in the SAS packet 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);

88 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 89


T10/BSR INCITS 554 Revision 11 18 January 2021

See figure 135 for more information about the elasticity buffer, which is not shown in figure 36.

SAS logical phy

SL_IR SOAF Received message SL_IR state


receiver Other messages machines

SL_P_S SL_P_S state


Messages
receiver machine

Each state machine SL_P_C SL_P_C state


receiver decodes only Messages
receiver machine
the specific primitives,
if any, used by its
corresponding state SOAF Received message SL state
SL receiver
machine Other messages machines

ACK Received message SSP state


SSP receiver
Other messages machines

STP state
STP receiver Messages
machines

SOF Received message SMP state


SMP receiver
Other 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

Find SPL Packet message


Sync Acquired message
SP_PS Sync Lost message SP_PS state
receiver SPL Packet Received machine
(Valid or Invalid) message
Bits from
Other messages
physical
link SP state
machine and
SP_ReSync
PACKET_SYNC_LOST Received message
state
PACKET_SYNC Received message
machines
SP
receiver ALIGN Received message SP state
PACKET_SYNC Received message machine and
SPL Packet Received message PTT state
Other messages machines

Figure 36 – Receive data path in a SAS phy while in the SAS packet mode

90 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Expander logical phy

SL_IR SOAF Received message SL_IR state


Each state machine
receiver Other messages machines
receiver decodes
only the specific
primitives, if any, SL_P_S SL_P_S state
Messages
used by its receiver machine
corresponding state
machine AIP Received message XL state
XL receiver
Other messages machine

Link layer
Phy layer Dword Received (Data Dword, Primitive, Binary Primitive, Primitive
Parameter, or Invalid Dword) confirmation
QuadDword Received (Extended Binary Primitive) confirmation

Find SPL Packet message


Sync Acquired message
Sync Lost message SP_PS state
SP_PS
receiver SPL Packet Received machine
(Valid or Invalid) message
Bits from
Other messages
physical
link SP state
machine and
PACKET_SYNC_LOST Received message SP_ReSync
PACKET_SYNC Received message state
machines
SP
receiver
ALIGN Received message SP state
PACKET_SYNC Received message machine and
SPL Packet Received message PTT state
Other messages machines

Figure 37 – Receive data path in an expander phy while in the SAS packet mode

Working Draft SAS Protocol Layer - 5 (SPL-5) 91


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Application Layer SAS Port


SA_PC State Machine[1]
Other State Machine[0..*]
1 1 1
The definition of the Other
State Machine attribute is
outside the scope of this
standard.
1 1

Transport Layer Port Layer


TT State Machine[0..255] OC State Machine[1]
ST State Machine[0..1] = ST_I, ST_T PM State Machine[0..255]
MT State Machine[0..255] = MT_IP, MT_IT 1..255

{At least one state machine SAS Phy


attribute shall be present in
each instance of the
Transport Layer class.} 1 1 1
1
SAS Logical Phy
Phy Layer
SP State Machine[1]
1 SP_DWS State Machine[1]
SP_PS State Machine[0..1]
1 SP_ReSync State Machine[0..1]
PTT State Machines[0..1]
Link Layer PAPTA State Manchines[0..1]
SL_IR State Machines[1]
SL_P State Machines[1] = SL_P_S, SL_P_C
SL State Machines[1]
SSP State Machines[0..1]
STP State Machines[0..1]
SMP State Machines[0..1]

{In each instance of the Link Layer class, at least one


of the SSP State Machines, STP State Machines, or
SMP State Machines attributes shall be present.}

Figure 38 – State machines and SAS Device classes

92 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 Function Expander Port


SMP Port
ECM[1]
ECR[1]
BPP[1] 1
1 1
1
1
The definition of state machines
relating to the ECM, ECR, and
Port Layer
BPP attributes are outside the
scope of this standard. OC State Machine[1]
PM State Machine[0..255]
1..255
1

Expander Phy
Transport Layer
MT State Machine[1..255] = MT_IP, MT_IT
1 1
1 1..255

Expander Logical Phy


SMP Phy

1
1
1 1 1 1

Expander Link Layer Phy Layer


SL_IR State Machines[1] SP State Machine[1]
SL_P_S State Machines[1] SP_DWS State Machine[1]
XL State Machine[1] SP_PS State Machine[0..1]
SP_ReSync State Machine[0..1]
PTT State Machines[0..1]
1
PAPTA State Manchines[0..1]

SMP Logical Phy

1
1

Link Layer
SL State Machines[1]
SL_IR State Machines[1]
SMP State Machines[1]

Figure 39 – State machines and Expander Device classes

Working Draft SAS Protocol Layer - 5 (SPL-5) 93


T10/BSR INCITS 554 Revision 11 18 January 2021

4.4 Events

4.4.1 Reset sequences

Figure 40 shows the reset terminology used in this standard:


a) link reset sequence (see 6.11);
b) phy reset sequence (see 5.11);
c) SATA OOB sequence (see 5.11.2.1);
d) SATA speed negotiation sequence (see 5.11.2.2);
e) SAS OOB sequence (see 5.11.4.1);
f) SAS speed negotiation sequence (see 5.11.4.2);
g) identification sequence (see 6.11); and
h) hard reset sequence (see 6.11).

94 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

SATA
Time

Link reset sequence

Phy reset sequence

SATA power on sequence


SATA OOB SATA speed negotiation
sequence sequence

Phy layer SP state SP enters SATA link layer starts


machine starts SATA_PHY_Ready state

SAS
Time

Link reset sequence

Phy reset sequence


SAS OOB SAS speed negotiation Identification
sequence sequence sequence

Phy layer SP state SP enters Link layer Link layer


machine starts SAS_PHY_Ready state SL_IR state SL or XL
machines start state
machine
SL_IR state starts
machines enter
Completed
states

SAS (with hard reset )


Time

Link reset sequence with hard reset


Hard reset Identification
Phy reset sequence Phy reset sequence sequence
sequence

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

Figure 40 – Reset terminology

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 95


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

4.4.2 Hard reset

4.4.2.1 Hard reset overview

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).

4.4.2.2 Additional hard reset processing by SAS ports

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.

4.4.2.3 Additional hard reset processing by expander ports

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.

4.4.3 I_T nexus loss

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

96 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

e) there are no phys in the SAS port (see 7.2.2.2).


The SAS port initializes and starts an I_T nexus loss timer for a destination port after establishing an I_T
nexus loss timer event for the destination port. The SAS port stops the I_T nexus loss timer if:
a) a connection request to the destination port results in an OPEN_REJECT (RESERVED CONTINUE
0), OPEN_REJECT (RESERVED CONTINUE 1), or OPEN_REJECT (RETRY) (see table 135);
b) a connection to the destination port is established; or
c) a management application client completing the discover process (see 4.6) detects that the
destination port is in the SAS domain.
After the SAS port establishes an I_T nexus loss timer event for a destination port, the SAS port retries any
connection request to that destination port until:
a) a connection to that destination port is established; or
b) an I_T nexus loss event occurs.
The SAS port establishes an I_T nexus loss event for a destination port if:
a) the I_T nexus loss timer expires (see 7.2.2.1, 9.2.7.4, and 9.4.4.18);
b) a connection request to the destination port results in an abandon-class OPEN_REJECT (see table
134); or
c) the SAS port receives a vendor specific indication (e.g., SGPIO presence detection) that the
destination port is no longer in the SAS domain.
An I_T nexus loss occurs for a destination port if an I_T nexus loss event occurs (see SAM-5).
I_T nexus loss is handled by the port layer state machines (see 7.2.2.3). In some cases, the I_T nexus loss
timer is overridden for connection requests through self-configuring expander devices as described in 4.7.1.
If an I_T nexus loss occurs in an SSP port, then the SSP port sends a Nexus Loss event notification to the
SCSI application layer (see 9.2.5) and the SCSI device shall perform the actions defined for I_T nexus loss in
SAM-5. If an I_T nexus loss occurs in an SSP initiator port, then a SCSI application client should send an I_T
NEXUS RESET task management function to the SSP target port during the next connection between that
SSP initiator port and that SSP target port.
If an I_T nexus loss occurs in an STP initiator port, then the STP initiator port shall send a Transport Event
Notification (Nexus Loss, [Device]) indication to the ATA application client (i.e., create a nexus loss event) (see
ATA8-AAM). The ATA application client shall consider any commands for the lost STP target port to be
completed with an error.
If an I_T nexus loss occurs in an STP target port, then the ATA device server shall abort all outstanding
commands for the lost STP initiator port. If the STP target port is in an STP SATA bridge, then the STP SATA
bridge shall originate a link reset sequence to the SATA device so the ATA device server in the SATA device
aborts all outstanding commands.
If an I_T nexus loss occurs in an SMP initiator port, then the SMP initiator port shall stop attempting to
establish connections to the lost SMP target port.
If an I_T nexus loss occurs in an initiator port due to I_T nexus loss timer expiration, then a management
application client should cause a link reset sequence on the phys attached to the lost target port (e.g, if directly
attached, then the phys in the initiator port, if attached via expander devices, then the phys in the expander
device attached to the target port).

4.4.4 Power loss expected

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 97


T10/BSR INCITS 554 Revision 11 18 January 2021

4.5 Expander device model

4.5.1 Expander device model overview

An expander device shall contain the following:


a) an expander function containing:
A) an ECM (see 4.5.3);
B) an ECR (see 4.5.4); and
C) a BPP (see 4.5.5);
b) two or more physical expander phys;
c) an expander port available per phy; and
d) an SMP target port and a management device server.
An expander device may contain any of the following:
a) an SMP initiator port and a management application client; or
b) SAS devices with SSP ports, STP ports, and/or SMP ports and their associated device servers and/or
application clients.

98 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Expander link layer (XL)


Narrow ports or
Protocol specific wide ports
link and transport layers

External expander port - SATA host port


External SATA phy
Expander Expander
STP SATA transport
Narrow ports connection connection
layer
router manager
SATA link layer (ECR) (ECM)

Phy layer (SP, SP_PS,


SP_ReSync, and
SP_DWS)

External expander port Narrow ports or


External phy wide ports

Expander link layer


(XL and SL_IR)
Phy layer (SP,
SP_PS, SP_ReSync,
and SP_DWS)
Broadcast propagation
processor (BPP)

Figure 41 – Expander device model

4.5.2 Expander ports

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 99


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

4.5.3 Expander connection manager (ECM)

The ECM performs the following functions:


a) mapping a destination SAS address in a connection request to a destination phy using direct,
subtractive, or table routing methods;
b) arbitrating and assigning or denying path resources for connection requests following SAS arbitration
and pathway recovery rules;
c) configuring the ECR;
d) managing phy power conditions (see 4.11); and
e) managing APTA (see 4.15).

4.5.4 Expander connection router (ECR)

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).

100 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

4.5.5 Broadcast propagation processor (BPP)

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.

4.5.6 Expander device interfaces

4.5.6.1 Expander device interface overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 101


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 42 describes the interfaces present within an expander device.

Expander logical phy Expander function

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 42 – Expander device interfaces

102 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.5.6.2 Expander device interfaces detail

Figure 43 shows the interface requests, confirmations, indications, and responses used by an expander
device to manage connections.

Source Expander function Destination


expander expander
logical Idle logical phy
Requests

phy Request Path

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

Forward Break Forward Break


Forward Dword Forward Dword
Arb Status Arb Status
Confirmations

Open Accept Open Accept

Responses
Open Reject Open Reject
Backoff Retry Backoff Retry
Backoff Reverse Path Backoff Reverse Path
Indications

Broadcast Event
Requests

Notify Transmit Broadcast


BPP
Retry Transmit
Broadcast

Figure 43 – Expander device interface detail

Working Draft SAS Protocol Layer - 5 (SPL-5) 103


T10/BSR INCITS 554 Revision 11 18 January 2021

4.5.6.3 ECM interface

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.

Table 21 – Expander logical phy to ECM requests

Request Description

The XL state machine is in the XL0:Idle state (e.g., after


Idle
receiving an Enable Disable SAS Link (Disable) message).

Request Path (arguments) Request for a connection.

Partial Pathway Timeout Timer Expired The Partial Pathway Timeout Timer expired.

Request for information on the highest priority OPEN address


Request Fairness Priority frame for the expander logical phy specified by a Phy Identifier
argument.

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.

Table 22 – Expander logical phy to ECM responses

Response Description

Response meaning that an expander logical phy:


a) is being used for an unblocked partial pathway; or
Phy Status (Partial Pathway)
b) is waiting on another expander logical phy being used for a
partial pathway.

Response meaning that an expander logical phy:


a) is being used for a blocked partial pathway; or
Phy Status (Blocked Partial Pathway)
b) is waiting on another expander logical phy being used for a
blocked partial pathway.

Response meaning that an expander logical phy:


a) is being used for a connection; or
Phy Status (Connection)
b) is waiting on another expander logical phy being used for a
connection.

Response meaning that an expander logical phy is breaking a


Phy Status (Breaking Connection)
connection.

Response meaning that the ECM does not arbitrate or assign


path resources for Request Path requests for the requesting
Pause Phy expander logical phy except if the arbitrate or assign path
resource request is from the expander logical phy specified by a
Phy Identifier argument.

104 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 23 – ECM to expander logical phy confirmations

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 105


T10/BSR INCITS 554 Revision 11 18 January 2021

4.5.6.4 ECR interface

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

Forward Open (arguments) Request/indication to forward an OPEN address frame.

Request/indication to forward a CLOSE with type (e.g.,


Normal or Clear Affiliation), primitive parameters, if any,
Forward Close (arguments)
and the phy identifier, if any, of the expander logical phy
that received the CLOSE.

Forward Break Request/indication to forward a BREAK.

Forward Dword Request/indication to forward a dword.

106 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 AIP (WAITING ON PARTIAL) has been


Arb Status (Waiting On Partial)
received.

Confirmation/response that AIP (WAITING ON CONNECTION) has


Arb Status (Waiting On Connection)
been received.

Confirmation/response that either:


a) AIP (WAITING ON DEVICE) has been received; or
Arb Status (Waiting On Device) b) the expander logical phy has completed the forwarding of an
OPEN address frame and has entered the
XL6:Open_Response_Wait state.

Open Accept Confirmation/response that OPEN_ACCEPT has been received.

Confirmation/response that either:


a) OPEN_REJECT has been received; or
Open Reject
b) that the phy is in the slumber phy power condition (see
4.11.1.4).

Confirmation/response that the phy is in the partial phy power


condition (see 4.11.1.3) or:
a) a higher priority OPEN address frame has been received (see
6.16.4); and
Backoff Retry
b) the source SAS address and connection rate of the received
OPEN address frame are not equal to the destination SAS
address and connection rate of the transmitted OPEN address
frame.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 107


T10/BSR INCITS 554 Revision 11 18 January 2021

4.5.6.5 BPP interface

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.

Table 26 – Expander logical phy to BPP requests

Request Description

Request to originate a Broadcast (Change) because the expander logical


phy’s SP state machine transitioned from the SP15:SAS_PHY_Ready
Broadcast Event Notify (Phy
state, SP22:SATA_PHY_Ready state, SP31:SAS_PS_Low_Phy_Power
Not Ready)
state, SP32:SAS_PS_ALIGN0 state, or SP33:SAS_PS_ALIGN1 state to
the SP0:OOB_COMINIT state (see 5.14).

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


Request to originate a Broadcast (Change) because the expander logical
(Identification Sequence
phy has completed the identification sequence (see 6.11).
Complete)

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.

Request to forward a Broadcast (Reserved Change 0) because the


Broadcast Event Notify
expander logical phy received a Broadcast (Reserved Change 0). See
(Reserved Change 0 Received)
6.15 and 6.19.

Request to forward a Broadcast (Reserved Change 1) because the


Broadcast Event Notify
expander logical phy received a Broadcast (Reserved Change 1). See
(Reserved Change 1 Received)
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.

108 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 27 – BPP to expander logical phy indications

Message Description

Indication to transmit a BROADCAST primitive sequence with


Transmit Broadcast (type)
the specified type.

4.5.7 Expander device routing

4.5.7.1 Routing attributes and routing methods

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.

Table 28 – Routing attributes and routing methods

Routing Routing method used by ECM for the expander phy


attribute of an
expander phy If attached to an end device If attached to an expander device

a
Direct Direct

Direct for the SAS address of the expander device.


Table Direct
Table for SAS addresses beyond the expander device.

Subtractive Direct Subtractive


a
If attached to an expander device, then the ECM is only able to route to the expander device itself
through a phy with the direct routing attribute.

Working Draft SAS Protocol Layer - 5 (SPL-5) 109


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

4.5.7.2 Expander device topology routing attribute restrictions

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.

4.5.7.3 Connection request routing

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).

4.5.7.4 Expander route table

4.5.7.4.1 Expander route table overview

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).

110 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 29 defines the types of expander route tables.

Table 29 – Expander route table types

Type SMP functions to access Reference

REPORT ROUTE INFORMATION (see 9.4.4.13) and


Phy-based 4.5.7.4.2
CONFIGURE ROUTE INFORMATION (see 9.4.4.27)

Expander-based REPORT EXPANDER ROUTE TABLE LIST (see 9.4.4.17) 4.5.7.4.3

4.5.7.4.2 Phy-based expander route table

Figure 44 shows a representation of a phy-based expander route table.

Phy identifier

Phy-based A phy identifier for each expander phy


expander route table of the expander device .

Expander Phy identifier N  (NUMBER OF PHYS field value in the


route index 0 1 2 ... N REPORT GENERAL response) - 1

0
1
Expander route entry
2
... Includes:
a) ROUTED SAS ADDRESS field; and
M
b) DISABLE EXPANDER ROUTE ENTRY bit.

Expander route index

An expander route index for each


expander route entry.

M EXPANDER ROUTE INDEXES field value


in the REPORT GENERAL response ) - 1

Figure 44 – Phy-based expander route table

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 111


T10/BSR INCITS 554 Revision 11 18 January 2021

4.5.7.4.3 Expander-based expander route table

Figure 45 shows a representation of an expander-based expander route table.

Indicates the expander phys to which


connection requests to the routed SAS
address may be forwarded.
Expander-based
expander route table

Phy bit map


Routed SAS address
0 1 2 ... N
SAS address A 1 indicates the
SAS address B expander phy is
used for forwarding
SAS address C connection
... requests, 0
indicates it is not

Figure 45 – Expander-based expander route table

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).

4.5.8 Expander device reduced functionality

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.

112 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.5.9 Broadcast (Expander) handling

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.

4.6 Retimer device model

4.6.1 Retimer device model overview

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.

4.6.2 Retimer lanes

A retimer lane contains a retimer function and two retimer phys (see 4.1.2.3).

4.6.3 Retimer function

4.6.3.1 Retimer function overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 113


T10/BSR INCITS 554 Revision 11 18 January 2021

4.6.3.2 Retimer link negotiation

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).

4.6.3.3 Retimer SNW-3

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.

4.6.3.4 Retimer phy transmitter training

Retimer phys for a retimer lane each train independently for optimal performance on each side of the retimer
lane.

4.6.3.5 Retimer SSC support

If a retimer phy’s transmitter supports spread spectrum clocking and SSC is enabled, then the transmitter shall
use center-spreading SSC.

4.6.3.6 IDENTIFY address frame

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.

114 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.7 Discover process

4.7.1 Discover process overview

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.

4.7.2 Starting the discover process (Broadcast (Change) handling)

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.

4.7.3 Discover process traversal

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 115


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Management application client in an end


device or self-configuring expander device

Expander
Traversal order: 1
device

Expander SAS Expander Expander


2 3 4 5
device device device device

6 7 8 9 10 11
Expander Expander SAS SAS Expander SAS
device device device device device device

SAS Expander SAS SAS


12 13 14 15
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

Figure 46 – Level-order traversal example

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).

116 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

4.7.4 Discover process in a self-configuring expander device

The management application client of a self-configuring expander device shall configure:


a) the expander routing table in that expander device; and
b) the expander routing table in each externally configurable expander device in the SAS domain that is
not located behind another self-configuring expander device with the CONFIGURES OTHERS bit set to
one in the REPORT GENERAL response (see 9.4.4.4).
When a self-configuring expander device receives a Broadcast (Change) the management application client
shall start the discover process using the expander port that received the Broadcast (Change). If a change to
the expander route table is identified, then the management device server shall set its SELF CONFIGURING bit to
one in the SMP REPORT GENERAL response (see 9.4.4.4).
If zoning is enabled, then the management application client in a self-configuring expander device shall use
the SMP DISCOVER response (see 9.4.4.10) or SMP DISCOVER LIST response (see 9.4.4.15) values to set
the zone group values in the zoning expander route table for all SAS addresses in the zoning expander route
table (see 4.9.3.4).
The management device server shall set the SELF CONFIGURING bit to zero when the discover process is
complete. When the SELF CONFIGURING bit changes from one to zero:
a) a zoning expander device with zoning enabled shall originate a Broadcast (Change) on each
expander port that has access to the expander port through which the discover process was
performed based on the zone permission table; and
b) an expander device with zoning disabled shall originate a Broadcast (Change) on each expander port
other than the one through which the discover process was performed.
After receiving a Broadcast (Change), a self-configuring expander device shall continue to route connection
requests for each previously valid SAS address until the expander device determines that the SAS address is
no longer valid. After determining that a SAS address is no longer valid, the self-configuring expander device
shall continue to route connection requests for other SAS addresses.
If the SELF CONFIGURING bit is set to one and there is a connection request in which there is no path to the
requested destination, then the expander device shall return OPEN_REJECT (RETRY) instead of
OPEN_REJECT (NO DESTINATION) (see 4.5.6.3).

Working Draft SAS Protocol Layer - 5 (SPL-5) 117


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

4.8 Configuration subprocess

4.8.1 Configuration subprocess overview

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.

4.8.2 Allowed expander device topologies

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).

118 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

If the management application client detects a port that:


a) the configuration subprocess has not already configured with a SAS address; and
b) it has already found attached to another expander device,
then the management application client should use the SMP PHY CONTROL function (see 9.4.4.28) to
disable all the expander phys attached to that SAS address except for phys in the expander device with the
lowest SAS address. Figure 47 shows some invalid topologies.

Problem: Multiple paths to SAS address B in the SAS domain.


Expander device Y From A to B:
A to Y to B
A to Y to Z to B
From C to B:
SAS Expander C to Z to B
device A device Z C to Z to Y to B
SAS device B considers itself in two SAS domains.

SAS SAS Remedy: Disable phys in expander device Z


device B device C attached to SAS address B.

Problem: Multiple paths in the SAS domain , including:


Expander device Y
From A to C:
A to Y to Z to C
A to Y to X to Z to C
From A to B:
SAS Expander
A to Y to X to B
device A device Z
A to Y to Z to X to B

Also, introduces a loop where Broadcasts cycle forever :


Expander SAS Y to X to Z (to Y )
device X device C Y to Z to X (to Y )

SAS Remedy: Disable phys in expander device Z


device B attached to expander device X .

Figure 47 – Examples of invalid topologies

4.8.3 Externally configurable expander device route table optimization

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 119


T10/BSR INCITS 554 Revision 11 18 January 2021

B) the ROUTING ATTRIBUTE field is set to 1h (i.e., subtractive) or 2h (i.e., table);


C) the ATTACHED SAS DEVICE TYPE field is set to a non-zero value (e.g., end device or expander
device); and
D) the ATTACHED SAS ADDRESS field contains the SAS address of the expander device being
configured (i.e., a self-referencing address);
d) 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);
C) the ATTACHED SAS DEVICE TYPE field is set to a non-zero value (e.g., end device or expander
device); and
D) the ATTACHED SAS ADDRESS field contains the SAS address of a device directly attached to the
expander device being configured;
or
e) 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);
C) the ATTACHED SAS DEVICE TYPE field is set to a non-zero value (e.g., end device or expander
device); and
D) the ATTACHED SAS ADDRESS field contains a SAS address that already exists in the expander route
table.
If the discovered SAS address being included in the expander route table is for a device that is not attached
(i.e., the ATTACHED SAS DEVICE TYPE field is set to zero (i.e., no device attached) and the ROUTE ATTRIBUTE field
is set to 0h (i.e., direct)), then the entry shall be inserted with the ROUTED SAS ADDRESS field set to
00000000 00000000h and the DISABLE EXPANDER ROUTE ENTRY bit set to one (see 9.4.4.27).
If route table optimization is disabled, then all SAS addresses shall be qualified for insertion in the expander
route table.
If the management application client supports route table optimization, then the management application
client should provide a vendor specific method for initiating a check of the resulting expander route tables. The
check should be performed under the following situations:
a) when an I_T nexus loss occurs for a destination port that is expected to be present;
b) when a discover process has been completed;
c) when another SMP initiator port is discovered in the SAS domain; or
d) when a self-configuring expander device is discovered in the SAS domain.
If the management application client detects an inconsistency in the expander route tables when route table
optimization is enabled (e.g., detects entries that appear to have been filled in by a discover process with
route table optimization disabled), then the management application client shall report an error in a vendor
specific manner and shall disable route table optimization. The management application client should then
reinitiate a discover process with route table optimization disabled.

4.8.4 Externally configurable expander device expander route index order

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;

120 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 121


T10/BSR INCITS 554 Revision 11 18 January 2021

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)

Phy 0 (S) Phy 0 (S)


W, X, Y, and Z are not
Expander device inserted because they are Expander device
(SAS address F) beyond a table-to-table (SAS address U)
attachment. V is inserted.
Phy 1 (T) Phy 1 (T)

Phy 0 (S) Phy 0 (T)

Expander device (SAS address E) Expander device (SAS address V)

Phy 1 Phy 2 Phy 3 Phy 4 Phy 1 Phy 2 Phy 3 Phy 4

End End End End End End End End


device device device device device device device device
(SAS (SAS (SAS (SAS (SAS (SAS (SAS (SAS
address address address address address address address address
A) B) C) D) W) X) Y) Z)

Routing method
S = subtractive
T = table

Figure 48 – Externally configurable expander device and table-to-table attachment

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.

122 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 49 shows a portion of a SAS domain, where phy A in expander device R is being configured.

Externally Entries for N


configurable Entries for U
expander ...
Level 0 device Expander Entries for V
(from R route table Entries for W
expander for phy A ...
device R) Entries for X
Entries for Y
...
(Assume that the Entries for Z
Phy A
lowest phy identifier is
on the top and phy
identifiers increase in Externally configurable
counter-clockwise expander device N
order) (n phys) Expander route
Level 1
table for phy B
(from
Phy B Entries for U
expander
...
device R)
Entries for W
...
Entries for X

Level 2 Expander Expander


(from device U device V
expander (u phys) (v phys)
device R)
Level 3 Expander Expander Expander Expander
(from device W device X device Y device Z
expander (w phys) (x phys) (y phys) (z phys)
device R)

Figure 49 – Expander route index levels example

Working Draft SAS Protocol Layer - 5 (SPL-5) 123


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Expander route index Expander route entry contents

Level 1 (from expanded device R) entries

0 to ( n entries) Qualified SAS addresses attached to expander device N

Level 2 (from expanded device R) entries

( u entries) Qualified SAS addresses attached to expander device U

... ...additional qualified SAS addresses for expander devices at level 2...

( v entries) Qualified SAS addresses attached to expander device V

Level 3 (from expanded device R) entries

( w entries) Qualified SAS addresses attached to expander device W

... ...additional qualified SAS addresses for expander devices at level 3...

( x entries) Qualified SAS addresses attached to expander device X

( y entries) Qualified SAS addresses attached to expander device Y

... ...additional qualified SAS addresses for expander devices at level 3...

( z entries) Qualified SAS addresses attached to expander device Z

Entries for additional levels

... ...

Disabled entries

... ...

124 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Expander route index Expander route entry contents

Level 1 (from expanded device N) entries

0 .. ( u entries) Qualified SAS addresses attached to expander device U

Level 2 (from expanded device N) entries

( w entries) Qualified SAS addresses attached to expander device W

... ...additional qualified SAS addresses for expander devices at level 2...

( x entries) Qualified SAS addresses attached to expander device X

Entries for additional levels

... ...

Disabled entries

... ...

Working Draft SAS Protocol Layer - 5 (SPL-5) 125


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 50 shows an example topology.

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

Figure 50 – Expander route index order example

126 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Expander route index Expander route entry contents

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

Level 2 and beyond

No entries

Disabled entries

Any remaining entries are disabled

Working Draft SAS Protocol Layer - 5 (SPL-5) 127


T10/BSR INCITS 554 Revision 11 18 January 2021

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

... ...additional qualified SAS addresses for 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

... ...additional qualified SAS addresses for expander device E1...

SAS address (e.g., D1Y) of the device attached to phy Y of expander device E1

... ...additional qualified SAS addresses for expander devices E2 to EN-1...

SAS address (e.g., DN1) of the device attached to phy 1 of expander device EN

... ...additional qualified SAS addresses for expander device EN...

SAS address (e.g., DNZ) of the device attached to phy Z of expander device EN

Level 3 and beyond

No entries since all devices attached to E1 to EN, except for E0, are end devices

Disabled entries

Any remaining entries are disabled

4.9 Zoning

4.9.1 Zoning overview

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.

128 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 51 shows an example of zoning.

ZPSDS Zone groups and attributes


Zoning is enabled in IZ = INSIDE ZPSDS bit set to one
expander devices A , B, 8 = zone group 8
and C and is disabled in Expander device A 9 = zone group 9
expander device D . 10 = zone group 10
IZ 8 10 IZ
15 = zone group 15
End 16 = zone group 16
8 IZ IZ 17 = zone group 17
device
End Expander Expander
device 9 device C
device B 16 End
15 16 17 device
End 9 8 Expander
device device D
End End
End
device device
End device
device End End
device device End
End device
device

Zone permission table Zone groups of these end


devices are the same as
Zone group 1 has access to all zone groups .
Zone group 15 has access to zone group 9. that of the expander
Zone group 16 has access to zone group 10. device D
Zone group 17 has access to zone group 8.

Figure 51 – Zoning example

Figure 52 shows an example of one ZPSDS in a SAS domain.

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

End device End device

Expander devices 1, 2, and 3 have zoning enabled.


Expander devices 4 and 5 have zoning disabled.

Figure 52 – One ZPSDS example

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 129


T10/BSR INCITS 554 Revision 11 18 January 2021

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

End device End device

Zone manager attached directly to the expander devices in the ZPSDS


Zone
manager
Sideband interfaces (e.g., Ethernet)
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

End device End device

Zone manager attached directly to one expander device in the ZPSDS


Zone
manager
ZPSDS Sideband interface (e.g., Ethernet)
End device Expander Expander End device
SMP
End device device 2 initiator device 4 End device
port

End device Expander ECR Expander End device


End device device 3 Expander device 1 device 5 End device

End device End device

Figure 53 – Zone manager location examples

130 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Figure 54 – Three ZPSDSes example

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 131


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 34 – Zone manager password

Code Name Description

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

Random value, providing access only to a zone manager that


All others
presents the correct value.

The expander device:


a) shall maintain a current value;
b) shall maintain a shadow value;
c) may maintain a saved value; and
d) shall have a default value,
for each of the following settings:
a) zoning enabled;
b) the zone permission table; and
c) zone phy information.
The expander device:
a) shall maintain a current value;
b) may maintain a saved value; and
c) shall have a default value,
for the zone manager password, if any.
Support or lack of support for saved values for one setting does not imply support or lack of support for saved
values for any other setting (e.g., the expander device may maintain a saved value for zoning enabled but not
for the zone permission table).
For each setting, after power on or expander device reduced functionality, the expander device shall set the
current value to the saved value, if any, or the default value, if there is no saved value.

4.9.2 Zoning expander device requirements

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;

132 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 55 – Extending a ZPSDS example

Working Draft SAS Protocol Layer - 5 (SPL-5) 133


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Figure 56 – Overtaking a ZPSDS example

134 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.9.3 Zoning operation

4.9.3.1 Zone phy information

Each phy of a zoning expander device shall support the zone phy information fields defined in table 35.

Table 35 – Zone phy information

Recommended
Field Description
default

Indicates if the phy is inside or on the boundary of a a


INSIDE ZPSDS bit N/A
ZPSDS

REQUESTED INSIDE ZPSDS bit Used to establish the boundary of the ZPSDS 0

Used to determine the value of the INSIDE ZPSDS bit after


INSIDE ZPSDS PERSISTENT bit 0
a link reset sequence

Used to determine the zone group of the phy after a link


ZONE GROUP PERSISTENT bit 0
reset sequence if the INSIDE ZPSDS bit is set to zero

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 135


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 36 lists the usage of the current values of the zone phy information fields.

Table 36 – Zone phy information usage

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

INSIDE ZPSDS bit No Yes No No Yes

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

ZONE GROUP field No Yes No Yes Yes f

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.

136 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 137


T10/BSR INCITS 554 Revision 11 18 January 2021

4.9.3.2 Zone groups

The zone groups are defined in table 37.

Table 37 – Zone groups

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.

1 No Phys in zone group 1 have access to phys in all zone groups.

Phys in zone group 2 have access to phys in the zone groups indicated by the
zone permission table.

A management device server in a zoning expander device with zoning enabled


only allows management application clients using phys in zone groups with
access to zone group 2 to perform the following SMP functions:
a) CONFIGURE GENERAL (see 9.4.4.18);
b) ZONE LOCK (see 9.4.4.21); and
2 Yes c) SMP zone configuration functions (see 4.9.6.1) performed while the
zoning expander device is locked.

A management device server in a zoning expander device with zoning enabled


only allows management application clients to perform certain SMP phy-based
control and configuration functions (e.g., PHY CONTROL, PHY TEST
FUNCTION, and CONFIGURE PHY EVENT) if the zone group of the
management application client’s phy has access to zone group 2 or the zone
group of the specified phy.

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).

4.9.3.3 Zone permission table

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.

138 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The zone permission table structure is shown in table 38.

Table 38 – Zone permission table

Destination Source zone group (i.e., s) a b


zone group
(i.e., d) 0 1 2 to 3 4 to 7 8 to (z-1) c

0 0 1 0 0 0

1 1 1 1 1 1

ZP[s = 2 to 3, ZP[s = 8 to (z-1),


2 to 3 0 1 Reserved
d = 2 to 3] d = 2 to 3]

4 to 7 0 1 Reserved Reserved Reserved

c ZP[s = 2 to 3, ZP[s = 8 to (z-1),


8 to (z-1) 0 1 Reserved
d = 8 to (z-1)] d = 8 to (z-1)]
a Shading identifies configurable zone groups.
b All reserved ZP bits shall be set to zero (e.g., bits ZP[4 to 7, 4 to (z-1)] are set to zero).
c The number of zone groups (i.e., z) is reported in NUMBER OF ZONE GROUPS field in the
REPORT GENERAL response (see 9.4.4.4).

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 139


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 39 – Zone permission table granting minimal permissions

Destination Source zone group (i.e., s) a b


zone group
(i.e., d) 0 1 2 to 3 4 to 7 8 to (z-1) c

0 0 1 0 0 0

1 1 1 1 1 1

2 to 3 0 1 0 Reserved 0

4 to 7 0 1 Reserved Reserved Reserved


c
8 to (z-1) 0 1 0 Reserved 0
a Shading identifies configurable zone groups.
b All reserved ZP bits shall be set to zero (e.g., bits ZP[4 to 7, 4 to (z-1)] are set to zero).
c The number of zone groups (i.e., z) is reported in NUMBER OF ZONE GROUPS field in the
REPORT GENERAL response (see 9.4.4.4).

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.

4.9.3.4 Zoning expander route table

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.

140 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 57 shows a representation of the zoning expander route table.

Indicates the expander phys to


which connection requests to the Indicates the zone group, if any, of
routed SAS address may be the phy with the routed SAS
forwarded. address.
Zoning expander route table

Phy bit map ZONE GROUP


Routed SAS address
field
0 1 2 ... N
SAS address A
SAS address B
SAS address C
...

1 indicates the
expander phy is
used for forwarding
connection
requests, 0
indicates it is not

Figure 57 – Zoning expander route table

The zoning expander route table:


a) shall include discovered SAS addresses discovered behind each expander phy with the ROUTING
ATTRIBUTE field set to 2h (i.e., table) in the DISCOVER response; and
b) may include discovered SAS addresses discovered behind expander phys with the ROUTING
ATTRIBUTE field set to 1h (i.e., subtractive) in the DISCOVER response as long as they do not prevent
inclusion of SAS addresses for expander phys with the ROUTING ATTRIBUTE field set to 2h (i.e., table).
The determination of which such SAS addresses to include is vendor specific.
The total number of routed SAS addresses shall not exceed the value indicated in the MAXIMUM NUMBER OF
ROUTED SAS ADDRESSES field in the REPORT GENERAL response.

4.9.3.5 Source zone group and destination zone group determination

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 141


T10/BSR INCITS 554 Revision 11 18 January 2021

Zoning expander devices with zoning enabled shall follow the rules in table 40 to determine the zone group of
the source port.

Table 40 – Source zone group determination

INSIDE ZPSDS bit of the


expander phy that received Source zone group
the OPEN address frame

0 Zone group of the receiving expander phy

Source zone group specified by the SOURCE ZONE GROUP


1
field in the received OPEN address frame

Zoning expander devices with zoning enabled shall follow the rules in table 41 to determine the zone group of
the destination port.

Table 41 – Destination zone group determination

Routing method of the


Destination zone group
destination expander phy

Direct Zone group of the destination expander phy

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

4.9.4 Zone phy information and link reset sequences

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

142 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

REQUESTED INSIDE ZPSDS


INSIDE ZPSDS bit PERSISTENT bit
Zone phy information field changes
Transmitted Received Transmitted Received

0 0 or 1 The zoning expander device shall set the INSIDE


0 or 1 0 or 1
ZPSDS bit to zero.
1 0

0 0 If the SAS ADDRESS field received in the IDENTIFY


address frame during the identification sequence
0 1 is different from the SAS ADDRESS field received
prior to the completion of the link reset sequence,
then the zoning expander device shall:
a) set the REQUESTED INSIDE ZPSDS bit to zero;
and
b) set the INSIDE ZPSDS bit to zero.
1 1 1 0 If the SAS ADDRESS field received in the IDENTIFY
address frame during the identification sequence
is the same as the SAS ADDRESS field received
prior to the completion of the link reset sequence,
then the zoning expander device shall set the
INSIDE ZPSDS bit to one.

The zoning expander device shall set the INSIDE


1 1
ZPSDS bit to one.

Working Draft SAS Protocol Layer - 5 (SPL-5) 143


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Current INSIDE New INSIDE


a ZONE GROUP field change
ZPSDS Bit ZPSDSBit b

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.

144 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 44 – Conditions that cause the ZONE GROUP field to be updated if the ZONE GROUP PERSISTENT
bit is set to zero

Initial condition Event after the initial condition is established

A subsequent link reset sequence completes and:


a) any of the following fields received in the IDENTIFY address frame (see 6.10.2)
during the identification sequence are different from their values prior to the
Completed link reset completion of the link reset sequence:
sequence with a A) SAS ADDRESS field; or
SAS device attached B) REQUESTED INSIDE ZPSDS field;
or
b) a SATA device is attached.

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.

4.9.5 Broadcast processing in a zoning expander device with zoning enabled

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 145


T10/BSR INCITS 554 Revision 11 18 January 2021

To forward a Broadcast to an expander port:


a) if the expander port’s INSIDE ZPSDS bit is set to one, then the BPP shall request that the SMP initiator
port establish a connection on at least one phy in the expander port to the SMP target port of the
attached expander device and transmit an SMP ZONED BROADCAST request specifying the source
zone groups; or
b) if the expander port’s INSIDE ZPSDS bit is set to zero, then the BPP shall send a Transmit Broadcast
message to at least one phy in the expander port, causing it to transmit a BROADCAST primitive
sequence.

4.9.6 Zone configuration

4.9.6.1 Zone configuration overview

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.

4.9.6.2 Lock step

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

146 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.9.6.3 Load step

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 147


T10/BSR INCITS 554 Revision 11 18 January 2021

4.9.6.4 Activate step

The activate step:


a) saves the zoning expander shadow values, if saving was requested;
b) copies the zoning expander shadow zone permission table to the current zone permission table;
c) for each phy with the INSIDE ZPSDS bit set to zero, copies the shadow zone phy information to the
current zone phy information; and
d) for each phy with the INSIDE ZPSDS bit set to one:
A) sets the current zone group to 01h; and
B) for the remaining fields in the zone phy information, copies the shadow zone phy information to
the current zone phy information.
The active zone manager originates one of the following:
a) a Broadcast (Zone Activate) (see 4.1.15); or
b) an SMP ZONE ACTIVATE request (see 9.4.4.22) to all locked zoning expander devices.
After a locked zoning expander device receives a Broadcast (Zone Activate) or processes an SMP ZONE
ACTIVATE request the zoning expander device shall:
a) copy the zoning expander shadow zone permission table to the current zone permission table;
b) for each phy with the INSIDE ZPSDS bit set to zero, copy the shadow zone phy information to the current
zone phy information; and
c) for each phy with the INSIDE ZPSDS bit set to one:
A) set the current zone group to 01h; and
B) for the remaining fields in the zone phy information, copy the shadow zone phy information to the
current zone phy information.
If the active zone manager receives an SMP ZONE ACTIVATE response 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 activate 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.

4.9.6.5 Unlock step

The unlock step ensures that:


a) the active zone manager unlocks the locked zoning expander devices; or
b) if the zone manager fails, then the zone lock inactivity timer expires and the zoning expander devices
unlock.
If the active zone manager originated Broadcast (Zone Activate), then it sends an SMP ZONE UNLOCK
request (see 9.4.4.23) with the ACTIVATE REQUIRED bit set to one to each of the locked zoning expander
devices. This ensures that the activate step precedes the unlock step in each zoning expander device. If the
active zone manager receives an SMP ZONE UNLOCK response with the FUNCTION RESULT field set to NOT
ACTIVATED (see 9.4.4.3), then it retries the SMP ZONE UNLOCK request a vendor specific number of times,
then originates an SMP ZONE ACTIVATE request to each locked zoning expander device.
If the active zone manager originated SMP ZONE ACTIVATE requests, then after all the SMP ZONE
ACTIVATE functions have completed without error, it sends an SMP ZONE UNLOCK request with the
ACTIVATE REQUIRED bit set to zero to each of the locked zoning expander devices. If the active zone manager
receives an SMP ZONE UNLOCK response with the FUNCTION RESULT field set to BUSY (see 9.4.4.3), then it
retries the SMP ZONE UNLOCK request.
When the SMP ZONE UNLOCK request is successful or the zone lock inactivity timer expires, then the zoning
expander device is unlocked and shall:
a) set the ZONE LOCKED bit to zero in the SMP REPORT GENERAL response (see 9.4.4.4);
b) set the ZONE CONFIGURING bit to zero in the SMP REPORT GENERAL response;

148 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.9.6.6 Zone lock inactivity timer

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.

4.9.6.7 Enable a zoning expander device

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).

4.10 SAS device and expander device power conditions

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 149


T10/BSR INCITS 554 Revision 11 18 January 2021

4.11 Phy power conditions

4.11.1 Low phy power conditions

4.11.1.1 Low phy power conditions overview

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.

4.11.1.2 Active phy power condition

While in the active phy power condition:


a) the phy is capable of transmitting information and responding to received information; and
b) the phy may consume more power than while the phy is in a low phy power condition.

4.11.1.3 Partial phy power condition

While in the partial phy power condition:


a) the phy is only capable of processing a COMINIT or COMWAKE (see SATA);
b) the phy may take less time to return to the active phy power condition (see table 84) than while in the
slumber phy power condition; and
c) the power consumed by the phy should be less than the power consumed while the phy is in the
active phy power condition and may be greater than the power consumed while the phy is in the
slumber phy power condition.

4.11.1.4 Slumber phy power condition

While in the slumber phy power condition:


a) the phy is only capable of processing a COMINIT or COMWAKE;
b) the phy may take more time to return to the active phy power condition (see table 84) than while in the
partial phy power condition; and
c) the power consumed by the phy should be less than the power consumed while the phy is in the
active phy power condition and while the phy is in the partial phy power condition.

4.11.1.5 End device low phy power conditions

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).

150 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.11.1.6 Expander device low phy power conditions

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.

4.11.2 SATA phy power conditions

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 151


T10/BSR INCITS 554 Revision 11 18 January 2021

NOTE 8 - SAS-2 required the STP initiator port to transmit SATA_PMNAK.

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.

4.12 Phy test functions

4.12.1 Phy test functions overview

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.

152 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4.12.2 Transmit pattern phy test function

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.

4.13 Phy events

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 153


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 45 – PHY EVENT SOURCE field (part 1 of 5)

Code Name Type a Description

00h No event N/A No event. The PHY EVENT field is not valid.

Phy layer-based phy events (01h to 1Fh)

Number of invalid dwords that have been received outside of


phy reset sequences (i.e., between when the SP state
b machine (see 5.14) sends a Phy Layer Ready (SAS)
01h Invalid dword count WC
confirmation or Phy Layer Ready (SATA) confirmation and
when it sends a Phy Layer Not Ready confirmation to the link
layer).

Number of dwords containing running disparity errors (see


Running disparity error
02h WC 5.3.5) that have been received outside of phy reset
count b
sequences.

Number of times the phy has restarted the link reset


sequence because it lost dword synchronization while in SAS
Loss of dword
03h b WC dword mode (i.e., the SP state machine transitioned from
synchronization count
SP15:SAS_PHY_Ready or SP22:SATA_PHY_Ready to
SP0:OOB_COMINIT (see 5.14)).

b Number of times a phy reset problem has occurred (see


04h Phy reset problem count WC
5.11.4.2.4).

Number of times the phy’s elasticity buffer (see 6.5) has


Elasticity buffer overflow
05h WC overflowed outside of phy reset sequences (e.g., because it
count
did not receive a sufficient number of deletable primitives).

06h Received ERROR count WC Number of times the phy received an ERROR.

Number of invalid SPL packets that have been received


outside of phy reset sequences while in SAS packet mode
(i.e., between when the SP state machine (see 5.14) sends a
07h Invalid SPL packet count WC
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).
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).

154 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 45 – PHY EVENT SOURCE field (part 2 of 5)

Code Name Type a Description

Number of times the phy has restarted the link reset


sequence because it lost SPL packet synchronization while in
Loss of SPL packet
08h WC SAS packet mode (i.e., the SP state machine transitioned
synchronization count
from SP15:SAS_PHY_Ready to SP0:OOB_COMINIT (see
5.14.4.10)).

09h
to Reserved
1Fh

SAS arbitration-related phy events (20h to 3Fh)

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).

Number of times the phy received an OPEN address frame


Transmitted
and transmitted an abandon-class OPEN_REJECT (see
21h abandon-class WC
6.2.6.10). In expander devices, forwarded OPEN_REJECTs
OPEN_REJECT count
shall not be counted.

Number of times the phy originated an OPEN address frame


Received abandon-class and received an abandon-class OPEN_REJECT (see
22h WC
OPEN_REJECT count 6.2.6.10). In expander devices, OPEN_REJECTs in response
to forwarded OPEN address frames shall not be counted.

Number of times the phy received an OPEN address frame


Transmitted retry-class and transmitted a retry-class OPEN_REJECT (see 6.2.6.10).
23h WC
OPEN_REJECT count In expander devices, forwarded OPEN_REJECTs shall not be
counted.

Number of times the phy originated an OPEN address frame


Received retry-class and received a retry-class OPEN_REJECT (see 6.2.6.10). In
24h WC
OPEN_REJECT count expander devices, OPEN_REJECTs in response to forwarded
OPEN address frames shall not be counted.

Number of times the phy received an AIP (WAITING ON


Received AIP (WAITING
25h WC PARTIAL) or AIP (RESERVED WAITING ON PARTIAL). In
ON PARTIAL) count
expander devices, forwarded AIPs shall be counted.

Number of times the phy received an AIP (WAITING ON


Received AIP (WAITING
26h WC CONNECTION). In expander devices, forwarded AIPs shall
ON CONNECTION) count
be counted.

Number of times the phy transmitted a BREAK primitive


sequence that was not a response to a BREAK primitive
27h Transmitted BREAK count WC
sequence it received (e.g., a Close Timeout was detected by
the SL state machines interfacing to the SMP target port).
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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 155


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 45 – PHY EVENT SOURCE field (part 3 of 5)

Code Name Type a Description

Number of times the phy received a BREAK primitive


28h Received BREAK count WC sequence that was not a response to a BREAK primitive
sequence that it transmitted.

Number of times the phy transmitted a BREAK primitive


sequence and did not receive a BREAK primitive sequence or
29h Break Timeout count WC BREAK_REPLY primitive sequence in response (e.g., as
detected by the XL state machine and/or the SL state
machines interfacing to the SMP target port).

2Ah Connection count WC Number of connections in which the phy was involved.

Peak value of a PATHWAY BLOCKED COUNT field in an OPEN


Peak transmitted pathway address frame transmitted by the phy. Since the maximum
2Bh PVD
blocked count value of the PATHWAY BLOCKED COUNT field is FFh, only byte 3
of the PHY EVENT field is used.

Peak value of an ARBITRATION WAIT TIME field in an OPEN


Peak transmitted address frame transmitted by the phy. Since the maximum
2Ch PVD
arbitration wait time value of the ARBITRATION WAIT TIME field is FFFFh, only byte 2
and byte 3 of the PHY EVENT field are used.

Peak time in microseconds after transmitting an OPEN


2Dh Peak arbitration time PVD address frame that the phy has waited for connection
response (e.g., OPEN_ACCEPT or OPEN_REJECT).

The peak duration, in microseconds, of any connection in


2Eh Peak connection time PVD
which the phy was involved.

Persistent connection Number of persistent connections (see 4.1.13) in which the


2Fh WC
count phy was involved.

30h
to Reserved
3Fh

SSP-related phy events (40h to 4Fh)

Transmitted SSP frame


40h WC Number of SSP frames transmitted.
count

Received SSP frame


41h WC Number of SSP frames received.
count

Number of times the phy was used in a connection involving


Transmitted SSP frame
42h WC the SSP target port, transmitted an SSP frame, and received
error count
a NAK or an ACK/NAK timeout.
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).

156 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 45 – PHY EVENT SOURCE field (part 4 of 5)

Code Name Type a Description

Number of times the phy was used in a connection involving


Received SSP frame error the SSP target port, detected an invalid SSP frame, and
43h WC
count transmitted a NAK (CRC ERROR) (e.g., because of a CRC
error).

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

STP and SATA-related phy events (50h to 5Fh)

Transmitted SATA frame


50h WC Number of STP or SATA frames transmitted.
count

Received SATA frame


51h WC Number of STP or SATA frames received.
count

Number of times the phy’s STP flow control buffer (see


6.21.4) has overflowed (e.g., because it received more data
dwords than allowed after transmitting SATA_HOLD during an
STP connection).
SATA flow control buffer
52h WC
overflow count
In an expander device, this count should be maintained in the
expander phy transmitting the SATA_HOLD and receiving the
data dwords, but may be maintained in the expander phy
receiving the SATA_HOLD and transmitting the data dwords.

53h
to Reserved
5Fh

SMP-related phy events (60h to 6Fh)

Transmitted SMP frame


60h WC Number of SMP frames transmitted.
count

Received SMP frame


61h WC Number of SMP frames received.
count

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 157


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 45 – PHY EVENT SOURCE field (part 5 of 5)

Code Name Type a Description

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

Other (70h to FFh)

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).

4.14 Using POWER DISABLE signal to create a power on event

4.14.1 Using POWER DISABLE signal to create a power on event overview

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.

4.14.2 Discovering POWER DISABLE signal support

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.

158 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

4.15 Management application client model for APTA

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 159


18 January 2021 T10/BSR INCITS 554 Revision 11

5 Phy layer

5.1 Phy layer overview

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.

5.2 8b10b coding

5.2.1 8b10b coding overview

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.

5.2.2 8b10b coding notation conventions

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 161


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 46 – Bit designations

Bit notation 7 6 5 4 3 2 1 0 Control variable

Unencoded bit notation H G F E D C B A Z

Each valid character is named using the following convention:


Zxx.y
where:

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.

Table 47 – Conversion from byte notation to character name example

Byte notation BCh

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

Unencoded bit notation Z E D C B A H G F


reordered to conform with
Zxx.y naming convention K 1 1 1 0 0 1 0 1

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.

162 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.3 Character encoding and decoding

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.

5.3.2 Bit transmission order

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.

5.3.3 Character transmission order

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.

5.3.4 Frame transmission order

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.

5.3.5 Running disparity (RD)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 163


T10/BSR INCITS 554 Revision 11 18 January 2021

RD for the sub-blocks shall be calculated as follows:


a) if the sub-block contains more ones than zeros, then RD at the end of a sub-block is positive;
b) if the sub-block contains more zeros than ones, then RD at the end of a sub-block is negative; or
c) if the sub-block contains equal numbers of zeros and ones, then:
A) if it is a six-bit sub-block containing 000111b, then RD at the end of the sub-block is positive;
B) if it is a six-bit sub-block containing 111000b, then RD at the end of the sub-block is negative;
C) if it is a four-bit sub-block containing 0011b, then RD at the end of the sub-block is positive;
D) if it is a four-bit sub-block containing 1100b, then RD at the end of the sub-block is negative; or
E) otherwise, RD at the end of the sub-block is the same as at the beginning of the sub-block.
All sub-blocks with equal numbers of zeros and ones have neutral disparity (i.e., the ending disparity is the
same as the beginning disparity). In order to limit the run length of zeros or ones across adjacent sub-blocks,
the 8b10b code rules specify that sub-blocks encoded as 000111b or 0011b are generated only when the RD
at the beginning of the sub-block is positive, ensuring that RD at the end of these sub-blocks is also positive.
Likewise, sub-blocks containing 111000b or 1100b are generated only when the RD at the beginning of the
sub-block is negative, ensuring that RD at the end of these sub-blocks is also negative.
Running disparity (RD) shall be maintained separately on each physical link in each direction. During a
connection (see 4.1.12), expander devices shall convert incoming 10-bit characters to 8-bit bytes and
generate the 10-bit character with correct disparity for the output physical link. Phys within a device may or
may not begin operation with the same disparity.

5.3.6 Data characters

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.

Table 48 – Data characters (part 1 of 6)

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

164 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 48 – Data characters (part 2 of 6)

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 165


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 48 – Data characters (part 3 of 6)

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

166 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 48 – Data characters (part 4 of 6)

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 167


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 48 – Data characters (part 5 of 6)

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

168 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 48 – Data characters (part 6 of 6)

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 169


T10/BSR INCITS 554 Revision 11 18 January 2021

5.3.7 Control characters

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).

Table 49 – Control characters

Control character
Control byte
(binary representation) a
Name
Binary
Hexadecimal Current RD- Current RD+
representation
representation abcdei fghj abcdei fghj
(HGF EDCBA)

K28.0 000 11100 1Ch 001111 0100 110000 1011


b
K28.1 001 11100 3Ch 001111 1001 110000 0110

K28.2 010 11100 5Ch 001111 0101 110000 1010

K28.3 011 11100 7Ch 001111 0011 110000 1100

K28.4 100 11100 9Ch 001111 0010 110000 1101

K28.5 b 101 11100 BCh 001111 1010 110000 0101

K28.6 110 11100 DCh 001111 0110 110000 1001


bc
K28.7 111 11100 FCh 001111 1000 110000 0111

K23.7 111 10111 F7h 111010 1000 000101 0111

K27.7 111 11011 FBh 110110 1000 001001 0111

K29.7 111 11101 FDh 101110 1000 010001 0111

K30.7 111 11110 FEh 011110 1000 100001 0111


a Comma patterns, which are two bits of one polarity followed by five bits of the opposite polarity (i.e.,
0011111b or 1100000b), are underlined.
b K28.1, K28.5, and K28.7 are the only characters that contain comma patterns. Comma patterns do not
appear in any data characters and do not appear across any adjacent data characters.
c The K28.7 control character introduces an additional comma pattern starting with bits i and f when
followed by any of the following characters: K28.y; D3.y; D11.y; D12.y; D19.y; D20.y; or D28.y, where y
is a value in the range 0 to 7, inclusive. None of the other control characters introduce a comma pattern
when adjacent to any other character. Therefore, K28.7 is not used, ensuring that comma patterns do
not appear in any sequence of characters except the first 7 bits of K28.1 or K28.5.

170 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The only control characters used in this standard are K28.3, K28.5, and K28.6, as defined in table 50.

Table 50 – Control character usage

First character Usage in SATA physical


Usage in SAS physical links
of a dword links

K28.3 Primitives used only inside STP connections All primitives except ALIGN

K28.5 ALIGN and most primitives defined in this standard ALIGN

K28.6 Not used SATA_ERROR

See 6.2 for details on primitives, which use the control characters defined in table 50.

5.3.8 Encoding characters in the transmitter

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.

5.3.9 Decoding characters in the receiver

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 171


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

Table 51 – Delayed code violation example

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

Bit stream 101010 1011


- + 010101 0101 + 111010 1010 +
after error (error in second to last bit)

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)

5.4 SAS dword mode bit order

Dwords transmitted in an STP connection shall be transmitted in the bit order specified by SATA.

172 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Dword to transmit + data/primitive indicator (Z)


MSB LSB
31 24 23 16 15 8 7 0
Z H G F E D C B A H ... A H ... A H ... A

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

8b10b encoder 8b10b encoder 8b10b encoder 8b10b encoder

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

Figure 58 – SAS bit transmission logic

Working Draft SAS Protocol Layer - 5 (SPL-5) 173


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 59 shows the SAS bit reception order.

first bit received

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

A B C D E F G H Z A ... H Z A ... H Z A ... H Z


Bit
Transpose
(in
8b10b H G F E D C B A Z H ... A Z H ... A Z H ... A Z
notation) 31 24 23 16 15 8 7 0
1st byte 2nd byte 3rd byte 4th byte
received received received received

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)

Figure 59 – SAS bit reception logic

5.5 SPL packet

5.5.1 SPL packet overview

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.

174 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

If a transmitter has none of the following to transmit:


a) primitives;
b) binary primitives;
c) extended binary primitives;
d) SPL frame segments; or
e) scrambled idle segments,
then the transmitter shall transmit an SPL packet payload containing an idle dword segment (see 6.6).
Within an SPL packet, the SPL packet header specifies the type of the SPL packet payload (see table 53).
An SSP frame, an SMP frame, an STP frame, or an address frame comprises one or more SPL packets.
Integrity of the SPL packet payload is maintained by:
a) detection of bit errors in the SPL PACKET HEADER field;
b) defining a Hamming distance of seven or more between primitives;
c) forward error correction distributed throughout the SPL packet payload; and
d) CRC protection of an SSP frame, an SMP frame, an STP frame, or an address frame.

5.5.2 SPL packet format

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 175


T10/BSR INCITS 554 Revision 11 18 January 2021

2 bits 148 bits

SPL SPL SPL SPL SPL SPL


packet Packet FEC Packet FEC Packet FEC Packet FEC Packet
header payload payload payload payload payload

28 bits 5 bits 25 bits 5 bits 25 bits 5 bits 25 bits 5 bits 25 bits


Primitive 0 Primitive 1 Primitive 2 Primitive 3
01b a 3x a a a
00b or 3x 00b or 00b or 3x 00b or 3x
11b Dxx.y 11b Dxx.y 11b Dxx.y 11b Dxx.y

2 bits 30 bitsb 2 bits 30 bitsb 2 bits 30 bitsb 2 bits 30 bitsb


Binary primitive 0 Binary primitive 1 Binary primitive 2 Binary primitive 3
01b a a a a
01b Binary data 01b Binary data 01b Binary data 01b Binary data

2 bits 30 bitsb 2 bits 30 bitsb 2 bits 30 bitsb 2 bits 30 bitsb

Primitive 0 Primitive parameter


01b a a a a
01b Binary data 10b Binary data

2 bits 30 bitsb 2 bits 94 bitsc


Extended binary primitive
01b a a a a
10b Binary data

2 bits 126 bitsc


a a a a
00b or
Scrambled idle segment
11b

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.

Figure 60 – SPL packet formats with error correction information

176 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 52 – SPL packet

Bit

1 0

SPL PACKET HEADER

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.

Table 53 – SPL PACKET HEADER field

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 177


T10/BSR INCITS 554 Revision 11 18 January 2021

5.5.3 SPL packet payload that contains a scrambled idle segment

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.

Table 54 – SPL packet payload that contains a scrambled idle segment

Byte\Bit 7 6 5 4 3 2 1 0

... DWORDS TO BE SCRAMBLED

15

The DWORDS TO BE SCRAMBLED field contains a scrambled idle segment.

5.5.4 SPL packet payload that contains a primitive segment

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.

178 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 55 – Primitive parameter location within primitive segment

Primitive parameter Byte locations of


associated primitive or
Length Byte locations within Example
binary primitive within
(dwords) primitive segment primitive segment
4 to 7 0 to 3 table 58
1 8 to 11 4 to 7 not shown
12 to 15 8 to 11 table 59
4 to 11 0 to 3 table 60
2
8 to15 4 to 7 not shown
3 4 to 15 0 to 3 table 61

Table 56 – Primitive segment primitive data character placement

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 179


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Table 59 – Primitive segment SPL packet payload that contains primitives,


binary primitives, and a 1-dword primitive parameter in fourth dword

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

180 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 60 – Primitive segment SPL packet payload that contains primitives,


binary primitives, and a 2-dword primitive parameter

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

Table 61 – Primitive segment SPL packet payload that contains a primitive or


binary primitive, and 3-dword primitive parameter

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

... EXTENDED BINARY PRIMITIVE

15

Working Draft SAS Protocol Layer - 5 (SPL-5) 181


T10/BSR INCITS 554 Revision 11 18 January 2021

The PRIMITIVE SYNCHRONIZE SELECT field is defined in table 63.

Table 63 – PRIMITIVE SYNCHRONIZE SELECT field

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.

Table 64 – CONTROL1 field, CONTROL2 field, and CONTROL3 field

Code Description

The control character for the associated PRIMITIVE1 field, PRIMITIVE2


00b a
field, or PRIMITIVE3 field is K28.5.
Specifies the associated PRIMITIVE1 field, PRIMITIVE2 field, or PRIMITIVE3
01b
field is a binary primitive.
Specifies the associated PRIMITIVE1 field, PRIMITIVE2 field, or PRIMITIVE3
10b field is a primitive parameter associated with a primitive or binary
primitive (see table 55).
The control character for the associated PRIMITIVE1 field, PRIMITIVE2
11b a
field, or PRIMITIVE3 field is K28.3.
a
The PRIMITIVE1 field, PRIMITIVE2 field, and PRIMITIVE3 field shall contain the
8b10b data characters for the version of the primitives with a starting RD+
disparity (see 5.3.5).

The PARAMETER LENGTH field contains the length in dwords of:


a) the PARAMETER LENGTH field;
b) the CONTROL1 field, CONTROL2 field, or CONTROL3 field; and
c) the PRIMITIVE PARAMETER field.
If the transmitter has one single primitive sequence or one binary primitive to transmit within a single primitive
segment, then the transmitter shall set:
a) the PRIMITIVE0 field to that single primitive sequence or binary primitive;
b) the PRIMITIVE1 field to ALIGN (1) or a primitive parameter;
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 two single primitive sequences or two 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;

182 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 183


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Time (not to scale)


Primitive segment

Primitive 0 Primitive 1 Primitive 2 Primitive 3

Primitive segment with primitive parameters

Primitive 0 Primitive Primitive Primitive


parameter parameter parameter

First primitive segment Second primitive segment

Primitive 0 Primitive 1 Primitive 2 Primitive 3 Primitive 0 Primitive 1 Primitive 2 Primitive 3


ALIGN (1) ALIGN (2) Triple primitive sequence ALIGN (1) ALIGN (2) ALIGN (3)

First primitive segment Second primitive segment

Primitive 0 Primitive 1 Primitive 2 Primitive 3 Primitive 0 Primitive Primitive Primitive


parameter parameter parameter
ALIGN (1) ALIGN (2) Triple primitive sequence
with primitive parameters
First primitive segment Second primitive segment

Primitive 0 Primitive 1 Primitive 2 Primitive 3 Primitive 0 Primitive 1 Primitive 2 Primitive 3


ALIGN (1) ALIGN (2) Extended primitive sequence ALIGN (1) ALIGN (2) ALIGN (3)

First primitive segment Second primitive segment

Primitive 0 Primitive 1 Primitive 2 Primitive 3 Primitive 0 Primitive 1 Primitive 2 Primitive 3


ALIGN (1) Redundant primitive sequence ALIGN (2)

Figure 61 – Examples of primitive segment alignment

184 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.5.5 SPL packet payload that contains an SPL frame segment

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.

Table 65 – SPL packet payload that contains an SPL frame segment

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):

a) SSP frame segment;


b) SMP frame segment;
c) STP frame segment; or
d) address frame segment.
If the CRC is not the final dword of the SPL frame segment, then pad dwords shall be included to fill any
unused dwords between the CRC and the end of the SPL frame segment. The pad dwords shall be set to
00000000h (see 6.20.3.3).

5.5.6 SPL packet payload that contains an idle dword segment

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 185


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 66 – SPL packet payload that contains an idle dword segment

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.

5.5.7 Forward error correction

5.5.7.1 Forward error correction overview

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
0kn2 +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.

186 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 67 defines the notation and associated equations used in Reed Solomon encoding and decoding used
in this standard.

Table 67 – Reed Solomon code notation and definitions

Notation Definition
Generator Polynomial:
2 3 4 4 24 3 19 2 29 10
G(x) Gx =  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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 187


T10/BSR INCITS 554 Revision 11 18 January 2021

5.5.7.2 Forward error correction encoding

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.

188 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Reed Solomon code encoding function


SPL packet header and M(x)
SPL packet payload
to transmit

first bit of SPL packet transmitted


Header
on physical link
H1 H0 m0 Symbol 0
Byte 0 H0 H1 B0 B1 B2 H0 H1 B0 B1 B2
B7 B6 B5 B4 B3 B2 B1 B0 m1 sixth bit of SPL packet transmitted
B3 B4 B5 B6 B7 on physical link
Symbol 1
m2
B3 B4 B5 B6 B7
Byte 1 B0 B1 B2 B3 B4

...
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
...

Byte 14 m23 Symbol 27


B7 B6 B5 B4 B3 B2 B1 B0 B1 B2 B3 B4 B5 B1 B2 B3 B4 B5
m24 Symbol 28
Byte 15 B6 B7 B0 B1 B2 B6 B7 B0 B1 B2
B7 B6 B5 B4 B3 B2 B1 B0 m25 Symbol 29 last bit of SPL packet
B3 B4 B5 B6 B7 B3 B4 B5 B6 B7 transmitted on
physical link

Figure 62 – Forward error correction encoding and transmission

Working Draft SAS Protocol Layer - 5 (SPL-5) 189


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 68 specifies the full set of source data and ordering of symbols sent on the physical link.

Table 68 – Ordering of parity and message symbols transmitted

Transmit Symbol source b


Symbol Symbol
symbol
type label
order a bit 0 bit 1 bit 2 bit 3 bit 4

0 Message m0 H0 H1 D(0, 0) D(0, 1) D(0, 2)


1 Message m1 D(0, 3) D(0, 4) D(0, 5) D(0, 6) D(0, 7)
2 Message m2 D(1, 0) D(1, 1) D(1, 2) D(1, 3) D(1, 4)
3 Message m3 D(1, 5) D(1, 6) D(1, 7) D(2, 0) D(2, 1)
4 Message m4 D(2, 2) D(2, 3) D(2, 4) D(2, 5) D(2, 6)
5 Message m5 D(2, 7) D(3, 0) D(3, 1) D(3, 2) D(3, 3)
6 Parity p0 P(0, 0) P(0, 1) P(0, 2) P(0, 3) P(0, 4)
7 Message m6 D(3, 4) D(3, 5) D(3, 6) D(3, 7) D(4, 0)
8 Message m7 D(4, 1) D(4, 2) D(4, 3) D(4, 4) D(4, 5)
9 Message m8 D(4, 6) D(4, 7) D(5, 0) D(5, 1) D(5, 2)
10 Message m9 D(5, 3) D(5, 4) D(5, 5) D(5, 6) D(5, 7)
11 Message m10 D(6, 0) D(6, 1) D(6, 2) D(6, 3) D(6, 4)
12 Parity p1 P(1, 0) P(1, 1) P(1, 2) P(1, 3) P(1, 4)
13 Message m11 D(6, 5) D(6, 6) D(6, 7) D(7, 0) D(7, 1)
14 Message m12 D(7, 2) D(7, 3) D(7, 4) D(7, 5) D(7, 6)
15 Message m13 D(7, 7) D(8, 0) D(8, 1) D(8, 2) D(8, 3)
16 Message m14 D(8, 4) D(8, 5) D(8, 6) D(8, 7) D(9, 0)
17 Message m15 D(9, 1) D(9, 2) D(9, 3) D(9, 4) D(9, 5)
18 Parity p2 P(2, 0) P(2, 1) P(2, 2) P(2, 3) P(2, 4)
19 Message m16 D(9, 6) D(9, 7) D(10, 0) D(10, 1) D(10, 2)
20 Message m17 D(10, 3) D(10, 4) D(10, 5) D(10, 6) D(10, 7)
21 Message m18 D(11, 0) D(11, 1) D(11, 2) D(11, 3) D(11, 4)
22 Message m19 D(11, 5) D(11, 6) D(11, 7) D(12, 0) D(12, 1)
23 Message m20 D(12, 2) D(12, 3) D(12, 4) D(12, 5) D(12, 6)
24 Parity p3 P(3, 0) P(3, 1) P(3, 2) P(3, 3) P(3, 4)
25 Message m21 D(12, 7) D(13, 0) D(13, 1) D(13, 2) D(13, 3)
26 Message m22 D(13, 4) D(13, 5) D(13, 6) D(13, 7) D(14, 0)
27 Message m23 D(14, 1) D(14, 2) D(14, 3) D(14, 4) D(14, 5)
28 Message m24 D(14, 6) D(14, 7) D(15, 0) D(15, 1) D(15, 2)
29 Message m25 D(15, 3) D(15, 4) D(15, 5) D(15, 6) D(15, 7)
Key:
H0 = bit 0 of the SPL PACKET HEADER field
H1 = bit 1 of the SPL PACKET HEADER field
D(x, y) = SPL packet payload byte x, bit y
P(x, y) = parity symbol x, bit y
a
Symbols are transmitted on a physical link in order from 0 to 29.
b
Bits within symbols are transmitted on a physical link from LSB (i.e., bit 0) to MSB (i.e., bit 4).

190 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.5.7.3 Forward error correction decoding

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 191


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

first bit of SPL Decode Failure


packet received Decode Success
from physical link
Reed Solomon code decoding Phy layer receivers
Symbol 0 function (e.g., SP_PS receiver)
H0 H1 B0 B1 B2

sixth bit of SPL Received and decoded


packet received SPL packet header and
from physical link Er(x) Mr(x) SPL packet payload

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

Figure 63 – Forward error correction reception and decoding

192 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.5.8 Interleaved SPL

5.5.8.1 Interleaved SPL overview

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).

5.5.8.2 Interleaved SPL encoding

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 193


T10/BSR INCITS 554 Revision 11 18 January 2021

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

interleaved SPL packet 1

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

Interleaved SPL packets transmitted

Figure 64 – Transmitter path interleaving two SPL packets

194 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 69 specifies the full set of source data and ordering of symbols sent on the physical link for interleaving
two SPL packets.

Table 69 – Ordering of bits when interleaving two SPL packets (part 1 of 2)

Transmit interleaved symbol source b


Symbol symbol
symbol
type label
order a bit 0 bit 1 bit 2 bit 3 bit 4

0 Message 0 m0 H00 H01 D0(0, 0) D0(0, 1) D0(0, 2)


1 Message 1 m0 H10 H11 D1(0, 0) D1(0, 1) D1(0, 2)
2 Message 0 m1 D0(0, 3) D0(0, 4) D0(0, 5) D0(0, 6) D0(0, 7)
3 Message 1 m1 D1(0, 3) D1(0, 4) D1(0, 5) D1(0, 6) D1(0, 7)
4 Message 0 m2 D0(1, 0) D0(1, 1) D0(1, 2) D0(1, 3) D0(1, 4)
5 Message 1 m2 D1(1, 0) D1(1, 1) D1(1, 2) D1(1, 3) D1(1, 4)
6 Message 0 m3 D0(1, 5) D0(1, 6) D0(1, 7) D0(2, 0) D0(2, 1)
7 Message 1 m3 D1(1, 5) D1(1, 6) D1(1, 7) D1(2, 0) D1(2, 1)
8 Message 0 m4 D0(2, 2) D0(2, 3) D0(2, 4) D0(2, 5) D0(2, 6)
9 Message 1 m4 D1(2, 2) D1(2, 3) D1(2, 4) D1(2, 5) D1(2, 6)
10 Message 0 m5 D0(2, 7) D0(3, 0) D0(3, 1) D0(3, 2) D0(3, 3)
11 Message 1 m5 D1(2, 7) D1(3, 0) D1(3, 1) D1(3, 2) D1(3, 3)
12 Parity 0 p0 P0(0, 0) P0(0, 1) P0(0, 2) P0(0, 3) P0(0, 4)
13 Parity 1 p0 P1(0, 0) P1(0, 1) P1(0, 2) P1(0, 3) P1(0, 4)
14 Message 0 m6 D0(3, 4) D0(3, 5) D0(3, 6) D0(3, 7) D0(4, 0)
15 Message 1 m6 D1(3, 4) D1(3, 5) D1(3, 6) D1(3, 7) D1(4, 0)
16 Message 0 m7 D0(4, 1) D0(4, 2) D0(4, 3) D0(4, 4) D0(4, 5)
17 Message 1 m7 D1(4, 1) D1(4, 2) D1(4, 3) D1(4, 4) D1(4, 5)
18 Message 0 m8 D0(4, 6) D0(4, 7) D0(5, 0) D0(5, 1) D0(5, 2)
19 Message 1 m8 D1(4, 6) D1(4, 7) D1(5, 0) D1(5, 1) D1(5, 2)
20 Message 0 m9 D0(5, 3) D0(5, 4) D0(5, 5) D0(5, 6) D0(5, 7)
21 Message 1 m9 D1(5, 3) D1(5, 4) D1(5, 5) D1(5, 6) D1(5, 7)
22 Message 0 m10 D0(6, 0) D0(6, 1) D0(6, 2) D0(6, 3) D0(6, 4)
23 Message 1 m10 D1(6, 0) D1(6, 1) D1(6, 2) D1(6, 3) D1(6, 4)
24 Parity 0 p1 P0(1, 0) P0(1, 1) P0(1, 2) P0(1, 3) P0(1, 4)
25 Parity 1 p1 P1(1, 0) P1(1, 1) P1(1, 2) P1(1, 3) P1(1, 4)
26 Message 0 m11 D0(6, 5) D0(6, 6) D0(6, 7) D0(7, 0) D0(7, 1)
27 Message 1 m11 D1(6, 5) D1(6, 6) D1(6, 7) D1(7, 0) D1(7, 1)
28 Message 0 m12 D0(7, 2) D0(7, 3) D0(7, 4) D0(7, 5) D0(7, 6)
29 Message 1 m12 D1(7, 2) D1(7, 3) D1(7, 4) D1(7, 5) D1(7, 6)
30 Message 0 m13 D0(7, 7) D0(8, 0) D0(8, 1) D0(8, 2) D0(8, 3)
31 Message 1 m13 D1(7, 7) D1(8, 0) D1(8, 1) D1(8, 2) D1(8, 3)
32 Message 0 m14 D0(8, 4) D0(8, 5) D0(8, 6) D0(8, 7) D0(9, 0)
33 Message 1 m14 D1(8, 4) D1(8, 5) D1(8, 6) D1(8, 7) D1(9, 0)
34 Message 0 m15 D0(9, 1) D0(9, 2) D0(9, 3) D0(9, 4) D0(9, 5)
35 Message 1 m15 D1(9, 1) D1(9, 2) D1(9, 3) D1(9, 4) D1(9, 5)

Working Draft SAS Protocol Layer - 5 (SPL-5) 195


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 69 – Ordering of bits when interleaving two SPL packets (part 2 of 2)

Transmit interleaved symbol source b


Symbol symbol
symbol
type label
order a bit 0 bit 1 bit 2 bit 3 bit 4
36 Parity 0 p2 P0(2, 0) P0(2, 1) P0(2, 2) P0(2, 3) P0(2, 4)
37 Parity 1 p2 P1(2, 0) P1(2, 1) P1(2, 2) P1(2, 3) P1(2, 4)
38 Message 0 m16 D0(9, 6) D0(9, 7) D0(10, 0) D0(10, 1) D0(10, 2)
39 Message 1 m16 D1(9, 6) D1(9, 7) D1(10, 0) D1(10, 1) D1(10, 2)
40 Message 0 m17 D0(10, 3) D0(10, 4) D0(10, 5) D0(10, 6) D0(10, 7)
41 Message 1 m17 D1(10, 3) D1(10, 4) D1(10, 5) D1(10, 6) D1(10, 7)
42 Message 0 m18 D0(11, 0) D0(11, 1) D0(11, 2) D0(11, 3) D0(11, 4)
43 Message 1 m18 D1(11, 0) D1(11, 1) D1(11, 2) D1(11, 3) D1(11, 4)
44 Message 0 m19 D0(11, 5) D0(11, 6) D0(11, 7) D0(12, 0) D0(12, 1)
45 Message 1 m19 D1(11, 5) D1(11, 6) D1(11, 7) D1(12, 0) D1(12, 1)
46 Message 0 m20 D0(12, 2) D0(12, 3) D0(12, 4) D0(12, 5) D0(12, 6)
47 Message 1 m20 D1(12, 2) D1(12, 3) D1(12, 4) D1(12, 5) D1(12, 6)
48 Parity 0 p3 P0(3, 0) P0(3, 1) P0(3, 2) P0(3, 3) P0(3, 4)
49 Parity 1 p3 P1(3, 0) P1(3, 1) P1(3, 2) P1(3, 3) P1(3, 4)
50 Message 0 m21 D0(12, 7) D0(13, 0) D0(13, 1) D0(13, 2) D0(13, 3)
51 Message 1 m21 D1(12, 7) D1(13, 0) D1(13, 1) D1(13, 2) D1(13, 3)
52 Message 0 m22 D0(13, 4) D0(13, 5) D0(13, 6) D0(13, 7) D0(14, 0)
53 Message 1 m22 D1(13, 4) D1(13, 5) D1(13, 6) D1(13, 7) D1(14, 0)
54 Message 0 m23 D0(14, 1) D0(14, 2) D0(14, 3) D0(14, 4) D0(14, 5)
55 Message 1 m23 D1(14, 1) D1(14, 2) D1(14, 3) D1(14, 4) D1(14, 5)
56 Message 0 m24 D0(14, 6) D0(14, 7) D0(15, 0) D0(15, 1) D0(15, 2)
57 Message 1 m24 D1(14, 6) D1(14, 7) D1(15, 0) D1(15, 1) D1(15, 2)
58 Message 0 m25 D0(15, 3) D0(15, 4) D0(15, 5) D0(15, 6) D0(15, 7)
59 Message 1 m25 D1(15, 3) D1(15, 4) D1(15, 5) D1(15, 6) D1(15, 7)
Key:
H00 = bit 0 of the SPL PACKET HEADER field for SPL Packet 0,
H10 = bit 0 of the SPL PACKET HEADER field for SPL Packet 1,
H01 = bit 1 of the SPL PACKET HEADER field for SPL Packet 0,
H11 = bit 1 of the SPL PACKET HEADER field for SPL Packet 1,
D0(x, y) = payload byte x, bit y for SPL Packet 0,
D1(x, y) = payload byte x, bit y for SPL Packet 1,
P0(x, y) = parity symbol x, bit y for SPL Packet 0,
P1(x, y) = parity symbol x, bit y for SPL Packet 1.
a D-symbols are transmitted on a physical link in order from 0 to 29.
b Bits within symbols are transmitted on a physical link from LSB (i.e., bit 0) to MSB (i.e., bit 4).

196 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.5.8.3 Interleaved SPL decoding

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.

Interleaved SPL packets received


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

Deinterleaved SPL packet 1


Deinterleaver 1 1 1 1 1 1
... ... ...
m0 m1 p0 p4 m24 m25

Deinterleaved SPL packet 0


0 0 0 0 0 0
... ... ...
m0 m1 p0 p4 m24 m25

m0...m25 + p0.. p4

FEC
m0...m25

Data dword received + Header


31 2423 1615 8 7 0
1 0
B ... B B ... B B ... B B ... B
7 0 7 0 7 0 7 0
MSB LSB
header
Bit Bit
31 0
Descrambler

Figure 65 – Receive path deinterleaving two SPL packets

5.6 Dwords, primitives, binary primitives, extended binary primitives, data dwords,
SPL frame segments, and invalid dwords

If the phy is in the SAS dword mode, then:


a) all characters transferred in SAS are grouped into four-character sequences called dwords;
b) a data dword is a dword that contains four data characters with correct disparity;
c) a dword containing an invalid character shall be considered an invalid dword;
d) a primitive is a dword whose first character is K28.3 or K28.5 and whose remaining three characters
are data characters with correct disparity; and

Working Draft SAS Protocol Layer - 5 (SPL-5) 197


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

5.7 Out of band (OOB) signals

5.7.1 OOB signals overview

For the timing and timing characteristics of transmitted and received OOB signals see SAS-4.

198 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.7.2 Transmission of OOB signals

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).

COMWAKE (see SATA) Time (not to scale)

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

COMSAS (see SATA)


OOB burst

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
.

Figure 66 – OOB signal transmission

Working Draft SAS Protocol Layer - 5 (SPL-5) 199


T10/BSR INCITS 554 Revision 11 18 January 2021

5.7.3 Receiver detection of OOB signals

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).

200 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Figure 67 – OOB signal detection

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 201


T10/BSR INCITS 554 Revision 11 18 January 2021

5.7.4 SATA port selection signal

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.

5.7.5 Phy power conditions

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.

5.8 Phy capabilities bits

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).

Table 70 – SNW-3 phy capabilities

Byte\Bit 7 6 5 4 3 2 1 0

START TX SSC REQUESTED


0 Obsolete
(1b) TYPE INTERLEAVED SPL

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.

202 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 71 – Interleaved SPL negotiation

Transmitted REQUESTED Received REQUESTED Negotiated number of


Mode
INTERLEAVED SPL field INTERLEAVED SPL field SPL packets to interleave

00b
Any Any interleaved SPL is not enabled
(i.e., no interleaved SPL)

01b SAS packet

01b 10b SAS packet two SPL packets interleaved

11b SAS packet

01b SAS packet two SPL packets interleaved

10b 10b SAS packet


three SPL packets interleaved
11b SAS packet

01b SAS packet two SPL packets interleaved

11b 10b SAS packet three SPL packets interleaved

11b SAS packet four SPL packets interleaved

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 203


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 72 – Supported settings bit priorities

Priority Bit
a
Highest G5 WITH SSC bit

G5 WITHOUT SSC bit a


•••
a
••• G4 WITH SSC bit
a
••• G4 WITHOUT SSC bit

••• G3 WITH SSC bit

••• G3 WITHOUT SSC bit

••• G2 WITH SSC bit

••• G2 WITHOUT SSC bit

••• G1 WITH SSC bit

Lowest G1 WITHOUT SSC bit


a If optical mode is enabled or there is an active cable assembly
attached to the phy, then transmitter training is disabled (see
5.14.4.12.1), APTA is disabled (see 5.12), and the phy’s transmitter
coefficients shall be set to a default value. The determination of the
default value is outside the scope of this standard.

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.

204 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 73 – Example SNW-3 phy capabilities values


a
Code Description

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

80A80000h G1, G2, and G3 without SSC supported

80AA0001h G1, G2, G3, and G4 without SSC supported

802A8001h G2, G3, G4, and G5 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 205


T10/BSR INCITS 554 Revision 11 18 January 2021

5.9 BMC coding

5.9.1 BMC coding overview

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.

TTIU bit cell – 10 UI Time (not to scale)

Clock

TTIU 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0
bits

Transmitted
signal

TTIU byte 0 bit 7 TTIU byte 3 bit 7


TTIU byte 0 bit 0 TTIU byte 3 bit 0
Pattern
BMC encoded TTIU
marker
320 UI
40 UI

Figure 68 – TTIU transmitter BMC encoding

5.9.2 TTIU bit cell encoding in the transmitter

A TTIU bit cell shall be 10 UIs.


A TTIU bit cell may be formed from a clock (see figure 69) with a period of 10 UIs (e.g., 833.3 ps at 12 Gbit/s
and 444.4 ps at 22.5 Gbit/s) with a duty cycle of:
a) five UIs differential high followed by five UIs differential low; or
b) five UIs differential low followed by five UIs differential high.
The transmitter shall cause a transition (i.e., low to high or high to low) to begin a TTIU bit cell as shown in
figure 69.
The transmitter shall encode a one in a TTIU bit cell as a transition five UIs from the beginning of that TTIU bit
cell (e.g., a low to high transition of a clock signal) as shown in figure 69.

206 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Time (not to scale)

TTIU bit cell TTIU bit cell


10 UI 10 UI

5 UI 5 UI

Clock Clock

Encoded one or Encoded one

Encoded zero or Encoded zero

Previous TTIU bit Previous TTIU bit


cell ended with a or cell ended with a
differential high differential low

Figure 69 – TTIU bit cell transmitter encoding

5.9.3 TTIU bit transmission order

A TTIU shall be encoded as 32 consecutive TTIU bit cells as follows:


1) the first TTIU bit cell transmitted contains byte 0 bit 7 of the TTIU;
2) the eighth TTIU bit cell transmitted contains byte 0 bit 0 of the TTIU;
3) the ninth TTIU bit cell transmitted contains byte 1 bit 7 of the TTIU;
4) the 16th TTIU bit cell transmitted contains byte 1 bit 0 of the TTIU;
5) the 17th TTIU bit cell transmitted contains byte 2 bit 7 of the TTIU;
6) the 24th TTIU bit cell transmitted contains byte 2 bit 0 of the TTIU;
7) the 25th TTIU bit cell transmitted contains byte 3 bit 7 of the TTIU; and
8) the 32nd TTIU bit cell transmitted contains byte 3 bit 0 of the TTIU.

5.9.4 TTIU bit cell decoding in the receiver

After receiving a TTIU bit cell if the receiver detects a transition:


a) after or at three UIs from the beginning of the TTIU cell; and
b) before or at seven UIs from the beginning of the TTIU cell,
then the received bit shall be considered a one as shown in figure 70.
After receiving a TTIU bit cell if the receiver detects no transition:
a) after or at three UIs from the beginning of the TTIU cell; and

Working Draft SAS Protocol Layer - 5 (SPL-5) 207


T10/BSR INCITS 554 Revision 11 18 January 2021

b) before or at seven UIs from the beginning of the TTIU cell,


then the received bit shall be considered a zero as shown in figure 70.

Time (not to scale)

TTIU bit cell TTIU bit cell


10 UI 10 UI
7 UI 7 UI
3 UI 3 UI

Decoded one or Decoded one

Decoded zero or Decoded zero

Figure 70 – TTIU bit cell receiver decoding

5.10 Train_Tx-SNW TTIUs

5.10.1 Train_Tx-SNW TTIU format

Table 74 defines the content of each Train_Tx-SNW TTIU bit.

Table 74 – Train_Tx-SNW TTIU bit

Value Transmitted

One BMC encoded one (see 5.9.2)

Zero BMC encoded zero (see 5.9.2)

208 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 75 – Train_Tx-SNW TTIU

Byte\Bit 7 6 5 4 3 2 1 0

0 PATTERN TYPE

2 PATTERN TYPE SPECIFIC

Table 76 defines the PATTERN TYPE field, which defines the format of the PATTERN TYPE SPECIFIC field.

Table 76 – PATTERN TYPE field

Code Name of TTIU Type Reference

000b Control/Status TTIU M 5.10.2


a
001b to 110b Reserved

111b Error Response TTIU M 5.10.3

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.

5.10.2 Control/Status TTIU

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 209


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 77 – Control/Status TTIU

Byte\Bit 7 6 5 4 3 2 1 0

Training Control word


0
PATTERN TYPE (000b) COEFFICIENT SETTINGS Reserved

Coefficient Request byte


1
COEFFICIENT 3 COEFFICIENT 2 COEFFICIENT 1
Reserved
REQUEST REQUEST REQUEST

Training Status word


2
TRAIN COMP TX INIT BALANCE Reserved

3 Reserved COEFFICIENT 3 STATUS COEFFICIENT 2 STATUS COEFFICIENT 1 STATUS

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.

Table 78 – COEFFICIENT SETTINGS field

Code Name Description Type

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.

The local phy’s transmitter coefficients shall be set to the reference_1


001b reference_1 M
values specified in SAS-4.

The local phy’s transmitter coefficients shall be set to the reference_2


010b reference_2 M
values specified in SAS-4.

The local phy’s transmitter coefficients shall be set to the no


011b no_equalization M
equalization values specified in SAS-4.

The local phy’s transmitter coefficients shall be set to vendor_unique


100b vendor_unique O
values.

Reserved M

Key:
M = Coefficient settings implementation is mandatory.
O = Coefficient settings implementation is optional.

210 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Code Name Description Type

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 211


T10/BSR INCITS 554 Revision 11 18 January 2021

See table 80 for the combinations of coefficient requests that are mandatory or reserved.

Table 80 – Valid coefficient requests

Coefficient Request byte

COEFFICIENT 3 REQUEST field COEFFICIENT 2 REQUEST field COEFFICIENT 1 REQUEST field


Code Type
Code Name Code Name Code Name

00h 00b hold 00b hold 00b hold M

01h 00b hold 00b hold 01b increment M

02h 00b hold 00b hold 10b decrement M

04h 00b hold 01b increment 00b hold M

05h 00b hold 01b increment 01b increment M

08h 00b hold 10b decrement 00b hold M

0Ah 00b hold 10b decrement 10b decrement M

10h 01b increment 00b hold 00b hold M

14h 01b increment 01b increment 00b hold M

20h 10b decrement 00b hold 00b hold M

28h 10b decrement 10b decrement 00b hold M


a
All others 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).

212 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Code Name Description Type

The indicated local phy’s transmitter coefficient may be adjusted by


00b ready M
the attached phy.

The local phy’s transmitter has completed the last indicated


update
01b coefficient adjustment requested by the attached phy’s receiver M
complete
(see 5.18.2.5).

The indicated local phy’s transmitter coefficient is at a minimum


10b minimum M
value (see 5.18.2.7). a

The indicated local phy’s transmitter coefficient is at a maximum


11b maximum M
value (see 5.18.2.6). a

Key:
M = Coefficient status value implementation is mandatory.

a See SAS-4 for the minimum value and the maximum value.

5.10.3 Error Response TTIU

The Error Response TTIU is used by a phy to report requests to process:


a) unsupported optional features;
b) reserved code values; and
c) TTIU reserved bits.

Table 82 – Error Response TTIU

Byte\Bit 7 6 5 4 3 2 1 0

0 PATTERN TYPE (111b) RECEIVED COEFFICIENT SETTINGS Reserved

RECEIVED COEFFICIENT RECEIVED COEFFICIENT RECEIVED COEFFICIENT


1 Reserved
3 REQUEST 2 REQUEST 1 REQUEST

2 Reserved BALANCE Reserved

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 213


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

214 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The ERROR CODE field is defined in table 83.

Table 83 – ERROR CODE field


a
Code Name Description
Error codes returned for all TTIUs
00h UNKNOWN The cause of the error is indeterminate.
Unsupported transmitter training pattern type requested.
UNSUPPORTED PATTERN The information returned in the Error Response TTIU does
01h
TYPE not contain information about the pattern type that was in
error (see table 76).
Reserved transmitter training pattern type requested. The
information returned in the Error Response TTIU does not
02h RESERVED PATTERN TYPE
contain information about the pattern type that was in error
(see table 76).
RESERVED TTIU BIT SET TO Reserved TTIU bit set to one (e.g., reserved bits in table
03h
ONE 77).
04h to 0Fh Reserved
Error codes returned for Control/Status TTIUs
MULTIPLE RESERVED More than one coefficient request value is set to a reserved
10h
COEFFICIENTS REQUESTED value (see table 79).
RESERVED COEFFICIENT 1
11h Coefficient 1 is set to a reserved value (see table 79).
REQUEST
RESERVED COEFFICIENT 2
13h Coefficient 2 is set to a reserved value (see table 79).
REQUEST
RESERVED COEFFICIENT 3
15h Coefficient 3 is set to a reserved value (see table 79).
REQUEST
If the following occurs:
a) none of the coefficient requests are set 11b (i.e.,
RESERVED COEFFICIENT reserved) (see table 79); and
1Ah
REQUEST COMBINATION b) the combination of the coefficient 3 request, coefficient
2 request, and coefficient 1 request is reserved (see
table 80).
1Bh to 1Fh Reserved
Reserved error codes
20h to FFh Reserved
a If more than one error condition is true, then the phy shall use the following priority to determine which
error condition to report in the ERROR CODE field:
1) UNSUPPORTED PATTERN TYPE or RESERVED PATTERN TYPE;
2) RESERVED TTIU BIT SET TO ONE;
3) MULTIPLE RESERVED COEFFICIENTS REQUESTED;
4) RESERVED COEFFICIENT 1 REQUEST, RESERVED COEFFICIENT 2 REQUEST, or
RESERVED COEFFICIENT 3 REQUEST;
5) RESERVED COEFFICIENT REQUEST COMBINATION; and
6) UNKNOWN.

Working Draft SAS Protocol Layer - 5 (SPL-5) 215


T10/BSR INCITS 554 Revision 11 18 January 2021

5.11 Phy reset sequences

5.11.1 Phy reset sequences overview

The phy reset sequence consists of:


1) an OOB sequence (see 5.11.2.1 and 5.11.4.1); and
2) a speed negotiation sequence (see 5.11.2.2 and 5.11.4.2).
The phy reset sequence shall only affect the phy, not the port or device containing the phy or other phys in the
same port or device.
A phy shall originate a phy reset sequence after:
a) power on;
b) hard reset (i.e., receiving a HARD_RESET primitive sequence before an IDENTIFY address frame)
(see 4.4.2);
c) a management application layer request (see 5.14.1);
d) losing dword synchronization and not attempting to re-acquire dword synchronization (see 5.14.4.10
and 5.14.6.8);
e) losing SPL packet synchronization and not being able to re-acquire SPL packet synchronization (see
5.17);
f) the Receive Identify Timeout timer expires (see 6.12);
g) a hot-plug timeout (see 5.11.5) occurs for an expander phy;
h) a hot-plug timeout occurs while in a low phy power condition (see 4.11.1); or
i) the SNTT timer expires while in a low phy power condition.
A SAS phy may originate a phy reset sequence after a hot-plug timeout (see 5.11.5).
After receiving a HARD_RESET primitive sequence before an IDENTIFY address frame, a phy should start
the phy reset sequence within 250 ms.
Table 84 defines phy reset sequence timing parameters used by the SP state machine (see 5.14).

Table 84 – Phy reset sequence timing specifications

Parameter Minimum Maximum Comments

The time after which:


a) an expander phy shall retry an unsuccessful phy reset
sequence;
b) a SAS initiator phy should retry an unsuccessful phy
Hot-plug timeout 10 ms 500 ms reset sequence (see 5.11.5); and
c) a phy shall initiate a phy reset sequence if that phy does
not receive a COMWAKE Completed message as
defined in the SP31:SAS_PS_Low_Phy_Power state
(see 5.14.5.2).

While a phy is in the partial phy power condition (see 4.11.1.3)


Phy wakeup
none 10 µs the time within which the phy shall become active after
partial timeout
receiving a Phy Wakeup message (see 5.14.2).

While a phy is in the slumber phy power condition (see


Phy wakeup
none 10 ms 4.11.1.4) the time within which the phy shall become active
slumber timeout
after receiving a Phy Wakeup message (see 5.14.2).

216 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.2 SATA phy reset sequence

5.11.2.1 SATA OOB sequence

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 71 – SATA OOB sequence

5.11.2.2 SATA speed negotiation sequence

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).

ALIGN (0)s Normal dwords


D10.2s
at detected at detected
at lowest rate
rate rate
SATA host
(initiator phy)
to SATA device
(target phy)

SATA host locks SATA device locks

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

Figure 72 – SATA speed negotiation sequence

Working Draft SAS Protocol Layer - 5 (SPL-5) 217


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 85 defines SATA speed negotiation sequence timing parameters used by the SP state machine (see
5.14).

Table 85 – SATA speed negotiation sequence timing specifications

Parameter Time Comments

The minimum time during SATA speed negotiation that a


a
Await ALIGN timeout 873.813 µs phy shall allow for an ALIGN (0) to be received after
detecting COMWAKE Completed.

The maximum time during SATA speed negotiation after


COMWAKE response b
533 ns detecting COMWAKE Completed before which a phy
time
shall start transmitting D10.2 characters.
a
873.813 µs is 32 768  40  nominal OOBI (see SAS-4 and SATA).
b
533 ns is 200  40 nominal OOBI (see SATA).

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.

5.11.3 SAS to SATA phy reset 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).

218 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

SATA phy does not respond to COMSAS


COMINIT COMSAS COMWAKE

SAS phy Tx/


X
SATA phy Rx
Step 1 Step 3 Step 4
COMSAS
Time=0 Detect Time=z
Step 2 Timeout
SAS phy Rx/
X
SATA phy Tx

COMINIT
SATA phy responds to COMSAS with COMINIT
COMWAKE
COMINIT COMSAS

SAS phy Tx/


X
SATA phy Rx
Step 1 Step 3 Step 5
COMSAS
Detect
Timeout
Time=0 Time=z
Step 2 Step 4

SAS phy Rx/ X


SATA phy Tx
Key:
COMINIT COMINIT
X = Power on

Time 0: OOB sequence begins


Time z: Speed negotiation sequence begins

Figure 73 – SAS to SATA OOB sequence

5.11.4 SAS to SAS phy reset sequence

5.11.4.1 SAS OOB sequence

To initiate a SAS OOB sequence a phy transmits a COMINIT (see SATA).


On receipt of a COMINIT the receiving phy either:
a) if the phy has not yet transmitted a COMINIT, then transmit a COMINIT followed by a COMSAS (see
SATA); or

Working Draft SAS Protocol Layer - 5 (SPL-5) 219


T10/BSR INCITS 554 Revision 11 18 January 2021

b) if the phy has transmitted a COMINIT, then transmit a COMSAS.


If the receiving phy does not respond to a COMINIT within the minimum hot-plug timeout (see 5.11.5), then
the attached phy may transmit another COMINIT. If repeated, then this results in a livelock.
On receipt of a COMSAS, if the receiving phy has not yet transmitted a COMSAS, then the phy transmits a
COMSAS.
After completing the transmission of a COMSAS and the successful receipt of a COMSAS the SAS OOB
sequence is complete and the SAS speed negotiation sequence begins.
A phy distinguishes between COMINIT and COMSAS and continues with a SAS speed negotiation sequence
(see 5.11.4.2) after completing the SAS OOB sequence.

220 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Scenario 3: SAS phy B misses SAS phy A s COMINIT


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

Time 0: SAS phy reset sequence begins


Time z: SAS speed negotiation sequence begins

Figure 74 – SAS to SAS OOB sequence

Working Draft SAS Protocol Layer - 5 (SPL-5) 221


T10/BSR INCITS 554 Revision 11 18 January 2021

5.11.4.2 SAS speed negotiation sequence

5.11.4.2.1 SAS speed negotiation sequence overview

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.

222 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.4.2.2 SAS speed negotiation sequence timing specifications

Table 86 defines the timing specifications for the SAS speed negotiation sequence.

Table 86 – SAS speed negotiation sequence timing specifications (part 1 of 2)


a
Parameter Acronym Time Comments

The time the transmitter device shall transmit


negotiation idle at the beginning of:
a) SNW-1;
Rate change b
RCDT 750 000 OOBI b) SNW-2;
delay time
c) SNW-3;
d) Final-SNW; and
e) Train_Rx-SNW or Train_Tx-SNW.

During SNW-1, SNW-2, and Final-SNW, the time after


RCDT during which ALIGN (0) or ALIGN (1) is
transmitted.

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).

The maximum time for a phy to reply with ALIGN (1)


during SNW-1, SNW-2, and Final-SNW.
Speed
d
negotiation lock SNLT 153 600 OOBI During low phy power conditions, the maximum time for
time a phy to reply with an ALIGN (0) or ALIGN (1) while in
the SP32:SAS_PS_ALIGN0 state or
SP33:SAS_PS_ALIGN1 state (see 5.14.5.4).

The time during SNW-1, SNW-2, and Final-SNW at


which actual dword synchronization occurs to the
Actual lock time none
received ALIGN (0) or ALIGN (1) and the phy begins
transmitting ALIGN (1) rather than ALIGN (0).
e
SNW time SNWT 913 840 OOBI The duration of SNW-1, SNW-2, SNW-3, or Final-SNW.
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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 223


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 86 – SAS speed negotiation sequence timing specifications (part 2 of 2)


a
Parameter Acronym Time Comments

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

Training lock h The maximum time for a phy to reply with


TLT 28 497 920 OOBI
time TRAIN_DONE during Train_Rx-SNW.

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).

5.11.4.2.3 Speed negotiation window (SNW) definitions

5.11.4.2.3.1 SNW definitions overview

During each SNW, a phy shall either:


a) if it supports the SNW, then transmit and receive as defined for the SNW; or
b) if it does not support the SNW, then transmit negotiation idle and ignore the SNW information
received.
If a phy supports the SNW and receives the expected transmission, then the SNW is valid. If a phy does not
receive the expected transmission from the attached phy, then the SNW is invalid.

224 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.4.2.3.2 SNW-1, SNW-2, and Final-SNW

Figure 75 defines SNW-1, SNW-2, and Final-SNW, including:


a) SNW time (SNWT);
b) rate change delay time (RCDT);
c) speed negotiation transmit time (SNTT);
d) speed negotiation lock time (SNLT); and
e) actual lock time.

Time (not to scale)


If the phy s receiver achieves dword synchronization
at the SNW rate within SNLT, then its transmitter transmits ALIGN (1)s at the SNW rate
for the remainder of the SNTT.

Phy s transmitter transmits ALIGN (0)s at the


SNW rate.

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)

SNW time (SNWT)

Figure 75 – SNW-1, SNW-2, and Final-SNW

If the phy supports the SNW, then it shall transmit:


1) negotiation idle for an RCDT; and
2) ALIGNs at the SNW rate for the remainder of the SNWT (i.e., for SNTT).
If the phy does not support the SNW, then it shall transmit negotiation idle for the entire SNWT.

Working Draft SAS Protocol Layer - 5 (SPL-5) 225


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 87 defines the SNW rate used in SNW-1, SNW-2, and Final-SNW.

Table 87 – SNW rates used in SNW-1, SNW-2, and Final-SNW

SNW SNW rate

SNW-1 1.5 Gbit/s

SNW-2 3 Gbit/s

Based on SNW-1, SNW-2, and SNW-3 validity:


Final-SNW a) 1.5 Gbit/s if SNW-1 is valid and SNW-2 is invalid; or
b) 3 Gbit/s if SNW-2 is valid and SNW-3 is invalid.

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).

226 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Time (not to scale)

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

Table 88 defines the content of each phy capabilities bit.

Table 88 – SNW-3 phy capabilities bit

Value Transmitted

One COMWAKE (see 5.7)

Zero OOB idle

If the phy supports SNW-3, then:


a) the phy shall:
1) transmit negotiation idle for an RCDT;
2) transmit 32 phy capabilities bits (see 5.8); and
3) transmit OOB idle for the remainder of SNTT;
and
b) the phy shall receive a 32-bit phy capabilities value from the attached phy.
The phy receives no capabilities bits (i.e., negotiation idle) if the attached phy does not support SNW-3.
If the phy does not support SNW-3, then it shall transmit negotiation idle for the entire SNWT and ignore any
phy capabilities bits received.
The first phy capabilities bit (see 5.8) is the START bit and is set to one. Each of the remaining 31 phy
capabilities bits is set to one or zero. The receiver shall use the START bit to detect the beginning of the phy
capabilities bits and establish the timing for subsequent bits.
The phy shall consider SNW-3 to be valid if it supports SNW-3 and receives at least one supported settings bit
set to one (see table 70). If the phy does not support SNW-3 or does not receive at least one supported
settings bit set to one, then it shall consider SNW-3 to be invalid.

Working Draft SAS Protocol Layer - 5 (SPL-5) 227


T10/BSR INCITS 554 Revision 11 18 January 2021

The phy may transmit with SSC enabled or disabled (see SAS-4) during SNW-3.

5.11.4.2.3.4 Train_Tx-SNW

5.11.4.2.3.4.1 Phy’s transmitter initial condition

If transmitter training is enabled, then:


a) if there are trained values, then that phy shall set all of its coefficients to the most recent trained
values before originating a phy reset sequence (see 5.11.1); or
b) if there are no trained values, then that phy shall set all of its coefficients to a default value before
originating a phy reset sequence. The determination of the default value is outside the scope of this
standard.

5.11.4.2.3.4.2 Transmitter training

The Train_Tx-SNW includes the following:


a) maximum Train_Tx-SNW window time (MTXT);
b) rate change delay time (RCDT);
c) maximum transmitter train time (MTTT); and
d) the point at which the transmitter is trained.
Figure 77 defines the Train_Tx-SNW while the phy is in the SAS dword mode.

Time (not to scale)


Train_Tx-SNW completes and
Train_Rx-SNW TRAIN pattern begins

Rate change delay time (RCDT)


Transmitter trained

Maximum transmitter training time (MTTT)

Maximum Train_Tx-SNW time (MTXT)


Key:
Long time of negotiation idle

Scrambled
Train_Tx pattern
training data

Pattern marker TTIU

Figure 77 – Train_Tx-SNW while in the SAS dword mode

228 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 78 defines the Train_Tx-SNW while the phy is in the SAS packet mode.

Time (not to scale)


Train_Tx-SNW completes and
Train_Rx-SNW TRAIN pattern begins

Rate change delay time (RCDT)


Transmitter trained

Maximum transmitter training time (MTTT)

Maximum Train_Tx-SNW time (MTXT)


Key:
Long time of negotiation idle

Scrambled END_TRAIN
Train_Tx pattern
idle segment extended binary primitive

Pattern marker TTIU

Figure 78 – Train_Tx-SNW while in the SAS packet mode

The Train_Tx-SNW contains transmitter training patterns formed by the Train_Tx pattern as defined in table
89.

Table 89 – Transmitter training pattern

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 229


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.11.4.2.3.4.3 Pattern marker

The pattern marker specifies the start of a TTIU.


A pattern marker is formed by a:
1) 20 UI (e.g., 1.6 ns at 12 Gbit/s and 0.88 ns at 22.5 Gbit/s) differential high signal level; and
2) 20 UI (e.g., 1.6 ns at 12 Gbit/s and 0.88 ns at 22.5 Gbit/s) differential low signal level.
Figure 79 shows the pattern marker while the phy is in the SAS dword mode.

Time (not to scale )


Pattern marker
40 UI Phy s transmitter begins
sending a TTIU

20 UI 20 UI
Differential high signal level Differential low signal level

Key:

Scrambled
TTIU
training data

Figure 79 – Pattern marker transmission while in the SAS dword mode

230 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 80 shows the pattern marker while the phy is in the SAS packet mode.

Time (not to scale )


Pattern marker
40 UI Phy s transmitter begins
sending a TTIU

20 UI 20 UI
Differential high signal level Differential low signal level

Key:

Scrambled END_TRAIN
TTIU
training data extended binary primitive

Figure 80 – Pattern marker transmission while in the SAS packet mode

5.11.4.2.3.4.4 Pattern marker detection while in SAS dword mode

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 231


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Zero to three UIs Time (not to scale)


may be at a high Pattern marker
signal level 38 UI to 42 UI Phy s receiver
before the start begins receiving
of the pattern the TTIU
marker

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

Figure 81 – Valid pattern marker detection while in SAS dword mode

5.11.4.2.3.4.5 Pattern marker detection while in SAS packet mode

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.

232 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Time (not to scale)


Pattern marker
38 UI to 42 UI Phy s receiver
begins receiving
the TTIU

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

Figure 82 – Valid pattern marker detection while in SAS packet mode

5.11.4.2.3.5 Train_Rx-SNW while in SAS dword mode

Figure 83 defines the Train_Rx-SNW, including:


a) maximum Train_Rx-SNW window time (MTWT);
b) rate change delay time (RCDT);
c) maximum receiver train time (MRTT);
d) train lock time (TLT); and
e) the point at which the receiver is trained and dword synchronization is acquired.

Working Draft SAS Protocol Layer - 5 (SPL-5) 233


T10/BSR INCITS 554 Revision 11 18 January 2021

Time (not to scale)


Receiver trained and dword TRAIN_DONE
synchronization acquired received

Rate change delay time (RCDT)

Training lock time (TLT)


Train_Rx-SNW time
Maximum receiver training time (MRTT)
Maximum Train_Rx-SNW time (MTWT)
Key:
Long time of negotiation idle
Scrambled Dwords from
TRAIN training
Link Layer
pattern data

TRAIN TRAIN_DONE
TRAIN_DONE primitive primitive
pattern

Figure 83 – Train_Rx-SNW while in SAS dword mode

The Train_Rx-SNW contains receiver training patterns formed by TRAIN and TRAIN_DONE (see 6.2) as
defined in table 90.

Table 90 – Receiver training patterns while in SAS dword mode

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.

234 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.11.4.2.3.6 Train_Rx-SNW while in SAS packet mode

Figure 84 defines the Train_Rx-SNW, including:


a) maximum Train_Rx-SNW window time (MTWT);
b) rate change delay time (RCDT);
c) maximum receiver train time (MRTT);
d) train lock time (TLT); and
e) the point at which:
A) the receiver is trained; and
B) SPL packet synchronization is acquired.

Working Draft SAS Protocol Layer - 5 (SPL-5) 235


T10/BSR INCITS 554 Revision 11 18 January 2021

Time (not to scale)


Receiver trained and SPL
packet synchronization acquired PACKET_SYNC received

Rate change delay time (RCDT)

Training lock time (TLT)


Train_Rx-SNW time
Maximum receiver training time (MRTT)
Maximum Train_Rx-SNW time (MTWT)
Key:
Long time of negotiation idle
SPL packet containing a
SPL packet
PACKET_SYNC_LOST
from link layer
extended binary primitive
SPL packet containing a
PACKET_SYNC
extended binary primitive

Figure 84 – Train_Rx-SNW while in SAS packet mode

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;

236 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

2) stop transmitting PACKET_SYNCs;


3) reinitialize the scrambler; and
4) start transmitting SPL packets from the link layer;
and
b) consider the Train_Rx-SNW to be valid.
If the phy does not receive a PACKET_SYNC before MRTT and transmits four or more PACKET_SYNCs,
then it shall consider the Train_Rx-SNW to be invalid.

Working Draft SAS Protocol Layer - 5 (SPL-5) 237


T10/BSR INCITS 554 Revision 11 18 January 2021

5.11.4.2.4 SAS speed negotiation sequence

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

Figure 85 – SAS speed negotiation sequence SNW flowchart

238 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

A phy shall not support the following combinations of supported SNWs:


a) no SNWs; and
b) SNW-1 and SNW-3 only.

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).

5.11.4.2.5 SAS speed negotiation sequence examples

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 239


T10/BSR INCITS 554 Revision 11 18 January 2021

Time (not to scale)

Train_Rx-SNW
SNW-1 SNW-2 SNW-3
(valid)
(valid) (valid) (valid)
Highest commonly
supported settings

RCDT SNTT RCDT SNTT RCDT SNTT RCDT < MRTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT < MRTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes
phy B = yes phy B = yes phy B = yes

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.

240 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Time (not to scale)


Train_Tx-SNW Train_Rx-SNW
(valid) (valid)
SNW-1 SNW-2 SNW-3 Highest commonly Highest
(valid) (valid) (valid) supported settings commonly
supported
settings
RCDT SNTT RCDT SNTT RCDT SNTT RCDT < MTTT < MRTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT < MTTT < MRTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes
phy B = yes phy B = yes phy B = yes

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 241


T10/BSR INCITS 554 Revision 11 18 January 2021

Time (not to scale)

Final-SNW
SNW-1 SNW-2 SNW-3
(valid)
(invalid) (valid) (invalid)
Negotiated
3 Gbit/s

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support: 3 Gbit/s support:


phy A = yes phy A = yes phy A = yes phy A = yes
phy B = no phy B = yes phy B = no phy B = yes
Key:
Dwords
Phy
ALIGN (0)s ALIGN (1)s transmitted by Long time
capabilities the link layer

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.

242 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Time (not to scale)

SNW-1 SNW-2
(invalid) (invalid) Hot-plug
RCDT SNTT RCDT SNTT timeout COMINIT

Phy A Tx
Phy B Rx

Phy A detects no negotiation idle in SNW-1 and


negotiation idle in SNW-2, so skips SNW-3

Hot-plug
SNTT RCDT SNTT RCDT SNTT timeout COMINIT

Phy A Rx
Phy B Tx

Phy B only supports SNW-1 and does not


participate in SNW-3

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = no phy A = no phy A = yes
phy B = yes phy B = no phy B = N/A
Key:

Phy
ALIGN (0)s Long time
capabilities

Figure 89 – SAS speed negotiation sequence (phy A: SNW-3 only, phy B: SNW-1 only)

Working Draft SAS Protocol Layer - 5 (SPL-5) 243


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Time (not to scale)

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

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes Phy B receiver fails to
phy B = yes phy B = yes phy B = no achieve dword
Key: synchronization, so its
transmitter does not
Phy
ALIGN (0)s ALIGN (1)s Long time transmit ALIGN (1)s.
capabilities

Figure 90 – SAS speed negotiation sequence - phy reset problem in Final-SNW

244 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Time (not to scale)

SNW-1 SNW-2 SNW-3 Phy A = Phy reset


(valid) (valid) (valid) problem
Phy B = Train_Rx-
SNW
Hot-plug
RCDT SNTT RCDT SNTT RCDT SNTT timeout COMINIT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT MRTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes
phy B = yes phy B = yes phy B = yes Phy A receiver
device receives
Key: phy capabilities
with bad parity
ALIGN (0)s ALIGN (1)s

Phy TRAIN pattern and


Long time
capabilities TRAIN_DONE pattern

Figure 91 – SAS speed negotiation sequence - phy reset problem in SNW-3

Working Draft SAS Protocol Layer - 5 (SPL-5) 245


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Time (not to scale)

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

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes
phy B = yes phy B = yes phy B = yes Phy A receiver device
Key: fails to train within TLT
Phy or phy B transmitter
ALIGN (0)s ALIGN (1)s fails to transmit the
capabilities
receiver training pattern
properly and there are
no additional commonly
TRAIN pattern and supported settings
TRAIN_DONE pattern Long time

Figure 92 – SAS speed negotiation sequence - phy reset problem in Train_Rx-SNW

246 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Time (not to scale)


First Train_Rx-SNW Second Train _Rx-SNW
SNW-1 SNW-2 SNW-3
(invalid ) (valid)
(valid) (valid) (valid)
highest commonly next highest commonly
supported setting supported setting
RCDT SNTT RCDT SNTT RCDT SNTT RCDT MTT RCDT MRTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT MTT RCDT MRTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support: Phy A receiver


phy A = yes phy A = yes phy A = yes device fails to train
phy B = yes phy B = yes phy B = yes within MRTT or phy B
transmitter fails to
transmit the receiver
training pattern
properly during the
Key: first Train_Rx-SNW
Phy (i.e, the first Train_Rx-
ALIGN (0)s ALIGN (1)s
capabilities SNW is invalid), there
is another commonly
supported setting , and
TRAIN pattern and the second Train _RX-
Long time SNW is valid.
TRAIN_DONE pattern

Figure 93 – SAS speed negotiation sequence - multiple Train_Rx-SNWs

For more examples of SAS speed negotiations, see Annex B.

5.11.4.2.6 Train_Tx pattern sequence

5.11.4.2.6.1 Train_Tx pattern sequence overview

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 247


T10/BSR INCITS 554 Revision 11 18 January 2021

5.11.4.2.6.2 Train_Tx pattern initial sequence

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.

248 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Local Phy s Receiver Local Phy sTransmitter


SP reciever PTT_R PTT_T SP transmitter

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

ing TTIU TX_INIT=0


Tx train Coe fficie nt Se
Star t Coefficient ttings = TTIU
settings set to normal Coeff T X_INIT=0
itte d icient
normal ransm s
= nor m etting s
TTIU T al

Key: Start Tx Training = Attached Phy s Transmitter Training (Start) message


Stop Tx Training = Attached Phy s Transmitter Training (Stop) message
Processing PTT state name
Information sent or received from a SP receiver or SP transmitter

Figure 94 – Local phy achieves pattern lock before the attached phy achieves pattern lock

Working Draft SAS Protocol Layer - 5 (SPL-5) 249


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Local Phy s Receiver Local Phy s Transmitter


SP receiver PTT_R PTT_T SP transmitter

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

Key: Start Tx Training = Attached Phy s Transmitter Training (Start) message


Stop Tx Training = Attached Phy s Transmitter Training (Stop) message
Processing PTT state name
Information sent or received from a SP receiver or SP transmitter

Figure 95 – Local phy achieves pattern lock after the attached phy achieves pattern lock

250 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.4.2.6.3 Train_Tx pattern handshake sequence

5.11.4.2.6.3.1 Train_Tx pattern handshake sequence overview

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).

5.11.4.2.6.3.2 Attached phy’s receiver increment or decrement request

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 251


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Key: Inc. = Increment Max . = Maximum


A Get Current Coefficient 1 message to local SP receiver
B Adjust Coefficient 1 message to local SP transmitter
Processing PTT state name
Information sent or received from a SP receiver or SP transmitter
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 96 – Attached receiver handshake sequence (requesting two increments to coefficient 1)

252 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Key: Inc. = Increment Dec . = Decrement Max . = Maximum


A Get Current Coefficient 1 message to local SP receiver
B Adjust Coefficient 1 message to local SP transmitter
Processing PTT state name
Information sent or received from a SP receiver or SP transmitter

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 253


T10/BSR INCITS 554 Revision 11 18 January 2021

5.11.4.2.6.3.3 Attached phy’s receiver reference_1, reference_2, or no_equalization request

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.

254 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Get Current Coefficient 1


2 Increment 1 Incre ment 1 a
Update Complete Inc rement 1
1 Update Com plet Hold 2
M axim um 2 e1 PTT_GC1_2 H old 3
Maximum 2
R eady 3 Restart 1
Ready 3
H ol
d1 b
3 Ready 1 H old 1
Maximum 2 Ready 1 PTT_GC1_0 H old 2
Maximum 2 Hold 3
R eady 3 Start 1
Ready 3

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

Get C urrent Coef ficient 1


Re ference 1
Refer ence 1
COE FFICIENT
d
5 Attached Phy s Transmitter Training (Stop) SET TINGS =
Update Complete 1
Up date Comp refer ence 1
Ready 2 lete 1 PTT_GC1_2
Ready3 Ready 2
Ready 3 Restart 1
Hold 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

Key: Processing PTT state name


Information sent or received from a SP receiver or SP transmitter
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 are all the messages related to the coefficient 2 increment.

Figure 98 – Handshake sequence to set local phy’s receiver coefficients to no_equalization


values (attached phy)

Working Draft SAS Protocol Layer - 5 (SPL-5) 255


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Upd ate Complete 1


CO EFF ICI ENT Update Comp
e Up date Comple te 2 let e 1 6
SE TTIN GS = Updat e Comple
Update Complete 3 te 2
no rmal Hold 1 Up da te Comp
PTT_SC1_1 lete 3
Hold 1

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

Key: Processing PTT state name


Information sent or received from a SP receiver or SP transmitter
Note - Not shown in this figure is the PTT_SC2 state machine notification of coefficient2 to PTT_T of aa
status change of maximum to ready.

Figure 99 – Handshake sequence to set local phy’s receiver coefficients to no_equalization


values (local phy)

5.11.4.2.6.4 Train_Tx pattern completion sequence

The Train_Tx-SNW (see 5.11.4.2.3.4) completes when:


a) the local phy’s receiver determines attached phy’s transmitter is trained (see 5.18.3); and
b) the attached phy’s receiver indicates the local phy’s transmitter is trained (see 5.18.5.4.1).

256 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Local Phy s Receiver Local Phy s Transmitter


SP receiver PTT_R PTT_T SP transmitter
TTIU TRAI
PTT_T2 N_COMP
=0 TTIU T
TTIU nsmitt ed RAIN
Contro _COMP=0
Attac TTIU Tra
TRAIN
_C Transm hed Phy s l/Statu
s
Contr OM P=0 itter Op
o l/Sta timized
tus TTIU

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

Key: Processing PTT state name


Information sent or received from a SP receiver or SP transmitter

Figure 100 – Local phy’s receiver indicates completion of training before the attached phy’s receiver
completes training

Working Draft SAS Protocol Layer - 5 (SPL-5) 257


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 101 shows an example of an attached phy’s receiver indication of completion of training before the
local phy’s receiver completes training.

Local Phy s Receiver Local Phy s Transmitter


SP receiver PTT_R PTT_T SP transmitter
TT IU
TRAIN
_COM PTT_T2
C ont =
rol/S t 1
P
atu s TT IU
TRAIN
_COM P=1
TT IU
TRAIN
_C
C ontr OMP =1 TTIU
ol/S ta T TIU T TIU
tus TRAIN_ ns mitte d
TTI U Tra
COMP = TRAIN
TT IU 1 Con tr
_COM
P=0
TRAIN
TTI U ol/Sta
C ontr
_COM
P =1 tus
ol/S ta T TIU TT IU
tus Loc al
P nsmitte d TRAIN
Tra nsm hy s TTI U Tra
TRAIN _C
_COMP
=1 C on tr OMP =0
itte ol/ Sta
T rainin r TTI U tus
C om p g T TIU
Time le te ns mitted TRAI N
TTIU Tra _C
Con tr OMP=0
ol/Sta
tus
Attache d
Tr ansmit Phy s
ter Optim
iz ed
TTI U
T TIU
nsmitted TRAIN
TTIU Tra Con tr
_COM
P=1
ol/Sta
TTIU tus
T TIU
ns mitted TRAIN
PTT_R2 TTIU Tra _C
Con t OMP=1
rol/St
TTIU a tus
T TIU
smitte d TRAIN
TTI U Tran _C
Con tr OMP=1
ol/Sta
TTIU tus
TTIU
nsmitt ed TRA IN
TT IU Tr a _C
Co nt OMP=1
rol/S t
TTIU atu s
TTI U
n sm itt ed TRA IN
TTIU Tra _C
Co ntr OMP=1
ol/S ta
TTIU tu s
TT IU
nsmitte d TRAIN
itter TTIU Tra _C
C on tr OMP=1
Tran sm g ol/ Sta
t us
Train in
le te
C om p

PTT_R0 PTT_T0

Key: Processing PTT state name


Information sent or received from a SP receiver or SP transmitter

Figure 101 – Attached phy’s receiver indicates completion of training before the local phy’s receiver
completes training

258 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.11.4.2.6.5 Invalid TTIU sequence

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 259


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 102 shows an example of a local phy’s PTT_R state machine processing the receipt of an invalid TTIU.

Attached Phy Time Local Phy


PTT_R PTT_T PTT_R PTT_T
C ontro l/
Status 1
Co ntro l/S TTIU (va
tatus lid )
C ontrol/S
1 TTI U (val id ) tatus
PTT_T2 TT IU (v al
id)

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

Processing PTT state name


a
Cancel message to PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3 state machine.
b
Cancel message to PTT_SC1 state machine, PTT_SC2 state machine, and PTT_SC3 state machine.

Figure 102 – Processing an invalid TTIU

5.11.5 Phy reset sequence after devices are attached

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;

260 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Time=0 Time y Time=z

Phy A Rx
B

Incomplete COMSAS
Hot-plug COMINIT
Timeout
Phy B Tx
B

COMINIT COMINIT COMSAS


Time=0 Time=z

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

Figure 103 – Hot-plug and the phy reset 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 261


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 104 shows the exchange of APTA binary primitives to initiate, change, and complete the SP transmitter
adjustment.

Phy requesting to Attached phy


adjust transmitter of with transmitter
attached phy to be adjusted

Initiate Transmitter adjustment APTA_ADJUST (S


TART)
Phy indicates readyness for
EADY)
Request one step change to one APTA_ADJUST (R update to coefficients
or a pair of coefficents
Coefficent change re
quest
The change request is
processed and status
reported when complete
APTA Status
At least 1 ms from
the status report
binary primitive and
the next change
binary primitive
Coefficent change
request The change request is
processed and status
reported when complete
APTA Status
Adjustment completed APTA_ADJUST
(COMPLETE)

Figure 104 – SP transmitter adjustment procedure

APTA binary primitives are used to:


a) request start of active adjustment;
b) send change requests of the attached phy’s SP transmitter;
c) report status;
d) terminate adjustment; and
e) notify that active adjustment is complete.
If the SP receiver determines that received signal quality is not optimal for the receiver to recover the
transmitted signal using a vendor specific algorithm, then the SP receiver requests the management
application layer to start an APTA process (see 4.15).
Phy layer APTA (PAPTA) state machines process APTA binary primitives and coefficient change requests by
the SP receiver (see 5.14.2).

5.13 Phy power condition sequences

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.

262 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

COMWAKE Time (not to scale)

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 105 – Transition to active phy power condition

5.13.3 Events during low phy power condition

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 263


T10/BSR INCITS 554 Revision 11 18 January 2021

Sequence 1: no response to COMWAKE within a hot plug timeout

COMWAKE COMINIT
Hot-plug
timeout
Phy A Tx/
Phy B Rx

SAS phy A begins


OOB sequence

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

SAS phy B begins COMINIT


OOB sequence

Phy A Rx/ B
Phy B Tx
Time
Key:
B = SAS phy B power on

Figure 106 – Hot plug and low phy power condition

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.

264 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14 SP (phy layer) state machine

5.14.1 SP state machine overview

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 265


T10/BSR INCITS 554 Revision 11 18 January 2021

f) Exit from the SATA link layer, if any.


This state machine sends the following confirmations to the management application layer:
a) Transmitter Training Started;
b) Enable APTA; and
c) APTA Disabled with an argument of OOB In Progress or Low Phy Power Condition.
This state machine shall start in the SP0:OOB_COMINIT state after:
a) a power on;
b) a 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).
If the phy supports SATA port selectors, then this state machine shall transition to the SP25:SATA_PortSel
state whenever it receives a Transmit SATA Port Selection Signal request.
This state machine sends the following messages to the SP_DWS state machine (see 5.15):
a) Start DWS; and
b) Stop DWS.
This state machine sends the following messages to the SP_PS state machine (see 5.16):
a) Start PS; and
b) Stop PS.
This state machine sends the following messages to the SP_ReSync state machine (see 5.17):
a) Resynchronize; and
b) Stop Resync.
This state machine receives the following messages from the SP_DWS state machine:
a) DWS Lost; and
b) DWS Reset.
This state machine receives the following messages from the SP_ReSync state machine:
a) PS Reset; and
b) Restart PS.
This state machine sends the following messages to the PTT state machines (see 5.18):
a) Transmitter Training (Enable); and
b) Transmitter Training (Disable).
This state machine receives the following message from the PTT_T state machine (see 5.18.4):
a) Transmitter Training Complete.
This state machine receives the following messages from the PTT_PL state machine (see 5.18.12):
a) Pattern Lock Lost; and
b) Pattern Locked.

266 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state machine shall maintain the timers listed in table 91.

Table 91 – SP state machine timers

Timer Initial value

COMSAS Detect Timeout timer COMSAS detect timeout (see SAS-4)

Await ALIGN Timeout timer Await ALIGN timeout (see table 85)

Hot-Plug Timeout timer Hot plug timeout (see table 84)

RCDT timer RCDT (see table 86)

SNLT timer SNLT (see table 86)

SNTT timer SNTT (see table 86)

TLT timer TLT (see table 86)

MRTT timer MRTT (see table 86)

MTTT timer MTTT (see table 86)

Pattern Lock Lost Timeout timer 1 ms

Vendor specific period for initialization of the


Scrambler Initialization timer
scrambler timeout

Working Draft SAS Protocol Layer - 5 (SPL-5) 267


T10/BSR INCITS 554 Revision 11 18 January 2021

The SP state machine shall maintain the state machine variables defined in table 92.

Table 92 – SP state machine variables

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).

5.14.2 SP transmitter and SP receiver

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);

268 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

g) Set SSC with an argument of On or Off;


h) Transmit ALIGN with an argument indicating the specific type (e.g., Transmit ALIGN (0));
i) Transmit Phy Capabilities Bits;
j) Transmit TRAIN Pattern;
k) Transmit TRAIN_DONE Pattern;
l) Transmit PACKET_SYNC_LOST;
m) Transmit PACKET_SYNC;
n) Transmit OOB Idle;
o) Enter Partial Phy Power Condition;
p) Enter Slumber Phy Power Condition; and
q) Phy Wakeup.
If the local SAS phy is adjusting the attached SP transmitter coefficients, then the SP transmitter receives the
following messages from the PAPTA_L_A state machine that adjusts the attached SP transmitter:
a) Transmit APTA_ADJUST with an argument of Start, Complete, or Terminate;
b) Transmit APTA_COEFFICIENT_1 with an argument of Increment or Decrement;
c) Transmit APTA_COEFFICIENT_2 with an argument of Increment or Decrement;
d) Transmit APTA_COEFFICIENT_3 with an argument of Increment or Decrement;
e) Transmit APTA_COEFFICIENTS_1_2 with an argument of Increment or Decrement; and
f) Transmit APTA_COEFFICIENTS_2_3 with an argument of Increment or Decrement.
If the attached SAS phy is adjusting the local SP transmitter coefficients, then the SP transmitter receives the
following messages from the PAPTA_A_L state machine to report status of the local SP transmitter:
a) Transmit APTA_ADJUST with an argument of Ready or Terminate;
b) Transmit APTA_COEFFICIENT_1 with an argument of Updated, Maximum, or Minimum;
c) Transmit APTA_COEFFICIENT_2 with an argument of Updated, Maximum, or Minimum;
d) Transmit APTA_COEFFICIENT_3 with an argument of Updated, Maximum, or Minimum;
e) Transmit APTA_COEFFICIENTS_1_2 with an argument of Updated, Maximum, or Minimum; and
f) Transmit APTA_COEFFICIENTS_2_3 with an argument of Updated, Maximum, or Minimum.
When not otherwise instructed, the SP transmitter transmits negotiation idle.
Upon receiving a Phy Wakeup message, the SP transmitter shall become active (i.e., capable of transmitting
OOB signals, dwords, and SPL packets) within:
a) a phy wakeup partial timeout (see table 84), if the phy is in the partial phy power condition; or
b) a phy wakeup slumber timeout (see table 84), if the phy is in the slumber phy power condition.
Upon receiving a Transmit OOB Idle message, the SP transmitter transmits OOB_IDLE or D.C. idle as defined
in SAS-4.
The SP transmitter shall complete any physical link rate change and SSC change requested with the Set
Physical Link Rate message and the Set SSC message within RCDT (see table 86 in 5.11.4.2).
The SP transmitter sends the following messages to the SP state machine:
a) COMINIT Transmitted;
b) COMSAS Transmitted;
c) COMWAKE Transmitted;
d) SATA Port Selection Signal Transmitted;
e) TRAIN_DONE Pattern Transmitted;
f) PACKET_SYNC Transmitted;
g) Phy Capabilities Bits Transmitted; and
h) Phy Wakeup Complete.
The SP transmitter sends the following message to the SP_ReSync state machine:
a) PACKET_SYNC Transmitted.

Working Draft SAS Protocol Layer - 5 (SPL-5) 269


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

270 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 271


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.3 OOB sequence states

5.14.3.1 OOB sequence states overview

Figure 107 shows the OOB sequence states. These states are indicated by state names with a prefix of OOB.

SP (phy layer ) state machine - OOB sequence states Power on,


(to all states, hard reset,
SP0: causing Management
OOB_COMINIT transition to Reset, or
SP4:
OOB_COMSAS SP0: Disable Phy
OOB_COMINIT)
COMSAS
COMINIT Disable APTA PAPTA
Detected
Transmitted COMINIT Detected Transmit
(to all states,
Transmit Transmit SATA Port
COMWAKE Detected causing
COMINIT COMSAS Selection
transition to
SP19: SP3:OOB_ Signal
COMWAKE SP25:
SATA_ AwaitCOMINIT_Sent SATA_PortSel)
Detected
AwaitALIGN
SP6:OOB_
SP15: AwaitNoCOMSAS
COMINIT
SAS_
Transmitted SATA Port
PHY_Ready Selector
Change COMINIT
SP22:
COMWAKE Detected
SATA_ Detected SP5:OOB_
PHY_Ready
Stop PS SP_PS AwaitCOMSAS_Sent
Stop DWS SP_DWS COMSAS
Completed
SATA Port COMSAS
Selector Change Transmitted
APTA Disabled
COMSAS
Phy Layer Not Ready Completed
SP1:OOB_ COMSAS
Transmitted SP7:OOB_
AwaitCOMX
AwaitCOMSAS SP8:
SATA Port SAS_Start
Selector Change

COMWAKE Detected COMSAS Detected


COMINIT Detected
COMSAS Detected
SP2:OOB_ SP16:
SATA
SP14: Port NoCOMSASTimeout SATA_COMWAKE
SAS_Fail Selector
Change SP26:
SATA_SpinupHold
COMINIT Detected

Figure 107 – SP (phy layer) state machine - OOB sequence states

272 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.3.2 SP0:OOB_COMINIT state

5.14.3.2.1 State description

This state is the initial state for this state machine.


Upon entry into this state, this state shall:
a) set the COMWAKE_Received state machine variable to zero;
b) send an Enable OOB Detection message to the SP receiver;
c) set the SASPhyPwrCond state machine variable to Active;
d) send a Stop DWS message to the SP_DWS state machine;
e) send a Stop PS message to the SP_PS state machine;
f) disable the SAS packet mode;
g) enable the SAS dword mode;
h) send a Phy Layer Not Ready confirmation to the link layer;
i) send an APTA Disabled (OOB In Progress) confirmation to the management application layer;
j) send a Disable APTA message to the PAPTA state machines;
k) set the ATTACHED SATA DEVICE bit to zero in the SMP DISCOVER response (see 9.4.4.10);
l) if this state was entered due to power on and the phy is an SMP target phy, then set the ATTACHED
SATA PORT SELECTOR bit to zero in the SMP DISCOVER response (see 9.4.4.10);
m) if this state was not entered because of a Disable Phy request and D.C. mode is enabled, then send a
Transmit COMINIT message to the SP transmitter; and
n) if this state was not entered as a result of a Disable Phy request and optical mode is enabled, then:
1) repeatedly send Transmit OOB Idle messages to the SP transmitter for an RCDT time; and
2) send a Transmit COMINIT message to the SP transmitter.
If this state was entered because of a Disable Phy request, then upon entry into this state, this state shall:
a) ignore COMINIT Detected messages until this state is re-entered due to a power on, hard reset, or
Management Reset request; and
b) set the ResetStatus state machine variable to DISABLED.
If this state was entered due to power on or hard reset, then upon entry into this state, this state shall set the
ResetStatus state machine variable to UNKNOWN.
If this state was entered because of a Management Reset request, then upon entry into this state, this state
shall:
a) if the ResetStatus state machine variable is not set to RESET_IN_PROGRESS, SPINUP_HOLD, G1,
G2, G3, or G4, then set the ResetStatus state machine variable to UNKNOWN; or
b) if the ResetStatus state machine variable is set to RESET_IN_PROGRESS, SPINUP_HOLD, G1, G2,
G3, or G4, then set the ResetStatus state machine variable to RESET_IN_PROGRESS.
If this state was not entered due to a power on, hard reset, Disable Phy, or Management Reset request, then
upon entry into this state, 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 UNKNOWN;
or
b) if the ResetStatus state machine variable is set to PHY_RESET_PROBLEM, SPINUP_HOLD, or
UNSUPPORTED_PHY_ATTACHED, then not change the ResetStatus state machine variable.
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:

Working Draft SAS Protocol Layer - 5 (SPL-5) 273


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.3.2.2 Transition SP0:OOB_COMINIT to SP1:OOB_AwaitCOMX

This transition shall occur:


a) if this state receives a COMINIT Transmitted message and has not received a COMINIT Detected
message.

5.14.3.2.3 Transition SP0:OOB_COMINIT to SP3:OOB_AwaitCOMINIT_Sent

This transition shall occur:


a) if this state receives a COMINIT Detected message and has not received a COMINIT Transmitted
message.

5.14.3.2.4 Transition SP0:OOB_COMINIT to SP4:OOB_COMSAS

This transition shall occur:


a) if this state receives both a COMINIT Transmitted message and a COMINIT Detected message.

5.14.3.3 SP1:OOB_AwaitCOMX state

5.14.3.3.1 State description

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.

5.14.3.3.2 Transition SP1:OOB_AwaitCOMX to SP0:OOB_COMINIT

This transition shall occur if the Hot-Plug Timeout timer expires.


If the COMWAKE_Received state machine variable is set to zero and the ATTACHED SATA PORT SELECTOR bit is
set to one in the SMP DISCOVER response (see 9.4.4.10), then the state machine shall, before the transition:
a) set the ATTACHED SATA PORT SELECTOR bit to zero in the SMP DISCOVER response; and
b) send a SATA Port Selector Change confirmation to the link layer.
Before the transition, if this state was entered from SP0:OOB_COMINIT, then this state shall set the
ResetStatus state machine variable to UNKNOWN.

274 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.3.3.3 Transition SP1:OOB_AwaitCOMX to SP4:OOB_COMSAS

This transition shall occur:


a) after receiving a COMINIT Detected message or a COMSAS Detected message.
If COMSAS Detected was received, then this transition shall include:
a) a COMSAS Detected argument.

5.14.3.4 SP2:OOB_NoCOMSASTimeout state

5.14.3.4.1 State description

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.

5.14.3.4.2 Transition SP2:OOB_NoCOMSASTimeout to SP0:OOB_COMINIT

This transition shall occur:


a) if the Hot-Plug Timeout timer expires.

5.14.3.4.3 Transition SP2:OOB_NoCOMSASTimeout to SP4:OOB_COMSAS

This transition shall occur:


a) after receiving a COMINIT Detected message.

5.14.3.5 SP3:OOB_AwaitCOMINIT_Sent state

5.14.3.5.1 State description

This state waits for a COMINIT Transmitted 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.

5.14.3.5.2 Transition SP3:OOB_AwaitCOMINIT_Sent to SP4:OOB_COMSAS

This transition shall occur:


a) after receiving a COMINIT Transmitted message.

5.14.3.6 SP4:OOB_COMSAS state

5.14.3.6.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 275


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.3.6.2 Transition SP4:OOB_COMSAS to SP5:OOB_AwaitCOMSAS_Sent

This transition shall occur:


a) if this state receives a COMSAS Detected message or this state was entered with a COMSAS
Detected argument; and
b) this state has not received a COMSAS Transmitted message.
If the ATTACHED SATA PORT SELECTOR bit is set to one in the SMP DISCOVER response (see 9.4.4.10), then
the state machine shall set the ATTACHED SATA PORT SELECTOR bit to zero in the SMP DISCOVER response
and send a SATA Port Selector Change confirmation to the link layer before the transition.

5.14.3.6.3 Transition SP4:OOB_COMSAS to SP6:OOB_AwaitNoCOMSAS

This transition shall occur if this state receives:


a) a COMSAS Transmitted message; and
b) a COMSAS Detected message.
If the ATTACHED SATA PORT SELECTOR bit is set to one in the SMP DISCOVER response (see 9.4.4.10), then
the state machine shall set the ATTACHED SATA PORT SELECTOR bit to zero in the SMP DISCOVER response
and send a SATA Port Selector Change confirmation to the link layer before the transition.

5.14.3.6.4 Transition SP4:OOB_COMSAS to SP7:OOB_AwaitCOMSAS

This transition shall occur if this state:


a) receives a COMSAS Transmitted message; and
b) has not received a COMSAS Detected message.

5.14.3.7 SP5:OOB_AwaitCOMSAS_Sent state

5.14.3.7.1 State description

This state waits for receipt of a COMSAS Transmitted message.

5.14.3.7.2 Transition SP5:OOB_AwaitCOMSAS_Sent to SP6:OOB_AwaitNoCOMSAS

This transition shall occur:


a) after receiving a COMSAS Transmitted message.
If this state received a COMSAS Completed message, then it shall include:
a) a COMSAS Completed argument with the transition.

276 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.3.8 SP6:OOB_AwaitNoCOMSAS state

5.14.3.8.1 State description

This state machine waits for a COMSAS Completed message, which indicates that COMSAS has been
received.

5.14.3.8.2 Transition SP6:OOB_AwaitNoCOMSAS to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.3.8.3 Transition SP6:OOB_AwaitNoCOMSAS to SP8:SAS_Start

This transition shall occur:


a) after receiving a COMSAS Completed message; or
b) if a COMSAS Completed argument was received in the transition.

5.14.3.9 SP7:OOB_AwaitCOMSAS state

5.14.3.9.1 State description

Upon entry into this state, this state shall initialize and start the COMSAS Detect Timeout timer.

5.14.3.9.2 Transition SP7:OOB_AwaitCOMSAS to SP2:OOB_NoCOMSASTimeout

This transition shall occur:


a) if the phy does not support SATA; and
b) the COMSAS Detect Timeout timer expires.
The state machine shall set the MgmtReset state machine variable to zero before the transition.

5.14.3.9.3 Transition SP7:OOB_AwaitCOMSAS to SP6:OOB_AwaitNoCOMSAS

This transition shall occur:


a) after receiving a COMSAS Detected message.
The state machine shall set the MgmtReset state machine variable to zero before the transition.
The state machine shall set the ATTACHED SATA PORT SELECTOR bit to zero in the SMP DISCOVER response
(see 9.4.4.10). If the ATTACHED SATA PORT SELECTOR bit in the SMP DISCOVER response was set to one
before to this transition, then the state machine shall send a SATA Port Selector Change confirmation to the
link layer before the transition.

5.14.3.9.4 Transition SP7:OOB_AwaitCOMSAS to SP16:SATA_COMWAKE

This transition shall occur if:


a) the phy supports SATA; and
b) the COMSAS Detect Timeout timer expires and:
A) the MgmtReset state machine variable is set to one; or
B) the phy does not implement SATA spinup hold.
The state machine shall set the MgmtReset state machine variable to zero before the transition.

Working Draft SAS Protocol Layer - 5 (SPL-5) 277


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.3.9.5 Transition SP7:OOB_AwaitCOMSAS to SP26:SATA _SpinupHold

This transition shall occur if:


a) the phy supports SATA;
b) the COMSAS Detect Timeout timer expires;
c) the phy implements SATA spinup hold; and
d) the MgmtReset state machine variable is set to zero.
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.

5.14.4 SAS speed negotiation states

5.14.4.1 SAS speed negotiation states overview

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.

5.14.4.2 Negotiation idle

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.

278 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 279


T10/BSR INCITS 554 Revision 11 18 January 2021

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

SP34:SAS_ Set Physical Link Rate


Train_Tx Set SSC
Transmitter
Training Started
Transmitter
Transmitter Training (Enable) PTT
PTT Training Transmitter
Complete Training (Disable) PTT
Pattern Disable OOB Detection
PTT Lock Lost Enable OOB Detection
SP1:OOB_AwaitCOMx
PTT Pattern
Locked
SP30:SAS_
SP29:SAS_ TrainingDone
Train_Rx
DWS Lost SP_DWS
PACKET_SYNC_LOST Start SL_IR
Start DWS SP_DWS
Received Receiver
SP0:
PACKET_SYNC Start Rx Training OOB_COMINIT
TRAIN_DONE
Received Abort Rx Training
Received Transmit
DWS Lost SP_DWS TRAIN_DONE
Rx Training TRAIN_DONE SP15:
Start DWS SP_DWS Pattern
Completed SAS_PHY_Ready
Transmitted
COMINIT SP1:OOB_
Detected PACKET_SYNC AwaitCOMx
Transmit Transmitted
TRAIN PACKET_SYNC_LOST
Received PACKET_SYNC
Transmit TRAIN Received
TRAIN_DONE Pattern
Received SP0:OOB_COMINIT COMINIT Transmit
Detected PACKET _SYNC
SP1:OOB_AwaitCOMx

Figure 109 – SP (phy layer) state machine - SAS speed negotiation states for SNW-3 and
Train_Rx-SNW and Train_Tx-SNW

280 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.4.3 SP8:SAS_Start state

5.14.4.3.1 State description

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.

Table 93 – Messages to SP transmitter and SP receiver at start of RCDT

Current SNW
state Other
Messages sent to SP transmitter Messages sent to SP receiver
machine conditions
variable

Set Physical Link Rate (1.5 Gbit/s)


SNW-1 none Set Physical Link Rate (1.5 Gbit/s)
and Set SSC (Off)

Set Physical Link Rate (3 Gbit/s)


SNW-2 none Set Physical Link Rate (3 Gbit/s)
and Set SSC (Off)

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

SNW-2 was Set Physical Link Rate (3 Gbit/s)


Set Physical Link Rate (3 Gbit/s)
valid and Set SSC (Off)

5.14.4.3.2 Transition SP8:SAS_Start to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

Working Draft SAS Protocol Layer - 5 (SPL-5) 281


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.4.3.3 Transition SP8:SAS_Start to SP1:OOB_AwaitCOMX

This transition shall occur:


a) if the Current SNW state machine variable is set to Unsupported Phy Attached.
Before the transition, this state shall set the ResetStatus state machine variable to
UNSUPPORTED_PHY_ATTACHED.

5.14.4.3.4 Transition SP8:SAS_Start to SP9:SAS_WindowNotSupported

This transition shall occur:


a) after the RCDT timer expires if the SNW indicated by the Current SNW state machine variable is not
supported.

5.14.4.3.5 Transition SP8:SAS_Start to SP10:SAS_AwaitALIGN

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.

5.14.4.3.6 Transition SP8:SAS_Start to SP27:SAS_Settings

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.

5.14.4.4 SP9:SAS_WindowNotSupported state

5.14.4.4.1 State description

Upon entry into this state, this state shall initialize and start the SNTT timer.

5.14.4.4.2 Transition SP9:SAS_WindowNotSupported to SP0:OOB_COMINIT

This transition should occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.4.3 Transition SP9:SAS_WindowNotSupported to SP14:SAS_Fail

This transition shall occur:


a) after the SNTT timer expires.

5.14.4.5 SP10:SAS_AwaitALIGN state

5.14.4.5.1 State description

Upon entry into this state, this state shall:


a) initialize and start the SNTT timer and SNLT timer;
b) send a Start DWS message to the SP_DWS state machine; and
c) repeatedly send Transmit ALIGN (0) 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.

282 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.4.5.2 Transition SP10:SAS_AwaitALIGN to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message, if this state does not send a Start DWS message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.5.3 Transition SP10:SAS_AwaitALIGN to SP11:SAS_AwaitALIGN1

This transition shall occur:


a) if this state receives an ALIGN Received (0) message before the SNLT timer expires.

5.14.4.5.4 Transition SP10:SAS_AwaitALIGN to SP12:SAS_AwaitSNW

This transition shall occur:


a) if this state receives an ALIGN Received (1) message before the SNLT timer expires.

5.14.4.5.5 Transition SP10:SAS_AwaitALIGN to SP14:SAS_Fail

This transition shall occur:


a) if the SNTT timer expires.

5.14.4.6 SP11:SAS_AwaitALIGN1 state

5.14.4.6.1 State description

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.

5.14.4.6.2 Transition SP11:SAS_AwaitALIGN1 to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message, if this state does not send a Start DWS message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.6.3 Transition SP11:SAS_AwaitALIGN1 to SP12:SAS_AwaitSNW

This transition shall occur:


a) if this state receives an ALIGN Received (1) message before the SNTT timer expires.
This indicates that the attached phy has been able to achieve dword synchronization in the current SNW.

5.14.4.6.4 Transition SP11:SAS_AwaitALIGN1 to SP14:SAS_Fail

This transition shall occur:


a) if the SNTT timer expires.
This indicates that the attached phy has not been able to achieve dword synchronization in the current SNW.

Working Draft SAS Protocol Layer - 5 (SPL-5) 283


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.4.7 SP12:SAS_AwaitSNW state

5.14.4.7.1 State description

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.

5.14.4.7.2 Transition SP12:SAS_AwaitSNW to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message, if this state does not send a Start DWS message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.7.3 Transition SP12:SAS_AwaitSNW to SP13:SAS_Pass

This transition shall occur after:


a) the SNTT timer expires; or
b) receiving a Stop SNTT request.

5.14.4.8 SP13:SAS_Pass state

5.14.4.8.1 State description

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.

5.14.4.8.2 Transition SP13:SAS_Pass to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message, if this state does not send a Start DWS message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.8.3 Transition SP13:SAS_Pass to SP8:SAS_Start

This transition shall occur:


a) if the Current SNW state machine variable is not set to Final-SNW.

284 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.4.8.4 Transition SP13:SAS_Pass to SP15:SAS_PHY_Ready

This transition shall occur:


a) if the Current SNW state machine variable is set to Final-SNW.

5.14.4.9 SP14:SAS_Fail state

5.14.4.9.1 State description

This state determines if:


a) another SAS SNW is required; or
b) the SAS speed negotiation sequence is complete.

5.14.4.9.2 Transition SP14:SAS_Fail to SP1:OOB_AwaitCOMX

This transition shall occur:


a) if the Current SNW state machine variable is set to Final-SNW.
Before the transition, this state shall set the ResetStatus state machine variable to PHY_RESET_PROBLEM.

5.14.4.9.3 Transition SP14:SAS_Fail to SP8:SAS_Start

This transition shall occur:


a) if the Current SNW state machine variable is not set to Final-SNW.

5.14.4.10 SP15:SAS_PHY_Ready state

5.14.4.10.1 State description

This state waits for:


a) a COMINIT Detected message;
b) a DWS Lost message;
c) a DWS Reset message;
d) a PS Reset message; or
e) a Manage Phy Power Conditions request.
Upon entry into this state, this state shall:
a) send a Phy Layer Ready (SAS) confirmation to the link layer; and
b) if the SP transmitter is transmitting at:
A) 1.5 Gbit/s, then set the ResetStatus state machine variable to G1;
B) 3 Gbit/s, then set the ResetStatus state machine variable to G2;
C) 6 Gbit/s, then set the ResetStatus state machine variable to G3;
D) 12 Gbit/s, then set the ResetStatus state machine variable to G4; or
E) 22.5 Gbit/s, then:
a) send an Enable APTA confirmation to the management application layer;
b) send an Enable APTA message to the PAPTA state machines;
c) set the ResetStatus state machine variable to G5;
d) send a Start PS message to the SP_PS state machine;
e) send an Enable SP_ReSync message to the SP_ReSync state machine;
f) send a Stop DWS message to the SP_DWS state machine; and
g) initialize and start the Scrambler Initialization timer.
When the Scrambler Initialization timer expires, this state shall:
1) send a Transmit PACKET_SYNC message to the SP transmitter; and
2) initialize and start the Scrambler Initialization timer.

Working Draft SAS Protocol Layer - 5 (SPL-5) 285


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.4.10.2 Transition SP15:SAS_PHY_Ready to SP0:OOB_COMINIT

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.

5.14.4.10.3 Transition SP15:SAS_PHY_Ready to SP31:SAS_PS_Low_Phy_Power

This transition shall occur after this state receives:


a) a Manage Phy Power Conditions (Enter Partial) request; or
b) a Manage Phy Power Conditions (Enter Slumber) request.
If this transition is the result of this state receiving a Manage Phy Power Conditions (Enter Partial) request,
then the transition shall include:
a) a Partial argument.
If this transition is the result of this state receiving a Manage Phy Power Conditions (Enter Slumber) request,
then the transition shall include:
a) a Slumber argument.

5.14.4.11 SP27:SAS_Settings state

5.14.4.11.1 State description

This state transmits and receives phy capabilities bits.


Upon entry to this state, this state shall:
a) initialize and start the SNTT timer;
b) set the Commonly Supported Settings state machine variable to indicate that there are no commonly
supported settings; and
c) send a Transmit Phy Capabilities Bits message to the SP transmitter.
If a Phy Capabilities Bits Received message is received with the argument of Good Parity, then this state shall
set the Commonly Supported Settings state machine variable to the commonly supported settings.
After this state receives a Phy Capabilities Bits Transmitted message this state shall request that OOB idle be
transmitted by repeatedly sending Transmit OOB Idle messages to the SP transmitter.

286 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state waits for the SNTT timer to expire.

5.14.4.11.2 Transition SP27:SAS_Settings to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.11.3 Transition SP27:SAS_Settings to SP1:OOB_AwaitCOMX

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.11.4 Transition SP27:SAS_Settings to SP8:SAS_Start

This transition shall occur if:


a) the SNTT timer expires; and
b) a Phy Capabilities Bits Received message is not received during this state.

5.14.4.11.5 Transition SP27:SAS_Settings to SP28:SAS_TrainSetup

This transition shall occur:


a) after the SNTT timer expires; and
b) if the Commonly Supported Settings state machine variable indicates there is at least one commonly
supported setting.

5.14.4.12 SP28:SAS_TrainSetup

5.14.4.12.1 State description

Upon entry into this state:


1) this state shall set the Transmitter Training Enabled argument to:
A) no, if:
a) optical mode is enabled;
b) there is an active cable assembly attached to the phy; or
c) the highest priority commonly supported setting indicates G1, G2, or G3;
or
B) yes, if optical mode is disabled, there is no active cable assembly attached to the phy, and the
highest priority commonly supported setting indicates G4 or a higher priority;
2) if the highest priority commonly supported setting indicates:
A) G1, G2, G3, or G4, then this state shall enable the SAS dword mode; or
B) G5 or a higher priority, then this state shall enable the SAS packet mode;
and

Working Draft SAS Protocol Layer - 5 (SPL-5) 287


T10/BSR INCITS 554 Revision 11 18 January 2021

3) the phy shall:


A) initialize and start the RCDT timer; and
B) send a Set Physical Link Rate message to the SP transmitter, a Set Physical Link Rate message
to the SP receiver, and a Set SSC message to the SP transmitter with the arguments set to reflect
the highest priority commonly supported setting contained in the Commonly Supported Settings
state machine variable.
After the Set Physical Link Rate messages and Set SSC message are sent, the Commonly Supported
Settings state machine variable shall be set to indicate that the selected supported settings bit is no longer in
common.

5.14.4.12.2 Transition SP28:SAS_TrainSetup to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.4.12.3 Transition SP28:SAS_TrainSetup to SP29:SAS_Train_Rx

This transition shall occur:


a) after the RCDT timer expires if the Transmitter Training Enabled argument is set to no.

5.14.4.12.4 Transition SP28:SAS_TrainSetup to SP34:SAS_Train_Tx

This transition shall occur:


a) after the RCDT timer expires if the Transmitter Training Enabled argument is set to yes.

5.14.4.13 SP34:SAS_Train_Tx state

5.14.4.13.1 State description

Upon entry into this state, this state shall:


a) initialize and start the MTTT timer;
b) initialize and start the Pattern Lock Lost Timeout timer;
c) send a Disable OOB Detection message to the SP receiver;
d) send a Transmitter Training (Enable) message to the PTT state machines (see 5.18); and
e) send a Transmitter Training Started confirmation to the management application layer.
If this state receives a Pattern Lock Lost message, then this state shall initialize and start the Pattern Lock
Lost Timeout timer.
If this state receives a Pattern Locked message, then this state shall stop the Pattern Lock Lost Timeout timer.
If the MTTT timer expires or the Pattern Lock Lost Timeout timer expires, then this state shall send a
Transmitter Training (Disable) message to the PTT state machines.
A phy reset problem occurs if:
a) the MTTT timer expires or the Pattern Lock Lost Timeout timer expires; and
b) the Commonly Supported Settings state machine variable does not contain additional commonly
supported settings.

5.14.4.13.2 Transition SP34:SAS_Train_Tx to SP1:OOB_AwaitCOMX

This transition shall occur:


a) if a phy reset problem occurs.

288 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Before the transition, this state shall:


a) set the ResetStatus state machine variable to PHY_RESET_PROBLEM;
b) send an Enable OOB Detection message to the SP receiver;
c) stop the MTTT timer; and
d) stop the Pattern Lock Lost Timeout timer.

5.14.4.13.3 Transition SP34:SAS_Train_Tx to SP28:SAS_TrainSetup

This transition shall occur if:


a) the MTTT timer expires or the Pattern Lock Lost Timeout timer expires; and
b) the Commonly Supported Settings state machine variable contains additional commonly supported
settings.
Before the transition, this state shall:
a) stop the MTTT timer;
b) stop the Pattern Lock Lost Timeout timer; and
c) send an Enable OOB Detection message to the SP receiver.

5.14.4.13.4 Transition SP34:SAS_Train_Tx to SP29:SAS_Train_Rx

This transition shall occur if:


a) the MTTT timer has not expired;
b) the Pattern Lock Lost Timeout timer has not expired; and
c) this state receives a Transmitter Training Complete message.
Before the transition, this state shall:
a) stop the MTTT timer;
b) stop the Pattern Lock Lost Timeout timer; and
c) send an Enable OOB Detection message to the SP receiver.

5.14.4.14 SP29:SAS_Train_Rx state

5.14.4.14.1 State description

Upon entry into this state, this state shall:


a) initialize and start the MRTT timer;
b) initialize and start the TLT timer;
c) send a Start Rx Training message to the SP receiver; and
d) send a Start DWS message to the SP_DWS state machine if the phy is in the SAS dword mode.
If the phy is in the SAS dword mode, then:
a) this state shall repeatedly send Transmit TRAIN Pattern messages to the SP transmitter; and
b) each time this state receives a DWS Lost message, this state shall send a Start DWS message to the
SP_DWS state machine to re-acquire dword synchronization.
If the phy is in the SAS packet mode, then this state shall repeatedly send Transmit PACKET_SYNC_LOST
messages to the SP transmitter.
If the MRTT timer expires, then this state shall send an Abort Rx Training message to the SP receiver.
A phy reset problem occurs if:
a) the MRTT timer expires; and
b) the Commonly Supported Settings state machine variable does not contain additional commonly
supported settings.

Working Draft SAS Protocol Layer - 5 (SPL-5) 289


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.4.14.2 Transition SP29:SAS_Train_Rx to SP0:OOB_COMINIT

This transition shall occur after receiving a COMINIT Detected message.


Before the transition, this state shall:
a) set the ResetStatus state machine variable to UNKNOWN;
b) stop the TLT timer; and
c) stop the MRTT timer.

5.14.4.14.3 Transition SP29:SAS_Train_Rx to SP1:OOB_AwaitCOMX

This transition shall occur if a phy reset problem occurs.


Before the transition, this state shall:
a) set the ResetStatus state machine variable to PHY_RESET_PROBLEM;
b) stop the TLT timer; and
c) stop the MRTT timer.

5.14.4.14.4 Transition SP29:SAS_Train_Rx to SP28:SAS_TrainSetup

This transition shall occur if:


a) the MRTT timer expires; and
b) the Commonly Supported Settings state machine variable contains additional commonly supported
settings.
Before the transition, this state shall:
a) stop the TLT timer; and
b) stop the MRTT timer.

5.14.4.14.5 Transition SP29:SAS_Train_Rx to SP30:SAS_TrainingDone

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.

5.14.4.15 SP30:SAS_TrainingDone state

5.14.4.15.1 State description

If the phy is in the SAS dword mode, then this state shall repeatedly send Transmit TRAIN_DONE Pattern
messages to the SP transmitter.

290 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.14.4.15.2 Transition SP30:SAS_TrainingDone to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message if this state does not send a Start DWS message; or
b) a COMINIT Detected message.
Before the transition, this state shall:
a) set the ResetStatus state machine variable to UNKNOWN; and
b) stop the MRTT timer.

5.14.4.15.3 Transition SP30:SAS_TrainingDone to SP1:OOB_AwaitCOMX

This transition shall occur:


a) if a phy reset problem occurs.
Before the transition, this state shall set the ResetStatus state machine variable to PHY_RESET_PROBLEM.

5.14.4.15.4 Transition SP30:SAS_TrainingDone to SP28:SAS_TrainSetup

This transition shall occur if:


a) the MRTT timer expires; and
b) the Commonly Supported Settings state machine variable contains additional commonly supported
settings.

5.14.4.15.5 Transition SP30:SAS_TrainingDone to SP15:SAS_PHY_Ready

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 291


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.5 SAS phy power conditions states

5.14.5.1 SAS phy power conditions states overview

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.

292 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

These states are indicated by state names with a prefix of SAS_PS.

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

COMINIT COMINIT SP15:


COMINIT
Detected Detected SAS_PHY_Ready
Detected
SP0: SP0: SP0:
OOB_COMINIT OOB_COMINIT OOB_COMINIT

Figure 110 – SP (phy layer) state machine - SAS phy power condition states

5.14.5.2 SP31:SAS_PS_Low_Phy_Power state

5.14.5.2.1 State description

Upon entry into this state, this state shall:


a) send an APTA Disabled (Low Phy Power Condition) confirmation to the management application
layer;
b) send a Disable APTA message to the PAPTA state machines;
c) send a Stop DWS message to the SP_DWS state machine;
d) send a Stop PS message to the SP_PS state machine; and
e) if applicable, then save any vendor specific information for the SP transmitter and SP receiver (e.g.,
determined from the previous Train_Rx-SNW and Train_Tx-SNW with the arguments set to the same
values as those for the previous entry into the SP28:SAS_TrainSetup state (see 5.14.4.12)).

Working Draft SAS Protocol Layer - 5 (SPL-5) 293


T10/BSR INCITS 554 Revision 11 18 January 2021

If this state is entered with a Partial argument, then:


a) this state shall send an Enter Partial Phy Power Condition message to the SP transmitter and SP
receiver;
b) the phy shall enter the partial phy power condition (see 4.11.1.3); and
c) this state shall set the SASPhyPwrCond state machine variable to Partial.
If this state is entered with a Slumber argument, then:
a) this state shall send an Enter Slumber Phy Power Condition message to the SP transmitter and SP
receiver;
b) the phy shall enter the slumber phy power condition (see 4.11.1.4); and
c) this state shall set the SASPhyPwrCond state machine variable to Slumber.
If this state receives a Manage Phy Power Conditions (Exit) request or a COMWAKE Detected message, then
this state shall:
1) send a Phy Wakeup message to the SP transmitter;
2) wait for a Phy Wakeup Completed message; and
3) send a Transmit COMWAKE message to the SP transmitter.
While in this state, if a Manage Phy Power Conditions (Exit) request and a COMWAKE Detected message are
received, then this state shall only send one Transmit COMWAKE message to the SP transmitter.

5.14.5.2.2 Transition SP31:SAS_PS_Low_Phy_Power to SP0:OOB_COMINIT

This transition shall occur if:


a) this state:
A) receives a COMWAKE Transmitted message; and
B) does not receive a COMWAKE Completed message within a hot-plug timeout (see table 84);
or
b) this state receives a COMINIT Detected message.

5.14.5.2.3 Transition SP31:SAS_PS_Low_Phy_Power to SP32:SAS_PS_ALIGN0

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.

5.14.5.2.4 Transition SP31:SAS_PS_Low_Phy_Power to SP35:SAS_PS_Sync

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.

5.14.5.3 SP32:SAS_PS_ALIGN0 state

5.14.5.3.1 State description

Upon entry into this state, this state shall:


1) initialize and start the SNTT timer and the SNLT timer;
2) send a Set Physical Link Rate message to the SP transmitter and to the SP receiver and send a Set
SSC message to the SP transmitter with the arguments set to those determined from the last SNW;
3) if applicable, then restore any vendor specific information for the SP transmitter and SP receiver (see
5.14.5.2.1);
4) send a Start DWS message to the SP_DWS state machine; and
5) repeatedly send Transmit ALIGN (0) messages to the SP transmitter.

294 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.14.5.3.2 Transition SP32:SAS_PS _ALIGN0 state to SP0:OOB_COMINIT

This transition shall occur after this state:


a) receives a DWS Lost message, if this state does not send a Start DWS message;
b) receives a COMINIT Detected message; or
c) the SNTT timer expires.
Before the transition, this state shall stop the SNLT timer and the SNTT timer.

5.14.5.3.3 Transition SP32:SAS_PS _ALIGN0 to SP33:SAS_PS _ALIGN1

This transition shall occur:


a) if this state receives an ALIGN Received (0) message or an ALIGN Received (1) message before the
SNLT timer expires; and
b) after this state has sent at least three Transmit ALIGN (0) messages.
Before the transition, this state shall stop the SNLT timer.

5.14.5.4 SP33:SAS_PS_ALIGN1 state

5.14.5.4.1 State description

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.

5.14.5.4.2 Transition SP33:SAS_PS_ALIGN1 state to SP0:OOB_COMINIT

This transition shall occur after this state:


a) receives a DWS Lost message, if this state does not send a Start DWS message;
b) receives a COMINIT Detected message; or
c) the SNTT timer expires.
Before the transition, this state shall stop the SNLT timer and the SNTT timer.

5.14.5.4.3 Transition SP33:SAS_PS_ALIGN1 state to SP15:SAS_PHY_Ready

This transition shall occur:


a) if this state receives an ALIGN Received (1) message before the SNTT timer expires;
b) after this state has sent at least three Transmit ALIGN (1) messages;
c) after this state has set the SASPhyPwrCond state machine variable to Active; and
d) after this state has stopped the SNLT timer and the SNTT timer.

5.14.5.5 SP35:SAS_PS_Sync state

5.14.5.5.1 State description

Upon entry into this state, this state shall:


1) send a Set Physical Link Rate message to the SP transmitter and to the SP receiver and send a Set
SSC message to the SP transmitter with the arguments set to those determined from the last SNW;

Working Draft SAS Protocol Layer - 5 (SPL-5) 295


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.14.5.5.2 Transition SP35:SAS_PS _SYNC state to SP0:OOB_COMINIT

This transition shall occur after this state receives:


a) a PS Reset message; or
b) a COMINIT Detected message.

5.14.5.5.3 Transition SP35:SAS_PS _SYNC state to SP15:SAS_PHY_Ready

This transition shall occur after this state receives:


a) a Restart PS message.

5.14.6 SATA host emulation states

5.14.6.1 SATA host emulation states overview

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).

296 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

SP (phy layer) state machine - SATA host emulation states

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 297


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.6.2 SP16:SATA_COMWAKE state

5.14.6.2.1 State description

This state shall send a Transmit COMWAKE message to the SP transmitter and wait for a COMWAKE
Transmitted message.

5.14.6.2.2 Transition SP16:SATA_COMWAKE to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.

5.14.6.2.3 Transition SP16:SATA_COMWAKE to SP17:SATA_AwaitCOMWAKE

This transition shall occur:


a) after receiving a COMWAKE Transmitted message.

5.14.6.3 SP17:SATA_AwaitCOMWAKE state

5.14.6.3.1 State description

This state waits for a COMWAKE Detected message to be received.

5.14.6.3.2 Transition SP17:SATA_AwaitCOMWAKE to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.

5.14.6.3.3 Transition SP17:SATA_AwaitCOMWAKE to SP18:SATA_AwaitNoCOMWAKE

This transition shall occur:


a) after receiving a COMWAKE Detected message.

5.14.6.4 SP18:SATA_AwaitNoCOMWAKE state

5.14.6.4.1 State description

This state waits for a COMWAKE Completed message.

5.14.6.4.2 Transition SP18:SATA_AwaitNoCOMWAKE to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.6.4.3 Transition SP18:SATA_AwaitNoCOMWAKE to SP19:SATA_AwaitALIGN

This transition shall occur:


a) after receiving a COMWAKE Completed message.

298 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.6.5 SP19:SATA_AwaitALIGN state

5.14.6.5.1 State description

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.

5.14.6.5.2 Transition SP19:SATA_AwaitALIGN to SP0:OOB_COMINIT

This transition shall occur:


a) if the Await ALIGN Timeout timer expires;
b) after receiving a DWS Lost message; or
c) after receiving a COMINIT Detected message.
Before the transition, this state shall:
a) if the Await ALIGN Timeout timer expires, then set the ResetStatus state machine variable to
UNSUPPORTED_PHY_ATTACHED;
b) after receiving a DWS Lost message, set the ResetStatus state machine variable to UNKNOWN; or
c) after receiving a COMINIT Detected message, set the ResetStatus state machine variable to
UNKNOWN.

5.14.6.5.3 Transition SP19:SATA_AwaitALIGN to SP20:SATA_AdjustSpeed

This transition shall occur:


a) if this state receives an ALIGN Received (0) message before the Await ALIGN Timeout timer expires.
The ALIGN Received (0) message indicates an ALIGN (0) was received at any of the physical link rates
supported by this phy.

5.14.6.6 SP20:SATA_AdjustSpeed state

5.14.6.6.1 State description

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.

5.14.6.6.2 Transition SP20:SATA_AdjustSpeed to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

Working Draft SAS Protocol Layer - 5 (SPL-5) 299


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.6.6.3 Transition SP20:SATA_AdjustSpeed to SP21:SATA_TransmitALIGN

This transition shall occur:


a) after receiving a Transmitter Ready message.

5.14.6.7 SP21:SATA_TransmitALIGN state

5.14.6.7.1 State description

This state shall repeatedly send Transmit ALIGN (0) messages to the SP transmitter.

5.14.6.7.2 Transition SP21:SATA_TransmitALIGN to SP0:OOB_COMINIT

This transition shall occur after receiving:


a) a DWS Lost message; or
b) a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.6.7.3 Transition SP21:SATA_TransmitALIGN to SP22:SATA_PHY_Ready

This transition shall occur:


a) after receiving three consecutive Dword Received messages containing primitives other than
ALIGN (0).

5.14.6.8 SP22:SATA_PHY_Ready state

5.14.6.8.1 State description

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.

5.14.6.8.2 Transition SP22:SATA_PHY_Ready to SP0:OOB_COMINIT

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; or
c) a DWS Reset message.

300 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.6.8.3 Transition SP22:SATA_PHY_Ready to SP23:SATA_PM_Partial

This transition shall occur:


a) after receiving a Manage Phy Power Conditions (Enter Partial) request.

5.14.6.8.4 Transition SP22:SATA_PHY_Ready to SP24:SATA_PM_Slumber

This transition shall occur:


a) after receiving a Manage Phy Power Conditions (Enter Slumber) request.

5.14.6.9 SP23:SATA_PM_Partial state

5.14.6.9.1 State description

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.

5.14.6.9.2 Transition SP23:SATA_PM_Partial to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

5.14.6.9.3 Transition SP23:SATA_PM_Partial to SP16:SATA_COMWAKE

This transition shall occur:


a) if this state receives a Manage Phy Power Conditions (Exit) request; and
b) after this state receives a Phy Wakeup Complete message.

5.14.6.9.4 Transition SP23:SATA_PM_Partial to SP19:SATA_AwaitALIGN

This transition shall occur after this state receives a:


a) Phy Wakeup Complete message; and
b) COMWAKE Completed message.

5.14.6.10 SP24:SATA_PM_Slumber state

5.14.6.10.1 State description

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.

5.14.6.10.2 Transition SP24:SATA_PM_Slumber to SP0:OOB_COMINIT

This transition shall occur:


a) after receiving a COMINIT Detected message.
Before the transition, this state shall set the ResetStatus state machine variable to UNKNOWN.

Working Draft SAS Protocol Layer - 5 (SPL-5) 301


T10/BSR INCITS 554 Revision 11 18 January 2021

5.14.6.10.3 Transition SP24:SATA_PM_Slumber to SP16:SATA_COMWAKE

This transition shall occur:


a) if this state receives a Manage Phy Power Conditions (Exit) request; and
b) after this state receives a Phy Wakeup Complete message.

5.14.6.10.4 Transition SP24:SATA_PM_Slumber to SP19:SATA_AwaitALIGN

This transition shall occur after this state receives a:


a) Phy Wakeup Complete message; and
b) COMWAKE Completed message.

5.14.7 SATA port selector state SP25:SATA_PortSel

5.14.7.1 State description

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

Upon entry into this state, this state shall:


a) set the ResetStatus state machine variable to UNKNOWN;
b) send a Transmit SATA Port Selection Signal message to the SP transmitter;
c) set the ATTACHED SATA PORT SELECTOR bit to zero in the SMP DISCOVER response (see 9.4.4.10);
and
d) set the ATTACHED SATA DEVICE bit to zero in the SMP DISCOVER response.

5.14.7.2 Transition SP25:SATA_PortSel to SP1:OOB_AwaitCOMX

This transition shall occur:


a) after receiving a SATA Port Selection Signal Transmitted message.

302 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.14.8 SATA spinup hold state SP26:SATA_SpinupHold

5.14.8.1 State description

Figure 113 shows the SP26:SATA_SpinupHold 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

Upon entry into this state, this state shall:


a) if the ResetStatus state machine variable is set to SPINUP_HOLD, then not change the ResetStatus
state machine variable; or
b) if the ResetStatus state machine variable is not set to SPINUP_HOLD, then:
A) set the ResetStatus state machine variable to SPINUP_HOLD; and
B) if this state machine is in an expander phy, then send a SATA Spinup Hold confirmation to the link
layer.

5.14.8.2 Transition SP26:SATA_SpinupHold to SP0:OOB_COMINIT

This transition shall occur:


a) if this state receives a COMINIT Detected message.

5.15 SP_DWS (phy layer dword synchronization) state machine

5.15.1 SP_DWS state machine overview

Each phy includes an SP_DWS state machine and an SP_DWS receiver.

Working Draft SAS Protocol Layer - 5 (SPL-5) 303


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

304 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state machine shall maintain the timers listed in table 94.

Table 94 – SP_DWS state machine timers

Timer Initial value

DWS Reset Timeout timer 1 ms

Working Draft SAS Protocol Layer - 5 (SPL-5) 305


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 114 shows the SP_DWS state machine.

SP_DWS (phy layer dword synchronization) state machine

SP_DWS0: SP_DWS1: SP_DWS2: SP_DWS3:


AcquireSync Valid1 Valid2 SyncAcquired
SP
Sync Acquired receiver
Sync Acquired

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)

(to all states) Dword Received


(to all states, causing transition to SP_DWS0:AcquireSync) Stop DWS SP

SP_DWS4: SP_DWS6: SP_DWS8:


Lost1 Lost2 Lost3

DWS Lost SP

SP_DWS5: SP_DWS7: SP_DWS9:


Lost1Recovered Lost2Recovered Lost3Recovered

SP_DWS0

DWS Lost SP

Figure 114 – SP_DWS (phy layer dword synchronization) state machine

5.15.2 SP_DWS receiver

The SP_DWS receiver receives the following messages from the SP_DWS state machine:
a) Find Dword; and
b) Sync Acquired.

306 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.15.3 SP_DWS0:AcquireSync state

5.15.3.1 State description

This is the initial state of this state machine.


After receiving a Start DWS message, this state shall:
a) send a Find Dword message to the SP_DWS receiver;
b) send a Sync Lost message to the SP receiver; and
c) initialize and start the DWS Reset Timeout timer.
If this state is entered from SP_DWS1:Valid1 or SP_DWS2:Valid2, then:
a) this state shall send a Find Dword message to the SP_DWS receiver;
b) this state shall send a Sync Lost message to the SP receiver; and
c) the DWS Reset Timeout timer shall continue running if this state was entered without a Timer Expired
argument.
If the DWS Reset Timeout timer expires or this state was entered with a Timer Expired argument, then this
state may send a DWS Reset message to the SP state machine (e.g., if the phy chooses to initiate a new link
reset sequence because dword synchronization has been lost for too long).
This state shall not send a DWS Reset message to the SP until the DWS Reset Timeout timer expires or this
state was entered with a Timer Expired argument.

5.15.3.2 Transition SP_DWS0:AcquireSync to SP_DWS1:Valid1

This transition shall occur:


a) after sending a Find Dword message; and
b) after receiving a Dword Received (Primitive) message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 307


T10/BSR INCITS 554 Revision 11 18 January 2021

5.15.4 SP_DWS1:Valid1 state

5.15.4.1 State description

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.

5.15.4.2 Transition SP_DWS1:Valid1 to SP_DWS0:AcquireSync

This transition shall occur:


a) after receiving a Dword Received (Invalid) message; or
b) after the DWS Reset Timeout timer expires.
If the DWS Reset Timeout timer has expired, then the transition shall include a Timer Expired argument.

5.15.4.3 Transition SP_DWS1:Valid1 to SP_DWS2:Valid2

This transition shall occur:


a) after receiving a Dword Received (Primitive) message.

5.15.5 SP_DWS2:Valid2 state

5.15.5.1 State description

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.

5.15.5.2 Transition SP_DWS2:Valid2 to SP_DWS0:AcquireSync

This transition shall occur:


a) after receiving a Dword Received (Invalid) message; or
b) after the DWS Reset Timeout timer expires.
If the DWS Reset Timeout timer has expired, then the transition shall include a Timer Expired argument.

5.15.5.3 Transition SP_DWS2:Valid2 to SP_DWS3:SyncAcquired

This transition shall occur:


a) after receiving a Dword Received (Primitive) message.
Before the transition, this state shall stop the DWS Reset Timeout timer.

5.15.6 SP_DWS3:SyncAcquired state

5.15.6.1 State description

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.

308 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.15.6.2 Transition SP_DWS3:SyncAcquired to SP_DWS4:Lost1

This transition shall occur:


a) after receiving a Dword Received (Invalid) message.

5.15.7 SP_DWS4:Lost1 state

5.15.7.1 State description

This state is reached when one invalid dword has been received and not nullified. This state waits for a Dword
Received message.

5.15.7.2 Transition SP_DWS4:Lost1 to SP_DWS5:Lost1Recovered

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

5.15.7.3 Transition SP_DWS4:Lost1 to SP_DWS6:Lost2

This transition shall occur:


a) after receiving a Dword Received (Invalid) message.

5.15.8 SP_DWS5:Lost1Recovered state

5.15.8.1 State description

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.

5.15.8.2 Transition SP_DWS5:Lost1Recovered to SP_DWS3:SyncAcquired

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

5.15.8.3 Transition SP_DWS5:Lost1Recovered to SP_DWS6:Lost2

This transition shall occur:


a) after receiving a Dword Received (Invalid) message.

5.15.9 SP_DWS6:Lost2 state

5.15.9.1 State description

This state is reached when two invalid dwords have been received and not nullified. This state waits for a
Dword Received message.

5.15.9.2 Transition SP_DWS6:Lost2 to SP_DWS7:Lost2Recovered

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 309


T10/BSR INCITS 554 Revision 11 18 January 2021

5.15.9.3 Transition SP_DWS6:Lost2 to SP_DWS8:Lost3

This transition shall occur:


a) after receiving a Dword Received (Invalid) message.

5.15.10 SP_DWS7:Lost2Recovered state

5.15.10.1 State description

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.

5.15.10.2 Transition SP_DWS7:Lost2Recovered to SP_DWS4:Lost1

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

5.15.10.3 Transition SP_DWS7:Lost2Recovered to SP_DWS8:Lost3

This transition shall occur:


a) after receiving a Dword Received (Invalid) message.

5.15.11 SP_DWS8:Lost3 state

5.15.11.1 State description

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.

5.15.11.2 Transition SP_DWS8:Lost3 to SP_DWS0:AcquireSync

This transition shall occur:


a) after sending a DWS Lost message.

5.15.11.3 Transition SP_DWS8:Lost3 to SP_DWS9:Lost3Recovered

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

5.15.12 SP_DWS9:Lost3Recovered state

5.15.12.1 State description

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.

310 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.15.12.2 Transition SP_DWS9:Lost3Recovered to SP_DWS0:AcquireSync

This transition shall occur:


a) after sending a DWS Lost message.

5.15.12.3 Transition SP_DWS9:Lost3Recovered to SP_DWS6:Lost2

This transition shall occur after receiving:


a) a Dword Received (Data Dword) message; or
b) a Dword Received (Primitive) message.

5.16 SP_PS (phy layer SPL packet synchronization) state machine

5.16.1 SP_PS state machine overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 311


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 95 – SP_PS state machine timers

Timer Initial value

PS Reset Timeout timer 1 ms

312 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 115 shows the SP_PS state machine.

SP_PS (phy layer SPL packet synchronization ) state machine

SP_PS0: SP_PS1: SP_PS2:


AcquireSync Valid1 SyncAcquired

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

5.16.2 SP_PS receiver

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 313


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

314 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The SP_PS receiver relationship to other receivers is defined in 4.3.3.

SPL packet payload that contains a primitive


Header 31 Byte 0 24 23 Byte 1 16 15 Byte 2 8 7 Byte 3 0
H1 H0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0
c c
0 1 a b c d e i 1 0 f g h j a b c d e i f g h j a b c d e i f g h j

2nd character 3rd character 4th character

SPL packet payload that specifies a K 28.5 primitive


Header 31 Byte 0 24 23 Byte 1 16 15 Byte 2 8 7 Byte 3 0
H1 H0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0
0 1 a b c d e i 0 0 f g h j a b c d e i f g h j a b c d e i f g h j

nd rd th
2 character 3 character 4 character

Restructured SPL packet payload that contains a K 28.5 primitive to


be sent to the SAS bit reception logic
K28.5 a b c d e i f g h j a b c d e i f g h j a b c d e i f g h j

1st 2
nd
character
rd
3 character
th
4 character
character

SPL packet payload that specifies a K 28.3 primitive


Header 31 Byte 0 24 23 Byte 1 16 15 Byte 2 8 7 Byte 3 0
H1 H0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0
0 1 a b c d e i 1 1 f g h j a b c d e i f g h j a b c d e i f g h j

nd rd th
2 character 3 character 4 character

Restructured SPL packet payload that contains a K 28.3 primitive to be


sent to the SAS bit reception logic
K28.3 a b c d e i f g h j a b c d e i f g h j a b c d e i f g h j

1st 2
nd
character
rd
3 character
th
4 character
character

Figure 116 – SPL packet payload primitive decoding

Working Draft SAS Protocol Layer - 5 (SPL-5) 315


T10/BSR INCITS 554 Revision 11 18 January 2021

.
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

Figure 117 – Unpacking SPL packet

316 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.16.3 SP_PS0:AcquireSync state

5.16.3.1 State description

This is the initial state of this state machine.


After receiving a Start PS message or Restart PS message, this state shall:
1) send a Sync Lost message to the SP_PS receiver;
2) send a Find SPL Packet message to the SP_PS receiver; and
3) initialize and start the PS Reset Timeout timer.
If this state is entered from SP_PS1:Valid1, then:
a) this state shall send:
1) a Sync Lost message to the SP_PS receiver; and
2) a Find SPL Packet message to the SP_PS receiver;
and
b) the PS Reset Timeout timer shall continue running, if this state was entered without a Timer Expired
argument.
This state shall send a Resynchronize message to the SP_ReSync state machine if:
a) the PS Reset Timeout timer expires; or
b) this state was entered with a Timer Expired argument.

5.16.3.2 Transition SP_PS0:AcquireSync to SP_PS1:Valid1

This transition shall occur:


a) after sending a Find SPL Packet message; and
b) after receiving an SPL Packet Received (Valid) message.

5.16.4 SP_PS1:Valid1 state

5.16.4.1 State description

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.

5.16.4.2 Transition SP_PS1:Valid1 to SP_PS0:AcquireSync

This transition shall occur:


a) after receiving an SPL Packet Received (Invalid) message;
b) after the PS Reset Timeout timer expires; or
c) after receiving a Stop PS message.
If the PS Reset Timeout timer has expired, then the transition shall include a Timer Expired argument.

5.16.4.3 Transition SP_PS1:Valid1 to SP_PS2:SyncAcquired

This transition shall occur:


a) after receiving an SPL Packet Received (Valid) message.
Before the transition, this state shall stop the PS Reset Timeout timer.

Working Draft SAS Protocol Layer - 5 (SPL-5) 317


T10/BSR INCITS 554 Revision 11 18 January 2021

5.16.5 SP_PS2:SyncAcquired state

5.16.5.1 State description

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.

5.16.5.2 Transition SP_PS2:SyncAcquired to SP_PS0:AcquireSync

This transition shall occur:


a) after receiving a Stop PS message.

5.16.5.3 Transition SP_PS2:SyncAcquired to SP_PS3:Lost1

This transition shall occur:


a) after receiving an SPL Packet Received (Invalid) message.

5.16.6 SP_PS3:Lost1 state

5.16.6.1 State description

This state is reached when one invalid SPL packet has been received. This state waits for an SPL Packet
Received message.

5.16.6.2 Transition SP_PS3:Lost1 to SP_PS0:AcquireSync

This transition shall occur:


a) after receiving a Stop PS message.

5.16.6.3 Transition SP_PS3:Lost1 to SP_PS5:Lost2

This transition shall occur:


a) after receiving an SPL Packet Received (Invalid) message.

5.16.6.4 Transition SP_PS3:Lost1 to SP_PS4:LostRecovered

This transition shall occur:


a) after receiving an SPL Packet Received (Valid) message.

5.16.7 SP_PS4:LostRecovered state

5.16.7.1 State description

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.

5.16.7.2 Transition SP_PS4:LostRecovered to SP_PS0:AcquireSync

This transition shall occur:


a) after receiving a Stop PS message.

318 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.16.7.3 Transition SP_PS4:LostRecovered to SP_PS2:SyncAcquired

This transition shall occur:


a) after receiving an SPL Packet Received (Valid) message.

5.16.7.4 Transition SP_PS4:LostRecovered to SP_PS3:Lost1

This transition shall occur:


a) after receiving an SPL Packet Received (Invalid) message.

5.16.8 SP_PS5:Lost2 state

5.16.8.1 State description

This state is reached when two consecutive invalid SPL packets have been received. This state waits for an
SPL Packet Received message.

5.16.8.2 Transition SP_PS5:Lost2 to SP_PS0:AcquireSync

This transition shall occur:


a) after receiving a Stop PS message.

5.16.8.3 Transition SP_PS5:Lost2 to SP_PS4:LostRecovered

This transition shall occur:


a) after receiving an SPL Packet Received (Valid) message.

5.16.8.4 Transition SP_PS5:Lost2 to SP_PS6:Lost3

This transition shall occur:


a) after receiving an SPL Packet Received (Invalid) message.

5.16.9 SP_PS6:Lost3 state

5.16.9.1 State description

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.

5.16.9.2 Transition SP_PS6:Lost3 to SP_PS0:AcquireSync

This transition shall occur:


a) after sending a Resynchronize message; or
b) after receiving a Stop PS message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 319


T10/BSR INCITS 554 Revision 11 18 January 2021

5.16.9.3 Transition SP_PS6:Lost3 to SP_PS4:LostRecovered

This transition shall occur:


a) after receiving an SPL Packet Received (Valid) message.

5.17 SP_ReSync (phy layer resynchronization) state machine

5.17.1 SP_ReSync state machine overview

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.

320 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 118 shows the SP_ReSync state machine.

SP_ReSync (phy layer resynchronization) state machine


Power on,
hard reset, SP_ReSync0: SP_ReSync1:
Management (to all states, Initial Start
Reset, or causing
Disable Phy transition to
SP_ReSync0: PACKET_SYNC_LOST
Initial) Received
SP_PS
SP Enable SP_Resync Resynchronize
SP

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

Figure 118 – SP_ReSync (phy layer resynchronization) state machine

5.17.2 SP_ReSync0:Initial

5.17.2.1 State description

This is the initial state of this state machine.

5.17.2.2 Transition SP_ReSync0:Initial to SP_ReSync1:Start

This transition shall occur after an Enable SP_ReSync message is received.

5.17.3 SP_ReSync1:Start

5.17.3.1 State description

This is the starting state for resynchronizing SP packets.

5.17.3.2 Transition SP_ReSync1:Start to SP_ReSync2:Request

This transition shall occur after a Resynchronize message is received.

Working Draft SAS Protocol Layer - 5 (SPL-5) 321


T10/BSR INCITS 554 Revision 11 18 January 2021

5.17.3.3 Transition SP_ReSync1:Start to SP_ReSync3:Response

This transition shall occur after a PACKET_SYNC_LOST Received message is received.

5.17.4 SP_ReSync2:Request

5.17.4.1 State description

This state requests the attached phy perform a resynchronization.


Upon entry into this state, this state shall:
a) initialize and start the MRTT timer.
This state shall repeatedly send Transmit PACKET_SYNC_LOST messages to the SP transmitter (see
5.14.2).
On receiving a PACKET_SYNC Received message this state shall:
1) stop sending Transmit PACKET_SYNC_LOST messages;
2) stop the MRTT timer; and
3) send four Transmit PACKET_SYNC messages to the SP transmitter.
If the MRTT timer expires, then this state shall send a PS Reset message to the SP state machine.

5.17.4.2 Transition SP_ReSync2:Request to SP_ReSync0:Initial

This transition shall occur after a PS Reset message is sent.

5.17.4.3 Transition SP_ReSync2:Request to SP_ReSync1:Start

This transition shall occur after:


a) receiving four PACKET_SYNC Transmitted messages; or
b) receiving a Stop Resync message.
Before the transition, this state shall:
a) stop the MRTT timer; and
b) if four PACKET_SYNC Transmitted messages were received, then send a Restart PS message to the
SP_PS state machine and to the SP state machine.

5.17.4.4 Transition SP_ReSync2:Request to SP_ReSync3:Response

This transition shall occur:


a) after receiving a PACKET_SYNC_LOST Received message.
Before the transition, this state shall stop the MRTT timer.

5.17.5 SP_ReSync3:Response

5.17.5.1 State description

On entry this state shall:


a) initialize and start the MRTT timer; and
b) send a Stop PS message to the SP_PS state machine.
This state shall repeatedly send Transmit PACKET_SYNC messages to the SP transmitter (see 5.14.2).
This state waits for the MRTT timer to expire or a PACKET_SYNC Received message from the SP_PS
receiver.

322 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.17.5.2 Transition SP_ReSync3:Response state to SP_ReSync0:Initial

This transition shall occur after a PS Reset message is sent.

5.17.5.3 Transition SP_ReSync3:Response state to SP_ReSync1:Start

This transition shall occur after this state either:


a) achieves SPL packet synchronization; or
b) receives a Stop Resync message.
Before the transition, this state shall:
a) stop the MRTT timer; and
b) if packet synchronization is achieved, then send a Restart PS message to the SP_PS state machine
and the SP state machine.

5.18 PTT (phy layer transmitter training) state machines

5.18.1 PTT state machines overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 323


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.2 SP transmitter additions for transmitter training

5.18.2.1 SP transmitter additions for transmitter training overview

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.

5.18.2.2 TTIU transmit setup

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.

5.18.2.3 No_equalization, reference_1, reference_2, and vendor_unique coefficient settings request

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).

324 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.18.2.4 Coefficient limits

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.

5.18.2.5 Coefficient request result of update complete

5.18.2.5.1 Coefficient request processing

In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3


message with a Single argument, and an Increment argument or a Decrement argument 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 an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3
message with a Dual argument, and an Increment argument or a Decrement argument the SP transmitter
shall, after receiving the first Dual argument:
1) wait for a second Dual argument;
2) process both requests; and
3) for each specified coefficient, adjust that coefficient if that adjustment results in:
A) that coefficient being:
a) less than a maximum value; and
b) greater than a minimum value;
and
B) no coefficient being greater than a maximum value or less than a minimum value.

5.18.2.5.2 Coefficient adjustment completes

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).

5.18.2.5.3 No coefficient adjustment

In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3


message with a Dual argument, if the processing results in:
a) one specified coefficient being:
A) less than a maximum value; and
B) greater than a minimum value;
and
b) the other specified coefficient being:
A) greater than a maximum value; or
B) less than a minimum value,

Working Draft SAS Protocol Layer - 5 (SPL-5) 325


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

5.18.2.6 Coefficient request result of maximum

5.18.2.6.1 Coefficient request processing

In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3


message with a Single argument and an Increment argument 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 an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3
message with a Dual argument and an Increment argument, the SP transmitter shall, after receiving the first
Dual argument:
1) wait for a second Dual argument;
2) process both requests; and
3) for each specified coefficient, adjust that coefficient if that adjustment results in:
A) that coefficient being equal to a maximum value; and
B) no coefficient being greater than a maximum value.

5.18.2.6.2 Coefficient adjustment completes

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).

5.18.2.6.3 No coefficient adjustment

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).

5.18.2.7 Coefficient request result of minimum

5.18.2.7.1 Coefficient request processing

In response to an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3


message with a Single argument and a Decrement argument 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 an Adjust Coefficient 1 message, an Adjust Coefficient 2 message, or an Adjust Coefficient 3
message with a Dual argument and a Decrement argument, the SP transmitter shall, after receiving the first
Dual argument:
1) wait for a second Dual argument;

326 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

2) process both requests; and


3) for each specified coefficient, adjust that coefficient if that adjustment results in:
A) that coefficient being equal to a minimum value; and
B) no coefficient being less than a minimum value.

5.18.2.7.2 Coefficient adjustment completes

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).

5.18.2.7.3 No coefficient adjustment

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).

5.18.3 SP receiver additions for transmitter training

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 327


T10/BSR INCITS 554 Revision 11 18 January 2021

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

5.18.4.1 PTT_T state machine overview

The PTT_T state machine’s function is to:


a) transmit the status information and control information to train the attached phy’s transmitter;

328 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) determine when the local phy’s transmitter training is complete; and


c) determine when the attached phy’s transmitter training is complete.
This state machine consists of the following states:
a) PTT_T0:Idle (see 5.18.4.2) (initial state);
b) PTT_T1:Initialize (see 5.18.4.3);
c) PTT_T2:Tx_Training (see 5.18.4.4); and
d) PTT_T3:Local_Tx_Training (see 5.18.4.5).
This state machine receives the following request from the management application layer:
a) Initial Coefficient Setting with an argument of Normal, No_Equalization, Reference_1, Reference_2,
or Vendor_Unique.
This state machine sends the following message to the SP state machine:
a) Transmitter Training Complete.

Working Draft SAS Protocol Layer - 5 (SPL-5) 329


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 119 shows the PTT_T state machine.

PTT (phy layer transmitter training) state machine

PTT_T (phy layer transmitter training transmit pattern)


Initial PTT_T0:Idle
Coefficient
Setting PTT_T1:Initialize
Transmitter
SP
Training (Enable)
Set Training
Transmitter Status
SP
Training (Disable) Set Training
Control
PTT_R2 TTIU Received Transmit Train_Tx
Pattern
Train_Tx
Pattern Transmitted Attached Phy s
Transmitter Training

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

330 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.4.2 PTT_T0:Idle state

5.18.4.2.1 State description

This is the initial state of this state machine.


This state waits for a request to start transmitter training.

5.18.4.2.2 Transition PTT_T0:Idle to PTT_T1:Initialize

This transition shall occur after receiving:


a) a Transmitter Training (Enable) message; and
b) an Initial Coefficient Setting request.
This transition shall include the coefficient setting as an argument (i.e., Normal, No_Equalization,
Reference_1, Reference_2, or Vendor_Unique).

5.18.4.3 PTT_T1:Initialize state

5.18.4.3.1 State description

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.

5.18.4.3.2 Transition PTT_T1:Initialize to PTT_T0:Idle

This transition shall occur:


a) after receiving a Transmitter Training (Disable) message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 331


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.4.3.3 Transition PTT_T1:Initialize to PTT_T2:Tx_Training

This transition shall occur:


a) after receiving a TTIU Received message with an Attached Transmitter Initialized argument.
This transition shall include the coefficient setting as an argument (i.e., Normal, No_Equalization,
Reference_1, Reference_2, or Vendor_Unique).

5.18.4.4 PTT_T2:Tx_Training state

5.18.4.4.1 State description

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.

5.18.4.4.2 Entry conditions

Upon entry into this state, this state shall:


1) 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 zero;
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);
2) if the Coefficient Settings argument is set to No_Equalization, Reference_1, Reference_2, or
Vendor_Unique, then process the coefficient settings as defined in 5.18.4.4.5;
3) send an Attached Phy’s Transmitter Training (Start) message to the SP receiver;
4) 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);
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);
5) send a Set Training Control message to the SP transmitter;
6) send a Set Training Status message to the SP transmitter;
7) send a Transmit Train_Tx Pattern message to the SP transmitter;
8) wait for a Train_Tx Pattern Transmitted message; and
9) repeat steps 7) and 8) while there is no other looping occurring within this state.

332 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.4.4.3 Control word and status word mappings

Table 96 defines the mapping of the messages received from the PTT_GC state machines to the Training
Control word.

Table 96 – Mapping messages to the Training Control word


e
Message received Training Control word field
a b
Coefficient 1 Update Request COEFFICIENT 1 REQUEST

Coefficient 2 Update Request a c COEFFICIENT 2 REQUEST


a d
Coefficient 3 Update Request COEFFICIENT 3 REQUEST
a
This message contains a Decrement, Increment, Hold, No_Equalization, Reference_1, Reference_2, or
Vendor_Unique argument.
b
This message is from the PTT_GC1 state machine.
c
This message is from the PTT_GC2 state machine.
d
This message is from the PTT_GC3 state machine.
e
If the message is received with an argument of Hold, Increment, or Decrement, then the Training Control
word field shall be set to the argument received in the corresponding message (i.e., 00b (i.e., hold), 01b
(i.e., increment), or 10b (i.e., decrement)). If the message is received with an argument of
No_Equalization, Reference_1, Reference_2, or Vendor_Unique, then the Training Control word field
shall be set to 00b (i.e., hold).

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

Current Coefficient 3 Status a d COEFFICIENT 3 STATUS


a
This message contains a Maximum, Minimum, Update_Complete, or Ready argument.
b
This message is from the PTT_SC1 state machine.
c
This message is from the PTT_SC2 state machine.
d
This message is from the PTT_SC3 state machine.
e
On receipt of the message this state shall:
1) set the Training Status word field to the argument received in the corresponding message (i.e., 00b
(i.e., ready), 01b (i.e., update complete), 10b (i.e., minimum), or 11b (i.e., maximum)); and
2) send a Set Training Status message to the SP transmitter after receiving a Train_Tx Pattern
Transmitted message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 333


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.4.4.4 Error message handling

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

Transmit Error Response message argument Error Response TTIU field

Coefficient Settings RECEIVED COEFFICIENT SETTINGS

Coefficient 1 Request RECEIVED COEFFICIENT 1 REQUEST

Coefficient 2 Request RECEIVED COEFFICIENT 2 REQUEST

Coefficient 3 Request RECEIVED COEFFICIENT 3 REQUEST

Error ERROR CODE

5.18.4.4.5 Resetting attached phy’s transmitter

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);

334 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) set the COEFFICIENT SETTINGS field to 011b (i.e., no equalization);


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);
B) this state is entered with an argument of Reference_1 or receives an argument of Reference_1,
then this state shall set the fields of the Training Control word as follows:
a) set the PATTERN TYPE field to 000b (i.e., Control/Status TTIU);
b) set the COEFFICIENT SETTINGS field to 001b (i.e., reference 1);
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);
C) this state is entered with an argument of Reference_2 or receives an argument of Reference_2,
then this state shall 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 010b (i.e., reference 2);
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);
or
D) this state is entered with an argument of Vendor_Unique or receives an argument of
Vendor_Unique, then this state shall 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 100b (i.e., vendor_unique);
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);
3) send a Set Training Control message to the SP transmitter;
4) send a Set Training Status message to the SP transmitter;
5) send a Transmit Train_Tx Pattern message to the SP transmitter;
6) wait for a Train_Tx Pattern Transmitted message;
7) repeat steps 5) and 6) when there is no other looping occurring within this state (i.e., if a Transmit
Error Response message is received, then the error as defined in 5.18.4.5.5 shall be processed) until
this state receives an All Coefficients Not Ready message;
8) send an Attached Phy’s Transmitter Training (Start) message to the SP receiver; and
9) set the COEFFICIENT SETTINGS field to 000b (i.e., normal).

5.18.4.4.6 Local phy’s transmitter and attached phy’s transmitter training completed

If this state receives:


a) a Local Phy’s Transmitter Training Complete message; and
b) an Attached Phy’s Transmitter Optimized message,
then this state shall:
1) set the TRAIN COMP bit of the Training Status word (see table 77) to one;
2) 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);
3) send a Set Training Control message to the SP transmitter;
4) send a Set Training Status message to the SP transmitter;
5) send a Transmit Train_Tx Pattern message to the SP transmitter;
6) wait for a Train_Tx Pattern Transmitted message;
7) repeat steps 5) and 6) five times; and

Working Draft SAS Protocol Layer - 5 (SPL-5) 335


T10/BSR INCITS 554 Revision 11 18 January 2021

8) send a Transmitter Training Complete message to the SP34:SAS_Train_Tx state and the
PTT_R2:Receive_Train_Tx_Pattern state.

5.18.4.4.7 Transition PTT_T2:Tx_Training to PTT_T0:Idle

This transition shall occur after:


a) receiving a Transmitter Training (Disable) message; or
b) sending the Transmitter Training Complete messages.

5.18.4.4.8 Transition PTT_T2:Tx_Training to PTT_T3:Local_Tx_Training

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.

5.18.4.5 PTT_T3:Local_Tx_Training state

5.18.4.5.1 State description

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.

5.18.4.5.2 Entry conditions

Upon entry into this state, this state shall:


1) set the bits and fields of the Training Status word (see table 77) as follows:
A) set the TRAIN COMP bit to one;
B) set the TX INIT bit to zero;
C) set the COEFFICIENT 1 STATUS field to the Coefficient 1 Status argument;
D) set the COEFFICIENT 2 STATUS field to the Coefficient 2 Status argument; and
E) set the COEFFICIENT 3 STATUS field to the Coefficient 3 Status argument;
2) set the fields of the Training Control word as follows:
A) set the PATTERN TYPE field 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);
3) send a Set Training Control message to the SP transmitter;
4) send a Set Training Status message to the SP transmitter;
5) send a Transmit Train_Tx Pattern message to the SP transmitter;
6) wait for a Train_Tx Pattern Transmitted message; and
7) repeat steps 5) and 6) while there is no other looping occurring with in this state.

5.18.4.5.3 Status word mappings

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.

336 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.18.4.5.5 Error message handling

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.4.5.6 Transition PTT_T3:Local_Tx_Training to PTT_T0:Idle

This transition shall occur after:


a) receiving a Transmitter Training (Disable) message; or
b) sending the Transmitter Training Complete messages.

5.18.5 PTT_R (phy layer transmitter training receive pattern) state machine

5.18.5.1 PTT_R state machine overview

The PTT_R state machine’s function is to:


a) monitor the receipt of the attached phy’s Train_Tx pattern;
b) start pattern lock synchronization;
c) transfer adjustment requests received from the attached phy’s receiver to the local phy’s transmitter;
and
d) transfer the attached phy’s transmitter coefficient status to the local phy’s receiver.
This state machine consists of the following states:
a) PTT_R0:Idle (see 5.18.5.2) (initial state);
b) PTT_R1:Initialize (see 5.18.5.3); and
c) PTT_R2:Receive_Train_Tx_Pattern (see 5.18.5.4).
This state machine receives the following messages from the SP state machine:
a) Transmitter Training (Enable); and
b) Transmitter Training (Disable).

Working Draft SAS Protocol Layer - 5 (SPL-5) 337


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 120 shows the PTT_R state machine.

PTT (phy layer transmitter training) state machine

PTT_R (phy layer transmitter training receive training pattern)

PTT_R0:Idle PTT_R1:Initialize

Transmitter Start Pattern Lock


SP PTT_PL
Training (Enable) Synchronization

PTT_PL Pattern Locked


Transmitter
SP
Training (Disable)

PTT_R2:Receive_Train_Tx_Pattern

Set Coefficient 1 Request PTT_SC1


Transmitter
SP Cancel PTT_SC1
Training (Disable)
Coefficient 1 Request Usage PTT_SC1
PTT_PL Pattern Lock Lost
Set Coefficient 2 Request PTT_SC2
Transmitter Cancel PTT_SC2
PTT_T
Training Complete
Coefficient 2 Request Usage PTT_SC2
Set Coefficient 3 Request PTT_SC3
Cancel PTT_SC3
Coefficient 3 Request Usage PTT_SC3
Get Coefficient 1 Control PTT_GC1
Cancel PTT_GC1
Get Coefficient 2 Control PTT_GC2
Cancel PTT_GC2
Get Coefficient 3 Control PTT_GC3
Cancel PTT_GC3
Local Phy s Transmitter
PTT_T
Training Complete
TTIU Received PTT_T
Received TTIU
Transmit Error Response PTT_T
Coefficient 1 Status
Coefficient 2 Status
Coefficient 3 Status

Coefficients Status Updated


Transmitter Control Failed

Figure 120 – PTT_R (phy layer transmitter training receive pattern) state machine

338 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.5.2 PTT_R0:Idle state

5.18.5.2.1 State description

This is the initial state of this state machine.


This state waits for a request to start transmitter training.

5.18.5.2.2 Transition PTT_R0:Idle to PTT_R1:Initialize

This transition shall occur:


a) after receiving a Transmitter Training (Enable) message.

5.18.5.3 PTT_R1:Initialize state

5.18.5.3.1 State description

This state waits for pattern lock synchronization.


Upon entry into this state, this state shall:
a) send a Start Pattern Lock Synchronization message to the PTT_PL phy layer state machine.

5.18.5.3.2 Transition PTT_R1:Initialize to PTT_R0:Idle

This transition shall occur:


a) after receiving a Transmitter Training (Disable) message.

5.18.5.3.3 Transition PTT_R1:Initialize to PTT_R2:Receive_Train_Tx_Pattern

This transition shall occur:


a) after receiving a Pattern Locked message.

5.18.5.4 PTT_R2:Receive_Train_Tx_Pattern state

5.18.5.4.1 State description

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 339


T10/BSR INCITS 554 Revision 11 18 January 2021

3) discard the TTIU.

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

Unsupported value Unsupported Pattern Type


PATTERN TYPE Table 76
Reserved value Reserved Pattern Type

COEFFICIENT 1 REQUEST Reserved Coefficient 1 Request

COEFFICIENT 2 REQUEST Reserved value Table 79 Reserved Coefficient 2 Request

COEFFICIENT 3 REQUEST Reserved Coefficient 3 Request

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.

If this state receives:


a) a Received TTIU message;
b) a PATTERN TYPE field of the Training Control word set to 111b (i.e., Error Response TTIU); and
c) an even number of bits set to zero in the TTIU,
then this state shall:
a) send a Transmitter Control Failed message to the SP receiver with the contents of the Error
Response TTIU as an argument; and
b) send a Cancel message to the PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3
state machine.
If this state receives:
a) a Received TTIU message;

340 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 100 – Mapping the Training Status word to SP receiver messages

Training Status word field Message to SP receiver


a
COEFFICIENT 1 STATUS Coefficient 1 Status

COEFFICIENT 2 STATUS Coefficient 2 Status a

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 341


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Training Status word


Message
Field name Code Name
a
00b ready Get Coefficient 1 Control (Start)

01b update complete


COEFFICIENT 1 STATUS
10b minimum Get Coefficient 1 Control (Restart) a

11b maximum
b
00b ready Get Coefficient 2 Control (Start)

01b update complete


COEFFICIENT 2 STATUS
b
10b minimum Get Coefficient 2 Control (Restart)

11b maximum

00b ready Get Coefficient 3 Control (Start) c

01b update complete


COEFFICIENT 3 STATUS
c
10b minimum Get Coefficient 3 Control (Restart)

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.

342 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Training Control word fields

COEFFICIENT SETTINGS field code Message

Code Name

000b normal see table 103 see table 103


a e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h a f
001b reference_1 COEFFICIENT 2 REQUEST Set Coefficient 2 Request

COEFFICIENT 3 REQUEST Set Coefficient 3 Request a g

b e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h b f
010b reference_2 COEFFICIENT 2 REQUEST Set Coefficient 2 Request

COEFFICIENT 3 REQUEST Set Coefficient 3 Request b g

c e
COEFFICIENT 1 REQUEST Set Coefficient 1 Request
h c f
011b no_equalization COEFFICIENT 2 REQUEST Set Coefficient 2 Request

COEFFICIENT 3 REQUEST Set Coefficient 3 Request c g

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 343


T10/BSR INCITS 554 Revision 11 18 January 2021

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)

Set Coefficient 3 Set Coefficient 2 Set Coefficient 1


Coefficient 3 Request Coefficient 2 Request Coefficient 1 Request
Code
Request Usage Request Usage Request Usage
(argument) (argument) a (argument) (argument) a (argument) (argument) a

message not message not message not


00h Hold Hold Hold
sent sent sent

message not message not


01h Hold Hold Increment Single
sent sent

message not message not


02h Hold Hold Decrement Single
sent sent

message not message not


04h Hold Increment Single Hold
sent sent

message not
05h Hold Increment Dual Increment Dual
sent

message not message not


08h Hold Decrement Single Hold
sent sent

message not
0Ah Hold Decrement Dual Decrement Dual
sent

message not message not


10h Increment Single Hold Hold
sent sent

message not
14h Increment Dual Increment Dual Hold
sent

message not message not


20h Decrement Single Hold Hold
sent 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.

344 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.5.4.2 Transition PTT_R2:Receive_Train_Tx_Pattern to PTT_R0:Idle

This transition shall occur after receiving a:


a) Transmitter Training (Disable) message; or
b) Transmitter Training Complete message.

5.18.5.4.3 Transition PTT_R2:Receive_Train_Tx_Pattern to PTT_R1:Initialize

This transition shall occur:


a) after receiving a Pattern Lock Lost message.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 345


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 121 shows the PTT_SC1 state machine, PTT_SC2 state machine, and PTT_SC3 state machine.

PTT (phy layer transmitter training ) state machines


PTT_SC3 (phy layer transmitter training set transmitter coefficient 3)
PTT_SC2 (phy layer transmitter training set transmitter coefficient 2)
PTT_SC1 (phy layer transmitter training set transmitter coefficient 1)
PTT_SC1_0:Idle
Set Coefficient 1
PTT_R Request

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

SP Transmitter Training (Disable)


Current Coefficient
PTT_T
1 Status
Transmitter
Adjustment 1 Complete

PTT_SC1_3:Wait_Hold

Set Coefficient 1
PTT_R
Request (Hold)

PTT_R Cancel

SP Transmitter Training (Disable)

Figure 121 – PTT_SC1, PTT_SC2, and PTT_SC3 (phy layer transmitter training set transmitter
coefficient) state machines

346 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.6.2 PTT_SC1 state machine overview

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).

5.18.6.3 PTT_SC1_0:Idle state

5.18.6.3.1 State description

This is the initial state of this state machine.


This state waits for a request to start setting the local phy’s transmitter coefficient.

5.18.6.3.2 Transition PTT_SC1_0:Idle to PTT_SC1_1:Wait_Inc_Dec

This transition shall occur:


a) after receiving a Set Coefficient 1 Request message.

5.18.6.4 PTT_SC1_1:Wait_Inc_Dec state

5.18.6.4.1 State description

This state waits for a request to:


a) increment or decrement the local phy’s transmitter coefficient; or
b) set the local phy’s transmitter coefficient to the no equalization value, reference_1 value, reference_2
value, or vendor_unique value.
Upon entry into this state, this state shall:
a) send a Current Coefficient 1 Status (Ready) message to the PTT_T state machine.

5.18.6.4.2 Transition PTT_SC1_1:Wait_Inc_Dec to PTT_SC1_0:Idle

This transition shall occur after receiving a:


a) Cancel message; or
b) Transmitter Training (Disable) message.

5.18.6.4.3 Transition PTT_SC1_1:Wait_Inc_Dec to PTT_SC1_2:Set_Coefficient

This transition shall occur:


a) after receiving a Set Coefficient 1 Request message with an argument of Decrement, Increment, Set
No_Equalization, Set Reference_1, Set Reference_2, or Set Vendor_Unique.
This transition shall include the argument from the:
a) Set Coefficient 1 Request message (i.e., Increment, Decrement, Set No_Equalization, Set
Reference_1, Set Reference_2, or Set Vendor_Unique); and
b) Coefficient 1 Request Usage message (i.e., Single or Dual), if any.

Working Draft SAS Protocol Layer - 5 (SPL-5) 347


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.6.5 PTT_SC1_2:Set_Coefficient state

5.18.6.5.1 State description

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.

Table 104 – Mapping messages to the PTT_T state machine

Message from SP transmitter Message sent to PTT_T state machine

Transmitter Adjustment 1 Complete (Maximum) Current Coefficient 1 Status (Maximum)

Transmitter Adjustment 1 Complete (Minimum) Current Coefficient 1 Status (Minimum)

Transmitter Adjustment 1 Complete (Update_Complete) Current Coefficient 1 Status (Update_Complete)

348 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.6.5.2 Transition PTT_SC1_2:Set_Coefficient to PTT_SC1_0:Idle

This transition shall occur after receiving a:


a) Cancel message; or
b) Transmitter Training (Disable) message.

5.18.6.5.3 Transition PTT_SC1_2:Set_Coefficient to PTT_SC1_3:Wait_Hold

This transition shall occur after:


a) receiving a Transmitter Adjustment 1 Complete message; and
b) sending a Current Coefficient 1 Status message to the PTT_T state machine.

5.18.6.6 PTT_SC1_3:Wait_Hold state

5.18.6.6.1 State description

This state waits for the attached phy’s transmitter to request a hold.

5.18.6.6.2 Transition PTT_SC1_3:Wait_Hold to PTT_SC1_0:Idle

This transition shall occur after receiving a:


a) Cancel message; or
b) Transmitter Training (Disable) message.

5.18.6.6.3 Transition PTT_SC1_3:Wait_Hold to PTT_SC1_1:Wait_Inc_Dec

This transition shall occur:


a) after receiving a Set Coefficient 1 Request (Hold) message.

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.

Table 105 – PTT_SC1 messages to substitute for PTT_SC2 messages

PTT_SC1 message PTT_SC2 message

Set Coefficient 1 Request Set Coefficient 2 Request

Current Coefficient 1 Status Current Coefficient 2 Status

Adjust Coefficient 1 Adjust Coefficient 2

Transmitter Adjustment 1 Complete Transmitter Adjustment 2 Complete

Coefficient 1 Request Usage Coefficient 2 Request Usage

Working Draft SAS Protocol Layer - 5 (SPL-5) 349


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 106 – PTT_SC1 messages to substitute for PTT_SC3 messages

PTT_SC1 message PTT_SC3 message

Set Coefficient 1 Request Set Coefficient 3 Request

Current Coefficient 1 Status Current Coefficient 3 Status

Adjust Coefficient 1 Adjust Coefficient 3

Transmitter Adjustment 1 Complete Transmitter Adjustment 3 Complete

Coefficient 1 Request Usage Coefficient 3 Request Usage

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.

350 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 122 shows the PTT_GC1 state machine, PTT_GC2 state machine, and PTT_GC3 state machine.

PTT (phy layer transmitter training ) state machines


PTT_GC3 (phy layer transmitter training get transmitter coefficient 3)
PTT_GC2 (phy layer transmitter training get transmitter coefficient 2)
PTT_GC1 (phy layer transmitter training get transmitter coefficient 1)
PTT_GC1_0:Idle
Get Coefficient 1
PTT_R Control (Start)

PTT_GC1_1:Get_Coefficient

Coefficient 1
Update Request PTT_T
Current Coefficient 1

PTT_R Cancel Get Current


Coefficient 1
SP Transmitter Training (Disable)

PTT_GC1_2:Wait_Restart

SP Transmitter Training (Disable)


Coefficient 1
PTT_R Cancel Update PTT_T
Request (Hold)
Get Coefficient 1
PTT_R
Control (Restart)

Figure 122 – PTT_GC1, PTT_GC2, and PTT_GC3 (phy layer transmitter training get transmitter
coefficient) state machines

5.18.9.2 PTT_GC1 state machine

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 351


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.9.3 PTT_GC1_0:Idle state

5.18.9.3.1 State description

This is the initial state of this state machine.


This state waits for a request to get the coefficient.

5.18.9.3.2 Transition PTT_GC1_0:Idle to PTT_GC1_1:Get_Coefficient

This transition shall occur:


a) after receiving a Get Coefficient 1 Control (Start) message.

5.18.9.4 PTT_GC1_1:Get_Coefficient state

5.18.9.4.1 State description

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.

Table 107 – Mapping messages to the PTT_T state machine

Message from the SP receiver Message sent to the PTT_T state machine

Current Coefficient 1 (Increment) Coefficient 1 Update Request (Increment)

Current Coefficient 1 (Decrement) Coefficient 1 Update Request (Decrement)

Current Coefficient 1 (Hold) Coefficient 1 Update Request (Hold)

Current Coefficient 1 (No_Equalization) Coefficient 1 Update Request (No_Equalization)

Current Coefficient 1 (Reference_1) Coefficient 1 Update Request (Reference_1)

Current Coefficient 1 (Reference_2) Coefficient 1 Update Request (Reference_2)

Current Coefficient 1 (Vendor_Unique) Coefficient 1 Update Request (Vendor_Unique)

5.18.9.4.2 Transition PTT_GC1_1:Get_Coefficient to PTT_GC1_0:Idle

This transition shall occur after receiving a:


a) Transmitter Training (Disable) message; or
b) Cancel message.

5.18.9.4.3 Transition PTT_GC1_1:Get_Coefficient to PTT_GC1_2:Wait_Restart

This transition shall occur after sending a:


a) Coefficient 1 Update Request message with an argument of Increment, Decrement, No_Equalization,
Reference_1, Reference_2, or Vendor_Unique.

352 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.9.5 PTT_GC1_2:Wait_Restart state

5.18.9.5.1 State description

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.9.5.2 Transition PTT_GC1_2:Wait_Restart to PTT_GC1_0:Idle

This transition shall occur after:


a) receiving a Transmitter Training (Disable) message;
b) receiving a Cancel message; or
c) sending a Coefficient 1 Update Request (Hold) message.

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.

Table 108 – PTT_GC1 messages to substitute for PTT_GC2 messages

PTT_GC1 message PTT_GC2 message

Get Coefficient 1 Control Get Coefficient 2 Control

Coefficient 1 Update Request Coefficient 2 Update Request

Current Coefficient 1 Current Coefficient 2

Get Current Coefficient 1 Get Current Coefficient 2

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.

Table 109 – PTT_GC1 messages to substitute for PTT_GC2 messages

PTT_GC1 message PTT_GC3 message

Get Coefficient 1 Control Get Coefficient 3 Control

Coefficient 1 Update Request Coefficient 3 Update Request

Current Coefficient 1 Current Coefficient 3

Get Current Coefficient 1 Get Current Coefficient 3

Working Draft SAS Protocol Layer - 5 (SPL-5) 353


T10/BSR INCITS 554 Revision 11 18 January 2021

5.18.12 PTT_PL (phy layer transmitter training pattern lock) state machine

5.18.12.1 PTT_PL state machine overview

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).

354 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 123 shows the PTT_PL state machine.

PTT (phy layer transmitter training) state machines


PTT_PL (phy layer transmitter training pattern lock) state machine

PTT_PL0: PTT_PL1: PTT_PL2: PTT_PL3:


Idle Acquire_Lock Valid Lock_Acquired
Pattern Locked SP
Valid Pattern
Marker Pattern Locked PTT_R
Valid Pattern
Marker
Invalid Pattern
Marker
Start Pattern Lock PTT_R
Synchronization Invalid Pattern
Enable Pattern Marker
Marker Detection
Disable Pattern
Marker Detection

PTT_PL4: PTT_PL5: PTT_PL6:


Lost1 Lost2 Lost3
Valid Pattern Valid Pattern Valid Pattern
Marker Marker Marker
Invalid Pattern Invalid Pattern Invalid Pattern
Marker Marker Marker

PTT_PL7:
Lost4

Valid Pattern
Marker Pattern Lock Lost SP

Invalid Pattern Pattern Lock Lost PTT_R


Marker

(to all states,


Transmitter
causing transition to SP
Training (Disabled)
PTT_PL0:Idle)

Figure 123 – PTT_PL (phy layer transmitter training pattern lock) state machine

5.18.12.2 PTT_PL0:Idle state

5.18.12.2.1 State description

This is the initial state of this state machine.

Working Draft SAS Protocol Layer - 5 (SPL-5) 355


T10/BSR INCITS 554 Revision 11 18 January 2021

This state waits for a request to establish pattern lock.


Upon entry into this state, this state shall send a Disable Pattern Marker Detection message to the SP
receiver.
If this state receives a Start Pattern Lock Synchronization message, then this state shall send an Enable
Pattern Marker Detection message to the SP receiver.

5.18.12.2.2 Transition PTT_PL0:Idle to PTT_PL1:Acquire_Lock

This transition shall occur:


a) after sending an Enable Pattern Marker Detection message.

5.18.12.3 PTT_PL1:Acquire_Lock state

5.18.12.3.1 State description

This state waits for the SP receiver to receive a valid pattern marker.

5.18.12.3.2 Transition PTT_PL1:Acquire_Lock to PTT_PL2:Valid

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.4 PTT_PL2:Valid state

5.18.12.4.1 State description

This state waits for the SP receiver to receive the second pattern marker.

5.18.12.4.2 Transition PTT_PL2:Valid to PTT_PL1:Acquire_Lock

This transition shall occur:


a) after receiving an Invalid Pattern Marker message.

5.18.12.4.3 Transition PTT_PL2:Valid to PTT_PL3:Lock_Acquired

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.5 PTT_PL3:Lock_Acquired state

5.18.12.5.1 State description

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.

5.18.12.5.2 Transition PTT_PL3:Lock_Acquired to PTT_PL4:Lost1

This transition shall occur:


a) after receiving an Invalid Pattern Marker message.

356 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.18.12.6 PTT_PL4:Lost1 state

5.18.12.6.1 State description

This state is reached after one invalid pattern marker has been received.

5.18.12.6.2 Transition PTT_PL4:Lost1 to PTT_PL3:Lock_Acquired

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.6.3 Transition PTT_PL4:Lost1 to PTT_PL5:Lost2

This transition shall occur:


a) after receiving an Invalid Pattern Marker message.

5.18.12.7 PTT_PL5:Lost2 state

5.18.12.7.1 State description

This state is reached after two invalid pattern markers have been received.

5.18.12.7.2 Transition PTT_PL5:Lost2 to PTT_PL3:Lock_Acquired

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.7.3 Transition PTT_PL5:Lost2 to PTT_PL6:Lost3

This transition shall occur:


a) after receiving an Invalid Pattern Marker message.

5.18.12.8 PTT_PL6:Lost3 state

5.18.12.8.1 State description

This state is reached after three invalid pattern markers have been received.

5.18.12.8.2 Transition PTT_PL6:Lost3 to PTT_PL3:Lock_Acquired

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.8.3 Transition PTT_PL6:Lost3 to PTT_PL7:Lost4

This transition shall occur:


a) after receiving an Invalid Pattern Marker message.

5.18.12.9 PTT_PL7:Lost4 state

5.18.12.9.1 State description

This state is reached after four invalid pattern markers have been received.

Working Draft SAS Protocol Layer - 5 (SPL-5) 357


T10/BSR INCITS 554 Revision 11 18 January 2021

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.18.12.9.2 Transition PTT_PL7:Lost4 to PTT_PL3:Lock_Acquired

This transition shall occur:


a) after receiving a Valid Pattern Marker message.

5.18.12.9.3 Transition PTT_PL7:Lost4 to PTT_PL1:Acquire_Lock

This transition shall occur:


a) after sending a Pattern Lock Lost message.

5.19 PAPTA (phy layer active phy transmitter adjustment) state machines

5.19.1 PAPTA state machines overview

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.

5.19.2 SP transmitter additions for APTA

5.19.2.1 SP transmitter additions for APTA overview

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.

358 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 110 – SP transmitter binary primitive messages


Message received by the SP transmitter Binary primitive sent by the SP transmitter
Transmit APTA_ADJUST (Ready) APTA_ADJUST (READY)
Transmit APTA_ADJUST (Start) APTA_ADJUST (START)
Transmit APTA_ADJUST (Complete) APTA_ADJUST (COMPLETE)
Transmit APTA_ADJUST (Terminate) APTA_ADJUST (TERMINATE)
Transmit APTA_COEFFICIENT_1 (Updated) APTA_COEFFICIENT_1 (UPDATED)
Transmit APTA_COEFFICIENT_1 (Maximum) APTA_COEFFICIENT_1 (MAXIMUM)
Transmit APTA_COEFFICIENT_1 (Minimum) APTA_COEFFICIENT_1 (MINIMUM)
Transmit APTA_COEFFICIENT_1 (Increment) APTA_COEFFICIENT_1 (INCREMENT)
Transmit APTA_COEFFICIENT_1 (Decrement) APTA_COEFFICIENT_1 (DECREMENT)
Transmit APTA_COEFFICIENT_2 (Updated) APTA_COEFFICIENT_2 (UPDATED)
Transmit APTA_COEFFICIENT_2 (Maximum) APTA_COEFFICIENT_2 (MAXIMUM)
Transmit APTA_COEFFICIENT_2 (Minimum) APTA_COEFFICIENT_2 (MINIMUM)
Transmit APTA_COEFFICIENT_2 (Increment) APTA_COEFFICIENT_2 (INCREMENT)
Transmit APTA_COEFFICIENT_2 (Decrement) APTA_COEFFICIENT_2 (DECREMENT)
Transmit APTA_COEFFICIENT_3 (Updated) APTA_COEFFICIENT_3 (UPDATED)
Transmit APTA_COEFFICIENT_3 (Maximum) APTA_COEFFICIENT_3 (MAXIMUM)
Transmit APTA_COEFFICIENT_3 (Minimum) APTA_COEFFICIENT_3 (MINIMUM)
Transmit APTA_COEFFICIENT_3 (Increment) APTA_COEFFICIENT_3 (INCREMENT)
Transmit APTA_COEFFICIENT_3 (Decrement) APTA_COEFFICIENT_3 (DECREMENT)
Transmit APTA_COEFFICIENT_1_2 (Updated) APTA_COEFFICIENT_1_2 (UPDATED)
Transmit APTA_COEFFICIENT_1_2 (Maximum) APTA_COEFFICIENT_1_2 (MAXIMUM)
Transmit APTA_COEFFICIENT_1_2 (Minimum) APTA_COEFFICIENT_1_2 (MINIMUM)
Transmit APTA_COEFFICIENT_1_2 (Increment) APTA_COEFFICIENT_1_2 (INCREMENT)
Transmit APTA_COEFFICIENT_1_2 (Decrement) APTA_COEFFICIENT_1_2 (DECREMENT)
Transmit APTA_COEFFICIENT_2_3 (Updated) APTA_COEFFICIENT_2_3 (UPDATED)
Transmit APTA_COEFFICIENT_2_3 (Maximum) APTA_COEFFICIENT_2_3 (MAXIMUM)
Transmit APTA_COEFFICIENT_2_3 (Minimum) APTA_COEFFICIENT_2_3 (MINIMUM)
Transmit APTA_COEFFICIENT_2_3 (Increment) APTA_COEFFICIENT_2_3 (INCREMENT)
Transmit APTA_COEFFICIENT_2_3 (Decrement) APTA_COEFFICIENT_2_3 (DECREMENT)

Working Draft SAS Protocol Layer - 5 (SPL-5) 359


T10/BSR INCITS 554 Revision 11 18 January 2021

5.19.2.3 APTA Coefficient limits

5.19.2.3.1 APTA Coefficient limits overview

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.

5.19.2.3.2 APTA Coefficient request result of updated

5.19.2.3.2.1 APTA Coefficient request processing

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.

5.19.2.3.2.2 APTA Coefficient adjustment completes

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).

5.19.2.3.3 APTA Coefficient request result of maximum

5.19.2.3.3.1 APTA Coefficient request processing

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),

360 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

5.19.2.3.3.2 APTA Coefficient adjustment completes

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).

5.19.2.3.3.3 APTA No coefficient adjustment

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).

5.19.2.3.4 APTA Coefficient request result of minimum

5.19.2.3.4.1 APTA Coefficient request processing

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.

5.19.2.3.4.2 APTA Coefficient adjustment completes

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 361


T10/BSR INCITS 554 Revision 11 18 January 2021

5.19.2.3.4.3 APTA No coefficient adjustment

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).

5.19.3 SP receiver additions for APTA

5.19.3.1 SP receiver additions for APTA overview

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.

5.19.3.2 SP receiver messages when APTA binary primitives are received

The SP receiver sends messages to the PAPTA state machines as indicated in table 111 when binary
primitives are received.

Table 111 – SP receiver binary primitive messages (part 1 of 2)


Binary primitive received by the SP receiver Message sent to the PAPTA state machines
APTA_ADJUST (READY) Received APTA_ADJUST (Ready)
APTA_ADJUST (START) Received APTA_ADJUST (Start)
APTA_ADJUST (COMPLETE) Received APTA_ADJUST (Complete)
APTA_ADJUST (TERMINATE) Received APTA_ADJUST (Terminate)
APTA_ADJUST (RESERVED 1) None
APTA_ADJUST (RESERVED 2) None
APTA_ADJUST (RESERVED 3) None
APTA_COEFFICIENT_1 (UPDATED) Received APTA_COEFFICIENT_1 (Updated)
APTA_COEFFICIENT_1 (MAXIMUM) Received APTA_COEFFICIENT_1 (Maximum)
APTA_COEFFICIENT_1 (MINIMUM) Received APTA_COEFFICIENT_1 (Minimum)
APTA_COEFFICIENT_1 (INCREMENT) Received APTA_COEFFICIENT_1 (Increment)
APTA_COEFFICIENT_1 (DECREMENT) Received APTA_COEFFICIENT_1 (Decrement)
APTA_COEFFICIENT_1 (RESERVED 1) None
APTA_COEFFICIENT_2 (UPDATED) Received APTA_COEFFICIENT_2 (Updated)

362 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 111 – SP receiver binary primitive messages (part 2 of 2)


Binary primitive received by the SP receiver Message sent to the PAPTA state machines
APTA_COEFFICIENT_2 (MAXIMUM) Received APTA_COEFFICIENT_2 (Maximum)
APTA_COEFFICIENT_2 (MINIMUM) Received APTA_COEFFICIENT_2 (Minimum)
APTA_COEFFICIENT_2 (INCREMENT) Received APTA_COEFFICIENT_2 (Increment)
APTA_COEFFICIENT_2 (DECREMENT) Received APTA_COEFFICIENT_2 (Decrement)
APTA_COEFFICIENT_2 (RESERVED 1) None
APTA_COEFFICIENT_3 (UPDATED) Received APTA_COEFFICIENT_3 (Updated)
APTA_COEFFICIENT_3 (MAXIMUM) Received APTA_COEFFICIENT_3 (Maximum)
APTA_COEFFICIENT_3 (MINIMUM) Received APTA_COEFFICIENT_3 (Minimum)
APTA_COEFFICIENT_3 (INCREMENT) Received APTA_COEFFICIENT_3 (Increment)
APTA_COEFFICIENT_3 (DECREMENT) Received APTA_COEFFICIENT_3 (Decrement)
APTA_COEFFICIENT_3 (RESERVED 1) None
APTA_COEFFICIENT_1_2 (UPDATED) Received APTA_COEFFICIENT_1_2 (Updated)
APTA_COEFFICIENT_1_2 (MAXIMUM) Received APTA_COEFFICIENT_1_2 (Maximum)
APTA_COEFFICIENT_1_2 (MINIMUM) Received APTA_COEFFICIENT_1_2 (Minimum)
APTA_COEFFICIENT_1_2 (INCREMENT) Received APTA_COEFFICIENT_1_2 (Increment)
APTA_COEFFICIENT_1_2 (DECREMENT) Received APTA_COEFFICIENT_1_2 (Decrement)
APTA_COEFFICIENT_1_2 (RESERVED 1) None
APTA_COEFFICIENT_2_3 (UPDATED) Received APTA_COEFFICIENT_2_3 (Updated)
APTA_COEFFICIENT_2_3 (MAXIMUM) Received APTA_COEFFICIENT_2_3 (Maximum)
APTA_COEFFICIENT_2_3 (MINIMUM) Received APTA_COEFFICIENT_2_3 (Minimum)
APTA_COEFFICIENT_2_3 (INCREMENT) Received APTA_COEFFICIENT_2_3 (Increment)
APTA_COEFFICIENT_2_3 (DECREMENT) Received APTA_COEFFICIENT_2_3 (Decrement)
APTA_COEFFICIENT_2_3 (RESERVED 1) None

5.19.3.3 SP receiver messages that tune the attached SP transmitter

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 363


T10/BSR INCITS 554 Revision 11 18 January 2021

K) Adjustment Complete.

5.19.4 PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine

5.19.4.1 PAPTA_A_L state machine overview

The PAPTA_A_L state machine adjust the local SP transmitter.


This state machine:
a) waits to receive a request to start adjustment from the attached phy;
b) receives change request APTA binary primitives from the attached phy; and
c) requests the SP transmitter to:
A) adjust its coefficient values;
B) send APTA binary primitives that report the status of the SP transmitter; and
C) terminate APTA.
This state machine consists of the following states:
a) PAPTA_A_L0:Idle (see 5.19.4.2) (initial state);
b) PAPTA_A_L1:Wait For Start (see 5.19.4.3); and
c) PAPTA_A_L2:Adjust Local Transmitter (see 5.19.4.4).
This state machine receives the following request from the management application layer:
a) Terminate APTA.
This state machine receives the following request from the link layer:
a) Disable APTA.
This state machine sends the following confirmations to the management application layer:
a) Attached Phy Terminated APTA.
This state machine receives the following messages from the SP receiver:
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.
This state machine sends the following messages to the SP state machines:
a) Transmit APTA_ADJUST with an argument of Ready or Terminate;
b) Transmit APTA_COEFFICIENT_1 with an argument of Updated, Maximum, or Minimum;
c) Transmit APTA_COEFFICIENT_2 with an argument of Updated, Maximum, or Minimum;
d) Transmit APTA_COEFFICIENT_3 with an argument of Updated, Maximum, or Minimum;
e) Transmit APTA_COEFFICIENTS_1_2 with an argument of Updated, Maximum, or Minimum; and
f) Transmit APTA_COEFFICIENTS_2_3 with an argument of Updated, Maximum, or Minimum.

364 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 124 shows the PAPTA_A_L state machine.

PAPTA (phy layer active phy transmitter adjustment ) state machines

PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients )

PAPTA_A_L0:Idle

SAS_PHY_Ready Enable APTA

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

Received APTA_COEFFICIENT_2 Transmit APTA_COEFFICIENT_2

Received APTA_COEFFICIENT_3 Transmit APTA_COEFFICIENT_3

Received APTA _COEFFICIENT_1_2 Transmit APTA_COEFFICIENT_1_2

Received APTA _COEFFICIENT_2_3 Transmit APTA_COEFFICIENT_2_3

Received APTA_ADJUST Transmit APTA_ADJUST

Figure 124 – PAPTA_A_L (phy layer attached SP receiver adjusts the local SP transmitter coefficients)
state machine

5.19.4.2 PAPTA_A_L0:Idle state

5.19.4.2.1 State description

This is the initial state of this state machine.


This state waits for an Enable APTA message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 365


T10/BSR INCITS 554 Revision 11 18 January 2021

5.19.4.2.2 Transition PAPTA_A_L0:Idle to PAPTA_A_L1:Wait_for_Start

This transition shall occur:


a) after receiving an Enable APTA message.

5.19.4.3 PAPTA_A_L1:Wait_For_Start state

5.19.4.3.1 State description

This state waits for a Received APTA_ADJUST message with an argument of Start.

5.19.4.3.2 Transition PAPTA_A_L1:Wait_For_Start to PAPTA_A_L0:Idle

This transition shall occur after receiving:


a) a Disable APTA message; or
b) a Disable APTA request from the link layer.

5.19.4.3.3 Transition PAPTA_A_L1:Wait_For_Start to PAPTA_A_L2:Adjust_Local_Transmitter

This transition shall occur:


a) after receiving a Received APTA_ADJUST message with an argument of Start.

5.19.4.4 PAPTA_A_L2:Adjust_Local_Transmitter state

5.19.4.4.1 State description

Upon entry into this state, this state shall send:


a) a Transmit APTA_ADJUST message with an argument of Ready to the SP transmitter.
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.

5.19.4.4.2 Transition PAPTA_A_L2:Adjust_Local_Transmitter to PAPTA_A_L0:Idle

This transition shall occur after sending:


a) an Attached Phy Terminated APTA confirmation to the management application layer; or
b) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.

5.19.4.4.3 Transition PAPTA_A_L2:Adjust_Local_Transmitter to PAPTA_A_L1:Wait_For_Start

This transition shall occur:


a) after receiving a Received APTA_ADJUST message with an argument of Complete.

366 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.19.5 PAPTA_L_A (phy layer local SP receiver adjusts the attached SP transmitter coefficients)
state machine

5.19.5.1 PAPTA_L_A state machine overview

The PAPTA_L_A state machine adjust the attached SP transmitter coefficients.


The PAPTA_L_A state machine:
a) starts APTA;
b) sends messages to adjust the coefficients of the attached SP transmitter;
c) receives coefficient adjustment status messages from the attached SP transmitter; and
d) completes APTA or terminates APTA.
This state machine consists of the following states:
a) PAPTA_L_A0:Initialize (see 5.19.5.2) (initial state);
b) PAPTA_L_A1:Start (see 5.19.5.3); and
c) PAPTA_L_A2:Adjust_Attached_Transmitter (see 5.19.5.4).
This state machine receives the following requests from the management application layer:
a) Adjust Attached Transmitter; and
b) Terminate APTA.
This state machine receives the following request from the link layer:
a) Disable APTA.
This state machine sends the following confirmations to the management application layer:
a) Attached Phy Terminated APTA; and
b) Adjustment Complete.
This state machine receives the following message from the SP state machine:
a) Disable APTA.
This state machine sends the following messages to the SP receiver:
a) Get Next Coefficient.
This state machine receives the following messages from the SP receiver:
a) Next Coefficient;
b) Received APTA_ADJUST with an argument of Ready or Terminate;
c) Received APTA_COEFFICIENT_1;
d) Received APTA_COEFFICIENT_2;
e) Received APTA_COEFFICIENT_3;
f) Received APTA_COEFFICIENTS_1_2; and
g) Received APTA_COEFFICIENTS_2_3.

Working Draft SAS Protocol Layer - 5 (SPL-5) 367


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 125 shows the PAPTA_L_A state machine.

PAPTA (phy layer active phy transmitter adjustment) state machines

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

Terminate APTA Attached Phy Terminated APTA

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

5.19.5.2 PAPTA_L_A0:Initialize state

5.19.5.2.1 State description

This is the initial state of this state machine.


This state receives:
a) an Adjust Attached Transmitter request from the management application layer.

368 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.19.5.2.2 Transition from PAPTA_L_A0:Initialize to PAPTA_L_A1:Start

This transition shall occur:


a) after receiving an Adjust Attached Transmitter request from the management application layer.

5.19.5.3 PAPTA_L_A1:Start state

5.19.5.3.1 State description

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.

5.19.5.3.2 Transition from PAPTA_L_A1:Start to PAPTA_L_A0:Initialize

This transition shall occur after sending:


a) an Attached Phy Terminated APTA confirmation to the management application layer; or
b) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.

5.19.5.3.3 Transition from PAPTA_L_A1:Start to PAPTA_L_A2:Adjust_Attached_Transmitter

This transition shall occur:


a) after receiving a Received APTA_ADJUST message with an argument of Ready.

5.19.5.4 PAPTA_L_A2:Adjust_Attached_Transmitter state

5.19.5.4.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 369


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 112 – Mapping messages to the PAPTA_TC state machine

Argument of the Next Coefficient


Message sent to the PAPTA_TC state machine
message from the SP receiver

Increment Coefficient 1 L_A Adjust Coefficient 1 (Increment)

Decrement Coefficient 1 L_A Adjust Coefficient 1 (Decrement)

Increment Coefficient 2 L_A Adjust Coefficient 2 (Increment)

Decrement Coefficient 2 L_A Adjust Coefficient 2 (Decrement)

Increment Coefficient 3 L_A Adjust Coefficient 3 (Increment)

Decrement Coefficient 3 L_A Adjust Coefficient 3 (Decrement)

Increment Coefficients 1_2 L_A Adjust Coefficients 1_2 (Increment)

Decrement Coefficients 1_2 L_A Adjust Coefficients 1_2 (Decrement)

Increment Coefficients 2_3 L_A Adjust Coefficients 2_3 (Increment)

Decrement Coefficients 2_3 L_A Adjust Coefficients 2_3 (Decrement)

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.

370 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.19.5.4.2 Transition from PAPTA_L_A2:Adjust_Attached_Transmitter to PAPTA_L_A0:Initialize

This transition shall occur after sending:


a) an Attached Phy Terminated APTA confirmation to the management application layer;
b) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter; or
c) an Adjustment Complete confirmation to the management application layer and a Transmit
APTA_ADJUST message with an argument of Complete to the SP transmitter.

5.19.6 PAPTA_TC (phy layer SP receiver management of attached SP transmitter coefficient


adjustments) state machines

5.19.6.1 PAPTA_TC state machines overview

The PAPTA_TC state machines are as follows:


a) PAPTA_TC1 (local receiver requests adjustment to SP transmitter coefficient 1);
b) PAPTA_TC2 (local receiver requests adjustment to SP transmitter coefficient 2);
c) PAPTA_TC3 (local receiver requests adjustment to SP transmitter coefficient 3);
d) PAPTA_TC1_2 (local receiver requests adjustment to SP transmitter coefficients 1_2); and
e) PAPTA_TC2_3 (local receiver requests adjustment to SP transmitter coefficients 2_3).
The function of the PAPTA_TC state machines is to:
a) send adjustment request messages to the SP transmitter;
b) wait for a status response messages from the SP receiver;
c) wait for at least a Receiver Adaptation time (see table 113); and
d) report completion of the adjustment request.
These state machines receive the following requests from the management application layer:
a) Terminate APTA.
This state machine receives the following request from the link layer:
a) Disable APTA.
These state machines sends the following confirmations to the management application layer:
a) Attached Phy Terminated APTA.
These state machines receives the following message from the SP state machine:
a) Disable APTA.
This state machine shall maintain the timer listed in table 113.

Table 113 – PAPTA_TC state machine timers

Timer Initial value

Receiver Adaptation timer 1 ms

Working Draft SAS Protocol Layer - 5 (SPL-5) 371


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 126 shows the PAPTA_TC state machines.

PAPTA (phy layer active phy transmitter adjustment ) state machines


PAPTA_TC2_3 (local receiver requests adjustment to SP transmitter coefficient 2_3
PAPTA_TC1_2 (local receiver requests adjustment to SP transmitter coefficient 1_2
PAPTA_TC3 (local receiver requests adjustment to SP transmitter coefficient 3
PAPTA_TC2 (local receiver requests adjustment to SP transmitter coefficient 2

PAPTA_TC1 (local receiver requests adjustment to SP transmitter coefficient 1

PAPTA_TC1_0:Idle

PAPTA_L_A L_A Adjust


Coefficient 1

PAPTA_TC1:Request_Change

Disable APTA Attached Phy


Terminate APTA Terminated APTA

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

5.19.6.2 PAPTA_TC1 state machine

5.19.6.2.1 PAPTA_TC1 state machine overview

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).

372 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.19.6.2.2 PAPTA_TC1_0:Idle state

5.19.6.2.2.1 State description

This is the initial state of this state machine.


This state waits for:
a) a L_A Adjust Coefficient 1 message.

5.19.6.2.2.2 Transition PAPTA_TC1_0:Idle to PAPTA_TC1_1:Request_Change

This transition shall occur after:


a) a PAPTA_L_A:L_A Adjust Coefficient 1 message is received.

5.19.6.2.3 PAPTA_TC1_1:Request_Change state

5.19.6.2.3.1 State description

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.

5.19.6.2.3.2 Transition PAPTA_TC1_1:Request_Change to PAPTA_TC0:Idle

This transition shall occur after sending:


a) a Coefficient 1 Adjustment Done message to the PAPTA_L_A state machine;
b) an Attached Phy Terminated APTT confirmation to the management application layer; or
c) a Transmit APTA_ADJUST message with an argument of Terminate to the SP transmitter.

Working Draft SAS Protocol Layer - 5 (SPL-5) 373


T10/BSR INCITS 554 Revision 11 18 January 2021

This transition shall stop the Receiver Adaptation timer.

5.19.6.3 PAPTA_TC2 state machine

This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 114.

Table 114 – PAPTA_TC1 messages to substitute for PAPTA_TC2 messages

PAPTA_TC1 message PAPTA_TC2 message

L_A Adjust Coefficient 1 L_A Adjust Coefficient 2

Received APTA_COEFFICIENT_1 Received APTA_COEFFICIENT_2

Coefficient 1 Adjustment Done Coefficient 2 Adjustment Done

5.19.6.4 PAPTA_TC3 state machine

This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 115.

Table 115 – PAPTA_TC1 messages to substitute for PAPTA_TC3 messages

PAPTA_TC1 message PAPTA_TC3 message

L_A Adjust Coefficient 1 L_A Adjust Coefficient 3

Received APTA_COEFFICIENT_1 Received APTA_COEFFICIENT_3

Coefficient 1 Adjustment Done Coefficient 3 Adjustment Done

5.19.6.5 PAPTA_TC1_2 state machine

This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 116.

Table 116 – PAPTA_TC1 messages to substitute for PAPTA_TC1_2 messages

PAPTA_TC1 message PAPTA_TC1_2 message

L_A Adjust Coefficient 1 L_A Adjust Coefficient 1_2

Received APTA_COEFFICIENT_1 Received APTA_COEFFICIENT_1_2

Coefficient 1 Adjustment Done Coefficient 1_2 Adjustment Done

374 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

5.19.6.6 PAPTA_TC2_3 state machine

This state machine is identical to PAPTA_TC1 (see 5.19.6.2) except for the messages described in table 117.

Table 117 – PAPTA_TC1 messages to substitute for PAPTA_TC2_3 messages

PAPTA_TC1 message PAPTA_TC2_3 message

L_A Adjust Coefficient 1 L_A Adjust Coefficient 2_3

Received APTA_COEFFICIENT_1 Received APTA_COEFFICIENT_2_3

Coefficient 1 Adjustment Done Coefficient 2_3 Adjustment Done

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 375


T10/BSR INCITS 554 Revision 11 18 January 2021

6 Link layer

6.1 Link layer overview

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

6.2.1 Primitives overview

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.

Table 118 – Primitive format

Character Description

K28.5 control character (for primitives defined in this standard) or


First
K28.3 control character (for primitives defined by SATA).
Second Constant data character.
Third Constant data character.
Last Constant data character.

376 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.2.2 Primitive summary

Table 119 defines the deletable primitives.

Table 119 – Deletable primitives

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 377


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 120 defines the primitives not specific to the type of connection.

Table 120 – Primitives not specific to type of connection (part 1 of 4)

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).

378 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 120 – Primitives not specific to type of connection (part 2 of 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 379


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 120 – Primitives not specific to type of connection (part 3 of 4)

From b To b Primitive
Primitive Use a sequence
I E T I E T type c

OPEN_REJECT (BAD DESTINATION) E


OPEN_REJECT (CONNECTION RATE NOT
I E T
SUPPORTED)
OPEN_REJECT (NO DESTINATION) E
OPEN_REJECT (PATHWAY BLOCKED) E
OPEN_REJECT (PROTOCOL NOT SUPPORTED) I E T
OPEN_REJECT (RESERVED ABANDON 1)
OPEN_REJECT (RESERVED ABANDON 2)
I T
OPEN_REJECT (RESERVED ABANDON 3)
OPEN_REJECT (RESERVED CONTINUE 0) NoConn Single
OPEN_REJECT (RESERVED CONTINUE 1)
OPEN_REJECT (RESERVED INITIALIZE 0)
OPEN_REJECT (RESERVED INITIALIZE 1)
OPEN_REJECT (RESERVED STOP 0)
OPEN_REJECT (RESERVED STOP 1)
OPEN_REJECT (RETRY) I E T
OPEN_REJECT (STP RESOURCES BUSY) E T I
OPEN_REJECT (WRONG DESTINATION) I T
I T
OPEN_REJECT (ZONE VIOLATION) E
PS_ACK NoConn I E T I E T Redundant
PS_NAK NoConn I E T I E T Redundant
PS_REQ (PARTIAL) NoConn I E T I E T Redundant
PS_REQ (SLUMBER) NoConn I E T I E T Redundant
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).

380 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 120 – Primitives not specific to type of connection (part 4 of 4)

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 381


T10/BSR INCITS 554 Revision 11 18 January 2021

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

ACK SSP I T I T Single


CREDIT_BLOCKED SSP I T I T Single
DONE (ACK/NAK TIMEOUT) I T
DONE (CREDIT TIMEOUT) I T
DONE (NORMAL) I T
DONE (RESERVED 0) SSP I T Single
DONE (CLOSE) I T
DONE (RESERVED TIMEOUT 0)
DONE (RESERVED TIMEOUT 1)
EOF SSP, SMP I T I T Single
EXTEND_CONNECTION (NORMAL) I T
SSP I T Single
EXTEND_CONNECTION (CLOSE) E
Key:
SSP = SAS logical links, inside SSP connections
SMP = SAS logical links, inside SMP connections
I = SSP initiator ports and SMP initiator ports
E = expander ports
T = SSP target ports and SMP 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).

382 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

NAK (CRC ERROR) I T


NAK (RESERVED 0)
SSP I T Single
NAK (RESERVED 1)
NAK (RESERVED 2)
RRDY (NORMAL) I T
RRDY (RESERVED 0) SSP I T Single
RRDY (CLOSE) I E T
SOF SSP, SMP I T I T Single
Key:
SSP = SAS logical links, inside SSP connections
SMP = SAS logical links, inside SMP connections
I = SSP initiator ports and SMP initiator ports
E = expander ports
T = SSP target ports and SMP 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 383


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

384 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 385


T10/BSR INCITS 554 Revision 11 18 January 2021

6.2.3 Primitive encodings

Table 123 defines the primitive encoding for deletable primitives.

Table 123 – Primitive encoding for deletable primitives

Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)

ALIGN (0) K28.5 D10.2 D10.2 D27.3 BC4A4A7Bh


ALIGN (1) K28.5 D07.0 D07.0 D07.0 BC070707h
ALIGN (2) K28.5 D01.3 D01.3 D01.3 BC616161h
ALIGN (3) K28.5 D27.3 D27.3 D27.3 BC7B7B7Bh
Obsolete K28.5 D02.0 D16.7 D31.4 BC02F09Fh
Obsolete K28.5 D04.7 D31.4 D27.4 BCE49F9Bh
NOTIFY (ENABLE SPINUP) K28.5 D31.3 D31.3 D31.3 BC7F7F7Fh
NOTIFY (POWER LOSS EXPECTED) K28.5 D31.3 D07.0 D01.3 BC7F0761h
NOTIFY (RESERVED 1) K28.5 D31.3 D01.3 D07.0 BC7F6107h
Obsolete K28.5 D31.3 D10.2 D10.2 BC7F4A4Ah
OOB_IDLE K28.5 D07.0 D03.4 D13.4 BC07838Dh

386 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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)

AIP (NORMAL) K28.5 D27.4 D27.4 D27.4 BC9B9B9Bh


AIP (RESERVED 0) K28.5 D27.4 D31.4 D16.7 BC9B9FF0h
AIP (RESERVED 1) K28.5 D27.4 D16.7 D30.0 BC9BF01Eh
AIP (RESERVED 2) K28.5 D27.4 D29.7 D01.4 BC9BFD81h
AIP (RESERVED WAITING ON PARTIAL) K28.5 D27.4 D01.4 D07.3 BC9B8167h
AIP (WAITING ON CONNECTION) K28.5 D27.4 D07.3 D24.0 BC9B6718h
AIP (WAITING ON DEVICE) K28.5 D27.4 D30.0 D29.7 BC9B1EFDh
AIP (WAITING ON PARTIAL) K28.5 D27.4 D24.0 D04.7 BC9B18E4h
BREAK K28.5 D02.0 D24.0 D07.3 BC021867h
BREAK_REPLY K28.5 D02.0 D29.7 D16.7 BC02FDF0h
BROADCAST (CHANGE) K28.5 D04.7 D02.0 D01.4 BCE40281h
BROADCAST (SES) K28.5 D04.7 D07.3 D29.7 BCE467FDh
BROADCAST (EXPANDER) K28.5 D04.7 D01.4 D24.0 BCE48118h
BROADCAST (ASYNCHRONOUS EVENT) K28.5 D04.7 D04.7 D04.7 BCE4E4E4h
BROADCAST (RESERVED 3) K28.5 D04.7 D16.7 D02.0 BCE4F002h
BROADCAST (RESERVED 4) K28.5 D04.7 D29.7 D30.0 BCE4FD1Eh
BROADCAST (RESERVED CHANGE 0) K28.5 D04.7 D24.0 D31.4 BCE4189Fh
BROADCAST (RESERVED CHANGE 1) K28.5 D04.7 D27.4 D07.3 BCE49B67h
CLOSE (CLEAR AFFILIATION) K28.5 D02.0 D07.3 D04.7 BC0267E4h
CLOSE (NORMAL) K28.5 D02.0 D30.0 D27.4 BC021E9Bh
CLOSE (RESERVED 0) K28.5 D02.0 D31.4 D30.0 BC029F1Eh
CLOSE (RESERVED 1) K28.5 D02.0 D04.7 D01.4 BC02E481h
EOAF K28.5 D24.0 D07.3 D31.4 BC18679Fh
ERROR K28.5 D02.0 D01.4 D29.7 BC0281FDh
HARD_RESET K28.5 D02.0 D02.0 D02.0 BC020202h
OPEN_ACCEPT K28.5 D16.7 D16.7 D16.7 BCF0F0F0h
OPEN_REJECT (BAD DESTINATION) K28.5 D31.4 D31.4 D31.4 BC9F9F9Fh
OPEN_REJECT (CONNECTION RATE NOT
K28.5 D31.4 D04.7 D29.7 BC9FE4FDh
SUPPORTED)
OPEN_REJECT (NO DESTINATION) K28.5 D29.7 D29.7 D29.7 BCFDFDFDh
OPEN_REJECT (PATHWAY BLOCKED) K28.5 D29.7 D16.7 D04.7 BCFDF0E4h

Working Draft SAS Protocol Layer - 5 (SPL-5) 387


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 124 – Primitive encoding for primitives not specific to type of connection (part 2 of 2)

Character
Primitive Hexadecimal
1st 2nd 3rd 4th (last)

OPEN_REJECT (PROTOCOL NOT


K28.5 D31.4 D29.7 D07.3 BC9FFD67h
SUPPORTED)
OPEN_REJECT (RESERVED ABANDON 1) K28.5 D31.4 D30.0 D16.7 BC9F1EF0h
OPEN_REJECT (RESERVED ABANDON 2) K28.5 D31.4 D07.3 D02.0 BC9F6702h
OPEN_REJECT (RESERVED ABANDON 3) K28.5 D31.4 D01.4 D30.0 BC9F811Eh
OPEN_REJECT (RESERVED CONTINUE 0) K28.5 D29.7 D02.0 D30.0 BCFD021Eh
OPEN_REJECT (RESERVED CONTINUE 1) K28.5 D29.7 D24.0 D01.4 BCFD1881h
OPEN_REJECT (RESERVED INITIALIZE 0) K28.5 D29.7 D30.0 D31.4 BCFD1E9Fh
OPEN_REJECT (RESERVED INITIALIZE 1) K28.5 D29.7 D07.3 D16.7 BCFD67F0h
OPEN_REJECT (RESERVED STOP 0) K28.5 D29.7 D31.4 D07.3 BCFD9F67h
OPEN_REJECT (RESERVED STOP 1) K28.5 D29.7 D04.7 D27.4 BCFDE49Bh
OPEN_REJECT (RETRY) K28.5 D29.7 D27.4 D24.0 BCFD9B18h
OPEN_REJECT (STP RESOURCES BUSY) K28.5 D31.4 D27.4 D01.4 BC9F9B81h
OPEN_REJECT (WRONG DESTINATION) K28.5 D31.4 D16.7 D24.0 BC9FF018h
OPEN_REJECT (ZONE VIOLATION) K28.5 D31.4 D02.0 D27.4 BC9F029Bh
PS_ACK K28.5 D16.7 D27.4 D30.0 BCF09B1Eh
PS_NAK K28.5 D24.0 D27.4 D02.0 BC189B02h
PS_REQ (PARTIAL) K28.5 D07.3 D02.0 D04.7 BC6702E4h
PS_REQ (SLUMBER) K28.5 D30.0 D24.0 D02.0 BC1E1802h
PWR_ACK K28.5 D07.3 D07.3 D07.3 BC676767h
PWR_DONE K28.5 D07.3 D24.0 D29.7 BC6718FDh
PWR_GRANT K28.5 D07.3 D27.4 D16.7 BC679BF0h
PWR_REQ K28.5 D07.3 D29.7 D27.4 BC67FD9Bh
SOAF K28.5 D24.0 D30.0 D01.4 BC181E81h
TRAIN K28.5 D30.3 D30.3 D30.3 BC7E7E7Eh
TRAIN_DONE K28.5 D30.3 D30.3 D10.2 BC7E7E4Ah

388 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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)

ACK K28.5 D01.4 D01.4 D01.4 BC818181h


CREDIT_BLOCKED K28.5 D01.4 D07.3 D30.0 BC81671Eh
DONE (ACK/NAK TIMEOUT) K28.5 D30.0 D01.4 D04.7 BC1E81E4h
DONE (CREDIT TIMEOUT) K28.5 D30.0 D07.3 D27.4 BC1E679Bh
DONE (NORMAL) K28.5 D30.0 D30.0 D30.0 BC1E1E1Eh
DONE (RESERVED 0) K28.5 D30.0 D16.7 D01.4 BC1EF081h
DONE (CLOSE) K28.5 D30.0 D29.7 D31.4 BC1EFD9Fh
DONE (RESERVED TIMEOUT 0) K28.5 D30.0 D27.4 D29.7 BC1E9BFDh
DONE (RESERVED TIMEOUT 1) K28.5 D30.0 D31.4 D24.0 BC1E9F18h
EOF K28.5 D24.0 D16.7 D27.4 BC18F09Bh
EXTEND_CONNECTION (NORMAL) K28.5 D24.0 D29.7 D04.7 BC18FDE4h
EXTEND_CONNECTION (CLOSE) K28.5 D24.0 D01.4 D16.7 BC1881F0h
NAK (CRC ERROR) K28.5 D01.4 D27.4 D04.7 BC819BE4h
NAK (RESERVED 0) K28.5 D01.4 D31.4 D29.7 BC819FFDh
NAK (RESERVED 1) K28.5 D01.4 D04.7 D24.0 BC81E418h
NAK (RESERVED 2) K28.5 D01.4 D16.7 D07.3 BC81F067h
RRDY (NORMAL) K28.5 D01.4 D24.0 D16.7 BC8118F0h
RRDY (RESERVED 0) K28.5 D01.4 D02.0 D31.4 BC81029Fh
RRDY (CLOSE) K28.5 D01.4 D30.0 D02.0 BC811E02h
SOF K28.5 D24.0 D04.7 D07.3 BC18E467h

Working Draft SAS Protocol Layer - 5 (SPL-5) 389


T10/BSR INCITS 554 Revision 11 18 January 2021

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)

SATA_CONT K28.3 D10.5 D25.4 D25.4 7CAA9999h


SATA_DMAT K28.3 D21.5 D22.1 D22.1 7CB53636h
SATA_EOF K28.3 D21.5 D21.6 D21.6 7CB5D5D5h
SATA_ERROR a b K28.6 D02.0 D01.4 D29.7 DC0281FDh
SATA_HOLD K28.3 D10.5 D21.6 D21.6 7CAAD5D5h
SATA_HOLDA K28.3 D10.5 D21.4 D21.4 7CAA9595h
SATA_PMACK K28.3 D21.4 D21.4 D21.4 7C959595h
SATA_PMNAK K28.3 D21.4 D21.7 D21.7 7C95F5F5h
SATA_PMREQ_P K28.3 D21.5 D23.0 D23.0 7CB51717h
SATA_PMREQ_S K28.3 D21.4 D21.3 D21.3 7C957575h
SATA_R_ERR K28.3 D21.5 D22.2 D22.2 7CB55656h
SATA_R_IP K28.3 D21.5 D21.2 D21.2 7CB55555h
SATA_R_OK K28.3 D21.5 D21.1 D21.1 7CB53535h
SATA_R_RDY K28.3 D21.4 D10.2 D10.2 7C954A4Ah
SATA_SOF K28.3 D21.5 D23.1 D23.1 7CB53737h
SATA_SYNC K28.3 D21.4 D21.5 D21.5 7C95B5B5h
SATA_WTRM K28.3 D21.5 D24.2 D24.2 7CB55858h
SATA_X_RDY K28.3 D21.5 D23.2 D23.2 7CB55757h

a Except for SATA_ERROR, all values are defined by SATA.


b 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).

390 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.2.4 Primitive sequences

6.2.4.1 Primitive sequences overview

Table 127 summarizes the types of primitive sequences.

Table 127 – Primitive sequences

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.

If the phy is in the SAS dword mode, then:


a) any number of deletable primitives may be transmitted inside primitive sequences without affecting
the count or breaking the consecutiveness requirements unless prohibited by the primitives
description (e.g., TRAIN, TRAIN_DONE); and
b) rate matching deletable primitives shall be transmitted inside primitive sequences inside of
connections if rate matching is enabled (see 6.17.2).
If the phy is in the SAS packet mode, then:
a) any number of SPL packet payloads containing scrambled idle segments or deletable extended
binary primitives may be transmitted between the first primitive segment and the second primitive
segment of a primitive sequence (see 5.5.4) without affecting the count or breaking the
consecutiveness requirements unless prohibited by the primitive’s description; and
b) rate matching SPL packet payloads containing scrambled idle segments shall be transmitted between
the first primitive segment and the second primitive segment of a primitive sequence inside of
connections if rate matching is enabled (see 6.17.3).

6.2.4.2 Single primitive sequence

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 391


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

6.2.4.3 Repeated primitive sequence

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)

Note - Another dword is a dword other than a


deletable primitive or STP primitive X.

Figure 127 –Transmitting a repeated primitive sequence

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

Note - Another dword is a dword other than a


deletable primitive or STP primitive X.

Figure 128 –Receiving a repeated primitive sequence

6.2.4.4 Continued primitive sequence

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.

392 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.2.4.5 Extended primitive sequence

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 393


T10/BSR INCITS 554 Revision 11 18 January 2021

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

6.2.4.6 Triple primitive sequence

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.

394 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 395


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Primitive Primitive Primitive Primitive


segment segment segment segment
Receiver Receiver
detects detects

Figure 132 –Triple primitive sequences while in the SAS packet mode

6.2.4.7 Redundant primitive sequence

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;

396 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Receiver Receiver Receiver


detects detects detects

Figure 133 –Redundant primitive sequences while in the SAS dword mode

Working Draft SAS Protocol Layer - 5 (SPL-5) 397


T10/BSR INCITS 554 Revision 11 18 January 2021

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 Deletable primitives

6.2.5.1 ALIGN

ALIGNs are used for:


a) OOB signals (see 5.7);
b) character and dword alignment during the speed negotiation sequence (see 5.11.4.2);
c) physical link rate tolerance management after the phy reset sequence (see 6.5); and
d) rate matching during connections (see 6.17).
ALIGNs are deletable primitives (see 6.5).

398 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 128 defines the different versions of ALIGN primitives.

Table 128 – ALIGN primitives

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 399


T10/BSR INCITS 554 Revision 11 18 January 2021

6.2.5.2 NOTIFY

6.2.5.2.1 NOTIFY overview

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.

Table 129 – NOTIFY primitives

Primitive Description Reference

Specify to a SAS target device that it may


NOTIFY (ENABLE SPINUP) temporarily consume additional power (see 6.2.5.2.2
9.2.10).
Specify to a SAS target device that power loss
may occur within the time specified by the POWER
NOTIFY (POWER LOSS EXPECTED) 6.2.5.2.3
LOSS TIMEOUT field in the Shared Port Control
mode page (see 9.2.7.6).
NOTIFY (RESERVED 1) Reserved.

NOTIFY (RESERVED 1) shall be ignored by all devices.

6.2.5.2.2 NOTIFY (ENABLE SPINUP)

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.

400 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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)).

6.2.5.2.3 NOTIFY (POWER LOSS EXPECTED)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 401


T10/BSR INCITS 554 Revision 11 18 January 2021

6.2.6 Primitives not specific to type of connections

6.2.6.1 AIP (Arbitration in progress)

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.

Table 130 – AIP primitives

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)

See 6.16 for details on connections.

6.2.6.2 BREAK

BREAK is used to abort a connection request or break a connection.


See 6.16.7 and 6.16.11 for details on breaking connections.

6.2.6.3 BREAK_REPLY

BREAK_REPLY is used to confirm the receipt of a BREAK.


See 6.16.7 and 6.16.11 for details on breaking connections.

6.2.6.4 BROADCAST

BROADCASTs are used to notify SAS ports and expander devices in a SAS domain about certain events.

402 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The versions of BROADCAST representing different Broadcasts (see table 14 in 4.1.15) are defined in table
131.

Table 131 – BROADCAST primitives

Primitive Description

BROADCAST (CHANGE) Broadcast (Change)


BROADCAST (RESERVED CHANGE 0) Broadcast (Reserved Change 0)
BROADCAST (RESERVED CHANGE 1) Broadcast (Reserved Change 1)
BROADCAST (SES) Broadcast (SES)
BROADCAST (EXPANDER) Broadcast (Expander)
BROADCAST (ASYNCHRONOUS EVENT) Broadcast (Asynchronous Event)
BROADCAST (RESERVED 3) Broadcast (Reserved 3)
BROADCAST (RESERVED 4) Broadcast (Reserved 4)

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

6.2.6.5.1 CLOSE overview

CLOSE is used to close a connection.


The versions of CLOSE representing different reasons are defined in table 132.

Table 132 – CLOSE primitives

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)

See 6.16.9 for details on closing connections.

Working Draft SAS Protocol Layer - 5 (SPL-5) 403


T10/BSR INCITS 554 Revision 11 18 January 2021

6.2.6.5.2 CLOSE primitive parameter

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.

Table 133 – CLOSE primitive parameter format

Byte\
7 6 5 4 3 2 1 0
Bit

PARAMETER LENGTH
n HOP COUNT CONTROL 1 (10b)
(11b)

HIGH SMP OPEN


n+1 Reserved OPEN CONNECTION RATE
PRIORITY PRIORITY

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).

404 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.6 EOAF (End of address frame)

EOAF specifies the end of an address frame.


See 6.10 for details on address frames.

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

OPEN_ACCEPT specifies the acceptance of a connection request.


See 6.16 for details on connection requests.

6.2.6.10 OPEN_REJECT

6.2.6.10.1 OPEN_REJECT overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 405


T10/BSR INCITS 554 Revision 11 18 January 2021

All of the OPEN_REJECT versions defined in table 134 shall result in the originating port abandoning the
connection request.

Table 134 – Abandon-class OPEN_REJECT primitives

Primitive Originator Description


A connection request routes to a destination expander phy
OPEN_REJECT (BAD Expander in the same expander port as the source expander phy, and
DESTINATION) phy the expander port is using the direct routing method (see
4.5.7.1).
The requested connection rate is not supported on some
physical link on the pathway between the source phy and
destination phy. If a SAS initiator phy is directly attached to
a SAS target phy, then the requested connection rate is not
supported by the destination phy.
OPEN_REJECT
(CONNECTION RATE NOT Any phy
If the connection rate is 1.5 Gbit/s, then this shall be
SUPPORTED)
considered an abandon-class OPEN_REJECT.

If the connection rate is greater than 1.5 Gbit/s, then the


connection request shall be modified and reattempted as
described in 6.10.3.
Phy with destination SAS address exists, but the destination
phy does not support the requested initiator role, target role,
OPEN_REJECT (PROTOCOL protocol, initiator connection tag, or features (i.e., the values
Any phy
NOT SUPPORTED) in the INITIATOR PORT bit, the SAS PROTOCOL field, the
INITIATOR CONNECTION TAG field, and/or the FEATURES field in
the OPEN address frame are not supported).
OPEN_REJECT (RESERVED
ABANDON 1)
OPEN_REJECT (RESERVED Reserved. Process the same as OPEN_REJECT (WRONG
Unknown
ABANDON 2) DESTINATION).
OPEN_REJECT (RESERVED
ABANDON 3)
STP target port with destination SAS address exists, but the
STP target port supports affiliations and is not able to
establish an affiliation with this STP initiator port (e.g.,
because it has reached its maximum number of affiliations),
OPEN_REJECT (STP Destination
or the STP target port does not support affiliations and all of
RESOURCES BUSY) phy
the available affiliation contexts have been allocated to
other STP initiator ports (see 6.21.6). Process the same as
OPEN_REJECT (WRONG DESTINATION) for non-STP
connection requests.
The destination SAS address does not match the SAS
OPEN_REJECT (WRONG Destination
address of the SAS port to which the connection request
DESTINATION) phy
was delivered.
The connection request is from a zone group that does not
Zoning
OPEN_REJECT (ZONE have permission to access the zone group that contains the
expander
VIOLATION) destination phy according to the zone permission table of
phy
an unlocked zoning expander device.

406 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

All of the OPEN_REJECT versions defined in table 135 shall result in the originating port retrying the
connection request.

Table 135 – Retry-class OPEN_REJECT primitives

Primitive Originator Description


An expander device in the pathway is not configuring (see
4.7.4) and determines that:
a) there is no such destination phy;
b) the connection request routes to a destination expander
OPEN_REJECT (NO phy in the same expander port as the source expander
Expander phy
DESTINATION) a phy and the expander port is using the subtractive
routing method; or
c) the SAS address is valid for an STP target port in an
STP SATA bridge, but the initial Register - Device to
Host FIS has been received with an error (see 9.4.4.12).
OPEN_REJECT (PATHWAY An expander device determined the pathway was blocked by
Expander phy
BLOCKED) b higher priority connection requests.
OPEN_REJECT (RESERVED
CONTINUE 0) c
Unknown Reserved. Process the same as OPEN_REJECT (RETRY).
OPEN_REJECT (RESERVED
CONTINUE 1) c
OPEN_REJECT (RESERVED
INITIALIZE 0) a Reserved. Process the same as OPEN_REJECT (NO
Unknown
OPEN_REJECT (RESERVED DESTINATION).
INITIALIZE 1) a
OPEN_REJECT (RESERVED
STOP 0) b Reserved. Process the same as OPEN_REJECT (PATHWAY
Unknown
OPEN_REJECT (RESERVED BLOCKED).
STOP 1) b
Either:
a) a phy with the destination SAS address exists but is
temporarily not able to accept connections (see 6.20.1,
6.21.7, and 6.22.4);
b) an expander device in the pathway is configuring (see
4.7.4) and detects a connection that results in an
OPEN_REJECT (NO DESTINATION) if the condition is
Destination
not resolved (see 4.7.4 and 6.16.5.2.5);
OPEN_REJECT (RETRY) c phy or zoning
c) an expander device in the pathway is locked and detects
expander phy
a connection that results in an OPEN_REJECT (ZONE
VIOLATION) if the condition is not resolved (see 4.9.3.5
and 6.16.5.2.5);
d) an expander device in the pathway has reduced
functionality (see 4.5.8 and 6.16.5.2.5); or
e) a phy with the destination SAS address exists but is in
the slumber phy power condition (see 4.11.1.6).
a If the I_T Nexus Loss timer (see 7.2.2) is already running, then it continues running. If it is not already
running, then it is initialized and started. Stop retrying the connection request if the I_T Nexus Loss timer
expires.
b If the I_T Nexus Loss timer is already running, then it continues running. Stop retrying the connection
request if the I_T Nexus Loss timer expires.
c If the I_T Nexus Loss timer is already running, then it is stopped.

Working Draft SAS Protocol Layer - 5 (SPL-5) 407


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.2.6.10.2 OPEN_REJECT retry-class primitive parameter

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.

Table 136 – OPEN_REJECT retry-class primitive parameter format

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.

408 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 137 – TIME SCALE 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.

Table 138 – PS_REQ primitives

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

PWR_ACK specifies the positive acknowledgement of PWR_DONE, PWR_GRANT, or PWR_REQ (see


6.14).

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 409


T10/BSR INCITS 554 Revision 11 18 January 2021

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.18 SOAF (Start of address frame)

SOAF specifies the start of an address frame.


See 6.10 for details on address frames.

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 Primitives used only inside SSP and SMP connections

6.2.7.1 ACK (Acknowledge)

ACK specifies the positive acknowledgement of an SSP frame.


See 6.20.3 for details on SSP frame transmission.
ACK is not used during an SMP connection.

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.

410 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Table 139 – DONE primitives

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).

See 6.20.8 for details on closing SSP connections.

6.2.7.4 EOF (End of frame)

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

EXTEND_CONNECTION (NORMAL) is used to:


a) establish a persistent connection (see 4.1.13);
b) continue a persistent connection; and
c) indicate that an SSP port has no SSP frames to send.
EXTEND_CONNECTION (NORMAL) is not used during an SMP connection.
EXTEND_CONNECTION (CLOSE) may be originated by an expander port to initiate the closing of a
persistent connection. EXTEND_CONNECTION (CLOSE) is not used during an SMP connection.

6.2.7.6 NAK (Negative acknowledgement)

NAK specifies the negative acknowledgement of an SSP frame and the reason for doing so.

Working Draft SAS Protocol Layer - 5 (SPL-5) 411


T10/BSR INCITS 554 Revision 11 18 January 2021

The versions of NAK representing different reasons are defined in table 140.

Table 140 – NAK primitives

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)

See 6.20.3 for details on SSP frame transmission.


NAK is not used during an SMP connection.

6.2.7.7 RRDY (Receiver ready)

RRDY is used to increase SSP frame credit.


The versions of RRDY representing different reasons are defined in table 141.

Table 141 – RRDY primitives

Primitive Description

RRDY (NORMAL) Increase transmit SSP frame credit by one.


RRDY (CLOSE) Increase transmit SSP frame credit by one and transmit a DONE (CLOSE).
RRDY (RESERVED 0) Reserved. Processed the same as RRDY (NORMAL).

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.7.8 SOF (Start of frame)

SOF specifies the start 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.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.

412 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.2.8.2 SATA_PMACK, SATA_PMNAK, SATA_PMREQ_P, and SATA_PMREQ_S (Power


management acknowledgements and requests)

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.

6.2.8.3 SATA_HOLD and SATA_HOLDA (Hold and hold acknowledge)

See 6.21.4 for rules on STP flow control, which uses SATA_HOLD and SATA_HOLDA.

6.2.8.4 SATA_R_RDY and SATA_X_RDY (Receiver ready and transmitter ready)

When a SATA port has a frame to transmit, it transmits SATA_X_RDY and waits for SATA_R_RDY before
transmitting the frame.

6.2.8.5 SATA_EOF (End of 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 413


T10/BSR INCITS 554 Revision 11 18 January 2021

6.3 Binary primitives

6.3.1 Binary primitives overview

Table 142 defines the deletable binary primitives.

Table 142 – Deletable binary primitives (part 1 of 2)

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).

414 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 142 – Deletable binary primitives (part 2 of 2)

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 415


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

416 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.3.2 Binary primitive codes

Table 144 defines the binary primitive codes for deletable binary primitives.

Table 144 – 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

Working Draft SAS Protocol Layer - 5 (SPL-5) 417


T10/BSR INCITS 554 Revision 11 18 January 2021

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)

B_EOF (0) 31h 19h 71h DDh 311971DDh


B_EOF (0) (RESERVED 1) 31h 1Dh CDh 55h 311DCD55h
B_EOF (1) 31h 45h D5h D9h 3145D5D9h
B_EOF (1) (RESERVED 1) 31h 49h A5h BDh 3149A5BDh
B_EOF (1) (RESERVED 2) 31h 4Dh 79h 2Dh 314D792Dh
B_EOF (2) 31h E1h B1h E5h 31E1B1E5h
B_EOF (2) (RESERVED 1) 31h EDh 2Dh A1h 31ED2DA1h
B_EOF (2) (RESERVED 2) 31h EDh D1h 31h 31EDD131h
B_EOF (3) 35h 51h 49h F5h 355149F5h
B_EOF (3) (RESERVED 1) 35h 5Dh 25h C9h 355D25C9h
B_EOF (3) (RESERVED 2) 35h 5Dh B9h 11h 355DB911h

6.3.3 Binary primitive sequences

6.3.3.1 Binary primitive sequences overview

Table 146 summarizes the types of binary primitive sequences.

Table 146 – Binary primitive sequences

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.

6.3.3.2 Single binary primitive sequence

Binary primitives labeled as single binary primitive sequences (e.g., APTA_COEFFICIENT_1,


APTA_ADJUST) shall be transmitted one time to form a single binary primitive sequence.
Receivers count each binary primitive received that is labeled as a single binary primitive sequence as a
distinct single binary primitive sequence.

418 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 Deletable binary primitives

6.3.4.1 APTA_ADJUST

APTA_ADJUSTs are deletable binary primitives.


Table 147 defines the different versions of APTA_ADJUST binary primitives.

Table 147 – APTA_ADJUST binary primitives

Binary primitive Description

Indicates the SP receiver has completed adjusting the SP


APTA_ADJUST (COMPLETE)
transmitter coefficients and APTA is finished.
Indicates the SP receiver is ready to receive APTA change
APTA_ADJUST (READY)
request primitives.
APTA_ADJUST (START) Requests the start of APTA.
Requests the adjustment be terminated, or indicates that the
APTA_ADJUST (TERMINATE)
attached phy has terminated adjustment.
APTA_ADJUST (RESERVED 1) Reserved
APTA_ADJUST (RESERVED 2) Reserved
APTA_ADJUST (RESERVED 3) Reserved

6.3.4.2 APTA_COEFFICIENT_1

APTA_COEFFICIENT_1s are deletable binary primitives (see 6.5).

Working Draft SAS Protocol Layer - 5 (SPL-5) 419


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 148 defines the different versions of APTA_COEFFICIENT_1 binary primitives.

Table 148 – APTA_COEFFICIENT_1 binary primitives

Binary primitive Description

APTA_COEFFICIENT_1 (DECREMENT) Request the attached SP transmitter to decrement C1.


APTA_COEFFICIENT_1 (INCREMENT) Request the attached SP transmitter to increment C1.
Coefficient 1 has reached a maximum value or a value where
coefficient 1 is not able to be incremented as a result of a
APTA_COEFFICIENT_1 (MAXIMUM)
combination of coefficient 2 limit and coefficient 3 limit (see
SAS-4).
Coefficient 1 has reached a minimum value or a value where
coefficient 1 is not able to be decremented as a result of a
APTA_COEFFICIENT_1 (MINIMUM)
combination of coefficient 2 limit and coefficient 3 limit (see
SAS-4).
APTA_COEFFICIENT_1 (UPDATED) Coefficient 1 has completed the requested adjustment.
APTA_COEFFICIENT_1 (RESERVED 1) Reserved

6.3.4.3 APTA_COEFFICIENT_2

APTA_COEFFICIENT_2s are deletable binary primitives (see 6.5).


Table 149 defines the different versions of APTA_COEFFICIENT_2 binary primitives.

Table 149 – APTA_COEFFICIENT_2 binary primitives

Binary primitive Description

APTA_COEFFICIENT_2 (DECREMENT) Request the attached SP transmitter to decrement C2.


APTA_COEFFICIENT_2 (INCREMENT) Request the attached SP transmitter to increment C2.
Coefficient 2 has reached a maximum value or a value where
coefficient 2 is not able to be incremented as a result of a
APTA_COEFFICIENT_2 (MAXIMUM) combination of coefficient 1 limit and coefficient 2 limit or as a
result of a combination of coefficient 2 limit and coefficient 3
limit (see SAS-4).
Coefficient 2 has reached a minimum value or a value where
coefficient 2 is not able to be decremented as a result of a
APTA_COEFFICIENT_2 (MINIMUM) combination of coefficient 1 limit and coefficient 2 limit or as a
result of a combination of coefficient 2 limit and coefficient 3
limit (see SAS-4).
APTA_COEFFICIENT_2 (UPDATED) Coefficient 2 has completed the requested adjustment.
APTA_COEFFICIENT_2 (RESERVED 1) Reserved

6.3.4.4 APTA_COEFFICIENT_3

APTA_COEFFICIENT_3s are deletable binary primitives (see 6.5).

420 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 150 defines the different versions of APTA_COEFFICIENT_3 binary primitives.

Table 150 – APTA_COEFFICIENT_3 binary primitives

Binary primitive Description

APTA_COEFFICIENT_3 (DECREMENT) Request the attached SP transmitter to decrement C3.


APTA_COEFFICIENT_3 (INCREMENT) Request the attached SP transmitter to increment C3.
Coefficient 3 has reached a maximum value or a value where
coefficient 3 is not able to be incremented as a result of a
APTA_COEFFICIENT_3 (MAXIMUM)
combination of coefficient 1 limit and coefficient 2 limit (see
SAS-4).
Coefficient 3 has reached a minimum value or a value where
coefficient 3 is not able to be decremented as a result of a
APTA_COEFFICIENT_3 (MINIMUM)
combination of coefficient 1 limit and coefficient 2 limit (see
SAS-4).
APTA_COEFFICIENT_3 (UPDATED) Coefficient 3 has completed the requested adjustment.
APTA_COEFFICIENT_3 (RESERVED 1) Reserved

6.3.4.5 APTA_COEFFICIENT_1_2

APTA_COEFFICIENT_1_2s are deletable binary primitives (see 6.5).


Table 151 defines the different versions of APTA_COEFFICIENT_1_2 binary primitives.

Table 151 – APTA_COEFFICIENT_1_2 binary primitives

Binary primitive Description

Request the attached SP transmitter to decrement C1 and


APTA_COEFFICIENT_1_2 (DECREMENT)
decrement C2.
Request the attached SP transmitter to increment C1 and
APTA_COEFFICIENT_1_2 (INCREMENT)
increment C2.
Coefficient 1 or coefficient 2 has reached a maximum value
APTA_COEFFICIENT_1_2 (MAXIMUM) or a value where coefficient 1 or coefficient 2 is not able to be
incremented (see SAS-4).
Coefficient 1 or coefficient 2 has reached a minimum value or
APTA_COEFFICIENT_1_2 (MINIMUM) a value where coefficient 1 or coefficient 2 is not able to be
decremented (see SAS-4).
Coefficient 1 and coefficient 2 have both completed the
APTA_COEFFICIENT_1_2 (UPDATED)
requested adjustment.
APTA_COEFFICIENT_1_2 (RESERVED 1) Reserved

6.3.4.6 APTA_COEFFICIENT_2_3

APTA_COEFFICIENT_2_3s are deletable binary primitives (see 6.5).

Working Draft SAS Protocol Layer - 5 (SPL-5) 421


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 152 defines the different versions of APTA_COEFFICIENT_2_3 binary primitives.

Table 152 – APTA_COEFFICIENT_2_3 binary primitives

Binary primitive Description

Request the attached SP transmitter to decrement C2 and


APTA_COEFFICIENT_2_3 (DECREMENT)
decrement C3.
Request the attached SP transmitter to increment C2 and
APTA_COEFFICIENT_2_3 (INCREMENT)
increment C3.
Coefficient 2 or coefficient 3 has reached a maximum value
APTA_COEFFICIENT_2_3 (MAXIMUM) or a value where coefficient 2 or coefficient 3 is not able to be
incremented (see SAS-4).
Coefficient 2 or coefficient 3 has reached a minimum value or
APTA_COEFFICIENT_2_3 (MINIMUM) a value where coefficient 2 or coefficient 3 is not able to be
decremented (see SAS-4).
Coefficient 2 and coefficient 3 have both completed the
APTA_COEFFICIENT_2_3 (UPDATED)
requested adjustment.
APTA_COEFFICIENT_2_3 (RESERVED 1) Reserved

6.3.5 Binary primitives used only inside SSP and STP connections

6.3.5.1 B_EOF (binary end of frame)

B_EOF specifies the end of an SSP or STP frame.


See 6.20.3.3 for details on SSP frame transmission and 6.21.3 for details on STP frame transmission.
Table 153 defines the different versions of B_EOF binary primitives.

Table 153 – B_EOF binary primitives

Binary primitive Description

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

422 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.4 Extended binary primitives

6.4.1 Deletable extended binary primitives

Table 154 defines the deletable extended binary primitives.

Table 154 – Deletable extended binary primitives

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 423


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 155 defines the extended binary primitives not specific to the type of connection.

Table 155 – Extended binary primitives not specific to type of connection

From b To b Extended
binary
Extended binary primitive Use a primitive
I E T I E T sequence
type c

END_TRAIN SpNeg I E T I E T Single

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).

424 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.4.2 Extended binary primitive codes

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)

0 E2h a 89h E6h CAh


E289E6CA
1 17h 8Eh 64h 6Bh 178E646B
PACKET_SYNC
2 6Fh 2Ch DDh 99H 6F2CDD99
EA0F0443h
3 EAh 0Fh 04h 43h
0 A6h a FAh 03h C1h
A6FA03C1
1 50h 3Ch D1h 5Ch 503CD15C
PACKET_SYNC_LOST
2 F9h C2h 91h 6Ch F9C2916C
ED8DA53Bh
3 EDh 8Dh A5h 3Bh
0 AEh a 7Ch E1h 48h
AE7CE148
1 B6h F6h C6h D2h B6F6C6D2
LINK_RATE_MANAGEMENT
2 9Dh A9h FEh 40h 9DA9FE40
30144F34h
3 30h 14h 4Fh 34h
a
The PRIMITIVE SYNCHRONIZE SELECT field (see table 62) is set to 10b.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 425


T10/BSR INCITS 554 Revision 11 18 January 2021

6.4.3 Extended binary primitive sequences

6.4.3.1 Extended binary primitive sequences overview

Table 158 summarizes the types of extended binary primitive sequences.

Table 158 – Extended binary primitive sequences

Extended binary primitive


Transmit a Receive b Reference
sequence type

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.

6.4.3.2 Single 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 Deletable extended binary primitives

6.4.4.1 PACKET_SYNC

PACKET_SYNC results in the scrambler being initialized as described in 6.8.3.


PACKET_SYNC is used for:
a) periodic initialization of the scrambler (see 5.14.4.10)
b) establishing synchronization during Train_Rx-SNW (see 5.11.4.2.3.6); and
c) in combination with PACKET_SYNC_LOST to reestablish synchronization if a loss of synchronization
occurs.
PACKET_SYNC is a deletable extended binary primitive (see 6.5).

6.4.4.2 PACKET_SYNC_LOST

PACKET_SYNC_LOST requests the attached phy send a PACKET_SYNC.


PACKET_SYNC_LOST is used for:
a) recovery of scrambling phase;
b) establishing synchronization during Train_Rx-SNW (see 5.11.4.2.3.6); and
c) in combination with PACKET_SYNC to reestablish synchronization if a loss of synchronization occurs.
PACKET_SYNC_LOST is a deletable extended binary primitive (see 6.5).

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).

426 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

LINK_RATE_MANAGEMENT is a deletable extended binary primitive (see 6.5).

6.4.5 Extended binary primitives not specific to type of connections

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.

6.5 Physical link rate tolerance management

6.5.1 Physical link rate tolerance management overview

A phy may have three clocks:


a) an internal clock (e.g., based on a PLL clock generator);
b) a transmit clock (e.g., based on a PLL clock generator with SSC, if SSC is enabled). Used when
transmitting dwords on the physical link; and
c) a receive clock, derived from the input bit stream. Used when receiving dwords or SPL packets from
the physical link.
Although the receive clock has the same nominal fixed frequency as the internal clock, the receive clock may
differ from the internal clock frequency up to the physical link rate tolerance (see SAS-4). Over time:
a) if the receive clock is faster than the internal clock, then an overrun occurs if the phy’s receiver
receives a dword or an SPL packets and is not able to forward it to an internal receive buffer; or
b) if the receive clock is slower than the internal clock, then an underrun occurs if the phy’s receiver is
not able to obtain a dword or an SPL packets from an internal transmit buffer when needed.
To avoid overruns and underruns, the phy’s transmitters insert deletable primitives (see 6.2.5), deletable
binary primitives (see 6.3.4), or deletable extended binary primitives (see 6.4.4) in the dword stream. The
phy’s receivers may pass deletable primitives, deletable binary primitives, or deletable extended binary
primitives through to their internal buffers, or may strip them out when an overrun occurs. The phy’s receivers
add deletable primitives, deletable binary primitives, or deletable extended binary primitives when an underrun
occurs. The internal logic shall ignore all deletable primitives or deletable extended binary primitives that
arrive in the internal buffers.
Circuitry (e.g., an elasticity buffer) is required to absorb the slight differences in frequencies between the phys.
The frequency tolerance for a phy is specified in SAS-4. The depth of the elasticity buffer is vendor specific but
shall accommodate while in:
a) the SAS dword mode, the physical link rate tolerance management deletable primitive insertion
requirements in table 159 (see 6.5.2); or
b) the SAS packet mode, the physical link rate tolerance management deletable extended binary
primitive insertion requirements in 6.5.3.

Working Draft SAS Protocol Layer - 5 (SPL-5) 427


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 135 shows an example of an elasticity buffer if the phy is in the SAS dword mode.

Link layer state machine receivers


Elasticity buffer loading is (e.g., SL_IR, SL, XL, SSP, STP, SMP)
Deletable primitives are
only enabled after the phy
discarded by the elasticity
reset sequence completes

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)

after the elasticity buffer.

Received
(Primitive)

NOTIFY
Clock
(Invalid)

recovery
circuitry

Confirmations
Clock Clock
Dword Received
(Primitive)
Bits
Messages

from Dword Received SP_DWS


SP_DWS receiver
physical (Data Dword) state machine
link
Dword Received
(Invalid)

Figure 135 –Elasticity buffer with phys in the SAS dword mode

428 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 136 shows an example of an elasticity buffer if the phy is in the SAS packet mode.

Link layer state machine receivers


(e.g., SL_IR, SL, XL, SSP, STP, SMP)
Deletable extended binary
primitives and deletable
Elasticity buffer loading is binary primitives are

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

Clock Confirmations SPL Packet Clock


Bits Received (Valid)
from SPL Packet
Messages

physical SP_PS state


SP_PS receiver Received (Invalid)
link machine

Figure 136 –Elasticity buffer with phys in the SAS packet mode

Working Draft SAS Protocol Layer - 5 (SPL-5) 429


T10/BSR INCITS 554 Revision 11 18 January 2021

6.5.2 Phys originating dwords while in the SAS dword 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

Physical link rate Requirement

1.5 Gbit/s One deletable primitive within every 128 dwords a b c

3 Gbit/s Two deletable primitives within every 256 dwords a b d

6 Gbit/s Four deletable primitives within every 512 dwords a b

12 Gbit/s Eight deletable primitives within every 1 024 dwords e b


a These numbers account for the worst case clock frequency differences between the fastest phy
transmitter and the slowest phy receiver (e.g., a center-spreading expander phy originating dwords in an
STP connection at +2 400 ppm that are forwarded to a down-spreading SATA device with an internal
clock at -5 350 ppm). The difference of 7 750 ppm (i.e., 0.775 % or 1/129) is less than the deletable
primitive insertion rate of 1/128 (i.e., 7 813 ppm or 0.781 25 %), ensuring there are enough deletable
primitives for the phy’s receiver to delete without having to buffer dwords.
b 128 dwords at 1.5 Gbit/s, 256 dwords at 3 Gbit/s, 512 dwords at 6 Gbit/s, and 1 024 dwords at 12 Gbit/s
are each nominally 3 413.3 ns.
c Phys compliant with SAS-1.1 were required to insert one deletable primitive within every 2 048 dwords
at 1.5 Gbit/s.
d Phys compliant with SAS-1.1 were required to insert two deletable primitives within every 4 096 dwords
at 3 Gbit/s.
e These numbers account for the worst case clock frequency differences between the fastest phy
transmitter and the slowest phy receiver (e.g., a center-spreading expander phy originating dwords in an
STP connection at +1 100 ppm that are forwarded to a down-spreading SATA device with an internal
clock at -5 350 ppm). The difference of 6 450 ppm (i.e., 0.645 % or 1/155) is less than the deletable
primitive insertion rate of 1/128 (i.e., 7 813 ppm or 0.781 25 %), ensuring there are enough deletable
primitives for the phy’s receiver to delete without having to buffer dwords.

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.

430 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Physical link rate Requirement

Four primitive segments containing:


a) deletable extended binary primitives (see 6.3.4);
22.5 Gbit/s b) deletable binary primitives (see 6.4.4); or
c) deletable primitives (see 6.2.5),
within every 512 SPL packets a b
a These numbers account for the worst case clock frequency differences between the fastest phy
transmitter and the slowest phy receiver (e.g., a center-spreading expander phy originating dwords in an
STP connection at +600 ppm that are forwarded to a down-spreading SATA device with an internal
clock at -5 350 ppm). The difference of 5 950 ppm (i.e., 0.595 % or 1/168) is less than the deletable
extended binary primitive insertion rate of 1/128 (i.e., 7 813 ppm or 0.781 25 %), ensuring there are
enough deletable extended binary primitives for the phy’s receiver to delete without having to buffer
dwords.
b 512 SPL packets is nominally 3 413.3 ns.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 431


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

6.6 Idle physical links

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

6.7.1 CRC overview

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.

432 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 161 defines notation used in the following text describing CRC calculation. Arithmetic is modulo 2.

Table 161 – CRC notation and definitions

Notation Definition

A transformation over the non-negative integers (i.e., Z+):


T(i)
T(i) = i + 7 - 2 × (i mod 8), i  0, i  Z+
A polynomial representing the bits covered by the CRC:
F(x) = b0x(k-1) + b1x(k-2) + ... + b(k-2)x + b(k-1)
where:
k is the number of bits; and
bi describes a bit, where the bit index i denotes that bit bi is more significant than bit b(i+1).
F(x)
For example, if the frame, except for the CRC field, contains one data dword set to 516F3019h,
then:
F(x) = x30 + x28 + x24 + x22 + x21 + x19 + x18 + x17 + x16 + x13 + x12 + x4 + x3 + 1
(i.e., in finite field notation F(x) = 516F3019h)
F(x) with the bit positions of each byte transposed (i.e., bit 7 is bit 0, bit 6 is bit 1, etc.):
Ft(x) = bT(0)x(k-1) + bT(1)x(k-2) + ... + bT(k-2)x + bT(k-1)

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 433


T10/BSR INCITS 554 Revision 11 18 January 2021

6.7.2 CRC generation

The CRC is calculated from F(x) as follows:

xk × L(x) + x32 × Ft(x) = Q(x) × G(x) + R(x)


That is:
1) the frame F(x), not including the CRC field, is transposed into Ft(x);
2) the first 32 bits of the transposed frame are inverted (i.e., xk × L(x) is added);
3) 32 bits of zero are appended to the end (i.e., Ft(x) is multiplied by x32); and
4) this result is divided by the generator polynomial G(x) to find the remainder R(x).
The transmitter shall present M(x) to the 8b10b encoder:

M(x) = x32 × F(x) + L(x) + Rt(x)


That is, the inverted transposed remainder is appended to the end of the frame, then this result (i.e., M(x)) is
presented to the 8b10b encoder for transmission.
For the purposes of CRC computation, inverting the first 32 bits of a frame may be performed by one of the
following methods:
a) inverting the first 32 bits of the frame F(x) and seeding the CRC remainder register with 00000000h;
b) seeding the CRC remainder register with FFFFFFFFh; or
c) prepending the constant 62F52692h to F(x) and seeding the CRC remainder register with
00000000h.

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).

434 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 137 shows the CRC process for an address frame, an SSP frame and SMP frame.

31 Address frame, SSP frame, or SMP frame data dword 0


First Second Third Fourth
byte byte byte byte
31 24 23 16 15 8 7 0
Bit
Transpose

First Second Third Fourth


byte byte byte byte
24 31 16 23 8 15 0 7

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

31 Address frame, SSP frame, and SMP frame CRC output 0

Figure 137 –Address frame, SSP frame, and SMP frame CRC bit ordering

Working Draft SAS Protocol Layer - 5 (SPL-5) 435


T10/BSR INCITS 554 Revision 11 18 January 2021

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 STP frame data dword 0

(e.g., FIS Type)


Fourth Third Second First
byte byte byte byte
31 24 23 16 15 8 7 0

31 CRC generator 0

31 24 23 16 15 8 7 0
Fourth Third Second First
byte byte byte byte

31 STP frame CRC output 0

Figure 138 –STP frame CRC bit ordering

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.

6.7.3 CRC checking

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:

436 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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):

x32 × L(x) = Q’(x) × G(x) + R’(x)


Since L(x) and G(x) are known and constant, R’(x) is known and constant and is expected by the receiver after
calculating the CRC of a received frame.
From the previous two results:

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

6.8.1 Scrambling overview

Scrambling is used to reduce the probability of long strings of repeated patterns appearing on the physical
link.

6.8.2 Scrambling while in the SAS dword mode

If the phy is in the SAS dword mode, then:


a) data dwords shall be scrambled and the scrambler shall be advanced; and
b) non-data dwords (e.g., primitives) shall not be scrambled and shall not advance the scrambler.
Table 162 lists the scrambling for different types of data dwords.

Working Draft SAS Protocol Layer - 5 (SPL-5) 437


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 162 – Scrambling for different data dword types while in the SAS dword mode

Connection Data dword


Description of scrambling
state type

While a connection is not open and there are no other dwords to


Outside SAS idle dword
transmit, vendor specific scrambled data dwords shall be transmitted.
connections
Address frame After an SOAF, all data dwords shall be scrambled until the EOAF.
SSP frame After an SOF, all data dwords shall be scrambled until the EOF.
Inside SSP
connection While there are no other dwords to transmit, vendor specific scrambled
SSP idle dword
data dwords shall be transmitted.
SMP frame After an SOF, all data dwords shall be scrambled until the EOF.
Inside SMP
connection While there are no other dwords to transmit, vendor specific scrambled
SMP idle dword
data dwords shall be transmitted.
After a SATA_SOF, all data dwords shall be scrambled until the
STP frame
SATA_EOF.
Inside STP
connection After a SATA_CONT, vendor specific scrambled data dwords shall be
Continued
transmitted until a primitive other than a deletable primitive is
primitive
transmitted.

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:

G(x) = x16 + x15 + x13 + x4 + 1


The output of the pattern generator is 16 bits wide. For each data dword, two outputs of the pattern generator
are used as follows:
1) the first output of the generator is applied to the lower 16 bits (i.e., bits 15 to 0) of the 32-bit data
dword being transmitted or received; and
2) the second output of the generator is applied to the upper 16 bits (i.e., bits 31 to 16).

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.

Annex F.1 contains information on scrambling implementations.

438 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.8.3 Scrambling while in the SAS packet mode

If the phy is in the SAS packet mode, then:


a) the content of the SPL PACKET HEADER field shall not be scrambled and shall not advance the
scrambler;
b) all SPL frame segments (see 5.5.5), idle dword segments, and scrambled idle segments shall be
scrambled and the scrambler shall be advanced;
c) primitives, binary primitives, primitive parameters, and extended binary primitives shall not be
scrambled and the scrambler shall be advanced; and
d) the forward error correction information shall not be scrambled and shall not advance the scrambler.
The content of an SPL packet payload containing an SPL frame segment, an idle dword segment, or a
scrambled idle segment while in the SAS packet mode shall be XORed with a defined pattern to produce a
scrambled value that is transmitted on the physical link. The content of a received SPL frame segment, an idle
dword segment, or a scrambled idle segment shall be XORed with the same pattern to produce the original
SPL frame segment content, idle dword segment content, or scrambled idle segment content, provided there
are no transmission errors.
For scrambled idle segments, transmitters shall set:
a) the scrambled idle segment content to zero prior to scrambling; and
b) the SPL PACKET HEADER field (see table 53):
A) to 00b if the last bit of the previous SPL packet to be transmitted (i.e., byte 15, bit seven of the
packet payload) is set to one; or
B) to 11b if the last bit of the previous SPL packet to be transmitted (i.e., byte 15, bit seven of the
packet payload) is set to zero.
Receivers shall not decode the content of a scrambled idle segment.
The pattern that is XORed with the content of an SPL frame segment, idle dword segment, or a scrambled idle
segment is defined by the output of a linear feedback shift register implemented with the following polynomial:

G(x) = x23 + x21 + x16 + x8 + x5 + x2 + 1


The output of the pattern generator is eight bits wide. For each SPL frame segment, idle dword segment, and
scrambled idle segment, 16 outputs of the pattern generator are used as follows:
1) the first output of the pattern generator is applied to the first byte of the SPL frame segment, idle
dword segment, or scrambled idle segment being transmitted or received;
2) the second output of the pattern generator is applied to the second data byte of the SPL frame
segment, idle dword segment, or scrambled idle segment;
3) the next output of the pattern generator is applied to the next data byte of the SPL frame segment, idle
dword segment, or scrambled idle segment; and
4) repeat 3) until the 16th output of the pattern generator is applied to the 16th byte of the SPL frame
segment, idle dword segment, or scrambled idle segment.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 439


T10/BSR INCITS 554 Revision 11 18 January 2021

6.9 Bit order of CRC and scrambler

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.

Data dword Fourth SAS Fourth


(Dxx.y) (Dxx.y)
(e.g., in an byte primitive byte
address frame,
SSP frame, Third Third
(Dxx.y) (Dxx.y)
or byte byte
SMP frame)
Second Second
(Dxx.y) (Dxx.y) byte
byte
First First
(Dxx.y) (Kxx.y) byte
byte
(e.g., K28.5)

Bit Bit Bit Bit


Data dword Primitive 0
31 0 31

Bit
transpose
Bit CRC Bit
31 generator 0
Bit
transpose
Frame data
CRC dword dword

Bit mux Bit


31 0

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

440 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Data dword Primitive

Bit Bit
Descrambler
31 0

Bit Bit Bit Bit Bit


Data dword Primitive
transpose 31 0 31 0
Bit CRC Bit
31 generator 0
Bit Fourth Fourth
(Dxx.y) (Dxx.y)
transpose byte byte

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 441


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Fourth STP Fourth SATA


(Dxx.y) (Dxx.y)
byte data dword byte primitive
Third Third
(Dxx.y) (Dxx.y)
byte byte

Second (Dxx.y) Second


(Dxx.y)
byte byte
First First
(Dxx.y) (Kxx.y)
byte (e.g., FIS byte
Type) (e.g., K28.3)

Bit Bit Bit Bit


Data dword Primitive
31 0 31 0

Bit CRC Bit


31 generator 0
Frame
CRC dword data dword

Bit mux Bit


31 0

Bit Scrambler Bit


31 0

Z mux
(4th : 3rd : 2nd : 1st)
Bit Byte Bit
31 transpose 0
(1st : 2nd : 3rd : 4th)

Z Dword

STP dword to transmit+data/primitive indicator (Z)

Figure 141 –STP transmit path bit ordering

442 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 142 shows the STP receive path bit ordering.

STP dword received


(1st : 2nd : 3rd : 4th)
Byte
transpose
Data dword (4th : 3rd : 2nd : 1st)

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

CRC Error Occured Third Third


(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)

Figure 142 –STP receive path bit ordering

Working Draft SAS Protocol Layer - 5 (SPL-5) 443


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Scrambled idle segment d


Byte 4
16 bytes set to zero e
Bit Bit m B7 B6 B5 B4 B3 B2 B1 B0
31 0 u
mux x

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

444 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Data dword received + Header


31 24 23 16 15 8 7 0
1 0
B
7
... B B
0 7
... B B
0 7
... B B
0 7
... B
0
MSB LSB

Bit Bit
31 0
Descrambler

Bit
transpose
Bit CRC Bit
31 generator 0
Dword Bit
compare transpose

CRC Error Occured

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

6.10 Address frames

6.10.1 Address frames overview

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

Figure 145 –Address frame transmission

Working Draft SAS Protocol Layer - 5 (SPL-5) 445


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 163 – Address frame format

Byte\Bit 7 6 5 4 3 2 1 0

0 ADDRESS FRAME TYPE

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.

Table 164 – ADDRESS FRAME TYPE field

Code Address frame type Description

0h IDENTIFY Identification sequence


1h OPEN Connection request
All others Reserved

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.

446 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.10.2 IDENTIFY address frame

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.

Table 165 – IDENTIFY address frame format

Byte\Bit 7 6 5 4 3 2 1 0

0 Reserved SAS DEVICE TYPE ADDRESS FRAME TYPE (0h)

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)

••• DEVICE NAME

11

12

••• SAS ADDRESS

19

20 PHY IDENTIFIER

PERSISTENT POWER SLUMBER PARTIAL INSIDE ZPSDS REQUESTED BREAK_REPLY


21
CAPABLE CAPABLE CAPABLE CAPABLE PERSISTENT INSIDE ZPSDS CAPABLE

RETIMER APTA SMP PRIORITY PWR_DIS


22 Reserved
PRESENT CAPABLE CAPABLE CAPABLE

23

••• Reserved
27

28 (MSB)

••• CRC

31 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 447


T10/BSR INCITS 554 Revision 11 18 January 2021

The SAS DEVICE TYPE field indicates the type of SAS device type that contains the phy and is defined in table
166.

Table 166 – SAS DEVICE TYPE field

Code Description

001b End device


010b Expander device
011b Obsolete
All others Reserved

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.

Table 167 – REASON field

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.

448 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 449


T10/BSR INCITS 554 Revision 11 18 January 2021

The POWER CAPABLE field is defined in table 168.

Table 168 – POWER CAPABLE field

Code Description

00b The device containing the phy:


a) does not respond to PWR_GRANT with PWR_ACK, PWR_REQ with
PWR_ACK, or PWR_DONE with PWR_ACK; and
b) does not issue PWR_REQ or PWR_DONE.

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.

450 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.10.3 OPEN address frame

Table 169 defines the OPEN address frame format used for connection requests.

Table 169 – OPEN address frame format

Byte\Bit 7 6 5 4 3 2 1 0

INITIATOR
0 SAS PROTOCOL ADDRESS FRAME TYPE (1h)
PORT

1 FEATURES CONNECTION RATE

2 (MSB)
INITIATOR CONNECTION TAG
3 (LSB)

••• DESTINATION SAS ADDRESS

11

12

••• SOURCE SAS ADDRESS

19

20 SOURCE ZONE GROUP

21 PATHWAY BLOCKED COUNT

22 (MSB)
ARBITRATION WAIT TIME
23 (LSB)

CREDIT SEND
24 COMPATIBLE FEATURES (000000b)
ADVANCE EXTEND

25

••• MORE COMPATIBLE FEATURES (000000h)


27

28 (MSB)

••• CRC

31 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 451


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 170 – SAS PROTOCOL field

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.

Table 171 – FEATURES field

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.

Table 172 – CONNECTION RATE field

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

452 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 453


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 173 – ARBITRATION WAIT TIME field

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

If the end device originating the OPEN address frame:


a) is an initiator port (i.e., the INITIATOR PORT bit is set to one);
b) supports persistent connections (see 4.1.13); and
c) the SAS PROTOCOL field is set to 001b (i.e., SSP),
then a SEND EXTEND bit set to:
a) one specifies that the source phy is requesting the establishment of a persistent connection with the
destination phy (see 6.18); or
b) zero specifies that the source phy is requesting that a persistent connection not be established (see
6.18).
If the end device transmitting the OPEN address frame is a target port (i.e., the INITIATOR PORT bit is set to
zero), then the SEND EXTEND bit shall be set to zero.
If the end device receiving the OPEN address frame:
a) does not support persistent connections; or
b) the SAS PROTOCOL field is set to a value other than 001b,
then the SEND EXTEND bit shall be ignored.
If the SAS PROTOCOL field is set to 001b (i.e., SSP), then a CREDIT ADVANCE bit:
a) set to one specifies that the destination SSP phy that implements credit advance, advances credit as
defined in 4.1.14; or
b) set to zero specifies that the destination SSP phy shall not advance credit (see 4.1.14).
If the SAS PROTOCOL field is not set to 001b (i.e., SSP), then the CREDIT ADVANCE bit shall be ignored.

454 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

The CRC field is defined in 6.10.1.

6.11 Link reset sequence

6.11.1 Link reset sequence overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 455


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 146 shows two phys performing the identification sequence.

Time
Logical
Phy reset sequence Identification sequence
link 0
Three IDENTIFY
address frames

data dword 7 (i.e., third IDENTIFY)


data dword 0 (i.e., first IDENTIFY)

EOAF (i.e., third IDENTIFY)


SOAF (i.e., first IDENTIFY)

logical link 0 dword


logical link 0 dword
data dword

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)

logical link 0 dword


logical link 0 dword
logical link 0 dword
data dword 0
data dword

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 146 –Identification sequence

456 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 7 (i.e., third IDENTIFY)


data dword 0 (i.e., first IDENTIFY)

EOAF (i.e., third IDENTIFY)


SOAF (i.e., first IDENTIFY)
data dword COMINIT

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.

Figure 147 –Hard 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 457


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.11.2 Expander device handling of link reset sequences

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

6.12.1 SL_IR state machines overview

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.

Table 174 – SL_IR_IRC state machine timers

Timer Initial value

Receive Identify Timeout timer 1 ms

458 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 148 shows the SL_IR state machines.

SL_IR (link layer identification and hard reset) state machines


SL_IR_TIR (transmit IDENTIFY or HARD_RESET)
Transmit (to all states,
SL_IR_TIR1: SL_IR_TIR3: SL_IR_TIR4:
IDENTIFY causing
Idle Transmit_Hard_Reset Completed
Address Frame transition to
SL_IR_TIR1:
Idle)
Transmit
Transmit Idle Dword HARD_RESET
HARD_RESET Transmitted
Phy Layer
HARD_RESET Transmit Not Ready
Transmitted HARD_RESET
SL_IR_TIR2:Transmit_Identify
Phy Layer Ready Transmit
(SAS) Idle Dword

Transmit IDENTIFY Address Frame


IDENTIFY Address Identify
Frame Transmitted Transmitted

SL_IR_RIF (receive IDENTIFY address frame) (to all states,


SL_IR_RIF1: SL_IR_RIF2: SL_IR_RIF3: causing
Idle Receive_Identify_Frame Completed transition to
Invalid Dword Received SL_IR_RIF1:
ERROR Received Idle)
SOAF Address
Received Data Dword Received Frame Failed
EOAF Received Phy Layer
Start SL_IR CRC Error Occurred Identify Not Ready
Receiver
Received

SL_IR_IRC (identification and hard reset control) SL_IR_IRC3:


SL_IR_IRC1:Idle SL_IR_IRC2:Wait Completed (to all states,
causing
transition to
Start SL_IR HARD_RESET SL_IR_IRC1:
Receiver Received Idle)

Identify Timeout Phy Layer


Identification Not Ready
Sequence Complete
SL Phy Enabled
Phy Enable or HARD_RESET Received
Disabled Disable XL
SAS Link SL or XL
(Disable) Enable
StopDisable
SNTT SAS Link (Enable)

Figure 148 –SL_IR (link layer identification and hard reset) state machines

Working Draft SAS Protocol Layer - 5 (SPL-5) 459


T10/BSR INCITS 554 Revision 11 18 January 2021

6.12.2 SL_IR transmitter and receiver

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.

6.12.3 SL_IR_TIR (transmit IDENTIFY or HARD_RESET) state machine

6.12.3.1 SL_IR_TIR state machine overview

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.

460 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.12.3.2 SL_IR_TIR1:Idle state

6.12.3.2.1 State description

This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL_IR transmitter.

6.12.3.2.2 Transition SL_IR_TIR1:Idle to SL_IR_TIR2:Transmit_Identify

This transition shall occur after:


a) a Phy Layer Ready (SAS) confirmation is received; and
b) a Transmit IDENTIFY Address Frame request is received.

6.12.3.2.3 Transition SL_IR_TIR1:Idle to SL_IR_TIR3:Transmit_Hard_Reset

This transition shall occur after:


a) a Phy Layer Ready (SAS) confirmation is received; and
b) a Transmit HARD_RESET request is received.

6.12.3.3 SL_IR_TIR2:Transmit_Identify state

6.12.3.3.1 State description

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.

6.12.3.3.2 Transition SL_IR_TIR2:Transmit_Identify to SL_IR_TIR4:Completed

This transition shall occur after receiving three Identify Transmitted messages.

6.12.3.4 SL_IR_TIR3:Transmit_Hard_Reset state

6.12.3.4.1 State description

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.

6.12.3.4.2 Transition SL_IR_TIR3:Transmit_Hard_Reset to SL_IR_TIR4:Completed

This transition shall occur:


a) after sending a HARD_RESET Transmitted confirmation to the management application layer.

6.12.3.5 SL_IR_TIR4:Completed state

This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SL_IR transmitter.

Working Draft SAS Protocol Layer - 5 (SPL-5) 461


T10/BSR INCITS 554 Revision 11 18 January 2021

6.12.4 SL_IR_RIF (receive IDENTIFY address frame) state machine

6.12.4.1 SL_IR_RIF state machine overview

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.

6.12.4.2 SL_IR_RIF1:Idle state

6.12.4.2.1 State description

This state waits for an SOAF to be received from the physical link, indicating an address frame is arriving.

6.12.4.2.2 Transition SL_IR_RIF1:Idle to SL_IR_RIF2:Receive_Identify_Frame

This transition shall occur after:


a) a Start SL_IR Receiver confirmation is received; and
b) an SOAF Received message is received.

6.12.4.3 SL_IR_RIF2:Receive_Identify_Frame state

6.12.4.3.1 State description

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.

462 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.12.4.3.2 Transition SL_IR_RIF2:Receive_Identify_Frame to SL_IR_RIF3:Completed

This transition shall occur:


a) after sending an Identify Received message.

6.12.4.4 SL_IR_RIF3:Completed state

This state waits for a Phy Layer Not Ready confirmation.

6.12.5 SL_IR_IRC (identification and hard reset control) state machine

6.12.5.1 SL_IR_IRC state machine overview

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.

6.12.5.2 SL_IR_IRC1:Idle state

6.12.5.2.1 State description

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.

6.12.5.2.2 Transition SL_IR_IRC1:Idle to SL_IR_IRC2:Wait

This transition shall occur:


a) after a Start SL_IR Receiver confirmation is received.

6.12.5.3 SL_IR_IRC2:Wait state

6.12.5.3.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 463


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.12.5.3.2 Transition SL_IR_IRC2:Wait to SL_IR_IRC3:Completed

This transition shall occur:


a) after sending a HARD_RESET Received confirmation, Identify Timeout confirmation, or an
Identification Sequence Complete and a Phy Enabled confirmation.

6.12.5.4 SL_IR_IRC3:Completed state

This state waits for a Phy Layer Not Ready confirmation.

464 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.13 Entering a low phy power condition

Figure 149 shows the sequence to transition from the active phy power condition to a low phy power
condition.

Time (not to scale)

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.

Table 175 – PS_ACK pattern

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

6.14.1 Power source device

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 465


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.14.2 Power consumer device

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.

6.14.3 NOTIFY (ENABLE SPINUP) usage

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

466 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) receives an IDENTIFY address frame with the POWER CAPABLE field set to 00b.

6.14.4 SL_P_S (link layer power source device) state machine

6.14.4.1 SL_P_S state machine overview

The SL_P_S state machine consists of the following states:


a) SL_P_S_1:Idle (see 6.14.4.3) (initial state);
b) SL_P_S_2:Wait_Grant (see 6.14.4.4); and
c) SL_P_S_3:Wait_Done (see 6.14.4.5).
This state machine shall start in the SL_P_S_1:Idle state after power on.
This state machine receives the following requests from the management application layer:
a) Transmit NOTIFY;
b) Cancel; and
c) Power Use Granted.
This state machine sends the following confirmations to the management application layer:
a) Additional Power Request;
b) Power Done Timeout; and
c) Power Use Complete.
This state machine receives the following messages from the SL_CC link layer state machine and the XL link
layer state machine:
a) Idle State Condition (Active); and
b) Idle State Condition (Inactive).
This state machine sends the following messages to the SL_CC link layer state machine and the XL link layer
state machine:
a) Transmit Power Request (PWR_ACK); and
b) Transmit Power Request (PWR_GRANT).
Any message, request, or confirmation received by a state that is not referred to in the description of that state
shall be ignored.
This state machine shall maintain the timers listed in table 176.

Table 176 – SL_P_S state machine timers

Timer Initial value


ACK Timeout timer 1 ms
Depending on the protocol used by the port:
a) for expander ports, the value in the POWER DONE TIMEOUT field in the SMP
Power Done timer
REPORT GENERAL function (see 9.4.4.4); and
b) for SSP initiator ports, a vendor specific value.

Working Draft SAS Protocol Layer - 5 (SPL-5) 467


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 150 shows the SL_P_S state machine.

SL_P_S (link layer power source device ) state machine


SL_P_S_1:Idle

Transmit Notify Additional


Power Request
PWR_REQ Received
Transmit Notify
PWR_DONE Received
Transmit Power Request SL_CC
(PWR_ACK) XL

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

Power Use Complete


PWR_DONE Received
Power Done Timeout
PWR_ACK Received

Transmit Power Request SL_CC


(PWR_ACK) XL
Transmit Power Request SL_CC
(PWR_GRANT) XL

SL_CC Idle State Condition


XL (to all states)

Figure 150 –SL_P_S (link layer power source device) state machine

6.14.4.2 SL_P_S transmitter and SL_P_S receiver

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).

468 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.14.4.3 SL_P_S_1:Idle state

6.14.4.3.1 State description

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.

6.14.4.3.2 Transition SL_P_S_1:Idle to SL_P_S_2:Wait_Grant

This transition shall occur after sending:


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.

6.14.4.4 SL_P_S_2:Wait_Grant state

6.14.4.4.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 469


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.14.4.4.2 Transition SL_P_S_2:Wait_Grant to SL_P_S_1:Idle

This transition shall occur:


a) after receiving a Cancel request.

6.14.4.4.3 Transition SL_P_S_2:Wait_Grant to SL_P_S_3:Wait_Done

This transition shall occur:


a) after sending a Transmit Power Request (PWR_GRANT) message to the SL_CC0:Idle state or
XL0:Idle state.

6.14.4.5 SL_P_S_3:Wait_Done state

6.14.4.5.1 State description

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.

470 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.14.4.5.2 Transition SL_P_S_3:Wait_Done to SL_P_S_1:Idle

This transition shall occur after sending:


a) a Power Done Timeout confirmation to the management application layer; or
b) a Transmit Power Request (PWR_ACK) message to the SL_CC0:Idle state or XL0:Idle state and
sending a Power Use Complete confirmation to the management application layer.

6.14.5 SL_P_C (link layer power consumer device) state machine

6.14.5.1 SL_P_C state machine overview

The SL_P_C state machine consists of the following states:


a) SL_P_C_1:Idle (see 6.14.5.3) (initial state);
b) SL_P_C_2:Request_Power (see 6.14.5.4);
c) SL_P_C_3:Wait_Grant (see 6.14.5.5); and
d) SL_P_C_4:Wait_Done (see 6.14.5.6).
This state machine shall start in the SL_P_C_1:Idle state after power on.
This state machine receives the following requests from the SA_PC SCSI application layer state machine:
a) Request Additional Power; and
b) Power Use Complete.
This state machine sends the following confirmations to the SA_PC SCSI application layer state machine:
a) Power Use Granted; and
b) Power Request Failed.
This state machine receives the following confirmations from the SL_IR_IRC link layer state machine:
a) Phy Enabled; and
b) Phy Disabled.
This state machine receives the following messages from the SL_CC link layer state machine:
a) Idle State Condition (Active); and
b) Idle State Condition (Inactive).
This state machine sends the following messages to the SL_CC link layer state machine:
a) Transmit Power Request (PWR_ACK);
b) Transmit Power Request (PWR_REQ); and
c) Transmit Power Request (PWR_DONE).
Any message, request, or confirmation received by a state that is not referred to in the description of that state
shall be ignored.

Working Draft SAS Protocol Layer - 5 (SPL-5) 471


T10/BSR INCITS 554 Revision 11 18 January 2021

This state machine shall maintain the timers listed in table 177.

Table 177 – SL_P_C state machine timers

Timer Initial value

ACK Timeout timer 1 ms


The value in the POWER GRANT TIMEOUT field in the Shared Port Control mode page
Power Grant timer
(see 9.2.7.6)

472 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 151 shows the SL_P_C state machine.

SL_P_C (link layer power consumer device) state machine


SL_P_C_1:Idle
Request Additional Power
Power Use Granted
Notify Received

Phy Enabled
Phy Disabled

SL_P_C_2:
Request_Power

PWR_GRANT Received Power Request Failed


PWR_ACK Received Power Use Granted
Notify Received Transmit Power Request
SL_CC
(PWR_REQ)
Phy Disabled Transmit Power Request
SL_CC
(PWR_ACK)

SL_P_C_3:
Wait_Grant

Power Request Failed


PWR_GRANT Received
Power Use Granted

Transmit Power Request


SL_CC
(PWR_ACK)

SL_P_C_4:
Wait_Done

PWR_ACK Received Transmit Power Request


SL_CC
Power Use Complete (PWR_DONE)

Phy Disabled
Phy Enabled

SL_CC Idle State Condition


(to all states)

Figure 151 –SL_P_C (link layer power consumer device) state machine

Working Draft SAS Protocol Layer - 5 (SPL-5) 473


T10/BSR INCITS 554 Revision 11 18 January 2021

6.14.5.2 SL_P_C receiver

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.

6.14.5.3 SL_P_C_1:Idle state

6.14.5.3.1 State description

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.

6.14.5.3.2 Transition SL_P_C_1:Idle to SL_P_C_2:Request_Power

If requesting power is enabled, then this transition shall occur:


a) after receiving a Request Additional Power request.
If requesting power is disabled, then this transition shall occur after:
a) requesting power is enabled; and
b) receiving a Request Additional Power request.

6.14.5.4 SL_P_C_2:Request_Power state

6.14.5.4.1 State description

On entry this state shall:


a) send a Transmit Power Request (PWR_REQ) message to the SL_CC0:Idle state; and
b) initialize and start the ACK Timeout timer.
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).
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 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).

474 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

6.14.5.4.2 Transition SL_P_C_2:Request_Power to SL_P_C_1:Idle

This transition shall occur after sending:


a) a Power Request Failed confirmation to the SA_PC state machine; or
b) a Power Use Granted confirmation to the SA_PC state machine that resulted from the receipt
NOTIFY Received (Enable Spinup) message.
If a Phy Disabled confirmation is the cause of this transition, then this transition shall include a Phy Disabled
argument.

6.14.5.4.3 Transition SL_P_C_2:Request_Power to SL_P_C_3:Wait_Grant

This transition shall occur:


a) after receiving a PWR_ACK Received message.

6.14.5.4.4 Transition SL_P_C_2:Request_Power to SL_P_C_4:Wait_Done

This transition shall occur after sending:


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).

6.14.5.5 SL_P_C_3:Wait_Grant state

6.14.5.5.1 State description

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 475


T10/BSR INCITS 554 Revision 11 18 January 2021

6.14.5.5.2 Transition SL_P_C_3:Wait_Grant to SL_P_C_1:Idle

This transition shall occur:


a) after sending a Power Request Failed confirmation to the SA_PC state machine (see 9.2.10.2).

6.14.5.5.3 Transition SL_P_C_3:Wait_Grant to SL_P_C_4:Wait_Done

This transition shall occur after sending:


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).

6.14.5.6 SL_P_C_4:Wait_Done state

6.14.5.6.1 State description

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.

6.14.5.6.2 Transition SL_P_C_4:Wait_Done to SL_P_C_1:Idle

This transition shall occur after:


a) the vendor specific number of failed attempts to receive a PWR_ACK Received message; or
b) receiving a PWR_ACK Received message.

476 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.15 SAS domain changes (Broadcast (Change) usage)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 477


T10/BSR INCITS 554 Revision 11 18 January 2021

6.16 Connections

6.16.1 Connections overview

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.

6.16.2 Opening a connection

6.16.2.1 Connection request

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).

478 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

e) A source port should not attempt to


open more than 2 connections using
this wide link
f) A source port should not attempt
to open more than 1 connection
using this physical link
A source port
b) A source port should not g) A source port should not
considers all these
attempt to open more than attempt to open more than 1
recommendations
3 connections over this connection using this physical
simultaneously
wide link link

7-wide
Port A

Expander 3-wide Expander Port B


Port Z
device W device X

Port C
2-wide
a) A source port should not
attempt to open more than 7 4-wide
connections using this wide link

d) A source port should not 2-wide Expander Port D


attempt to open more than Port E device Y
2 connections using this
wide link
c) A source port should not attempt to
open more than 1 connection using
this physical link h) A source port should not attempt to
open more than 4 connections using
this wide link

Figure 152 –Example simultaneous connection recommendations for wide ports

In figure 152, some of the recommendations are combined as follows:


a) recommendations a), b), and e) together specify that port Z should not attempt to open more than two
connections to port C;
b) recommendations a), b), e), f), and g) together specify that if port Z has two connections open to ports
A, B, or X, then it should not attempt to open more than one connection to port C. If port Z has six
connections open to ports A, B, D, E, W, X, and Y, then port Z should not attempt to open more than
one connection to port C; and

Working Draft SAS Protocol Layer - 5 (SPL-5) 479


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.16.2.2 Results of a connection request

After a logical phy transmits an OPEN address frame, it shall expect one or more of the results listed in table
178.

Table 178 – Connection results of a connection request

Result Description

Arbitration in progress. While an expander device is trying to open a connection to


the selected destination port (e.g., while it is internally arbitrating for access to an
Receive AIP expander port), the expander device returns an AIP to the source phy. The source
phy shall reinitialize and restart its Open Timeout timer each time the source phy
receives an AIP.
Receive Connection request accepted. OPEN_ACCEPT is transmitted by the destination
OPEN_ACCEPT phy.
Connection request rejected. OPEN_REJECT is transmitted by the destination phy
or by an expander device in the partial pathway. The different versions are described
Receive
in 6.2.6.10. See 4.4.3 for I_T nexus loss handling. See 6.10.3 for handling of
OPEN_REJECT
OPEN_REJECT (CONNECTION RATE NOT SUPPORTED) for connection rates
greater than 1.5 Gbit/s.
If AIP has been received, then this indicates an overriding connection request.
Receive OPEN
If AIP has not yet been received, then this indicates two connection requests
address frame
crossing on the logical link. Arbitration fairness determines which one wins (see
6.16.4).
The destination phy or an expander device in the partial pathway may reply with a
Receive BREAK BREAK primitive sequence indicating the connection is not being established. See
4.4.3 for I_T nexus loss handling.
Open Timeout timer The source phy shall abort the connection request by transmitting a BREAK primitive
expires sequence (see 6.16.7). See 4.4.3 for I_T nexus loss handling.

6.16.3 SMP frame priority

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).

SMP frame priority is enabled on expander phy or a SAS phy that:


a) sets the SMP PRIORITY CAPABLE bit to one in the IDENTIFY address frame; and
b) receives an IDENTIFY address frame with the SMP PRIORITY CAPABLE bit set to one.

6.16.4 Arbitration fairness

SAS supports least-recently used arbitration fairness for connection requests.

480 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 481


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Bits 79 to 64 (79 is MSB) Bits 63 to 0 (0 is LSB)

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.

6.16.5 Arbitration inside an expander device

6.16.5.1 Expander logical phy arbitration requirements

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.

6.16.5.2 ECM arbitration requirements

6.16.5.2.1 ECM arbitration requirements overview

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).

482 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

When the ECM in an expander device receives a connection request:


1) if the destination SAS address is that of the expander device itself, then the ECM shall arbitrate for
access to its SMP target port;
2) if:
A) the destination SAS address matches the SAS address attached to one or more of the expander
logical phys; and
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,
then the ECM shall arbitrate for access to those expander logical phys;
3) if:
A) the destination SAS address matches an enabled SAS address in the expander route table for
one or more expander logical phys that is using the table routing method; and
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,
then the ECM shall arbitrate for access to those expander logical phys;
and
4) if:
A) at least one expander logical phy is using the subtractive routing method;
B) the request did not come from one of those expander logical phys; and
C) 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,
then the ECM shall arbitrate for access to one of those expander logical phys.
The ECM shall respond to each Request Path request by returning the following confirmations to the
requesting expander logical phy while processing the Request Path request:
a) Arbitrating (Normal) (see 6.16.5.2.2);
b) Arbitrating (Waiting On Partial) (see 6.16.5.2.2);
c) Arbitrating (Blocked On Partial) (see 6.16.5.2.2); and
d) Arbitrating (Waiting On Connection) (see 6.16.5.2.2).
The ECM shall complete responding to each Request Path request by returning one of the following
confirmations to the requesting expander logical phy:
a) Arb Won (see 6.16.5.2.3);
b) Arb Lost (see 6.16.5.2.4); or
c) Arb Reject (see 6.16.5.2.5).
If the ECM receives an Idle request from a phy that is involved in a connection before it has received a
Forward Close request from that phy and sent a Forward Close indication to that phy, then the ECR shall send
a Forward Break indication to the destination phy.

Working Draft SAS Protocol Layer - 5 (SPL-5) 483


T10/BSR INCITS 554 Revision 11 18 January 2021

6.16.5.2.2 Arbitrating confirmations

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.

6.16.5.2.3 Arb Won confirmation

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:

484 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Bit 85 (85 is MSB) Bit 84 Bits 83 to 68 Bits 67 to 4 Bits 3 to 0 (0 is LSB)

Arbitration Wait Time Source SAS


High Priority SMP Open Connection Rate
state machine Address
argument Priority argument argument
variable argument

6.16.5.2.4 Arb Lost confirmation

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.

6.16.5.2.5 Arb Reject confirmation

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 485


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

6.16.5.3 Arbitration status

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.

6.16.5.4 Partial Pathway Timeout timer

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

486 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

6.16.5.5 Pathway recovery

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.

Table 181 – Pathway recovery priority

Bits 71 to 64 (71 is MSB) Bits 63 to 0 (0 is LSB)

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.

6.16.6 BREAK handling

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 487


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.16.7 Aborting a connection request

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.

Table 182 – Results of aborting a connection request

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.

488 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Note - If the BREAK_REPLY method of responding to BREAK primitive sequences is disabled,


then phys transmit a BREAK primitive sequence rather than a BREAK_REPLY primitive
sequence in response to a BREAK primitive sequence.

Figure 153 –Aborting a connection request with a BREAK primitive sequence

Working Draft SAS Protocol Layer - 5 (SPL-5) 489


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Reset Open Timeout timer

Receive 1 ms of idle
dwords without AIP -
Open Timeout timer
expires
Transmit BREAK primitive sequence
Receive BREAK primitive sequence

Transmit BREAK primitive sequence


or BREAK_REPLY primitive sequence
Receive BREAK primitive sequence or
BREAK_REPLY primitive sequence
time time
Note - If the BREAK_REPLY method of responding to BREAK primitive sequences is disabled , then
phys transmit a BREAK primitive sequence rather than a BREAK _REPLY primitive sequence in
response to a BREAK primitive sequence .

Figure 154 –Connection request timeout example

6.16.8 Expander device request for an SSP connection close

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).

6.16.9 Closing a connection

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.

490 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 183 – Results of closing a connection

Result Description

Receive a CLOSE primitive


This confirms that the connection has been closed and provides a
sequence and CLOSE
CLOSE primitive parameter, if any, describing the highest fairness
primitive parameter (see
priority of the next open request of an attached expander device.
6.2.6.5.2), if any
Close Timeout timer expires The originating phy shall attempt to break the connection (see 6.16.11).

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.

Example 1: CLOSEs transmitted one at a time


transmitter receiver
CLOSE primitive
sequence

CLOSE primitive
sequence

time time

Example 2: CLOSEs transmitted simultaneously


transmitter receiver

CLOSE primitive CLOSE primitive


sequence sequence

time time

Figure 155 –Closing a connection example

6.16.10 Expander device closing a connection

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 491


T10/BSR INCITS 554 Revision 11 18 January 2021

B) SMP Open Priority;


C) Arbitration Wait Time;
D) Connection Rate; and
E) Open Destination SAS Address;
or
b) no 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 no arguments.

6.16.11 Breaking a connection

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.

Table 184 – Results of breaking a connection

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.

492 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.17 Rate matching

6.17.1 Rate matching overview

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.

6.17.2 Rate matching while in the SAS dword mode

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

Logical link Connection


Requirement
rate rate

1.5 Gbit/s 1.5 Gbit/s None


One deletable primitive within every two dwords that are not physical link
rate tolerance management deletable primitives (i.e., every overlapping
1.5 Gbit/s window of two dwords) (e.g., a repeating pattern of a deletable primitive
3 Gbit/s followed by a dword or a repeating pattern of a dword followed by a
deletable primitive)
3 Gbit/s None
Three deletable primitives within every four dwords that are not physical
1.5 Gbit/s link rate tolerance management deletable primitives (i.e., 3 in every
overlapping window of four dwords)
One deletable primitive within every two dwords that are not physical link
6 Gbit/s rate tolerance management deletable primitives (i.e., every overlapping
3 Gbit/s window of two dwords) (e.g., a repeating pattern of a deletable primitive
followed by a dword or a repeating pattern of a dword followed by a
deletable primitive)
6 Gbit/s None
Seven deletable primitives within every eight dwords that are not physical
1.5 Gbit/s link rate tolerance management deletable primitives (i.e., seven in every
overlapping window of eight dwords)
Three deletable primitives within every four dwords that are not physical
3 Gbit/s link rate tolerance management deletable primitives (i.e., three in every
overlapping window of four dwords)
12 Gbit/s
One deletable primitive within every two dwords that are not physical link
rate tolerance management deletable primitives (i.e., every overlapping
6 Gbit/s window of two dwords) (e.g., a repeating pattern of a deletable primitive
followed by a dword or a repeating pattern of a dword followed by a
deletable primitive)
12 Gbit/s None

Working Draft SAS Protocol Layer - 5 (SPL-5) 493


T10/BSR INCITS 554 Revision 11 18 January 2021

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

End Expander device Expander device End


device device
Phy Phy Phy Phy Phy Phy

(inserts (removes (inserts (removes


deletable deletable deletable deletable
primitives) primitives) primitives) primitives)

1.5 Gbit/s 1.5 Gbit/s 1.5 Gbit/s


connection connection connection
rate rate 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.

494 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.17.3 Rate matching while in the SAS packet mode

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

Logical link Connection


Requirement
rate rate

15 SPL packet payloads each containing a scrambled idle segment within


1.5 Gbit/s every 16 SPL packets (i.e., 15 in every overlapping window of 16 SPL
packet payloads)
Seven SPL packet payloads each containing a scrambled idle segment
3 Gbit/s within every eight SPL packets (i.e., seven in every overlapping window
of eight SPL packet payloads)
22.5 Gbit/s Three SPL packet payloads each containing a scrambled idle segment
6 Gbit/s within every four SPL packets (i.e., three in every overlapping window of
four SPL packet payloads)
One SPL packet payload containing a scrambled idle segment within
12 Gbit/s every two SPL packets (i.e., every overlapping window of two SPL packet
payloads)
22.5 Gbit/s None

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 495


T10/BSR INCITS 554 Revision 11 18 January 2021

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 A Physical link B Physical link C


22.5 Gbit/s 12 Gbit/s 22.5 Gbit/s
negotiated physical negotiated physical negotiated physical
link rate link rate link rate

End Expander device Expander device End


device device
Phy Phy Phy Phy Phy Phy

(inserts SPL (removes SPL (inserts SPL (removes SPL


packet payloads packet payloads packet payloads packet payloads
containing containing containing containing
scrambled scrambled scrambled scrambled
idle segments) idle segments) idle segments) idle segments)
12 Gbit/s 12 Gbit/s 12 Gbit/s
connection rate connection rate connection rate
Sample SPL packets on physical links (from left to right) during a 12 Gbit/s connection:
Time
Physical Scrambled Scrambled Scrambled Scrambled
SPL SPL SPL SPL
link A idle idle idle idle
segment packet 0 packet 1 packet 2 packet 3
(G5) segment segment segment

Physical
link B 4 dwords 4 dwords 4 dwords 4 words
(G4)

Physical Scrambled Scrambled Scrambled Scrambled


SPL SPL SPL SPL
link C idle idle idle idle
packet packet packet 0 segment packet 1 segment
(G5) segment segment

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.

496 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.18 SL (link layer for SAS logical phys) state machines

6.18.1 SL state machines overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 497


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 158, figure 159, and figure 160 show the SL state machines.

SL (link layer for SAS logical phys) state machines (part 1 of 3)


SL_CC0:Idle SL_CC (connection control) (part 1 of 3)
Open SL_CC8
Connection SL_CC9
SL_CC4:
Connection SL_CC1:ArbSel SL_RA SL_CC5:BreakWait DisconnectWait
Closed OPEN Address
Change Frame
Received Phy Power Received
Condition NOTIFY
NOTIFY Status SL_CC9
Received
Received Stop Arb Connection
Change Open Failed Closed
Phy Power
Condition Change Received SL_CC3:Connected

OPEN Connection Opened


SL_RA
Address Persistent
Frame Connection
Received SSP, Request Break Established
Enable SMP,
or STP Request Close Persistent
SL_IR Disable SSP_EM
SL_CC2:Selected Connection
SAS
Enable Disable
Link SSP
SSP (Enable)
(Enable) Connection
Opened Enable Disable
Transmit SMP
SL_CC8 SMP (Enable)
Broadcast
Enable Disable STP
Inbound
Connection STP (Enable)
Open Failed Rejected Advance
SSP_TCM
Credit
Retry Connection Closed
Transmit Enable Disable SSP
Broadcast SSP (Disable) SL_CC7:CloseSTP
Enable Disable SL_CC6:Break
SMP (Disable) SMP
Manage Power
Enable Conditions
Enable Disable
Disable SAS STP
Link STP (Disable) Connection (to all states)
(Disable) Closed
SL_IR SL_CC8 SL_CC8
Accept_Reject
(to all states, SL_CC9
Opens
causing
SL_P_C
transition to Idle State Condition (to all states)
SL_P_S
SL0:Idle)

Figure 158 –SL (link layer for SAS logical phys) state machines (1 of 3)

498 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

SL (link layer for SAS logical phys) state machines (part 2 of 3)

SL_RA (receive OPEN address frame) SL_CC (connection control) (part 2 of 3)

SL_RA SL_CC8:PS_Request

SOAF Received Open


Open Failed
Data Dword Connection
Change Received
Received Change Phy
EOAF Received Phy Power
OPEN Power Condition
CRC Error Condition Status
Address
Occurred SL_CC
Frame Transmitt Retry Transmit
Invalid Dword Received Broadcast Broadcast
Received
SL_CC0 Manage Phy Power
ERROR Received
Conditions
PS_NAK
Received SL_CC0
PS_ACK SL_CC2
Received
SL_CC6
PS_REQ
Received Transmit
PS_ACK Pattern
BROADCAST
Received Transmit PS_NAK
BREAK Transmit
Received PS_REQ
PS_ACK Pattern
Manage Power Transmitted
Conditions
(to all states) SL_CC9:PS_Quiet
Open Phy Power
Enable Disable Connection Condition Status
SAS Link (Disable)
SL_IR Change Phy
(to all states causing Power Condition
transition to SL0:Idle)
SL_CC1

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 499


T10/BSR INCITS 554 Revision 11 18 January 2021

SL (link layer for SAS logical phys ) state machines (part 3 of 3)


SL_CC (connection control ) (part 3 of 3)
SL_CC0:Idle
Enable APTA
Manage Phy Power Conditions
APTA Disabled
PS_ACK Pattern Transmitted Transmit Idle Dword
BROADCAST Received Transmit BREAK_REPLY
BREAK Received Transmit PS_ACK Pattern
PS_REQ Received Transmit PS_NAK
Transmit BROADCAST
SL_P_C
Transmit Power Request Transmit PWR_REQ
SL_P_S
Disable APTA Transmit PWR_ACK
Transmit PWR_DONE
SL_CC1:ArbSel
Transmit PWR_GRANT
BREAK SL_CC4:
Received DisconnectWait
OPEN_REJECT Transmit
Received BREAK Transmit
PS_NAK
Received CLOSE
OPEN_ACCEPT Transmit
Received Idle Dword CLOSE Transmit
AIP Received Idle Dword
Transmit
Received SL_CC5:BreakWait
SOAF/Data
BROADCAST Dwords/EOAF
Received BREAK Transmit
Received BREAK
SOAF/Data Dwords/ Transmit
EOAF Transmitted BREAK_REPLY
PS_REQ BREAK_REPLY Transmit
SL_CC2:Selected
Received Received Idle Dword
BREAK Transmit
Received Transmit
OPEN_REJECT
OPEN_REJECT SL_CC6:Break
NOTIFY (to all
Received states) Transmit
OPEN_ACCEPT Transmit
Enable BREAK
Disable Transmit
SAS SL_CC3:Connected BREAK_REPLY
Link SL_CC7:CloseSTP
(Disable) BREAK Transmit
SL_IR Received Idle Dword Transmit
(to all states, CLOSE CLOSE
causing transition Received
to SL_CC0:Idle)

Figure 160 –SL (link layer for SAS logical phys) state machines (3 of 3)

6.18.2 SL transmitter and receiver

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;

500 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 501


T10/BSR INCITS 554 Revision 11 18 January 2021

The SL receiver shall ignore all other dwords.


The SL transmitter relationship to other transmitters is defined in 4.3.2. The SL receiver relationship to other
receivers is defined in 4.3.3.

6.18.3 SL_RA (receive OPEN address frame) state machine

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.

6.18.4 SL_CC (connection control) state machine

6.18.4.1 SL_CC state machine overview

The SL_CC state machine consists of the following states:


a) SL_CC0:Idle (see 6.18.4.2) (initial state);
b) SL_CC1:ArbSel (see 6.18.4.3);
c) SL_CC2:Selected (see 6.18.4.4);
d) SL_CC3:Connected (see 6.18.4.5);
e) SL_CC4:DisconnectWait (see 6.18.4.6);
f) SL_CC5:BreakWait (see 6.18.4.7);
g) SL_CC6:Break (see 6.18.4.8);
h) SL_CC7:CloseSTP (see 6.18.4.9);
i) SL_CC8:PS_Request (see 6.18.4.10); and
j) SL_CC9:PS_Quiet (see 6.18.4.11).
This state machine receives the following requests from the management application layer:
a) Transmit Broadcast.

502 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 503


T10/BSR INCITS 554 Revision 11 18 January 2021

This state machine shall maintain the timers listed in table 187.

Table 187 – SL_CC state machine timers

Timer Initial value

Open Timeout timer 1 ms


Close Timeout timer 1 ms
Break Timeout timer 1 ms
Power Condition Request Timeout timer 1 ms
Idle timer 1 ms

This state machine shall maintain the state machine variables listed in table 188.

Table 188 – SL_CC state machine variables

State machine variable Description

Used to determine if the SCSI application layer is permitting SSP connection


Reject SSP Opens
requests to be accepted on this logical phy.
Used to determine if the management application layer is permitting SMP
Reject SMP Opens
connection requests to be accepted on this logical phy.
Used to determine if the ATA application layer is permitting STP connection
Reject STP Opens
requests to be accepted on this logical phy.
Used to determine if the management application layer is permitting this phy to
Accept Partial
enter a partial phy power condition.
Used to determine if the management application layer is permitting this phy to
Accept Slumber
enter a slumber phy power condition.

6.18.4.2 SL_CC0:Idle state

6.18.4.2.1 State description

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).

504 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 with any argument and this state has not sent a Transmit PS_ACK
Pattern message, then this state shall send a Transmit BROADCAST message with the same argument to the
SL transmitter. If a Transmit Broadcast request is received and this state has sent a Transmit PS_ACK Pattern
message to the SL transmitter, then this state shall send a Retry Transmit Broadcast confirmation to the
management application layer.
If the Transmit Broadcast request is received coincident with receiving either an Open Connection request or
an OPEN Address Frame Received message, then this state shall send a Transmit BROADCAST message
with the same argument to the SL transmitter before transitioning to another state.
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.
After this state receives an Enable Disable SAS Link (Enable) message, this state shall:
a) set the Reject SSP Opens state machine variable to a vendor specific default value (i.e., YES or NO);
b) set the Reject SMP Opens state machine variable to a vendor specific default value (i.e., YES or NO);
and
c) set the Reject STP Opens state machine variable to a vendor specific default value (i.e., YES or NO).
If this state 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 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 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 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 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 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 SL 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 SL transmitter.
If this state receives an Open Connection request and this state has sent a Transmit PS_ACK Pattern
message to the SL transmitter, then this state shall send an Open Failed (Low Phy Power Condition)
confirmation to the port layer.
If this state receives a Change Phy Power Condition request and this state has sent a Transmit PS_ACK
Pattern message to the SL transmitter, then this state shall send a Phy Power Condition Status (Retry Change
Phy Power Condition Request) confirmation to the management application layer.
This state shall ignore any Change Phy Power Condition (Exit Power Condition) requests.
If this state receives a:
a) Transmit Power Request (PWR_REQ) message, then this state shall send a Transmit PWR_REQ
message to the SL transmitter;
b) Transmit Power Request (PWR_ACK) message, then this state shall send a Transmit PWR_ACK
message to the SL transmitter;

Working Draft SAS Protocol Layer - 5 (SPL-5) 505


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.18.4.2.2 Transition SL_CC0:Idle to SL_CC1:ArbSel

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.

6.18.4.2.3 Transition SL_CC0:Idle to SL_CC2:Selected

This transition shall occur:


a) after receiving both an Enable Disable SAS Link (Enable) message and an OPEN Address Frame
Received message.
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.

506 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.18.4.2.4 Transition SL_CC0:Idle to SL_CC8:PS_Request

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.

6.18.4.2.5 Transition SL_CC0:Idle to SL_CC9:PS_Quiet

This transition shall occur:


a) after receiving a PS_ACK Pattern Transmitted message from the SL transmitter.
This transition shall include the Phy Power Condition (Enter Partial) argument or Phy Power Condition (Enter
Slumber) argument that corresponds to the PS_REQ Received message.
Before this transition, this state shall send an Idle State Condition (Inactive) 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).

6.18.4.3 SL_CC1:ArbSel state

6.18.4.3.1 State description

This state is used to make a connection request.


Upon entry into this state, this state shall:
1) request an OPEN address frame be transmitted by sending a Transmit SOAF/Data Dwords/EOAF
message to the SL transmitter with the dwords containing the OPEN address frame with its fields set
to the arguments received with the Open Connection request;
2) initialize and start the Open Timeout timer; and
3) request idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages to the SL
transmitter.
See 6.16 for details on rate matching when opening a connection.

Working Draft SAS Protocol Layer - 5 (SPL-5) 507


T10/BSR INCITS 554 Revision 11 18 January 2021

If this state receives an SOAF/Data Dwords/EOAF Transmitted message followed by an OPEN_ACCEPT


Received message and the SAS PROTOCOL field in the transmitted OPEN address frame was set to:
a) STP, then this state shall send a Connection Opened (STP, Source Opened) confirmation to the port
layer;
b) SSP, then this state shall send a Connection Opened (SSP, Source Opened) confirmation to the port
layer; or
c) SMP, then this state shall send a Connection Opened (SMP, Source Opened) confirmation to the port
layer.
After this state sends the Connection Opened confirmation the SMP connection, SSP connection, or SMP
connection has been opened between the source phy and the destination phy.
This state shall ignore OPEN_REJECT Received and OPEN_ACCEPT Received messages from the time a
Transmit SOAF/Data Dwords/EOAF message is sent to the SL transmitter until an SOAF/Data Dwords/EOAF
Transmitted message is received from the SL transmitter.
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 PS_REQ Received message is received, then this state shall send a Transmit PS_NAK to the SL
transmitter.
If an AIP Received message is received after requesting the OPEN address frame be transmitted, then this
state shall reinitialize and restart the Open Timeout timer. The state machine shall not enforce a limit on the
number of AIPs received.
If a Stop Arb request is received, then this state shall send an Open Failed (Arb Stopped) confirmation to the
port layer.
If there is no response to the OPEN address frame before the Open Timeout timer expires, then this state
shall send an Open Failed (Open Timeout Occurred) confirmation to the port layer.
If a BREAK Received message is received, then this state shall send an Open Failed (Break Received)
confirmation to the port layer.
If this state receives an OPEN_REJECT Received message listed in table 189 after transmitting the OPEN
address frame, then this state shall send the corresponding Open Failed confirmation listed in table 189 to the
port layer.

Table 189 – OPEN_REJECT Received message to Open Failed confirmation mapping (part 1 of 2)

OPEN_REJECT Received message Open Failed confirmation

OPEN_REJECT Received (Bad Destination) Open Failed (Bad Destination)

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 (Reserved Abandon 1) Open Failed (Reserved Abandon 1)

OPEN_REJECT Received (Reserved Abandon 2) Open Failed (Reserved Abandon 2)

OPEN_REJECT Received (Reserved Abandon 3) Open Failed (Reserved Abandon 3)

OPEN_REJECT Received (STP Resources Busy) Open Failed (STP Resources Busy)

OPEN_REJECT Received (Wrong Destination) Open Failed (Wrong Destination)

OPEN_REJECT Received (Zone Violation) Open Failed (Zone Violation)

508 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 189 – OPEN_REJECT Received message to Open Failed confirmation mapping (part 2 of 2)

OPEN_REJECT Received message Open Failed confirmation

OPEN_REJECT Received (No Destination) Open Failed (No Destination)

OPEN_REJECT Received (Pathway Blocked) Open Failed (Pathway Blocked)

OPEN_REJECT Received (Reserved Continue 0) Open Failed (Reserved Continue 0)

OPEN_REJECT Received (Reserved Continue 1) Open Failed (Reserved Continue 1)

OPEN_REJECT Received (Reserved Initialize 0) Open Failed (Reserved Initialize 0)

OPEN_REJECT Received (Reserved Initialize 1) Open Failed (Reserved Initialize 1)

OPEN_REJECT Received (Reserved Stop 0) Open Failed (Reserved Stop 0)

OPEN_REJECT Received (Reserved Stop 1) Open Failed (Reserved Stop 1)

OPEN_REJECT Received (Retry) Open Failed (Retry)

6.18.4.3.2 Transition SL_CC1:ArbSel to SL_CC0:Idle

This transition shall occur:


a) after sending an Open Failed confirmation.

6.18.4.3.3 Transition SL_CC1:ArbSel to SL_CC2:Selected

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 509


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.18.4.3.4 Transition SL_CC1:ArbSel to SL_CC3:Connected

This transition shall occur:


a) after sending a Connection Opened confirmation.
If the SAS PROTOCOL field in the transmitted OPEN address frame was set to:
a) STP, then this transition shall include an Open STP Connection argument;
b) SSP, then this transition shall include an Open SSP Connection argument; or
c) SMP, then this transition shall include an Open SMP Connection argument.
If persistent connections are supported (see 4.1.13.2) and:
a) the SEND EXTEND bit is set to one in the transmitted OPEN address frame and the INITIATOR PORT bit
was set to one in the transmitted OPEN address frame, then this transition shall include an Extend
Connection (Wait) argument;
b) the SEND EXTEND bit is set to zero in the transmitted OPEN address frame, then this transition shall
include an Extend Connection (Off) argument; or
c) the INITIATOR PORT bit was set to zero in the transmitted 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 transmitted OPEN address frame; and
b) the SAS PROTOCOL field is set to 001b (i.e., SSP) in the transmitted OPEN address frame,
then this transition shall include an Advance Credit (Transmitted) argument.

6.18.4.3.5 Transition SL_CC1:ArbSel to SL_CC5:BreakWait

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.

510 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.18.4.3.6 Transition SL_CC1:ArbSel to SL_CC6:Break

This transition shall occur after:


a) receiving an SOAF/Data Dwords/EOAF Transmitted message;
b) receiving a BREAK Received message; and
c) sending an Open Failed (Break Received) confirmation to the port layer.
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.

6.18.4.4 SL_CC2:Selected state

6.18.4.4.1 State description

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 511


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.18.4.4.2 Transition SL_CC2:Selected to SL_CC0:Idle

This transition shall occur after sending a Transmit OPEN_REJECT message to the SL transmitter.

6.18.4.4.3 Transition SL_CC2:Selected to SL_CC3:Connected

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.

6.18.4.4.4 Transition SL_CC2:Selected to SL_CC5:BreakWait

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.

6.18.4.4.5 Transition SL_CC2:Selected to SL_CC6:Break

This transition shall occur:


a) after a BREAK Received message is received.

6.18.4.5 SL_CC3:Connected state

6.18.4.5.1 State description

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).

512 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.18.4.5.2 Transition SL_CC3:Connected to SL_CC4:DisconnectWait

This transition shall occur:


a) if a Request Close message is received.

6.18.4.5.3 Transition SL_CC3:Connected to SL_CC5:BreakWait

This transition shall occur after:


a) sending a Connection Closed (Break Requested) confirmation to the port layer; or
b) receiving a NOTIFY Received (Power Loss Expected) message, 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 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
state shall include:
a) a Power Loss Expected argument.

6.18.4.5.4 Transition SL_CC3:Connected to SL_CC6:Break

This transition shall occur:


a) after sending a Connection Closed (Break Received) confirmation to the port layer.

Working Draft SAS Protocol Layer - 5 (SPL-5) 513


T10/BSR INCITS 554 Revision 11 18 January 2021

6.18.4.5.5 Transition SL_CC3:Connected to SL_CC7:CloseSTP

This transition shall occur:


a) if a CLOSE Received message is received during an STP connection.

6.18.4.6 SL_CC4:DisconnectWait state

6.18.4.6.1 State description

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.

6.18.4.6.2 Transition SL_CC4:DisconnectWait to SL_CC0:Idle

This transition shall occur:


a) after sending a Connection Closed (Normal) confirmation to the port layer.

6.18.4.6.3 Transition SL_CC4:DisconnectWait to SL_CC5:BreakWait

This transition shall occur after:


a) receiving a NOTIFY Received (Power Loss Expected) message; or
b) sending a Connection Closed (Close Timeout) confirmation to the port layer.
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
state shall include:
a) a Power Loss Expected argument.

6.18.4.6.4 Transition SL_CC4:DisconnectWait to SL_CC6:Break

This transition shall occur:


a) after sending a Connection Closed (Break Received) confirmation to the port layer.

514 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.18.4.7 SL_CC5:BreakWait state

6.18.4.7.1 State description

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.

6.18.4.7.2 Transition SL_CC5:BreakWait to SL_CC0:Idle

This transition shall occur after:


a) receiving a BREAK_REPLY Received message if the BREAK_REPLY method of responding to
received BREAK primitive sequences is enabled (see 6.16.6);
b) receiving a BREAK Received message if the BREAK_REPLY method of responding to received
BREAK primitive sequences is disabled (see 6.16.6); or
c) the Break Timeout timer expires.

6.18.4.8 SL_CC6:Break state

6.18.4.8.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 515


T10/BSR INCITS 554 Revision 11 18 January 2021

6.18.4.8.2 Transition SL_CC6:Break to SL_CC0:Idle

This transition shall occur:


a) after sending a Transmit BREAK message or a Transmit BREAK_REPLY message to the SL
transmitter.

6.18.4.9 SL_CC7:CloseSTP state

6.18.4.9.1 State description

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.

6.18.4.9.2 Transition SL_CC7:CloseSTP to SL_CC0:Idle

This transition shall occur:


a) after sending a Connection Closed (Normal) confirmation to the port layer.

6.18.4.10 SL_CC8:PS_Request state

6.18.4.10.1 State description

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.

516 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.18.4.10.2 Transition SL_CC8:PS_Request to SL_CC9:PS_Quiet

This transition shall occur after:


a) receiving a PS_ACK Pattern Transmitted message from the SL transmitter; or
b) receiving a PS_ACK Received message.
This transition shall include the:
a) Phy Power Condition argument.

6.18.4.10.3 Transition SL_CC8:PS_Request to SL_CC0:Idle

This transition shall occur after:


a) sending a Transmit PS_NAK message to the SL transmitter;
b) receiving a PS_NAK Received message;
c) a BREAK Received message is received and the BREAK_REPLY method of responding to received
BREAK primitive sequences is disabled; or
d) the Power Condition Request Timeout timer expires.

6.18.4.10.4 Transition SL_CC8:PS_Request to SL_CC2:Selected

This transition shall occur:


a) after receiving an OPEN Address Frame Received message.

6.18.4.10.5 Transition SL_CC8:PS_Request to SL_CC6:Break

This transition shall occur:


a) after receiving a BREAK Received message and the BREAK_REPLY method of responding to
received BREAK primitive sequences is enabled.

Working Draft SAS Protocol Layer - 5 (SPL-5) 517


T10/BSR INCITS 554 Revision 11 18 January 2021

6.18.4.11 SL_CC9:PS_Quiet state

6.18.4.11.1 State description

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.

6.18.4.11.2 Transition SL_CC9:PS_Quiet to SL_CC0:Idle

This transition shall occur:


a) after a Phy Layer Ready (SAS) confirmation is received; and
b) an Open Connection request has not been received.

6.18.4.11.3 Transition SL_CC9:PS_Quiet to SL_CC1:ArbSel

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.

518 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.19 XL (link layer for expander logical phys) state machine

6.19.1 XL state machine overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 519


T10/BSR INCITS 554 Revision 11 18 January 2021

This state machine shall maintain the timers listed in table 190.

Table 190 – XL state machine timers

Timer Initial value

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.

Table 191 – XL state machine variable

State machine variable Description

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.

520 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 161 shows several states in the XL state machine.

XL (link layer for expander logical phys ) state machine (part 1 of 4)

XL0:Idle XL9:Break

Phy Power XL3:Open_Confirm_Wait


Change Phy Condition Status
Power Condition Enable APTA XL6:Open_Response_Wait
Transmit APTA Disabled
Broadcast
Disable APTA XL11:PS_Request Manage
Broadcast Power
Phy Layer Event Notify Conditions
Not Pause Phy (to all states)
Ready Retry XL1:Request _Path
Transmit
SATA Broadcast (to all states,
Transmit AIP
Spinup Hold causing
XL5:Forward_Open Transmit Idle transition to
Phy Status
Dword XL0:Idle)
BREAK Received
SL_IR
SATA Port Idle State Condition SL_P_S
Selector Change XL7:Connected Enable
Disable
XL8:Close_Wait SAS
Manage Phy Link
Forward Open Request Path
Power (Disable)
Forward
Conditions
Open
Enable Arbitrating
Idle XL2:Request_Open
SL_IR Disable Arb Reject
SAS
Link Backoff Retry Arb Won
XL5:Forward_Open Transmit
(Enable) Arb Lost BREAK
XL3:Open_Confirm_Wait Partial Pathway Transmit
Timeout Timer BREAK_REPLY
XL6:Open_Response_Wait
Expired
XL3:Open_Confirm_Wait
XL6:Open_Response_Wait
XL8:Close_Wait
XL10:Break_Wait XL11:PS_Request

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 521


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 162 shows additional states in the XL state machine.

XL (link layer for expander logical phys ) state machine (part 2 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)

Backoff Reverse Path

Broadcast Event Notify


Forward Break
XL0:Idle
Forward Dword XL1:Request_Path
XL7:Connected
XL9:Break
XL10:Break_Wait

Figure 162 –XL (link layer for expander logical phys) state machine (2 of 4)

522 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 163 shows additional states in the XL state machine.

XL (link layer for expander logical phys ) state machine (part 3 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

Manage Phy Phy Layer Backoff Retry


Power Ready (SAS)
Manage Phy
Conditions
Forward Open Power
Conditions

Figure 163 –XL (link layer for expander logical phys) state machine (3 of 4)

Working Draft SAS Protocol Layer - 5 (SPL-5) 523


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 164 shows additional states in the XL state machine.

XL (link layer for expander logical phys ) state machine (part 4 of 4)

XL0:Idle
XL3:Open_Confirm_Wait

PS_REQ Received Transmit AIP


BREAK
Invalid Received
Dword Received Transmit OPEN_ACCEPT
Transmit Idle Dword
Transmit BROADCAST Dword Received Transmit OPEN_REJECT
Transmit Transmit Idle Dword
BROADCAST Received
Transmit PS_ACK Pattern
BREAK_REPLY Transmit PWR_ACK
XL6:Open_Response_Wait
Transmit PWR_GRANT Transmit
PS_ACK Pattern PS_NAK
Transmit PS_NAK
Transmitted
PS_REQ Received
OPEN Address Transmit
AIP Received Idle Dword
Frame Received
BREAK Received BREAK Received Transmit
Transmit Dword
SL_P_S
Power Request
BROADCAST Received
XL5:Forward_Open
OPEN_ACCEPT Received
OPEN_REJECT Received
BROADCAST Manage
Received OPEN Address Power
Transmit OPEN Frame Received
PS_REQ Received Conditions
Address Frame XL7:Connected
OPEN Address (to all states)
Frame Transmitted Dword Received
Transmit Dword
OPEN Address CLOSE Received
Transmit PS_NAK Substitute
Frame Received BREAK Received To Close
BREAK Received Transmit
Idle Dword ERROR Received Stop
XL11:PS_Request Substituting
Invalid Dword
PS_ACK Pattern Transmit PS_REQ Received
Transmitted Transmit SOF Received
PS_REQ Received PS_ACK Pattern
(to all states,
Transmit PS_NAK causing
XL8:Close_Wait
PS_ACK Received transition to
Dword Received Transmit
PS_NAK Received XL0:Idle)
OPEN Address Close
CLOSE Received SL_IR
Frame Received Transmit
BREAK Received Idle Dword Enable
Disable
BREAK Received ERROR Received
SAS
BROADCAST Invalid Dword Link
Received Received (Disable)

Figure 164 –XL (link layer for expander logical phys) state machine (4 of 4)

524 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.19.2 XL transmitter and receiver

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 525


T10/BSR INCITS 554 Revision 11 18 January 2021

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;

526 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.19.3 XL0:Idle state

6.19.3.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 527


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.19.3.2 Transition XL0:Idle to XL1:Request_Path

This transition shall occur if:


a) an Enable Disable SAS Link (Enable) message has been received;
b) a Forward Open indication is not being received; and
c) an OPEN Address Frame Received message is received.
This state shall include 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 the 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 the OPEN Address Frame
Received message, then:

528 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.19.3.3 Transition XL0:Idle to XL5:Forward_Open

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.

6.19.3.4 Transition XL0:Idle to XL11:PS_Request

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 529


T10/BSR INCITS 554 Revision 11 18 January 2021

6.19.3.5 Transition XL0:Idle to XL12:PS_Quiet

This transition shall occur:


a) after receiving a PS_ACK Pattern Transmitted message from the XL transmitter.
This transition shall include the following arguments that corresponds to the PS_REQ Received message:
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) stop the Delay Expander Forward Open Indication timer; and
c) stop the Idle timer.

6.19.4 XL1:Request_Path state

6.19.4.1 State description

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.

530 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.19.4.2 Transition XL1:Request_Path to XL0:Idle

This transition shall occur if:


a) a BREAK Received message has not been received; and
b) an Arb Lost confirmation is received or after sending a Transmit OPEN_REJECT message to the XL
transmitter.

6.19.4.3 Transition XL1:Request_Path to XL2:Request_Open

This transition shall occur if:


a) a BREAK Received message has not been received; and
b) an Arb Won confirmation is received.
This transition shall include an OPEN Address Frame Received argument containing the arguments in the
received OPEN Address Frame Received argument.

6.19.4.4 Transition XL1:Request_Path to XL5:Forward_Open

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 531


T10/BSR INCITS 554 Revision 11 18 January 2021

d) Arbitrating (Waiting On Connection);


e) Arb Won;
f) Arb Lost;
g) Arb Reject (No Destination);
h) Arb Reject (Bad Destination);
i) Arb Reject (Connection Rate Not Supported);
j) Arb Reject (Zone Violation);
k) Arb Reject (Pathway Blocked); or
l) Arb Reject (Retry).
This transition shall include:
a) an OPEN Address Frame Received argument containing the arguments in the received OPEN
Address Frame Received argument;
b) an ECR Forward Open argument containing the arguments received in the Forward Open indication;
and
c) a BREAK Received argument if a BREAK Received message was received.

6.19.4.5 Transition XL1:Request_Path to XL9:Break

This transition shall occur:


a) after receiving a BREAK Received message if a Forward Open indication has not been received.

6.19.5 XL2:Request_Open state

6.19.5.1 State description

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.

6.19.5.2 Transition XL2:Request_Open to XL3:Open_Confirm_Wait

This transition shall occur:


a) after sending a Forward Open request to the ECR.
This transition shall include an OPEN Address Frame Received argument containing the arguments in the
received OPEN Address Frame Received argument.

532 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

If a BREAK Received message is received, then this transition shall include:


a) a BREAK Received argument.

6.19.6 XL3:Open_Confirm_Wait state

6.19.6.1 State description

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.

6.19.6.2 Transition XL3:Open_Confirm_Wait to XL0:Idle

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 533


T10/BSR INCITS 554 Revision 11 18 January 2021

6.19.6.3 Transition XL3:Open_Confirm_Wait to XL1:Request_Path

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.

6.19.6.4 Transition XL3:Open_Confirm_Wait to XL5:Forward_Open

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).

6.19.6.5 Transition XL3:Open_Confirm_Wait to XL7:Connected

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.

6.19.6.6 Transition XL3:Open_Confirm_Wait to XL9:Break

This transition shall occur:


a) after sending a Forward Break request to the ECR.

6.19.6.7 Transition XL3:Open_Confirm_Wait to XL10:Break_Wait

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.

6.19.7 XL5:Forward_Open state

6.19.7.1 State description

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;

534 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the XL transmitter.
If a PS_REQ Received message is received, then this state shall send a Transmit PS_NAK to the XL
transmitter.

6.19.7.2 Transition XL5:Forward_Open to XL6:Open_Response_Wait

This transition shall occur:


a) after receiving an OPEN Address Frame Transmitted message.
This transition shall include an ECR Forward Open argument containing the arguments received in the ECR
Forward Open argument that was included in the transition into this state.
If an OPEN Address Frame Received message is received or an OPEN Address Frame Received argument
is included in the transition into this state, then this transition shall include:
a) an OPEN Address Frame Received argument.
If a BREAK Received message is received or a BREAK Received argument is included in the
transition into this state, then this transition shall include:
a) a BREAK Received argument.
If a Forward Break Indication is received, then this transition shall include:
a) a Forward Break argument.

6.19.8 XL6:Open_Response_Wait state

6.19.8.1 State description

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 535


T10/BSR INCITS 554 Revision 11 18 January 2021

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

536 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 537


T10/BSR INCITS 554 Revision 11 18 January 2021

6.19.8.2 Transition XL6:Open_Response_Wait to XL0:Idle

This transition shall occur:


a) after sending an Open Reject response to the ECR.

6.19.8.3 Transition XL6:Open_Response_Wait to XL1:Request_Path

This transition shall occur:


a) after sending a Backoff Retry response to the ECR.
This transition shall include an OPEN Address Frame Received argument containing the arguments in:
a) the received OPEN Address Frame Received message; or
b) the OPEN Address Frame Received argument included in the transition into this state.

6.19.8.4 Transition XL6:Open_Response_Wait to XL2:Request_Open

This transition shall occur:


a) after sending a Backoff Reverse Path response to the ECR.
This transition shall include an OPEN Address Frame Received argument containing the arguments in:
a) the received OPEN Address Frame Received message; or
b) the OPEN Address Frame Received argument included in the transition into this state.

6.19.8.5 Transition XL6:Open_Response_Wait to XL7:Connected

This transition shall occur:


a) after sending an Open Accept response to the ECR.

6.19.8.6 Transition XL6:Open_Response_Wait to XL9:Break

This transition shall occur:


a) after sending a Forward Break response to the ECR.

6.19.8.7 Transition XL6:Open_Response_Wait to XL10:Break_Wait

This transition shall occur if:


a) a Forward Break argument was included in the transition into this state;
b) a BREAK Received message has not been received; and
c) 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.

6.19.9 XL7:Connected state

6.19.9.1 State description

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.

538 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 539


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.19.9.2 Transition XL7:Connected to XL8:Close_Wait

This transition shall occur:


a) after receiving a Forward Close indication if a BREAK Received message has not been received.
If this state has sent a Forward Close request to the ECR, then this transition shall include a Close Forwarded
argument.
This transition shall include the following arguments from the Forward Close indication:
a) Type (e.g., Normal or Clear Affiliation);
b) Forwarded Close Primitive Parameter, if any; and
c) Source Phy Identifier, if any.

6.19.9.3 Transition XL7:Connected to XL9:Break

This transition shall occur:


a) after sending a Forward Break request to the ECR.

6.19.9.4 Transition XL7:Connected to XL10:Break_Wait

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.

6.19.10 XL8:Close_Wait state

6.19.10.1 State description

This state closes a connection and releases path resources.


Upon entry into this state, this state shall:
1) if extended fairness priority is supported (i.e., EXTENDED FAIRNESS bit (see 9.4.4.4) is set to one), then:
1) send a Request Fairness Priority request;
2) wait for a Fairness Priority confirmation;
3) select the CLOSE primitive parameter to send to the XL transmitter; and
4) send a Transmit CLOSE message to the XL transmitter with the selected CLOSE primitive
parameters;
2) if extended fairness priority is not supported, then:
1) send a Transmit CLOSE message to the XL transmitter with the Type argument from the received
Forward Close indication Type argument; and
2) request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages to
the XL transmitter.

540 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 192 – Extended fairness priority

Bit 21 (21 is MSB) Bit 20 Bits 19 to 4 Bits 3 to 0 (0 is LSB)


High Priority SMP Open Priority Arbitration Wait Time Connection Rate
argument argument argument argument

Working Draft SAS Protocol Layer - 5 (SPL-5) 541


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

542 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.19.10.2 Transition XL8:Close_Wait to XL0:Idle

This transition shall occur after:


a) sending a Forward Close request to the ECR; or
b) sending a Transmit CLOSE message to the XL transmitter if this state was entered with an argument
of Close Forwarded.
This transition shall include:
a) the Delay Expander Forward Open Indication Timer argument; and
b) the Source Phy Identifier argument.

6.19.10.3 Transition XL8:Close_Wait to XL9:Break

This transition shall occur:


a) after sending a Forward Break request to the ECR.

6.19.10.4 Transition XL8:Close_Wait to XL10:Break_Wait

This transition shall occur:


a) after receiving a Forward Break indication if a BREAK Received message has not been received.

6.19.11 XL9:Break state

6.19.11.1 State description

This state closes the connection, if there is one, and releases all path resources associated with the
connection.

Working Draft SAS Protocol Layer - 5 (SPL-5) 543


T10/BSR INCITS 554 Revision 11 18 January 2021

This state shall:


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).

6.19.11.2 Transition XL9:Break to XL0:Idle

This transition shall occur:


a) after sending a Transmit BREAK message or a Transmit BREAK_REPLY message to the XL
transmitter.

6.19.12 XL10:Break_Wait state

6.19.12.1 State description

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.

6.19.12.2 Transition XL10:Break_Wait to XL0:Idle

This transition shall occur after:


a) a BREAK_REPLY Received message is received if the BREAK_REPLY method of responding to
received BREAK primitive sequences is enabled (see 6.16.6);
b) a BREAK Received message is received if the BREAK_REPLY method of responding to received
BREAK primitive sequences is disabled (see 6.16.6); or
c) the Break Timeout timer expires.

6.19.13 XL11:PS_Request state

6.19.13.1 State description

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.

544 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.19.13.2 Transition XL11:PS_Request to XL12:PS_Quiet

This transition shall occur after receiving:


a) a PS_ACK Pattern Transmitted message from the XL transmitter; or
b) a PS_ACK Received message.
This transition shall include:
a) the Phy Power Condition argument.

6.19.13.3 Transition XL11:PS_Request to XL0:Idle

This transition shall occur after:


a) sending a Transmit PS_NAK message to the XL transmitter;
b) a PS_NAK Received message is received;
c) a BREAK Received message is received and the BREAK_REPLY method of responding to received
BREAK primitive sequences is disabled; or
d) the Power Condition Request Timeout timer expires.

6.19.13.4 Transition XL11:PS_Request to XL1:Request_Path

This transition shall occur:


a) after receiving an OPEN Address Frame Received message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 545


T10/BSR INCITS 554 Revision 11 18 January 2021

This transition shall include:


a) an OPEN Address Frame Received argument containing the arguments in the received OPEN
Address Frame Received message.

6.19.13.5 Transition XL11:PS_Request to XL9:Break

This transition shall occur:


a) after receiving a BREAK Received message and the BREAK_REPLY method of responding to
received BREAK primitive sequences is enabled.

6.19.14 XL12:PS_Quiet state

6.19.14.1 State description

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.

6.19.14.2 Transition XL12:PS_Quiet to XL0:Idle

This transition shall occur:


a) after a Phy Layer Ready (SAS) confirmation is received.

6.20 SSP link layer

6.20.1 Opening an SSP connection

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

546 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

6.20.2 Full duplex

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.

6.20.3 SSP frame transmission and reception

6.20.3.1 SSP frame transmission and reception overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 547


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Figure 165 –SSP frame transmission

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.

548 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Last SSP frame segment

Figure 166 –SSP frame transmission with no pad 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

Last SSP frame segment

Figure 167 –SSP frame transmission with one pad dword

Time
SSP SSP last SSP
Pad Pad
SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword

Last SSP frame segment

Figure 168 –SSP frame transmission with two pad dwords

Time
SSP SSP last SSP
Pad Pad Pad
SOF frame frame ... frame CRC B_EOF (3)
dword dword dword
dword 0 dword 1 dword

Last SSP frame segment

Figure 169 –SSP frame transmission with three pad dwords

Working Draft SAS Protocol Layer - 5 (SPL-5) 549


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Figure 170 –Unaligned SOF at start of SSP frame example

550 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Time
last SSP
Pad Pad
... frame CRC RRDY B_EOF (2) DONE ALIGN (3)
dword dword
dword

Last SSP frame segment primitive segment

Figure 171 –Unaligned B_EOF (2) at end of SSP frame example

6.20.4 SSP flow control

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 551


T10/BSR INCITS 554 Revision 11 18 January 2021

After sending CREDIT_BLOCKED, an SSP phy shall not transmit any additional RRDYs in the connection.

6.20.5 Extending an SSP connection with persistent connections

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).

6.20.6 Interlocked frames

Table 194 shows which SSP frames shall be interlocked and which are non-interlocked.

Table 194 – SSP frame interlock requirements

SSP frame type Interlock requirement

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.

552 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 172 shows an example of interlocked frame transmission.

transmitter receiver
Interlocked frame

ACK or NAK

Interlocked frame

ACK or NAK

time time

Figure 172 –Interlocked frames

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 553


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Non-interlocked frame initiator port transfer tag B

ACK or NAK

Non-interlocked frame initiator port transfer tag C


Non-interlocked frame initiator port transfer tag C

time time

Figure 174 –Non-interlocked frames with different initiator port transfer tags

6.20.7 Breaking an SSP connection

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.

6.20.8 Closing an SSP connection

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.

554 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

A DONE exchange may be requested as follows:


a) RRDY (CLOSE) specifies that an expander device or an end device has requested that the SSP
connection or the SSP persistent connection be closed (i.e., requested forced normal completion);
and
b) EXTEND_CONNECTION (CLOSE) specifies that an expander device has requested that the SSP
persistent connection be closed (i.e., requested forced normal completion).
If the transmitter has no more SSP frames to transmit and receives a CREDIT_BLOCKED, then it may
transmit either DONE (NORMAL) or DONE (CREDIT TIMEOUT).
After transmitting DONE, the transmitting phy initializes and starts a 1 ms DONE Timeout timer (see 6.20.9.5).
After transmitting DONE, the transmitting phy shall not transmit any more SSP frames during this connection.
However, the phy may transmit ACK, NAK, RRDY, and CREDIT_BLOCKED as needed after transmitting
DONE if the other phy is still transmitting SSP frames in the reverse direction. Once an SSP phy has both
transmitted and received DONE, it shall close the connection by transmitting a CLOSE (NORMAL) primitive
sequence (see 6.16.9).
Figure 175 shows the sequence for a closing an SSP connection.

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

Figure 175 –Closing an SSP connection example

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 555


T10/BSR INCITS 554 Revision 11 18 January 2021

6.20.9 SSP (link layer for SSP phys) state machines

6.20.9.1 SSP state machines overview

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.

Table 195 – SSP state machines timers

Timer Initial value State machine Reference


ACK/NAK Timeout timer 1 ms SSP_TIM 6.20.9.3
DONE Timeout timer 1 ms SSP_D 6.20.9.5
Credit Timeout timer 1 ms SSP_TF 6.20.9.6

If persistent connections are supported (see 4.1.13.2), then the SSP state machines shall maintain the timers
listed in table 196.

Table 196 – SSP state machines timers for persistent connections

Timer Initial value State machine Reference


Persistent Connection Timeout timer 1 ms SSP_EM 6.20.9.12
Transmit Extend Connection timer 100 s SSP_EM 6.20.9.12

556 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

ACK Received ACK/NAK Timeout Close


SSP_TF3: Connection
ACK Received Transmit_Frame
Frame Transmitted
Frame Transmitted
NAK Received Transmit Frame
NAK Received Frame Transmitted
SSP_TF2:Tx_Wait
ACK/NAK
Timeout
ACK/NAK Timeout

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

DONE Received Begin Close

EOF Received Rx Credit Control SSP_RCM

B_EOF Received Rx Credit Status SSP_RCM


SL_CC and all other SSP
DONE Received Request Close
state machines
Request Break SL_CC and all other SSP
state machines

Figure 176 –SSP (link layer for SSP phys) state machines (1 of 3 - frame transmission)

Working Draft SAS Protocol Layer - 5 (SPL-5) 557


T10/BSR INCITS 554 Revision 11 18 January 2021

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

CRC Error Advance Credit


SSP_TAN (transmit
Occurred ACK/NAK control)
SSP_CC
Frame
Received SSP_TAN
ACK Transmitted
Transmit ACK
Frame Received
Frame Received ACK Transmitted

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)

558 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 178 shows the SSP state machine and states related to persistent connections.

SSP (link layer for SSP phys) state machines – persistent connection

SSP_EM (establish and manage persistent connection)


SSP_EM1: Establish
SSP_TF4 DONE Transmit Requested
SL_CC Persistent Connection Persistent
Connection
EXTEND_CONNECTION Established
Received Transmit
EXTEND_CONNECTION
EXTEND_CONNECTION
Transmitted Persistent
SSP_RCM
Enable Disable

SSP_EM2: Manage

SSP_TIM Tx Balance Status


SSP_TF4 DONE Transmit Requested No Pending
Tx Frames
DONE Received
Close Persistent
EXTEND_CONNECTION Received
Connection
Transmitting Frame
Persistent Connection
Frame Transmitted
Established
EXTEND_CONNECTION Transmitted
Persistent SSP_RCM
SOF Received Enable Disable
EOF Received Transmit
B_EOF Received EXTEND_CONNECTION

NOTIFY Received (to all states)


Enable
SL_CC (to all states)
Disable SSP
Request
SSP_D (to all states)
Close
Request (to all states)
SSP_D
Break

Figure 178 –SSP (link layer for SSP phys) state machines (3 of 3 - persistent connection)

6.20.9.2 SSP transmitter and receiver

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 559


T10/BSR INCITS 554 Revision 11 18 January 2021

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;

560 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.20.9.3 SSP_TIM (transmit interlocked frame monitor) state machine

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 561


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.20.9.4 SSP_TCM (transmit frame credit monitor) state machine

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.

6.20.9.5 SSP_D (DONE control) state machine

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.

562 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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,

Working Draft SAS Protocol Layer - 5 (SPL-5) 563


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

6.20.9.6 SSP_TF (transmit frame control) state machine

6.20.9.6.1 SSP_TF state machine overview

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.

6.20.9.6.2 SSP_TF1:Connected_Idle state

6.20.9.6.2.1 State description

This state waits for a request to transmit a frame or to close the connection.

6.20.9.6.2.2 Transition SSP_TF1:Connected_Idle to SSP_TF2:Tx_Wait

This transition shall occur after:


a) a Tx Frame request is received;
b) a Close Connection request is received; or
c) a Begin Close message is received.
If:
a) a Tx Frame (Balance Required) request was received; and
b) no Begin Close message has been received,
then this transition shall include a Transmit Frame Balance Required argument.
If:
a) a Tx Frame (Balance Not Required) request was received; and
b) no Begin Close message has been received,
then this transition shall include a Transmit Frame Balance Not Required argument.
If a Close Connection request was received, then this transition shall include a Close Connection argument.
If a Begin Close message was received, then this transition shall include a Full Duplex Close argument.
If a Begin Close message and a Close Connection request were received, then this transition:
a) shall include a Full Duplex Close argument; and
b) shall not include a Close Connection argument.
If a Begin Close message and a Tx Frame request were received, then this transition:
a) shall include a Full Duplex Close argument; and
b) shall not include a Transmit Frame Balance Required argument or a Transmit Frame Balance Not
Required argument.

6.20.9.6.2.3 Transition SSP_TF1:Connected_Idle to SSP_TF4:Transmit_DONE

This transition shall occur:


a) if an ACK/NAK Timeout message is received.

564 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This transition shall include an ACK/NAK Timeout argument.

6.20.9.6.3 SSP_TF2:Tx_Wait state

6.20.9.6.3.1 State description

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.

6.20.9.6.3.2 Transition SSP_TF2:Tx_Wait to SSP_TF3:Transmit_Frame

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.

6.20.9.6.3.3 Transition SSP_TF2:Tx_Wait to SSP_TF4:Transmit_DONE

This transition shall occur and include:


a) an ACK/NAK Timeout argument if an ACK/NAK Timeout message is received.
This transition shall occur and include a Close Connection argument if:
a) this state was entered from the SSP_TF1:Connected_Idle state with an argument of Close
Connection; and
b) the last Tx Balance Status message received had an argument of Balanced.
This transition shall occur and include a Full Duplex Close argument if:
a) this state was entered from the SSP_TF1:Connected_Idle state with an argument of Full Duplex
Close; and
b) the last Tx Balance Status message received had an argument of Balanced.
This transition shall occur after sending a Credit Timeout confirmation and include a Credit Timeout argument
if:
a) this state was entered from the SSP_TF1:Connected_Idle state with a Transmit Frame Balance
Required argument or a Transmit Frame Balance Not Required argument;
b) the Credit Timeout timer expired before a Tx Credit Status message was received with an argument of
Available or the last Tx Credit Status message received had an argument of Blocked;
c) a Tx Balance Status message was received with an argument of Balanced (i.e., the Credit Timeout
argument shall not be included in this transition for this reason unless the ACK/NAK count is
balanced); and
d) an ACK/NAK Timeout message was not received.

Working Draft SAS Protocol Layer - 5 (SPL-5) 565


T10/BSR INCITS 554 Revision 11 18 January 2021

6.20.9.6.4 SSP_TF3:Transmit_Frame state

6.20.9.6.4.1 State description

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.

6.20.9.6.4.2 Transition SSP_TF3:Transmit_Frame to SSP_TF1:Connected_Idle

This transition shall occur after:


a) receiving a Frame Transmitted message;
b) sending a Frame Transmitted message to the SSP_TIM state machine; and
c) sending a Frame Transmitted confirmation to the port layer.

6.20.9.6.5 SSP_TF4:Transmit_DONE state

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.

6.20.9.7 SSP_RF (receive frame control) state machine

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.

566 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.20.9.8 SSP_RCM (receive frame credit monitor) state machine

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 567


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.20.9.9 SSP_RIM (receive interlocked frame monitor) state machine

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.

568 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.20.9.10 SSP_TC (transmit credit control) state machine

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.

6.20.9.11 SSP_TAN (transmit ACK/NAK control) state machine

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.

6.20.9.12 SSP_EM (establish and manage persistent connection) state machine

6.20.9.12.1 SSP_EM state machine overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 569


T10/BSR INCITS 554 Revision 11 18 January 2021

6.20.9.12.2 SSP_EM1:Establish state

This state establishes a persistent connection (see 6.20.1).


If this state receives a Persistent Connection (Transmit) message, then:
a) this state shall send a Transmit EXTEND_CONNECTION (Normal) message to the SSP transmitter;
b) this state shall initialize and start the Transmit Extend Connection timer; and
c) if this state receives an EXTEND_CONNECTION Received message and this state has not received
a DONE Transmit Requested message, then this state shall send:
A) a Persistent Connection Established (Enabled) confirmation to the port layer; and
B) a Persistent Enable Disable (Enable) message to the SSP_RCM state machine.
If this state receives a Persistent Connection (Wait) message, has not received a DONE Transmit Requested
message, and receives an EXTEND_CONNECTION Received message, then this state shall send:
a) a Transmit EXTEND_CONNECTION (Normal) message to the SSP transmitter;
b) a Persistent Connection Established (Enabled) confirmation to the port layer; and
c) a Persistent Enable Disable (Enable) message to the SSP_RCM state machine.
If this state receives a Persistent Connection (Off) message, then this state shall:
a) ignore EXTEND_CONNECTION Received messages; and
b) send a Persistent Connection Established (Disabled) confirmation to the port layer.
If the Transmit Extend Connection timer expires and this state has not received a DONE Transmit Requested
message, 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.

6.20.9.12.3 Transition SSP_EM1:Establish to SSP_EM2:Manage

This transition shall occur after:


a) sending a Persistent Connection Established (Enabled) confirmation to the port layer; and
b) receiving an EXTEND_CONNECTION Transmitted message.

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.

570 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.20.9.12.5 Transition SSP_EM2:Manage to SSP_EM1:Establish

This transition shall occur:


a) after a Persistent Connection Established (Disabled) confirmation is sent to the port layer.

6.21 STP link layer

6.21.1 STP frame transmission and reception overview

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

Feature Description Reference

Flow control through an STP connection is point-to-point, not


end-to-end. Expander devices accept dwords in an STP flow
STP flow control control buffer after transmitting SATA_HOLD to avoid losing 6.21.4
data en-route before the transmitting phy acknowledges the
SATA_HOLD with SATA_HOLDA.
Sustain the continued primitive sequence if a SATA_CONT
Continued primitive sequence 6.21.5
appears after the continued primitive sequence has begun.

Working Draft SAS Protocol Layer - 5 (SPL-5) 571


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Figure 179 –STP frame transmission

The last data dword after the SOF prior to the EOF always contains a CRC (see 6.7).

572 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Last STP frame segment

Figure 180 –STP frame transmission with no pad 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

Last STP frame segment

Figure 181 –STP frame transmission with one pad dword

Time
STP STP last STP
Pad Pad
SATA_SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword

Last STP frame segment

Figure 182 –STP frame transmission with two pad dwords

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

Last STP frame segment

Figure 183 –STP frame transmission with three pad dwords

Working Draft SAS Protocol Layer - 5 (SPL-5) 573


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.21.4 STP flow control

6.21.4.1 STP flow control overview

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.

6.21.4.2 SATA frame buffering

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.

574 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.21.4.3 STP flow control buffer size

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 575


T10/BSR INCITS 554 Revision 11 18 January 2021

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:

Minimum STP flow control buffer size = (20 + ((2 × Pd × R) / 40))

where:

is the propagation delay of cable assembly (e.g., in nanoseconds) (see SAS-4);


Pd
and
R is the nominal logical link rate (e.g., in gigabit per second).
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 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:

Minimum STP flow control buffer size = (24 + ((2 × Pd × R) / B))

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

576 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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:

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) transmission period of SPL frame segments in a 22.5 Gbit/s logical link rate = (0.04 ns/bit) × (150 bits /
SPL frame segment) = 6.6 ns;
d) number of 22.5 Gbit/s SPL frame segments on the wire during round-trip propagation time = (1 000 ns /
6.6 ns) = 150 SPL frame segments; and
e) 24 is the buffer size required by the frame transmitter requirements described in this subclause,
resulting in a minimum STP flow control buffer size = 174 SPL frame segments.
The STP buffer size may be increased if retimer lanes are present.

6.21.4.4 STP flow control example

Figure 184 shows STP flow control between:


a) an STP initiator phy receiving a frame;
b) an expander device (the first expander device);
c) an expander device with an STP SATA bridge (the second expander device); and
d) a SATA device phy transmitting a frame.

Working Draft SAS Protocol Layer - 5 (SPL-5) 577


T10/BSR INCITS 554 Revision 11 18 January 2021

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

data dwords 1.5 Gbit/s SATA


physical link
Stores up Stores up to
data dwords
to 24 data 24 data
dwords after dwords Stores up to
transmitting SATA_H in 21 data
O
LD
SATA_HOLD SATA_CO buffer dwords
NT/idle SATA_HOLD in buffer SATA device
phy
SATA_CONT/id
SATA_HOLDA le SATA_HOL stops
D transmitting
le SATA_CO
ONT/ id SATA_HOL
DA NT data dwords
SATA_C /idle
and replies
T/idle
SATA_CON with
T/idl e SATA_HOLDA SATA_HOLDA
SATA_CON NT/idle in 20 dwords
SATA_CO
NT/i dle
SATA_CO
NT/idle
SATA_CO
Drains
receive
buffer Drains buffer
then before
transmit forwarding new Drains buffer
SATA_R_IP SATA_R_I data dwords before
P
forwarding new
SATA_CON SATA_R_IP data dwords
T/idle

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

Figure 184 –STP flow control

578 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

6.21.4.5 STP insufficient buffer support

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:

a) the SMP DISCOVER response (see 9.4.4.10); and


b) the SMP DISCOVER LIST response (see 9.4.4.15).
If an expander phy does not support the minimum buffer size for the logical link rate, then that expander phy
shall respond to an STP connection request with OPEN_REJECT (PROTCOL NOT SUPPORTED).

6.21.5 Continued primitive sequence

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 579


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 185 shows an example of transmitting a continued primitive sequence while in the SAS dword mode.

Time

STP STP SATA_ Vendor specific


STP
primitive primitive CONT (if scrambled data dwords
primitive
X X needed) (if needed)

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

STP STP SATA_ Vendor specific


STP
primitive primitive CONT data dwords
primitive
X X (if any) (if any) (if any)

Receive the continued primitive sequence X Receive a new primitive sequence

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.

580 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

An STP target port shall implement one of the affiliation policies defined in table 198.

Table 198 – Affiliation policies

Affiliation policy Description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 581


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 199 – Affiliation context relative identifier example

Affiliation context Affiliation context relative identifier assignment


containing the SAS
address of the SMP
0 1 2 3
initiator port

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

6.21.7 Opening an STP connection

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.

582 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 583


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 187 shows an example of the simultaneous connection recommendations for an expander device
containing STP ports.

A source expander device


considers all these f) A source expander device should not
recommendations attempt to open more than 1 connection
simultaneously for using this physical link
connection requests from its e) A source expander device should not
g) A source
own STP ports and its own attempt to open more than 2 connections
expander device
SMP initiator port, if any using this wide link
should not attempt
Expander device Z b) A source expander device should not to open more than 1
attempt to open more than 3 connections connection using
STP target port Z0 using this wide link this physical link
STP target port Z1
5-wide
STP target port Z2
Expander Expander STP port A
STP target port Z3 device W device X
STP target port Z4
3-wide STP port B
STP target port Z5
STP target port Z6
SMP port W SMP
STP port C
STP target port Z7 port X
2-wide
STP initiator port Z8
SMP port Z 4-wide
2-wide Expander
a) A source expander device device Y
should not attempt to open more STP port D
than 5 connections using this Port E
SMP
wide link
port Y
d) A source expander
device should not attempt c) A source expander device should
to open more than 2 not attempt to open more than 1
connections using this wide connection using this physical link h) A source expander device should
link not attempt to open more than 4
connections using this wide link

Figure 187 –Example simultaneous connection recommendations for an expander device

In figure 187, some of the recommendations are combined as follows:


a) recommendations a), b), and e) together specify that expander device Z should not attempt to open
more than 2 connections to port C;
b) recommendations a), b), e), f), and g) together specify that if expander device Z has two connections
open to ports A, B, and X, then expander device Z should not attempt to open more than one
connection to port C. If expander device Z has four connections open to ports A, B, D, E, W, X, and Y,
then expander device Z should not attempt to open more than one connection to port C; and
c) recommendations a), c), and h) together specify that expander device Z should not attempt to open
more than one connection to port D. If expander device Z has a connection open to port Y, then
expander device Z should not attempt to open another connection to port D until the first connection is
closed.
The first dword that an STP phy sends inside an STP connection after OPEN_ACCEPT that is not a deletable
primitive shall be an STP primitive (e.g., SATA_SYNC).

584 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.21.8 Closing an STP connection

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).

6.21.9 STP connection management examples

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 585


T10/BSR INCITS 554 Revision 11 18 January 2021

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

time time time time

Figure 188 –STP initiator port opening an STP connection while SAS dword mode is enabled

586 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

STP initiator STP target STP SATA SATA


port SATA host port
port device port
bridge
idle dwords idle dwords SATA_SYNC
SATA_SYNC SATA_X_RDY
OPEN address
frame
idle dwords

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

time time time time

Figure 189 –STP target port opening an STP connection while SAS dword mode is enabled

Working Draft SAS Protocol Layer - 5 (SPL-5) 587


T10/BSR INCITS 554 Revision 11 18 January 2021

6.21.10 STP (link layer for STP phys) state machines

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.

6.21.11 SMP target port support

A SAS device that contains an STP target port shall also contain an SMP target port.

6.22 SMP link layer

6.22.1 SMP frame transmission and reception

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).

588 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Last SMP frame segment

Figure 191 –SMP frame transmission with no pad 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

Last SMP frame segment

Figure 192 –SMP frame transmission with one pad dword

Time
SMP SMP last SMP
Pad Pad
SOF frame frame ... frame CRC B_EOF (2)
dword dword
dword 0 dword 1 dword

Last SMP frame segment

Figure 193 –SMP frame transmission with two pad 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

Last SMP frame segment

Figure 194 –SMP frame transmission with three pad dword

Working Draft SAS Protocol Layer - 5 (SPL-5) 589


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

6.22.3 SMP flow control

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.

6.22.4 Opening an SMP connection

An SMP target port shall not attempt to establish an SMP connection.


A SAS phy may reject an incoming connection request (i.e., OPEN address frame) to an SMP 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).

6.22.5 Closing an SMP connection

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.

6.22.6 SMP (link layer for SMP phys) state machines

6.22.6.1 SMP state machines overview

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).

6.22.6.2 SMP transmitter and receiver

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

590 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

6.22.6.3.1 SMP_IP state machine overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 591


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 195 shows the SMP_IP state machine.

SMP_IP (link layer for SMP initiator phys) state machine

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

6.22.6.3.2 SMP_IP1:Idle state

6.22.6.3.2.1 State description

This state is the initial state.


This state shall request that idle dwords be transmitted by repeatedly sending Transmit Idle Dword messages
to the SMP transmitter.
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).

592 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.22.6.3.2.2 Transition SMP_IP1:Idle to SMP_IP2:Transmit_Frame

This transition shall occur:


a) after a Tx Frame request is received.

6.22.6.3.3 SMP_IP2:Transmit_Frame state

6.22.6.3.3.1 State description

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.

6.22.6.3.3.2 Transition SMP_IP2:Transmit_Frame to SMP_IP3:Receive_Frame

This transition shall occur:


a) after sending a Frame Transmitted confirmation to the port layer.

6.22.6.3.4 SMP_IP3:Receive_Frame state

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 593


T10/BSR INCITS 554 Revision 11 18 January 2021

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

6.22.6.4.1 SMP_TP state machine overview

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.

SMP_TP (link layer for SMP target phys) 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

Tx Frame Transmit Idle


Frame Transmitted Dword
Transmit Frame
Frame Transmitted

Figure 196 –SMP_TP (link layer for SMP target phys) state machine

594 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

6.22.6.4.2 SMP_TP1:Receive_Frame state

6.22.6.4.2.1 State description

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.

6.22.6.4.2.2 Transition SMP_TP1:Receive_Frame to SMP_TP2:Transmit_Frame

This transition shall occur after sending a Frame Received (SMP Successful) confirmation to the port layer.

6.22.6.4.3 SMP_TP2:Transmit_Frame state

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 595


T10/BSR INCITS 554 Revision 11 18 January 2021

7 Port layer

7.1 Port layer overview

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.

7.2 Port layer state machines

7.2.1 Port layer state machines overview

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).

596 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 197 shows examples of the port layer state machines and their interaction with the transport and link
layers.

Transmit a PL_OC state machine


Frame
requests from c
transport layer h

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

PL_PM PL_PM 1 PL_PM 2 ... PL_PM n


state (for phy 1) (for phy 2) (for phy n)
machines
Open Connection Open Tx Open Open
Connection Closed Connection Frame Connection Failed

e e i e

Figure 197 – Port layer examples

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 597


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

7.2.2 PL_OC (port layer overall control) state machine

7.2.2.1 PL_OC state machine overview

The PL_OC state machine:


a) receives requests from the SSP, SMP, and STP transport layers;
b) sends messages to the PL_PM state machine;
c) receives messages from the PL_PM state machine;
d) receives requests from the management application layer;
e) selects frames to transmit;
f) selects phys on which to transmit frames;
g) receives confirmations from the link layer;
h) sends confirmations to the transport layer;
i) sends confirmations to the management application layer;
j) has Arbitration Wait Time timers;
k) has I_T Nexus Loss timers; and
l) may have Reject To Open Limit timers.
This state machine consists of the following states:
a) PL_OC1:Idle (see 7.2.2.2) (initial state); and
b) PL_OC2:Overall_Control (see 7.2.2.3).
This state machine shall start in the PL_OC1:Idle state after power on.
This state machine shall maintain a pool of pending:
a) Tx Frame messages for each destination SAS address; and
b) Tx Open message slots. There shall only be at most a single pending Tx Open message slot for each
destination SAS address. There may be fewer total pending Tx Open message slots than the total
number of destination SAS addresses.

598 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state machine shall maintain the timers listed in table 200.

Table 200 – PL_OC state machine timers

Maximum number
Timer Initial value
of timers

Depending on the protocol used by the port:


a) for SSP target ports, the value in the I_T NEXUS LOSS
TIME field in the Protocol Specific Port mode page (see
9.2.7.4);
b) for SSP initiator ports, the value in the I_T NEXUS LOSS
TIME field in the Protocol Specific Port mode page for
the SSP target port with that destination SAS address
(see 9.2.7.4);
c) for STP target ports, the value in the STP SMP I_T NEXUS
LOSS TIME field in the SMP CONFIGURE GENERAL
function (see 9.4.4.18);
I_T Nexus Loss One per destination d) for STP initiator ports, the value in the STP SMP I_T
timer SAS address NEXUS LOSS TIME field in the SMP REPORT GENERAL
function (see 9.4.4.4) for the STP target port with that
destination SAS address;
e) for SMP initiator ports managed by a management
device server, the value in the STP SMP I_T NEXUS LOSS
TIME field in the SMP CONFIGURE GENERAL function
(see 9.4.4.18); or
f) for SMP initiator ports not managed by a management
device server, the value in the STP SMP I_T NEXUS LOSS
TIME field in the SMP REPORT GENERAL function (see
9.4.4.4) for the SMP target port with that destination
SAS address.

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.

If an OPEN_REJECT retry-class primitive is received with


an OPEN_REJECT retry-class primitive parameter and the
OPEN RETRY DELAY field in the OPEN_REJECT retry-class
primitive parameter is not equal to zero, then the value in the
OPEN RETRY DELAY field in the OPEN_REJECT retry-class
primitive parameter (see 6.2.6.10.2). Otherwise depending
on the protocol used by the port:
Reject To Open One per Retry Open
a) for SSP target ports, the value in the REJECT TO OPEN
Limit timer message
LIMIT field in the Protocol Specific Port mode page (see
9.2.7.4);
b) for SSP initiator ports, a vendor specific value;
c) for STP target ports, the value in the STP REJECT TO
OPEN LIMIT field in the SMP CONFIGURE GENERAL
function (see 9.4.4.18); or
d) for STP initiator ports, a vendor specific value.

Working Draft SAS Protocol Layer - 5 (SPL-5) 599


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 198 shows the PL_OC state machine.

PL_OC (port layer overall control)

PL_OC1:Idle PL_OC2:Overall_Control

Transmit Transmit HARD_


Frame Transmission Frame RESET
Status Phy Enabled
Phy Enabled Received
(confirmation (confirmation No Phys
from each HARD_ from each In Port
phy) RESET phy)
Hard Reset PL_PM
Received
Tx Open PL_PM
PL_PM Retry Open
Accept_Reject Connection Tx Frame PL_PM
PL_PM
OPENs Opened
PL_PM Retry Frame
Transmission
Unable to Status
PL_PM
Connect
PL_PM Transmission Status I_T Nexus
Loss Detected

No Phys Start I_T Nexus Notify


Notify Received In Port Loss Timer Received
(to all states) Cancel PL_PM
Stop I_T Nexus
Loss Timer
Cancel Open PL_PM
HARD_RESET SMP Transmit SMP
Received Break Transmit PL_PM
(to all states, Break
causes Accept_Reject
transition to OPENs Accept_Reject
PL_OC1:Idle) Accept_Reject OPENs
OPENs
Phy Disabled Cancel
(to all states,
PL_PM Disable Tx Frames
may cause Close Connection PL_PM
transition to PL_PM Connection Closed
Persistent No Pending Tx
PL_OC1:Idle) Frames
Connection
Established

Figure 198 – PL_OC (port layer overall control) state machine

7.2.2.2 PL_OC1:Idle state

7.2.2.2.1 PL_OC1:Idle state description

This state is the initial state of the PL_OC state machine.

600 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

7.2.2.2.2 Transition PL_OC1:Idle to PL_OC2:Overall_Control

This transition shall occur after a Phy Enabled confirmation is received for at least one phy assigned to the
port.

7.2.2.3 PL_OC2:Overall_Control state

7.2.2.3.1 PL_OC2:Overall_Control state overview

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.

7.2.2.3.2 PL_OC2: Non-connection specific confirmations and requests

7.2.2.3.2.1 PL_OC2: Transmit Frame request

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 601


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

7.2.2.3.2.2 PL_OC2: HARD_RESET Received confirmation

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.

7.2.2.3.2.3 PL_OC2: NOTIFY Received (Power Loss Expected) confirmation

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.

7.2.2.3.2.4 PL_OC2: Phy Disabled confirmation

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.

602 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

7.2.2.3.2.5 PL_OC2: Start I_T Nexus Loss Timer request

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.

7.2.2.3.3 PL_OC2:Overall_Control state establishing connections

This state receives Phy Enabled confirmations indicating when a phy is available.
This state receives Retry Open messages from a PL_PM state machine.

Working Draft SAS Protocol Layer - 5 (SPL-5) 603


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

604 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state shall create a pending Tx Open message if:


a) this state has a pending Tx Frame message or has received a Retry Open message;
b) there is a pending Tx Open message slot available for the destination SAS address;
c) there is no pending Tx Open message for the destination SAS address; and
d) there is no connection established with the destination SAS address.
This state may create a pending Tx Open message if:
a) this state has a pending Tx Frame message, or this state has received a Retry Open message and
has not processed the message by sending a confirmation; and
b) there is a pending Tx Open message slot available for the destination SAS address.
If this state receives a Retry Open message and there are pending Tx Frame messages for which pending Tx
Open messages have not been created, then this state should create a pending Tx Open message from the
Retry Open message.
If this state does not create a pending Tx Open message from a Retry Open message (e.g., there is not an
available pending Tx Open message slot for the destination SAS address), then this state shall discard the
Retry Open message. This state may create a new pending Tx Open message at a later time for the pending
Tx Frame message that resulted in the Retry Open message.
If this state receives a Retry Open (Opened By Destination) message and the initiator port bit and protocol
arguments match those in the Tx Open messages that resulted in the Retry Open message, then this state
may discard the Retry Open message and use the established connection to send pending Tx Frame
messages as Tx Frame messages to the destination SAS address. If this state receives a Retry Open
(Opened By Destination) message and state has a pending Tx Open slot available, then this state may create
a pending Tx Open message from the Retry Open message.
If a connection is established by another port as indicated by a Retry Open (Opened By Destination)
message, then transmit SSP frame credit may not be granted for frame transmission. In this case this state
may create a pending Tx Open message from a Retry Open message in order to establish a connection
where transmit SSP frame credit is granted.
This state shall send a pending Tx Open message as a Tx Open message to a PL_PM state machine that has
an enabled phy and does not have a connection established. If there is more than one pending Tx Open
message, then this state should send a Tx Open message for the pending Tx Open message that has been
pending for the longest time first.
If low phy power conditions (see 4.11.1) are enabled, then this state should use the following precedence in
selecting the PL_PM state machine to which a pending Tx Open message is to be sent:
1) PL_PM state machine with its phy in the active phy power condition (see 4.11.1.2);
2) PL_PM state machine with its phy in the partial phy power condition (see 4.11.1.3); and
3) PL_PM state machine with its phy in the slumber phy power condition (see 4.11.1.4).
If this state creates a pending Tx Open message from one of the following messages:
a) Retry Open (Opened By Destination);
b) Retry Open (Opened By Other);
c) Retry Open (Collided);
d) Retry Open (Pathway Blocked);
e) Retry Open (Low Phy Power Condition); or
f) Retry Open (Retry) if the CONTINUE AWT bit is set to one in the Protocol specific Port mode page (see
9.2.7.4),
then this state shall:
1) create an Arbitration Wait Time timer for the pending Tx Open message;
2) set the Arbitration Wait Time timer for the pending Tx Open message to the arbitration wait time
argument from the Retry Open message; and
3) start the Arbitration Wait Time timer for the pending Tx Open message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 605


T10/BSR INCITS 554 Revision 11 18 January 2021

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;

606 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

d) a Retry Open (Pathway Blocked) message;


e) a Retry Open (Low Phy Power Condition) message; or
f) a Retry Open (Retry) message if the CONTINUE AWT bit is set to one in the Protocol Specific Port mode
page (see 9.2.7.4),
then this state shall set the arbitration wait time argument in the Tx Open message to be the value from the
Arbitration Wait Time timer created as a result of the Retry Open message.
After this state sends a Tx Open message, this state shall discard the pending Tx Open message from which
the Tx Open message was created. After this state discards a pending Tx Open message, this state may
create a new pending Tx Open message.
If this state receives a Connection Opened message and the initiator port bit and protocol arguments match
those in a pending Tx Open message, then any Reject To Open Limit timer associated with that pending Tx
Open message shall be discarded.
If this state receives a Connection Opened message and the initiator port bit and protocol arguments match
those in any pending Tx Frame messages, then this state may use the established connection to send
pending Tx Frame messages as Tx Frame messages to the destination SAS address.

7.2.2.3.4 PL_OC2:Overall_Control state connection established

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).

7.2.2.3.5 PL_OC2:Overall_Control state unable to establish a connection — Unable To


Connect message

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.

Table 201 – Confirmations from Unable To Connect messages

Message received Confirmation sent to the transport layer

Unable To Connect (Bad Destination) Transmission Status (I_T Nexus Loss)

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 (Reserved Abandon 1) Transmission Status (I_T Nexus Loss)

Unable To Connect (Reserved Abandon 2) Transmission Status (I_T Nexus Loss)

Unable To Connect (Reserved Abandon 3) Transmission Status (I_T Nexus Loss)

Unable To Connect (STP Resources Busy) Transmission Status (I_T Nexus Loss)

Unable To Connect (Wrong Destination) Transmission Status (I_T Nexus Loss)

Unable To Connect (Zone Violation) Transmission Status (I_T Nexus Loss)

Working Draft SAS Protocol Layer - 5 (SPL-5) 607


T10/BSR INCITS 554 Revision 11 18 January 2021

7.2.2.3.6 PL_OC2:Overall_Control state unable to establish a connection — Unable To


Connect message - Retry Open message processed as an Unable To Connect message

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).

7.2.2.3.7 PL_OC2:Overall_Control state unable to establish a connection — I_T Nexus


Loss timer expires

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).

7.2.2.3.8 PL_OC2:Overall_Control state - I_T nexus loss event

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.

7.2.2.3.9 PL_OC2:Overall_Control state connection management

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.

608 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 609


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

7.2.2.3.10 PL_OC2:Overall_Control state frame transmission

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);

610 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

c) Transmission Status (ACK/NAK Timeout); or


d) Transmission Status (Connection Lost Without ACK/NAK).
For a bidirectional command, frames with the Non-Interlocked argument for an I_T_L nexus and command
identifier combination may be transmitted on one phy at the same time as frames with the Non-Interlocked
argument for the same I_T_L nexus and command identifier combination are received on the same phy or on
a different phy.
If this port is an SMP initiator port, then this state shall send the Tx Frame message containing the SMP
REQUEST frame to the PL_PM state machine on which the connection was established for the Tx Open
message. If this port is an SMP target port, then this state shall send the Tx Frame message containing the
SMP_RESPONSE frame to the PL_PM state machine on which the connection was established for the Tx
Open message. See 6.22 for additional information about SMP connections.
Characteristics of STP connections are defined by SATA (also see 6.21).
The following arguments shall be included with the Tx Frame message:
a) the frame to be transmitted; and
b) Balance Required or Balance Not Required.
A Balance Not Required argument shall only be included if:
a) the request was a Transmit Frame (Non-Interlocked) request (i.e., the request included a DATA
frame); and
b) the last Tx Frame message sent to this PL_PM state machine while this connection has been
established was for a DATA frame having the same logical unit number and initiator port transfer tag
as the DATA frame in this Tx Frame message.
If a Balance Not Required argument is not included in the Tx Frame message, then a Balance Required
argument shall be included.
If this state receives a Disable Tx Frames message from a PL_PM state machine, then this state should send
no more Tx Frame messages to that state machine until a new connection is established.

7.2.2.3.11 PL_OC2:Overall_Control state frame transmission cancellations

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.

7.2.2.3.12 Transition PL_OC2:Overall_Control to PL_OC1:Idle

This transition shall occur after:


a) sending a HARD_RESET Received confirmation to the transport layer;
b) a No Phys In Port confirmation is sent to the transport layer; or
c) sending a NOTIFY Received (Power Loss Expected) confirmation to the transport layer.

Working Draft SAS Protocol Layer - 5 (SPL-5) 611


T10/BSR INCITS 554 Revision 11 18 January 2021

7.2.3 PL_PM (port layer phy manager) state machine

7.2.3.1 PL_PM state machine overview

A PL_PM state machine:


a) receives messages from the PL_OC state machine;
b) sends requests to the link layer;
c) receives confirmations from the link layer;
d) sends confirmations to the transport layer;
e) sends messages to PL_OC state machine;
f) has an Arbitration Wait Time timer;
g) may have a Bus Inactivity Time Limit timer; and
h) may have Maximum Connect Time Limit timer.
This state machine consist of the following states:
a) PL_PM1:Idle (see 7.2.3.2) (initial state);
b) PL_PM2:Req_Wait (see 7.2.3.3);
c) PL_PM3:Connected (see 7.2.3.4); and
d) PL_PM4:Wait_For_Close (see 7.2.3.5).
This state machine shall start in the PL_PM1:Idle state after power on.
This state machine shall maintain the timers listed in table 202.

Table 202 – PL_PM state machine timers

Timer Initial value

The arbitration wait time argument from a Retry Open message


Arbitration Wait Time timer
(see 7.2.2.3.1).

Depending on the protocol used by the port:


a) for SSP target ports, the value in the BUS INACTIVITY LIMIT field
in the Disconnect-Reconnect mode page (see 9.2.7.2);
b) for STP target ports, the value in the STP BUS INACTIVITY LIMIT
field in the SMP REPORT GENERAL response (see 9.4.4.4);
Bus Inactivity Time Limit timer c) for SSP initiator ports, the value in the BUS INACTIVITY LIMIT
field in the Disconnect-Reconnect mode page (see 9.2.7.2) of
the destination SSP target port; or
d) for STP initiator ports, the value in the STP BUS INACTIVITY
LIMIT field in the SMP REPORT GENERAL response (see
9.4.4.4) of the destination STP target port.

Depending on the protocol used by the port:


a) for an SSP target port, the value in the CONNECT TIME LIMIT
field in the Disconnect-Reconnect mode page (see 9.2.7.2);
b) for an STP target port, the value in the STP CONNECT TIME
LIMIT field in the SMP REPORT GENERAL response;
c) for an SMP target port, 2 ms;
Maximum Connect Time Limit timer
d) for an SSP initiator port, the value in the CONNECT TIME LIMIT
field in the Disconnect-Reconnect mode page (see 9.2.7.2) of
the destination SSP target port; or
e) for an STP initiator port, the value in the STP CONNECT TIME
LIMIT field in the SMP REPORT GENERAL response of the
destination STP target port.

612 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 199 shows part 1 of the PL_PM state machine.

PL_PM (port layer phy manager) (part 1 of 2)

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

Figure 199 – PL_PM (port layer phy manager) state machine (1 of 2)

Working Draft SAS Protocol Layer - 5 (SPL-5) 613


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 200 shows part 2 of the PL_PM state machine.

PL_PM (port layer phy manager) (part 2 of 2)

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

Connection Connection Opened PL_OC


Closed
Connection Closed PL_OC
Phy Disabled SMP
(to all states, may PL_OC Transmit
cause transition to Break SMP Transmit
PL_PM1:Idle) PL_PM1 Break

Figure 200 – PL_PM (port layer phy manager) state machine (2 of 2)

614 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

7.2.3.2 PL_PM1:Idle state

7.2.3.2.1 PL_PM1:Idle state description

This is the initial state of the PL_PM state machine.

7.2.3.2.2 Transition PL_PM1:Idle to PL_PM2:Req_Wait

This transition shall occur after:


a) a Phy Enabled confirmation is received;
b) a Tx Open message is received; and
c) a Connection Opened confirmation has not been received.
This transition shall include:
a) the received Tx Open arguments.

7.2.3.2.3 Transition PL_PM1:Idle to PL_PM3:Connected

This transition shall occur after a Connection Opened confirmation is received. The transition shall include the
received OPEN address frame.

7.2.3.3 PL_PM2:Req_Wait state

7.2.3.3.1 PL_PM2:Req_Wait state overview

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.

7.2.3.3.2 PL_PM2:Req_Wait establishing a connection

Upon entry into this state, this state shall:


1) create an Arbitration Wait Time timer;
2) initialize the Arbitration Wait Time timer to the arbitration wait time argument received with the Tx
Open message;
3) start the Arbitration Wait Time timer; and
4) send an Open Connection request to the link layer.
The Open Connection request shall contain the following arguments from the Tx Open message to be used in
an OPEN address frame:
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 shall contain the
following additional argument from the Tx Open message to be used in an OPEN address frame:
a) Send Extend Bit.

Working Draft SAS Protocol Layer - 5 (SPL-5) 615


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

7.2.3.3.3 PL_PM2:Req_Wait connection established

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.

7.2.3.3.4 PL_PM2:Req_Wait unable to establish a connection

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.

616 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 203 defines the message to be sent to the PL_OC state machine for each Open Failed confirmation.

Table 203 – Messages from Open Failed confirmations

Confirmation received Message sent to the PL_OC state machine

Open Failed (No Destination) Retry Open (No Destination)

Open Failed (Pathway Blocked) Retry Open (Pathway Blocked)

Open Failed (Reserved Continue 0) Retry Open (Retry)

Open Failed (Reserved Continue 1) Retry Open (Retry)

Open Failed (Reserved Initialize 0) Retry Open (No Destination)

Open Failed (Reserved Initialize 1) Retry Open (No Destination)

Open Failed (Reserved Stop 0) Retry Open (Pathway Blocked)

Open Failed (Reserved Stop 1) Retry Open (Pathway Blocked)

Open Failed (Retry) Retry Open (Retry)

Open Failed (Low Phy Power Condition) Retry Open (Low Phy Power Condition)

Open Failed (Bad Destination) Unable To Connect (Bad Destination)

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 (Reserved Abandon 1) Unable To Connect (Reserved Abandon 1)

Open Failed (Reserved Abandon 2) Unable To Connect (Reserved Abandon 2)

Open Failed (Reserved Abandon 3) Unable To Connect (Reserved Abandon 3)

Open Failed (STP Resources Busy) Unable To Connect (STP Resources Busy)

Open Failed (Wrong Destination) Unable To Connect (Wrong Destination)

Open Failed (Zone Violation) Unable To Connect (Zone Violation)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 617


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

7.2.3.3.5 PL_PM2:Req_Wait connection management

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.

7.2.3.3.6 Transition PL_PM2:Req_Wait to PL_PM1:Idle

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.

7.2.3.3.7 Transition PL_PM2:Req_Wait to PL_PM3:Connected

This transition shall occur:


a) after a Connection Opened confirmation is received.

7.2.3.3.8 Transition PL_PM2:Req_Wait to PL_PM4:Wait_For_Close

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).

7.2.3.4 PL_PM3:Connected state

7.2.3.4.1 PL_PM3:Connected state description

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;

618 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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);

Working Draft SAS Protocol Layer - 5 (SPL-5) 619


T10/BSR INCITS 554 Revision 11 18 January 2021

c) the Bus Inactivity Time Limit timer expires; and


d) the last Persistent Connection Established confirmation received contained a Disabled argument,
then:
a) if 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; or
b) if 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.
If:
a) the connection is SSP;
b) persistent connections are supported (see 4.1.13.2);
c) the Bus Inactivity Time Limit timer (see table 202) expires; and
d) the last Persistent Connection Established confirmation received contained an Enabled argument,
then this state shall:
1) initialize the Bus Inactivity Time Limit timer as specified in table 202; and
2) start the Bus Inactivity Time Limit timer.
If a Maximum Connect Time Limit timer (see table 202) 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;
c) if the connection is SMP, then this state shall send an SMP Transmit Break request to the link layer; or
d) if the connection is STP, then this state shall send a Close Connection request to the link layer after
the phy is both transmitting and receiving SATA_SYNC.
If:
a) the connection is SSP;
b) persistent connections are supported (see 4.1.13.2);
c) the Maximum Connect Time Limit timer (see table 202) expires; and
d) the last Persistent Connection Established confirmation received contained a Disabled argument,
then:
a) if 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; or
b) if 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.
If:
a) the connection is SSP;
b) persistent connections are supported;
c) the Maximum Connect Time Limit timer expires; and
d) the last Persistent Connection Established confirmation received contained an Enabled argument,
then this state shall:
1) initialize the Maximum Connect Time Limit timer as specified in table 202; and
2) start the Maximum Connect Time Limit timer.

620 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 621


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

7.2.3.4.2 Transition PL_PM3:Connected to PL_PM1:Idle

This transition shall occur after:


a) a Connection Closed (Transition to Idle) message is sent to the PL_OC state machine; or
b) all operations are terminated after receiving a Hard Reset message.

7.2.3.5 PL_PM4:Wait_For_Close state

7.2.3.5.1 PL_PM4:Wait_For_Close state description

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.

622 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

7.2.3.5.2 Transition PL_PM4:Wait_For_Close to PL_PM1:Idle

This transition shall occur after:


a) a Retry Open or Unable To Connect message is sent to the PL_OC state machine; or
b) all operations are terminated after receiving a Hard Reset message.

Working Draft SAS Protocol Layer - 5 (SPL-5) 623


T10/BSR INCITS 554 Revision 11 18 January 2021

8 Transport layer

8.1 Transport layer overview

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.

624 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2 SSP transport layer

8.2.1 SSP frame format

Table 204 defines the SSP frame format.

Table 204 – SSP frame format

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

11 Reserved NUMBER OF FILL BYTES

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

Fill bytes, if needed


n-3 (MSB)
••• CRC
n (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 625


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 205 – FRAME TYPE 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.

626 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 206 defines the TLR CONTROL field for COMMAND frames. The TLR CONTROL field is reserved for all other
frame types.

Table 206 – TLR CONTROL field for COMMAND frames


a
Code Description
The SSP target port shall use the TRANSPORT LAYER RETRIES bit in the Protocol Specific Logical
Unit mode page (see 9.2.7.3) to enable or disable transport layer retries for this command as
follows if the TRANSPORT LAYER RETRIES bit is set to:
00b or
a) one, then the SSP target port shall set the RETRY DATA FRAMES bit to one in any XFER_RDY
11b
frames that the SSP target port transmits for this command; or
b) zero, then the SSP target port shall set the RETRY DATA FRAMES bit to zero in any XFER_RDY
frames that the SSP target port transmits for this command.
The SSP target port may enable transport layer retries for this command.

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.

The SSP target port shall:


a) disable transport layer retries for this command; and
10b
b) set the RETRY DATA FRAMES bit to zero in any XFER_RDY frames that it transmits for this
command.
a
If the SSP target port receives a non-zero value in the TLR CONTROL field and does not support non-zero
values in the TLR CONTROL field, then the SSP target port shall reply with a RESPONSE frame with the
DATAPRES field set to RESPONSE_DATA and the RESPONSE CODE field set to 02h (i.e., INVALID FRAME).

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 627


T10/BSR INCITS 554 Revision 11 18 January 2021

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;

628 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.2 Information units

8.2.2.1 COMMAND frame - Command information unit

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.

Table 207 – COMMAND frame - Command information unit

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 629


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 208 – TASK ATTRIBUTE field

Code Task attribute Description


Specifies that the command be managed according to the rules for a
000b SIMPLE
SIMPLE task attribute (see SAM-5).
Specifies that the command be managed according to the rules for a
001b HEAD OF QUEUE
HEAD OF QUEUE task attribute (see SAM-5).

Specifies that the command be managed according to the rules for an


010b ORDERED
ORDERED task attribute (see SAM-5).
011b Reserved
Specifies that the command be managed according to the rules for an
100b ACA
ACA task attribute (see SAM-5).

101b to 111b Reserved

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).

8.2.2.2 TASK frame - Task Management Function information unit

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).

630 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 209 defines the Task Management Function information unit used in a TASK frame.

Table 209 – TASK frame - Task Management Function information unit

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 631


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 210 defines the TASK MANAGEMENT FUNCTION field.

Table 210 – TASK MANAGEMENT FUNCTION field (part 1 of 2)

Uses
Uses INITIATOR
Task LOGICAL PORT
a b
Code management Support UNIT TRANSFER Description
function NUMBER TAG TO
field MANAGE
field

The task manager shall perform the


ABORT TASK task management function
with the L of the I_T_L nexus set to the
01h ABORT TASK M yes yes value of the LOGICAL UNIT NUMBER field and
the command identifier set to the value of
the INITIATOR PORT TRANSFER TAG TO
MANAGE field (see SAM-5).

The task manager shall perform the


ABORT TASK SET task management
02h ABORT TASK SET M yes no function with the L of the I_T_L nexus set
to the value of the LOGICAL UNIT NUMBER
field (see SAM-5).
The task manager shall perform the
CLEAR TASK SET task management
04h CLEAR TASK SET M yes no function with the L of the I_T_L nexus set
to the value of the LOGICAL UNIT NUMBER
field (see SAM-5).
The task manager for the selected logical
unit shall perform the LOGICAL UNIT
LOGICAL UNIT
08h M yes no RESET task management function with the
RESET
L of the I_T_L nexus set to the value of the
LOGICAL UNIT NUMBER field (see SAM-5).

The task manager shall perform the I_T


10h I_T NEXUS RESET M no no NEXUS RESET task management function
(see SAM-5).
20h Reserved
The task manager shall perform the
CLEAR ACA task management function
40h CLEAR ACA X yes no with the L of the I_T_L nexus set to the
value of the LOGICAL UNIT NUMBER field (see
SAM-5).
a
M = implementation is mandatory, X = implementation requirements are specified by SAM-5.
b
The task manager or device server shall perform the specified task management function with the I and T
arguments set to the SSP initiator port and SSP target port involved in the connection used to deliver the
TASK frame.

632 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 210 – TASK MANAGEMENT FUNCTION field (part 2 of 2)

Uses
Uses INITIATOR
Task LOGICAL PORT
a b
Code management Support UNIT TRANSFER Description
function NUMBER TAG TO
field MANAGE
field

The task manager shall perform the


QUERY TASK task management function
with L set to the value of the LOGICAL UNIT
80h QUERY TASK M yes yes
NUMBER field and command identifier set to
the value of the INITIATOR PORT TRANSFER
TAG TO MANAGE field (see SAM-5).

The task manager shall perform the


QUERY TASK SET task management
81h QUERY TASK SET M yes no
function with L set to the value of the
LOGICAL UNIT NUMBER field (see SAM-5).

The task manager shall perform the


QUERY QUERY ASYNCHRONOUS EVENT task
82h ASYNCHRONOUS M yes no management function with L set to the
EVENT value of the LOGICAL UNIT NUMBER field (see
SAM-5).
All
Reserved
others
a
M = implementation is mandatory, X = implementation requirements are specified by SAM-5.
b
The task manager or device server shall perform the specified task management function with the I and T
arguments set to the SSP initiator port and SSP target port involved in the connection used to deliver the
TASK frame.

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.

8.2.2.3 XFER_RDY frame - Transfer Ready information unit

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 633


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 211 defines the Transfer Ready information unit used in an XFER_RDY frame.

Table 211 – XFER_RDY frame - Transfer Ready information unit

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).

8.2.2.4 DATA frame - Data information unit

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.

634 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 212 defines the Data information unit used in a DATA frame.

Table 212 – DATA frame - Data information unit

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 635


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

8.2.2.5 RESPONSE frame - Response information unit

8.2.2.5.1 RESPONSE frame - Response information unit overview

A RESPONSE frame is sent by an SSP target port to deliver:


a) a service response, SCSI status (e.g., GOOD or CHECK CONDITION), and sense data, if any, for a
command (see 8.2.3.3, 8.2.3.4, 8.2.3.5, and 8.2.3.6);
b) a service response for a task management function (see 8.2.3.2); or
c) an SSP-specific response (e.g., invalid frame format).
Table 213 defines the Response information unit used in a RESPONSE frame.

Table 213 – RESPONSE frame - Response information unit

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

636 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 214 – DATAPRES field

Code Name Description Reference

00b NO_DATA No response data or sense data present 8.2.2.5.2


01b RESPONSE_DATA Response data present 8.2.2.5.3
10b SENSE_DATA Sense data present 8.2.2.5.4
11b Reserved

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.

8.2.2.5.2 Response information unit - NO_DATA format

If the DATAPRES field is set to NO_DATA, then:


a) the SSP target port shall set the STATUS field to the status code for a completed command (see
SAM-5 for a list of status codes);
b) the SSP target port shall set the STATUS QUALIFIER field to the status qualifier for the command (see
SAM-5);
c) the SSP target port shall set the SENSE DATA LENGTH field to 00000000h and the RESPONSE DATA
LENGTH field to 00000000h;
d) the SSP initiator port shall ignore the SENSE DATA LENGTH field and the RESPONSE DATA LENGTH field;
and
e) the SSP target port shall not include the SENSE DATA field and the RESPONSE DATA field.

8.2.2.5.3 Response information unit - RESPONSE_DATA format

If the DATAPRES field is set to RESPONSE_DATA, then:


a) the SSP target port shall set the STATUS field to 00h, the STATUS QUALIFIER field to 0000h, and the
SENSE DATA LENGTH field to 00000000h;
b) the SSP initiator port shall ignore the STATUS field, the STATUS QUALIFIER field, and the SENSE DATA
LENGTH field;
c) the SSP target port shall not include the SENSE DATA field;
d) the SSP target port shall set the RESPONSE DATA LENGTH field to 00000004h; and
e) the SSP target port shall include the RESPONSE DATA field.

Working Draft SAS Protocol Layer - 5 (SPL-5) 637


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 215 – RESPONSE DATA field

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.

Table 216 – RESPONSE CODE field

Code Description

00h TASK MANAGEMENT FUNCTION COMPLETE a

02h INVALID FRAME


a
04h TASK MANAGEMENT FUNCTION NOT SUPPORTED
05h TASK MANAGEMENT FUNCTION FAILED a

08h TASK MANAGEMENT FUNCTION SUCCEEDED a

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.

8.2.2.5.4 Response information unit - SENSE_DATA format

If the DATAPRES field is set to SENSE_DATA, then:


a) the SSP target port shall set the STATUS field to the status code for a completed command (see
SAM-5 for a list of status codes);
b) the SSP target port shall set the STATUS QUALIFIER field to the status qualifier for the command (see
SAM-5);
c) the SSP target port shall set the RESPONSE DATA LENGTH field to 00000000h;
d) the SSP initiator port shall ignore the RESPONSE DATA LENGTH field;

638 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.3 Sequences of SSP frames

8.2.3.1 Sequences of SSP frames overview

Table 217 lists the sequences of SSP frames supporting the SCSI transport protocol services described in
9.2.1.

Table 217 – Sequences of SSP frames

Sequence Reference

Task management function 8.2.3.2


Non-data command 8.2.3.3
Write command 8.2.3.4
Read command 8.2.3.5
Bidirectional command 8.2.3.6

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 639


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.3.2 Task management function sequence of SSP frames

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.

SSP initiator port SSP target port


Send Task Management
Request () TASK frame Task Management
(INITIATOR PORT TRANSFER TAG = Request Received ()
command identifier)
Task Management
Received Task Management RESPONSE frame Function Executed ()
Function Executed () ( INITIATOR PORT TRANSFER TAG =
command identifer)
time time

Figure 201 – Task management function sequence of SSP frames

8.2.3.3 Non-data command sequence of SSP frames

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.

SSP initiator port SSP target port


Send SCSI
COMMAND frame SCSI Command
Command ()
(INITIATOR PORT TRANSFER TAG = Received ()
command identifier)
Send Command
Command Complete RESPONSE frame Complete ()
Received () (INITIATOR PORT TRANSFER TAG =
time command identifier) time

Figure 202 – Non-data command sequence of SSP frames

640 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.3.4 Write command sequence of SSP frames

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.

SSP initiator port SSP target port


Send SCSI
Command () COMMAND frame SCSI Command Received ()
(INITIATOR PORT TRANSFER TAG =
command identifier)
XFER_RDY frame Receive Data Out ()
(INITIATOR PORT TRANSFER TAG = command
identifier, TARGET PORT TRANSFER TAG = X)
SSP initiator
port replies to SSP target port sends
each XFER_RDY frames and
Write DATA frame receives corresponding write
XFER_RDY
with one or (INITIATOR PORT TRANSFER TAG = command DATA frames until all write
more write identifier, TARGET PORT TRANSFER TAG = X) data has been transferred
DATA frames
Data Out Received ()

Command RESPONSE frame


Complete (INITIATOR PORT TRANSFER TAG = Send Command Complete ()
Received () command identifier)
time time

Figure 203 – Write command sequence of SSP frames

8.2.3.5 Read command sequence of SSP frames

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.

SSP initiator port SSP target port


Send SCSI
Command () COMMAND frame
(INITIATOR PORT TRANSFER TAG = SCSI Command Received ()
command identifier)
Read DATA frame Send Data In ()
SSP target port
(INITIATOR PORT TRANSFER TAG = sends read DATA
command identifier) frames until all read
data has been
transferred
Data In Delivered ()

Command RESPONSE frame Send Command Complete ()


Complete (INITIATOR PORT TRANSFER TAG =
Received () command identifier)
time time

Figure 204 – Read command sequence of SSP frames

Working Draft SAS Protocol Layer - 5 (SPL-5) 641


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.3.6 Bidirectional command sequence of SSP frames

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.

SSP initiator port SSP target port


Send SCSI
Command () COMMAND frame SCSI Command Received ()
(INITIATOR PORT TRANSFER TAG =
command identifier)
XFER_RDY frame Receive Data Out ()
(INITIATOR PORT TRANSFER TAG =
command identifier,
TARGET PORT TRANSFER TAG = X)
SSP target port sends
SSP initiator XFER_RDY frames and
port replies to receives corresponding write
Write DATA frame DATA frames until all write
each
(INITIATOR PORT TRANSFER TAG = data has been transferred
XFER_RDY
command identifier,
with one or
TARGET PORT TRANSFER TAG = X)
more write Data Out Received () SSP target port
DATA frames chooses how to
interleave XFER_RDY
Read DATA frame Send Data In () and read DATA frames
(INITIATOR PORT TRANSFER TAG =
command identifier) SSP target port sends read
DATA frames until all read
data has been transferred
Data In Delivered ()

Command RESPONSE frame Send Command Complete ()


Complete (INITIATOR PORT TRANSFER TAG =
Received () command identifier)
time time

Figure 205 – Bidirectional command sequence of SSP frames

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.

8.2.4 SSP transport layer handling of link layer errors

8.2.4.1 SSP transport layer handling of link layer errors overview

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;

642 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.4.2 COMMAND frame - handling of link layer errors

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 643


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.4.3 TASK frame - handling of link layer errors

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.

8.2.4.4 XFER_RDY frame - handling of link layer errors

8.2.4.4.1 XFER_RDY frame overview

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.

8.2.4.4.2 XFER_RDY frame with transport layer retries enabled

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.

644 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.4.4.3 XFER_RDY frame with transport layer retries disabled

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.

8.2.4.5 Read DATA frame - handling of link layer errors

8.2.4.5.1 Read DATA frame overview

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.

8.2.4.5.2 Read DATA frame with transport layer retries enabled

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 645


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.4.5.3 Read DATA frame with transport layer retries disabled

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.

8.2.4.6 Write DATA frame - handling of link layer errors

8.2.4.6.1 Write DATA frame overview

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.

8.2.4.6.2 Write DATA frame with transport layer retries enabled

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.

646 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.4.6.3 Write DATA frame with transport layer retries disabled

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).

8.2.4.7 RESPONSE frame - handling of link layer errors

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.

8.2.5 SSP transport layer error handling summary

8.2.5.1 SSP transport layer error handling summary introduction

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).

8.2.5.2 SSP initiator port transport layer error handling summary

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 647


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

8.2.5.3 SSP target port transport layer error handling summary

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).

648 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 649


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.6 ST (transport layer for SSP ports) state machines

8.2.6.1 ST state machines overview

The ST state machines perform the following functions:


a) receive and process transport protocol service requests and transport protocol service responses
from the SCSI application layer;
b) receive and process other SAS connection management requests from the SCSI application layer;
c) send transport protocol service indications and transport protocol service confirmations to the SCSI
application layer;
d) send requests to the port layer to transmit frames and manage SAS connections; and
e) receive confirmations from the port layer.
The following confirmations between the ST state machines and the port layer:
a) Transmission Status; and
b) Frame Received,
include the following as arguments:
a) initiator port transfer tag;
b) Destination SAS Address; and
c) Source SAS Address,
and are used to route the confirmations to the correct ST state machines.

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

8.2.6.2.1 ST_I state machines overview

The ST_I state machines are as follows:


a) ST_IFR (initiator frame router) state machine (see 8.2.6.2.2); and
b) ST_ITS (initiator transport server) state machine (see 8.2.6.2.3).
Each SAS initiator port includes:
a) one ST_IFR state machine; and
b) one ST_ITS state machine for each possible command and task management function (i.e., for each
initiator port transfer tag).

650 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 206 shows the ST_I state machines.

ST_I (transport layer for SSP initiator ports) state machines

ST_IFR (initiator frame router) ST_ITS (initiator transport server)


ST_IFR:Initiator_Frame_Router ST_ITS1:Initiator_Start
Request
Send SCSI
Command
Send Task
Management
Request ST_ITS2:Initiator _
Send_Frame
Accept_Reject
OPENs
ST_ITS3:Prepare_Command

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

No Phys In Return To Start


Port Cancel
(to all state
machines) Data-In Arrived

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 651


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.6.2.2 ST_IFR (initiator frame router) state machine

8.2.6.2.2.1 ST_IFR state machine overview

The ST_IFR state machine performs the following functions:


a) receives Send SCSI Command and Send Task Management transport protocol service requests from
the SCSI application layer;
b) sends messages to the ST_ITS state machine;
c) receives messages from the ST_ITS state machine;
d) receives confirmations from the port layer;
e) sends transport protocol service confirmations to the SCSI application layer;
f) receives vendor specific requests from the SCSI application layer;
g) sends vendor specific confirmations to the SCSI application layer;
h) receives Accept_Reject OPENs requests from the SCSI application layer;
i) sends Accept_Reject OPENs requests to the port layer;
j) sends Nexus Loss event notifications to the SCSI application layer; and
k) sends Transport Reset event notifications to the SCSI application layer.
This state machine consists of one state.
This state machine shall be started after power on.

8.2.6.2.2.2 Processing transport protocol service requests

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;

652 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) initiator connection tag;


c) Source SAS Address set to the SAS address of the SSP initiator port;
d) Destination SAS Address;
e) retransmit bit;
f) initiator port transfer tag;
g) logical unit number;
h) task management function;
i) initiator port transfer tag to manage; and
j) request fence.
If the ST_ITS state machine for the initiator port transfer tag specified in the Send Task Management Request
is currently in use, then this state machine shall set the retransmit bit argument to one. If the ST_ITS state
machine for the initiator port transfer tag specified in the Send Task Management Request is not currently in
use, then this state machine shall set the retransmit bit argument to zero.

8.2.6.2.2.3 Processing Frame Received confirmations

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 653


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

8.2.6.2.2.4 Processing Transmission Complete and Reception Complete messages

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.

654 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.2.2.5 Processing miscellaneous requests

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 655


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

8.2.6.2.3 ST_ITS (initiator transport server) state machine

8.2.6.2.3.1 ST_ITS state machine overview

The ST_ITS state machine performs the following functions:


a) receives and processes messages from the ST_IFR state machine;
b) sends messages to the ST_IFR state machine;
c) sends request to the port layer regarding frame transmission;
d) receives confirmations from the port layer regarding frame transmission; and
e) receives HARD_RESET Received confirmations and No Phys In Port confirmations from the port
layer.
This state machine consists of the following states:
a) ST_ITS1:Initiator_Start state (see 8.2.6.2.3.2) (initial state);
b) ST_ITS2:Initiator_Send_Frame state (see 8.2.6.2.3.3);
c) ST_ITS3:Prepare_Command state (see 8.2.6.2.3.4);
d) ST_ITS4:Prepare_Task state (see 8.2.6.2.3.5);
e) ST_ITS5:Prepare_Data_Out state (see 8.2.6.2.3.6); and
f) ST_ITS6:Receive_Data_In state (see 8.2.6.2.3.7).
This state machine shall start in the ST_ITS1:Initiator_Start state after power on.
If this state machine receives a HARD_RESET Received confirmation or a No Phys In Port confirmation, then
this state machine shall transition to the ST_ITS1:Initiator_Start state.
This state machine shall maintain the state machine variables defined in table 219.

Table 219 – ST_ITS state machine variables

State machine variable Description

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

656 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state machine shall maintain the state machine arguments defined in table 220.

Table 220 – ST_ITS state machine arguments

State machine argument Description

Consists of the Command arguments received in the Request (Send


Command
Command) message
Task Consists of the arguments received in the Request (Send Task) message
Xfer_Rdy Consists of the arguments received in the XFER_RDY Arrived message
The location of the application client’s data-out buffer (i.e., the application client
Data-Out Buffer
buffer for write data)
The size in bytes of the application client’s data-out buffer (i.e., the application
Data-Out Buffer Size
client buffer for write data)
The size in bytes of the application client’s data-in buffer (i.e., the application
Data-In Buffer Size
client buffer for read data)

8.2.6.2.3.2 ST_ITS1:Initiator_Start state

8.2.6.2.3.2.1 State description

This state is the initial state of the ST_ITS state machine.


Upon entry into this state, this state shall set the Data-In Buffer Offset state machine variable to zero.
Upon entry into this state, this state shall set the Data-Out Buffer Offset state machine variable to zero.

8.2.6.2.3.2.2 Transition ST_ITS1:Initiator_Start to ST_ITS3:Prepare_Command

This transition shall occur after receiving a Request (Send Command) message.

8.2.6.2.3.2.3 Transition ST_ITS1:Initiator_Start to ST_ITS4:Prepare_Task

This transition shall occur after receiving a Request (Send Task) message.

8.2.6.2.3.3 ST_ITS2:Initiator_Send_Frame state

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 657


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

658 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 221 – Messages sent to the ST_IFR state machine

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 659


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

660 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Message sent to the ST_IFR


Condition
state machine a
The Write Data Length Xfer_Rdy state machine argument is set to zero.
Transmission Complete
(XFER_RDY Incorrect Write The Requested Offset Xfer_Rdy state machine argument plus the Write
Data Length) Data Length Xfer_Rdy state machine argument is greater than the
Data-Out Buffer Size state machine argument.
First burst is disabled, this is the first XFER_RDY frame for a command,
and the value in the Requested Offset Xfer_Rdy state machine argument is
not set to zero.
First burst is enabled, this is the first XFER_RDY frame for a command,
and the value in the Requested Offset Xfer_Rdy state machine argument is
not equal to the value indicated by the FIRST BURST SIZE field in the
Disconnect-Reconnect mode page (see 9.2.7.2.5).
Transport layer retries are disabled and the Requested Offset Xfer_Rdy
state machine argument is not equal to the Previous Requested Offset
Transmission Complete
state machine variable plus the Previous Write Data Length Field state
(XFER_RDY Requested Offset
machine variable.
Error)
Transport layer retries are enabled, the Retransmit Bit Xfer_Rdy state
machine argument is set to zero, and the Requested Offset Xfer_Rdy state
machine argument is not equal to the Previous Requested Offset state
machine variable plus the Previous Write Data Length state machine
variable.
Transport layer retries are enabled, this is not the first XFER_RDY frame
for the command, the Retransmit Bit Xfer_Rdy state machine argument is
set to one, and the Requested Offset Xfer_Rdy state machine argument is
not equal to the Previous Requested Offset state machine variable.
a
If more than one condition is true, then this state shall send the Transmission Complete (XFER_RDY
Incorrect Write Data Length) message to the ST_IFR state machine.

After this state verifies an XFER_RDY frame, this state shall:


a) set the Data-Out Buffer Offset state machine variable to the Requested Offset Xfer_Rdy state
machine argument;
b) set the Previous Requested Offset state machine variable to the Requested Offset Xfer_Rdy state
machine argument; and
c) set the Previous Write Data Length state machine variable to the Write Data Length Xfer_Rdy state
machine argument.

8.2.6.2.3.3.1 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS1:Initiator_Start

This transition shall occur after:


a) this state has sent one of the following to the ST_IFR state machine:
A) a Transmission Complete (Command Failed, ACK/NAK Timeout) message and the command
was for a non-data operation;
B) a Transmission Complete (Command Failed, Connection Failed) message;

Working Draft SAS Protocol Layer - 5 (SPL-5) 661


T10/BSR INCITS 554 Revision 11 18 January 2021

C) a Transmission Complete (Command Failed, NAK Received) message;


D) a Transmission Complete (Task Failed, ACK/NAK Timeout) message;
E) a Transmission Complete (Task Failed, Connection Failed) message;
F) a Transmission Complete (Task Failed, NAK Received) message;
G) a Transmission Complete (Data-Out Failed, ACK/NAK Timeout) message;
H) a Transmission Complete (Data-Out Failed, NAK Received) message;
I) a Transmission Complete (XFER_RDY Incorrect Write Data Length) message;
J) a Transmission Complete (XFER_RDY Requested Offset Error) message; or
K) a Transmission Complete (Cancel Acknowledged) message;
or
b) this state has received a Return To Start message or Return To Start argument, and has received:
A) confirmations for all Transmit Frame requests sent to the port layer; or
B) a Transmission Status (Cancel Acknowledged) confirmation.

8.2.6.2.3.3.2 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS5:Prepare_Data_Out

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.

This transition shall include a Retry argument and occur after:


a) this state receives one of the following confirmations or arguments for a write DATA frame:
A) Transmission Status (NAK Received);
B) Transmission Status (ACK/NAK Timeout); or
C) Transmission Status (Connection Lost without ACK/NAK);
b) the RETRY DATA FRAMES bit is set to one in the XFER_RDY frame for the write operation;
c) the Data-Out Buffer Offset state machine variable is set to the Requested Offset Xfer_Rdy state
machine argument;
d) all write DATA frames that have received a Transmission Status (Frame Transmitted) confirmation
have received a Transmission Status confirmation; and
e) the vendor specific number of retries, if any, for the write DATA frame has not been reached.

8.2.6.2.3.3.3 Transition ST_ITS2:Initiator_Send_Frame to ST_ITS6:Receive_Data_In

This transition shall occur:


a) after receiving a Transmission Status (Frame Transmitted) confirmation for a COMMAND frame for a
command requesting a read operation.

NOTE 57 - This transition occurs even if this state has not received a Transmission Status (ACK Received)
for the COMMAND frame.

662 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.6.2.3.4 ST_ITS3:Prepare_Command state

8.2.6.2.3.4.1 State description

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.

8.2.6.2.3.4.2 Transition ST_ITS3:Prepare_Command to ST_ITS2:Initiator_Send_Frame

This transition shall occur after this state:


a) constructs a COMMAND frame;
b) receives a Cancel message; or
c) receives a Return To Start message.
This transition shall include:
a) if neither a Cancel message nor a Return to Start message was received, then the COMMAND frame
as an argument;
b) if a Cancel message was received, then a Cancel argument; or
c) if a Return To Start message was received, then a Return To Start argument.

8.2.6.2.3.5 ST_ITS4:Prepare_Task state

8.2.6.2.3.5.1 State description

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 663


T10/BSR INCITS 554 Revision 11 18 January 2021

i) set the 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 Task argument;
l) in the information unit, set the TASK MANAGEMENT FUNCTION field to the Task Management Function
Task argument;
m) in the information unit, set the INITIATOR PORT TRANSFER TAG TO MANAGE field to the Initiator Port
Transfer Tag Task argument of the command to be managed; and
n) no fill bytes.

8.2.6.2.3.5.2 Transition ST_ITS4:Prepare_Task to ST_ITS2:Initiator_Send_Frame

This transition shall occur after this state:


a) constructs a TASK frame;
b) receives a Cancel message; or
c) receives a Return To Start message.
This transition shall include:
a) if neither a Cancel message nor a Return to Start message was received, then the TASK frame as an
argument;
b) if a Cancel message was received, then a Cancel argument; or
c) if a Return To Start message was received, then a Return To Start argument.

8.2.6.2.3.6 ST_ITS5:Prepare_Data_Out state

8.2.6.2.3.6.1 State description

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.

664 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.2.3.6.2 Transition ST_ITS5:Prepare_Data_Out to ST_ITS2:Intiator_Send_Frame

This transition shall occur after this state:


a) constructs a write DATA frame;
b) receives a Cancel message; or
c) receives a Return To Start message.
This transition shall include the received Transmission Status, if any, as an argument and:
a) if neither a Cancel message nor a Return to Start message was received, then the write DATA frame
as an argument;
b) if a Cancel message was received, then a Cancel argument; or
c) if a Return To Start message was received, then a Return To Start argument.

8.2.6.2.3.7 ST_ITS6:Receive_Data_In state

8.2.6.2.3.7.1 State description

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

Message sent to the ST_IFR


Condition
state machine a
Transport layer retries are disabled and the DATA OFFSET field in the read
DATA frame is not equal to the Data-In Buffer Offset state machine
Reception Complete (Data Offset variable.
Error)
The DATA OFFSET field in the read DATA frame is greater than the Data-In
Buffer Size state machine argument.
The number of bytes in the DATA field in the read Data information unit plus
Reception Complete (Too Much
the Data-In Buffer Offset state machine variable is greater than the Data-In
Read Data)
Buffer Size state machine argument.
Either:
a) the number of bytes in the DATA field in the read Data information unit
Reception Complete (Information
is zero; or
Unit Too Short)
b) this is not the last read DATA frame for the command and the NUMBER
OF FILL BYTES field is not set to 00b.
a
If more than one condition is true, then this state shall select which message to send to the ST_IFR state
machine using the following order:
1) Reception Complete (Data Offset Error);
2) Reception Complete (Too Much Read Data); or
3) Reception Complete (Information Unit Too Short).

Working Draft SAS Protocol Layer - 5 (SPL-5) 665


T10/BSR INCITS 554 Revision 11 18 January 2021

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.2.3.7.2 Transition ST_ITS6:Receive_Data_In to ST_ITS1:Initiator_Start

This transition shall occur after this state:


a) sends one of the following to the ST_IFR state machine:
A) a Reception Complete (Data Offset Error) message;
B) a Reception Complete (Too Much Read Data) message;
C) a Reception Complete (Incorrect Data Length) message; or
D) a Reception Complete (Cancel Acknowledged) message;
or
b) receives a Return To Start message.

8.2.6.2.3.7.3 Transition ST_ITS6:Receive_Data_In to ST_ITS2:Initiator_Send_Frame

This transition shall occur:


a) after this state receives a Transmission Status (NAK Received) confirmation for a COMMAND frame
for a command requesting a read operation.

666 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.6.3 ST_T (transport layer for SSP target ports) state machines

8.2.6.3.1 ST_T state machines overview

The ST_T state machines are as follows:


a) ST_TFR (target frame router) state machine (see 8.2.6.3.2); and
b) ST_TTS (target transport server) state machine (see 8.2.6.3.3).
The SAS target port includes:
a) one ST_TFR state machine; and
b) one ST_TTS state machine for each possible command and task management function (i.e., for each
initiator port transfer tag).
This state machine may maintain the timers listed in table 224.

Table 224 – ST_T state machine timers

Timer Initial value

The value in the INITIATOR RESPONSE TIMEOUT field in the


Initiator Response Timeout
Protocol Specific Port mode page (see 9.2.7.4).

Working Draft SAS Protocol Layer - 5 (SPL-5) 667


T10/BSR INCITS 554 Revision 11 18 January 2021

Figure 207 shows the ST_T state machines.

ST_T (transport layer for SSP target ports) state machines

ST_TFR (target frame router) ST_TTS (target transport server)


ST_TFR:Target_Frame_Router ST_TTS1:Target_Start
Request
Send
Data-In
Receive
Data-Out
Send ST_TTS2:Target_
Command Send_Frame
Complete
Task Management Power ST_TTS6:Prepare_
Function Executed Loss Response
Terminate Expected
Data Transfer
Accept_Reject ST_TTS3:Prepare_
OPENs Data_In

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

HARD_RESET Reception Complete


Received Data-Out Arrived
(to all state ACK
Accept_Reject
machines) Transmitted
OPENs

Figure 207 – ST_T (transport layer for SSP target ports) state machines

668 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.6.3.2 ST_TFR (target frame router) state machine

8.2.6.3.2.1 ST_TFR state machine overview

The ST_TFR state machine performs the following functions:


a) receives confirmations from the port layer;
b) receives transport protocol service requests from the SCSI application layer;
c) sends transport protocol service indications to the SCSI application layer;
d) sends messages to the ST_TTS state machine;
e) receives messages from the ST_TTS state machine;
f) receives Accept_Reject OPENs requests from the SCSI application layer;
g) sends Accept_Reject OPENs requests to the port layer;
h) sends Nexus Loss event notifications to the SCSI application layer;
i) sends Transport Reset event notifications to the SCSI application layer; and
j) sends Power Loss Expected event notifications to the SCSI application layer.
This state machine consists of one state.
This state machine shall be started after power on.
If this state receives a NOTIFY Received (Power Loss Expected) confirmation, then this state shall:
a) send a Cancel message to all the ST_TTS state machines; and
b) send a Power Loss Expected confirmation to the SCSI application layer.

8.2.6.3.2.2 Processing Frame Received confirmations

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 669


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

670 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.3.2.3 Processing transport protocol service requests and responses

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 671


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

672 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Task Management Function Executed transport


Request (Send Transport Response)
protocol service response Service Response
message Service Response argument
argument received
FUNCTION COMPLETE Task Management Function Complete
FUNCTION SUCCEEDED Task Management Function Succeeded
FUNCTION REJECTED Task Management Function Not Supported
INCORRECT LOGICAL UNIT NUMBER Incorrect Logical Unit Number
SERVICE DELIVERY OR TARGET FAILURE - Overlapped Initiator Port Transfer Tag
Overlapped Initiator Port Transfer Tag Attempted Attempted

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 673


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 226 – Confirmations sent to the SCSI application layer

Transport protocol service confirmation sent to


Message received from ST_TTS state machine
SCSI application layer

Transmission Complete (Xfer_Rdy Delivered) None


Transmission Complete (Response Delivered) None
Transmission Complete (Response Failed) a None
Transmission Complete (Data Transfer Terminated) Data Transfer Terminated
Data-In Delivered with the Delivery Result argument
Transmission Complete (Data-In Delivered)
set to DELIVERY SUCCESSFUL
Data-Out Received with the Delivery Result
Transmission Complete (Xfer_Rdy Failed, NAK
argument set to DELIVERY FAILURE - NAK
Received)
RECEIVED
Data-Out Received with the Delivery Result
Transmission Complete (Xfer_Rdy Failed, Connection
argument set to DELIVERY FAILURE -
Failed)
CONNECTION FAILED
Transmission Complete (Data-In Failed, NAK Data-In Delivered with the Delivery Result argument
Received) set to DELIVERY FAILURE - NAK RECEIVED
Transmission Complete (Data-In Failed, ACK/NAK Data-In Delivered with the Delivery Result argument
Timeout) set to DELIVERY FAILURE - ACK/NAK TIMEOUT
Transmission Complete (Data-In Failed, Connection Data-In Delivered with the Delivery Result argument
Lost without ACK/NAK) set to DELIVERY FAILURE - CONNECTION FAILED
Data-Out Received with the Delivery Result
Reception Complete (Data-Out Received)
argument set to DELIVERY SUCCESSFUL
Data-Out Received with the Delivery Result
Reception Complete (Data Offset Error) argument set to DELIVERY FAILURE - DATA
OFFSET ERROR
Data-Out Received with the Delivery Result
Reception Complete (Too Much Write Data) argument set to DELIVERY FAILURE - TOO MUCH
WRITE DATA
Data-Out Received with the Delivery Result
Reception Complete (Information Unit Too Short) argument set to DELIVERY FAILURE -
INFORMATION UNIT TOO SHORT
Data-Out Received with the Delivery Result
Reception Complete (Initiator Response Timeout) argument set to DELIVERY FAILURE - INITIATOR
RESPONSE TIMEOUT
Reception Complete (Data Transfer Terminated) Data Transfer Terminated
a
SAM-5 does not define a mechanism for the SCSI device server to determine the result of its Send
Command Complete and Task Management Function Executed transport protocol service response
calls.

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.

674 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.2.6.3.2.4 Processing miscellaneous requests and confirmations

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.

8.2.6.3.3 ST_TTS (target transport server) state machine

8.2.6.3.3.1 ST_TTS state machine overview

The ST_TTS state machine performs the following functions:


a) receives and processes messages from the ST_TFR state machine;
b) sends messages to the ST_TFR state machine;
c) communicates with the port layer using requests and confirmations regarding frame transmission;
and
d) receives HARD_RESET Received confirmations and No Phys In Port confirmations from the port
layer.
This state machine consists of the following states:
a) ST_TTS1:Target_Start (see 8.2.6.3.3.2) (initial state);
b) ST_TTS2:Target_Send_Frame (see 8.2.6.3.3.3);
c) ST_TTS3:Prepare_Data_In (see 8.2.6.3.3.4);
d) ST_TTS4:Prepare_Xfer_Rdy (see 8.2.6.3.3.5);
e) ST_TTS5:Receive_Data_Out (see 8.2.6.3.3.6); and
f) ST_TTS6:Prepare_Response (see 8.2.6.3.3.7).
This state machine shall start in the ST_TTS1:Target_Start state after power on.
If this state machine receives a HARD_RESET Received confirmation or a No Phys In Port confirmation, then
this state machine shall transition to the ST_TTS1:Target_Start state.

Working Draft SAS Protocol Layer - 5 (SPL-5) 675


T10/BSR INCITS 554 Revision 11 18 January 2021

The state machine shall maintain the state machine variables defined in table 227.

Table 227 – ST_TTS state machine variables

State machine variable Description

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.

Table 228 – ST_TTS state machine arguments

State machine argument Description

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)

8.2.6.3.3.2 ST_TTS1:Target_Start state

8.2.6.3.3.2.1 State description

This state is the initial state of the ST_TTS state machine.


Upon entry into this state, this state shall:
a) set the Read Data Offset state machine variable to the Application Client Buffer Offset Data-In state
machine argument;
b) set the Balance Point Read Data Offset state machine variable to the Application Client Buffer Offset
Data-In state machine argument;
c) set the Read Data Frames Transmitted state machine variable to zero;

676 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.3.3.2.2 Transition ST_TTS1:Target_Start to ST_TTS3:Prepare_Data_In

This transition shall occur:


a) after receiving a Request (Send Data-In) message.

8.2.6.3.3.2.3 Transition ST_TTS1:Target_Start to ST_TTS4:Prepare_Xfer_Rdy

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.

8.2.6.3.3.2.4 Transition ST_TTS1:Target_Start to ST_TTS5:Receive_Data_Out

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.

8.2.6.3.3.2.5 Transition ST_TTS1:Target_Start to ST_TTS6:Prepare_Response

This transition shall occur:


a) after receiving a Request (Send Transport Response) message.
The transition shall include:
a) the Transport Response arguments.

8.2.6.3.3.3 ST_TTS2:Target_Send_Frame state

8.2.6.3.3.3.1 State description

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 677


T10/BSR INCITS 554 Revision 11 18 January 2021

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 set to zero.
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 or argument is Transmission Status (I_T Nexus Loss), then this state shall send a
Transmission Complete (I_T Nexus Loss) message to the ST_TFR state machine. The Transmission
Complete message shall include the initiator port transfer tag as an argument.
If the confirmation or argument is not Transmission Status (Frame Transmitted) or Transmission Status (I_T
Nexus Loss), then this state shall send the Transmission Complete message defined in table 229 to the
ST_TFR state machine. The message shall include the following arguments:
a) Initiator Port Transfer Tag; and
b) arguments received with the Transmission Status confirmation.
If the confirmation is Transmission Status (Frame Transmitted) and the Transmit Frame request was for:
a) an XFER_RDY frame; or
b) a RESPONSE frame,
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 read
DATA frame, then this state shall:
a) increment the Read Data Frames Transmitted state machine variable by one; and
b) set the Read Data Offset state machine variable to the current Read Data Offset state machine
variable plus the number of read data bytes transmitted in the DATA frame associated with the
Transmission Status (Frame Transmitted) confirmation.
If the confirmation is Transmission Status (ACK Received) and the Transmit Frame request was for a read
DATA frame, then this state shall increment the Read Data Frames ACKed state machine variable by one.
If the confirmation is Transmission Status (Frame Transmitted), the Transmit Frame request was for a read
DATA frame, and the Read Data Offset state machine variable is equal to the Read Data Buffer End state
machine variable, then this state shall wait to receive:
a) Transmission Status (ACK Received) confirmations or arguments for each outstanding read DATA
frame (i.e., Read Data Frames Transmitted state machine variable equals the Read Data Frames
ACKed state machine variable); or
b) 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).

678 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 679


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 229 – Messages sent to the ST_TFR state machine

Confirmation received from


the port layer or argument Conditions under which confirmation Message sent to the
received from was received ST_TFR state machine
ST_TTS3:Prepare_Data_In

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)

680 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 230 defines messages that this state shall send to the ST_TFR state machine upon receipt of the listed
confirmations and arguments.

Table 230 – Additional messages sent to the ST_TFR state machine

Confirmation received from the port layer or


Message sent to the ST_TFR state machine
argument received from ST_TTS3:Prepare_Data_In

Transmission Status (Break Received) Transmission Complete (Break Occurred)

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.

8.2.6.3.3.3.2 Transition ST_TTS2:Target_Send_Frame to ST_TTS1:Target_Start

This transition shall occur:


a) after sending a Transmission Complete message other than the Transmission Complete (Xfer_Rdy
Delivered) message to the ST_TFR state machine.

8.2.6.3.3.3.3 Transition ST_TTS2:Target_Send_Frame to ST_TTS3:Prepare_Data_In

This transition shall occur:


a) after receiving a Transmission Status (Frame Transmitted) confirmation for a read DATA frame if the
Read Data Offset state machine variable is less than the Read Data Buffer End state machine
variable (i.e., there is more read data to transfer).
If transport layer retries are enabled and the vendor specific number of retries, if any, for the read DATA frame
has not been reached, then this transition shall occur and include a Retry argument after receiving one of the
following confirmations for a read DATA frame:
a) Transmission Status (NAK Received);
b) Transmission Status (ACK/NAK Timeout); or
c) Transmission Status (Connection Lost Without ACK/NAK).

8.2.6.3.3.3.4 Transition ST_TTS2:Target_Send_Frame to ST_TTS5:Receive_Data_Out

This transition shall occur:


a) after sending a Transmission Complete (Xfer_Rdy Delivered) message to the ST_TFR state machine.

Working Draft SAS Protocol Layer - 5 (SPL-5) 681


T10/BSR INCITS 554 Revision 11 18 January 2021

8.2.6.3.3.4 ST_TTS3:Prepare_Data_In state

8.2.6.3.3.4.1 State description

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;

682 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.3.3.4.2 Transition ST_TTS3:Prepare_Data_In to ST_TTS2:Target_Send_Frame

This transition shall occur after this state:


a) constructs a read DATA frame; or
b) receives a Cancel message.
This transition shall include the received Transmission Status, if any, as an argument and if a Cancel message
was:
a) not received, then the read DATA frame as an argument; or
b) received, then a Cancel argument.

8.2.6.3.3.5 ST_TTS4:Prepare_Xfer_Rdy state

8.2.6.3.3.5.1 State description

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 683


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

8.2.6.3.3.5.2 Transition ST_TTS4:Prepare_Xfer_Rdy to ST_TTS2:Target_Send_Frame

This transition shall occur after this state:


a) constructs an XFER_RDY frame; or
b) receives a Cancel message.
This transition shall include if a Cancel message was:
a) not received, then the XFER_RDY frame as an argument; or
b) received, then a Cancel argument.

8.2.6.3.3.6 ST_TTS5:Receive_Data_Out state

8.2.6.3.3.6.1 State description

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

Message sent to the ST_TFR


Condition
state machine a

Transport layer retries are disabled and the DATA OFFSET field is not equal
to the Write Data Offset state machine variable.

Reception Complete (Data Offset The DATA OFFSET field is:


Error) a) less than the Requested Write Data Offset state machine variable; or
b) greater than or equal to the Requested Write Data Offset state
machine variable plus the Requested Write Data Length state
machine variable.
The number of bytes in the DATA field in the write Data information unit
Reception Complete (Too Much
plus the Write Data Offset state machine variable is greater than the
Write Data)
Request Byte Count Data-Out state machine argument.
Either:
a) the number of bytes in the DATA field in the write Data information unit
Reception Complete (Information
is zero; or
Unit Too Short)
b) this is not the last write DATA frame for the command and the
NUMBER OF FILL BYTES field for the frame is not set to 00b.
a
If more than one condition is true, then this state shall select which message to send to the ST_TFR state
machine using the following order:
1) Reception Complete (Data Offset Error);
2) Reception Complete (Too Much Write Data); or
3) Reception Complete (Information Unit Too Short).

684 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

8.2.6.3.3.6.2 Transition ST_TTS5:Receive_Data_Out to ST_TTS1:Target_Start

This transition shall occur after sending a Reception Complete message to the ST_TFR state machine.

8.2.6.3.3.6.3 Transition ST_TTS5:Receive_Data_Out to ST_TTS4:Prepare_Xfer_Rdy

This transition shall occur:


1) if the Write Data Offset state machine variable is less than Request Byte Count Data-Out state
machine argument plus the Application Client Buffer Offset Data-Out state machine argument and

Working Draft SAS Protocol Layer - 5 (SPL-5) 685


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

8.2.6.3.3.7 ST_TTS6:Prepare_Response state

8.2.6.3.3.7.1 State description

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.

686 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Request (Send Transport Response)


RESPONSE frame RESPONSE DATA field
message Service Response argument

Invalid Frame INVALID FRAME


Task Management Function Complete TASK MANAGEMENT FUNCTION COMPLETE
Task Management Function Succeeded TASK MANAGEMENT FUNCTION SUCCEEDED
Task Management Function Not Supported TASK MANAGEMENT FUNCTION NOT SUPPORTED
Task Management Function Failed TASK MANAGEMENT FUNCTION FAILED
Incorrect Logical Unit Number INCORRECT LOGICAL UNIT NUMBER
Overlapped Initiator Port Transfer Tag OVERLAPPED INITIATOR PORT TRANSFER TAG
Attempted ATTEMPTED

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.

8.2.6.3.3.7.2 Transition ST_TTS6:Prepare_Response to ST_TTS2:Target_Send_Frame

This transition shall occur:


a) after this state constructs a RESPONSE frame.
This transition shall include, if a Cancel message was:
a) not received, then the RESPONSE frame as an argument; or
b) received, then a Cancel argument.

8.3 STP transport layer

8.3.1 Initial FIS

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 687


T10/BSR INCITS 554 Revision 11 18 January 2021

8.3.2 BIST Activate FIS

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).

8.3.3 TT (transport layer for STP ports) state machines

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.

8.4 SMP transport layer

8.4.1 SMP transport layer overview

Table 233 defines the SMP frame format.

Table 233 – SMP frame format

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.

Table 234 – SMP FRAME TYPE field

Code Name Frame type Originator Reference

40h SMP_REQUEST SMP function request SMP initiator port 8.4.2


41h SMP_RESPONSE SMP function response SMP target port 8.4.3
All others Reserved

The number of frame-type dependent bytes shall be 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 CRC field contains a CRC value (see 6.7) that is computed over the entire SMP frame prior to the CRC field
and shall begin on a four-byte boundary. The CRC field is checked by the SMP link layer (see 6.22).

688 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.4.2 SMP_REQUEST frame

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.

Table 235 – 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 CRC field is defined in 8.4.1.

8.4.3 SMP_RESPONSE frame

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.

Table 236 – 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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 689


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

The CRC field is defined in 8.4.1.

8.4.4 Sequence of SMP frames

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 initiator port SMP target port

SMP_REQUEST

SMP_RESPONSE
time time

Figure 208 – Sequence of SMP frames

8.4.5 MT (transport layer for SMP ports) state machines

8.4.5.1 SMP transport layer state machines overview

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

8.4.5.2.1 MT_IP state machine overview

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);

690 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

b) MT_IP2:Send (see 8.4.5.2.3); and


c) MT_IP3:Receive (see 8.4.5.2.4).
This state machine shall start in the MT_IP1:Idle state.
Figure 209 shows the MT_IP state machine.

MT_IP (transport layer for SMP initiator ports)

MT_IP1:Idle MT_IP2:Send MT_IP3:Receive


Send SMP Open Failed
Function
Request

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

8.4.5.2.2 MT_IP1:Idle state

8.4.5.2.2.1 State description

This state is the initial state of the MT_IP state machine.


This state waits for a Send SMP Function Request request, which includes the following arguments:
a) Connection Rate;
b) Destination SAS Address; and
c) Request Bytes.

8.4.5.2.2.2 Transition MT_IP1:Idle to MT_IP2:Send

This transition shall occur:


a) after a Send SMP Function Request request is received.

Working Draft SAS Protocol Layer - 5 (SPL-5) 691


T10/BSR INCITS 554 Revision 11 18 January 2021

This transition shall include the following arguments:


a) Connection Rate;
b) Destination SAS Address; and
c) Request Bytes.

8.4.5.2.3 MT_IP2:Send state

8.4.5.2.3.1 State description

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.

8.4.5.2.3.2 Transition MT_IP2:Send to MT_IP1:Idle

This transition shall occur after:


a) receiving either a Connection Closed confirmation or a Transmission Status confirmation other than a
Transmission Status (Frame Transmitted) confirmation; and
b) sending an Open Failed confirmation to the management application layer.

8.4.5.2.3.3 Transition MT_IP2:Send to MT_IP3:Receive

This transition shall occur:


a) after receiving a Transmission Status (Frame Transmitted) confirmation.

8.4.5.2.4 MT_IP3:Receive state

8.4.5.2.4.1 State description

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.2.4.2 Transition MT_IP3:Receive to MT_IP1:Idle

This transition shall occur after one of the following:


a) sending a Received SMP Function Complete confirmation; or
b) sending an SMP Frame Transmit Receive Failure confirmation.

692 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

8.4.5.3 MT_TP (transport layer for SMP target ports) state machine

8.4.5.3.1 MT_TP state machine overview

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_TP (transport layer for SMP target ports)

MT_TP1:Idle MT_TP2:Respond

SMP Send SMP


Function Response
Received Frame Transmit Frame
Received

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.

Table 237 – MT_TP time limits

Time limit Value Description

Maximum time from receiving an SMP_REQUEST frame to


SMP Response time limit 1 900 µs
transmitting an SMP_RESPONSE frame

8.4.5.3.2 MT_TP1:Idle state

8.4.5.3.2.1 State description

This state is the initial state of the MT_TP state machine.

Working Draft SAS Protocol Layer - 5 (SPL-5) 693


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

8.4.5.3.2.2 Transition MT_TP1:Idle to MT_TP2:Respond

This transition shall occur:


a) after sending an SMP Function Received confirmation.

8.4.5.3.3 MT_TP2:Respond state

8.4.5.3.3.1 State description

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.

8.4.5.3.3.2 Transition MT_TP2:Respond to MT_TP1:Idle

This transition shall occur after one of the following:


a) receiving a Transmission Status (Frame Transmitted) confirmation; or
b) sending an SMP Connection Closed confirmation.

694 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9 Application layer

9.1 Application layer overview

The application layer defines SCSI, ATA, and management specific features.

9.2 SCSI application layer

9.2.1 SCSI transport protocol services

9.2.1.1 SCSI transport protocol services overview

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]))

Working Draft SAS Protocol Layer - 5 (SPL-5) 695


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 238 – Execute Command procedure call transport protocol services

Transport protocol service I/T a SSP implementation Reference


Command and status
Send SCSI Command request I COMMAND frame 9.2.1.2
SCSI Command Received indication T Receipt of the COMMAND frame 9.2.1.3
Send Command Complete response T RESPONSE frame 9.2.1.4
Receipt of the RESPONSE frame or
Command Complete Received
I problem transmitting the COMMAND 9.2.1.5
confirmation
frame
Data-In delivery b
Send Data-In request T Read DATA frames 9.2.1.6
Receipt of ACKs for the read DATA
Data-In Delivered confirmation T 9.2.1.7
frames
Data-Out delivery b
Receive Data-Out request T XFER_RDY frame 9.2.1.8
Data-Out Received confirmation T Receipt of write DATA frames 9.2.1.9
b
Terminate Data Transfer
Terminate Data Transfer request T 9.2.1.10
Data Transfer Terminated confirmation T 9.2.1.11
a
I/T indicates whether the SSP initiator port (I) or the SSP target port (T) implements the transport protocol
service.
b
Data transfer transport protocol services for SCSI initiator ports are not specified by SAM-5.

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])).

696 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Transport protocol service I/T a SSP implementation Reference

Task management

Send Task Management Request request I TASK frame 9.2.1.12

Task Management Request Received


T Receipt of the TASK frame 9.2.1.13
indication

Task Management Function Executed


T RESPONSE frame 9.2.1.14
response

Received Task Management Function Receipt of the RESPONSE frame or


I 9.2.1.15
Executed confirmation problem transmitting the TASK frame
a
I/T indicates whether the SSP initiator port (I) or the SSP target port (T) implements the transport protocol
service.

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.

9.2.1.2 Send SCSI Command SCSI transport protocol service

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]))

Working Draft SAS Protocol Layer - 5 (SPL-5) 697


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Argument SAS SSP implementation

I_T_L nexus, where:


a) I specifies the SSP initiator port to send the COMMAND frame;
I_T_L nexus b) T specifies the SSP target port to which the COMMAND frame is to be sent;
and
c) L specifies the LOGICAL UNIT NUMBER field in the COMMAND frame header.

Command Identifier Specifies the INITIATOR PORT TRANSFER TAG field in the COMMAND frame header.

CDB Specifies the CDB field in the COMMAND frame.

Task Attribute Specifies the TASK ATTRIBUTE field in the COMMAND frame.

[Data-In Buffer Size] Maximum of 232 bytes. a

[Data-Out Buffer] Internal to the SSP initiator port.

[Data-Out Buffer Size] Maximum of 232 bytes. a

[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.

9.2.1.3 SCSI Command Received SCSI transport protocol service

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]))

698 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Argument SAS SSP implementation

I_T_L nexus, where:


a) I indicates the SSP initiator port that sent the COMMAND frame;
b) T indicates the SSP target port that received the COMMAND frame;
I_T_L nexus
and
c) L indicates the value of the LOGICAL UNIT NUMBER field in the
COMMAND frame header.

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 the value of the COMMAND PRIORITY field in the COMMAND


[Command Priority]
frame.

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).

9.2.1.4 Send Command Complete SCSI transport protocol service

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 ().

Working Draft SAS Protocol Layer - 5 (SPL-5) 699


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Argument SAS SSP implementation

I_T_L nexus, where:


a) I specifies the SSP initiator port to which the RESPONSE frame is to be sent;
I_T_L nexus
b) T specifies the SSP target port to send the RESPONSE frame; and
c) L specifies the LOGICAL UNIT NUMBER field in the RESPONSE frame header.

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 Specifies the STATUS 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.

9.2.1.5 Command Complete Received SCSI transport protocol service

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))

700 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Argument SAS SSP implementation

I_T_L nexus, where:


a) I indicates the SSP initiator port that received the RESPONSE frame;
I_T_L nexus b) T indicates the SSP target port that sent the RESPONSE frame; and
c) L indicates the value of the LOGICAL UNIT NUMBER field in the RESPONSE frame
header or COMMAND frame header.

Indicates the value of the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame
Command Identifier
header or COMMAND frame header.

[Data-In Buffer] Internal to the SSP initiator port.

[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).

9.2.1.6 Send Data-In SCSI transport protocol service

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 701


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 244 shows how the arguments to the Send Data-In SCSI transport protocol service are used.

Table 244 – Send Data-In SCSI transport protocol service arguments

Argument SAS SSP implementation

I_T_L nexus, where:


a) I specifies the SSP initiator port to which the read DATA frame is to
be sent;
I_T_L nexus
b) T specifies the SSP target port to send the read DATA frame; and
c) L specifies the LOGICAL UNIT NUMBER field in the read DATA frame
header.

Specifies the INITIATOR PORT TRANSFER TAG field in the read DATA frame
Command Identifier
header.

Device Server Buffer Internal to the SCSI device server.

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.

9.2.1.7 Data-In Delivered SCSI transport protocol service

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.

Table 245 – Data-In Delivered SCSI transport protocol service arguments

Argument SAS SSP implementation

I_T_L nexus, where:


a) I indicates the SSP initiator port that sent the read DATA frame;
I_T_L nexus b) T indicates the SSP target port that received the read DATA frame; and
c) L indicates the value of the LOGICAL UNIT NUMBER field in the read DATA frame
header.

Indicates the value of the INITIATOR PORT TRANSFER TAG field in the read DATA frame
Command Identifier
header.

From the response to the outgoing read DATA frame:


Delivery Result a) DELIVERY SUCCESSFUL: The read DATA frame received an ACK; or
b) DELIVERY FAILURE: The read DATA frame received a NAK or no response.

9.2.1.8 Receive Data-Out SCSI transport protocol service

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))

702 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 246 – Receive Data-Out SCSI transport protocol service arguments

Argument SAS SSP implementation

I_T_L nexus, where:


a) I specifies the SSP initiator port to which the XFER_RDY frame is to
be sent;
I_T_L nexus
b) T specifies the SSP target port to send the XFER_RDY frame; and
c) L specifies the LOGICAL UNIT NUMBER field in the XFER_RDY frame
header.

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.

Device Server Buffer Internal to the SCSI device server.

9.2.1.9 Data-Out Received SCSI transport protocol service

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))

Working Draft SAS Protocol Layer - 5 (SPL-5) 703


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 247 shows how the arguments to the Data-Out Received SCSI transport protocol service are
determined.

Table 247 – Data-Out Received SCSI transport protocol service arguments

Argument SAS SSP implementation

I_T_L nexus, where:


a) I indicates the SSP initiator port to which the XFER_RDY frame was sent;
I_T_L nexus b) T indicates the SSP target port that sent the XFER_RDY frame; and
c) L indicates the value of the LOGICAL UNIT NUMBER field in the XFER_RDY frame
header.

Indicates the value of the INITIATOR PORT TRANSFER TAG field in the XFER_RDY frame
Command Identifier
header.

From the response to the XFER_RDY:


a) DELIVERY SUCCESSFUL: The XFER_RDY frame was transmitted without
Delivery Result error and all the write DATA frames for the requested write data were received;
or
b) DELIVERY FAILURE: The XFER_RDY frame received a NAK or no response.

9.2.1.10 Terminate Data Transfer SCSI transport protocol service request

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

Argument SAS SSP implementation

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.

9.2.1.11 Data Transfer Terminated SCSI transport protocol service confirmation

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])

704 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Argument SAS SSP implementation

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.

9.2.1.12 Send Task Management Request SCSI transport protocol service

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

Argument SAS SSP implementation

I_T nexus or I_T_L nexus (depending on the Function Identifier), where:


a) I specifies the SSP initiator port to send the TASK frame;
Nexus
b) T specifies the SSP target port to which the TASK frame is sent; and
c) L specifies the LOGICAL UNIT NUMBER field in the TASK frame header, if any.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 705


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.1.13 Task Management Request Received SCSI transport protocol service

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

Argument SAS SSP implementation

I_T nexus or I_T_L nexus (depending on the Function Identifier), where:


a) I indicates the SSP initiator port that sent the TASK frame;
Nexus
b) T indicates the SSP target port that received the TASK frame; and
c) L indicates the LOGICAL UNIT NUMBER field in the TASK frame header, if any.

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.

9.2.1.14 Task Management Function Executed SCSI transport protocol service

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 ().

706 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Argument SAS SSP implementation

I_T_L nexus, where:


a) I specifies the SSP initiator port to which the RESPONSE frame is sent;
Nexus
b) T specifies the SSP target port to send the RESPONSE frame; and
c) L specifies the logical unit that is sending the response frame, if any.

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))

Working Draft SAS Protocol Layer - 5 (SPL-5) 707


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Argument SAS SSP implementation

I_T nexus or I_T_L nexus (depending on the function), where:


a) I indicates the SSP initiator port that received the RESPONSE frame;
b) T indicates the SSP target port that sent the RESPONSE frame; and
Nexus c) L, if any, indicates the logical unit that sent the response frame and is indicated by
the LOGICAL UNIT NUMBER field of the TASK frame with an INITIATOR PORT TRANSFER
TAG field equal to the INITIATOR PORT TRANSFER TAG field in the RESPONSE frame
header.

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

Indicates the response to the TASK frame:


a) FUNCTION COMPLETE: The RESPONSE frame contains a DATAPRES field set to
RESPONSE_DATA and a RESPONSE CODE field set to TASK MANAGEMENT
FUNCTION COMPLETE;
b) FUNCTION SUCCEEDED: The RESPONSE frame contains a DATAPRES field set
to RESPONSE_DATA and a RESPONSE CODE field set to TASK MANAGEMENT
FUNCTION SUCCEEDED;
c) FUNCTION REJECTED: The RESPONSE frame contains a DATAPRES field set to
RESPONSE_DATA and a RESPONSE CODE field set to TASK MANAGEMENT
FUNCTION NOT SUPPORTED;
Service Response d) INCORRECT LOGICAL UNIT NUMBER: The RESPONSE frame contains a
DATAPRES field set to RESPONSE_DATA and a RESPONSE CODE field set to
INCORRECT LOGICAL UNIT NUMBER; or
e) SERVICE DELIVERY OR TARGET FAILURE: 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), or the
RESPONSE frame contains a DATAPRES field set to RESPONSE_DATA and a
RESPONSE CODE field set to:
A) INVALID FRAME;
B) TASK MANAGEMENT FUNCTION FAILED; or
C) OVERLAPPED INITIATOR PORT TRANSFER TAG ATTEMPTED.

[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.

9.2.2 SCSI application client error handling

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;

708 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

d) Service Delivery or Target Failure - DATA Incorrect Data Length;


e) Service Delivery or Target Failure - DATA Too Much Read Data;
f) Service Delivery or Target Failure - DATA Data Offset Error;
g) Service Delivery or Target Failure - DATA Not Expected;
h) Service Delivery or Target Failure - RESPONSE Incorrect Length;
i) Service Delivery or Target Failure - NAK Received; or
j) Service Delivery or Target Failure - Connection Failed,
then the SCSI application client shall abort the command (e.g., by sending an ABORT TASK task
management function).
After a SCSI application client calls Send SCSI Command (), if Command Complete Received () returns a
Service Response of Service Delivery or Target Failure - ACK/NAK Timeout, then the SCSI application client
shall send a QUERY TASK task management function with Send Task Management Request () to determine
whether the command was received with no error. If Received Task Management Function Executed ()
returns a Service Response of:
a) FUNCTION SUCCEEDED, then the SCSI application client shall assume the command was
delivered with no error; or
b) FUNCTION COMPLETE and Command Complete Received () has not yet been invoked a second
time for the command in question (e.g., indicating a RESPONSE frame arrived for the command
before the QUERY TASK was processed), then the SCSI application client shall assume the
command was not delivered and may reuse the initiator port transfer tag. The SCSI application client
should call Send SCSI Command () again with identical arguments.
After a Received Task Management Function Executed () call with a Service Response of Service Delivery
or Target Failure - ACK/NAK Timeout, a SCSI application client should call Send Task Management
Request () with identical arguments, including the same initiator port transfer tag.
After a Command Complete Received () or Received Task Management Function Executed () call returns
a Service Response other than Service Delivery or Target Failure - ACK/NAK Timeout, a SCSI application
client shall not reuse the initiator port transfer tag until it determines the initiator port transfer tag is no longer in
use by the logical unit (e.g., the ACK for the RESPONSE frame was seen by the SSP target port). Examples
of ways the SCSI application client may determine that an initiator port transfer tag may be reused are:
a) receiving another frame in the same connection;
b) receiving a DONE (NORMAL) or DONE (CREDIT TIMEOUT) in the same connection; or
c) receiving a DONE (ACK/NAK TIMEOUT) in the same connection, then running a QUERY TASK task
management function to confirm that the initiator port transfer tag is no longer active in the logical unit.

9.2.3 SCSI device server error handling

9.2.3.1 SCSI Command Received () error handling

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 709


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.3.2 Data-Out Received () error handling

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.

Table 254 – Delivery Result to additional sense code mapping

Delivery Result Additional sense code

DELIVERY FAILURE - DATA OFFSET ERROR DATA OFFSET ERROR

DELIVERY FAILURE - TOO MUCH WRITE DATA TOO MUCH WRITE DATA

DELIVERY FAILURE - INFORMATION UNIT TOO SHORT INFORMATION UNIT TOO SHORT

DELIVERY FAILURE - ACK/NAK TIMEOUT ACK/NAK TIMEOUT

Should be CONNECTION LOST


DELIVERY FAILURE - CONNECTION FAILED
May be ACK/NAK TIMEOUT

DELIVERY FAILURE - NAK RECEIVED NAK RECEIVED

DELIVERY FAILURE - INITIATOR RESPONSE TIMEOUT INITIATOR RESPONSE TIMEOUT

9.2.4 Task router and task manager error handling

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).

9.2.5 SCSI transport protocol services for event notifications

The SCSI transport protocol services are used by:


a) an SSP initiator port to deliver an indication of an event to a SCSI application client; and
b) an SSP target port to deliver an indication of an event to a task manager and a SCSI device server.

710 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 255 lists the SCSI transport protocol services for event notifications supported by this standard.

Table 255 – SCSI transport protocol events

Delivered transport protocol service indication I/T a SSP implementation Reference

Transport Reset (IN ( SCSI Port )) b I/T Transport Reset 4.4.2

Nexus Loss (IN ( I_T Nexus )) c I/T Nexus Loss 4.4.3

Power Loss Expected (IN ( SCSI Port )) d T Power Loss Expected 6.2.5.2.3

Break Occurred (IN (Nexus, [Command Identifier] )) e f g T Break Occurred 8.2.6.3.2.3


a I/T indicates whether the SSP initiator port (I) or the SSP target port (T) implements the transport
protocol service.
b The specific SCSI port in the SCSI device for which a transport reset was detected.
c The specific I_T nexus that has been detected as lost.
d The specific SCSI port in the SCSI device for which power loss expected was detected.
e The specific I_T nexus or I_T_L nexus and command associated with the break.
f The Break Occurred SCSI transport protocol event is not specified by SAM-5.
g After a Break Occurred confirmation has been received, Data-In Delivered SCSI transport protocol
service confirmations and Data-Out Received SCSI transport protocol service confirmations shall not
be sent for the command specified by the command identifier

9.2.6 SCSI commands

9.2.6.1 INQUIRY command

SAS-specific vital product data accessed with the INQUIRY command (see SPC-6) is described in 9.2.11.

9.2.6.2 LOG SELECT and LOG SENSE commands

SAS-specific log pages accessed with the LOG SELECT command and LOG SENSE command (see SPC-6)
are described in 9.2.8.

9.2.6.3 MODE SELECT and MODE SENSE commands

SAS-specific mode pages accessed with the MODE SELECT command and MODE SENSE command (see
SPC-6) are described in 9.2.7.

9.2.6.4 SEND DIAGNOSTIC and RECEIVE DIAGNOSTIC RESULTS commands

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.

9.2.6.5 START STOP UNIT command

The power condition states controlled by the START STOP UNIT command (see SBC-3) for a SAS device are
described in 9.2.10.

Working Draft SAS Protocol Layer - 5 (SPL-5) 711


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.7 SCSI mode parameters

9.2.7.1 SCSI mode parameters overview

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.

Table 256 – SSP target port mode pages

Mode page code Subpage code Description Reference

02h 00h Disconnect-Reconnect mode page 9.2.7.2

00h Protocol Specific Logical Unit mode page 9.2.7.3

01h to DFh Reserved


18h
E0h to FEh Vendor specific

FFh Return all subpages for this mode page code SPC-6

00h Protocol Specific Port mode page 9.2.7.4

01h Phy Control And Discover mode page 9.2.7.5

02h Shared Port Control mode page 9.2.7.6

03h Enhanced Phy Control mode page 9.2.7.7


19h
04h Out Of Band Management Control mode page 9.2.7.8

05h to DFh Reserved

E0h to FEh Vendor specific

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).

9.2.7.2 Disconnect-Reconnect mode page

9.2.7.2.1 Disconnect-Reconnect mode page overview

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.

712 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 257 – Disconnect-Reconnect mode page for SAS SSP

Byte\Bit 7 6 5 4 3 2 1 0

0 PS SPF (0b) PAGE CODE (02h)

1 PAGE LENGTH (0Eh)

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 parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 257 for the
Disconnect-Reconnect mode page for SAS SSP.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 257 for the Disconnect-Reconnect
mode page for SAS SSP.

Working Draft SAS Protocol Layer - 5 (SPL-5) 713


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.2.7.2.2 BUS INACTIVITY LIMIT field

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).

9.2.7.2.3 CONNECT TIME LIMIT field

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).

9.2.7.2.4 MAXIMUM BURST SIZE field

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

714 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.2.7.2.5 FIRST BURST SIZE 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).

9.2.7.3 Protocol Specific Logical Unit mode page

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 715


T10/BSR INCITS 554 Revision 11 18 January 2021

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

0 PS SPF (0b) PAGE CODE (18h)

1 PAGE LENGTH (06h)

TRANSPORT
2 Reserved LAYER PROTOCOL IDENTIFIER (6h)
RETRIES

••• Reserved
7

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 258 for the Protocol
Specific Logical Unit mode page for SAS SSP.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 258 for the Protocol Specific
Logical Unit mode page for SAS SSP.
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 258 for the Protocol Specific
Logical Unit mode page for SAS SSP.
A TRANSPORT LAYER RETRIES bit set to one specifies that, for commands received in COMMAND frames with
the TLR CONTROL field set to 00b or 11b (see 8.2.1), the SSP target port shall support transport layer retries for
XFER_RDY and DATA frames for the logical unit as described in 8.2.4 (i.e., transport layer retries are
enabled). A TRANSPORT LAYER RETRIES bit set to zero specifies that, for commands received in COMMAND
frames with the TLR CONTROL field set to 00b or 11b (see 8.2.1), transport layer retries shall not be used (i.e.,
transport layer retries are disabled).
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 258 for the Protocol
Specific Logical Unit mode page for SAS SSP indicating that this is a SAS SSP specific mode page.

9.2.7.4 Protocol Specific Port mode page

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.

716 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

0 PS SPF (0b) PAGE CODE (19h)

1 PAGE LENGTH (0Eh)

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)

10 MAXIMUM ALLOWED XFER_RDY

11

••• Reserved
15

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 259 for the Protocol
Specific Port mode page for SAS SSP.
The PAGE CODE 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.
The PAGE LENGTH 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.
A CONTINUE AWT bit set to one specifies that the SAS port shall not stop the Arbitration Wait Time timer and
shall not set the Arbitration Wait Time timer to zero when the SAS port receives an OPEN_REJECT (RETRY).
A CONTINUE AWT bit set to zero specifies that the SAS port shall stop the Arbitration Wait Time timer and set
the Arbitration Wait Time timer to zero when the SAS port receives an OPEN_REJECT (RETRY).
A BROADCAST ASYNCHRONOUS EVENT bit set to one specifies that the SCSI device server shall enable
origination of Broadcast (Asynchronous Event) (see 4.1.15). A BROADCAST ASYNCHRONOUS EVENT bit set to
zero specifies that the SCSI device server shall disable origination of Broadcast (Asynchronous Event).

Working Draft SAS Protocol Layer - 5 (SPL-5) 717


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

Table 260 – I_T NEXUS LOSS TIME field

Code a Description

0000h Vendor specific amount of time.

0001h to FFFEh Time in one millisecond increments.

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.

9.2.7.5 Phy Control And Discover mode page

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.

718 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 261 defines the format of this mode page.

Table 261 – Phy Control And Discover mode page

Byte\Bit 7 6 5 4 3 2 1 0

0 PS SPF (1b) PAGE CODE (19h)

1 SUBPAGE CODE (01h)

2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)

4 Reserved

5 Reserved PROTOCOL IDENTIFIER (6h)

6 GENERATION CODE

7 NUMBER OF PHYS

SAS phy mode descriptor list

••• SAS phy mode descriptor (first) (see table 262)


55

••• •••

n - 47

••• SAS phy mode descriptor (last) (see table 262)


n

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 261 for the Phy Control
And Discover mode page.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 261 for the Phy Control And
Discover mode page.
The SUBPAGE CODE field is defined in SPC-6 and shall be set as shown in table 261 for the Phy Control And
Discover mode page.
The PAGE LENGTH field is defined in SPC-6 and shall be set as shown in table 261 for the Phy Control And
Discover mode page (i.e., 4 + ((the value of the NUMBER OF PHYS field) (the length in bytes of the SAS phy
mode descriptor))).
The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 261 for the Phy Control
And Discover mode page indicating that this is a SAS SSP specific mode page.

Working Draft SAS Protocol Layer - 5 (SPL-5) 719


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

720 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 262 defines the SAS phy mode descriptor.

Table 262 – SAS phy mode descriptor


Byte\Bit 7 6 5 4 3 2 1 0
0 Reserved
1 PHY IDENTIFIER

2
Reserved
3
4 Reserved ATTACHED SAS DEVICE TYPE ATTACHED REASON

5 REASON NEGOTIATED LOGICAL LINK RATE


ATTACHED ATTACHED ATTACHED
SSP STP SMP
6 Reserved Reserved
INITIATOR INITIATOR INITIATOR
PORT PORT PORT
ATTACHED ATTACHED ATTACHED
SSP STP SMP
7 Reserved Reserved
TARGET TARGET TARGET
PORT PORT PORT
8
••• SAS ADDRESS
15
16
••• ATTACHED SAS ADDRESS
23
24 ATTACHED PHY IDENTIFIER
ATTACHED ATTACHED
ATTACHED ATTACHED ATTACHED ATTACHED
ATTACHED POWER INSIDE REQUESTED
25 PERSISTENT SLUMBER PARTIAL BREAK_REPLY
CAPABLE ZPSDS INSIDE
CAPABLE CAPABLE CAPABLE CAPABLE
PERSISTENT ZPSDS
ATTACHED
ATTACHED ATTACHED
SMP
26 Reserved APTA PWR_DIS
PRIORITY
CAPABLE CAPABLE
CAPABLE

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 721


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.2.7.6 Shared Port Control mode page

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.

Table 263 – Shared Port Control mode page

Byte\Bit 7 6 5 4 3 2 1 0

0 PS SPF (1b) PAGE CODE (19h)

1 SUBPAGE CODE (02h)

2 (MSB)
PAGE LENGTH (000Ch)
3 (LSB)

4 Reserved

5 Reserved PROTOCOL IDENTIFIER (6h)

6 (MSB)
POWER LOSS TIMEOUT
7 (LSB)

8 Reserved

9 POWER GRANT TIMEOUT

10 Reserved FOURPHYS TWOPHYS ONEPHY

11 PORT MODE CHANGE DELAY TIME

12

••• Reserved
15

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 263 for the Shared Port
Control mode page.

722 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

0b 0b 1b Each phy is configured to operate as a narrow port (see 4.1.3).

Each set of two phys is configured to operate as a wide port (see


0b 1b 0b
4.1.3).

Each set of four phys is configured to operate as a wide port (see


1b 0b 0b
4.1.3).

Shall not be reported in response to a MODE SENSE command.


A MODE SELECT command shall be terminated with CHECK
all others CONDITION status, with the sense key set to ILLEGAL
REQUEST, and the additional sense code set to INVALID FIELD
IN PARAMETER LIST.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 723


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.7.7 Enhanced Phy Control mode page

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.

Table 265 – Enhanced Phy Control mode page

Byte\Bit 7 6 5 4 3 2 1 0

0 PS SPF (1b) PAGE CODE (19h)

1 SUBPAGE CODE (03h)

2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)

4 Reserved

5 Reserved PROTOCOL IDENTIFIER (6h)

6 GENERATION CODE

7 NUMBER OF PHYS

Enhanced phy control mode descriptor list

••• Enhanced phy control mode descriptor (first) (see table 266)
27

••• •••

n - 19

••• Enhanced phy control mode descriptor (last) (see table 266)
n

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 265 for the Enhanced Phy
Control mode page.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 265 for the Enhanced Phy Control
mode page.
The SUBPAGE CODE field is defined in SPC-6 and shall be set as shown in table 265 for the Enhanced Phy
Control mode page.

724 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 725


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 266 defines the enhanced phy control mode descriptor.

Table 266 – 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)

••• PROGRAMMED PHY CAPABILITIES

••• CURRENT PHY CAPABILITIES

11

12

••• ATTACHED PHY CAPABILITIES

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.

726 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.2.7.8 Out Of Band Management Control mode page

9.2.7.8.1 Out Of Band Management Control mode page overview

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.

Table 267 — Out Of Band Management Control mode page

Byte\Bit 7 6 5 4 3 2 1 0

0 PS SPF (1b) PAGE CODE (19h)

1 SUBPAGE CODE (04h)

2 (MSB)
PAGE LENGTH (n-3)
3 (LSB)

4 RE Reserved

5 Reserved

6 (MSB)
PROTOCOL REVISION CODE
7 (LSB)

Attribute control descriptor list

8
Attribute control descriptor (first)
x

x+1
Attribute control descriptor (second)
y

... ...

n-k
Attribute control descriptor (last)
n

The parameters saveable (PS) bit is defined in SPC-6.


The subpage format (SPF) bit is defined in SPC-6 and shall be set as shown in table 267 for the Out Of Band
Management Control mode page.
The PAGE CODE field is defined in SPC-6 and shall be set as shown in table 267 for the Out Of Band
Management Control mode page.

Working Draft SAS Protocol Layer - 5 (SPL-5) 727


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 268 — Attribute control descriptor format

Byte\Bit 7 6 5 4 3 2 1 0

0 Reserved DESCRIPTOR IDENTIFIER

1 Reserved

2 (MSB)
DESCRIPTOR LENGTH (n-3)
3 (LSB)

... Descriptor specific mode parameters

The DESCRIPTOR IDENTIFIER field specifies the attribute associated with this descriptor. Table 269 defines the
values of the DESCRIPTOR IDENTIFIER field.

Table 269 — DESCRIPTOR IDENTIFIER field

Code a Description Reference

0h Temperature attribute control 9.2.7.8.2

All others Restricted for SFF-8609


a
The code values are the same as the Data Code values in the Data Type
Definition (see SFF-8609)

The DESCRIPTOR LENGTH field specifies the number of bytes of mode parameters that follow in this descriptor.

728 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The descriptor specific mode parameters contain parameters that control the reporting of the specific
descriptor type (i.e., attribute) based on the descriptor identifier.

9.2.7.8.2 Temperature attribute control

Table 270 defines the format of the Temperature attribute control descriptor.

Table 270 – Temperature attribute control descriptor format

Byte\Bit 7 6 5 4 3 2 1 0

0 Reserved DESCRIPTOR IDENTIFIER (0h)

1 Reserved

2 (MSB)
DESCRIPTOR LENGTH (0008h)
3 (LSB)

4 Reserved TRE

5 REPORTING INTERVAL

6 MINIMUM REPORTING INTERVAL

7 CHANGE UP CHANGE DOWN

8 Reserved TEST MODE

9 Reserved

10 TEST MODE TEMPERATURE

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 729


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

730 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 271 – TEST MODE field

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 731


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.8 SCSI log parameters

9.2.8.1 Protocol Specific Port log page

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.

Table 272 – Protocol Specific Port log parameters

Resettable or Support
Parameter code Description Reference
Changeable a Required

0000h Reserved

Protocol Specific Port log parameter


0001h to FFFFh Never 9.2.8.2 Optional
for SAS target ports
a
The keywords in this column – Always, Reset Only, and Never – are defined in SPC-6.

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

0 DS SPF (0b) PAGE CODE (18h)

1 SUBPAGE CODE (00h)

2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)

Protocol Specific Port log parameter list

••• 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.

732 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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)

4 Reserved PROTOCOL IDENTIFIER (6h)

5 Reserved

6 GENERATION CODE

7 NUMBER OF PHYS

SAS phy log descriptor list

••• SAS phy log descriptor (first) (see table 275)


8+m

••• •••
y-m

••• SAS phy log descriptor (last) (see table 275)


y

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 733


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 275 – SAS phy log descriptor (part 1 of 2)

Byte\Bit 7 6 5 4 3 2 1 0

0 Reserved

1 PHY IDENTIFIER

2 Reserved

3 SAS PHY LOG DESCRIPTOR LENGTH (m - 3)

4 Reserved ATTACHED SAS DEVICE TYPE ATTACHED REASON

5 REASON NEGOTIATED LOGICAL LINK RATE

ATTACHED ATTACHED ATTACHED


SSP STP SMP
6 Reserved Reserved
INITIATOR INITIATOR INITIATOR
PORT PORT PORT

ATTACHED ATTACHED ATTACHED


SSP STP SMP
7 Reserved Reserved
TARGET TARGET TARGET
PORT PORT PORT

••• SAS ADDRESS

15

16

••• ATTACHED SAS ADDRESS

23

24 ATTACHED PHY IDENTIFIER

25

••• Reserved
31

734 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 275 – SAS phy log descriptor (Continued) (part 2 of 2)

Byte\Bit 7 6 5 4 3 2 1 0

32 (MSB)

••• INVALID DWORD COUNT

35 (LSB)

36 (MSB)

••• RUNNING DISPARITY ERROR COUNT

39 (LSB)

40 (MSB)

••• LOSS OF DWORD SYNCHRONIZATION COUNT

43 (LSB)

44 (MSB)

••• PHY RESET PROBLEM COUNT

47 (LSB)

48
Reserved
49

50 PHY EVENT DESCRIPTOR LENGTH

51 NUMBER OF PHY EVENT DESCRIPTORS

Phy event descriptor list

52

••• Phy event descriptor (first) (see table 346 in 9.4.4.14.4)


63

••• •••
m - 11

••• Phy event descriptor (last) (see table 346 in 9.4.4.14.4)


m

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 735


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.2.9 SCSI diagnostic parameters

9.2.9.1 SCSI diagnostic parameters overview

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.

Table 276 – SSP target port diagnostic pages

Diagnostic page code Description Reference

3Fh Protocol Specific diagnostic page 9.2.9.2

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.

736 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 277 – Diagnostic pages affected by zoning

Diagnostic page code Description Reference

Enclosure Control diagnostic page SES-3 and 9.2.9.3


02h
Enclosure Status diagnostic page SES-3 and 9.2.9.4

0Ah Additional Element Status diagnostic page SES-3 and 9.2.9.5

9.2.9.2 Protocol Specific diagnostic page

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 737


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 278 defines the Protocol Specific diagnostic page for SAS SSP.

Table 278 – Protocol Specific diagnostic page for SAS SSP

Byte\Bit 7 6 5 4 3 2 1 0

0 PAGE CODE (3Fh)

1 Reserved PROTOCOL IDENTIFIER (6h)

2 (MSB)
PAGE LENGTH (001Ch)
3 (LSB)

4 PHY IDENTIFIER

5 PHY TEST FUNCTION

6 PHY TEST PATTERN

PHY TEST
PHY TEST FUNCTION
7 Reserved FUNCTION PHY TEST FUNCTION PHYSICAL LINK RATE
SSC
SATA

••• Reserved
10

11 PHY TEST PATTERN DWORDS CONTROL

12

••• PHY TEST PATTERN DWORDS

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.

738 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 279 – PHY TEST FUNCTION field

Code Name Description

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

02h to EFh Reserved

F0h to FFh Vendor specific


a
If there is no SSP target port available to receive a SEND DIAGNOSTIC command to stop a phy from
performing a phy test function, then a power on may be required to cause the phy to stop performing the
function and originate a phy reset sequence.

Working Draft SAS Protocol Layer - 5 (SPL-5) 739


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 280 – PHY TEST PATTERN field

Code Name Description

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)

05h to 0Fh Reserved

The selected phy shall repeatedly transmit the TRAIN pattern (see
10h TRAIN
5.11.4.2.3.5).

The selected phy shall repeatedly transmit the TRAIN_DONE pattern


11h TRAIN_DONE
(see 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 a repeating pattern of at least


58 dwords (i.e., 2 320 bits on the physical link) set to 00000000h that are
13h SCRAMBLED_0
transmitted scrambled and 8b10b encoded (see 6.6). The scrambler shall
be reinitialized at the beginning of each pattern. See table F.2 in F.1.4.

14h to 3Fh Reserved

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.

41h to EFh Reserved

F0h to FFh Vendor specific

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.

740 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 281 – PHY TEST FUNCTION SSC field

Code Description

00b No-spreading

01b Center-spreading SSC a

10b Down-spreading SSC

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.

Table 282 – PHY TEST FUNCTION 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 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 741


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 283 – PHY TEST PATTERN DWORDS CONTROL field

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.

742 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 284 lists some examples of TWO_DWORDS phy test patterns.

Table 284 – TWO_DWORDS phy test pattern examples

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).

9.2.9.3 Enclosure Control diagnostic page

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 743


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.9.4 Enclosure Status diagnostic page

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.

9.2.9.5 Additional Element Status diagnostic page

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.

9.2.10 SCSI power conditions

9.2.10.1 SCSI power conditions overview

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.

9.2.10.2 SA_PC (SCSI application layer power condition) state machine

9.2.10.2.1 SA_PC state machine overview

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.

744 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

This state machine consists of the states shown in table 285.

Table 285 – Summary of states in the SA_PC state machine

States that contribute to definition


State Reference Modified a
SPC-6 SBC-3

SA_PC_0:Powered_On b 9.2.10.2.2 No PC0:Powered_On SSU_PC0:Powered_On

SA_PC_1:Active 9.2.10.2.3 No PC1:Active SSU_PC1:Active

SA_PC_2:Idle 9.2.10.2.4 No PC2:Idle SSU_PC2:Idle

SA_PC_3:Standby 9.2.10.2.5 No PC3:Standby SSU_PC3:Standby

SA_PC_4:Active_Wait 9.2.10.2.6 Yes PC4:Active_Wait SSU_PC4:Active_Wait

SA_PC_5:Wait_Idle 9.2.10.2.7 No PC5:Wait_Idle SSU_PC5:Wait_Idle

SA_PC_6:Wait_Standby 9.2.10.2.8 No PC6:Wait_Standby SSU_PC6:Wait_Standby

SA_PC_7:Idle_Wait 9.2.10.2.9 Yes SSU_PC7:Idle_Wait

SA_PC_8:Stopped 9.2.10.2.10 No SSU_PC8:Stopped

SA_PC_9:Standby_Wait 9.2.10.2.11 No SSU_PC9:Standby_Wait

SA_PC_10:Wait_Stopped 9.2.10.2.12 No SSU_PC10:Wait_Stopped


a
Yes indicates that this standard adds requirements to a state. No indicates that this standard does not
alter or enhance the requirements defined in SPC-6 and SBC-3.
b
SA_PC_0:Powered_On is the initial state.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 745


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

746 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Figure 211 shows the SA_PC state machine.

SA_PC (SCSI application layer power condition ) state machine

The states SA_PC_0:Powered_On, SA_PC_1:Active, SA_PC_2:Idle, SA_PC_3:Standby,


SA_PC_4:Active_Wait , SA_PC_5:Wait_Idle, and SA_PC_6:Wait_Standby are available to any
type of logical unit (see SPC-4).
The states SA_PC_7:Idle_Wait, SA_PC_8:Stopped, SA_PA_9:Standby_Wait, and
SA_PA_10:Wait_Stopped are specific to logical units that are direct -access block devices (see
SBC-3).

SA_PC_4: SA_PC_0: SA_PC_8:


Active_Wait Powered_On Stopped

SA_PC_9: SA_PC_3:
Standby_Wait Standby

SA_PC_1:
Active

SA_PC_10:
Wait_Stopped

SA_PC_6:
Wait_Standby

SA_PC_5: SA_PC_2: SA_PC_7:


Wait_Idle Idle Idle_Wait

Phy Power Phy Power


MA MA
Condition Status Condition Status
Power Use Granted Power Use Granted

Power Request Failed Power Request Failed


Request Request
Additional Power Additional Power

Power Use Complete Power Use Complete

Figure 211 – SA_PC (SCSI application layer power condition) state machine for SAS

Working Draft SAS Protocol Layer - 5 (SPL-5) 747


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.10.2.2 SA_PC_0:Powered_On state

9.2.10.2.2.1 State description

See the PC0:Power_On state in SPC-6 for details about this state.

9.2.10.2.2.2 Transition SA_PC_0:Powered_On to SA_PC_4:Active_Wait

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.

9.2.10.2.2.3 Transition SA_PC_0:Powered_On to SA_PC_8:Stopped

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.

9.2.10.2.3 SA_PC_1:Active state

9.2.10.2.3.1 State description

See the PC1:Active state in SPC-6 for details about this state.

9.2.10.2.3.2 Transition SA_PC_1:Active to SA_PC_5:Wait_Idle

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.

9.2.10.2.3.3 Transition SA_PC_1:Active to SA_PC_6:Wait_Standby

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.

9.2.10.2.3.4 Transition SA_PC_1:Active to SA_PC_10:Wait_Stopped

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.

9.2.10.2.4 SA_PC_2:Idle state

9.2.10.2.4.1 State description

See the PC2:Idle state in SPC-6 for details about this state.

9.2.10.2.4.2 Transition SA_PC_2:Idle to SA_PC_4:Active_Wait

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.

748 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.2.10.2.4.3 Transition SA_PC_2:Idle to SA_PC_5:Wait_Idle

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.

9.2.10.2.4.4 Transition SA_PC_2:Idle to SA_PC_6:Wait_Standby

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.

9.2.10.2.4.5 Transition SA_PC_2:Idle to SA_PC_7:Idle_Wait

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.

9.2.10.2.4.6 Transition SA_PC_2:Idle to SA_PC_10:Wait_Stopped

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.

9.2.10.2.5 SA_PC_3:Standby state

9.2.10.2.5.1 State description

See the PC3:Standby state in SPC-6 for details about this state.

9.2.10.2.5.2 Transition SA_PC_3:Standby to SA_PC_4:Active_Wait

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.

9.2.10.2.5.3 Transition SA_PC_3:Standby to SA_PC_6:Wait_Standby

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.

9.2.10.2.5.4 Transition SA_PC_3:Standby to SA_PC_7:Idle_Wait

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.

9.2.10.2.5.5 Transition SA_PC_3:Standby to SA_PC_9: Standby_Wait

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 749


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.10.2.5.6 Transition SA_PC_3:Standby to SA_PC_10:Wait_Stopped

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.

9.2.10.2.6 SA_PC_4:Active_Wait state

9.2.10.2.6.1 State description

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;

750 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 751


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.10.2.6.2 Transition SA_PC_4:Active_Wait to SA_PC_1:Active

This transition shall occur:


a) after sending a Phy Power Condition Status (Enable Low Phy Power Conditions) message to the
management application layer.

9.2.10.2.7 SA_PC_5:Wait_Idle state

9.2.10.2.7.1 SA_PC_5:Wait_Idle state description

See the PC5:Wait_Idle state in SPC-6 for details about this state.

9.2.10.2.7.2 Transition SA_PC_5:Wait_Idle to SA_PC_2:Idle

See the PC5:Wait_Idle to PC2:Idle transition in SPC-6 for details about this transition.

9.2.10.2.8 SA_PC_6:Wait_Standby state

9.2.10.2.8.1 SA_PC_6:Wait_Standby state description

See the PC6:Wait_Standby state in SPC-6 for details about this state.

9.2.10.2.8.2 Transition SA_PC_6:Wait_Standby to SA_PC_3:Standby

See the PC6:Wait_Standby to PC3:Standby transition in SPC-6 for details about this transition.

9.2.10.2.9 SA_PC_7:Idle_Wait state

9.2.10.2.9.1 State description

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

752 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 753


T10/BSR INCITS 554 Revision 11 18 January 2021

9.2.10.2.9.2 Transition SA_PC_7:Idle_Wait to SA_PC_2:Idle

This transition shall occur:


a) after sending a Phy Power Condition Status (Enable Low Phy Power Conditions) message to the
management application layer.

9.2.10.2.10 SA_PC_8:Stopped state

9.2.10.2.10.1 State description

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.

9.2.10.2.10.2 Transition SA_PC_8:Stopped to SA_PC_4:Active_Wait

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.

9.2.10.2.10.3 Transition SA_PC_8:Stopped to SA_PC_7:Idle_Wait

See the SSU_PC8:Stopped to SSU_PC7:Idle_Wait transition in SBC-3 for details about this transition.

9.2.10.2.10.4 Transition SA_PC_8:Stopped to SA_PC_9:Standby_Wait

See the SSU_PC8:Stopped to SSU_PC9:Standby_Wait transition in SBC-3 for details about this transition.

9.2.10.2.11 SA_PC_9:Standby_Wait state

9.2.10.2.11.1 SA_PC_9:Standby_Wait state description

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.

9.2.10.2.11.2 Transition SA_PC_9:Standby_Wait to SA_PC_3:Standby

See the SSU_PC9:Standby_Wait to SSU_PC3:Standby transition in SBC-3 for details about this transition.

9.2.10.2.12 SA_PC_10:Wait_Stopped state

9.2.10.2.12.1 SA_PC_10:Wait_Stopped state description

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.

9.2.10.2.12.2 Transition SA_PC_10:Wait_Stopped to SA_PC_8:Stopped

See the SSU_PC10:Wait_Stopped to SSU_PC8:Stopped transition in SBC-3 for details about this transition.

754 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.2.11 SCSI vital product data (VPD)

9.2.11.1 SCSI vital product data (VPD) overview

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

83h Device Identification VPD page 9.2.11.2 and SPC-6 Mandatory

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

9.2.11.2 Device Identification VPD page

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

DESIGNATOR TYPE 3h (i.e., NAA) 4h (i.e., relative target port identifier)

ASSOCIATION 01b (i.e., SCSI target port) 01b (i.e., SCSI target port)

CODE SET 1h (i.e., binary) 1h (i.e., binary)

DESIGNATOR LENGTH 8 4

PIV (protocol identifier valid) 1 1

PROTOCOL IDENTIFIER 6h (i.e., SAS) 6h (i.e., SAS)

Relative port identifier b as described in


DESIGNATOR SAS address a (see 4.2.4)
SAM-5 and SPC-6
a
The DESIGNATOR field contains the SAS address of the SSP target port through which the INQUIRY
command was received.
b
The DESIGNATOR field contains the relative port identifier of the SSP target port through which the
INQUIRY command was received.

Working Draft SAS Protocol Layer - 5 (SPL-5) 755


T10/BSR INCITS 554 Revision 11 18 January 2021

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)

DESIGNATOR TYPE 3h (i.e., NAA) 8h (i.e., SCSI name string)

ASSOCIATION 10b (i.e., SCSI target device) 10b (i.e., SCSI target device)

CODE SET 1h (i.e., binary) 3h (i.e., UTF-8)

DESIGNATOR LENGTH 8 24

PIV (protocol identifier valid) 1 0

PROTOCOL IDENTIFIER 6h (i.e., SAS) 0h a

Device name of the SAS target device


Device name of the SAS target in SCSI name string format (e.g.,
DESIGNATOR device in SAS address format (see “naa.” followed by 16 hexadecimal
4.2.4) digits followed by 4 ASCII null
characters)
a
The PROTOCOL IDENTIFIER field is reserved if the PIV bit is set to zero.

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).

9.2.11.3 Protocol Specific Logical Unit Information VPD page

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.

756 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

0 PERIPHERAL QUALIFIER PERIPHERAL DEVICE TYPE

1 PAGE CODE (90h)

2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)

Logical unit information descriptor list

••• Logical unit information descriptor (first) (see table 290)

••• •••

••• Logical unit information descriptor (last) (see table 290)


n

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 757


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 290 defines the logical unit information descriptor for logical units with SSP target ports.

Table 290 – Logical unit information descriptor for SAS SSP

Byte\Bit 7 6 5 4 3 2 1 0

0 (MSB)
RELATIVE PORT IDENTIFIER
1 (LSB)

2 Reserved PROTOCOL IDENTIFIER (6h)

••• Reserved
5

6 (MSB)
DESCRIPTOR LENGTH (0004h)
7 (LSB)

Per logical unit SCSI transport specific data

TLR
8 Reserved CONTROL
SUPPORTED

••• Reserved
11

The RELATIVE PORT IDENTIFIER field is defined in SPC-6.


The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 290 for the logical unit
information descriptor for SAS SSP indicating that this is a SAS SSP specific descriptor.
The DESCRIPTOR LENGTH field is defined in SPC-6 and shall be set as shown in table 290 for the logical unit
information descriptor for SAS SSP.
A TLR CONTROL SUPPORTED bit set to one indicates that the combination of the SSP target port and logical unit
support the TLR CONTROL field in the SSP frame header (see 8.2.1). A TLR CONTROL SUPPORTED bit set to zero
indicates that the combination of the SSP target port and logical unit do not support the TLR CONTROL field in
the SSP frame header.

9.2.11.4 Protocol Specific Port Information VPD page

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.

758 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

0 PERIPHERAL QUALIFIER PERIPHERAL DEVICE TYPE

1 PAGE CODE (91h)

2 (MSB)
PAGE LENGTH (n - 3)
3 (LSB)

Port information descriptor list

••• Port information descriptor (first) (see table 292)

••• •••

••• Port information descriptor (last) (see table 292)


n

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 759


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 292 defines the port information descriptor for the SSP target ports.

Table 292 – Port information descriptor for SAS SSP

Byte\Bit 7 6 5 4 3 2 1 0

0 (MSB)
RELATIVE PORT IDENTIFIER
1 (LSB)

2 Reserved PROTOCOL IDENTIFIER (6h)

3 Reserved PWR_D_S

4
Reserved
5

6 (MSB)
DESCRIPTOR LENGTH (n-7)
7 (LSB)

SAS phy information descriptor list

••• SAS phy information descriptor (first) (see table 293)


11

••• •••
n-3

••• SAS phy information descriptor (last) (see table 293)


n

The RELATIVE PORT IDENTIFIER field is defined in SPC-6.


The PROTOCOL IDENTIFIER field is defined in SPC-6 and shall be set as shown in table 292 for the port
information descriptor for SAS SSP indicating that this is a port information descriptor for SAS SSP.
A power disable supported (PWR_D_S) bit set to one indicates that the POWER DISABLE signal (see SAS-4)
is supported. A PWR_D_S bit set to zero indicates that the POWER DISABLE signal is not supported.
The DESCRIPTOR LENGTH field is defined in SPC-6.
The SAS phy information descriptor list contains a SAS phy information descriptor for each SAS phy in the
SAS target port.

760 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 293 defines the SAS phy information descriptor.

Table 293 – SAS phy information descriptor for SAS SSP

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.

9.3 ATA application layer

No SAS-specific ATA features are defined by this standard.

9.4 Management application layer

9.4.1 READY LED signal behavior

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 761


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 294 – READY LED signal behavior

Power
condition a
(see READY LED MEANING bit set to zero b READY LED MEANING bit set to one
9.2.10) or
activity

The SAS target device shall:


a) while not processing a command, assert the
active
READY LED signal continuously c; or
power
b) while processing a command, toggle the
condition or
READY LED signal between the asserted
an idle
and negated states in a vendor-specified
power
manner.
condition The SAS target device shall:
(i.e., the LED is usually on, but flashes on and off
while commands are processed) a) while not processing a command,
negate the READY LED signal
The SAS target device shall: continuously c; or
a) while not processing a command, negate b) while processing a command, toggle
the READY LED signal continuously c; or the READY LED signal between the
b) while processing a command, toggle the asserted and negated states in a
a standby READY LED signal between the asserted vendor-specified manner.
power and negated states in a vendor-specified (i.e., the LED is usually off, but flashes on
condition or manner. and off while commands are processed)
stopped (i.e., the LED is usually off, but flashes on and off
power while commands are processed)
condition
After a vendor specific amount of time in this
state, SAS target devices with rotating media
may be removed with minimum risk of
mechanical or electrical damage.

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.

762 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.2 Out of band management interface

9.4.2.1 Out of band management interface overview

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,

Working Draft SAS Protocol Layer - 5 (SPL-5) 763


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.3 Management protocol services

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.

9.4.4 SMP functions

9.4.4.1 SMP functions overview

Table 295 defines the SMP functions.

Table 295 – SMP functions (FUNCTION field) (part 1 of 3)

Function
SMP function Description Reference
code

SMP input functions (00h to 7Fh)

General SMP input functions (00h to 0Fh)

Return general information about the SMP target


00h REPORT GENERAL 9.4.4.4
device

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

REPORT ZONE MANAGER


05h Return the zone manager password 9.4.4.8
PASSWORD

06h REPORT BROADCAST Return information about Broadcast counters 9.4.4.9

07h Restricted for SFF

08h to 0Fh Reserved

Phy-based SMP input functions (10h to 1Fh)

10h DISCOVER Return information about the specified phy 9.4.4.10

764 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 295 – SMP functions (FUNCTION field) (Continued) (part 2 of 3)

Function
SMP function Description Reference
code

Return error logging information about the


11h REPORT PHY ERROR LOG 9.4.4.11
specified phy

Return information about a phy currently


12h REPORT PHY SATA 9.4.4.12
attached to a SATA phy

REPORT ROUTE Return phy-based expander route table


13h 9.4.4.13
INFORMATION information

14h REPORT PHY EVENT Return phy events for the specified phy 9.4.4.14

15h to 1Fh Reserved

Descriptor list-based SMP input functions (20h to 2Fh)

20h DISCOVER LIST Return information about the specified phys 9.4.4.15

21h REPORT PHY EVENT LIST Return phy events 9.4.4.16

REPORT EXPANDER ROUTE Return contents of the expander-based


22h 9.4.4.17
TABLE LIST expander route table

23h to 2Fh Reserved

Other SMP input functions (30h to 7Fh)

30h to 3Fh Reserved

40h to 7Fh Vendor specific

SMP output functions (80h to FFh)

General SMP output functions (80h to 8Fh)

80h CONFIGURE GENERAL Configure the SMP target device 9.4.4.18

81h ENABLE DISABLE ZONING Enable or disable zoning 9.4.4.19

82h Obsolete

83h Restricted for SFF

84h Reserved

Transmit the specified Broadcast on the


85h ZONED BROADCAST 9.4.4.20
expander ports in the specified zone groups

86h ZONE LOCK Lock a zoning expander device 9.4.4.21

Set the zoning expander current values equal to


87h ZONE ACTIVATE 9.4.4.22
the zoning expander shadow values

88h ZONE UNLOCK Unlock a zoning expander device 9.4.4.23

Working Draft SAS Protocol Layer - 5 (SPL-5) 765


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 295 – SMP functions (FUNCTION field) (Continued) (part 3 of 3)

Function
SMP function Description Reference
code

CONFIGURE ZONE
89h Configure the zone manager password 9.4.4.24
MANAGER PASSWORD

CONFIGURE ZONE PHY


8Ah Configure zone phy information 9.4.4.25
INFORMATION

CONFIGURE ZONE
8Bh Configure the zone permission table 9.4.4.26
PERMISSION TABLE

8Ch to
Reserved
8Fh

Phy-based SMP output functions (90h to 9Fh)

CONFIGURE ROUTE Change phy-based expander route table


90h 9.4.4.27
INFORMATION information

91h PHY CONTROL Request actions by the specified phy 9.4.4.28

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

94h to 9Fh Reserved

Other SMP output functions (A0h to FFh)

A0h to
Reserved
BFh

C0h to
Vendor specific
FFh

766 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.2 SMP function request frame format

9.4.4.2.1 SMP function request frame format overview

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.

Table 296 – SMP request frame format

Byte a\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH ((00h) or ((n - 7) / 4))

••• Additional request bytes


n-4

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.

9.4.4.2.2 SMP FRAME TYPE field

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.

9.4.4.2.3 FUNCTION field

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).

9.4.4.2.4 ALLOCATED RESPONSE LENGTH field

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 767


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.2.5 REQUEST LENGTH field

A REQUEST LENGTH field set to 00h specifies that either:


a) no dwords follow the REQUEST LENGTH field before the CRC field; or
b) a non-zero number of dwords follow the REQUEST LENGTH field before the CRC field. This is for
compatibility with SAS-1.1.
The function description defines the interpretation of a REQUEST LENGTH field set to 00h.
A REQUEST LENGTH field set to a non-zero value (i.e., the non-zero value defined in table 296 (see 9.4.4.2.1))
specifies the number of dwords that follow the REQUEST LENGTH field before the CRC field (i.e., the length of the
entire request frame minus two).
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 REQUEST LENGTH field to a non-zero value in the SMP request
frame for any SMP function. If the LONG RESPONSE bit is set to zero in the REPORT GENERAL response, then
the management application client shall set the REQUEST LENGTH field to 00h in the SMP request frame for
every SMP function.
If the request frame size including the CRC field is less than 8 bytes or the REQUEST LENGTH field does not
match the request frame size, then the management device server shall return a function result of INVALID
REQUEST FRAME LENGTH.
The management device server shall consider any fields not included in the request frame to be set to zero.

9.4.4.2.6 Additional request bytes

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.

768 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.4.4.2.7 CRC field

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).

9.4.4.3 SMP function response frame format

9.4.4.3.1 SMP function response frame format overview

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.

Table 297 – SMP response frame format

Byte a\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or ((n - 7) / 4))

••• Additional response bytes


n-4

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 769


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.3.2 SMP FRAME TYPE field

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.

9.4.4.3.3 FUNCTION field

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).

9.4.4.3.4 FUNCTION RESULT field

The FUNCTION RESULT field is defined in table 298.

Table 298 – FUNCTION RESULT field (part 1 of 4)

Code Name SMP functions Description

SMP FUNCTION The management device server supports the SMP


00h All
ACCEPTED function and processed the SMP function.

UNKNOWN SMP The management device server does not support


01h Unknown
FUNCTION the requested SMP function.

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

770 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 298 – FUNCTION RESULT field (Continued) (part 2 of 4)

Code Name SMP functions Description

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

ZONED BROADCAST, The request frame length results in the truncation


CONFIGURE ZONE of a multi-byte field or descriptor list (e.g., in the
INCOMPLETE PHY INFORMATION, ZONED BROADCAST request (see table 365), the
06h DESCRIPTOR CONFIGURE ZONE request frame is not large enough to contain the
LIST PERMISSION TABLE, number of Broadcast source zone groups
CONFIGURE PHY specified by the NUMBER OF BROADCAST SOURCE
EVENT ZONE GROUPS field).

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

The phy specified by the PHY IDENTIFIER field in the


SMP request frame does not have the table
routing attribute (see 4.5.7.1) or the expander
REPORT ROUTE
route index specified by the EXPANDER ROUTE
INDEX DOES NOT INFORMATION,
11h INDEX field does not exist (i.e., the value is not in
EXIST CONFIGURE ROUTE
the range of 0000h to the value of the EXPANDER
INFORMATION
ROUTE INDEXES field in the SMP REPORT
GENERAL response). The ADDITIONAL RESPONSE
BYTES field may be present but shall be ignored.

PHY DOES NOT REPORT PHY SATA,


12h See 9.4.4.12 and 9.4.4.28
SUPPORT SATA PHY CONTROL

UNKNOWN PHY
13h PHY CONTROL See 9.4.4.28
OPERATION

Working Draft SAS Protocol Layer - 5 (SPL-5) 771


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 298 – FUNCTION RESULT field (Continued) (part 3 of 4)

Code Name SMP functions Description

UNKNOWN PHY PHY TEST


14h See 9.4.4.29
TEST FUNCTION FUNCTION

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 PHY CONFIGURE PHY


17h See 9.4.4.30.3
EVENT SOURCE 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.

AFFILIATION The specified phy operation is not allowed due to


1Ah PHY CONTROL
VIOLATION the current state of affiliations.

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

772 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 298 – FUNCTION RESULT field (Continued) (part 4 of 4)

Code Name SMP functions Description

Zoning is enabled and:


ENABLE DISABLE
a) an unlocked zoning expander device receives
ZONING, ZONE
an SMP zone configuration function request,
LOCK, ZONE
a ZONE ACTIVATE request, or a ZONE
ACTIVATE, ZONE
ZONE LOCK UNLOCK request; or
23h UNLOCK,
VIOLATION b) a locked zoning expander device receives an
CONFIGURE ZONE
SMP zone configuration function request, a
PHY INFORMATION,
ZONE ACTIVATE request, or a ZONE
CONFIGURE ZONE
UNLOCK request from an SMP initiator port
PERMISSION TABLE
that is not the active zone manager.

The following conditions are true:


a) the ACTIVATE REQUIRED bit is set to one in the
24h NOT ACTIVATED ZONE UNLOCK request; and
b) the locked zoning expander device has not
processed the activate step.

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

The following conditions are true:


CONFIGURE ZONE
NO PHYSICAL a) the NEW ZONE MANAGER PASSWORD field is set
26h MANAGER
PRESENCE to DISABLED (see table 34 in 4.9.1); and
PASSWORD
b) physical presence is not asserted.

REPORT ZONE For REPORT ZONE PERMISSION TABLE, see


PERMISSION TABLE, 9.4.4.7.
REPORT ZONE
MANAGER For REPORT ZONE MANAGER PASSWORD,
PASSWORD, see 9.4.4.8.
ENABLE DISABLE
SAVING NOT ZONING, For ENABLE DISABLE ZONING, CONFIGURE
27h
SUPPORTED CONFIGURE ZONE ZONE MANAGER PASSWORD, CONFIGURE
MANAGER ZONE PHY INFORMATION, and CONFIGURE
PASSWORD, ZONE PERMISSION TABLE, the following
CONFIGURE ZONE conditions are true the:
PHY INFORMATION, a) SAVE field is set to 01b or 11b; and
CONFIGURE ZONE b) management device server does not support
PERMISSION TABLE saved values for the specified information.

SOURCE ZONE
REPORT ZONE
28h GROUP DOES See 9.4.4.7
PERMISSION TABLE
NOT EXIST

DISABLED CONFIGURE ZONE


29h PASSWORD NOT MANAGER See 9.4.4.24
SUPPORTED PASSWORD

INVALID FIELD IN The management device server does not support


2Ah All
SMP REQUEST a field in the requested SMP function.

All others Reserved

Working Draft SAS Protocol Layer - 5 (SPL-5) 773


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 299 defines the priority of the SMP function results defined in table 298.

Table 299 – Function result priority (part 1 of 5)

SMP function SMP function result priority is as follows:

1) INVALID REQUEST FRAME LENGTH;


REPORT GENERAL 2) SMP FUNCTION FAILED;
(see 9.4.4.4) 3) INVALID FIELD IN SMP REQUEST; and
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


REPORT MANUFACTURER
2) SMP FUNCTION FAILED;
INFORMATION
3) INVALID FIELD IN SMP REQUEST; and
(see 9.4.4.5)
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


REPORT
2) SMP FUNCTION FAILED;
SELF-CONFIGURATION
3) INVALID FIELD IN SMP REQUEST; and
STATUS (see 9.4.4.6)
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) SOURCE ZONE GROUP DOES NOT EXIST;
REPORT ZONE PERMISSION
3) SAVING NOT SUPPORTED;
TABLE
4) SMP FUNCTION FAILED;
(see 9.4.4.7)
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) NO MANAGEMENT ACCESS RIGHTS;
REPORT ZONE MANAGER
3) SAVING NOT SUPPORTED;
PASSWORD
4) SMP FUNCTION FAILED;
(see 9.4.4.8)
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


REPORT BROADCAST 2) SMP FUNCTION FAILED;
(see 9.4.4.9) 3) INVALID FIELD IN SMP REQUEST; and
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
DISCOVER 3) PHY VACANT;
(see 9.4.4.10) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
REPORT PHY ERROR LOG 3) PHY VACANT;
(see 9.4.4.11) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

774 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 299 – Function result priority (Continued) (part 2 of 5)

SMP function SMP function result priority is as follows:

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
3) PHY VACANT;
REPORT PHY SATA
4) PHY DOES NOT SUPPORT SATA;
(see 9.4.4.12)
5) SMP FUNCTION FAILED;
6) INVALID FIELD IN SMP REQUEST; and
7) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
REPORT ROUTE 3) PHY VACANT;
INFORMATION 4) INDEX DOES NOT EXIST;
(see 9.4.4.13) 5) SMP FUNCTION FAILED;
6) INVALID FIELD IN SMP REQUEST; and
7) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
REPORT PHY EVENT 3) PHY VACANT;
(see 9.4.4.14) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
3) UNKNOWN DESCRIPTOR TYPE;
DISCOVER LIST
4) UNKNOWN PHY FILTER;
(see 9.4.4.15)
5) SMP FUNCTION FAILED;
6) INVALID FIELD IN SMP REQUEST; and
7) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


REPORT PHY EVENT LIST 2) SMP FUNCTION FAILED;
(see 9.4.4.16) 3) INVALID FIELD IN SMP REQUEST; and
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


REPORT EXPANDER ROUTE
2) SMP FUNCTION FAILED;
TABLE LIST
3) INVALID FIELD IN SMP REQUEST; and
(see 9.4.4.17)
4) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) SMP ZONE VIOLATION;
CONFIGURE GENERAL 3) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.18) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

Working Draft SAS Protocol Layer - 5 (SPL-5) 775


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 299 – Function result priority (Continued) (part 3 of 5)

SMP function SMP function result priority is as follows:

1) INVALID REQUEST FRAME LENGTH;


2) ZONE LOCK VIOLATION;
3) UNKNOWN ENABLE DISABLE ZONING VALUE;
ENABLE DISABLE ZONING 4) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.19) 5) SAVING NOT SUPPORTED;
6) SMP FUNCTION FAILED;
7) INVALID FIELD IN SMP REQUEST; and
8) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) INCOMPLETE DESCRIPTOR LIST;
ZONED BROADCAST 3) SMP ZONE VIOLATION;
(see 9.4.4.20) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) NO MANAGEMENT ACCESS RIGHTS;
ZONE LOCK 3) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.21) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) ZONE LOCK VIOLATION;
ZONE ACTIVATE 3) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.22) 4) SMP FUNCTION FAILED;
5) INVALID FIELD IN SMP REQUEST; and
6) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) ZONE LOCK VIOLATION;
3) NOT ACTIVATED;
ZONE UNLOCK
4) BUSY;
(see 9.4.4.23)
5) SMP FUNCTION FAILED;
6) INVALID FIELD IN SMP REQUEST; and
7) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) INVALID EXPANDER CHANGE COUNT;
3) NO MANAGEMENT ACCESS RIGHTS;
CONFIGURE ZONE 4) NO PHYSICAL PRESENCE;
MANAGER PASSWORD 5) SAVING NOT SUPPORTED;
(see 9.4.4.24) 6) DISABLED PASSWORD NOT SUPPORTED;
7) SMP FUNCTION FAILED;
8) INVALID FIELD IN SMP REQUEST; and
9) SMP FUNCTION ACCEPTED.

776 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 299 – Function result priority (Continued) (part 4 of 5)

SMP function SMP function result priority is as follows:

1) INVALID REQUEST FRAME LENGTH;


2) INCOMPLETE DESCRIPTOR LIST;
3) PHY DOES NOT EXIST;
4) PHY VACANT;
CONFIGURE ZONE PHY 5) ZONE LOCK VIOLATION;
INFORMATION 6) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.25) 7) SAVING NOT SUPPORTED;
8) ZONE GROUP OUT OF RANGE;
9) SMP FUNCTION FAILED;
10) INVALID FIELD IN SMP REQUEST; and
11) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) INCOMPLETE DESCRIPTOR LIST;
3) ZONE LOCK VIOLATION;
CONFIGURE ZONE 4) INVALID EXPANDER CHANGE COUNT;
PERMISSION TABLE 5) SAVING NOT SUPPORTED;
(see 9.4.4.26) 6) ZONE GROUP OUT OF RANGE;
7) SMP FUNCTION FAILED;
8) INVALID FIELD IN SMP REQUEST; and
9) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
3) PHY VACANT;
CONFIGURE ROUTE
4) INVALID EXPANDER CHANGE COUNT;
INFORMATION
5) INDEX DOES NOT EXIST;
(see 9.4.4.27)
6) SMP FUNCTION FAILED;
7) INVALID FIELD IN SMP REQUEST; and
8) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
3) PHY VACANT;
4) SMP ZONE VIOLATION;
5) INVALID EXPANDER CHANGE COUNT;
PHY CONTROL
6) UNKNOWN PHY OPERATION;
(see 9.4.4.28)
7) PHY DOES NOT SUPPORT SATA;
8) AFFILIATION VIOLATION;
9) SMP FUNCTION FAILED;
10) INVALID FIELD IN SMP REQUEST; and
11) SMP FUNCTION ACCEPTED.

Working Draft SAS Protocol Layer - 5 (SPL-5) 777


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 299 – Function result priority (Continued) (part 5 of 5)

SMP function SMP function result priority is as follows:

1) INVALID REQUEST FRAME LENGTH;


2) PHY DOES NOT EXIST;
3) PHY VACANT;
4) SMP ZONE VIOLATION;
PHY TEST FUNCTION 5) INVALID EXPANDER CHANGE COUNT;
(see 9.4.4.29) 6) UNKNOWN PHY TEST FUNCTION;
7) PHY TEST FUNCTION IN PROGRESS;
8) SMP FUNCTION FAILED;
9) INVALID FIELD IN SMP REQUEST; and
10) SMP FUNCTION ACCEPTED.

1) INVALID REQUEST FRAME LENGTH;


2) INCOMPLETE DESCRIPTOR LIST;
3) PHY DOES NOT EXIST;
4) PHY VACANT;
CONFIGURE PHY EVENT 5) SMP ZONE VIOLATION;
(see 9.4.4.30) 6) INVALID EXPANDER CHANGE COUNT;
7) UNKNOWN PHY EVENT SOURCE;
8) SMP FUNCTION FAILED;
9) INVALID FIELD IN SMP REQUEST; and
10) SMP FUNCTION ACCEPTED.

9.4.4.3.5 RESPONSE LENGTH field

A RESPONSE LENGTH field set to 00h indicates that either:


a) no dwords follow the RESPONSE LENGTH field before the CRC field; or
b) a non-zero number of dwords follow the RESPONSE LENGTH field before the CRC field. This is for
compatibility with SAS-1.1.
The function description defines the interpretation of a RESPONSE LENGTH field set to 00h.
A RESPONSE LENGTH field set to a non-zero value (i.e., the non-zero value defined in table 297 (see 9.4.4.3.1))
indicates the number of dwords that follow the RESPONSE LENGTH field before the CRC field (i.e., the length of
the entire response frame minus two).

9.4.4.3.6 Additional response bytes

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.

778 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

9.4.4.3.7 CRC field

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).

9.4.4.4 REPORT GENERAL function

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.

Table 300 – REPORT GENERAL request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (00h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 779


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 301 – REPORT GENERAL response (part 1 of 3)

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (00h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 11h)

4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)

6 (MSB)
EXPANDER ROUTE INDEXES
7 (LSB)

LONG
8 Reserved
RESPONSE

9 NUMBER OF PHYS

STP OPEN REJECT EXTERNALLY


TABLE TO TABLE ZONE SELF CONFIGURES
10 CONTINUE RETRY CONFIGURING CONFIGURABLE
SUPPORTED CONFIGURING CONFIGURING OTHERS
AWT SUPPORTED ROUTE TABLE

EXTENDED INITIATES SSP


11 Reserved
FAIRNESS CLOSE

12
••• ENCLOSURE LOGICAL IDENTIFIER

19

20
••• Reserved
27

28 (MSB)
SSP CONNECT TIME LIMIT
29 (LSB)

30 (MSB)
STP BUS INACTIVITY LIMIT
31 (LSB)

780 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 301 – REPORT GENERAL response (Continued) (part 2 of 3)

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

SAVING ZONE SAVING ZONE SAVING ZONE


SAVING ZONING
MANAGER PHY PERMISSION
37 Reserved SAVING ENABLED
PASSWORD INFORMATION TABLE
SUPPORTED
SUPPORTED SUPPORTED SUPPORTED

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

52 POWER DONE TIMEOUT

53 FIRST ENCLOSURE CONNECTOR ELEMENT INDEX

54 NUMBER OF ENCLOSURE CONNECTOR ELEMENT INDEXES

55 INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION

REDUCED EXTERNAL
56 Reserved
FUNCTIONALITY PORT

57 TIME TO REDUCED FUNCTIONALITY

58 INITIAL TIME TO REDUCED FUNCTIONALITY

59 MAXIMUM REDUCED FUNCTIONALITY TIME

60 (MSB)
LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
61 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 781


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 301 – REPORT GENERAL response (Continued) (part 3 of 3)

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.

782 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 783


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 302 – NUMBER OF ZONE GROUPS field

Code Description

00b 128 zone groups

01b 256 zone groups

All others Reserved

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.

784 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 785


T10/BSR INCITS 554 Revision 11 18 January 2021

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:

delay in assigning resources = 100 ns x (initial delay) x (hop count)

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

hop count is the contents of the HOP COUNT field.


A REDUCED FUNCTIONALITY bit set to one indicates that:
a) the expander device is scheduled to reduce its functionality (see 4.5.8) in the time indicated in the
TIME TO REDUCED FUNCTIONALITY field; or
b) the expander device is currently operating with reduced functionality (see 4.5.8).
A REDUCED FUNCTIONALITY bit set to zero indicates that the expander device is not scheduled to reduce
functionality and that the contents of the TIME TO REDUCED FUNCTIONALITY field shall be ignored.
If the REDUCED FUNCTIONALITY bit is set to one, then the TIME TO REDUCED FUNCTIONALITY field indicates the
time, in 100 ms increments, remaining until the expander device is scheduled to reduce functionality. The
expander device starts the reduced functionality delay timer after originating a Broadcast (Expander) (see
4.5.8).
An EXTERNAL PORT bit set to one indicates that the expander device is able to route connection requests to
external expander ports during reduced functionality. An EXTERNAL PORT bit set to zero indicates that the
expander device is not able to route connection requests to external expander ports during reduced
functionality.
The INITIAL TIME TO REDUCED FUNCTIONALITY field indicates the minimum time, in 100 ms increments, that an
expander device waits from originating a Broadcast (Expander) to reducing functionality. The expander device
should set the default value for the INITIAL TIME TO REDUCED FUNCTIONALITY field to at least 2 000 ms (i.e., 14h).
The MAXIMUM REDUCED FUNCTIONALITY TIME field indicates the maximum time, in one second increments, that
the expander device responds with OPEN_REJECT (RETRY) to connection requests that map to an
expander phy or an SMP target port that is not accessible during expander device reduced functionality. This
timer starts after the reduced functionality delay timer expires.
The LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field is defined in the REPORT
SELF-CONFIGURATION STATUS response (see 9.4.4.6).
The MAXIMUM NUMBER OF STORED SELF-CONFIGURATION STATUS DESCRIPTORS field indicates the maximum
number of self-configuration status descriptors (see 9.4.4.6.4) that the management device server supports.
The LAST PHY EVENT LIST DESCRIPTOR INDEX field is defined in the REPORT PHY EVENT LIST response (see
9.4.4.16).
The MAXIMUM NUMBER OF STORED PHY EVENT LIST DESCRIPTORS field indicates the maximum number of phy
event list descriptors (see 9.4.4.14.4) that the management device server supports.

786 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 CRC field is defined in 9.4.4.3.7.

9.4.4.5 REPORT MANUFACTURER INFORMATION function

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.

Table 303 – REPORT MANUFACTURER INFORMATION request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (01h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (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 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 787


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 304 defines the response format.

Table 304 – REPORT MANUFACTURER INFORMATION response

Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (01h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 0Eh)


4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
Reserved
7
SAS-1.1
8 Reserved
FORMAT

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)

788 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 789


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.6 REPORT SELF-CONFIGURATION STATUS function

9.4.4.6.1 REPORT SELF-CONFIGURATION STATUS function overview

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.

9.4.4.6.2 REPORT SELF-CONFIGURATION STATUS request

Table 305 defines the request format.

Table 305 – REPORT SELF-CONFIGURATION STATUS request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (03h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

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.

790 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 791


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.6.3 REPORT SELF-CONFIGURATION STATUS response

Table 306 defines the response format.

Table 306 – REPORT SELF-CONFIGURATION STATUS response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (03h)

2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)

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)

12 SELF-CONFIGURATION STATUS DESCRIPTOR LENGTH

13
••• Reserved
18

19 NUMBER OF SELF-CONFIGURATION STATUS DESCRIPTORS

Self-configuration status descriptor list

20
••• Self-configuration status descriptor (first) (see table 307 in 9.4.4.6.4)

••• •••

••• Self-configuration status descriptor (last) (see table 307 in 9.4.4.6.4)


n-4

n-3 (MSB)
••• CRC
n (LSB)

792 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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:

a) set the STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field to 0000h;


b) set the TOTAL NUMBER OF SELF-CONFIGURATION STATUS DESCRIPTORS field to 0000h; and
c) return no descriptors.
If the STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field in the SMP request frame does not
specify a valid descriptor, then the management device server shall:
a) set the STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field to the next index, in ascending
order wrapping from FFFFh to 0001h, that contains a valid descriptor.
If the STARTING SELF-CONFIGURATION STATUS DESCRIPTOR INDEX field is not set to 0000h and specifies a valid
descriptor, then this field shall be set to the same value as the STARTING SELF-CONFIGURATION STATUS
DESCRIPTOR INDEX field in the SMP request frame.

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.

The CRC field is defined in 9.4.4.3.7.

Working Draft SAS Protocol Layer - 5 (SPL-5) 793


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.6.4 Self-configuration status descriptor

Each self-configuration status descriptor follows the format defined in table 307.

Table 307 – Self-configuration status descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0 STATUS TYPE

1 Reserved FINAL

2 Reserved

3 PHY IDENTIFIER

••• Reserved
7

••• SAS ADDRESS

15

The STATUS TYPE field indicates the type of status being reported and is defined in table 308.

Table 308 – STATUS TYPE field (part 1 of 3)

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)

794 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 308 – STATUS TYPE field (Continued) (part 2 of 3)

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)

45h Connection request failed as a result of receiving a BREAK


46h Connection established as a result of an SMP response frame having a CRC error
47h to 5Fh Reserved
Status reported by the port layer (60h to 7Fh)
60h Error reported by the port layer
During an SMP connection, there was no SMP response frame within the maximum SMP
61h
connection time
62h to 7Fh Reserved
Status reported by the SMP transport layer (80h to 9Fh)
80h Error reported by the SMP transport layer
81h to 9Fh Reserved
Status reported by the management application layer (A0h to BFh)
A0h Error reported by the management application layer
A1h SMP response frame is too short
A2h SMP response frame contains fields with unsupported values
SMP response frame contains results inconsistent with other SMP response frames (e.g., the
A3h DISCOVER response ATTACHED SAS ADDRESS field does not contain the SAS address the
expander device expected)
The SAS ADDRESS field contains the SAS address of a self-configuring expander device that
returned a REPORT GENERAL response with the CONFIGURING bit set to one, the SELF
CONFIGURING bit set to zero, and the ZONE CONFIGURING bit set to zero (e.g., compliant with a
previous version of this standard). Accesses to SAS addresses two or more levels beyond this
A4h
expander device may not succeed until the indicated expander device completes
configuration.

This may or may not be an error.


The SAS ADDRESS field contains the SAS address of a self-configuring expander device that
returned a REPORT GENERAL response with the SELF CONFIGURING bit set to one. Accesses
to SAS addresses two or more levels beyond this expander device may not succeed until the
A5h
indicated expander device completes configuration.

This may or may not be an error.

Working Draft SAS Protocol Layer - 5 (SPL-5) 795


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 308 – STATUS TYPE field (Continued) (part 3 of 3)

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.

This may or may not be an error.


A7h to BFh Reserved
Other status (C0h to FFh)
C0h to DFh Reserved
E0h to FFh Vendor specific

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.

9.4.4.7 REPORT ZONE PERMISSION TABLE function

9.4.4.7.1 REPORT ZONE PERMISSION TABLE function overview

The REPORT ZONE PERMISSION function returns a set of zone permission table entries. This function shall
be supported by all zoning expander devices.

796 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.7.2 REPORT ZONE PERMISSION TABLE request

Table 309 defines the request format.

Table 309 – REPORT ZONE PERMISSION TABLE request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (04h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

4 Reserved REPORT TYPE

5 Reserved

6 STARTING SOURCE ZONE GROUP

7 MAXIMUM NUMBER OF ZONE PERMISSION DESCRIPTORS

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 797


T10/BSR INCITS 554 Revision 11 18 January 2021

The REPORT TYPE field specifies the zone permission table values that the management device server shall
return and is defined in table 310.

Table 310 – REPORT TYPE field

Code Description

00b Current zone permission table

01b Shadow zone permission table

Saved zone permission table.


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 permission table

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.

798 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.7.3 REPORT ZONE PERMISSION TABLE response

Table 311 defines the response format.

Table 311 – REPORT ZONE PERMISSION TABLE response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (04h)

2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)

4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
ZONE
6 Reserved REPORT TYPE
LOCKED

NUMBER OF ZONE
7 Reserved
GROUPS

8
••• Reserved
12

13 ZONE PERMISSION DESCRIPTOR LENGTH

14 STARTING SOURCE ZONE GROUP

15 NUMBER OF ZONE PERMISSION DESCRIPTORS

Zone permission descriptor list


16
Zone permission descriptor (first) (see table 313 or table 314 in
••• 9.4.4.7.4)
31 or 47
••• •••
(n - 20) or
(n - 36) Zone permission descriptor (last) (see table 313 or table 314 in
••• 9.4.4.7.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 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 799


T10/BSR INCITS 554 Revision 11 18 January 2021

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 311
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
SMP initiator port detects a change in the value of this field while retrieving multiple response frames, then it
should retrieve the response frames again because the status information returned is incomplete and
inconsistent.
The ZONE LOCKED bit is defined in the SMP REPORT GENERAL response.
The REPORT TYPE field indicates the value of the REPORT TYPE field in the request frame.
The NUMBER OF ZONE GROUPS field indicates the number of zone groups supported by the expander device
and is defined in the REPORT GENERAL response (see table 302 in 9.4.4.4).
The ZONE PERMISSION DESCRIPTOR LENGTH field indicates the length, in dwords, of the zone permission
descriptor (see 9.4.4.7.4).
The STARTING SOURCE ZONE GROUP field indicates the first source zone group (i.e., s) being returned and shall
be set to the same value as the STARTING SOURCE ZONE GROUP field in the SMP request frame.
The NUMBER OF ZONE PERMISSION DESCRIPTORS field indicates the number of zone permission descriptors in
the zone permission descriptor list.
The zone permission descriptor list contains a zone permission descriptor as defined in 9.4.4.7.4 for each
source zone group in ascending order starting with the source zone group specified in the STARTING SOURCE
ZONE GROUP field in the request.

The CRC field is defined in 9.4.4.3.7.

9.4.4.7.4 Zone permission descriptor

The zone permission descriptor format is based on the NUMBER OF ZONE GROUPS field as defined in table 312.

Table 312 – Zone permission descriptors

NUMBER OF ZONE GROUPS field Zone permission descriptor format

00b Table 313

01b Table 314

All others Reserved

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]

••• •••

ZP[S, 7] ZP[S, 6] ZP[S, 5] ZP[S, 4] ZP[S, 1] ZP[S, 0]


15 ZP[S, 3] ZP[S, 2]
(0b) (0b) (0b) (0b) (1b) (0b)

800 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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]

••• •••

ZP[S, 7] ZP[S, 6] ZP[S, 5] ZP[S, 4] ZP[S, 1] ZP[S, 0]


31 ZP[S, 3] ZP[S, 2]
(0b) (0b) (0b) (0b) (1b) (0b)

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.

Table 315 – Zone permission descriptor bit requirements

Source zone
Management device server requirements a
group (i.e., s)

ZP[s, 0] shall be set to zero.


0 ZP[s, 1] shall be set to one.
ZP[s, 2 to (z-1)] shall be set to zero.

1 ZP[s, 0 to (z-1)] shall be set to one.

ZP[s, 0] shall be set to zero.


4, 5, 6, or 7 ZP[s, 1] shall be set to one.
ZP[s, 4 to (z-1)] shall be set to zero.

ZP[s, 0] shall be set to zero.


ZP[s, 1] shall be set to one.
ZP[s, 2 to 3] shall be set to zero or one as specified by the CONFIGURE ZONE
2, 3, or 8 to
PERMISSION TABLE function (see 9.4.4.26).
(z-1) a
ZP[s, 4 to 7] shall be set to zero.
ZP[s, 8 to (z-1)] shall be set to zero or one as specified by the CONFIGURE ZONE
PERMISSION TABLE function.
a The number of zone groups (i.e., z) is reported in NUMBER OF ZONE GROUPS field.

9.4.4.8 REPORT ZONE MANAGER PASSWORD function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 801


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 316 – REPORT ZONE MANAGER PASSWORD request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (05h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

4 Reserved REPORT TYPE

••• 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.

802 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The REPORT TYPE field specifies the zone manager password value that the management device server shall
return and is defined in table 317.

Table 317 – REPORT TYPE field

Code Description

00b Current zone manager password


01b Reserved a
Saved zone manager password.

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.

The CRC field is defined in 9.4.4.2.7.


Table 318 defines the response format.

Table 318 – REPORT ZONE MANAGER PASSWORD response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (05h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (09h)

4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)

6 Reserved REPORT TYPE

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 803


T10/BSR INCITS 554 Revision 11 18 January 2021

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 CRC field is defined in 9.4.4.3.7.

9.4.4.9 REPORT BROADCAST function

9.4.4.9.1 REPORT BROADCAST function overview

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.

9.4.4.9.2 REPORT BROADCAST request

Table 319 defines the request format.

Table 319 – REPORT BROADCAST request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (06h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

4 Reserved BROADCAST TYPE

••• Reserved
7

8 (MSB)

••• CRC

11 (LSB)

804 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 805


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.9.3 REPORT BROADCAST response

Table 320 defines the response format.

Table 320 – REPORT BROADCAST response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (06h)

2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)

4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)

6 Reserved BROADCAST TYPE

••• Reserved
9

10 BROADCAST DESCRIPTOR LENGTH

11 NUMBER OF BROADCAST DESCRIPTORS

Broadcast descriptor list

12

••• Broadcast descriptor (first) (see table 321 in 9.4.4.9.4)


19

••• •••
n - 11

••• Broadcast descriptor (last) (see table 321 in 9.4.4.9.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 320 for the REPORT
BROADCAST response.

806 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

The CRC field is defined in 9.4.4.3.7.

9.4.4.9.4 Broadcast descriptor

Table 321 defines the Broadcast descriptor.

Table 321 – Broadcast descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0 Reserved BROADCAST TYPE

1 PHY IDENTIFIER

2 Reserved BROADCAST REASON

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 807


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 322 – BROADCAST REASON field for originated Broadcasts

BROADCAST
BROADCAST TYPE field Description
REASON field

0h (i.e., Broadcast (Change)) 0h Unspecified a b

0h Unspecified

A phy event peak value detector has reached its


1h
threshold value.

A phy event peak value detector has been cleared by


4h (i.e., Broadcast (Expander)) 2h the SMP CONFIGURE PHY EVENT function (see
9.4.4.30).

The expander device is going to have reduced


functionality (e.g., disable SMP access, reduced
3h
performance, disable phy to phy communication) for a
period of time (see 4.5.8).

8h (i.e., Broadcast (Zone Activate)) 0h Unspecified

All others Reserved


a
In an expander device, the Broadcast (Change) count is also reported in the REPORT GENERAL
response (see 9.4.4.4) and in other SMP response frames containing an EXPANDER CHANGE COUNT field.
b
Broadcast (Change)s originated by this expander device or SAS device shall be counted, with the PHY
IDENTIFIER field set to FFh.

808 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.10 DISCOVER function

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.

Table 323 defines the request format.

Table 323 – DISCOVER request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (10h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 02h)

••• 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 809


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 324 – DISCOVER response (part 1 of 4)

Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (10h)
2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 1Dh)


4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER
10
Reserved
11
12 Reserved ATTACHED SAS DEVICE TYPE ATTACHED REASON
13 Reserved NEGOTIATED LOGICAL LINK RATE
ATTACHED ATTACHED ATTACHED
ATTACHED SATA
14 Reserved SSP INITIATOR STP INITIATOR SMP INITIATOR
HOST
PORT PORT PORT

ATTACHED ATTACHED ATTACHED ATTACHED


STP BUFFER ATTACHED SATA
15 SATA PORT Reserved SSP TARGET STP TARGET SMP TARGET
TOO SMALL DEVICE
SELECTOR PORT PORT PORT

810 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 324 – DISCOVER response (Continued) (part 2 of 4)

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 ATTACHED ATTACHED ATTACHED


ATTACHED POWER
33 PERSISTENT SLUMBER PARTIAL INSIDE ZPSDS REQUESTED BREAK_REPLY
CAPABLE
CAPABLE CAPABLE CAPABLE PERSISTENT INSIDE ZPSDS CAPABLE

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

43 VIRTUAL PHY Reserved PARTIAL PATHWAY TIMEOUT VALUE

44 Reserved ROUTING ATTRIBUTE


45 Reserved CONNECTOR TYPE

46 CONNECTOR ELEMENT INDEX

47 CONNECTOR PHYSICAL LINK


SAS SAS SATA SATA
48 PHY POWER CONDITION SAS POWER CAPABLE SLUMBER PARTIAL SLUMBER PARTIAL
CAPABLE CAPABLE CAPABLE CAPABLE

SAS SAS SATA SATA


PWR_DIS CONTROL
49 PWR_DIS SIGNAL SLUMBER PARTIAL SLUMBER PARTIAL
CAPABLE
ENABLED ENABLED ENABLED ENABLED

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

65 SELF-CONFIGURATION LEVELS COMPLETED

Working Draft SAS Protocol Layer - 5 (SPL-5) 811


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 324 – DISCOVER response (Continued) (part 3 of 4)

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

94 REASON NEGOTIATED PHYSICAL LINK RATE

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

SHADOW SHADOW SHADOW


SHADOW
INSIDE REQUESTED ZONE
104 Reserved Reserved Reserved ZONING
ZPSDS INSIDE GROUP
ENABLED
PERSISTENT ZPSDS PERSISTENT

105 Reserved

812 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 324 – DISCOVER response (Continued) (part 4 of 4)

Byte\Bit 7 6 5 4 3 2 1 0
106 Reserved

107 SHADOW ZONE GROUP

108 DEVICE SLOT NUMBER

109 DEVICE SLOT GROUP NUMBER

110 (MSB)
••• DEVICE SLOT GROUP OUTPUT CONNECTOR
115 (LSB)
116 (MSB)
STP BUFFER SIZE
117 (LSB)

118 BUFFERED PHY BURST SIZE

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.

Table 325 – ATTACHED SAS DEVICE TYPE field

Code Description

000b No device attached

001b SAS device or SATA device

010b Expander device

011b Obsolete

All others Reserved

Working Draft SAS Protocol Layer - 5 (SPL-5) 813


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

814 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Phy is enabled and the expander phy is performing an SMP PHY


CONTROL function (see 9.4.4.28) phy operation of LINK RESET or
HARD RESET.
RESET_IN_
5h
PROGRESS
This value is returned if the specified phy contained a value of 8h to Fh in
this field when an SMP PHY CONTROL function phy operation of LINK
RESET or HARD RESET phy operation is processed.
UNSUPPORTED_
Phy is enabled and a phy is attached without any commonly supported
PHY_ 6h
settings.
ATTACHED
Reserved 7h Reserved
G1 8h Phy is enabled with a 1.5 Gbit/s physical link rate or logical link rate.
G2 9h Phy is enabled with a 3 Gbit/s physical link rate or logical link rate.
G3 Ah Phy is enabled with a 6 Gbit/s physical link rate or logical link rate.
G4 Bh Phy is enabled with a 12 Gbit/s physical link rate or logical link rate.
G5 Ch Phy is enabled with a 22.5 Gbit/s physical link rate or logical link rate.
Phy is enabled and reserved for future logical link rate or physical link
Reserved Dh to Fh
rates.
a This code may be used by a management application client in its local data structures to indicate an
unknown negotiated logical link rate or physical link rate (e.g., before the discover process has queried
the phy).

Working Draft SAS Protocol Layer - 5 (SPL-5) 815


T10/BSR INCITS 554 Revision 11 18 January 2021

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

Either the phy is:


a) a virtual phy; or
0 0
b) a physical phy, and neither a SATA port selector nor a SATA device is
attached and ready on the selected phy.

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.

816 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 817


T10/BSR INCITS 554 Revision 11 18 January 2021

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 ATTACHED PHY IDENTIFIER field is defined as follows:


a) if the attached phy is a SAS phy, then the ATTACHED PHY IDENTIFIER field contains the phy identifier of
the attached SAS phy in the attached SAS device;
b) if the attached phy is an expander phy, then the ATTACHED PHY IDENTIFIER field contains the phy
identifier (see 4.2.10) of the attached expander phy in the attached expander device;
c) if the attached phy is a SATA device phy, then the ATTACHED PHY IDENTIFIER field contains 00h;
d) if the attached phy is a SATA port selector phy and the expander device is able to determine the port
of the SATA port selector to which it is attached, then the ATTACHED PHY IDENTIFIER field contains 00h
or 01h; or
e) if the attached phy is a SATA port selector phy and the expander device is not able to determine the
port of the SATA port selector to which it is attached, then the ATTACHED PHY IDENTIFIER field contains
00h.
If the phy is a physical phy and the attached phy is a SAS phy or an expander phy, then the ATTACHED PHY
IDENTIFIER field contains the value of the PHY IDENTIFIER field received in the IDENTIFY address frame (see
6.10.2) during the identification sequence.
For a physical phy, the ATTACHED PHY IDENTIFIER field 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 ATTACHED PERSISTENT CAPABLE bit indicates the value of the PERSISTENT CAPABLE bit received in the
IDENTIFY address frame (see 6.10.2) from the attached phy during the identification sequence.
The ATTACHED POWER CAPABLE field indicates the value of the POWER CAPABLE field received in the IDENTIFY
address frame (see 6.10.2) from the attached phy during the identification sequence.
The ATTACHED SLUMBER CAPABLE bit indicates the value of the SLUMBER CAPABLE bit received in the IDENTIFY
address frame (see 6.10.2) from the attached phy during the identification sequence.
The ATTACHED PARTIAL CAPABLE bit indicates the value of the PARTIAL CAPABLE bit received in the IDENTIFY
address frame (see 6.10.2) from the attached phy during the identification sequence.
If the phy is a physical phy, then the ATTACHED INSIDE ZPSDS PERSISTENT bit indicates the value of the INSIDE
ZPSDS PERSISTENT bit received in the IDENTIFY address frame (see 6.10.2) from the attached phy during the
identification sequence. If the phy is a virtual phy, then the ATTACHED INSIDE ZPSDS PERSISTENT bit shall be set
to zero.
If the phy is a physical phy, then the ATTACHED REQUESTED INSIDE ZPSDS bit indicates the value of the
REQUESTED INSIDE ZPSDS bit received in the IDENTIFY address frame (see 6.10.2) from the attached phy
during the identification sequence. If the phy is a virtual phy, then the ATTACHED REQUESTED INSIDE ZPSDS bit
shall be set to zero.
If the phy is a physical phy, then the ATTACHED BREAK_REPLY CAPABLE bit indicates the value of the
BREAK_REPLY CAPABLE bit received in the IDENTIFY address frame (see 6.10.2) during the identification
sequence. If a phy reset sequence occurs (see 5.11), then the ATTACHED BREAK_REPLY CAPABLE bit shall be
set to zero. If the phy is a virtual phy, then the ATTACHED BREAK_REPLY CAPABLE bit shall be set to zero.
The ATTACHED APTA CAPABLE bit indicates the value of the APTA CAPABLE bit received in the IDENTIFY address
frame (see 6.10.2) from the attached phy during the identification sequence.
The ATTACHED SMP PRIORITY CAPABLE bit indicates the value of the SMP PRIORITY CAPABLE bit received in the
IDENTIFY address frame (see 6.10.2) from the attached phy during the identification sequence.
The ATTACHED PWR_DIS CAPABLE bit indicates the value of the PWR_DIS CAPABLE bit received in the IDENTIFY
address frame (see 6.10.2) from the attached phy during the identification sequence.
The PROGRAMMED MINIMUM PHYSICAL LINK RATE field indicates the minimum 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 MINIMUM PHYSICAL LINK RATE field.

818 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 819


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 330 – ROUTING ATTRIBUTE field

Code Name Description

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.

All others Reserved

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).

820 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The PHY POWER CONDITION field is defined in table 331 and indicates the power condition of the phy.

Table 331 – PHY POWER CONDITION field

Code Description

00b Active phy power condition

01b Partial phy power condition

10b Slumber phy power condition

11b Reserved

The SAS POWER CAPABLE field is defined in table 332.

Table 332 – SAS POWER CAPABLE field

Code Description

00b The SAS device containing the phy:


a) does not respond to PWR_GRANT with PWR_ACK, PWR_REQ with
PWR_ACK, or PWR_DONE with PWR_ACK; and
b) does not issue PWR_REQ or PWR_DONE.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 821


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 333 defines the PWR_DIS SIGNAL field.

Table 333 – PWR_DIS SIGNAL field

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.

Table 334 defines the PWR_DIS CONTROL CAPABLE field.

Table 334 – PWR_DIS CONTROL CAPABLE field

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.

822 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

For physical phys, table 335 defines how the ATTACHED DEVICE NAME field is updated.

Table 335 – ATTACHED DEVICE NAME field

Condition Update time Value

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 823


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 336 – SELF-CONFIGURATION STATUS field

Code Description

00h No status available.

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.

Table 337 – SELF-CONFIGURATION LEVELS COMPLETED field

Code Description

The management application client:


a) has not begun the discover process through the expander port containing the specified
phy;
00h
b) has not completed the discover process through the expander port containing the specified
phy; or
c) an expander device is not attached to the expander port containing the specified phy.

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.

824 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 825


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.11 REPORT PHY ERROR LOG function

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.

826 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 338 defines the request format.

Table 338 – REPORT PHY ERROR LOG request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (11h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 02h)

••• 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 827


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 339 defines the response format.

Table 339 – REPORT PHY ERROR LOG response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (11h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 06h)

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.

828 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.4.4.12 REPORT PHY SATA function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 829


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 340 defines the request format.

Table 340 – REPORT PHY SATA request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (12h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 02h)

••• 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.

830 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 341 defines the response format.

Table 341 – REPORT PHY SATA response


Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (12h)
2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 10h)


4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER

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

66 CURRENT AFFILIATION CONTEXTS

67 MAXIMUM AFFILIATION CONTEXTS

68 (MSB)
••• CRC
71 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 831


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

832 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.4.4.13 REPORT ROUTE INFORMATION function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 833


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 342 defines the request format.

Table 342 – REPORT ROUTE INFORMATION request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (13h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 02h)

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.

834 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 835


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 343 defines the response format.

Table 343 – REPORT ROUTE INFORMATION response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (13h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h or 09h)

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.

836 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 343
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 INDEX field indicates the expander route index for the expander route entry being
returned (see 4.5.7.4).
The PHY IDENTIFIER field indicates the phy identifier (see 4.2.10) for the expander route entry being returned
and is the same as the PHY IDENTIFIER field in the request frame.
The EXPANDER ROUTE ENTRY DISABLED bit indicates whether the ECM shall use the expander route entry to
route connection requests (see 4.5.7.4). If the EXPANDER ROUTE ENTRY DISABLED bit is set to zero, then the
ECM shall use the expander route entry to route connection requests. If the EXPANDER ROUTE ENTRY DISABLED
bit is set to one, then the ECM shall not use the expander route entry to route connection requests.
The ROUTED SAS ADDRESS field indicates the SAS address (see 4.2.4) in the expander route entry (see
4.5.7.4).
The CRC field is defined in 9.4.4.3.7.

9.4.4.14 REPORT PHY EVENT function

9.4.4.14.1 REPORT PHY EVENT function overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 837


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.14.2 REPORT PHY EVENT request

Table 344 defines the request format.

Table 344 – REPORT PHY EVENT request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (14h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (02h)

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.

838 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.14.3 REPORT PHY EVENT response

Table 345 defines the response format.

Table 345 – REPORT PHY EVENT response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (14h)

2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)

4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)

6
••• Reserved
8

9 PHY IDENTIFIER

10
••• Reserved
13

14 PHY EVENT DESCRIPTOR LENGTH

15 NUMBER OF PHY EVENT DESCRIPTORS

Phy event descriptor list

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 839


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.14.4 Phy event descriptor

Table 346 defines the phy event descriptor.

Table 346 – Phy event descriptor

Byte\Bit 7 6 5 4 3 2 1 0

••• Reserved
2

3 PHY EVENT SOURCE

4 (MSB)

••• PHY EVENT

7 (LSB)

8 (MSB)

••• PEAK VALUE DETECTOR THRESHOLD

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.

840 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.15 DISCOVER LIST function

9.4.4.15.1 DISCOVER LIST function overview

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 841


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.15.2 DISCOVER LIST request

Table 347 defines the request format.

Table 347 – DISCOVER LIST request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (20h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (06h)

••• Reserved
7

8 STARTING PHY IDENTIFIER

9 MAXIMUM NUMBER OF DISCOVER LIST DESCRIPTORS

IGNORE
10 ZONE Reserved PHY FILTER
GROUP

11 Reserved DESCRIPTOR TYPE

12

••• Reserved
15

16

••• Vendor specific


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 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.

842 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 348 – PHY FILTER field

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.

All others Reserved

Working Draft SAS Protocol Layer - 5 (SPL-5) 843


T10/BSR INCITS 554 Revision 11 18 January 2021

The DESCRIPTOR TYPE field is defined in table 349 and specifies the DISCOVER LIST descriptor format and
length.

Table 349 – DESCRIPTOR TYPE field

Code DISCOVER LIST descriptor format Descriptor length

DISCOVER response defined in table 324 (see


The length of the DISCOVER response,
0h 9.4.4.10), starting with byte 0 and not including the
not including the CRC field a
CRC field.

SHORT FORMAT descriptor defined in table 351


1h 24 bytes b
(see 9.4.4.15.4)

All others Reserved


a
A maximum response frame size of 1 028 bytes supports eight 120-byte DISCOVER LIST descriptors
containing DISCOVER responses.
b
A maximum response frame size of 1 028 bytes supports 40 24-byte DISCOVER LIST descriptors
containing SHORT FORMAT descriptors.

The CRC field is defined in 9.4.4.2.7.

844 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.15.3 DISCOVER LIST response

Table 350 defines the response format.

Table 350 – DISCOVER LIST response

Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (20h)
2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)


4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6
Reserved
7
8 STARTING PHY IDENTIFIER
9 NUMBER OF DISCOVER LIST DESCRIPTORS
10 Reserved PHY FILTER
11 Reserved DESCRIPTOR TYPE
12 DISCOVER LIST DESCRIPTOR LENGTH
13
••• Reserved
15
EXTERNALLY
ZONING ZONING SELF ZONE
16 Reserved CONFIGURING CONFIGURABLE
SUPPORTED ENABLED CONFIGURING CONFIGURING
ROUTE TABLE
17 Reserved
18 (MSB)
LAST SELF-CONFIGURATION STATUS DESCRIPTOR INDEX
19 (LSB)
20 (MSB)
LAST PHY EVENT LIST DESCRIPTOR INDEX
21 (LSB)
22
••• Reserved
31
32
••• Vendor specific
47
DISCOVER LIST descriptor list
48 DISCOVER LIST descriptor (first) (see table 349 in 9.4.4.15.1, and
••• table 324 in 9.4.4.10 or table 351 in 9.4.4.15.4)
••• •••
DISCOVER LIST descriptor (last) (see table 349 in 9.4.4.15.1, and
••• table 324 in 9.4.4.10 or table 351 in 9.4.4.15.4)
n-4
n-3 (MSB)
••• CRC
n (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 845


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

846 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.15.4 DISCOVER LIST response SHORT FORMAT descriptor

Table 351 defines the SHORT FORMAT descriptor.

Table 351 – SHORT FORMAT descriptor

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

ATTACHED ATTACHED ATTACHED


Restricted SSP STP SMP ATTACHED
4
for DISCOVER response byte 14 INITIATOR INITIATOR INITIATOR SATA HOST
PORT PORT PORT

ATTACHED Restricted for ATTACHED ATTACHED ATTACHED


STP BUFFER ATTACHED
5 SATA PORT DISCOVER response SSP TARGET STP TARGET SMP TARGET
TOO SMALL SATA DEVICE
SELECTOR byte 15 PORT PORT PORT

6 VIRTUAL PHY Reserved ROUTING ATTRIBUTE

7 REASON NEGOTIATED PHYSICAL LINK RATE

8 ZONE GROUP

Restricted INSIDE REQUESTED ZONE


INSIDE
9 for DISCOVER ZPSDS INSIDE Reserved GROUP Reserved
ZPSDS
response byte 60 PERSISTENT ZPSDS PERSISTENT

10 ATTACHED PHY IDENTIFIER

11 PHY CHANGE COUNT

12
••• ATTACHED SAS ADDRESS

19

20 BUFFERED PHY BURST SIZE

21
••• Reserved
23

Working Draft SAS Protocol Layer - 5 (SPL-5) 847


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

9.4.4.16 REPORT PHY EVENT LIST function

9.4.4.16.1 REPORT PHY EVENT LIST function overview

The REPORT PHY EVENT LIST function returns phy events (see 4.13). This SMP function may be
implemented by any management device server.

9.4.4.16.2 REPORT PHY EVENT LIST request

Table 352 defines the request format.

Table 352 – REPORT PHY EVENT LIST request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (21h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

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.

848 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 849


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.16.3 REPORT PHY EVENT LIST response

Table 353 defines the response format.

Table 353 – REPORT PHY EVENT LIST response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (21h)

2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)

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)

10 PHY EVENT LIST DESCRIPTOR LENGTH

11
••• Reserved
14

15 NUMBER OF PHY EVENT LIST DESCRIPTORS

Phy event list descriptor list


16
••• Phy event list descriptor (first) (see table 354 in 9.4.4.16.4)

••• •••

••• 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.

850 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 353 for the REPORT
PHY EVENT 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 FIRST PHY EVENT LIST DESCRIPTOR INDEX field indicates the index of the first phy event list descriptor being
returned. If the STARTING PHY EVENT LIST DESCRIPTOR INDEX field in the SMP request frame is set to 0000h,
then the management device server shall:
a) set the FIRST PHY EVENT LIST DESCRIPTOR INDEX field to 0000h;
b) set the NUMBER OF PHY EVENT LIST DESCRIPTORS field to 00h; and
c) return no descriptors.
If the STARTING PHY EVENT LIST DESCRIPTOR INDEX field specified in the SMP request frame does not contain a
valid descriptor, then the device management server shall set the FIRST PHY EVENT LIST DESCRIPTOR INDEX field
to the next index, in ascending order wrapping from FFFFh to 0001h, that contains a valid descriptor,
otherwise this field shall be set to the same value as the STARTING PHY EVENT LIST DESCRIPTOR INDEX field in
the SMP request frame.
The LAST PHY EVENT LIST DESCRIPTOR INDEX field indicates the last index of the last recorded phy event list
descriptor.
The PHY EVENT LIST DESCRIPTOR LENGTH field indicates the length, in dwords, of the phy event list descriptor
(see table 354 in 9.4.4.16.4).
The NUMBER OF PHY EVENT LIST DESCRIPTORS field indicates the number of phy event list descriptors in the phy
event list descriptor list.
The phy event list descriptor list contains phy event list descriptors as defined in 9.4.4.16.4. The management
device server shall return either all the phy event list descriptors that fit in one SMP response frame or all the
phy event list descriptors until the index indicated in the LAST PHY EVENT LIST DESCRIPTOR INDEX field is
reached. The phy event list descriptor list shall start with the phy event list descriptor indicated by the FIRST
PHY EVENT LIST DESCRIPTOR INDEX field and continue with phy event list descriptors sorted in ascending order,
wrapping from FFFFh to 0001h, based on the phy event list descriptor index. The phy event list descriptor list
shall not contain any truncated phy event list descriptors. If the FIRST PHY EVENT LIST DESCRIPTOR INDEX field is
equal to the LAST PHY EVENT LIST DESCRIPTOR INDEX field, then the phy event list descriptor at that index shall
be returned.
The CRC field is defined in 9.4.4.3.7.

Working Draft SAS Protocol Layer - 5 (SPL-5) 851


T10/BSR INCITS 554 Revision 11 18 January 2021

9.4.4.16.4 Phy event list descriptor

Table 354 defines the phy event list descriptor.

Table 354 – Phy event list descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0
Reserved
1

2 PHY IDENTIFIER

3 PHY EVENT SOURCE

4 (MSB)

••• PHY EVENT

7 (LSB)

8 (MSB)

••• PEAK VALUE DETECTOR THRESHOLD

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.

9.4.4.17 REPORT EXPANDER ROUTE TABLE LIST function

9.4.4.17.1 REPORT EXPANDER ROUTE TABLE LIST function overview

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.

852 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.17.2 REPORT EXPANDER ROUTE TABLE LIST request

Table 355 defines the request format.

Table 355 – REPORT EXPANDER ROUTE TABLE LIST request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (22h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (06h)

••• 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

19 STARTING PHY IDENTIFIER

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 853


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

854 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.17.3 REPORT EXPANDER ROUTE TABLE LIST response

Table 356 defines the response format.

Table 356 – REPORT EXPANDER ROUTE TABLE LIST response

Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (41h)
1 FUNCTION (22h)
2 FUNCTION RESULT

3 RESPONSE LENGTH ((n - 7) / 4)


4 (MSB)
EXPANDER CHANGE COUNT
5 (LSB)
6 (MSB)
EXPANDER ROUTE TABLE CHANGE COUNT
7 (LSB)
SELF ZONE ZONING
8 Reserved CONFIGURING
CONFIGURING CONFIGURING ENABLED

9 Reserved
10 EXPANDER ROUTE TABLE DESCRIPTOR LENGTH

11 NUMBER OF EXPANDER ROUTE TABLE DESCRIPTORS

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 855


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

856 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.17.4 Expander route table descriptor

Table 357 defines the expander route table descriptor.

Table 357 – Expander route table descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0
••• ROUTED SAS ADDRESS

(starting phy identifier (starting phy identifier


8
+ 47) + 40)

••• PHY BIT MAP

(starting phy identifier


13 (starting phy identifier)
+ 7)

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).

9.4.4.18 CONFIGURE GENERAL function

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 857


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 358 defines the request format.

Table 358 – CONFIGURE GENERAL request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (80h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (04h)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 (MSB)
SSP CONNECT TIME LIMIT
7 (LSB)

UPDATE UPDATE INITIAL UPDATE STP UPDATE STP


UPDATE UPDATE UPDATE STP UPDATE STP
POWER TIME TO SMP I_T BUS
8 TIME TO SSP TIME REJECT TO CONNECT TIME
DONE REDUCED NEXUS LOSS INACTIVITY
DELAY LIMIT OPEN LIMIT LIMIT
TIMEOUT FUNCTIONALITY TIME LIMIT

9 INITIAL TIME TO DELAY EXPANDER FORWARD OPEN INDICATION

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)

16 INITIAL TIME TO REDUCED FUNCTIONALITY

17 POWER DONE TIMEOUT

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.

858 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 358 for the CONFIGURE
GENERAL request.
If the management device server is not in an expander device or the EXPECTED EXPANDER CHANGE COUNT field
is set to 0000h, then the EXPECTED EXPANDER CHANGE COUNT field shall be ignored. If the management device
server is in an expander device and the EXPECTED EXPANDER CHANGE COUNT field is not set to 0000h, then:
a) if the EXPECTED EXPANDER CHANGE COUNT field contains the current expander change count (i.e., the
value of the EXPANDER CHANGE COUNT field that is returned by an SMP REPORT GENERAL response
at this time), then the management device server shall process the function; and
b) if the EXPECTED EXPANDER CHANGE COUNT field does not contain the current expander change count,
then the management device server shall return a function result of INVALID EXPANDER CHANGE
COUNT in the response frame (see table 298 in 9.4.4.3).
The SSP CONNECT TIME LIMIT field specifies the maximum duration of an SSP 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, then the
expander logical phy requests the end device close the connection (see 6.20.8). A value of 0000h in this field
specifies that there is no maximum connection time limit. This value is reported in the SSP CONNECT TIME LIMIT
field in the SMP REPORT GENERAL response (see 9.4.4.4). For expander logical phys the maximum
connection time limit is enforced by the expander link layer (see 6.19.9).
An UPDATE TIME TO DELAY bit set to one specifies that the INITIAL TIME TO DELAY EXPANDER FORWARD OPEN
INDICATION field shall be honored. An UPDATE TIME TO DELAY bit set to zero specifies that the INITIAL TIME TO
DELAY EXPANDER FORWARD OPEN INDICATION field shall be ignored.

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:

delay in assigning resources = 100 ns x (initial delay) x (hop count)

Working Draft SAS Protocol Layer - 5 (SPL-5) 859


T10/BSR INCITS 554 Revision 11 18 January 2021

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

hop count is the contents of the HOP COUNT field.


The STP BUS INACTIVITY LIMIT field specifies the maximum time, in 100 s increments, that an STP target port is
permitted to maintain a connection (see 4.1.12) while transmitting and receiving SATA_SYNC. When this time
is exceeded, the STP target port shall close the connection. A value of 0000h in this field specifies that there
is no bus inactivity time limit. This value is reported in the STP BUS INACTIVITY LIMIT field in the SMP REPORT
GENERAL response (see 9.4.4.4). The bus inactivity time limit is enforced by the port layer (see 7.2.3).
The STP CONNECT TIME LIMIT field specifies 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). When this time is exceeded, the STP
target port shall close the connection at the next opportunity. If the STP target port is transferring a frame
when the maximum connection time limit is exceeded, then the STP target port shall complete transfer of the
frame before closing the connection. A value of 0000h in this field specifies that there is no maximum
connection time limit. This value is reported in the STP CONNECT TIME LIMIT field in the SMP REPORT
GENERAL response (see 9.4.4.4). The maximum connection time limit is enforced by the port layer (see
7.2.3).
The STP SMP I_T NEXUS LOSS TIME field specifies the minimum time that an STP target port or SMP initiator port
shall retry connection requests that are rejected with responses indicating the destination port may no longer
be present (see 7.2.2) before recognizing an I_T nexus loss (see 4.4.3).
An STP initiator port or an SMP initiator port should retry connection requests for at least the time indicated by
the STP SMP I_T NEXUS LOSS TIME field in the SMP REPORT GENERAL response for the STP target port to
which it is trying to establish a connection.
Table 359 defines the values of the STP SMP I_T NEXUS LOSS TIME field. This value is enforced by the port layer
(see 7.2.2).

Table 359 – STP SMP I_T NEXUS LOSS TIME field

Code a Description

0000h Vendor specific amount of time.

0001h to FFFEh Time in one millisecond increments.

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).

860 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 360 – CONFIGURE GENERAL response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (80h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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 CRC field is defined in 9.4.4.3.7.

9.4.4.19 ENABLE DISABLE ZONING function

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 861


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 361 defines the request format.

Table 361 – ENABLE DISABLE ZONING request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (81h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (02h)

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).

862 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 362 – SAVE field

Return function result of SAVING


Code Values updated NOT SUPPORTED if saving is not
supported

00b Shadow no

01b Saved a yes

10b Saved a, if saving is supported, and shadow. no

11b Saved a and shadow. yes


a Saving only begins during the activate step (see 4.9.6.4). The management device server shall return
the function result without waiting for the save to complete and set the SAVING bit to one in the REPORT
GENERAL response until the save is complete.

The ENABLE DISABLE ZONING field is defined in table 363.

Table 363 – ENABLE DISABLE ZONING field

Code Description

00b No change

01b Enable zoning

10b Disable zoning

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 863


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 364 defines the response format.

Table 364 – ENABLE DISABLE ZONING response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (81h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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.

9.4.4.20 ZONED BROADCAST function

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).

864 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 365 defines the request format.

Table 365 – ZONED BROADCAST request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (85h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH ((n - 7) / 4)

4
Restricted (for an EXPECTED EXPANDER CHANGE COUNT field)
5

6 Reserved BROADCAST TYPE

7 NUMBER OF BROADCAST SOURCE ZONE GROUPS

Broadcast source zone group list

8 BROADCAST SOURCE ZONE GROUP (first)

••• •••
BROADCAST SOURCE ZONE GROUP (last)

••• PAD (if needed)


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 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 865


T10/BSR INCITS 554 Revision 11 18 January 2021

The BROADCAST TYPE field specifies the type of Broadcast that shall be forwarded and is defined in Table 366.

Table 366 – BROADCAST TYPE field

Code Description

0000b Broadcast (Change)

0001b Broadcast (Reserved Change 0)

0010b Broadcast (Reserved Change 1)

0011b Broadcast (SES)

0100b Broadcast (Expander)

0101b Broadcast (Asynchronous Event)

0110b Broadcast (Reserved 3)

0111b Broadcast (Reserved 4)

1000b Broadcast (Zone Activate)

All others Reserved

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.

866 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 367 defines the response format.

Table 367 – ZONED BROADCAST response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (85h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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 CRC field is defined in 9.4.4.3.7.

9.4.4.21 ZONE LOCK function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 867


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 368 – ZONE LOCK request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (86h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (09h)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 (MSB)
ZONE LOCK INACTIVITY TIME LIMIT
7 (LSB)

8 (MSB)

••• ZONE MANAGER PASSWORD

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).

868 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 369 – ZONE LOCK response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (86h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (03h)

••• Reserved
7

••• ACTIVE ZONE MANAGER SAS ADDRESS

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 869


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.22 ZONE ACTIVATE function

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.

Table 370 – ZONE ACTIVATE request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (87h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

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.

870 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 371 defines the response format.

Table 371 – ZONE ACTIVATE response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (87h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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 CRC field is defined in 9.4.4.3.7.

9.4.4.23 ZONE UNLOCK function

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 871


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 372 defines the request format.

Table 372 – ZONE UNLOCK request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (88h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (01h)

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.

872 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 373 defines the response format.

Table 373 – ZONE UNLOCK response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (88h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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 CRC field is defined in 9.4.4.3.7.

9.4.4.24 CONFIGURE ZONE MANAGER PASSWORD function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 873


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 374 defines the request format.

Table 374 – CONFIGURE ZONE MANAGER PASSWORD request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (89h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (11h)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 Reserved SAVE

7 Reserved

8 (MSB)

••• ZONE MANAGER PASSWORD

39 (LSB)

40 (MSB)

••• NEW ZONE MANAGER PASSWORD

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).

874 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 375 – SAVE field

Return function result of SAVING NOT


Code Values updated
SUPPORTED if saving is not supported

00b Current a no

01b Saved b yes

10b Saved b, if saving is supported, and current no

11b Saved b and current yes


a The CONFIGURE ZONE PASSWORD function updates the current zone manager password, not a
shadow zone manager password.
b The management device server shall return the function result without waiting for the save to complete
and set the SAVING bit to one in the REPORT GENERAL response until the save is complete.

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.

Table 376 – CONFIGURE ZONE MANAGER PASSWORD response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (89h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

4 (MSB)

••• CRC

7 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 875


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.25 CONFIGURE ZONE PHY INFORMATION function

9.4.4.25.1 CONFIGURE ZONE PHY INFORMATION function overview

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).

876 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.25.2 CONFIGURE ZONE PHY INFORMATION request

Table 377 defines the request format.

Table 377 – CONFIGURE ZONE PHY INFORMATION request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (8Ah)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH ((n - 7) / 4)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 ZONE PHY CONFIGURATION DESCRIPTOR LENGTH SAVE

7 NUMBER OF ZONE PHY CONFIGURATION DESCRIPTORS

Zone phy configuration descriptor list

••• 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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 877


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 378 – SAVE field

Return function result of SAVING


Code Values updated NOT SUPPORTED if saving is not
supported

00b Shadow no

01b Saved a yes

10b Saved a, if saving is supported, and shadow no

11b Saved a and shadow yes


a Saving only begins during the activate step (see 4.9.6.4). The management device server shall return
the function result without waiting for the save to complete and set the SAVING bit to one in the REPORT
GENERAL response until the save is complete.

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.

The CRC field is defined in 9.4.4.2.7.

878 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.25.3 Zone phy configuration descriptor

Table 379 defines the zone phy configuration descriptor.

Table 379 – Zone phy configuration descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0 PHY IDENTIFIER

INSIDE REQUESTED ZONE


1 Reserved ZPSDS INSIDE Reserved GROUP Reserved
PERSISTENT ZPSDS PERSISTENT

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).

9.4.4.25.4 CONFIGURE ZONE PHY INFORMATION response

Table 380 defines the response format.

Table 380 – CONFIGURE ZONE PHY INFORMATION response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (8Ah)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

4 (MSB)

••• CRC

7 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 879


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.26 CONFIGURE ZONE PERMISSION TABLE function

9.4.4.26.1 CONFIGURE ZONE PERMISSION TABLE function overview

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.

880 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.26.2 CONFIGURE ZONE PERMISSION TABLE request

Table 381 defines the request format.

Table 381 – CONFIGURE ZONE PERMISSION TABLE request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (8Bh)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH ((n - 7) / 4)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 STARTING SOURCE ZONE GROUP

7 NUMBER OF ZONE PERMISSION CONFIGURATION DESCRIPTORS

NUMBER OF ZONE
8 Reserved SAVE
GROUPS

9 ZONE PERMISSION CONFIGURATION DESCRIPTOR LENGTH

10

••• Reserved
15

Zone permission configuration descriptor list

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 881


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 382 – NUMBER OF ZONE GROUPS field

Code Description

00b 128 zone groups

01b 256 zone groups

All others Reserved

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.

Table 383 – SAVE field

Return function result of SAVING


Code Values updated NOT SUPPORTED if saving is not
supported

00b Shadow no

01b Saved a yes

10b Saved a, if saving is supported, and shadow no

11b Saved a and shadow yes


a
Saving only begins during the activate step (see 4.9.6.4). The management device server shall return
the function result without waiting for the save to complete and set the SAVING bit to one in the REPORT
GENERAL response until the save is complete.

The ZONE PERMISSION CONFIGURATION DESCRIPTOR LENGTH field indicates the length, in dwords, of the zone
permission configuration descriptor (see 9.4.4.26.3).

882 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.4.4.26.3 Zone permission configuration descriptor

The zone permission configuration descriptor format is based on the NUMBER OF ZONE GROUPS field as defined
in table 384.

Table 384 – Zone permission configuration descriptors

NUMBER OF ZONE GROUPS field Zone permission configuration descriptor format

00b Table 385

01b Table 386

All others Reserved

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]

••• •••

ZP[S, 7] ZP[S, 6] ZP[S, 5] ZP[S, 4] ZP[S, 1] ZP[S, 0]


15 ZP[S, 3] ZP[S, 2]
(ignored) (ignored) (ignored) (ignored) (ignored) (ignored)

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]

••• •••

ZP[S, 7] ZP[S, 6] ZP[S, 5] ZP[S, 4] ZP[S, 1] ZP[S, 0]


31 ZP[S, 3] ZP[S, 2]
(ignored) (ignored) (ignored) (ignored) (ignored) (ignored)

Working Draft SAS Protocol Layer - 5 (SPL-5) 883


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 387 – Zone permission configuration descriptor bit requirements

Source zone Management application client Management device server


group (i.e., s) requirements a requirements a

ZP[s, 0] shall be set to zero.


0 ZP[s, 1] shall be set to one. ZP[s, 0 to (z-1)] shall be ignored.
ZP[s, 2 to (z-1)] shall be set to zero.

1 ZP[s, 0 to (z-1)] shall be set to one. ZP[s, 0 to (z-1)] shall be ignored.

ZP[s, 0] shall be set to zero.


4, 5, 6, or 7 ZP[s, 1] shall be set to one. ZP[s, 0 to (z-1)] shall be ignored.
ZP[s, 4 to (z-1)] shall be set to zero.

ZP[s, 0 to 1] shall be ignored.


ZP[s, 0] shall be set to zero.
ZP[s, 2 to 3] shall be processed.
ZP[s, 1] shall be set to one.
2, 3, or 8 to ZP[s, 4 to 7] shall be ignored.
ZP[s, 2 to 3] may be set to zero or one.
(z-1) a ZP[s, 8 to (z-1)] shall processed.
ZP[s, 4 to 7] shall be set to zero.
For each source zone group t other than
ZP[s, 8 to (z-1)] may be set to zero or one.
s, ZP[t, s] shall be set to ZP[s, t].
a The number of zone groups (i.e., z) is specified in NUMBER OF ZONE GROUPS field.

9.4.4.26.4 CONFIGURE ZONE PERMISSION TABLE response

Table 388 defines the response format.

Table 388 – CONFIGURE ZONE PERMISSION TABLE response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (8Bh)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

4 (MSB)

••• CRC

7 (LSB)

884 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

9.4.4.27 CONFIGURE ROUTE INFORMATION function

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 885


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 389 defines the request format.

Table 389 – CONFIGURE ROUTE INFORMATION request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (90h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 09h)

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.

886 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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 390 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 390 (i.e., 00h); and
b) return the response frame as defined in 9.4.4.2.4.

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.

Table 390 – CONFIGURE ROUTE INFORMATION response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (90h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 887


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.28 PHY CONTROL function

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).

888 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 391 defines the request format.

Table 391 – PHY CONTROL request

Byte\Bit 7 6 5 4 3 2 1 0
0 SMP FRAME TYPE (40h)
1 FUNCTION (91h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 09h)


4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)
6
••• Reserved
8
9 PHY IDENTIFIER

10 PHY OPERATION

UPDATE
PARTIAL
11 Reserved PATHWAY
TIMEOUT
VALUE

12
••• Reserved
23
24
••• ATTACHED DEVICE NAME
31

32 PROGRAMMED MINIMUM PHYSICAL LINK RATE Reserved


33 PROGRAMMED MAXIMUM PHYSICAL LINK RATE Reserved
34 ENABLE SAS SLUMBER ENABLE SAS PARTIAL ENABLE SATA SLUMBER ENABLE SATA PARTIAL

35 PWR_DIS CONTROL Reserved


36 Reserved PARTIAL PATHWAY TIMEOUT VALUE

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 889


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

890 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 392 defines the PHY OPERATION field.

Table 392 – PHY OPERATION field (part 1 of 2)

Code Operation Description

00h NOP No operation.

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).

The management device server shall:


1) send a Management Reset request to the SP state machine;
2) return the PHY CONTROL response; and
3) wait for the LINK RESET phy operation to complete.

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.

Any affiliation (see 6.21.6) shall be cleared.

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 891


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 392 – PHY OPERATION field (Continued) (part 2 of 2)

Code Operation Description

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).

This function shall only be supported by phys in an expander device.

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.

892 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

0h Do not change current value

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 893


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table 394 – 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.

Table 395 – 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).

894 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table 396 defines the ENABLE SATA SLUMBER field.

Table 396 – ENABLE SATA SLUMBER field

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.

Table 397 – 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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 895


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 398 defines the PWR_DIS CONTROL field.

Table 398 – PWR_DIS CONTROL field

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.

The CRC field is defined in 9.4.4.2.7.


Table 399 defines the response format.

Table 399 – PHY CONTROL response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (91h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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.

896 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

The CRC field is defined in 9.4.4.3.7.

9.4.4.29 PHY TEST FUNCTION function

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 897


T10/BSR INCITS 554 Revision 11 18 January 2021

Table 400 defines the request format.

Table 400 – PHY TEST FUNCTION request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (92h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH (00h or 09h)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6
••• Reserved
8

9 PHY IDENTIFIER

10 PHY TEST FUNCTION

11 PHY TEST PATTERN

12
••• Reserved
14
PHY TEST
PHY TEST FUNCTION
15 Reserved FUNCTION PHY TEST FUNCTION PHYSICAL LINK RATE
SSC
SATA

16
••• Reserved
18

19 PHY TEST PATTERN DWORDS CONTROL

20
••• PHY TEST PATTERN DWORDS
27

28
••• Reserved
39

40 (MSB)
••• CRC
43 (LSB)

898 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 899


T10/BSR INCITS 554 Revision 11 18 January 2021

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).

Table 401 – PHY TEST FUNCTION field

Code Name Description

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).

02h to EFh Reserved

F0h to FFh Vendor specific

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).

900 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table 402 – PHY TEST FUNCTION 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 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.

Table 403 – PHY TEST FUNCTION response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (92h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 901


T10/BSR INCITS 554 Revision 11 18 January 2021

The CRC field is defined in 9.4.4.3.7.

9.4.4.30 CONFIGURE PHY EVENT function

9.4.4.30.1 CONFIGURE PHY EVENT function overview

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).

902 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

9.4.4.30.2 CONFIGURE PHY EVENT request

Table 404 defines the request format.

Table 404 – CONFIGURE PHY EVENT request

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (93h)

2 ALLOCATED RESPONSE LENGTH

3 REQUEST LENGTH ((n - 7) / 4)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

CLEAR
6 Reserved
PEAKS

7
Reserved
8

9 PHY IDENTIFIER

10 PHY EVENT CONFIGURATION DESCRIPTOR LENGTH

11 NUMBER OF PHY EVENT CONFIGURATION DESCRIPTORS

Phy event configuration descriptor list

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 903


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

9.4.4.30.3 Phy event configuration descriptor

Table 405 defines the phy event configuration descriptor.

Table 405 – Phy event configuration descriptor

Byte\Bit 7 6 5 4 3 2 1 0

0
Reserved
2

3 PHY EVENT SOURCE

4 (MSB)

••• PEAK VALUE DETECTOR THRESHOLD

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.

904 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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).

9.4.4.30.4 CONFIGURE PHY EVENT response

Table 406 defines the response format.

Table 406 – CONFIGURE PHY EVENT response

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (41h)

1 FUNCTION (93h)

2 FUNCTION RESULT

3 RESPONSE LENGTH (00h)

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.

The CRC field is defined in 9.4.4.3.7.

Working Draft SAS Protocol Layer - 5 (SPL-5) 905


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex A
(normative)

Jitter tolerance patterns when SAS dword mode is enabled

A.1 Jitter tolerance pattern (JTPAT)

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.

Table A.1 – JTPAT for RD+ and RD-

First Second Third Fourth


Dwords Notes
character character character character

D30.3(7Eh) D30.3(7Eh) D30.3(7Eh) D30.3(7Eh)


0 to 40 This dword is sent a total of 41 times.
••• ••• ••• •••

41 D30.3(7Eh) D30.3(7Eh) D30.3(7Eh) D20.3(74h) This dword is sent once.

42 D30.3(7Eh) D11.5(ABh) D21.5(B5h) D21.5(B5h) This dword is sent once.

D21.5(B5h) D21.5(B5h) D21.5(B5h) D21.5(B5h)


43 to 54 This dword is sent a total of 12 times.
••• ••• ••• •••

55 D21.5(B5h) D30.2(5Eh) D10.2(4Ah) D30.3(7Eh) This dword is sent once.

D30.3(7Eh) D30.3(7Eh) D30.3(7Eh) D30.3(7Eh)


56 to 96 This dword is sent a total of 41 times.
••• ••• ••• •••

97 D30.3(7Eh) D30.3(7Eh) D30.3(7Eh) D11.3(6Bh) This dword is sent once.

98 D30.3(7Eh) D20.2(54h) D10.2(4Ah) D10.2(4Ah) This dword is sent once.

D10.2(4Ah) D10.2(4Ah) D10.2(4Ah) D10.2.(4Ah)


99 to 110 This dword is sent a total of 12 times.
••• ••• ••• •••

111 D10.2(4Ah) D30.5(BEh) D21.5(B5h) D30.3(7Eh) This dword is sent once.

A.2 Compliant jitter tolerance pattern (CJTPAT)

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-;

906 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

4) one data dword containing a CRC value; and


5) EOF.
Deletable primitives may be included in the transmission of the CJTPAT, but the number of deletable primitives
transmitted should be as small as possible so that the percentage of the transfer that is the JTPAT is as high
as possible.
As a result of the SOF, EOF, and CRC being the same in SSP and SMP, CJTPAT complies with:
a) the SSP frame transmission format defined by the SSP link layer (see figure 165);
b) the SSP frame format defined by the SSP transport layer (see table 204);
c) the SMP frame transmission format defined by the SMP link layer (see figure 190); and
d) the SMP frame format defined by the SMP transport layer (see table 233).
When a phy transmits a frame, it XORs the 8b data provided by the application layer with the output of a
scrambler before transmission (see 6.8). The phy reinitializes the scrambler at the beginning of each frame
(e.g., at SOF) and does not modify primitives. If the application layer XORs the desired 8b pattern with the
expected output of the scrambler prior to submitting it to the transmitter, then the transmitter transmits the
desired pattern. The 8b data dwords are scrambled by XORing the pattern with the expected scrambler dword
output, taking into account the position of the 8b data dwords within the frame.
Figure A.1 shows how to pre-scramble CJTPAT into the phy’s transmitter so CJTPAT results on the physical
link.

Application layer Phy transmitter SAS physical link

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

Figure A.1 – CJTPAT pre-scrambling

Table A.2 defines CJTPAT.


The “SSP frame contents” column in table A.2 shows the interpretation of the frame if viewed as an SSP DATA
frame.
The “SMP frame contents” column in table A.2 shows the interpretation of the frame if viewed as an SMP
frame.
The “Pre-scrambled CJTPAT” column in table A.2 shows the result of XORing CJTPAT with the expected
scrambler output before presenting the frame to the phy’s transmitter. If the data in this column is supplied to
the phy’s transmitter where it is scrambled again, then the data in the “CJTPAT” column is transmitted onto the
physical link. The SSP frame header is not pre-scrambled, and the CRC is calculated over the SSP frame
header and the pre-scrambled CJTPAT.

Working Draft SAS Protocol Layer - 5 (SPL-5) 907


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Table A.2 – CJTPAT (part 1 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

Not
SOF SOF Not applicable SOF
applicable

SMP frame
header and 3
0 unknown C2D2768Dh unknown
frame-type
dependent bytes

1 unknown 1F26B368h unknown


SSP frame
2 header unknown A508436Ch unknown
Frame-type
3 unknown 3452D354h unknown
dependent bytes
4 unknown 8A559502h unknown

5 unknown BB1ABE1Bh unknown

6 8428C943h FA56B73Dh 7E7E7E7Eh

7 2D887565h 53F60B1Bh 7E7E7E7Eh

8 8EFEE23Fh F0809C41h 7E7E7E7Eh

9 INFORMATION UNIT 0A01BD34h 747FC34Ah 7E7E7E7Eh


Frame-type
field
10 dependent bytes C0F82CEFh BE865291h 7E7E7E7Eh
(dwords 0 to 7)

11 0411D9C8h 7A6FA7B6h 7E7E7E7Eh

12 4F1D98A8h 3163E6D6h 7E7E7E7Eh

13 8E488072h F036FE0Ch 7E7E7E7Eh


a
The CRC field shall be set to a valid value for the frame.

908 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table A.2 – CJTPAT (part 2 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

14 608D9457h 1EF3EA29h 7E7E7E7Eh

15 954A58EAh EB342694h 7E7E7E7Eh

16 2DFB4569h 53853B17h 7E7E7E7Eh

17 INFORMATION UNIT
Frame-type 9734A233h E94ADC4Dh 7E7E7E7Eh
field
dependent bytes
18 (dwords 8 to 15) 235E70F6h 5D200E88h 7E7E7E7Eh

19 177F93AEh 6901EDD0h 7E7E7E7Eh

20 84E046A0h FA9E38DEh 7E7E7E7Eh

21 16A53579h 68DB4B07h 7E7E7E7Eh

22 3B743D05h 450A437Bh 7E7E7E7Eh

23 E873A976h 960DD708h 7E7E7E7Eh

24 414B98E6h 3F35E698h 7E7E7E7Eh

25 INFORMATION UNIT 8008E6DBh FE7698A5h 7E7E7E7Eh


Frame-type
field
26 dependent bytes B670896Bh C80EF715h 7E7E7E7Eh
(dwords 16 to 23)

27 181EEED1h 666090AFh 7E7E7E7Eh

28 848EABB5h FAF0D5CBh 7E7E7E7Eh

29 55FC7EE1h 2B82009Fh 7E7E7E7Eh

30 704F0AEFh 0E317491h 7E7E7E7Eh

31 088A1460h 76F46A1Eh 7E7E7E7Eh

32 8A131736h F46D6948h 7E7E7E7Eh

33 INFORMATION UNIT
Frame-type 05B3F4Edh 7BCD8A93h 7E7E7E7Eh
field
dependent bytes
34 (dwords 24 to 31) 6B6DD300h 1513AD7Eh 7E7E7E7Eh

35 600C8090h 1E72FEEEh 7E7E7E7Eh

36 DE6AD445h A014AA3Bh 7E7E7E7Eh

37 5DD4AA99h 23AAD4E7h 7E7E7E7Eh


a The CRC field shall be set to a valid value for the frame.

Working Draft SAS Protocol Layer - 5 (SPL-5) 909


T10/BSR INCITS 554 Revision 11 18 January 2021

Table A.2 – CJTPAT (part 3 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

38 CEA2E019h B0DC9E67h 7E7E7E7Eh

39 9EDB0D85h E0A573FBh 7E7E7E7Eh

40 78B4EA31h 06CA944Fh 7E7E7E7Eh

41 INFORMATION UNIT
Frame-type 1D9CEC6Ch 63E29212h 7E7E7E7Eh
field
dependent bytes
42 (dwords 32 to 39) 3B061C13h 4578626Dh 7E7E7E7Eh

43 2D5872EDh 53260C93h 7E7E7E7Eh

44 40275C7Ch 3E592202h 7E7E7E7Eh

45 5510B41Dh 2B6ECA63h 7E7E7E7Eh

46 1D146161h 636A1F1Fh 7E7E7E7Eh

47 4BCBD799h 35B5A9EDh 7E7E7E74h

48 34091548h 4AA2A0FDh 7EABB5B5h

49 INFORMATION UNIT C41A5423h 71AFE196h B5B5B5B5h


Frame-type
field
50 dependent bytes 5460CED7h E1D57B62h B5B5B5B5h
(dwords 40 to 47)

51 E015E33Fh 55A0568Ah B5B5B5B5h

52 37643CDDh 82D18968h B5B5B5B5h

53 96F9014Ah 234CB4FFh B5B5B5B5h

54 36FDABCAh 83481E7Fh B5B5B5B5h

55 07AF5DCAh B21AE87Fh B5B5B5B5h

56 1C705F78h A9C5EACDh B5B5B5B5h

57 INFORMATION UNIT
Frame-type D7B41976h 6201ACC3h B5B5B5B5h
field
dependent bytes
58 (dwords 48 to 55) 43BC8C7Bh F60939CEh B5B5B5B5h

59 8CEAC3C8h 395F767Dh B5B5B5B5h

60 9A10EDF4h 2FA55841h B5B5B5B5h

61 36330004h 836D4A7Ah B55E4A7Eh


a The CRC field shall be set to a valid value for the frame.

910 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table A.2 – CJTPAT (part 4 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

62 46F32604h 388D587Ah 7E7E7E7Eh

63 09438122h 773DFF5Ch 7E7E7E7Eh

64 425DE2CDh 3C239CB3h 7E7E7E7Eh

65 INFORMATION UNIT
Frame-type 2833EFDEh 564D91A0h 7E7E7E7Eh
field
dependent bytes
66 (dwords 56 to 63) 3D93759Fh 43ED0BE1h 7E7E7E7Eh

67 E60A57D9h 987429A7h 7E7E7E7Eh

68 9B53A5DCh E52DDBA2h 7E7E7E7Eh

69 99F3B601h E78DC87Fh 7E7E7E7Eh

70 74C6B817h 0AB8C669h 7E7E7E7Eh

71 1AAEFDB7h 64D083C9h 7E7E7E7Eh

72 7B438744h 053DF93Ah 7E7E7E7Eh

73 INFORMATION UNIT 9097A794h EEE9D9Eah 7E7E7E7Eh


Frame-type
field
74 dependent bytes 3AC345E9h 44BD3B97h 7E7E7E7Eh
(dwords 64 to 71)

75 719C35F2h 0FE24B8Ch 7E7E7E7Eh

76 8CF328EAh F28D5694h 7E7E7E7Eh

77 1D6EC8A7h 6310B6D9h 7E7E7E7Eh

78 69ECD0B0h 1792AECEh 7E7E7E7Eh

79 742850DFh 0A562EA1h 7E7E7E7Eh

80 CE36A117h B048DF69h 7E7E7E7Eh

81 INFORMATION UNIT
Frame-type 68645606h 161A2878h 7E7E7E7Eh
field
dependent bytes
82 (dwords 72 to 79) 2B67B52Fh 5519CB51h 7E7E7E7Eh

83 678BC028h 19F5BE56h 7E7E7E7Eh

84 9181CAC8h EFFFB4B6h 7E7E7E7Eh

85 CDFC100Ch B3826E72h 7E7E7E7Eh


a The CRC field shall be set to a valid value for the frame.

Working Draft SAS Protocol Layer - 5 (SPL-5) 911


T10/BSR INCITS 554 Revision 11 18 January 2021

Table A.2 – CJTPAT (part 5 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

86 9A0C53A4h E4722DDAh 7E7E7E7Eh

87 1EC12F57h 60BF5129h 7E7E7E7Eh

88 5AF3EE8Bh 248D90F5h 7E7E7E7Eh

89 INFORMATION UNIT
Frame-type 3378AC62h 4D06D21Ch 7E7E7E7Eh
field
dependent bytes
90 (dwords 80 to 87) 00E86812h 7E96166Ch 7E7E7E7Eh

91 21D19DCAh 5FAFE3B4h 7E7E7E7Eh

92 2E12C62Bh 506CB855h 7E7E7E7Eh

93 258E4EE6h 5BF03098h 7E7E7E7Eh

94 38AAC8CDh 46D4B6B3h 7E7E7E7Eh

95 7B65E06Fh 051B9E11h 7E7E7E7Eh

96 7F22BB28h 015CC556h 7E7E7E7Eh

97 INFORMATION UNIT 9C6E4B91h E21035EFh 7E7E7E7Eh


Frame-type
field
98 dependent bytes 281E330Bh 56604D75h 7E7E7E7Eh
(dwords 88 to 95)

99 50081922h 2E76675Ch 7E7E7E7Eh

100 796A088Eh 071476F0h 7E7E7E7Eh

101 D18EF995h AFF087EBh 7E7E7E7Eh

102 651CA57Fh 1B62DB01h 7E7E7E7Eh

103 5D186107h 23661F6Ch 7E7E7E6Bh

104 8623FA6Dh F877B027h 7E544A4Ah


INFORMATION UNIT
105 field Frame-type BFA9C3E8h F5E389A2h 4A4A4A4Ah
(dwords 96 to dependent bytes
106 A48D7C5Bh EEC73611h 4A4A4A4Ah
103)
107 064EB1D9h 4C04FB93h 4A4A4A4Ah

108 A29D4578h E8D70F32h 4A4A4A4Ah

109 F5BA761Eh BFF03C54h 4A4A4A4Ah


a The CRC field shall be set to a valid value for the frame.

912 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table A.2 – CJTPAT (part 6 of 6)

Data dword SSP frame SMP frame Pre-scrambled Scrambler


CJTPAT
number contents contents CJTPAT output

110 A90A764Bh E3403C01h 4A4A4A4Ah

111 6AB08034h 20FACA7Eh 4A4A4A4Ah

112 D3080FC6h 9942458Ch 4A4A4A4Ah


INFORMATION UNIT
113 field Frame-type 7DA881C3h 37E2CB89h 4A4A4A4Ah
(dwords 104 to dependent bytes
114 1050DDC9h 5A1A9783h 4A4A4A4Ah
111)
115 8402E075h CE48AA3Fh 4A4A4A4Ah

116 4C83ED2Bh 06C9A761h 4A4A4A4Ah

117 4C7E8BD5h 06C03EABh 4ABEB57Eh

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 913


T10/BSR INCITS 554 Revision 11 18 January 2021

Table A.3 – CJTPAT with fixed content

Data
Pre-scrambled Scrambler
dword SSP frame contents SMP frame contents CJTPAT
CJTPAT output
number

Not
SOF SOF Not applicable SOF
applicable

0 01000000h C2D2768Dh C3D2768Dh

1 SMP FRAME TYPE field 00000000h 1F26B368h 1F26B368h


FRAME TYPE field set
set to 01h (i.e.,
2 to 01h (i.e., DATA 00000000h A508436Ch A508436Ch
reserved) and 23
frame) and 23
3 subsequent 00000000h 3452D354h 3452D354h
subsequent bytes
frame-type dependent
each set to 00h
4 bytes each set to 00h 00000000h 8A559502h 8A559502h

5 00000000h BB1ABE1Bh BB1ABE1Bh

6
Frame-type
••• INFORMATION UNIT field See the INFORMATION UNIT field in table A.2
dependent bytes
117

118 CRC field 44EF682Eh 3D2D7984h 79C211AAh

Not
EOF EOF Not applicable EOF
applicable

A.3 Considerations for a phy transmitting JTPAT and CJTPAT

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.

914 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

A.4 Considerations for a phy receiving JTPAT and CJTPAT

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).

Working Draft SAS Protocol Layer - 5 (SPL-5) 915


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex B
(informative)

SAS to SAS phy reset sequence examples

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.

Time (not to scale)

SNW-1 SNW-2 Final-SNW


(valid) (invalid) (valid)
1.5 Gbit/s

RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support:


phy A = yes phy A = no
phy B = yes phy B = no
Key:
Dwords
ALIGN (0)s ALIGN (1)s transmitted by Long time
the link layer

Figure B.1 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-1 only)

916 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Time (not to scale)

SNW-1 SNW-2 SNW-3 Final-SNW


(valid) (valid) (invalid) (valid)
3 Gbit/s

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = no
phy B = yes phy B = yes phy B = no
Key:
Dwords
ALIGN (0)s ALIGN (1)s transmitted by Long time
the link layer

Figure B.2 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, phy B: SNW-1, SNW-2)

Working Draft SAS Protocol Layer - 5 (SPL-5) 917


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Time (not to scale)

SNW-1 SNW-2 SNW-3 Final-SNW


(valid) (valid) (invalid) (valid)
3 Gbit/s

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = yes phy A = yes
phy B = yes phy B = yes phy B = no
Key:
Dwords
ALIGN (0)s ALIGN (1)s transmitted by Phy Long time
the link layer capabilities

Figure B.3 – SAS speed negotiation sequence (phy A: SNW-1, SNW-2, and SNW-3, phy B: SNW-1
and SNW-2)

918 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Time (not to scale)

SNW-1 SNW-2 SNW-3 Final-SNW


(invalid) (valid) (invalid) (valid)
3 Gbit/s

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Tx
Phy B Rx

RCDT SNTT RCDT SNTT RCDT SNTT RCDT SNTT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = no phy A = yes phy A = yes
phy B = yes phy B = yes phy B = no
Key:
Dwords
ALIGN (0)s ALIGN (1)s transmitted by Phy Long time
the link layer capabilities

Figure B.4 – SAS speed negotiation sequence (phy A: SNW-2, SNW-3, phy B: SNW-1, SNW-2)

Working Draft SAS Protocol Layer - 5 (SPL-5) 919


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

Time (not to scale)


SNW-1 SNW-2
(invalid) (invalid) Phy A does not participate in
SNW-3. It retries the phy reset
sequence.
RCDT SNTT RCDT SNTT Hot-plug timeout COMINIT

Phy A Tx
Phy B Rx

SNW-3
(invalid)

RCDT SNTT RCDT SNTT RCDT SNTT Hot-plug timeout COMINIT

Phy A Rx
Phy B Tx

SNW-1 support: SNW-2 support: SNW-3 support:


phy A = yes phy A = no phy A = N/A
phy B = no phy B = yes phy B = no
Key:

ALIGN (0)s ALIGN (1)s Long time

Figure B.5 – SAS speed negotiation sequence (phy A: SNW-1 only, phy B: SNW-2 only)

920 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex C
(informative)

CRC

C.1 CRC generator and checker implementation examples

Figure C.1 shows an example of a CRC generator.

* Initialize to all ones Invert


bits
Data In
Transpose CRC
XOR Transpose
Byte Multiply Remainder
Byte
Register * CRC to
8b10b
encoder
Generating Polynomial

Data to 8b10b
encoder

Figure C.1 – CRC generator example

Figure C.2 shows an example of a CRC checker.

* Initialize to all ones


Invert
Data
bits
In
XOR CRC
Transpose Transpose
Multiply Remainder
Byte Byte Compare
Register *
Equal

Generating Polynomial

Figure C.2 – CRC checker example

C.2 CRC implementation in C

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>

Working Draft SAS Protocol Layer - 5 (SPL-5) 921


T10/BSR INCITS 554 Revision 11 18 January 2021

void main (void) {

static unsigned long data_dwords[] = {


0x06D0B992L, 0x00B5DF59L, 0x00000000L,
0x00000000L, 0x1234FFFFL, 0x00000000L,
0x00000000L, 0x00000000L, 0x00000000L,
0x08000012L, 0x01000000L, 0x00000000L,
0x00000000L}; /* example data dwords */

unsigned long calculate_crc(unsigned long *, unsigned long);


unsigned long crc;

crc = calculate_crc(data_dwords, 13);


printf ("Example CRC is %x\n", crc);
}

/* returns crc value */


unsigned long calculate_crc(unsigned long *frame, unsigned long length) {
long poly = 0x04C11DB7L;
unsigned long crc_gen, x;
union {
unsigned long lword;
unsigned char byte[4];
} b_access;
static unsigned char xpose[] = {
0x0, 0x8, 0x4, 0xC, 0x2, 0xA, 0x6, 0xE,
0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF};
unsigned int i, j, fb;

crc_gen = ~0; /* seed generator with all ones */


for (i = 0; i < length; i++) {
x = *frame++; /* get word */
b_access.lword = x; /* transpose bits in byte */
for (j = 0; j < 4; j++) {
b_access.byte[j] = xpose[b_access.byte[j] >> 4] |
xpose[b_access.byte[j] & 0xF] << 4;
}
x = b_access.lword;

for (j = 0; j < 32; j++) { /* serial shift register implementation */


fb = ((x & 0x80000000L) > 0) ^ ((crc_gen & 0x80000000L) > 0);
x <<= 1;
crc_gen <<= 1;
if (fb)
crc_gen ^= poly;
}
}

b_access.lword = crc_gen; /* transpose bits in CRC */


for (j = 0; j < 4; j++) {
b_access.byte[j] = xpose[b_access.byte[j] >> 4] |
xpose[b_access.byte[j] & 0xF] << 4;
}
crc_gen = b_access.lword;

return ~crc_gen; /* invert output */


}

922 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

C.3 CRC implementation with XORs

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;

Working Draft SAS Protocol Layer - 5 (SPL-5) 923


T10/BSR INCITS 554 Revision 11 18 January 2021

C.4 CRC examples

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.

Table C.1 – CRC examples while SAS dword mode is enabled

Frame contents CRC Frame contents CRC

<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>

924 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table C.2 – CRC examples while SAS packet mode is enabled

Frame contents CRC Frame contents CRC

<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)>

Working Draft SAS Protocol Layer - 5 (SPL-5) 925


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex D
(informative)

Forward error correction encoding while in SAS packet mode

D.1 Forward error correction encoding overview

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.

D.2 Forward error correction encoder implementation example

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.

SPL packet header and payload


Transmitted codeword Symbols
Two-bit 16 payload polynomial: transmitted
Header bytes T(x) = P(x) + (x4 x M(x)) on physical
link

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

Figure D.1 – SAS packet mode forward error correction encoder

D.3 Reed Solomon code encoding function block diagram

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.

926 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

10 29 19 24

Reset LFSR
registers to 0 at
start of packet

LFSR LFSR LFSR LFSR


reg0 reg1 reg2 reg3

m25 , m24 , m 23, ... m 0

p0 p1 p2 p3

Key:
= Galois Field GF(32) multiplication
= Galois Field GF(32) addition

Figure D.2 – Reed Solomon linear feedback shift register implementation

D.4 Forward error correction encoder implementation in C

The following example C program:


1) realigns a packet header and payload into 26 message symbols;
2) calculates four parity symbols based on the message symbols; and
3) reorders all symbols by interleaving the parity symbols within the original message symbols.

#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 {

Working Draft SAS Protocol Layer - 5 (SPL-5) 927


T10/BSR INCITS 554 Revision 11 18 January 2021

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;

928 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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;
}

struct message_symb packet_to_message(struct splpacket_byte rawpacket)


{
int i;
struct message_symb packet;
// note that this function maintains symbols with LS bit on the right
// (i.e., not the transmit order)
packet.symb[0] = ((rawpacket.payload[0] & 0x07) << 2)
| rawpacket.header;
packet.symb[1] = ((rawpacket.payload[0] & 0xF8) >> 3);
packet.symb[2] = (rawpacket.payload[1] & 0x1F);
packet.symb[3] = ((rawpacket.payload[2] & 0x03) << 3)
| ((rawpacket.payload[1] & 0xE0) >> 5);
packet.symb[4] = ((rawpacket.payload[2] & 0x7C) >> 2);
packet.symb[5] = ((rawpacket.payload[3] & 0x0F) << 1)
| ((rawpacket.payload[2] & 0x80) >> 7);
packet.symb[6] = ((rawpacket.payload[4] & 0x01) << 4)
| ((rawpacket.payload[3] & 0xF0) >> 4);
packet.symb[7] = ((rawpacket.payload[4] & 0x3E) >> 1);
packet.symb[8] = ((rawpacket.payload[5] & 0x07) << 2)
| ((rawpacket.payload[4] & 0xC0) >> 6);
packet.symb[9] = ((rawpacket.payload[5] & 0xF8) >> 3);
// alignment repeats similar to symbols 2-9
packet.symb[10] = (rawpacket.payload[6] & 0x1F);
packet.symb[11] = ((rawpacket.payload[7] & 0x03) << 3)
| ((rawpacket.payload[6] & 0xE0) >> 5);
packet.symb[12] = ((rawpacket.payload[7] & 0x7C) >> 2);
packet.symb[13] = ((rawpacket.payload[8] & 0x0F) << 1)
| ((rawpacket.payload[7] & 0x80) >> 7);
packet.symb[14] = ((rawpacket.payload[9] & 0x01) << 4)
| ((rawpacket.payload[8] & 0xF0) >> 4);
packet.symb[15] = ((rawpacket.payload[9] & 0x3E) >> 1);
packet.symb[16] = ((rawpacket.payload[10] & 0x07) << 2)
| ((rawpacket.payload[9] & 0xC0) >> 6);
packet.symb[17] = ((rawpacket.payload[10] & 0xF8) >> 3);
// alignment repeats similar to symbols 2-9
packet.symb[18] = (rawpacket.payload[11] & 0x1F);
packet.symb[19] = ((rawpacket.payload[12] & 0x03) << 3)
| ((rawpacket.payload[11] & 0xE0) >> 5);
packet.symb[20] = ((rawpacket.payload[12] & 0x7C) >> 2);
packet.symb[21] = ((rawpacket.payload[13] & 0x0F) << 1)
| ((rawpacket.payload[12] & 0x80) >> 7);
packet.symb[22] = ((rawpacket.payload[14] & 0x01) << 4)
| ((rawpacket.payload[13] & 0xF0) >> 4);
packet.symb[23] = ((rawpacket.payload[14] & 0x3E) >> 1);

Working Draft SAS Protocol Layer - 5 (SPL-5) 929


T10/BSR INCITS 554 Revision 11 18 January 2021

packet.symb[24] = ((rawpacket.payload[15] & 0x07) << 2)


| ((rawpacket.payload[14] & 0xC0) >> 6);
packet.symb[25] = ((rawpacket.payload[15] & 0xF8) >> 3);
return packet;
}

unsigned char symbol_to_alpha(symbol symb)


{
unsigned char i;
for (i = 0; i <31; i++) {
if (symb == GFtable[i]) {
break;
}
}
return i;
}

// Reed Solomon parity encoder


struct parity_symb gen_parity(struct message_symb message)
{
symbol feedbackPath;
struct parity_symb lfsr;
int i, passProduct;
lfsr.symb[3] = 0;
lfsr.symb[2] = 0;
lfsr.symb[1] = 0;
lfsr.symb[0] = 0;
printf("| i|msg|fbp|pass|a(fbp)|lfsr0|lfsr1|lfsr2|lfsr3|\n");
printf("------------------------------------------------\n");
for (i = 25; i >=0; i--) { // iterate from MS to LS message symbol
feedbackPath = (message.symb[i] ^ lfsr.symb[3]);
if (feedbackPath == 0) {
passProduct = 0; // zero out product with G(x) if feedback
// is 0 since working in GF
} else {
passProduct = 1; // or allow product to pass if feedback
} // is non zero
lfsr.symb[3] = passProduct * GFtable[((GenPoly[3] +
symbol_to_alpha(feedbackPath)) % 31)] ^ lfsr.symb[2];
// LFSR3 = (message + LFSR3) * G3) + LFSR2
lfsr.symb[2] = passProduct * GFtable[((GenPoly[2] +
symbol_to_alpha(feedbackPath)) % 31)] ^ lfsr.symb[1];
// LFSR2 = (message + LFSR2) * G2) + LFSR1
lfsr.symb[1] = passProduct * GFtable[((GenPoly[1] +
symbol_to_alpha(feedbackPath)) % 31)] ^ lfsr.symb[0];
// LFSR1 = (message + LFSR1) * G1) + LFSR0
lfsr.symb[0] = passProduct * GFtable[((GenPoly[0] +
symbol_to_alpha(feedbackPath)) % 31)];
// LFSR0 = (message + LFSR0) * G0)
printf("|%2d| %02X| %02X| %02X| %2d| %02X| %02X| %02X| %02X|\n",
i,message.symb[i],feedbackPath,passProduct,
symbol_to_alpha(feedbackPath),
lfsr.symb[0],lfsr.symb[1],lfsr.symb[2],lfsr.symb[3]);
}
return lfsr;
}

930 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

// 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");
}

void message_display(struct message_symb message)


{
int i;
printf("message symbols:\n");
for (i = 0; i <26; i++) {
printf("%2d ",i);
}
printf("\n");
for (i = 0; i <26; i++) {
printf("%02X ",message.symb[i]);
}
printf("\n");
}

void parity_display(struct parity_symb parity)


{
int i;
printf("parity symbols:\n");
for (i = 0; i <4; i++) {
printf("%2d ",i);
}
printf("\n");
for (i = 0; i <4; i++) {

Working Draft SAS Protocol Layer - 5 (SPL-5) 931


T10/BSR INCITS 554 Revision 11 18 January 2021

printf("%02X ",parity.symb[i]);
}
printf("\n");
}

void encoded_display(struct encoded_symb encoded)


{
int i;
printf("interleaved codeword symbols (transmit LS to MS bit on wire):\n");
for (i = 0; i <30; i++) {
printf("%2d ",i);
}
printf("\n");
for (i = 0; i <30; i++) {
printf("%02X ",encoded.symb[i]);
}
printf("\n");
}
The code given in the example C program produces the following output, showing the forward error correction
parity symbols produced when encoding a PACKET_SYNC extended binary primitive.
| i|msg|fbp|pass|a(fbp)|lfsr0|lfsr1|lfsr2|lfsr3|
------------------------------------------------
|25| 08| 08| 01| 3| 1C| 02| 15| 0B|
|24| 0C| 07| 01| 11| 18| 06| 10| 05|
|23| 02| 07| 01| 11| 18| 02| 14| 00|
|22| 00| 00| 00| 31| 00| 18| 02| 14|
|21| 1F| 0B| 01| 27| 0A| 19| 07| 0E|
|20| 1A| 14| 01| 7| 13| 0F| 0E| 06|
|19| 14| 12| 01| 30| 1A| 05| 0C| 01|
|18| 19| 18| 01| 21| 01| 1C| 1F| 11|
|17| 1B| 0A| 01| 6| 1B| 11| 05| 0D|
|16| 14| 19| 01| 25| 10| 14| 0D| 06|
|15| 16| 10| 01| 4| 1D| 14| 1B| 1B|
|14| 06| 1D| 01| 14| 1E| 13| 10| 0F|
|13| 1E| 11| 01| 10| 0C| 13| 1A| 18|
|12| 1A| 02| 01| 1| 07| 1E| 1F| 03|
|11| 1B| 18| 01| 21| 01| 01| 04| 02|
|10| 04| 06| 01| 19| 09| 12| 15| 0A|
| 9| 11| 1B| 01| 16| 17| 14| 02| 0F|
| 8| 18| 17| 01| 26| 05| 09| 09| 04|
| 7| 0B| 0F| 01| 23| 04| 1D| 0E| 12|
| 6| 1C| 0E| 01| 12| 15| 15| 1C| 0B|
| 5| 15| 1E| 01| 24| 08| 00| 1B| 0F|
| 4| 19| 16| 01| 28| 14| 1F| 1B| 03|
| 3| 14| 17| 01| 26| 05| 0A| 02| 1D|
| 2| 09| 14| 01| 7| 13| 00| 1D| 03|
| 1| 1C| 1F| 01| 15| 19| 0F| 08| 10|
| 0| 09| 19| 01| 25| 10| 16| 13| 0B|
header: 1
payload bytes:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
E2 89 E6 CA 17 8E 64 6B 6F 2C DD 99 EA 0F 04 43
message symbols:
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
09 1C 09 14 19 15 1C 0B 18 11 04 1B 1A 1E 06 16 14 1B 19 14 1A 1F 00 02 0C 08
parity symbols:

932 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

D.5 Example forward error correction encoder results

Forward error correction encoding results for several different packets are given in table D.1.

Table D.1 – Example forward error correction coding results (part 1 of 2)


Packet Message and Parity results
PACKET_SYNC extended binary primitive:
Header

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 933


T10/BSR INCITS 554 Revision 11 18 January 2021

Table D.1 – Example forward error correction coding results (part 2 of 2)


Packet Message and Parity results
symbols mi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Message
19h 15h 1Ch 0Bh 18h 11h 04h 1Bh 1Ah 1Eh 06h 16h 14h 1Bh 19h 14h 1Ah
M(x)
17 18 19 20 21 22 23 24 25
1Fh 00h 02h 0Ch 08h 11h 07h 11h 06h
symbols pi
Parity
0 1 2 3
P(x)
03h 07h 19h 12h
SPL frame segment:
Header

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

934 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex E
(informative)

SAS address hashing

E.1 SAS address hashing overview

See 4.2.2 for a description of hashed SAS addresses and the algorithm used to create them.

E.2 Hash collision probability

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 935


T10/BSR INCITS 554 Revision 11 18 January 2021

Table E.1 – Monte-Carlo simulation results

SAS
Average collisions
address Trials Collisions
per system
model

lots 2 000 000 000 45 063 0.000 022 531 5

three lots 2 000 000 000 662 503 0.000 331 251 5

random 10 000 000 4 882 0.000 488 2

sequential 10 000 000 0 0

E.3 Hash generation

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

Data in (bit 63 down to bit 0)

1 1 1
9 8 7 6 5 4 3 2 1 0
2 1 0

Figure E.1 – BCH(69, 39, 9) code generator

936 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

E.4 Hash implementation in C

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;
}

Working Draft SAS Protocol Layer - 5 (SPL-5) 937


T10/BSR INCITS 554 Revision 11 18 January 2021

E.5 Hash implementation with XORs

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;

938 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

E.6 Hash examples

Table E.2 shows examples using simple SAS addresses as input values. Two of the input values hash to the
same value.

Table E.2 – Hash results for simple SAS addresses

64-bit input value 24-bit hashed value

00000000 00000000h 000000h

00000000 00000001h DB2777h

FFFFFFFF FFFFFFFFh DB2777h

Table E.3 shows examples using realistic SAS addresses as input values.

Table E.3 – Hash results for realistic SAS addresses

64-bit input value 24-bit hashed value

50010753 4F0CFC88h D0B992h

50010B92 B3CBF639h B5DF59h

5002037E 157FEC63h B064F7h

50004CF6 FBCE3889h 88FF12h

50020374 C4657EC7h F36570h

50010D92 A016E450h 9F9571h

50002A58 850ACC66h 64B6B9h

50008C7B EE7910DEh 8D6135h

500508BD C22CAC94h 86ECF1h

500805F3 334B0AD3h 752AB2h

500A0B8A FAA6A820h 5543A7h

500805E6 BCC55C68h 463DEDh

Working Draft SAS Protocol Layer - 5 (SPL-5) 939


T10/BSR INCITS 554 Revision 11 18 January 2021

Table E.4 shows examples using a walking ones pattern to generate the input values.

Table E.4 – Hash results for a walking ones pattern (part 1 of 2)

24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value

00000000 00000001h DB2777h 00000001 00000000h 8232C2h

00000000 00000002h 6D6999h 00000002 00000000h DF42F3h

00000000 00000004h DAD332h 00000004 00000000h 65A291h

00000000 00000008h 6E8113h 00000008 00000000h CB4522h

00000000 00000010h DD0226h 00000010 00000000h 4DAD33h

00000000 00000020h 61233Bh 00000020 00000000h 9B5A66h

00000000 00000040h C24676h 00000040 00000000h ED93BBh

00000000 00000080h 5FAB9Bh 00000080 00000000h 000001h

00000000 00000100h BF5736h 00000100 00000000h 000002h

00000000 00000200h A5891Bh 00000200 00000000h 000004h

00000000 00000400h 903541h 00000400 00000000h 000008h

00000000 00000800h FB4DF5h 00000800 00000000h 000010h

00000000 00001000h 2DBC9Dh 00001000 00000000h 000020h

00000000 00002000h 5B793Ah 00002000 00000000h 000040h

00000000 00004000h B6F274h 00004000 00000000h 000080h

00000000 00008000h B6C39Fh 00008000 00000000h 000100h

00000000 00010000h B6A049h 00010000 00000000h 000200h

00000000 00020000h B667E5h 00020000 00000000h 000400h

00000000 00040000h B7E8BDh 00040000 00000000h 000800h

00000000 00080000h B4F60Dh 00080000 00000000h 001000h

00000000 00100000h B2CB6Dh 00100000 00000000h 002000h

00000000 00200000h BEB1ADh 00200000 00000000h 004000h

00000000 00400000h A6442Dh 00400000 00000000h 008000h

00000000 00800000h 97AF2Dh 00800000 00000000h 010000h

00000000 01000000h F4792Dh 01000000 00000000h 020000h

00000000 02000000h 33D52Dh 02000000 00000000h 040000h

940 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table E.4 – Hash results for a walking ones pattern (part 2 of 2)

24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value

00000000 04000000h 67AA5Ah 04000000 00000000h 080000h

00000000 08000000h CF54B4h 08000000 00000000h 100000h

00000000 10000000h 458E1Fh 10000000 00000000h 200000h

00000000 20000000h 8B1C3Eh 20000000 00000000h 400000h

00000000 40000000h CD1F0Bh 40000000 00000000h 800000h

00000000 80000000h 411961h 80000000 00000000h DB2777h

Table E.5 shows examples using a walking zeros pattern to generate the input values.

Table E.5 – Hash results for a walking zeros pattern (part 1 of 2)

24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value

FFFFFFFF FFFFFFFEh 000000h FFFFFFFE FFFFFFFFh 5915B5h

FFFFFFFF FFFFFFFDh B64EEEh FFFFFFFD FFFFFFFFh 046584h

FFFFFFFF FFFFFFFBh 01F445h FFFFFFFB FFFFFFFFh BE85E6h

FFFFFFFF FFFFFFF7h B5A664h FFFFFFF7 FFFFFFFFh 106255h

FFFFFFFF FFFFFFEFh 062551h FFFFFFEF FFFFFFFFh 968A44h

FFFFFFFF FFFFFFDFh BA044Ch FFFFFFDF FFFFFFFFh 407D11h

FFFFFFFF FFFFFFBFh 196101h FFFFFFBF FFFFFFFFh 36B4CCh

FFFFFFFF FFFFFF7Fh 848CECh FFFFFF7F FFFFFFFFh DB2776h

FFFFFFFF FFFFFEFFh 647041h FFFFFEFF FFFFFFFFh DB2775h

FFFFFFFF FFFFFDFFh 7EAE6Ch FFFFFDFF FFFFFFFFh DB2773h

FFFFFFFF FFFFFBFFh 4B1236h FFFFFBFF FFFFFFFFh DB277Fh

FFFFFFFF FFFFF7FFh 206A82h FFFFF7FF FFFFFFFFh DB2767h

FFFFFFFF FFFFEFFFh F69BEAh FFFFEFFF FFFFFFFFh DB2757h

FFFFFFFF FFFFDFFFh 805E4Dh FFFFDFFF FFFFFFFFh DB2737h

FFFFFFFF FFFFBFFFh 6DD503h FFFFBFFF FFFFFFFFh DB27F7h

FFFFFFFF FFFF7FFFh 6DE4E8h FFFF7FFF FFFFFFFFh DB2677h

FFFFFFFF FFFEFFFFh 6D873Eh FFFEFFFF FFFFFFFFh DB2577h

Working Draft SAS Protocol Layer - 5 (SPL-5) 941


T10/BSR INCITS 554 Revision 11 18 January 2021

Table E.5 – Hash results for a walking zeros pattern (part 2 of 2)

24-bit 24-bit
64-bit input value 64-bit input value
hashed value hashed value

FFFFFFFF FFFDFFFFh 6D4092h FFFDFFFF FFFFFFFFh DB2377h

FFFFFFFF FFFBFFFFh 6CCFCAh FFFBFFFF FFFFFFFFh DB2F77h

FFFFFFFF FFF7FFFFh 6FD17Ah FFF7FFFF FFFFFFFFh DB3777h

FFFFFFFF FFEFFFFFh 69EC1Ah FFEFFFFF FFFFFFFFh DB0777h

FFFFFFFF FFDFFFFFh 6596DAh FFDFFFFF FFFFFFFFh DB6777h

FFFFFFFF FFBFFFFFh 7D635Ah FFBFFFFF FFFFFFFFh DBA777h

FFFFFFFF FF7FFFFFh 4C885Ah FF7FFFFF FFFFFFFFh DA2777h

FFFFFFFF FEFFFFFFh 2F5E5Ah FEFFFFFF FFFFFFFFh D92777h

FFFFFFFF FDFFFFFFh E8F25Ah FDFFFFFF FFFFFFFFh DF2777h

FFFFFFFF FBFFFFFFh BC8D2Dh FBFFFFFF FFFFFFFFh D32777h

FFFFFFFF F7FFFFFFh 1473C3h F7FFFFFF FFFFFFFFh CB2777h

FFFFFFFF EFFFFFFFh 9EA968h EFFFFFFF FFFFFFFFh FB2777h

FFFFFFFF DFFFFFFFh 503B49h DFFFFFFF FFFFFFFFh 9B2777h

FFFFFFFF BFFFFFFFh 16387Ch BFFFFFFF FFFFFFFFh 5B2777h

FFFFFFFF 7FFFFFFFh 9A3E16h 7FFFFFFF FFFFFFFFh 000000h

942 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex F
(informative)

Scrambling

F.1 Scrambling while in SAS dword mode

F.1.1 SAS dword mode scrambler implementation example

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

Figure F.1 – SAS dword mode Scrambler

The generator polynomial is:

G(x) = x16 + x15 + x13 + x4 + 1

For all implementations, the context register is initialized to produce a first dword output of C2D2768Dh for a
dword input of all zeros.

F.1.2 SAS dword mode scrambler implementation in C

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>

unsigned long scramble(int reset, unsigned long dword);


void main(void)
{
int i;

for (i = 0; i < 12; i++)


printf(" %08X \n",scramble(i==0, 0));/* scramble all 0s */
}

#define poly 0xA011

Working Draft SAS Protocol Layer - 5 (SPL-5) 943


T10/BSR INCITS 554 Revision 11 18 January 2021

unsigned long scramble(int reset, unsigned long dword) {


static unsigned short scramble;
int i;

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;
}

F.1.3 SAS dword mode scrambler implementation with XORs

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;

944 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

F.1.4 SAS dword mode scrambler examples

Table F.1 shows several SAS dword mode scrambler examples. Data is shown in dwords, from first to last.

Table F.1 – SAS dword mode scrambler examples

Frame contents Scrambled output

<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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 945


T10/BSR INCITS 554 Revision 11 18 January 2021

Table F.2 shows the first 64 dwords output by the scrambler.

Table F.2 – Initial SAS dword mode scrambler output

Dword Scrambler output Dword Scrambler output

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

946 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

F.2 Scrambling while in SAS packet mode

F.2.1 SAS packet mode scrambler implementation example

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

first byte scr[31:24]


PACKET_SYNC 8-bit pat[7:0] scr[23:16]
demux
second byte
Initialization pattern scr[15:8]
third byte
generator scr[7:0]
fourth byte

Figure F.2 – SAS packet mode scrambler

F.2.2 SAS packet mode 8-bit pattern generator implementation in C

The following example C program:


a) generates the 8-bit pattern used in SAS packet mode;
b) includes a control indication to reinitialize the scrambler (i.e., following reception of a
PACKET_SYNC); and
c) sets a data byte input to the function to all zeroes to produce the required scrambler pattern.
This C program does not include the accumulation of successive bytes into a dword, as shown in figure F.2.
#include <stdio.h>
unsigned char patterngen(int reset, unsigned char byte);
int main(void) {
int i;
printf(" Step Pattern Generator Output\n");
printf(" ---------- ------------------------");
for (i = 0; i < 128; i++) {
if (i % 16 == 0) {
printf("\n %3d to %3d ",i,i+15);
}
printf("%02X ",patterngen(i==0, 0)); // scramble all 0s
}
printf("\n");
}

#define gScram 0xA10125 // G(x) = x^23 + x^21 + x^16 + x^8 + x^5 + x^2 + 1
#define shiftreg_init 0x1DBFBC

unsigned char patterngen(int reset, unsigned char byte)


{
static unsigned long shiftreg;
static unsigned char patternout;

Working Draft SAS Protocol Layer - 5 (SPL-5) 947


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

parallel load 1DBFBCh after receiving PACKET_SYNC


Bit 10
Bit 11
Bit 12
Bit 13
Bit 14
Bit 15
Bit 16

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

Figure F.3 – SAS packet mode 8-bit pattern generator

F.2.4 SAS packet mode 8-bit pattern generator output

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.

948 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table F.3 – 8-bit pattern generator values produced after initialization of scrambler by PACKET_SYNC

Step SAS packet mode pattern generator output

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 949


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex G
(informative)

ATA architectural notes

G.1 STP differences from SATA

Some of the differences of STP compared with SATA are:


a) STP adds addressing of multiple SATA devices. Each SATA device is assigned a SAS address by its
attached expander device with STP SATA bridge functionality. The STP initiator port is capable of
addressing more than one STP target port;
b) STP allows multiple STP initiator ports to share access to a SATA device behind an STP SATA bridge
using affiliations (see 6.21.6);
c) SAS interface power management is used instead of SATA interface power management;
d) far-end analog loopback testing is not supported;
e) far-end retimed loopback testing is not supported;
f) near-end analog loopback testing is not supported;
g) use of SATA_CONT is required; and
h) BIST Activate frames are not supported.

G.2 STP differences from SATA

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.

G.3 Affiliation policies

G.3.1 Affiliation policies overview

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.

950 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

G.3.4 Applicability of affiliation for STP target ports

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.

G.4 SATA port selector considerations

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 951


T10/BSR INCITS 554 Revision 11 18 January 2021

G.5 SATA device not transmitting initial Register Device-to-Host FIS

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.

952 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 953


T10/BSR INCITS 554 Revision 11 18 January 2021

Table H.1 – Minimum deletable primitive insertion rate examples while in the SAS dword mode

Physical Connection Deletable primitive insertion rate (per specified number of


link rate rate dwords)

12 Gbit/s 8 per 1 024 (physical link rate tolerance management)

8 per 1 024 (physical link rate tolerance management) +


6 Gbit/s
1 per 2 (rate matching)
12 Gbit/s 8 per 1 024 (physical link rate tolerance management) +
3 Gbit/s
3 per 4 (rate matching)

8 per 1 024 (physical link rate tolerance management) +


1.5 Gbit/s
7 per 8 (rate matching)

6 Gbit/s 4 per 512 (physical link rate tolerance management)

4 per 512 (physical link rate tolerance management) +


3 Gbit/s
6 Gbit/s 1 per 2 (rate matching)

4 per 512 (physical link rate tolerance management) +


1.5 Gbit/s
3 per 4 (rate matching)

3 Gbit/s 2 per 256 (physical link rate tolerance management)


3 Gbit/s 2 per 256 (physical link rate tolerance management) +
1.5 Gbit/s
1 per 2 (rate matching)

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).

954 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table H.2 – Minimum insertion rate examples while in the SAS packet mode

Specified number of SPL packets


Physical Connection Rate matching
link rate rate Physical link rate tolerance
(scrambled idle segment insertion
(deletable SPL packets a)
rate)

22.5 Gbit/s 4 per 512 none

12 Gbit/s 4 per 512 + 1 per 2

22.5 Gbit/s 6 Gbit/s 4 per 512 + 3 per 4

3 Gbit/s 4 per 512 + 7 per 8

1.5 Gbit/s 4 per 512 + 15 per 16


a
For physical link rate tolerance management (see 6.5.3) a deletable SPL packet is:
a) a primitive segment that contains only deletable primitives and deletable binary primitives; or
b) an extended deletable primitive.

Working Draft SAS Protocol Layer - 5 (SPL-5) 955


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex I
(informative)

Zone permission configuration descriptor examples

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.

Table I.1 – Zone permission table example initial value

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.

956 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Table I.2 – CONFIGURE ZONE PERMISSION TABLE request example

Byte\Bit 7 6 5 4 3 2 1 0

0 SMP FRAME TYPE (40h)

1 FUNCTION (8Bh)

2 Reserved

3 REQUEST LENGTH (0Bh)

4 (MSB)
EXPECTED EXPANDER CHANGE COUNT
5 (LSB)

6 STARTING SOURCE ZONE GROUP (0Ah)

7 NUMBER OF ZONE PERMISSION CONFIGURATION DESCRIPTORS (02h)

Zone permission configuration descriptor (first) (source zone group 10)

8 FFh

••• (each byte set to FFh)

23 0Eh

Zone permission configuration descriptor (second) (source zone group 11)

24 00h

••• (each byte set to 00h)

47 00h

48 (MSB)
••• CRC
51 (LSB)

Working Draft SAS Protocol Layer - 5 (SPL-5) 957


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

958 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 959


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex J
(informative)

SAS addressing

J.1 SAS addressing in SAS domains

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).

J.2 Expander device SAS addresses

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.

960 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex K
(informative)

Expander device handling of connections

K.1 Expander device handling of connections overview

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

Figure K.1 – Example topology

Working Draft SAS Protocol Layer - 5 (SPL-5) 961


T10/BSR INCITS 554 Revision 11 18 January 2021

Table K.1 defines the column headers used within the figures contained within this annex.

Table K.1 – Column descriptions for connection examples

Column header Description

Phy [W] Rx Expander phy [W] Receive from device C

Phy [W] Tx Expander phy [W] Transmit to device C

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] Rx Expander phy [X] Receive from device A

Phy [X] Tx Expander phy [X] Transmit to device A

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 [Y] Tx Expander phy [Y] Transmit to device B

Phy [Y] Rx Expander phy [Y] Receive from device B

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)

Phy [Z] Tx Expander phy [Z] Transmit to device D

Phy [Z] Rx Expander phy [Z] Receive from device D

962 Working Draft SAS Protocol Layer - 5 (SPL-5)


K.2 Connection request - OPEN_ACCEPT
963

T10/BSR INCITS 554 Revision 11


Figure K.2 shows the establishment of a successful connection between two end devices.

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
idle dwords XL1: Request Path
Request_Path Arbitrating
AIP (NORMAL)
(Normal)
and/or idle
dwords
Arb Won
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
Working Draft SAS Protocol Layer - 5 (SPL-5)

Arb Status Open_Rsp_Wait (forwarded or


(Waiting generated)
Arb Status
(Waiting On On Device)
AIP (WAITING
ON DEVICE ) Device) OPEN_ACCEPT
idle dwords Open Accept connection
Open Accept Forward Dword XL7:Connected idle dwords dwords
OPEN_ACCEPT Forward Dword (connection (forwarded)
(connection dwords)
connection connection XL7:Connected
dwords dwords dwords)
Forward Dword
(connection Forward Dword

18 January 2021
dwords) (connection connection
dwords) dwords

Figure K.2 – Connection request - OPEN_ACCEPT


K.3 Connection request - OPEN_REJECT by end device
Working Draft SAS Protocol Layer - 5 (SPL-5)

18 January 2021
Figure K.3 shows failure to establish a connection due to rejection of the connection request by an end device.

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
idle dwords XL1: Request Path
Request_Path Arbitrating
AIP (NORMAL)
(Normal)
and/or idle
dwords
Arb Won
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 Open_Rsp_Wait (forwarded or
(Waiting On generated)
Arb Status
(Waiting On Device)
AIP (WAITING
ON DEVICE) Device) OPEN_REJECT

T10/BSR INCITS 554 Revision 11


idle dwords Open Reject idle dwords
Open Reject XL0:Idle idle dwords
OPEN_REJECT
idle dwords XL0:Idle

Figure K.3 – Connection request - OPEN_REJECT by end device


964
K.4 Connection request - OPEN_REJECT by expander device
965

T10/BSR INCITS 554 Revision 11


Figure K.4 shows failure to establish a connection due to rejection of the connection request by an expander device.

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
idle dwords XL1: Request Path
Request_Path Arbitrating
AIP (NORMAL) (Normal)
and/or idle
dwords
Working Draft SAS Protocol Layer - 5 (SPL-5)

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.

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 SOAF
OPEN (A to B) OPEN (B to A)
EOAF EOAF
idle dwords XL1: Request Path Request Path XL1: idle dwords
AIP (NORMAL) Arbitrating Arbitrating AIP (NORMAL)
Request_Path Request_Path
and/or idle (Normal) (Normal) and/or idle
dwords dwords

Arb Won Arb Lost


XL2: Forward Open XL0:Idle idle dwords
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 Open_Rsp_Wait (forwarded or
(Waiting On generated)
Arb Status
(Waiting On Device)
AIP (WAITING
ON DEVICE) Device)

T10/BSR INCITS 554 Revision 11


OPEN_ACCEPT
Open Accept connection
idle dwords
Open Accept Forward Dword XL7:Connected idle dwords dwords
OPEN_ACCEPT Forward Dword (connection (forwarded)
(connection dwords)
connection connection XL7:Connected
dwords dwords dwords)
Forward Dword
(connection Forward Dword
dwords) (connection connection
dwords) dwords
966

Figure K.5 – Connection request - arbitration lost


K.6 Connection request - backoff and retry
967

T10/BSR INCITS 554 Revision 11


Figure K.6 shows a higher priority OPEN address frame (B to C) received by a phy that has previously forwarded an OPEN address frame (A to B) whose
source (A) differs from the winning destination (C). In this case expander phy [X] is required to back off and retry path arbitration (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
idle dwords XL1: Request Path Arbitrating
AIP (NORMAL) Request_Path (Normal)
and/or idle
dwords Arb Won
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
Open_Rsp_Wait (forwarded or
Working Draft SAS Protocol Layer - 5 (SPL-5)

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

Figure K.6 – Connection request - backoff and retry


K.7 Connection request - backoff and reverse path
Working Draft SAS Protocol Layer - 5 (SPL-5)

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

T10/BSR INCITS 554 Revision 11


Path Forward Open XL2: AIP (NORMAL)
SOAF XL5: Forward Open Request_Open
OPEN (B to A) Forward_Open
Forward Dword XL3:
EOAF
Forward Dword (idle dwords) Open_Cnf_Wait
idle dwords XL6: (idle dwords)
(forwarded or Open_Rsp_Wait
generated) Arb Status
(Waiting Arb Status
on Device) (Waiting AIP (WAITING
on Device) ON DEVICE)
968

Figure K.7 – Connection request - backoff and reverse path


K.8 Connection close - single step
969

T10/BSR INCITS 554 Revision 11


Figure K.8 shows an end device initiating the closing of a connection by transmitting a CLOSE primitive sequence, followed by another end device
responding with a CLOSE primitive sequence at a later time.

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
connection connection XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword XL7:Connected connection connection
dwords dwords (connection (connection (connection (connection dwords dwords
dwords) dwords) dwords) dwords)

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.

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
connection connection XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword XL7:Connected connection connection
dwords dwords (connection (connection (connection (connection dwords dwords
dwords) dwords) dwords) dwords)

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

T10/BSR INCITS 554 Revision 11


Figure K.9 – Connection close - simultaneous
970
K.10 BREAK handling during path arbitration when the BREAK_REPLY method is disabled
971

T10/BSR INCITS 554 Revision 11


Figure K.10 shows an expander device responding to the reception of a BREAK primitive sequence during path arbitration when the BREAK_REPLY
method of responding to BREAK primitive sequences is disabled (see 6.16.6).

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
idle dwords XL1: Request Path
AIP (NORMAL) Request_Path Arbitrating
and/or idle (Normal)
dwords
Working Draft SAS Protocol Layer - 5 (SPL-5)

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).

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
connection connection XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword XL7:Connected connection connection
dwords dwords (connection (connection (connection (connection dwords dwords
dwords) dwords) dwords) dwords)

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

T10/BSR INCITS 554 Revision 11


972

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

T10/BSR INCITS 554 Revision 11


Figure K.12 shows an expander device responding to the reception of a BREAK primitive sequence during path arbitration when the BREAK_REPLY
method of responding to BREAK primitive sequences is enabled (see 6.16.6).

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
idle dwords XL1: Request Path
AIP (NORMAL) Request_Path Arbitrating
and/or idle (Normal)
dwords
Working Draft SAS Protocol Layer - 5 (SPL-5)

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).

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
connection connection XL7:Connected Forward Dword Forward Dword Forward Dword Forward Dword XL7:Connected connection connection
dwords dwords (connection (connection (connection (connection dwords dwords
dwords) dwords) dwords) dwords)

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

T10/BSR INCITS 554 Revision 11


Figure K.13 – BREAK handling during a connection when the BREAK_REPLY method is enabled
974
K.14 STP connection - originated by STP initiator port
975

T10/BSR INCITS 554 Revision 11


Figure K.14 shows an STP initiator port originating a connection to an STP target port in an STP SATA bridge.

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

XL3: Forward Dword


Open_Cnf_Wait (idle dwords) Forward Dword
(idle dwords)
Arb Status
Arb Status (Waiting On
Working Draft SAS Protocol Layer - 5 (SPL-5)

(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.

Figure K.14 – STP connection - originated by STP initiator port


K.15 STP connection - originated by STP target port in an STP SATA bridge
Working Draft SAS Protocol Layer - 5 (SPL-5)

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

Arbitrating Request Path


(Normal)

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)

STP connection Open Accept


dwords XL7:Connected Transmit Dword Open Accept
(STP connection Forward Dword Forward Dword

T10/BSR INCITS 554 Revision 11


dwords) (STP connection (SATA device
Forward Dword STP connection SATA device
dwords) dwords a) dwords dwords
SATA device (SATA device
dwords a dwords a)
Forward Dword
Forward Dword (SATA device
(SATA device dwords)
SATA device
dwords dwords)

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

T10/BSR INCITS 554 Revision 11


Figure K.16 shows an STP initiator port closing a connection to an STP target port in an STP SATA bridge.

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)

Forward Dword SYNC /CONT


(SYNC/CONT)
Forward Dword
Forward Dword (SYNC/CONT)
(SYNC/CONT) Forward Dword
SYNC/CONT
(SYNC/CONT)
SYNC/CONT
Forward Close SYNC/CONT
Forward Close
CLOSE XL8:Close_Wait
idle dwords XL0:Idle

CLOSE
idle dwords

T10/BSR INCITS 554 Revision 11


Figure K.17 – STP connection close - originated by STP target port in an STP SATA bridge
978
K.18 Connection request - XL1:Request_Path to XL5:Forward_Open transition
979

T10/BSR INCITS 554 Revision 11


Figure K.18 shows the establishment of a connection following an XL1:Request_Path to XL5:Forward_Open transition by expander phy [Y].

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)
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.18 – XL1:Request_Path to XL5:Forward_Open transition


T10/BSR INCITS 554 Revision 11 18 January 2021

K.19 Pathway blocked and pathway recovery example

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

OPEN(A to B,PBC=3) 7 OPEN(B to A,PBC=0)


2,4,5
9 8 7 6
8 XL6:Open_Rsp_Wait
XL1:Request_Path
Exp[2] XL3:Open_Cnf_Wait

Key: 1 5 OPEN(B to A,PBC=0)


3
Exp = expander
PBC = Pathway blocked count
B

Figure K.19 – Partial pathway recovery

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);

980 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 981


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex L
(informative)

Primitive encoding, binary primitive coding, and extended binary primitive coding

L.1 Primitive encoding

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.

Table L.1 – Primitives with Hamming distance of at least 7 (part 1 of 3)

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)

982 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table L.1 – Primitives with Hamming distance of at least 7 (part 2 of 3)

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)

Working Draft SAS Protocol Layer - 5 (SPL-5) 983


T10/BSR INCITS 554 Revision 11 18 January 2021

Table L.1 – Primitives with Hamming distance of at least 7 (part 3 of 3)

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)

984 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table L.2 describes the K28.5-based primitive encodings that do not have Hamming distances of 7 from the
other primitives.

Table L.2 – Primitives without Hamming distance of 7

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

L.2 Binary primitive coding

L.2.1 Binary primitive codes overview

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.

L.2.2 Deletable binary primitives

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.

Table L.3 – Deletable binary primitives (part 1 of 3)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 985


T10/BSR INCITS 554 Revision 11 18 January 2021

Table L.3 – Deletable binary primitives (part 2 of 3)

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.

986 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table L.3 – Deletable binary primitives (part 3 of 3)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 987


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

988 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 989


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

990 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 991


T10/BSR INCITS 554 Revision 11 18 January 2021

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.

992 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

L.2.6 Unassigned binary primitives

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.

Table L.7 – Unassigned binary primitives (part 1 of 4)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 993


T10/BSR INCITS 554 Revision 11 18 January 2021

Table L.7 – Unassigned binary primitives (part 2 of 4)

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.

994 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table L.7 – Unassigned binary primitives (part 3 of 4)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 995


T10/BSR INCITS 554 Revision 11 18 January 2021

Table L.7 – Unassigned binary primitives (part 4 of 4)

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.

L.3 Extended binary primitive coding

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.

Table L.8 – Extended binary primitives (part 1 of 3)

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.

996 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Table L.8 – Extended binary primitives (part 2 of 3)

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.

Working Draft SAS Protocol Layer - 5 (SPL-5) 997


T10/BSR INCITS 554 Revision 11 18 January 2021

Table L.8 – Extended binary primitives (part 3 of 3)

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.

998 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex M
(informative)

Standards bodies contact information

Table M.1 shows standards bodies and their web sites.

Table M.1 – Standards bodies

Abbreviation Standards body Web site

ANSI® a American National Standards Institute http://www.ansi.org

DIN German Institute for Standardization http://www.din.de

IEC® b International Electrotechnical Commission http://www.iec.ch

IEEE® c Institute of Electrical and Electronics Engineers http://www.ieee.org

INCITS International Committee for Information Technology Standards http://www.incits.org

ISO® d International Organization for Standardization http://www.iso.ch

ITIC Information Technology Industry Council http://www.itic.org

JIS Japanese Industrial Standards Committee http://www.jisc.co.jp

T10 INCITS T10 SCSI storage interfaces http://www.t10.org

T11 INCITS T11 Fibre Channel interfaces http://www.t11.org

T13 INCITS T13 ATA storage interface http://www.t13.org


a
ANSI is a registered trademark of the American National Standards Institute.
b
IEC is a registered trademark of the International Electrotechnical Commission.
c
IEEE is a registered trademark of the Institute of Electrical Electronics Engineers, Inc.
d
ISO is a registered trademark of the International Organization for Standardization.

Working Draft SAS Protocol Layer - 5 (SPL-5) 999


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex N
(informative)

Successful low phy power condition handshake sequence

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.

1000 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

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

Working Draft SAS Protocol Layer - 5 (SPL-5) 1001


T10/BSR INCITS 554 Revision 11 18 January 2021

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

1002 Working Draft SAS Protocol Layer - 5 (SPL-5)


18 January 2021 T10/BSR INCITS 554 Revision 11

Annex O
(informative)

Terminology mapping to SPL-3

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.

Table O.1 – Terminology name mapping to SPL-3

Term used in this standard Term used in SPL-3

SAS device type device type

attached SAS device type attached device type

device type peripheral device type

Table O.2 – Field name mapping to SPL-3

Field name used in this standard Field name used in SPL-3

SAS DEVICE TYPE DEVICE TYPE

ATTACHED SAS DEVICE TYPE ATTACHED DEVICE TYPE

Working Draft SAS Protocol Layer - 5 (SPL-5) 1003


T10/BSR INCITS 554 Revision 11 18 January 2021

Annex P
(informative)

Bibliography

ISO/IEC 14776-150, Serial Attached SCSI (SAS)


INCITS 457-2010, Serial Attached SCSI-2 (SAS-2)
ISO/IEC 9899:2011, Programming languages -C
ISO 80000-2, Quantities and units - Part 2: Mathematical signs and symbols to be used in the natural
sciences and technology
OMG Unified Modeling Language (UML) Specification. Version 1.5, March 20031

1. For more information on the UML specification, contact the Object Modeling Group (see http://www.omg.org).

1004 Working Draft SAS Protocol Layer - 5 (SPL-5)

You might also like