scic_sds_request.h revision 265571
1144966Svkashyap/*- 2169400Sscottl * This file is provided under a dual BSD/GPLv2 license. When using or 3144966Svkashyap * redistributing this file, you may do so under either license. 4144966Svkashyap * 5144966Svkashyap * GPL LICENSE SUMMARY 6144966Svkashyap * 7144966Svkashyap * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 8144966Svkashyap * 9144966Svkashyap * This program is free software; you can redistribute it and/or modify 10144966Svkashyap * it under the terms of version 2 of the GNU General Public License as 11144966Svkashyap * published by the Free Software Foundation. 12144966Svkashyap * 13144966Svkashyap * This program is distributed in the hope that it will be useful, but 14144966Svkashyap * WITHOUT ANY WARRANTY; without even the implied warranty of 15144966Svkashyap * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16144966Svkashyap * General Public License for more details. 17144966Svkashyap * 18144966Svkashyap * You should have received a copy of the GNU General Public License 19144966Svkashyap * along with this program; if not, write to the Free Software 20144966Svkashyap * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 21144966Svkashyap * The full GNU General Public License is included in this distribution 22144966Svkashyap * in the file called LICENSE.GPL. 23144966Svkashyap * 24144966Svkashyap * BSD LICENSE 25144966Svkashyap * 26144966Svkashyap * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 27144966Svkashyap * All rights reserved. 28144966Svkashyap * 29144966Svkashyap * Redistribution and use in source and binary forms, with or without 30144966Svkashyap * modification, are permitted provided that the following conditions 31144966Svkashyap * are met: 32144966Svkashyap * 33144966Svkashyap * * Redistributions of source code must retain the above copyright 34169400Sscottl * notice, this list of conditions and the following disclaimer. 35172496Sscottl * * Redistributions in binary form must reproduce the above copyright 36144966Svkashyap * notice, this list of conditions and the following disclaimer in 37144966Svkashyap * the documentation and/or other materials provided with the 38144966Svkashyap * distribution. 39144966Svkashyap * 40144966Svkashyap * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 41144966Svkashyap * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 42144966Svkashyap * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 43144966Svkashyap * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 44149968Sobrien * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45144966Svkashyap * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 46144966Svkashyap * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 47144966Svkashyap * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 48144966Svkashyap * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 49144966Svkashyap * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 50144966Svkashyap * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 51144966Svkashyap * 52144966Svkashyap * $FreeBSD: stable/10/sys/dev/isci/scil/scic_sds_request.h 265571 2014-05-07 16:57:33Z jimharris $ 53144966Svkashyap */ 54144966Svkashyap#ifndef _SCIC_SDS_IO_REQUEST_H_ 55144966Svkashyap#define _SCIC_SDS_IO_REQUEST_H_ 56144966Svkashyap 57144966Svkashyap/** 58144966Svkashyap * @file 59144966Svkashyap * 60144966Svkashyap * @brief This file contains the structures, constants and prototypes for the 61144966Svkashyap * SCIC_SDS_IO_REQUEST object. 62144966Svkashyap */ 63144966Svkashyap 64144966Svkashyap#ifdef __cplusplus 65144966Svkashyapextern "C" { 66144966Svkashyap#endif // __cplusplus 67144966Svkashyap 68144966Svkashyap#include <sys/param.h> 69144966Svkashyap 70144966Svkashyap#include <dev/isci/scil/scic_io_request.h> 71144966Svkashyap 72144966Svkashyap#include <dev/isci/scil/sci_base_request.h> 73144966Svkashyap#include <dev/isci/scil/sci_base_state_machine_logger.h> 74144966Svkashyap#include <dev/isci/scil/scu_task_context.h> 75144966Svkashyap#include <dev/isci/scil/intel_sas.h> 76144966Svkashyap 77144966Svkashyapstruct SCIC_SDS_CONTROLLER; 78144966Svkashyapstruct SCIC_SDS_REMOTE_DEVICE; 79144966Svkashyapstruct SCIC_SDS_IO_REQUEST_STATE_HANDLER; 80144966Svkashyap 81144966Svkashyap/** 82144966Svkashyap * @enum _SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATES 83212008Sdelphij * 84144966Svkashyap * @brief This enumeration depicts all of the substates for a task 85144966Svkashyap * management request to be performed in the STARTED super-state. 86144966Svkashyap */ 87144966Svkashyaptypedef enum _SCIC_SDS_RAW_REQUEST_STARTED_TASK_MGMT_SUBSTATES 88144966Svkashyap{ 89144966Svkashyap /** 90144966Svkashyap * The AWAIT_TC_COMPLETION sub-state indicates that the started raw 91144966Svkashyap * task management request is waiting for the transmission of the 92144966Svkashyap * initial frame (i.e. command, task, etc.). 93144966Svkashyap */ 94208969Sdelphij SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_COMPLETION, 95144966Svkashyap 96208969Sdelphij /** 97208969Sdelphij * This sub-state indicates that the started task management request 98144966Svkashyap * is waiting for the reception of an unsolicited frame 99144966Svkashyap * (i.e. response IU). 100144966Svkashyap */ 101172496Sscottl SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_RESPONSE, 102208969Sdelphij 103144966Svkashyap SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_MAX_SUBSTATES 104144966Svkashyap 105144966Svkashyap} SCIC_SDS_RAW_REQUEST_STARTED_TASK_MGMT_SUBSTATES; 106144966Svkashyap 107144966Svkashyap 108144966Svkashyap/** 109144966Svkashyap * @enum _SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES 110144966Svkashyap * 111144966Svkashyap * @brief This enumeration depicts all of the substates for a SMP 112144966Svkashyap * request to be performed in the STARTED super-state. 113144966Svkashyap */ 114144966Svkashyaptypedef enum _SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES 115144966Svkashyap{ 116144966Svkashyap /** 117144966Svkashyap * This sub-state indicates that the started task management request 118172496Sscottl * is waiting for the reception of an unsolicited frame 119170872Sscottl * (i.e. response IU). 120144966Svkashyap */ 121144966Svkashyap SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_RESPONSE, 122144966Svkashyap 123144966Svkashyap /** 124144966Svkashyap * The AWAIT_TC_COMPLETION sub-state indicates that the started SMP request is 125144966Svkashyap * waiting for the transmission of the initial frame (i.e. command, task, etc.). 126144966Svkashyap */ 127144966Svkashyap SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_TC_COMPLETION, 128172496Sscottl 129144966Svkashyap SCIC_SDS_SMP_REQUEST_STARTED_MAX_SUBSTATES 130144966Svkashyap 131144966Svkashyap} SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES; 132144966Svkashyap 133144966Svkashyap/** 134144966Svkashyap * @struct SCIC_SDS_IO_REQUEST 135144966Svkashyap * 136144966Svkashyap * @brief This structure contains or references all of the data necessary 137144966Svkashyap * to process a task management or normal IO request. 138144966Svkashyap */ 139144966Svkashyaptypedef struct SCIC_SDS_REQUEST 140144966Svkashyap{ 141144966Svkashyap /** 142144966Svkashyap * This field indictes the parent object of the request. 143144966Svkashyap */ 144144966Svkashyap SCI_BASE_REQUEST_T parent; 145144966Svkashyap 146172496Sscottl void *user_request; 147144966Svkashyap 148144966Svkashyap /** 149172496Sscottl * This field simply points to the controller to which this IO request 150144966Svkashyap * is associated. 151144966Svkashyap */ 152144966Svkashyap struct SCIC_SDS_CONTROLLER *owning_controller; 153144966Svkashyap 154144966Svkashyap /** 155144966Svkashyap * This field simply points to the remote device to which this IO request 156144966Svkashyap * is associated. 157144966Svkashyap */ 158144966Svkashyap struct SCIC_SDS_REMOTE_DEVICE *target_device; 159144966Svkashyap 160144966Svkashyap /** 161144966Svkashyap * This field is utilized to determine if the SCI user is managing 162144966Svkashyap * the IO tag for this request or if the core is managing it. 163144966Svkashyap */ 164144966Svkashyap BOOL was_tag_assigned_by_user; 165144966Svkashyap 166144966Svkashyap /** 167144966Svkashyap * This field indicates the IO tag for this request. The IO tag is 168144966Svkashyap * comprised of the task_index and a sequence count. The sequence count 169144966Svkashyap * is utilized to help identify tasks from one life to another. 170172496Sscottl */ 171172496Sscottl U16 io_tag; 172144966Svkashyap 173144966Svkashyap /** 174144966Svkashyap * This field specifies the sat protocol being utilized for this 175144966Svkashyap * IO request, such as SAT_PROTOCOL_PIO_DATA_IN, SAT_PROTOCOL_FPDMA etc. 176144966Svkashyap */ 177144966Svkashyap U8 sat_protocol; 178144966Svkashyap 179172496Sscottl /** 180172496Sscottl * This field specifies the protocol being utilized for this 181144966Svkashyap * IO request. 182144966Svkashyap */ 183144966Svkashyap SCIC_TRANSPORT_PROTOCOL protocol; 184144966Svkashyap 185144966Svkashyap /** 186144966Svkashyap * This field indicates the completion status taken from the SCUs 187144966Svkashyap * completion code. It indicates the completion result for the SCU hardware. 188144966Svkashyap */ 189144966Svkashyap U32 scu_status; 190144966Svkashyap 191144966Svkashyap /** 192144966Svkashyap * This field indicates the completion status returned to the SCI user. It 193144966Svkashyap * indicates the users view of the io request completion. 194144966Svkashyap */ 195144966Svkashyap U32 sci_status; 196144966Svkashyap 197144966Svkashyap /** 198144966Svkashyap * This field contains the value to be utilized when posting (e.g. Post_TC, 199144966Svkashyap * Post_TC_Abort) this request to the silicon. 200144966Svkashyap */ 201144966Svkashyap U32 post_context; 202144966Svkashyap 203144966Svkashyap void *command_buffer; 204144966Svkashyap void *response_buffer; 205144966Svkashyap SCU_TASK_CONTEXT_T *task_context_buffer; 206144966Svkashyap SCU_SGL_ELEMENT_PAIR_T *sgl_element_pair_buffer; 207144966Svkashyap 208144966Svkashyap /** 209144966Svkashyap * This field indicates if this request is a task management request or 210144966Svkashyap * normal IO request. 211144966Svkashyap */ 212144966Svkashyap BOOL is_task_management_request; 213144966Svkashyap 214144966Svkashyap /** 215144966Svkashyap * This field indicates that this request contains an initialized started 216144966Svkashyap * substate machine. 217144966Svkashyap */ 218144966Svkashyap BOOL has_started_substate_machine; 219144966Svkashyap 220144966Svkashyap /** 221144966Svkashyap * This field is a pointer to the stored rx frame data. It is used in STP 222144966Svkashyap * internal requests and SMP response frames. If this field is non-NULL the 223144966Svkashyap * saved frame must be released on IO request completion. 224144966Svkashyap * 225144966Svkashyap * @todo In the future do we want to keep a list of RX frame buffers? 226144966Svkashyap */ 227144966Svkashyap U32 saved_rx_frame_index; 228144966Svkashyap 229144966Svkashyap /** 230208969Sdelphij * This field specifies the data necessary to manage the sub-state 231144966Svkashyap * machine executed while in the SCI_BASE_REQUEST_STATE_STARTED state. 232144966Svkashyap */ 233144966Svkashyap SCI_BASE_STATE_MACHINE_T started_substate_machine; 234144966Svkashyap 235144966Svkashyap /** 236144966Svkashyap * This field specifies the current state handlers in place for this 237144966Svkashyap * IO Request object. This field is updated each time the request 238144966Svkashyap * changes state. 239144966Svkashyap */ 240144966Svkashyap struct SCIC_SDS_IO_REQUEST_STATE_HANDLER *state_handlers; 241144966Svkashyap 242144966Svkashyap #ifdef SCI_LOGGING 243144966Svkashyap /** 244144966Svkashyap * This field is the observer of the started subsate machine 245144966Svkashyap */ 246144966Svkashyap SCI_BASE_STATE_MACHINE_LOGGER_T started_substate_machine_logger; 247144966Svkashyap #endif 248144966Svkashyap 249144966Svkashyap /** 250144966Svkashyap * This field in the recorded device sequence for the io request. This is 251144966Svkashyap * recorded during the build operation and is compared in the start 252144966Svkashyap * operation. If the sequence is different then there was a change of 253144966Svkashyap * devices from the build to start operations. 254144966Svkashyap */ 255144966Svkashyap U8 device_sequence; 256144966Svkashyap 257144966Svkashyap} SCIC_SDS_REQUEST_T; 258144966Svkashyap 259144966Svkashyap 260144966Svkashyaptypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_FRAME_HANDLER_T)( 261144966Svkashyap SCIC_SDS_REQUEST_T * this_request, 262144966Svkashyap U32 frame_index); 263144966Svkashyap 264246713Skibtypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_EVENT_HANDLER_T)( 265246713Skib SCIC_SDS_REQUEST_T * this_request, 266144966Svkashyap U32 event_code); 267144966Svkashyap 268246713Skibtypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_TASK_COMPLETION_HANDLER_T)( 269246713Skib SCIC_SDS_REQUEST_T * this_request, 270246713Skib U32 completion_code); 271246713Skib 272144966Svkashyap/** 273144966Svkashyap * @struct SCIC_SDS_IO_REQUEST_STATE_HANDLER 274144966Svkashyap * 275144966Svkashyap * @brief This is the SDS core definition of the state handlers. 276246713Skib */ 277246713Skibtypedef struct SCIC_SDS_IO_REQUEST_STATE_HANDLER 278246713Skib{ 279212008Sdelphij SCI_BASE_REQUEST_STATE_HANDLER_T parent; 280212008Sdelphij 281144966Svkashyap SCIC_SDS_IO_REQUEST_TASK_COMPLETION_HANDLER_T tc_completion_handler; 282144966Svkashyap SCIC_SDS_IO_REQUEST_EVENT_HANDLER_T event_handler; 283144966Svkashyap SCIC_SDS_IO_REQUEST_FRAME_HANDLER_T frame_handler; 284144966Svkashyap 285144966Svkashyap} SCIC_SDS_IO_REQUEST_STATE_HANDLER_T; 286212008Sdelphij 287212008Sdelphijextern SCI_BASE_STATE_T scic_sds_request_state_table[]; 288212008Sdelphijextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 289212008Sdelphij scic_sds_request_state_handler_table[]; 290212008Sdelphij 291212008Sdelphijextern SCI_BASE_STATE_T scic_sds_io_request_started_task_mgmt_substate_table[]; 292144966Svkashyapextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 293144966Svkashyap scic_sds_ssp_task_request_started_substate_handler_table[]; 294144966Svkashyap 295144966Svkashyapextern SCI_BASE_STATE_T scic_sds_smp_request_started_substate_table[]; 296144966Svkashyapextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 297144966Svkashyap scic_sds_smp_request_started_substate_handler_table[]; 298144966Svkashyap 299144966Svkashyap/** 300144966Svkashyap * This macro returns the maximum number of SGL element paris that we will 301144966Svkashyap * support in a single IO request. 302144966Svkashyap */ 303144966Svkashyap#define SCU_MAX_SGL_ELEMENT_PAIRS ((SCU_IO_REQUEST_SGE_COUNT + 1) / 2) 304144966Svkashyap 305144966Svkashyap/** 306144966Svkashyap * This macro will return the controller for this io request object 307144966Svkashyap */ 308144966Svkashyap#define scic_sds_request_get_controller(this_request) \ 309144966Svkashyap ((this_request)->owning_controller) 310144966Svkashyap 311144966Svkashyap/** 312144966Svkashyap * This macro will return the device for this io request object 313144966Svkashyap */ 314144966Svkashyap#define scic_sds_request_get_device(this_request) \ 315144966Svkashyap ((this_request)->target_device) 316144966Svkashyap 317208969Sdelphij/** 318208969Sdelphij * This macro will return the port for this io request object 319208969Sdelphij */ 320144966Svkashyap#define scic_sds_request_get_port(this_request) \ 321144966Svkashyap scic_sds_remote_device_get_port(scic_sds_request_get_device(this_request)) 322144966Svkashyap 323144966Svkashyap/** 324212008Sdelphij * This macro returns the constructed post context result for the io 325144966Svkashyap * request. 326144966Svkashyap */ 327144966Svkashyap#define scic_sds_request_get_post_context(this_request) \ 328144966Svkashyap ((this_request)->post_context) 329212008Sdelphij 330212008Sdelphij/** 331212008Sdelphij * This is a helper macro to return the os handle for this request object. 332212008Sdelphij */ 333212008Sdelphij#define scic_sds_request_get_task_context(request) \ 334212008Sdelphij ((request)->task_context_buffer) 335212008Sdelphij 336212008Sdelphij#define scic_sds_request_align_task_context_buffer(address) \ 337212008Sdelphij ((SCU_TASK_CONTEXT_T *)( \ 338144966Svkashyap (((POINTER_UINT)(address)) + (CACHE_LINE_SIZE - 1)) \ 339208969Sdelphij & ~(CACHE_LINE_SIZE - 1) \ 340144966Svkashyap )) 341144966Svkashyap 342144966Svkashyap/** 343144966Svkashyap * This macro will align the memory address so that it is correct for the SCU 344144966Svkashyap * hardware to DMA the SGL element pairs. 345144966Svkashyap */ 346144966Svkashyap#define scic_sds_request_align_sgl_element_buffer(address) \ 347144966Svkashyap ((SCU_SGL_ELEMENT_PAIR_T *)( \ 348144966Svkashyap ((char *)(address)) \ 349144966Svkashyap + ( \ 350144966Svkashyap ((~(POINTER_UINT)(address)) + 1) \ 351144966Svkashyap & (sizeof(SCU_SGL_ELEMENT_PAIR_T) - 1) \ 352144966Svkashyap ) \ 353212008Sdelphij )) 354144966Svkashyap 355144966Svkashyap/** 356144966Svkashyap * This macro will set the scu hardware status and sci request completion 357144966Svkashyap * status for an io request. 358144966Svkashyap */ 359212008Sdelphij#define scic_sds_request_set_status(request, scu_status_code, sci_status_code) \ 360212008Sdelphij{ \ 361144966Svkashyap (request)->scu_status = (scu_status_code); \ 362144966Svkashyap (request)->sci_status = (sci_status_code); \ 363144966Svkashyap} 364144966Svkashyap 365144966Svkashyap#define scic_sds_request_complete(a_request) \ 366144966Svkashyap ((a_request)->state_handlers->parent.complete_handler(&(a_request)->parent)) 367144966Svkashyap 368144966SvkashyapU32 scic_sds_request_get_min_timer_count(void); 369144966Svkashyap 370144966SvkashyapU32 scic_sds_request_get_max_timer_count(void); 371144966Svkashyap 372144966Svkashyap 373144966Svkashyap/** 374144966Svkashyap * This macro invokes the core state task completion handler for the 375144966Svkashyap * SCIC_SDS_IO_REQUEST_T object. 376144966Svkashyap */ 377144966Svkashyap#define scic_sds_io_request_tc_completion(this_request, completion_code) \ 378163816Smjacob{ \ 379163816Smjacob if (this_request->parent.state_machine.current_state_id \ 380163816Smjacob == SCI_BASE_REQUEST_STATE_STARTED \ 381163816Smjacob && this_request->has_started_substate_machine \ 382144966Svkashyap == FALSE) \ 383163816Smjacob scic_sds_request_started_state_tc_completion_handler(this_request, completion_code); \ 384163816Smjacob else \ 385163816Smjacob this_request->state_handlers->tc_completion_handler(this_request, completion_code); \ 386163816Smjacob} 387163816Smjacob 388163816Smjacob/** 389163816Smjacob * This macro zeros the hardware SGL element data 390163816Smjacob */ 391163816Smjacob#define SCU_SGL_ZERO(scu_sge) \ 392163816Smjacob{ \ 393144966Svkashyap (scu_sge).length = 0; \ 394144966Svkashyap (scu_sge).address_lower = 0; \ 395144966Svkashyap (scu_sge).address_upper = 0; \ 396144966Svkashyap (scu_sge).address_modifier = 0; \ 397144966Svkashyap} 398144966Svkashyap 399144966Svkashyap/** 400144966Svkashyap * This macro copys the SGL Element data from the host os to the hardware SGL 401144966Svkashyap * elment data 402144966Svkashyap */ 403144966Svkashyap#define SCU_SGL_COPY(os_handle, scu_sge, os_sge) \ 404144966Svkashyap{ \ 405144966Svkashyap (scu_sge).length = \ 406144966Svkashyap scic_cb_sge_get_length_field(os_handle, os_sge); \ 407144966Svkashyap (scu_sge).address_upper = \ 408144966Svkashyap sci_cb_physical_address_upper(scic_cb_sge_get_address_field(os_handle, os_sge)); \ 409144966Svkashyap (scu_sge).address_lower = \ 410144966Svkashyap sci_cb_physical_address_lower(scic_cb_sge_get_address_field(os_handle, os_sge)); \ 411144966Svkashyap (scu_sge).address_modifier = 0; \ 412144966Svkashyap} 413144966Svkashyap 414144966Svkashyap//***************************************************************************** 415144966Svkashyap//* CORE REQUEST PROTOTYPES 416144966Svkashyap//***************************************************************************** 417144966Svkashyap 418144966SvkashyapSCU_SGL_ELEMENT_PAIR_T *scic_sds_request_get_sgl_element_pair( 419152213Svkashyap SCIC_SDS_REQUEST_T *this_request, 420144966Svkashyap U32 sgl_pair_index 421144966Svkashyap); 422144966Svkashyap 423144966Svkashyapvoid scic_sds_request_build_sgl( 424163816Smjacob SCIC_SDS_REQUEST_T *this_request 425163816Smjacob); 426163816Smjacob 427163816Smjacobvoid scic_sds_ssp_io_request_assign_buffers( 428212008Sdelphij SCIC_SDS_REQUEST_T *this_request 429144966Svkashyap); 430144966Svkashyap 431144966Svkashyapvoid scic_sds_ssp_task_request_assign_buffers( 432144966Svkashyap SCIC_SDS_REQUEST_T *this_request 433144966Svkashyap); 434144966Svkashyap 435144966Svkashyapvoid scic_sds_stp_request_assign_buffers( 436144966Svkashyap SCIC_SDS_REQUEST_T * this_request 437144966Svkashyap); 438144966Svkashyap 439144966Svkashyapvoid scic_sds_smp_request_assign_buffers( 440144966Svkashyap SCIC_SDS_REQUEST_T * this_request 441144966Svkashyap); 442144966Svkashyap 443144966Svkashyap// --------------------------------------------------------------------------- 444144966Svkashyap 445144966SvkashyapSCI_STATUS scic_sds_request_start( 446144966Svkashyap SCIC_SDS_REQUEST_T *this_request 447144966Svkashyap); 448144966Svkashyap 449144966SvkashyapSCI_STATUS scic_sds_io_request_terminate( 450144966Svkashyap SCIC_SDS_REQUEST_T *this_request 451144966Svkashyap); 452144966Svkashyap 453144966SvkashyapSCI_STATUS scic_sds_io_request_complete( 454144966Svkashyap SCIC_SDS_REQUEST_T *this_request 455144966Svkashyap); 456144966Svkashyap 457144966Svkashyapvoid scic_sds_io_request_copy_response( 458144966Svkashyap SCIC_SDS_REQUEST_T *this_request 459145688Svkashyap); 460144966Svkashyap 461144966SvkashyapSCI_STATUS scic_sds_io_request_event_handler( 462144966Svkashyap SCIC_SDS_REQUEST_T *this_request, 463144966Svkashyap U32 event_code 464144966Svkashyap); 465144966Svkashyap 466144966SvkashyapSCI_STATUS scic_sds_io_request_frame_handler( 467144966Svkashyap SCIC_SDS_REQUEST_T *this_request, 468144966Svkashyap U32 frame_index 469144966Svkashyap); 470144966Svkashyap 471144966SvkashyapSCI_STATUS scic_sds_task_request_complete( 472144966Svkashyap SCIC_SDS_REQUEST_T *this_request 473144966Svkashyap); 474144966Svkashyap 475144966SvkashyapSCI_STATUS scic_sds_task_request_terminate( 476144966Svkashyap SCIC_SDS_REQUEST_T *this_request 477144966Svkashyap); 478144966Svkashyap 479144966Svkashyap#ifdef SCI_LOGGING 480144966Svkashyapvoid scic_sds_request_initialize_state_logging( 481152213Svkashyap SCIC_SDS_REQUEST_T *this_request 482152213Svkashyap); 483152213Svkashyap 484203108Smavvoid scic_sds_request_deinitialize_state_logging( 485144966Svkashyap SCIC_SDS_REQUEST_T *this_request 486172496Sscottl); 487203108Smav#else // SCI_LOGGING 488203108Smav#define scic_sds_request_initialize_state_logging(x) 489203108Smav#define scic_sds_request_deinitialize_state_logging(x) 490172496Sscottl#endif // SCI_LOGGING 491144966Svkashyap 492169400Sscottl//***************************************************************************** 493144966Svkashyap//* DEFAULT STATE HANDLERS 494203108Smav//***************************************************************************** 495172496Sscottl 496144966SvkashyapSCI_STATUS scic_sds_request_default_start_handler( 497144966Svkashyap SCI_BASE_REQUEST_T *this_request 498144966Svkashyap); 499144966Svkashyap 500144966SvkashyapSCI_STATUS scic_sds_request_default_abort_handler( 501144966Svkashyap SCI_BASE_REQUEST_T *this_request 502144966Svkashyap); 503144966Svkashyap 504144966SvkashyapSCI_STATUS scic_sds_request_default_complete_handler( 505144966Svkashyap SCI_BASE_REQUEST_T *this_request 506144966Svkashyap); 507208969Sdelphij 508144966SvkashyapSCI_STATUS scic_sds_request_default_destruct_handler( 509144966Svkashyap SCI_BASE_REQUEST_T *this_request 510144966Svkashyap); 511144966Svkashyap 512208969SdelphijSCI_STATUS scic_sds_request_default_tc_completion_handler( 513208969Sdelphij SCIC_SDS_REQUEST_T * this_request, 514144966Svkashyap U32 completion_code 515208969Sdelphij); 516208969Sdelphij 517208969SdelphijSCI_STATUS scic_sds_request_default_event_handler( 518208969Sdelphij SCIC_SDS_REQUEST_T * this_request, 519208969Sdelphij U32 event_code 520172496Sscottl); 521208969Sdelphij 522172496SscottlSCI_STATUS scic_sds_request_default_frame_handler( 523144966Svkashyap SCIC_SDS_REQUEST_T * this_request, 524144966Svkashyap U32 frame_index 525144966Svkashyap); 526144966Svkashyap 527144966Svkashyap//***************************************************************************** 528212008Sdelphij//* STARTED STATE HANDLERS 529212008Sdelphij//***************************************************************************** 530152213Svkashyap 531212008SdelphijSCI_STATUS scic_sds_request_started_state_abort_handler( 532152213Svkashyap SCI_BASE_REQUEST_T *this_request 533152213Svkashyap); 534152213Svkashyap 535152213SvkashyapSCI_STATUS scic_sds_request_started_state_tc_completion_handler( 536212008Sdelphij SCIC_SDS_REQUEST_T * this_request, 537152213Svkashyap U32 completion_code 538212008Sdelphij); 539212008Sdelphij 540212008Sdelphij#ifdef __cplusplus 541212008Sdelphij} 542212008Sdelphij#endif // __cplusplus 543152213Svkashyap 544152213Svkashyap#endif // _SCIC_SDS_IO_REQUEST_H_ 545152213Svkashyap