diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_iocb.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_iocb.c | 92 |
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; |