[SCSI] isci: debug, provide state-enum-to-string conversions
Debugging the driver requires tracing the state transtions and tracing state names is less work than decoding numbers. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:

committed by
James Bottomley

parent
16d3db1b29
commit
d7a0ccdd9b
@@ -182,134 +182,103 @@ static inline struct isci_request *to_ireq(struct isci_stp_request *stp_req)
|
||||
}
|
||||
|
||||
/**
|
||||
* enum sci_base_request_states - This enumeration depicts all the states for
|
||||
* the common request state machine.
|
||||
* enum sci_base_request_states - request state machine states
|
||||
*
|
||||
* @SCI_REQ_INIT: Simply the initial state for the base request state machine.
|
||||
*
|
||||
* @SCI_REQ_CONSTRUCTED: This state indicates that the request has been
|
||||
* constructed. This state is entered from the INITIAL state.
|
||||
*
|
||||
* @SCI_REQ_STARTED: This state indicates that the request has been started.
|
||||
* This state is entered from the CONSTRUCTED state.
|
||||
*
|
||||
* @SCI_REQ_STP_UDMA_WAIT_TC_COMP:
|
||||
* @SCI_REQ_STP_UDMA_WAIT_D2H:
|
||||
* @SCI_REQ_STP_NON_DATA_WAIT_H2D:
|
||||
* @SCI_REQ_STP_NON_DATA_WAIT_D2H:
|
||||
*
|
||||
* @SCI_REQ_STP_PIO_WAIT_H2D: While in this state the IO request object is
|
||||
* waiting for the TC completion notification for the H2D Register FIS
|
||||
*
|
||||
* @SCI_REQ_STP_PIO_WAIT_FRAME: While in this state the IO request object is
|
||||
* waiting for either a PIO Setup FIS or a D2H register FIS. The type of frame
|
||||
* received is based on the result of the prior frame and line conditions.
|
||||
*
|
||||
* @SCI_REQ_STP_PIO_DATA_IN: While in this state the IO request object is
|
||||
* waiting for a DATA frame from the device.
|
||||
*
|
||||
* @SCI_REQ_STP_PIO_DATA_OUT: While in this state the IO request object is
|
||||
* waiting to transmit the next data frame to the device.
|
||||
*
|
||||
* @SCI_REQ_ATAPI_WAIT_H2D: While in this state the IO request object is
|
||||
* waiting for the TC completion notification for the H2D Register FIS
|
||||
*
|
||||
* @SCI_REQ_ATAPI_WAIT_PIO_SETUP: While in this state the IO request object is
|
||||
* waiting for either a PIO Setup.
|
||||
*
|
||||
* @SCI_REQ_ATAPI_WAIT_D2H: The non-data IO transit to this state in this state
|
||||
* after receiving TC completion. While in this state IO request object is
|
||||
* waiting for D2H status frame as UF.
|
||||
*
|
||||
* @SCI_REQ_ATAPI_WAIT_TC_COMP: When transmitting raw frames hardware reports
|
||||
* task context completion after every frame submission, so in the
|
||||
* non-accelerated case we need to expect the completion for the "cdb" frame.
|
||||
*
|
||||
* @SCI_REQ_TASK_WAIT_TC_COMP: The AWAIT_TC_COMPLETION sub-state indicates that
|
||||
* the started raw task management request is waiting for the transmission of
|
||||
* the initial frame (i.e. command, task, etc.).
|
||||
*
|
||||
* @SCI_REQ_TASK_WAIT_TC_RESP: This sub-state indicates that the started task
|
||||
* management request is waiting for the reception of an unsolicited frame
|
||||
* (i.e. response IU).
|
||||
*
|
||||
* @SCI_REQ_SMP_WAIT_RESP: This sub-state indicates that the started task
|
||||
* management request is waiting for the reception of an unsolicited frame
|
||||
* (i.e. response IU).
|
||||
*
|
||||
* @SCI_REQ_SMP_WAIT_TC_COMP: The AWAIT_TC_COMPLETION sub-state indicates that
|
||||
* the started SMP request is waiting for the transmission of the initial frame
|
||||
* (i.e. command, task, etc.).
|
||||
*
|
||||
* @SCI_REQ_COMPLETED: This state indicates that the request has completed.
|
||||
* This state is entered from the STARTED state. This state is entered from the
|
||||
* ABORTING state.
|
||||
*
|
||||
* @SCI_REQ_ABORTING: This state indicates that the request is in the process
|
||||
* of being terminated/aborted. This state is entered from the CONSTRUCTED
|
||||
* state. This state is entered from the STARTED state.
|
||||
*
|
||||
* @SCI_REQ_FINAL: Simply the final state for the base request state machine.
|
||||
*/
|
||||
enum sci_base_request_states {
|
||||
/*
|
||||
* Simply the initial state for the base request state machine.
|
||||
*/
|
||||
SCI_REQ_INIT,
|
||||
|
||||
/*
|
||||
* This state indicates that the request has been constructed.
|
||||
* This state is entered from the INITIAL state.
|
||||
*/
|
||||
SCI_REQ_CONSTRUCTED,
|
||||
|
||||
/*
|
||||
* This state indicates that the request has been started. This state
|
||||
* is entered from the CONSTRUCTED state.
|
||||
*/
|
||||
SCI_REQ_STARTED,
|
||||
|
||||
SCI_REQ_STP_UDMA_WAIT_TC_COMP,
|
||||
SCI_REQ_STP_UDMA_WAIT_D2H,
|
||||
|
||||
SCI_REQ_STP_NON_DATA_WAIT_H2D,
|
||||
SCI_REQ_STP_NON_DATA_WAIT_D2H,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting for the TC
|
||||
* completion notification for the H2D Register FIS
|
||||
*/
|
||||
SCI_REQ_STP_PIO_WAIT_H2D,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting for either a
|
||||
* PIO Setup FIS or a D2H register FIS. The type of frame received is
|
||||
* based on the result of the prior frame and line conditions.
|
||||
*/
|
||||
SCI_REQ_STP_PIO_WAIT_FRAME,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting for a DATA
|
||||
* frame from the device.
|
||||
*/
|
||||
SCI_REQ_STP_PIO_DATA_IN,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting to transmit
|
||||
* the next data frame to the device.
|
||||
*/
|
||||
SCI_REQ_STP_PIO_DATA_OUT,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting for the TC
|
||||
* completion notification for the H2D Register FIS
|
||||
*/
|
||||
SCI_REQ_ATAPI_WAIT_H2D,
|
||||
|
||||
/*
|
||||
* While in this state the IO request object is waiting for either a
|
||||
* PIO Setup.
|
||||
*/
|
||||
SCI_REQ_ATAPI_WAIT_PIO_SETUP,
|
||||
|
||||
/*
|
||||
* The non-data IO transit to this state in this state after receiving
|
||||
* TC completion. While in this state IO request object is waiting for
|
||||
* D2H status frame as UF.
|
||||
*/
|
||||
SCI_REQ_ATAPI_WAIT_D2H,
|
||||
|
||||
/*
|
||||
* When transmitting raw frames hardware reports task context completion
|
||||
* after every frame submission, so in the non-accelerated case we need
|
||||
* to expect the completion for the "cdb" frame.
|
||||
*/
|
||||
SCI_REQ_ATAPI_WAIT_TC_COMP,
|
||||
|
||||
/*
|
||||
* The AWAIT_TC_COMPLETION sub-state indicates that the started raw
|
||||
* task management request is waiting for the transmission of the
|
||||
* initial frame (i.e. command, task, etc.).
|
||||
*/
|
||||
SCI_REQ_TASK_WAIT_TC_COMP,
|
||||
|
||||
/*
|
||||
* This sub-state indicates that the started task management request
|
||||
* is waiting for the reception of an unsolicited frame
|
||||
* (i.e. response IU).
|
||||
*/
|
||||
SCI_REQ_TASK_WAIT_TC_RESP,
|
||||
|
||||
/*
|
||||
* This sub-state indicates that the started task management request
|
||||
* is waiting for the reception of an unsolicited frame
|
||||
* (i.e. response IU).
|
||||
*/
|
||||
SCI_REQ_SMP_WAIT_RESP,
|
||||
|
||||
/*
|
||||
* The AWAIT_TC_COMPLETION sub-state indicates that the started SMP
|
||||
* request is waiting for the transmission of the initial frame
|
||||
* (i.e. command, task, etc.).
|
||||
*/
|
||||
SCI_REQ_SMP_WAIT_TC_COMP,
|
||||
|
||||
/*
|
||||
* This state indicates that the request has completed.
|
||||
* This state is entered from the STARTED state. This state is entered
|
||||
* from the ABORTING state.
|
||||
*/
|
||||
SCI_REQ_COMPLETED,
|
||||
|
||||
/*
|
||||
* This state indicates that the request is in the process of being
|
||||
* terminated/aborted.
|
||||
* This state is entered from the CONSTRUCTED state.
|
||||
* This state is entered from the STARTED state.
|
||||
*/
|
||||
SCI_REQ_ABORTING,
|
||||
|
||||
/*
|
||||
* Simply the final state for the base request state machine.
|
||||
*/
|
||||
SCI_REQ_FINAL,
|
||||
};
|
||||
#define REQUEST_STATES {\
|
||||
C(REQ_INIT),\
|
||||
C(REQ_CONSTRUCTED),\
|
||||
C(REQ_STARTED),\
|
||||
C(REQ_STP_UDMA_WAIT_TC_COMP),\
|
||||
C(REQ_STP_UDMA_WAIT_D2H),\
|
||||
C(REQ_STP_NON_DATA_WAIT_H2D),\
|
||||
C(REQ_STP_NON_DATA_WAIT_D2H),\
|
||||
C(REQ_STP_PIO_WAIT_H2D),\
|
||||
C(REQ_STP_PIO_WAIT_FRAME),\
|
||||
C(REQ_STP_PIO_DATA_IN),\
|
||||
C(REQ_STP_PIO_DATA_OUT),\
|
||||
C(REQ_ATAPI_WAIT_H2D),\
|
||||
C(REQ_ATAPI_WAIT_PIO_SETUP),\
|
||||
C(REQ_ATAPI_WAIT_D2H),\
|
||||
C(REQ_ATAPI_WAIT_TC_COMP),\
|
||||
C(REQ_TASK_WAIT_TC_COMP),\
|
||||
C(REQ_TASK_WAIT_TC_RESP),\
|
||||
C(REQ_SMP_WAIT_RESP),\
|
||||
C(REQ_SMP_WAIT_TC_COMP),\
|
||||
C(REQ_COMPLETED),\
|
||||
C(REQ_ABORTING),\
|
||||
C(REQ_FINAL),\
|
||||
}
|
||||
#undef C
|
||||
#define C(a) SCI_##a
|
||||
enum sci_base_request_states REQUEST_STATES;
|
||||
#undef C
|
||||
const char *req_state_name(enum sci_base_request_states state);
|
||||
|
||||
enum sci_status sci_request_start(struct isci_request *ireq);
|
||||
enum sci_status sci_io_request_terminate(struct isci_request *ireq);
|
||||
|
Reference in New Issue
Block a user