FreeBSD/sys/dev/isci/scil/scic_sds_remote_device.c
/**
 * This method will attempt to start a task request for this device object.
 * The remote device object will issue the start request for the task and if
 * successful it will start the request for the port object then increment its
 * own requet count.
 *
 * @param[in] device The SCI_BASE_REMOTE_DEVICE which is cast to a
 *       SCIC_SDS_REMOTE_DEVICE for which the request is to be started.
 * @param[in] request The SCI_BASE_REQUEST which is cast to a
 *       SCIC_SDS_IO_REQUEST that is to be started.
 *
 * @return SCI_STATUS
 * @retval SCI_SUCCESS if the task request is started for this device object.
 * @retval SCI_FAILURE_INSUFFICIENT_RESOURCES if the io request object could
 *         not get the resources to start.
 */
This method will attempt to start a task request for this device object.
The remote device object will issue the start request for the task and if
successful it will start the request for the port object then increment its
own requet count.

@param[in] device The SCI_BASE_REMOTE_DEVICE which is cast to a
SCIC_SDS_REMOTE_DEVICE for which the request is to be started.
@param[in] request The SCI_BASE_REQUEST which is cast to a
SCIC_SDS_IO_REQUEST that is to be started.

@return SCI_STATUS
@retval SCI_SUCCESS if the task request is started for this device object.
@retval SCI_FAILURE_INSUFFICIENT_RESOURCES if the io request object could
not get the resources to start.
This method will attempt to start a task request for this device object . The remote device object will issue the start request for the task and if successful it will start the request for the port object then increment its own requet count . @param [ in ] device The SCI_BASE_REMOTE_DEVICE which is cast to a SCIC_SDS_REMOTE_DEVICE for which the request is to be started . @param [ in ] request The SCI_BASE_REQUEST which is cast to a SCIC_SDS_IO_REQUEST that is to be started . @return SCI_STATUS @retval SCI_SUCCESS if the task request is started for this device object . @retval SCI_FAILURE_INSUFFICIENT_RESOURCES if the io request object could not get the resources to start .
static
SCI_STATUS scic_sds_remote_device_ready_state_start_task_handler(
   SCI_BASE_REMOTE_DEVICE_T *device,
   SCI_BASE_REQUEST_T       *request
)
{
   SCI_STATUS result;
   SCIC_SDS_REMOTE_DEVICE_T *this_device  = (SCIC_SDS_REMOTE_DEVICE_T *)device;
   SCIC_SDS_REQUEST_T       *task_request = (SCIC_SDS_REQUEST_T       *)request;
   result = scic_sds_port_start_io(
      scic_sds_remote_device_get_port(this_device), this_device, task_request);
   if (result == SCI_SUCCESS)
   {
      result = scic_sds_remote_node_context_start_task(
                  this_device->rnc, task_request
               );
      if (result == SCI_SUCCESS)
      {
         result = scic_sds_request_start(task_request);
      }
      scic_sds_remote_device_start_request(this_device, task_request, result);
   }
   return result;
}
static SCI_STATUS scic_sds_remote_device_ready_state_start_task_handler ( SCI_BASE_REMOTE_DEVICE_T * device , SCI_BASE_REQUEST_T * request ) { SCI_STATUS result ; SCIC_SDS_REMOTE_DEVICE_T * this_device = ( SCIC_SDS_REMOTE_DEVICE_T * ) device ; SCIC_SDS_REQUEST_T * task_request = ( SCIC_SDS_REQUEST_T * ) request ; result = scic_sds_port_start_io ( scic_sds_remote_device_get_port ( this_device ) , this_device , task_request ) ; if ( result == SCI_SUCCESS ) { result = scic_sds_remote_node_context_start_task ( this_device -> rnc , task_request ) ; if ( result == SCI_SUCCESS ) { result = scic_sds_request_start ( task_request ) ; } scic_sds_remote_device_start_request ( this_device , task_request , result ) ; } return result ; }
This method will attempt to start a task request for this device object.
This method will attempt to start a task request for this device object .
// See if the port is in a state where we can start the IO request