summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/core/scic_sds_stp_request.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/isci/core/scic_sds_stp_request.c')
-rw-r--r--drivers/scsi/isci/core/scic_sds_stp_request.c99
1 files changed, 48 insertions, 51 deletions
diff --git a/drivers/scsi/isci/core/scic_sds_stp_request.c b/drivers/scsi/isci/core/scic_sds_stp_request.c
index 10f160e..0a07207 100644
--- a/drivers/scsi/isci/core/scic_sds_stp_request.c
+++ b/drivers/scsi/isci/core/scic_sds_stp_request.c
@@ -175,17 +175,17 @@ void scic_sds_stp_request_assign_buffers(
* determine what is common for SSP/SMP/STP task context structures.
*/
static void scu_sata_reqeust_construct_task_context(
- struct scic_sds_request *this_request,
+ struct scic_sds_request *sds_request,
struct scu_task_context *task_context)
{
- dma_addr_t physical_address;
- struct scic_sds_controller *owning_controller;
+ dma_addr_t dma_addr;
+ struct scic_sds_controller *controller;
struct scic_sds_remote_device *target_device;
struct scic_sds_port *target_port;
- owning_controller = scic_sds_request_get_controller(this_request);
- target_device = scic_sds_request_get_device(this_request);
- target_port = scic_sds_request_get_port(this_request);
+ controller = scic_sds_request_get_controller(sds_request);
+ target_device = scic_sds_request_get_device(sds_request);
+ target_port = scic_sds_request_get_port(sds_request);
/* Fill in the TC with the its required data */
task_context->abort = 0;
@@ -194,7 +194,7 @@ static void scu_sata_reqeust_construct_task_context(
task_context->connection_rate =
scic_remote_device_get_connection_rate(target_device);
task_context->protocol_engine_index =
- scic_sds_controller_get_protocol_engine_group(owning_controller);
+ scic_sds_controller_get_protocol_engine_group(controller);
task_context->logical_port_index =
scic_sds_port_get_index(target_port);
task_context->protocol_type = SCU_TASK_CONTEXT_PROTOCOL_STP;
@@ -202,7 +202,7 @@ static void scu_sata_reqeust_construct_task_context(
task_context->context_type = SCU_TASK_CONTEXT_TYPE;
task_context->remote_node_index =
- scic_sds_remote_device_get_index(this_request->target_device);
+ scic_sds_remote_device_get_index(sds_request->target_device);
task_context->command_code = 0;
task_context->link_layer_control = 0;
@@ -219,53 +219,50 @@ static void scu_sata_reqeust_construct_task_context(
(sizeof(struct sata_fis_reg_h2d) - sizeof(u32)) / sizeof(u32);
/* Set the first word of the H2D REG FIS */
- task_context->type.words[0] = *(u32 *)this_request->command_buffer;
-
- if (this_request->was_tag_assigned_by_user) {
- /* Build the task context now since we have already read the data */
- this_request->post_context = (
- SCU_CONTEXT_COMMAND_REQUEST_TYPE_POST_TC
- | (
- scic_sds_controller_get_protocol_engine_group(owning_controller)
- << SCU_CONTEXT_COMMAND_PROTOCOL_ENGINE_GROUP_SHIFT
- )
- | (
- scic_sds_port_get_index(target_port)
- << SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT
- )
- | scic_sds_io_tag_get_index(this_request->io_tag)
- );
+ task_context->type.words[0] = *(u32 *)sds_request->command_buffer;
+
+ if (sds_request->was_tag_assigned_by_user) {
+ /*
+ * Build the task context now since we have already read
+ * the data
+ */
+ sds_request->post_context =
+ (SCU_CONTEXT_COMMAND_REQUEST_TYPE_POST_TC |
+ (scic_sds_controller_get_protocol_engine_group(
+ controller) <<
+ SCU_CONTEXT_COMMAND_PROTOCOL_ENGINE_GROUP_SHIFT) |
+ (scic_sds_port_get_index(target_port) <<
+ SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT) |
+ scic_sds_io_tag_get_index(sds_request->io_tag));
} else {
- /* Build the task context now since we have already read the data */
- this_request->post_context = (
- SCU_CONTEXT_COMMAND_REQUEST_TYPE_POST_TC
- | (
- scic_sds_controller_get_protocol_engine_group(owning_controller)
- << SCU_CONTEXT_COMMAND_PROTOCOL_ENGINE_GROUP_SHIFT
- )
- | (
- scic_sds_port_get_index(target_port)
- << SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT
- )
- /* This is not assigned because we have to wait until we get a TCi */
- );
+ /*
+ * Build the task context now since we have already read
+ * the data.
+ * I/O tag index is not assigned because we have to wait
+ * until we get a TCi.
+ */
+ sds_request->post_context =
+ (SCU_CONTEXT_COMMAND_REQUEST_TYPE_POST_TC |
+ (scic_sds_controller_get_protocol_engine_group(
+ controller) <<
+ SCU_CONTEXT_COMMAND_PROTOCOL_ENGINE_GROUP_SHIFT) |
+ (scic_sds_port_get_index(target_port) <<
+ SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT));
}
/*
- * Copy the physical address for the command buffer to the SCU Task Context
- * We must offset the command buffer by 4 bytes because the first 4 bytes are
- * transfered in the body of the TC */
- scic_cb_io_request_get_physical_address(
- scic_sds_request_get_controller(this_request),
- this_request,
- ((char *)this_request->command_buffer) + sizeof(u32),
- &physical_address
- );
-
- task_context->command_iu_upper =
- upper_32_bits(physical_address);
- task_context->command_iu_lower =
- lower_32_bits(physical_address);
+ * Copy the physical address for the command buffer to the SCU Task
+ * Context. We must offset the command buffer by 4 bytes because the
+ * first 4 bytes are transfered in the body of the TC.
+ */
+ dma_addr =
+ scic_io_request_get_dma_addr(sds_request,
+ (char *)sds_request->
+ command_buffer +
+ sizeof(u32));
+
+ task_context->command_iu_upper = upper_32_bits(dma_addr);
+ task_context->command_iu_lower = lower_32_bits(dma_addr);
/* SATA Requests do not have a response buffer */
task_context->response_iu_upper = 0;
OpenPOWER on IntegriCloud