1230557Sjimharris/*- 2230557Sjimharris * This file is provided under a dual BSD/GPLv2 license. When using or 3230557Sjimharris * redistributing this file, you may do so under either license. 4230557Sjimharris * 5230557Sjimharris * GPL LICENSE SUMMARY 6230557Sjimharris * 7230557Sjimharris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 8230557Sjimharris * 9230557Sjimharris * This program is free software; you can redistribute it and/or modify 10230557Sjimharris * it under the terms of version 2 of the GNU General Public License as 11230557Sjimharris * published by the Free Software Foundation. 12230557Sjimharris * 13230557Sjimharris * This program is distributed in the hope that it will be useful, but 14230557Sjimharris * WITHOUT ANY WARRANTY; without even the implied warranty of 15230557Sjimharris * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16230557Sjimharris * General Public License for more details. 17230557Sjimharris * 18230557Sjimharris * You should have received a copy of the GNU General Public License 19230557Sjimharris * along with this program; if not, write to the Free Software 20230557Sjimharris * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 21230557Sjimharris * The full GNU General Public License is included in this distribution 22230557Sjimharris * in the file called LICENSE.GPL. 23230557Sjimharris * 24230557Sjimharris * BSD LICENSE 25230557Sjimharris * 26230557Sjimharris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 27230557Sjimharris * All rights reserved. 28230557Sjimharris * 29230557Sjimharris * Redistribution and use in source and binary forms, with or without 30230557Sjimharris * modification, are permitted provided that the following conditions 31230557Sjimharris * are met: 32230557Sjimharris * 33230557Sjimharris * * Redistributions of source code must retain the above copyright 34230557Sjimharris * notice, this list of conditions and the following disclaimer. 35230557Sjimharris * * Redistributions in binary form must reproduce the above copyright 36230557Sjimharris * notice, this list of conditions and the following disclaimer in 37230557Sjimharris * the documentation and/or other materials provided with the 38230557Sjimharris * distribution. 39230557Sjimharris * 40230557Sjimharris * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 41230557Sjimharris * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 42230557Sjimharris * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 43230557Sjimharris * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 44230557Sjimharris * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45230557Sjimharris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 46230557Sjimharris * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 47230557Sjimharris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 48230557Sjimharris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 49230557Sjimharris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 50230557Sjimharris * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 51230557Sjimharris * 52230557Sjimharris * $FreeBSD$ 53230557Sjimharris */ 54230557Sjimharris#ifndef _SCIC_SDS_IO_REQUEST_H_ 55230557Sjimharris#define _SCIC_SDS_IO_REQUEST_H_ 56230557Sjimharris 57230557Sjimharris/** 58230557Sjimharris * @file 59230557Sjimharris * 60230557Sjimharris * @brief This file contains the structures, constants and prototypes for the 61230557Sjimharris * SCIC_SDS_IO_REQUEST object. 62230557Sjimharris */ 63230557Sjimharris 64230557Sjimharris#ifdef __cplusplus 65230557Sjimharrisextern "C" { 66230557Sjimharris#endif // __cplusplus 67230557Sjimharris 68265571Sjimharris#include <sys/param.h> 69265571Sjimharris 70230557Sjimharris#include <dev/isci/scil/scic_io_request.h> 71230557Sjimharris 72230557Sjimharris#include <dev/isci/scil/sci_base_request.h> 73230557Sjimharris#include <dev/isci/scil/sci_base_state_machine_logger.h> 74230557Sjimharris#include <dev/isci/scil/scu_task_context.h> 75230557Sjimharris#include <dev/isci/scil/intel_sas.h> 76230557Sjimharris 77230557Sjimharrisstruct SCIC_SDS_CONTROLLER; 78230557Sjimharrisstruct SCIC_SDS_REMOTE_DEVICE; 79230557Sjimharrisstruct SCIC_SDS_IO_REQUEST_STATE_HANDLER; 80230557Sjimharris 81230557Sjimharris/** 82230557Sjimharris * @enum _SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATES 83230557Sjimharris * 84230557Sjimharris * @brief This enumeration depicts all of the substates for a task 85230557Sjimharris * management request to be performed in the STARTED super-state. 86230557Sjimharris */ 87230557Sjimharristypedef enum _SCIC_SDS_RAW_REQUEST_STARTED_TASK_MGMT_SUBSTATES 88230557Sjimharris{ 89230557Sjimharris /** 90230557Sjimharris * The AWAIT_TC_COMPLETION sub-state indicates that the started raw 91230557Sjimharris * task management request is waiting for the transmission of the 92230557Sjimharris * initial frame (i.e. command, task, etc.). 93230557Sjimharris */ 94230557Sjimharris SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_COMPLETION, 95230557Sjimharris 96230557Sjimharris /** 97230557Sjimharris * This sub-state indicates that the started task management request 98230557Sjimharris * is waiting for the reception of an unsolicited frame 99230557Sjimharris * (i.e. response IU). 100230557Sjimharris */ 101230557Sjimharris SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_RESPONSE, 102230557Sjimharris 103230557Sjimharris SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_MAX_SUBSTATES 104230557Sjimharris 105230557Sjimharris} SCIC_SDS_RAW_REQUEST_STARTED_TASK_MGMT_SUBSTATES; 106230557Sjimharris 107230557Sjimharris 108230557Sjimharris/** 109230557Sjimharris * @enum _SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES 110230557Sjimharris * 111230557Sjimharris * @brief This enumeration depicts all of the substates for a SMP 112230557Sjimharris * request to be performed in the STARTED super-state. 113230557Sjimharris */ 114230557Sjimharristypedef enum _SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES 115230557Sjimharris{ 116230557Sjimharris /** 117230557Sjimharris * This sub-state indicates that the started task management request 118230557Sjimharris * is waiting for the reception of an unsolicited frame 119230557Sjimharris * (i.e. response IU). 120230557Sjimharris */ 121230557Sjimharris SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_RESPONSE, 122230557Sjimharris 123230557Sjimharris /** 124230557Sjimharris * The AWAIT_TC_COMPLETION sub-state indicates that the started SMP request is 125230557Sjimharris * waiting for the transmission of the initial frame (i.e. command, task, etc.). 126230557Sjimharris */ 127230557Sjimharris SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_TC_COMPLETION, 128230557Sjimharris 129230557Sjimharris SCIC_SDS_SMP_REQUEST_STARTED_MAX_SUBSTATES 130230557Sjimharris 131230557Sjimharris} SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATES; 132230557Sjimharris 133230557Sjimharris/** 134230557Sjimharris * @struct SCIC_SDS_IO_REQUEST 135230557Sjimharris * 136230557Sjimharris * @brief This structure contains or references all of the data necessary 137230557Sjimharris * to process a task management or normal IO request. 138230557Sjimharris */ 139230557Sjimharristypedef struct SCIC_SDS_REQUEST 140230557Sjimharris{ 141230557Sjimharris /** 142230557Sjimharris * This field indictes the parent object of the request. 143230557Sjimharris */ 144230557Sjimharris SCI_BASE_REQUEST_T parent; 145230557Sjimharris 146230557Sjimharris void *user_request; 147230557Sjimharris 148230557Sjimharris /** 149230557Sjimharris * This field simply points to the controller to which this IO request 150230557Sjimharris * is associated. 151230557Sjimharris */ 152230557Sjimharris struct SCIC_SDS_CONTROLLER *owning_controller; 153230557Sjimharris 154230557Sjimharris /** 155230557Sjimharris * This field simply points to the remote device to which this IO request 156230557Sjimharris * is associated. 157230557Sjimharris */ 158230557Sjimharris struct SCIC_SDS_REMOTE_DEVICE *target_device; 159230557Sjimharris 160230557Sjimharris /** 161230557Sjimharris * This field is utilized to determine if the SCI user is managing 162230557Sjimharris * the IO tag for this request or if the core is managing it. 163230557Sjimharris */ 164230557Sjimharris BOOL was_tag_assigned_by_user; 165230557Sjimharris 166230557Sjimharris /** 167230557Sjimharris * This field indicates the IO tag for this request. The IO tag is 168230557Sjimharris * comprised of the task_index and a sequence count. The sequence count 169230557Sjimharris * is utilized to help identify tasks from one life to another. 170230557Sjimharris */ 171230557Sjimharris U16 io_tag; 172230557Sjimharris 173230557Sjimharris /** 174230557Sjimharris * This field specifies the sat protocol being utilized for this 175230557Sjimharris * IO request, such as SAT_PROTOCOL_PIO_DATA_IN, SAT_PROTOCOL_FPDMA etc. 176230557Sjimharris */ 177230557Sjimharris U8 sat_protocol; 178230557Sjimharris 179230557Sjimharris /** 180230557Sjimharris * This field specifies the protocol being utilized for this 181230557Sjimharris * IO request. 182230557Sjimharris */ 183230557Sjimharris SCIC_TRANSPORT_PROTOCOL protocol; 184230557Sjimharris 185230557Sjimharris /** 186230557Sjimharris * This field indicates the completion status taken from the SCUs 187230557Sjimharris * completion code. It indicates the completion result for the SCU hardware. 188230557Sjimharris */ 189230557Sjimharris U32 scu_status; 190230557Sjimharris 191230557Sjimharris /** 192230557Sjimharris * This field indicates the completion status returned to the SCI user. It 193230557Sjimharris * indicates the users view of the io request completion. 194230557Sjimharris */ 195230557Sjimharris U32 sci_status; 196230557Sjimharris 197230557Sjimharris /** 198230557Sjimharris * This field contains the value to be utilized when posting (e.g. Post_TC, 199230557Sjimharris * Post_TC_Abort) this request to the silicon. 200230557Sjimharris */ 201230557Sjimharris U32 post_context; 202230557Sjimharris 203230557Sjimharris void *command_buffer; 204230557Sjimharris void *response_buffer; 205230557Sjimharris SCU_TASK_CONTEXT_T *task_context_buffer; 206230557Sjimharris SCU_SGL_ELEMENT_PAIR_T *sgl_element_pair_buffer; 207230557Sjimharris 208230557Sjimharris /** 209230557Sjimharris * This field indicates if this request is a task management request or 210230557Sjimharris * normal IO request. 211230557Sjimharris */ 212230557Sjimharris BOOL is_task_management_request; 213230557Sjimharris 214230557Sjimharris /** 215230557Sjimharris * This field indicates that this request contains an initialized started 216230557Sjimharris * substate machine. 217230557Sjimharris */ 218230557Sjimharris BOOL has_started_substate_machine; 219230557Sjimharris 220230557Sjimharris /** 221230557Sjimharris * This field is a pointer to the stored rx frame data. It is used in STP 222230557Sjimharris * internal requests and SMP response frames. If this field is non-NULL the 223230557Sjimharris * saved frame must be released on IO request completion. 224230557Sjimharris * 225230557Sjimharris * @todo In the future do we want to keep a list of RX frame buffers? 226230557Sjimharris */ 227230557Sjimharris U32 saved_rx_frame_index; 228230557Sjimharris 229230557Sjimharris /** 230230557Sjimharris * This field specifies the data necessary to manage the sub-state 231230557Sjimharris * machine executed while in the SCI_BASE_REQUEST_STATE_STARTED state. 232230557Sjimharris */ 233230557Sjimharris SCI_BASE_STATE_MACHINE_T started_substate_machine; 234230557Sjimharris 235230557Sjimharris /** 236230557Sjimharris * This field specifies the current state handlers in place for this 237230557Sjimharris * IO Request object. This field is updated each time the request 238230557Sjimharris * changes state. 239230557Sjimharris */ 240230557Sjimharris struct SCIC_SDS_IO_REQUEST_STATE_HANDLER *state_handlers; 241230557Sjimharris 242230557Sjimharris #ifdef SCI_LOGGING 243230557Sjimharris /** 244230557Sjimharris * This field is the observer of the started subsate machine 245230557Sjimharris */ 246230557Sjimharris SCI_BASE_STATE_MACHINE_LOGGER_T started_substate_machine_logger; 247230557Sjimharris #endif 248230557Sjimharris 249230557Sjimharris /** 250230557Sjimharris * This field in the recorded device sequence for the io request. This is 251230557Sjimharris * recorded during the build operation and is compared in the start 252230557Sjimharris * operation. If the sequence is different then there was a change of 253230557Sjimharris * devices from the build to start operations. 254230557Sjimharris */ 255230557Sjimharris U8 device_sequence; 256230557Sjimharris 257230557Sjimharris} SCIC_SDS_REQUEST_T; 258230557Sjimharris 259230557Sjimharris 260230557Sjimharristypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_FRAME_HANDLER_T)( 261230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 262230557Sjimharris U32 frame_index); 263230557Sjimharris 264230557Sjimharristypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_EVENT_HANDLER_T)( 265230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 266230557Sjimharris U32 event_code); 267230557Sjimharris 268230557Sjimharristypedef SCI_STATUS (*SCIC_SDS_IO_REQUEST_TASK_COMPLETION_HANDLER_T)( 269230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 270230557Sjimharris U32 completion_code); 271230557Sjimharris 272230557Sjimharris/** 273230557Sjimharris * @struct SCIC_SDS_IO_REQUEST_STATE_HANDLER 274230557Sjimharris * 275230557Sjimharris * @brief This is the SDS core definition of the state handlers. 276230557Sjimharris */ 277230557Sjimharristypedef struct SCIC_SDS_IO_REQUEST_STATE_HANDLER 278230557Sjimharris{ 279230557Sjimharris SCI_BASE_REQUEST_STATE_HANDLER_T parent; 280230557Sjimharris 281230557Sjimharris SCIC_SDS_IO_REQUEST_TASK_COMPLETION_HANDLER_T tc_completion_handler; 282230557Sjimharris SCIC_SDS_IO_REQUEST_EVENT_HANDLER_T event_handler; 283230557Sjimharris SCIC_SDS_IO_REQUEST_FRAME_HANDLER_T frame_handler; 284230557Sjimharris 285230557Sjimharris} SCIC_SDS_IO_REQUEST_STATE_HANDLER_T; 286230557Sjimharris 287230557Sjimharrisextern SCI_BASE_STATE_T scic_sds_request_state_table[]; 288230557Sjimharrisextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 289230557Sjimharris scic_sds_request_state_handler_table[]; 290230557Sjimharris 291230557Sjimharrisextern SCI_BASE_STATE_T scic_sds_io_request_started_task_mgmt_substate_table[]; 292230557Sjimharrisextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 293230557Sjimharris scic_sds_ssp_task_request_started_substate_handler_table[]; 294230557Sjimharris 295230557Sjimharrisextern SCI_BASE_STATE_T scic_sds_smp_request_started_substate_table[]; 296230557Sjimharrisextern SCIC_SDS_IO_REQUEST_STATE_HANDLER_T 297230557Sjimharris scic_sds_smp_request_started_substate_handler_table[]; 298230557Sjimharris 299230557Sjimharris/** 300230557Sjimharris * This macro returns the maximum number of SGL element paris that we will 301230557Sjimharris * support in a single IO request. 302230557Sjimharris */ 303230557Sjimharris#define SCU_MAX_SGL_ELEMENT_PAIRS ((SCU_IO_REQUEST_SGE_COUNT + 1) / 2) 304230557Sjimharris 305230557Sjimharris/** 306230557Sjimharris * This macro will return the controller for this io request object 307230557Sjimharris */ 308230557Sjimharris#define scic_sds_request_get_controller(this_request) \ 309230557Sjimharris ((this_request)->owning_controller) 310230557Sjimharris 311230557Sjimharris/** 312230557Sjimharris * This macro will return the device for this io request object 313230557Sjimharris */ 314230557Sjimharris#define scic_sds_request_get_device(this_request) \ 315230557Sjimharris ((this_request)->target_device) 316230557Sjimharris 317230557Sjimharris/** 318230557Sjimharris * This macro will return the port for this io request object 319230557Sjimharris */ 320230557Sjimharris#define scic_sds_request_get_port(this_request) \ 321230557Sjimharris scic_sds_remote_device_get_port(scic_sds_request_get_device(this_request)) 322230557Sjimharris 323230557Sjimharris/** 324230557Sjimharris * This macro returns the constructed post context result for the io 325230557Sjimharris * request. 326230557Sjimharris */ 327230557Sjimharris#define scic_sds_request_get_post_context(this_request) \ 328230557Sjimharris ((this_request)->post_context) 329230557Sjimharris 330230557Sjimharris/** 331230557Sjimharris * This is a helper macro to return the os handle for this request object. 332230557Sjimharris */ 333230557Sjimharris#define scic_sds_request_get_task_context(request) \ 334230557Sjimharris ((request)->task_context_buffer) 335230557Sjimharris 336230557Sjimharris#define scic_sds_request_align_task_context_buffer(address) \ 337230557Sjimharris ((SCU_TASK_CONTEXT_T *)( \ 338230557Sjimharris (((POINTER_UINT)(address)) + (CACHE_LINE_SIZE - 1)) \ 339230557Sjimharris & ~(CACHE_LINE_SIZE - 1) \ 340230557Sjimharris )) 341230557Sjimharris 342230557Sjimharris/** 343230557Sjimharris * This macro will align the memory address so that it is correct for the SCU 344230557Sjimharris * hardware to DMA the SGL element pairs. 345230557Sjimharris */ 346230557Sjimharris#define scic_sds_request_align_sgl_element_buffer(address) \ 347230557Sjimharris ((SCU_SGL_ELEMENT_PAIR_T *)( \ 348230557Sjimharris ((char *)(address)) \ 349230557Sjimharris + ( \ 350230557Sjimharris ((~(POINTER_UINT)(address)) + 1) \ 351230557Sjimharris & (sizeof(SCU_SGL_ELEMENT_PAIR_T) - 1) \ 352230557Sjimharris ) \ 353230557Sjimharris )) 354230557Sjimharris 355230557Sjimharris/** 356230557Sjimharris * This macro will set the scu hardware status and sci request completion 357230557Sjimharris * status for an io request. 358230557Sjimharris */ 359230557Sjimharris#define scic_sds_request_set_status(request, scu_status_code, sci_status_code) \ 360230557Sjimharris{ \ 361230557Sjimharris (request)->scu_status = (scu_status_code); \ 362230557Sjimharris (request)->sci_status = (sci_status_code); \ 363230557Sjimharris} 364230557Sjimharris 365230557Sjimharris#define scic_sds_request_complete(a_request) \ 366230557Sjimharris ((a_request)->state_handlers->parent.complete_handler(&(a_request)->parent)) 367230557Sjimharris 368230557SjimharrisU32 scic_sds_request_get_min_timer_count(void); 369230557Sjimharris 370230557SjimharrisU32 scic_sds_request_get_max_timer_count(void); 371230557Sjimharris 372230557Sjimharris 373230557Sjimharris/** 374230557Sjimharris * This macro invokes the core state task completion handler for the 375230557Sjimharris * SCIC_SDS_IO_REQUEST_T object. 376230557Sjimharris */ 377230557Sjimharris#define scic_sds_io_request_tc_completion(this_request, completion_code) \ 378230557Sjimharris{ \ 379230557Sjimharris if (this_request->parent.state_machine.current_state_id \ 380230557Sjimharris == SCI_BASE_REQUEST_STATE_STARTED \ 381230557Sjimharris && this_request->has_started_substate_machine \ 382230557Sjimharris == FALSE) \ 383230557Sjimharris scic_sds_request_started_state_tc_completion_handler(this_request, completion_code); \ 384230557Sjimharris else \ 385230557Sjimharris this_request->state_handlers->tc_completion_handler(this_request, completion_code); \ 386230557Sjimharris} 387230557Sjimharris 388230557Sjimharris/** 389230557Sjimharris * This macro zeros the hardware SGL element data 390230557Sjimharris */ 391230557Sjimharris#define SCU_SGL_ZERO(scu_sge) \ 392230557Sjimharris{ \ 393230557Sjimharris (scu_sge).length = 0; \ 394230557Sjimharris (scu_sge).address_lower = 0; \ 395230557Sjimharris (scu_sge).address_upper = 0; \ 396230557Sjimharris (scu_sge).address_modifier = 0; \ 397230557Sjimharris} 398230557Sjimharris 399230557Sjimharris/** 400230557Sjimharris * This macro copys the SGL Element data from the host os to the hardware SGL 401230557Sjimharris * elment data 402230557Sjimharris */ 403230557Sjimharris#define SCU_SGL_COPY(os_handle, scu_sge, os_sge) \ 404230557Sjimharris{ \ 405230557Sjimharris (scu_sge).length = \ 406230557Sjimharris scic_cb_sge_get_length_field(os_handle, os_sge); \ 407230557Sjimharris (scu_sge).address_upper = \ 408230557Sjimharris sci_cb_physical_address_upper(scic_cb_sge_get_address_field(os_handle, os_sge)); \ 409230557Sjimharris (scu_sge).address_lower = \ 410230557Sjimharris sci_cb_physical_address_lower(scic_cb_sge_get_address_field(os_handle, os_sge)); \ 411230557Sjimharris (scu_sge).address_modifier = 0; \ 412230557Sjimharris} 413230557Sjimharris 414230557Sjimharris//***************************************************************************** 415230557Sjimharris//* CORE REQUEST PROTOTYPES 416230557Sjimharris//***************************************************************************** 417230557Sjimharris 418230557SjimharrisSCU_SGL_ELEMENT_PAIR_T *scic_sds_request_get_sgl_element_pair( 419230557Sjimharris SCIC_SDS_REQUEST_T *this_request, 420230557Sjimharris U32 sgl_pair_index 421230557Sjimharris); 422230557Sjimharris 423230557Sjimharrisvoid scic_sds_request_build_sgl( 424230557Sjimharris SCIC_SDS_REQUEST_T *this_request 425230557Sjimharris); 426230557Sjimharris 427230557Sjimharrisvoid scic_sds_ssp_io_request_assign_buffers( 428230557Sjimharris SCIC_SDS_REQUEST_T *this_request 429230557Sjimharris); 430230557Sjimharris 431230557Sjimharrisvoid scic_sds_ssp_task_request_assign_buffers( 432230557Sjimharris SCIC_SDS_REQUEST_T *this_request 433230557Sjimharris); 434230557Sjimharris 435230557Sjimharrisvoid scic_sds_stp_request_assign_buffers( 436230557Sjimharris SCIC_SDS_REQUEST_T * this_request 437230557Sjimharris); 438230557Sjimharris 439230557Sjimharrisvoid scic_sds_smp_request_assign_buffers( 440230557Sjimharris SCIC_SDS_REQUEST_T * this_request 441230557Sjimharris); 442230557Sjimharris 443230557Sjimharris// --------------------------------------------------------------------------- 444230557Sjimharris 445230557SjimharrisSCI_STATUS scic_sds_request_start( 446230557Sjimharris SCIC_SDS_REQUEST_T *this_request 447230557Sjimharris); 448230557Sjimharris 449230557SjimharrisSCI_STATUS scic_sds_io_request_terminate( 450230557Sjimharris SCIC_SDS_REQUEST_T *this_request 451230557Sjimharris); 452230557Sjimharris 453230557SjimharrisSCI_STATUS scic_sds_io_request_complete( 454230557Sjimharris SCIC_SDS_REQUEST_T *this_request 455230557Sjimharris); 456230557Sjimharris 457230557Sjimharrisvoid scic_sds_io_request_copy_response( 458230557Sjimharris SCIC_SDS_REQUEST_T *this_request 459230557Sjimharris); 460230557Sjimharris 461230557SjimharrisSCI_STATUS scic_sds_io_request_event_handler( 462230557Sjimharris SCIC_SDS_REQUEST_T *this_request, 463230557Sjimharris U32 event_code 464230557Sjimharris); 465230557Sjimharris 466230557SjimharrisSCI_STATUS scic_sds_io_request_frame_handler( 467230557Sjimharris SCIC_SDS_REQUEST_T *this_request, 468230557Sjimharris U32 frame_index 469230557Sjimharris); 470230557Sjimharris 471230557SjimharrisSCI_STATUS scic_sds_task_request_complete( 472230557Sjimharris SCIC_SDS_REQUEST_T *this_request 473230557Sjimharris); 474230557Sjimharris 475230557SjimharrisSCI_STATUS scic_sds_task_request_terminate( 476230557Sjimharris SCIC_SDS_REQUEST_T *this_request 477230557Sjimharris); 478230557Sjimharris 479230557Sjimharris#ifdef SCI_LOGGING 480230557Sjimharrisvoid scic_sds_request_initialize_state_logging( 481230557Sjimharris SCIC_SDS_REQUEST_T *this_request 482230557Sjimharris); 483230557Sjimharris 484230557Sjimharrisvoid scic_sds_request_deinitialize_state_logging( 485230557Sjimharris SCIC_SDS_REQUEST_T *this_request 486230557Sjimharris); 487230557Sjimharris#else // SCI_LOGGING 488230557Sjimharris#define scic_sds_request_initialize_state_logging(x) 489230557Sjimharris#define scic_sds_request_deinitialize_state_logging(x) 490230557Sjimharris#endif // SCI_LOGGING 491230557Sjimharris 492230557Sjimharris//***************************************************************************** 493230557Sjimharris//* DEFAULT STATE HANDLERS 494230557Sjimharris//***************************************************************************** 495230557Sjimharris 496230557SjimharrisSCI_STATUS scic_sds_request_default_start_handler( 497230557Sjimharris SCI_BASE_REQUEST_T *this_request 498230557Sjimharris); 499230557Sjimharris 500230557SjimharrisSCI_STATUS scic_sds_request_default_abort_handler( 501230557Sjimharris SCI_BASE_REQUEST_T *this_request 502230557Sjimharris); 503230557Sjimharris 504230557SjimharrisSCI_STATUS scic_sds_request_default_complete_handler( 505230557Sjimharris SCI_BASE_REQUEST_T *this_request 506230557Sjimharris); 507230557Sjimharris 508230557SjimharrisSCI_STATUS scic_sds_request_default_destruct_handler( 509230557Sjimharris SCI_BASE_REQUEST_T *this_request 510230557Sjimharris); 511230557Sjimharris 512230557SjimharrisSCI_STATUS scic_sds_request_default_tc_completion_handler( 513230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 514230557Sjimharris U32 completion_code 515230557Sjimharris); 516230557Sjimharris 517230557SjimharrisSCI_STATUS scic_sds_request_default_event_handler( 518230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 519230557Sjimharris U32 event_code 520230557Sjimharris); 521230557Sjimharris 522230557SjimharrisSCI_STATUS scic_sds_request_default_frame_handler( 523230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 524230557Sjimharris U32 frame_index 525230557Sjimharris); 526230557Sjimharris 527230557Sjimharris//***************************************************************************** 528230557Sjimharris//* STARTED STATE HANDLERS 529230557Sjimharris//***************************************************************************** 530230557Sjimharris 531230557SjimharrisSCI_STATUS scic_sds_request_started_state_abort_handler( 532230557Sjimharris SCI_BASE_REQUEST_T *this_request 533230557Sjimharris); 534230557Sjimharris 535230557SjimharrisSCI_STATUS scic_sds_request_started_state_tc_completion_handler( 536230557Sjimharris SCIC_SDS_REQUEST_T * this_request, 537230557Sjimharris U32 completion_code 538230557Sjimharris); 539230557Sjimharris 540230557Sjimharris#ifdef __cplusplus 541230557Sjimharris} 542230557Sjimharris#endif // __cplusplus 543230557Sjimharris 544230557Sjimharris#endif // _SCIC_SDS_IO_REQUEST_H_ 545