xref: /freebsd/sys/dev/isci/scil/scif_sas_design.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1f11c7f63SJim Harris /*-
2718cf2ccSPedro F. Giffuni  * SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0
3718cf2ccSPedro F. Giffuni  *
4f11c7f63SJim Harris  * This file is provided under a dual BSD/GPLv2 license.  When using or
5f11c7f63SJim Harris  * redistributing this file, you may do so under either license.
6f11c7f63SJim Harris  *
7f11c7f63SJim Harris  * GPL LICENSE SUMMARY
8f11c7f63SJim Harris  *
9f11c7f63SJim Harris  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
10f11c7f63SJim Harris  *
11f11c7f63SJim Harris  * This program is free software; you can redistribute it and/or modify
12f11c7f63SJim Harris  * it under the terms of version 2 of the GNU General Public License as
13f11c7f63SJim Harris  * published by the Free Software Foundation.
14f11c7f63SJim Harris  *
15f11c7f63SJim Harris  * This program is distributed in the hope that it will be useful, but
16f11c7f63SJim Harris  * WITHOUT ANY WARRANTY; without even the implied warranty of
17f11c7f63SJim Harris  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18f11c7f63SJim Harris  * General Public License for more details.
19f11c7f63SJim Harris  *
20f11c7f63SJim Harris  * You should have received a copy of the GNU General Public License
21f11c7f63SJim Harris  * along with this program; if not, write to the Free Software
22f11c7f63SJim Harris  * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
23f11c7f63SJim Harris  * The full GNU General Public License is included in this distribution
24f11c7f63SJim Harris  * in the file called LICENSE.GPL.
25f11c7f63SJim Harris  *
26f11c7f63SJim Harris  * BSD LICENSE
27f11c7f63SJim Harris  *
28f11c7f63SJim Harris  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
29f11c7f63SJim Harris  * All rights reserved.
30f11c7f63SJim Harris  *
31f11c7f63SJim Harris  * Redistribution and use in source and binary forms, with or without
32f11c7f63SJim Harris  * modification, are permitted provided that the following conditions
33f11c7f63SJim Harris  * are met:
34f11c7f63SJim Harris  *
35f11c7f63SJim Harris  *   * Redistributions of source code must retain the above copyright
36f11c7f63SJim Harris  *     notice, this list of conditions and the following disclaimer.
37f11c7f63SJim Harris  *   * Redistributions in binary form must reproduce the above copyright
38f11c7f63SJim Harris  *     notice, this list of conditions and the following disclaimer in
39f11c7f63SJim Harris  *     the documentation and/or other materials provided with the
40f11c7f63SJim Harris  *     distribution.
41f11c7f63SJim Harris  *
42f11c7f63SJim Harris  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
43f11c7f63SJim Harris  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
44f11c7f63SJim Harris  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
45f11c7f63SJim Harris  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
46f11c7f63SJim Harris  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47f11c7f63SJim Harris  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
48f11c7f63SJim Harris  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
49f11c7f63SJim Harris  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50f11c7f63SJim Harris  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51f11c7f63SJim Harris  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52f11c7f63SJim Harris  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53f11c7f63SJim Harris  */
54f11c7f63SJim Harris #ifndef _SCIF_SAS_DESIGN_H_
55f11c7f63SJim Harris #define _SCIF_SAS_DESIGN_H_
56f11c7f63SJim Harris 
57f11c7f63SJim Harris /**
58f11c7f63SJim Harris @page scif_sas_design_page SCIF SAS High Level Design
59f11c7f63SJim Harris 
60f11c7f63SJim Harris <b>Authors:</b>
61f11c7f63SJim Harris - Nathan Marushak
62f11c7f63SJim Harris 
63f11c7f63SJim Harris <b>Key Contributors:</b>
64f11c7f63SJim Harris - Richard Boyd
65f11c7f63SJim Harris 
66f11c7f63SJim Harris @section scif_sas_scope_and_audience Scope and Audience
67f11c7f63SJim Harris 
68f11c7f63SJim Harris This document provides design information relating to the SAS specific
69f11c7f63SJim Harris implementation of the SCI Framework.  Driver developers are the primary
70f11c7f63SJim Harris audience for this document.  The reader is expected to have an understanding
71f11c7f63SJim Harris of the SCU Software Architecture Specification, the Storage Controller
72f11c7f63SJim Harris Interface Specification, and the SCI Base Design.
73f11c7f63SJim Harris 
74f11c7f63SJim Harris @section scif_sas_overview Overview
75f11c7f63SJim Harris 
76f11c7f63SJim Harris To begin, it's important to discuss the utilization of state machines in
77f11c7f63SJim Harris the design.  State machines are pervasive in this design, because of the
78f11c7f63SJim Harris abilities they provide.  A properly implemented state machine allows the
79f11c7f63SJim Harris developer to code for a specific task.  The developer is not encumbered
80f11c7f63SJim Harris with needed to handle other situations all in a single function.  For
81f11c7f63SJim Harris example, if a specific event can only occur when the object is in a specific
82f11c7f63SJim Harris state, then the event handler is added to handle such an event.  Thus, a
83f11c7f63SJim Harris single function is not spliced to handle multiple events under various
84f11c7f63SJim Harris potentially disparate conditions.
85f11c7f63SJim Harris 
86f11c7f63SJim Harris Additionally, the SCI Base Design document specifies a number of state
87f11c7f63SJim Harris machines, objects, and methods that are heavily utilized by this design.
88f11c7f63SJim Harris Please refer to Base Design specification for further information.
89f11c7f63SJim Harris 
90f11c7f63SJim Harris Many of the framework objects have state machines associated with them.
91f11c7f63SJim Harris As a result, there are a number of state entrance and exit methods as well
92f11c7f63SJim Harris as event handlers for each individual state.  This design places all of
93f11c7f63SJim Harris the state entrance and exit methods for a given state machine into a single
94f11c7f63SJim Harris file (e.g. scif_sas_controller_states.c).  Furthermore, all of the state
95f11c7f63SJim Harris event handler methods are also placed into a single file (e.g.
96f11c7f63SJim Harris scif_sas_controller_state_handlers.c).  This format is reused for each
97f11c7f63SJim Harris object that contains state machine(s).
98f11c7f63SJim Harris 
99f11c7f63SJim Harris Some of the SAS framework objects contain sub-state machines.  These
100f11c7f63SJim Harris sub-state machines are started upon entrance to the super-state and stopped
101f11c7f63SJim Harris upon exit of the super-state.
102f11c7f63SJim Harris 
103f11c7f63SJim Harris All other method, data, constant description information will be found in
104f11c7f63SJim Harris the remaining source file (e.g. scif_sas_controller.c).  As a result, please
105f11c7f63SJim Harris be sure to follow the link to that specific object/file definition for
106f11c7f63SJim Harris further information.
107f11c7f63SJim Harris 
108f11c7f63SJim Harris @note Currently a large number of function pointers are utilized during the
109f11c7f63SJim Harris course of a normal IO request.  Once stability of the driver is achieved,
110f11c7f63SJim Harris performance improvements will be made as needed.  This likely will include
111f11c7f63SJim Harris removal of the function pointers from the IO path.
112f11c7f63SJim Harris 
113f11c7f63SJim Harris @section scif_sas_use_cases Use Cases
114f11c7f63SJim Harris 
115f11c7f63SJim Harris The following use case diagram depicts the high-level user interactions with
116f11c7f63SJim Harris the SAS framework.  This diagram does not encompass all use cases implemented
117f11c7f63SJim Harris in the system.  The low-level design section will contain detailed use cases
118f11c7f63SJim Harris for each significant object and their associated detailed sequences and/or
119f11c7f63SJim Harris activities.  For the purposes of readability, the use cases are not directly
120f11c7f63SJim Harris connected to the associated actor utilizing the use case.  Instead naming
121f11c7f63SJim Harris is utilized to different which actor is involved with the use case.
122f11c7f63SJim Harris 
123f11c7f63SJim Harris Actors:
124f11c7f63SJim Harris - The Framework user also called the OS Specific Driver initiates activities in
125f11c7f63SJim Harris the Framework.
126f11c7f63SJim Harris - The SCI Core calls back into the Framework as a result of an operation either
127f11c7f63SJim Harris started by the OS Specific Driver or by the Framework itself.
128f11c7f63SJim Harris 
129f11c7f63SJim Harris @image latex Use_Case_Diagram__SCIF_SAS__Use_Cases.eps "SCIF SAS OS Use Cases" width=11cm
130f11c7f63SJim Harris @image html Use_Case_Diagram__SCIF_SAS__Use_Cases.jpg "SCIF SAS OS Use Cases"
131f11c7f63SJim Harris 
132f11c7f63SJim Harris @section scif_sas_class_hierarchy Class Hierarchy
133f11c7f63SJim Harris 
134f11c7f63SJim Harris This section delineates the high-level class organization for the SCIF_SAS
135f11c7f63SJim Harris component.  Details concerning each class will be found in the corresponding
136f11c7f63SJim Harris low-level design sections.  Furthermore, additional classes not germane to
137f11c7f63SJim Harris the overall architecture of the component will also be defined in these
138f11c7f63SJim Harris low-level design sections.
139f11c7f63SJim Harris 
140f11c7f63SJim Harris @image latex Class_Diagram__scif_sas__Class_Diagram.eps "SCIF SAS Class Diagram" width=16cm
141f11c7f63SJim Harris @image html Class_Diagram__scif_sas__Class_Diagram.jpg "SCIF SAS Class Diagram"
142f11c7f63SJim Harris 
143f11c7f63SJim Harris For more information on each object appearing in the diagram, please
144f11c7f63SJim Harris reference the subsequent sections.
145f11c7f63SJim Harris 
146f11c7f63SJim Harris @section scif_sas_library SCIF SAS Library
147f11c7f63SJim Harris 
148f11c7f63SJim Harris First, the SCIF_SAS_LIBRARY object provides an implementation
149f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
150f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
151f11c7f63SJim Harris storage controller interface specification for background information on
152f11c7f63SJim Harris the library object.
153f11c7f63SJim Harris 
154f11c7f63SJim Harris The SCIF_SAS_LIBRARY object is broken down into 2 individual source files
155f11c7f63SJim Harris and one direct header file.  These files delineate the methods, members, etc.
156f11c7f63SJim Harris associated with this object.  Please reference these files directly for
157f11c7f63SJim Harris further design information:
158f11c7f63SJim Harris - scif_sas_library.h
159f11c7f63SJim Harris - scif_sas_library.c
160f11c7f63SJim Harris 
161f11c7f63SJim Harris @section scif_sas_controller SCIF SAS Controller
162f11c7f63SJim Harris 
163f11c7f63SJim Harris First, the SCIF_SAS_CONTROLLER object provides an implementation
164f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
165f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
166f11c7f63SJim Harris storage controller interface specification for background information on
167f11c7f63SJim Harris the controller object.
168f11c7f63SJim Harris 
169f11c7f63SJim Harris The SCIF_SAS_CONTROLLER object is broken down into 3 individual source files
170f11c7f63SJim Harris and one direct header file.  These files delineate the methods, members, etc.
171f11c7f63SJim Harris associated with this object.  Please reference these files directly for
172f11c7f63SJim Harris further design information:
173f11c7f63SJim Harris - scif_sas_controller.h
174f11c7f63SJim Harris - scif_sas_controller.c
175f11c7f63SJim Harris - scif_sas_controller_state_handlers.c
176f11c7f63SJim Harris - scif_sas_controller_states.c
177f11c7f63SJim Harris 
178f11c7f63SJim Harris @section scif_sas_domain SCIF SAS Domain
179f11c7f63SJim Harris 
180f11c7f63SJim Harris First, the SCIF_SAS_DOMAIN object provides an implementation
181f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
182f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
183f11c7f63SJim Harris storage controller interface specification for background information on
184f11c7f63SJim Harris the SCIF_SAS_DOMAIN object.
185f11c7f63SJim Harris 
186f11c7f63SJim Harris The SCIF_SAS_DOMAIN object is broken down into 3 individual
187f11c7f63SJim Harris source files and one direct header file.  These files delineate the
188f11c7f63SJim Harris methods, members, etc. associated with this object.  Please reference
189f11c7f63SJim Harris these files directly for
190f11c7f63SJim Harris further design information:
191f11c7f63SJim Harris - scif_sas_domain.h
192f11c7f63SJim Harris - scif_sas_domain.c
193f11c7f63SJim Harris - scif_sas_domain_state_handlers.c
194f11c7f63SJim Harris - scif_sas_domain_states.c
195f11c7f63SJim Harris 
196f11c7f63SJim Harris @section scif_sas_remote_device SCIF SAS Remote Device
197f11c7f63SJim Harris 
198f11c7f63SJim Harris First, the SCIF_SAS_REMOTE_DEVICE object provides an implementation
199f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
200f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
201f11c7f63SJim Harris storage controller interface specification for background information on
202f11c7f63SJim Harris the SCIF_SAS_REMOTE_DEVICE object.
203f11c7f63SJim Harris 
204f11c7f63SJim Harris The SCIF_SAS_REMOTE_DEVICE object is broken down into 7 individual source files
205f11c7f63SJim Harris and one direct header file.  These files delineate the methods, members, etc.
206f11c7f63SJim Harris associated with this object.  Methods, data, and functionality specific to a
207f11c7f63SJim Harris particular protocol type (e.g. SMP, STP, etc.) are broken out into their own
208f11c7f63SJim Harris object/file.  SSP specific remote device functionality is covered by the base
209f11c7f63SJim Harris classes (common files).  Please reference these files directly for further
210f11c7f63SJim Harris design information:
211f11c7f63SJim Harris - scif_sas_remote_device.h
212f11c7f63SJim Harris - scif_sas_smp_remote_device.h
213f11c7f63SJim Harris - scif_sas_stp_remote_device.h
214f11c7f63SJim Harris - scif_sas_remote_device.c
215f11c7f63SJim Harris - scif_sas_remote_device_state_handlers.c
216f11c7f63SJim Harris - scif_sas_remote_device_states.c
217f11c7f63SJim Harris - scif_sas_remote_device_starting_substate_handlers.c
218f11c7f63SJim Harris - scif_sas_remote_device_starting_substates.c
219f11c7f63SJim Harris - scif_sas_remote_device_ready_substate_handlers.c
220f11c7f63SJim Harris - scif_sas_remote_device_ready_substates.c
221f11c7f63SJim Harris - scif_sas_smp_remote_device.c
222f11c7f63SJim Harris - scif_sas_stp_remote_device.c
223f11c7f63SJim Harris 
224f11c7f63SJim Harris The SCIF_SAS_REMOTE_DEVICE object has sub-state machines defined for
225f11c7f63SJim Harris the READY and STARTING super-states.  For more information on the
226f11c7f63SJim Harris super-state machine please refer to SCI_BASE_REMOTE_DEVICE_STATES
227f11c7f63SJim Harris in the SCI Base design document.
228f11c7f63SJim Harris 
229f11c7f63SJim Harris In the SCIF_SAS_REMOTE_DEVICE_STARTING_SUBSTATES sub-state machine,
230f11c7f63SJim Harris the remote device currently has to wait for the core to
231f11c7f63SJim Harris return an indication that the remote device has successfully started
232f11c7f63SJim Harris and become ready.  If all goes well, then the remote device will
233f11c7f63SJim Harris transition into the READY state.
234f11c7f63SJim Harris 
235f11c7f63SJim Harris For more information on the starting sub-state machine states please refer
236f11c7f63SJim Harris to the scif_sas_remote_device.h::_SCIF_SAS_REMOTE_DEVICE_STARTING_SUBSTATES
237f11c7f63SJim Harris enumeration.
238f11c7f63SJim Harris 
239f11c7f63SJim Harris @image latex State_Machine_Diagram__STARTING_SUB-STATE__STARTING_SUB-STATE.eps "SCIF SAS Remote Device Starting Sub-state Machine Diagram" width=16cm
240f11c7f63SJim Harris @image html State_Machine_Diagram__STARTING_SUB-STATE__STARTING_SUB-STATE.jpg "SCIF SAS Remote Device Starting Sub-state Machine Diagram"
241f11c7f63SJim Harris 
242f11c7f63SJim Harris In the SCIF_SAS_REMOTE_DEVICE_READY_SUBSTATES sub-state machine,
243f11c7f63SJim Harris the remote device currently only allows new host IO requests during the
244f11c7f63SJim Harris OPERATIONAL state.  In the TASK MANAGEMENT state only new task management
245f11c7f63SJim Harris requests are allowed.
246f11c7f63SJim Harris 
247f11c7f63SJim Harris For more information on the ready sub-state machine states please refer
248f11c7f63SJim Harris to the scif_sas_remote_device.h::_SCIF_SAS_REMOTE_DEVICE_READY_SUBSTATES
249f11c7f63SJim Harris enumeration.
250f11c7f63SJim Harris 
251f11c7f63SJim Harris @image latex State_Machine_Diagram__READY_SUB-STATE__READY_SUB-STATE.eps "SCIF SAS Remote Device Ready Sub-state Machine Diagram" width=16cm
252f11c7f63SJim Harris @image html State_Machine_Diagram__READY_SUB-STATE__READY_SUB-STATE.jpg "SCIF SAS Remote Device Ready Sub-state Machine Diagram"
253f11c7f63SJim Harris 
254f11c7f63SJim Harris @section scif_sas_request SCIF SAS Request
255f11c7f63SJim Harris 
256f11c7f63SJim Harris The SCIF_SAS_REQUEST object provide common functionality for the
257f11c7f63SJim Harris SCIF_SAS_IO_REQUEST and the SCIF_SAS_TASK_REQUEST objects.  This object
258f11c7f63SJim Harris does not directly map to an SCI defined object, but its children do.  For
259f11c7f63SJim Harris additional information, you may reference the SCIF_SAS_IO_REQUEST or
260f11c7f63SJim Harris SCIF_SAS_TASK_REQUEST objects.
261f11c7f63SJim Harris 
262f11c7f63SJim Harris The SCIF_SAS_REQUEST object is broken down into 1 individual source file
263f11c7f63SJim Harris and one direct header file.  These files delineate the methods, members, etc.
264f11c7f63SJim Harris associated with this object.  Please reference these files directly for
265f11c7f63SJim Harris further design information:
266f11c7f63SJim Harris - scif_sas_request.h
267f11c7f63SJim Harris - scif_sas_request.c
268f11c7f63SJim Harris 
269f11c7f63SJim Harris @section scif_sas_io_request SCIF SAS IO Request
270f11c7f63SJim Harris 
271f11c7f63SJim Harris First, the SCIF_SAS_IO_REQUEST object provides an implementation
272f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
273f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
274f11c7f63SJim Harris storage controller interface specification for background information on
275f11c7f63SJim Harris the SCIF_SAS_IO_REQUEST object.
276f11c7f63SJim Harris 
277f11c7f63SJim Harris The SCIF_SAS_IO_REQUEST object is broken down into 3 individual
278f11c7f63SJim Harris source files and one direct header file.  These files delineate the
279f11c7f63SJim Harris methods, members, etc. associated with this object.  Please reference
280f11c7f63SJim Harris these files directly for further design information:
281f11c7f63SJim Harris - scif_sas_io_request.h
282f11c7f63SJim Harris - scif_sas_smp_io_request.h
283f11c7f63SJim Harris - scif_sas_stp_io_request.h
284f11c7f63SJim Harris - scif_sas_sati_binding.h
285f11c7f63SJim Harris - scif_sas_io_request.c
286f11c7f63SJim Harris - scif_sas_io_request_state_handlers.c
287f11c7f63SJim Harris - scif_sas_io_request_states.c
288f11c7f63SJim Harris - scif_sas_smp_io_request.c
289f11c7f63SJim Harris - scif_sas_stp_io_request.c
290f11c7f63SJim Harris 
291f11c7f63SJim Harris @section scif_sas_task_request SCIF SAS Task Request
292f11c7f63SJim Harris 
293f11c7f63SJim Harris First, the SCIF_SAS_TASK_REQUEST object provides an implementation
294f11c7f63SJim Harris for the roles and responsibilities defined in the Storage Controller
295f11c7f63SJim Harris Interface (SCI) specification.  It is suggested that the user read the
296f11c7f63SJim Harris storage controller interface specification for background information on
297f11c7f63SJim Harris the SCIF_SAS_TASK_REQUEST object.
298f11c7f63SJim Harris 
299f11c7f63SJim Harris The SCIF_SAS_TASK_REQUEST object is broken down into 3 individual
300f11c7f63SJim Harris source files and one direct header file.  These files delineate the
301f11c7f63SJim Harris methods, members, etc. associated with this object.  Please reference
302f11c7f63SJim Harris these files directly for further design information:
303f11c7f63SJim Harris - scif_sas_task_request.h
304f11c7f63SJim Harris - scif_sas_stp_task_request.h
305f11c7f63SJim Harris - scif_sas_task_request.c
306f11c7f63SJim Harris - scif_sas_task_request_state_handlers.c
307f11c7f63SJim Harris - scif_sas_task_request_states.c
308f11c7f63SJim Harris - scif_sas_stp_task_request.c
309f11c7f63SJim Harris 
310f11c7f63SJim Harris @section scif_sas_internal_io_request SCIF SAS INTERNAL IO Request
311f11c7f63SJim Harris 
312f11c7f63SJim Harris The SCIF_SAS_INTERNAL_IO_REQUEST object fulfills the SCI's need to create
313f11c7f63SJim Harris and send out the internal io request. These internal io requests could be
314f11c7f63SJim Harris smp request for expander device discover process, or stp request for NCQ
315f11c7f63SJim Harris error handling. Internal IOs consume the reserved internal io space in
316f11c7f63SJim Harris scif_sas_controller. When an internal IO is constructed, it is put into an
317f11c7f63SJim Harris internal high priority queue. A defferred task (start_internal_io_task) will be
318f11c7f63SJim Harris scheduled at the end of every completion process. The task looks up the high
319f11c7f63SJim Harris priority queue and starts each internal io in the queue. There is one exception
320f11c7f63SJim Harris that start_internal_io_task is scheduled immediately when the first internal io
321f11c7f63SJim Harris is constructed. A retry mechanism is also provided for internal io. When an
322f11c7f63SJim Harris internal io response is decoded, if the decoding indicates a retry is needed,
323f11c7f63SJim Harris the internal io will be retried.
324f11c7f63SJim Harris 
325f11c7f63SJim Harris Please refer to these files directly for further design information:
326f11c7f63SJim Harris - scif_sas_internal_io_request.h
327f11c7f63SJim Harris - scif_sas_internal_io_request.c
328f11c7f63SJim Harris - scif_sas_controller.h
329f11c7f63SJim Harris 
330f11c7f63SJim Harris @section scif_sas_smp_remote_device SCIF SAS SMP REMOTE DEVICE
331f11c7f63SJim Harris 
332f11c7f63SJim Harris The SCIF SAS SMP REMOTE DEVICE object represents the expander device and fulfills
333f11c7f63SJim Harris its SMP discover activities. The discover procedure includes a initial discover
334453130d9SPedro F. Giffuni phase and a following SATA spinup_hold release phase, if there are expander attached
335*5e21882bSGordon Bergling SATA device is discovered and in spinup_hold condition. The SCIF SAS SMP REMOTE DEVICE
336f11c7f63SJim Harris object also fulfills expander attached device Target Reset (Phy Control) activity.
337f11c7f63SJim Harris 
338f11c7f63SJim Harris @image latex Discover Process.eps "SMP Discover Activity Diagram" width=10cm
339f11c7f63SJim Harris @image html Discover Process.jpg "SMP Discover Activity Diagram"
340f11c7f63SJim Harris 
341f11c7f63SJim Harris Please refer to these files directly for further design information:
342f11c7f63SJim Harris - scif_sas_smp_remote_device.h
343f11c7f63SJim Harris - scif_sas_smp_remote_device.c
344f11c7f63SJim Harris - scif_sas_smp_request.h
345f11c7f63SJim Harris - scif_sas_smp_request.c
346f11c7f63SJim Harris */
347f11c7f63SJim Harris 
348f11c7f63SJim Harris #endif // _SCIF_SAS_DESIGN_H_
349