Browse Source

isci: unify request frame handlers

Unify the implementation in scic_sds_io_request_frame_handler and kill
the state handler.

Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams 14 years ago
parent
commit
d1c637c35b
3 changed files with 460 additions and 535 deletions
  1. 1 2
      drivers/scsi/isci/remote_device.c
  2. 459 527
      drivers/scsi/isci/request.c
  3. 0 6
      drivers/scsi/isci/request.h

+ 1 - 2
drivers/scsi/isci/remote_device.c

@@ -310,8 +310,7 @@ enum sci_status scic_sds_remote_device_frame_handler(struct scic_sds_remote_devi
 		sci_req = scic_request_by_tag(scic, be16_to_cpu(hdr.tag));
 		if (sci_req && sci_req->target_device == sci_dev) {
 			/* The IO request is now in charge of releasing the frame */
-			status = sci_req->state_handlers->frame_handler(sci_req,
-									frame_index);
+			status = scic_sds_io_request_frame_handler(sci_req, frame_index);
 		} else {
 			/* We could not map this tag to a valid IO
 			 * request Just toss the frame and continue

File diff suppressed because it is too large
+ 459 - 527
drivers/scsi/isci/request.c


+ 0 - 6
drivers/scsi/isci/request.h

@@ -424,8 +424,6 @@ enum sci_base_request_states {
 
 typedef enum sci_status (*scic_sds_io_request_handler_t)
 				(struct scic_sds_request *request);
-typedef enum sci_status (*scic_sds_io_request_frame_handler_t)
-				(struct scic_sds_request *req, u32 frame);
 typedef enum sci_status (*scic_sds_io_request_event_handler_t)
 				(struct scic_sds_request *req, u32 event);
 typedef enum sci_status (*scic_sds_io_request_task_completion_handler_t)
@@ -446,7 +444,6 @@ struct scic_sds_io_request_state_handler {
 
 	scic_sds_io_request_task_completion_handler_t tc_completion_handler;
 	scic_sds_io_request_event_handler_t event_handler;
-	scic_sds_io_request_frame_handler_t frame_handler;
 };
 
 /**
@@ -839,9 +836,6 @@ enum sci_status scic_task_request_construct(struct scic_sds_controller *scic,
 					    struct scic_sds_request *sci_req);
 enum sci_status scic_task_request_construct_ssp(struct scic_sds_request *sci_req);
 enum sci_status scic_task_request_construct_sata(struct scic_sds_request *sci_req);
-enum sci_status scic_sds_stp_udma_request_construct(struct scic_sds_request *sci_req,
-						    u32 transfer_length,
-						    enum dma_data_direction dir);
 void scic_stp_io_request_set_ncq_tag(struct scic_sds_request *sci_req, u16 ncq_tag);
 void scic_sds_smp_request_copy_response(struct scic_sds_request *sci_req);
 #endif /* !defined(_ISCI_REQUEST_H_) */

Some files were not shown because too many files changed in this diff