aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_iocb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_iocb.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_iocb.c92
1 files changed, 3 insertions, 89 deletions
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index f0edb07f3198..a1ab25fca874 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -325,7 +325,6 @@ qla2x00_start_scsi(srb_t *sp)
325 struct qla_hw_data *ha; 325 struct qla_hw_data *ha;
326 struct req_que *req; 326 struct req_que *req;
327 struct rsp_que *rsp; 327 struct rsp_que *rsp;
328 char tag[2];
329 328
330 /* Setup device pointers. */ 329 /* Setup device pointers. */
331 ret = 0; 330 ret = 0;
@@ -404,26 +403,7 @@ qla2x00_start_scsi(srb_t *sp)
404 /* Set target ID and LUN number*/ 403 /* Set target ID and LUN number*/
405 SET_TARGET_ID(ha, cmd_pkt->target, sp->fcport->loop_id); 404 SET_TARGET_ID(ha, cmd_pkt->target, sp->fcport->loop_id);
406 cmd_pkt->lun = cpu_to_le16(cmd->device->lun); 405 cmd_pkt->lun = cpu_to_le16(cmd->device->lun);
407 406 cmd_pkt->control_flags = __constant_cpu_to_le16(CF_SIMPLE_TAG);
408 /* Update tagged queuing modifier */
409 if (scsi_populate_tag_msg(cmd, tag)) {
410 switch (tag[0]) {
411 case HEAD_OF_QUEUE_TAG:
412 cmd_pkt->control_flags =
413 __constant_cpu_to_le16(CF_HEAD_TAG);
414 break;
415 case ORDERED_QUEUE_TAG:
416 cmd_pkt->control_flags =
417 __constant_cpu_to_le16(CF_ORDERED_TAG);
418 break;
419 default:
420 cmd_pkt->control_flags =
421 __constant_cpu_to_le16(CF_SIMPLE_TAG);
422 break;
423 }
424 } else {
425 cmd_pkt->control_flags = __constant_cpu_to_le16(CF_SIMPLE_TAG);
426 }
427 407
428 /* Load SCSI command packet. */ 408 /* Load SCSI command packet. */
429 memcpy(cmd_pkt->scsi_cdb, cmd->cmnd, cmd->cmd_len); 409 memcpy(cmd_pkt->scsi_cdb, cmd->cmnd, cmd->cmd_len);
@@ -1264,7 +1244,6 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt,
1264 uint16_t fcp_cmnd_len; 1244 uint16_t fcp_cmnd_len;
1265 struct fcp_cmnd *fcp_cmnd; 1245 struct fcp_cmnd *fcp_cmnd;
1266 dma_addr_t crc_ctx_dma; 1246 dma_addr_t crc_ctx_dma;
1267 char tag[2];
1268 1247
1269 cmd = GET_CMD_SP(sp); 1248 cmd = GET_CMD_SP(sp);
1270 1249
@@ -1356,25 +1335,7 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt,
1356 cmd_pkt->fcp_cmnd_dseg_address[1] = cpu_to_le32( 1335 cmd_pkt->fcp_cmnd_dseg_address[1] = cpu_to_le32(
1357 MSD(crc_ctx_dma + CRC_CONTEXT_FCPCMND_OFF)); 1336 MSD(crc_ctx_dma + CRC_CONTEXT_FCPCMND_OFF));
1358 fcp_cmnd->task_management = 0; 1337 fcp_cmnd->task_management = 0;
1359 1338 fcp_cmnd->task_attribute = TSK_SIMPLE;
1360 /*
1361 * Update tagged queuing modifier if using command tag queuing
1362 */
1363 if (scsi_populate_tag_msg(cmd, tag)) {
1364 switch (tag[0]) {
1365 case HEAD_OF_QUEUE_TAG:
1366 fcp_cmnd->task_attribute = TSK_HEAD_OF_QUEUE;
1367 break;
1368 case ORDERED_QUEUE_TAG:
1369 fcp_cmnd->task_attribute = TSK_ORDERED;
1370 break;
1371 default:
1372 fcp_cmnd->task_attribute = TSK_SIMPLE;
1373 break;
1374 }
1375 } else {
1376 fcp_cmnd->task_attribute = TSK_SIMPLE;
1377 }
1378 1339
1379 cmd_pkt->fcp_rsp_dseg_len = 0; /* Let response come in status iocb */ 1340 cmd_pkt->fcp_rsp_dseg_len = 0; /* Let response come in status iocb */
1380 1341
@@ -1495,7 +1456,6 @@ qla24xx_start_scsi(srb_t *sp)
1495 struct scsi_cmnd *cmd = GET_CMD_SP(sp); 1456 struct scsi_cmnd *cmd = GET_CMD_SP(sp);
1496 struct scsi_qla_host *vha = sp->fcport->vha; 1457 struct scsi_qla_host *vha = sp->fcport->vha;
1497 struct qla_hw_data *ha = vha->hw; 1458 struct qla_hw_data *ha = vha->hw;
1498 char tag[2];
1499 1459
1500 /* Setup device pointers. */ 1460 /* Setup device pointers. */
1501 ret = 0; 1461 ret = 0;
@@ -1578,22 +1538,7 @@ qla24xx_start_scsi(srb_t *sp)
1578 int_to_scsilun(cmd->device->lun, &cmd_pkt->lun); 1538 int_to_scsilun(cmd->device->lun, &cmd_pkt->lun);
1579 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun, sizeof(cmd_pkt->lun)); 1539 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun, sizeof(cmd_pkt->lun));
1580 1540
1581 /* Update tagged queuing modifier -- default is TSK_SIMPLE (0). */ 1541 cmd_pkt->task = TSK_SIMPLE;
1582 if (scsi_populate_tag_msg(cmd, tag)) {
1583 switch (tag[0]) {
1584 case HEAD_OF_QUEUE_TAG:
1585 cmd_pkt->task = TSK_HEAD_OF_QUEUE;
1586 break;
1587 case ORDERED_QUEUE_TAG:
1588 cmd_pkt->task = TSK_ORDERED;
1589 break;
1590 default:
1591 cmd_pkt->task = TSK_SIMPLE;
1592 break;
1593 }
1594 } else {
1595 cmd_pkt->task = TSK_SIMPLE;
1596 }
1597 1542
1598 /* Load SCSI command packet. */ 1543 /* Load SCSI command packet. */
1599 memcpy(cmd_pkt->fcp_cdb, cmd->cmnd, cmd->cmd_len); 1544 memcpy(cmd_pkt->fcp_cdb, cmd->cmnd, cmd->cmd_len);
@@ -2310,7 +2255,6 @@ qla82xx_start_scsi(srb_t *sp)
2310 struct qla_hw_data *ha = vha->hw; 2255 struct qla_hw_data *ha = vha->hw;
2311 struct req_que *req = NULL; 2256 struct req_que *req = NULL;
2312 struct rsp_que *rsp = NULL; 2257 struct rsp_que *rsp = NULL;
2313 char tag[2];
2314 2258
2315 /* Setup device pointers. */ 2259 /* Setup device pointers. */
2316 ret = 0; 2260 ret = 0;
@@ -2489,22 +2433,6 @@ sufficient_dsds:
2489 else if (cmd->sc_data_direction == DMA_FROM_DEVICE) 2433 else if (cmd->sc_data_direction == DMA_FROM_DEVICE)
2490 ctx->fcp_cmnd->additional_cdb_len |= 2; 2434 ctx->fcp_cmnd->additional_cdb_len |= 2;
2491 2435
2492 /*
2493 * Update tagged queuing modifier -- default is TSK_SIMPLE (0).
2494 */
2495 if (scsi_populate_tag_msg(cmd, tag)) {
2496 switch (tag[0]) {
2497 case HEAD_OF_QUEUE_TAG:
2498 ctx->fcp_cmnd->task_attribute =
2499 TSK_HEAD_OF_QUEUE;
2500 break;
2501 case ORDERED_QUEUE_TAG:
2502 ctx->fcp_cmnd->task_attribute =
2503 TSK_ORDERED;
2504 break;
2505 }
2506 }
2507
2508 /* Populate the FCP_PRIO. */ 2436 /* Populate the FCP_PRIO. */
2509 if (ha->flags.fcp_prio_enabled) 2437 if (ha->flags.fcp_prio_enabled)
2510 ctx->fcp_cmnd->task_attribute |= 2438 ctx->fcp_cmnd->task_attribute |=
@@ -2565,20 +2493,6 @@ sufficient_dsds:
2565 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun, 2493 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun,
2566 sizeof(cmd_pkt->lun)); 2494 sizeof(cmd_pkt->lun));
2567 2495
2568 /*
2569 * Update tagged queuing modifier -- default is TSK_SIMPLE (0).
2570 */
2571 if (scsi_populate_tag_msg(cmd, tag)) {
2572 switch (tag[0]) {
2573 case HEAD_OF_QUEUE_TAG:
2574 cmd_pkt->task = TSK_HEAD_OF_QUEUE;
2575 break;
2576 case ORDERED_QUEUE_TAG:
2577 cmd_pkt->task = TSK_ORDERED;
2578 break;
2579 }
2580 }
2581
2582 /* Populate the FCP_PRIO. */ 2496 /* Populate the FCP_PRIO. */
2583 if (ha->flags.fcp_prio_enabled) 2497 if (ha->flags.fcp_prio_enabled)
2584 cmd_pkt->task |= sp->fcport->fcp_prio << 3; 2498 cmd_pkt->task |= sp->fcport->fcp_prio << 3;