FreeBSD/sys/dev/isci/scil/scic_sds_smp_request.c
/**
 * @brief This method processes the completions transport layer (TL) status
 *        to determine if the SMP request was sent successfully. If the SMP
 *        request was sent successfully, then the state for the SMP request
 *        transits to waiting for a response frame.
 *
 * @param[in] this_request This parameter specifies the request for which
 *            the TC completion was received.
 * @param[in] completion_code This parameter indicates the completion status
 *            information for the TC.
 *
 * @return Indicate if the tc completion handler was successful.
 * @retval SCI_SUCCESS currently this method always returns success.
 */
@brief This method processes the completions transport layer (TL) status
to determine if the SMP request was sent successfully. If the SMP
request was sent successfully, then the state for the SMP request
transits to waiting for a response frame.

@param[in] this_request This parameter specifies the request for which
the TC completion was received.
@param[in] completion_code This parameter indicates the completion status
information for the TC.

@return Indicate if the tc completion handler was successful.
@retval SCI_SUCCESS currently this method always returns success.
@brief This method processes the completions transport layer ( TL ) status to determine if the SMP request was sent successfully . If the SMP request was sent successfully then the state for the SMP request transits to waiting for a response frame . @param [ in ] this_request This parameter specifies the request for which the TC completion was received . @param [ in ] completion_code This parameter indicates the completion status information for the TC . @return Indicate if the tc completion handler was successful . @retval SCI_SUCCESS currently this method always returns success .
static
SCI_STATUS scic_sds_smp_request_await_tc_completion_tc_completion_handler(
   SCIC_SDS_REQUEST_T * this_request,
   U32                  completion_code
)
{
   SCIC_LOG_TRACE((
      sci_base_object_get_logger(this_request),
      SCIC_LOG_OBJECT_SMP_IO_REQUEST,
      "scic_sds_smp_request_await_tc_completion_tc_completion_handler(0x%x, 0x%x) enter\n",
      this_request, completion_code
   ));
   switch (SCU_GET_COMPLETION_TL_STATUS(completion_code))
   {
   case SCU_MAKE_COMPLETION_STATUS(SCU_TASK_DONE_GOOD):
      scic_sds_request_set_status(
         this_request, SCU_TASK_DONE_GOOD, SCI_SUCCESS
      );
      sci_base_state_machine_change_state(
         &this_request->parent.state_machine,
         SCI_BASE_REQUEST_STATE_COMPLETED
      );
   break;
   default:
      scic_sds_request_set_status(
         this_request,
         SCU_NORMALIZE_COMPLETION_STATUS(completion_code),
         SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR
      );
      sci_base_state_machine_change_state(
         &this_request->parent.state_machine,
         SCI_BASE_REQUEST_STATE_COMPLETED
      );
   break;
   }
   return SCI_SUCCESS;
}
static SCI_STATUS scic_sds_smp_request_await_tc_completion_tc_completion_handler ( SCIC_SDS_REQUEST_T * this_request , U32 completion_code ) { SCIC_LOG_TRACE ( ( sci_base_object_get_logger ( this_request ) , SCIC_LOG_OBJECT_SMP_IO_REQUEST , " \n " , this_request , completion_code ) ) ; switch ( SCU_GET_COMPLETION_TL_STATUS ( completion_code ) ) { case SCU_MAKE_COMPLETION_STATUS ( SCU_TASK_DONE_GOOD ) : scic_sds_request_set_status ( this_request , SCU_TASK_DONE_GOOD , SCI_SUCCESS ) ; sci_base_state_machine_change_state ( & this_request -> parent . state_machine , SCI_BASE_REQUEST_STATE_COMPLETED ) ; break ; default : scic_sds_request_set_status ( this_request , SCU_NORMALIZE_COMPLETION_STATUS ( completion_code ) , SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR ) ; sci_base_state_machine_change_state ( & this_request -> parent . state_machine , SCI_BASE_REQUEST_STATE_COMPLETED ) ; break ; } return SCI_SUCCESS ; }
@brief This method processes the completions transport layer (TL) status
        to determine if the SMP request was sent successfully.
@brief This method processes the completions transport layer ( TL ) status to determine if the SMP request was sent successfully .
// All other completion status cause the IO to be complete.  If a NAK // was received, then it is up to the user to retry the request.