diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-06-30 19:31:37 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 07:04:52 -0400 |
commit | 78a6f06e0e82125787d7aa308fe28c2c8381540c (patch) | |
tree | 55ab54546aab6dbaccda4ff6d196d8995f453c83 /drivers/scsi/isci/request.c | |
parent | ffe191c92ff195d73f9130b1490045ca2dd4c5e0 (diff) |
isci: unify isci_remote_device and scic_sds_remote_device
Remove the distinction between these two implementations and unify on
isci_remote_device (local instances named idev).
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/request.c')
-rw-r--r-- | drivers/scsi/isci/request.c | 60 |
1 files changed, 28 insertions, 32 deletions
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c index 2d29abf3ce1f..90ead662828d 100644 --- a/drivers/scsi/isci/request.c +++ b/drivers/scsi/isci/request.c | |||
@@ -209,17 +209,17 @@ static void scu_ssp_reqeust_construct_task_context( | |||
209 | struct scu_task_context *task_context) | 209 | struct scu_task_context *task_context) |
210 | { | 210 | { |
211 | dma_addr_t dma_addr; | 211 | dma_addr_t dma_addr; |
212 | struct scic_sds_remote_device *target_device; | 212 | struct isci_remote_device *idev; |
213 | struct isci_port *iport; | 213 | struct isci_port *iport; |
214 | 214 | ||
215 | target_device = scic_sds_request_get_device(ireq); | 215 | idev = scic_sds_request_get_device(ireq); |
216 | iport = scic_sds_request_get_port(ireq); | 216 | iport = scic_sds_request_get_port(ireq); |
217 | 217 | ||
218 | /* Fill in the TC with the its required data */ | 218 | /* Fill in the TC with the its required data */ |
219 | task_context->abort = 0; | 219 | task_context->abort = 0; |
220 | task_context->priority = 0; | 220 | task_context->priority = 0; |
221 | task_context->initiator_request = 1; | 221 | task_context->initiator_request = 1; |
222 | task_context->connection_rate = target_device->connection_rate; | 222 | task_context->connection_rate = idev->connection_rate; |
223 | task_context->protocol_engine_index = | 223 | task_context->protocol_engine_index = |
224 | scic_sds_controller_get_protocol_engine_group(controller); | 224 | scic_sds_controller_get_protocol_engine_group(controller); |
225 | task_context->logical_port_index = scic_sds_port_get_index(iport); | 225 | task_context->logical_port_index = scic_sds_port_get_index(iport); |
@@ -227,8 +227,7 @@ static void scu_ssp_reqeust_construct_task_context( | |||
227 | task_context->valid = SCU_TASK_CONTEXT_VALID; | 227 | task_context->valid = SCU_TASK_CONTEXT_VALID; |
228 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; | 228 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; |
229 | 229 | ||
230 | task_context->remote_node_index = | 230 | task_context->remote_node_index = scic_sds_remote_device_get_index(idev); |
231 | scic_sds_remote_device_get_index(ireq->target_device); | ||
232 | task_context->command_code = 0; | 231 | task_context->command_code = 0; |
233 | 232 | ||
234 | task_context->link_layer_control = 0; | 233 | task_context->link_layer_control = 0; |
@@ -348,17 +347,17 @@ static void scu_sata_reqeust_construct_task_context( | |||
348 | struct scu_task_context *task_context) | 347 | struct scu_task_context *task_context) |
349 | { | 348 | { |
350 | dma_addr_t dma_addr; | 349 | dma_addr_t dma_addr; |
351 | struct scic_sds_remote_device *target_device; | 350 | struct isci_remote_device *idev; |
352 | struct isci_port *iport; | 351 | struct isci_port *iport; |
353 | 352 | ||
354 | target_device = scic_sds_request_get_device(ireq); | 353 | idev = scic_sds_request_get_device(ireq); |
355 | iport = scic_sds_request_get_port(ireq); | 354 | iport = scic_sds_request_get_port(ireq); |
356 | 355 | ||
357 | /* Fill in the TC with the its required data */ | 356 | /* Fill in the TC with the its required data */ |
358 | task_context->abort = 0; | 357 | task_context->abort = 0; |
359 | task_context->priority = SCU_TASK_PRIORITY_NORMAL; | 358 | task_context->priority = SCU_TASK_PRIORITY_NORMAL; |
360 | task_context->initiator_request = 1; | 359 | task_context->initiator_request = 1; |
361 | task_context->connection_rate = target_device->connection_rate; | 360 | task_context->connection_rate = idev->connection_rate; |
362 | task_context->protocol_engine_index = | 361 | task_context->protocol_engine_index = |
363 | scic_sds_controller_get_protocol_engine_group(controller); | 362 | scic_sds_controller_get_protocol_engine_group(controller); |
364 | task_context->logical_port_index = | 363 | task_context->logical_port_index = |
@@ -367,8 +366,7 @@ static void scu_sata_reqeust_construct_task_context( | |||
367 | task_context->valid = SCU_TASK_CONTEXT_VALID; | 366 | task_context->valid = SCU_TASK_CONTEXT_VALID; |
368 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; | 367 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; |
369 | 368 | ||
370 | task_context->remote_node_index = | 369 | task_context->remote_node_index = scic_sds_remote_device_get_index(idev); |
371 | scic_sds_remote_device_get_index(ireq->target_device); | ||
372 | task_context->command_code = 0; | 370 | task_context->command_code = 0; |
373 | 371 | ||
374 | task_context->link_layer_control = 0; | 372 | task_context->link_layer_control = 0; |
@@ -2850,7 +2848,7 @@ static void isci_request_io_request_complete(struct isci_host *isci_host, | |||
2850 | static void scic_sds_request_started_state_enter(struct sci_base_state_machine *sm) | 2848 | static void scic_sds_request_started_state_enter(struct sci_base_state_machine *sm) |
2851 | { | 2849 | { |
2852 | struct isci_request *ireq = container_of(sm, typeof(*ireq), sm); | 2850 | struct isci_request *ireq = container_of(sm, typeof(*ireq), sm); |
2853 | struct domain_device *dev = sci_dev_to_domain(ireq->target_device); | 2851 | struct domain_device *dev = ireq->target_device->domain_dev; |
2854 | struct sas_task *task; | 2852 | struct sas_task *task; |
2855 | 2853 | ||
2856 | /* XXX as hch said always creating an internal sas_task for tmf | 2854 | /* XXX as hch said always creating an internal sas_task for tmf |
@@ -2988,12 +2986,12 @@ static const struct sci_base_state scic_sds_request_state_table[] = { | |||
2988 | 2986 | ||
2989 | static void | 2987 | static void |
2990 | scic_sds_general_request_construct(struct scic_sds_controller *scic, | 2988 | scic_sds_general_request_construct(struct scic_sds_controller *scic, |
2991 | struct scic_sds_remote_device *sci_dev, | 2989 | struct isci_remote_device *idev, |
2992 | struct isci_request *ireq) | 2990 | struct isci_request *ireq) |
2993 | { | 2991 | { |
2994 | sci_init_sm(&ireq->sm, scic_sds_request_state_table, SCI_REQ_INIT); | 2992 | sci_init_sm(&ireq->sm, scic_sds_request_state_table, SCI_REQ_INIT); |
2995 | 2993 | ||
2996 | ireq->target_device = sci_dev; | 2994 | ireq->target_device = idev; |
2997 | ireq->protocol = SCIC_NO_PROTOCOL; | 2995 | ireq->protocol = SCIC_NO_PROTOCOL; |
2998 | ireq->saved_rx_frame_index = SCU_INVALID_FRAME_INDEX; | 2996 | ireq->saved_rx_frame_index = SCU_INVALID_FRAME_INDEX; |
2999 | 2997 | ||
@@ -3004,16 +3002,16 @@ scic_sds_general_request_construct(struct scic_sds_controller *scic, | |||
3004 | 3002 | ||
3005 | static enum sci_status | 3003 | static enum sci_status |
3006 | scic_io_request_construct(struct scic_sds_controller *scic, | 3004 | scic_io_request_construct(struct scic_sds_controller *scic, |
3007 | struct scic_sds_remote_device *sci_dev, | 3005 | struct isci_remote_device *idev, |
3008 | struct isci_request *ireq) | 3006 | struct isci_request *ireq) |
3009 | { | 3007 | { |
3010 | struct domain_device *dev = sci_dev_to_domain(sci_dev); | 3008 | struct domain_device *dev = idev->domain_dev; |
3011 | enum sci_status status = SCI_SUCCESS; | 3009 | enum sci_status status = SCI_SUCCESS; |
3012 | 3010 | ||
3013 | /* Build the common part of the request */ | 3011 | /* Build the common part of the request */ |
3014 | scic_sds_general_request_construct(scic, sci_dev, ireq); | 3012 | scic_sds_general_request_construct(scic, idev, ireq); |
3015 | 3013 | ||
3016 | if (sci_dev->rnc.remote_node_index == SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX) | 3014 | if (idev->rnc.remote_node_index == SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX) |
3017 | return SCI_FAILURE_INVALID_REMOTE_DEVICE; | 3015 | return SCI_FAILURE_INVALID_REMOTE_DEVICE; |
3018 | 3016 | ||
3019 | if (dev->dev_type == SAS_END_DEV) | 3017 | if (dev->dev_type == SAS_END_DEV) |
@@ -3031,14 +3029,14 @@ scic_io_request_construct(struct scic_sds_controller *scic, | |||
3031 | } | 3029 | } |
3032 | 3030 | ||
3033 | enum sci_status scic_task_request_construct(struct scic_sds_controller *scic, | 3031 | enum sci_status scic_task_request_construct(struct scic_sds_controller *scic, |
3034 | struct scic_sds_remote_device *sci_dev, | 3032 | struct isci_remote_device *idev, |
3035 | u16 io_tag, struct isci_request *ireq) | 3033 | u16 io_tag, struct isci_request *ireq) |
3036 | { | 3034 | { |
3037 | struct domain_device *dev = sci_dev_to_domain(sci_dev); | 3035 | struct domain_device *dev = idev->domain_dev; |
3038 | enum sci_status status = SCI_SUCCESS; | 3036 | enum sci_status status = SCI_SUCCESS; |
3039 | 3037 | ||
3040 | /* Build the common part of the request */ | 3038 | /* Build the common part of the request */ |
3041 | scic_sds_general_request_construct(scic, sci_dev, ireq); | 3039 | scic_sds_general_request_construct(scic, idev, ireq); |
3042 | 3040 | ||
3043 | if (dev->dev_type == SAS_END_DEV || | 3041 | if (dev->dev_type == SAS_END_DEV || |
3044 | dev->dev_type == SATA_DEV || (dev->tproto & SAS_PROTOCOL_STP)) { | 3042 | dev->dev_type == SATA_DEV || (dev->tproto & SAS_PROTOCOL_STP)) { |
@@ -3102,7 +3100,7 @@ scic_io_request_construct_smp(struct device *dev, | |||
3102 | struct sas_task *task) | 3100 | struct sas_task *task) |
3103 | { | 3101 | { |
3104 | struct scatterlist *sg = &task->smp_task.smp_req; | 3102 | struct scatterlist *sg = &task->smp_task.smp_req; |
3105 | struct scic_sds_remote_device *sci_dev; | 3103 | struct isci_remote_device *idev; |
3106 | struct scu_task_context *task_context; | 3104 | struct scu_task_context *task_context; |
3107 | struct isci_port *iport; | 3105 | struct isci_port *iport; |
3108 | struct smp_req *smp_req; | 3106 | struct smp_req *smp_req; |
@@ -3147,7 +3145,7 @@ scic_io_request_construct_smp(struct device *dev, | |||
3147 | 3145 | ||
3148 | task_context = ireq->tc; | 3146 | task_context = ireq->tc; |
3149 | 3147 | ||
3150 | sci_dev = scic_sds_request_get_device(ireq); | 3148 | idev = scic_sds_request_get_device(ireq); |
3151 | iport = scic_sds_request_get_port(ireq); | 3149 | iport = scic_sds_request_get_port(ireq); |
3152 | 3150 | ||
3153 | /* | 3151 | /* |
@@ -3156,7 +3154,7 @@ scic_io_request_construct_smp(struct device *dev, | |||
3156 | */ | 3154 | */ |
3157 | task_context->priority = 0; | 3155 | task_context->priority = 0; |
3158 | task_context->initiator_request = 1; | 3156 | task_context->initiator_request = 1; |
3159 | task_context->connection_rate = sci_dev->connection_rate; | 3157 | task_context->connection_rate = idev->connection_rate; |
3160 | task_context->protocol_engine_index = | 3158 | task_context->protocol_engine_index = |
3161 | scic_sds_controller_get_protocol_engine_group(scic); | 3159 | scic_sds_controller_get_protocol_engine_group(scic); |
3162 | task_context->logical_port_index = scic_sds_port_get_index(iport); | 3160 | task_context->logical_port_index = scic_sds_port_get_index(iport); |
@@ -3166,7 +3164,7 @@ scic_io_request_construct_smp(struct device *dev, | |||
3166 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; | 3164 | task_context->context_type = SCU_TASK_CONTEXT_TYPE; |
3167 | 3165 | ||
3168 | /* 04h */ | 3166 | /* 04h */ |
3169 | task_context->remote_node_index = sci_dev->rnc.remote_node_index; | 3167 | task_context->remote_node_index = idev->rnc.remote_node_index; |
3170 | task_context->command_code = 0; | 3168 | task_context->command_code = 0; |
3171 | task_context->task_type = SCU_TASK_TYPE_SMP_REQUEST; | 3169 | task_context->task_type = SCU_TASK_TYPE_SMP_REQUEST; |
3172 | 3170 | ||
@@ -3257,17 +3255,16 @@ static enum sci_status isci_smp_request_build(struct isci_request *ireq) | |||
3257 | */ | 3255 | */ |
3258 | static enum sci_status isci_io_request_build(struct isci_host *isci_host, | 3256 | static enum sci_status isci_io_request_build(struct isci_host *isci_host, |
3259 | struct isci_request *request, | 3257 | struct isci_request *request, |
3260 | struct isci_remote_device *isci_device) | 3258 | struct isci_remote_device *idev) |
3261 | { | 3259 | { |
3262 | enum sci_status status = SCI_SUCCESS; | 3260 | enum sci_status status = SCI_SUCCESS; |
3263 | struct sas_task *task = isci_request_access_task(request); | 3261 | struct sas_task *task = isci_request_access_task(request); |
3264 | struct scic_sds_remote_device *sci_device = &isci_device->sci; | ||
3265 | 3262 | ||
3266 | dev_dbg(&isci_host->pdev->dev, | 3263 | dev_dbg(&isci_host->pdev->dev, |
3267 | "%s: isci_device = 0x%p; request = %p, " | 3264 | "%s: idev = 0x%p; request = %p, " |
3268 | "num_scatter = %d\n", | 3265 | "num_scatter = %d\n", |
3269 | __func__, | 3266 | __func__, |
3270 | isci_device, | 3267 | idev, |
3271 | request, | 3268 | request, |
3272 | task->num_scatter); | 3269 | task->num_scatter); |
3273 | 3270 | ||
@@ -3290,8 +3287,7 @@ static enum sci_status isci_io_request_build(struct isci_host *isci_host, | |||
3290 | return SCI_FAILURE_INSUFFICIENT_RESOURCES; | 3287 | return SCI_FAILURE_INSUFFICIENT_RESOURCES; |
3291 | } | 3288 | } |
3292 | 3289 | ||
3293 | status = scic_io_request_construct(&isci_host->sci, sci_device, | 3290 | status = scic_io_request_construct(&isci_host->sci, idev, request); |
3294 | request); | ||
3295 | 3291 | ||
3296 | if (status != SCI_SUCCESS) { | 3292 | if (status != SCI_SUCCESS) { |
3297 | dev_warn(&isci_host->pdev->dev, | 3293 | dev_warn(&isci_host->pdev->dev, |
@@ -3397,14 +3393,14 @@ int isci_request_execute(struct isci_host *ihost, struct isci_remote_device *ide | |||
3397 | * ireq->is_task_management_request is false). | 3393 | * ireq->is_task_management_request is false). |
3398 | */ | 3394 | */ |
3399 | status = scic_controller_start_task(&ihost->sci, | 3395 | status = scic_controller_start_task(&ihost->sci, |
3400 | &idev->sci, | 3396 | idev, |
3401 | ireq); | 3397 | ireq); |
3402 | } else { | 3398 | } else { |
3403 | status = SCI_FAILURE; | 3399 | status = SCI_FAILURE; |
3404 | } | 3400 | } |
3405 | } else { | 3401 | } else { |
3406 | /* send the request, let the core assign the IO TAG. */ | 3402 | /* send the request, let the core assign the IO TAG. */ |
3407 | status = scic_controller_start_io(&ihost->sci, &idev->sci, | 3403 | status = scic_controller_start_io(&ihost->sci, idev, |
3408 | ireq); | 3404 | ireq); |
3409 | } | 3405 | } |
3410 | 3406 | ||