diff options
Diffstat (limited to 'drivers/scsi/aic7xxx/aic79xx_osm.c')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index ed333669a7dc..d5c7b193d8d3 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -925,6 +925,7 @@ struct scsi_host_template aic79xx_driver_template = { | |||
925 | .slave_configure = ahd_linux_slave_configure, | 925 | .slave_configure = ahd_linux_slave_configure, |
926 | .target_alloc = ahd_linux_target_alloc, | 926 | .target_alloc = ahd_linux_target_alloc, |
927 | .target_destroy = ahd_linux_target_destroy, | 927 | .target_destroy = ahd_linux_target_destroy, |
928 | .use_blk_tags = 1, | ||
928 | }; | 929 | }; |
929 | 930 | ||
930 | /******************************** Bus DMA *************************************/ | 931 | /******************************** Bus DMA *************************************/ |
@@ -1468,12 +1469,9 @@ ahd_platform_set_tags(struct ahd_softc *ahd, struct scsi_device *sdev, | |||
1468 | 1469 | ||
1469 | switch ((dev->flags & (AHD_DEV_Q_BASIC|AHD_DEV_Q_TAGGED))) { | 1470 | switch ((dev->flags & (AHD_DEV_Q_BASIC|AHD_DEV_Q_TAGGED))) { |
1470 | case AHD_DEV_Q_BASIC: | 1471 | case AHD_DEV_Q_BASIC: |
1471 | scsi_set_tag_type(sdev, MSG_SIMPLE_TASK); | ||
1472 | scsi_activate_tcq(sdev, dev->openings + dev->active); | ||
1473 | break; | ||
1474 | case AHD_DEV_Q_TAGGED: | 1472 | case AHD_DEV_Q_TAGGED: |
1475 | scsi_set_tag_type(sdev, MSG_ORDERED_TASK); | 1473 | scsi_change_queue_depth(sdev, |
1476 | scsi_activate_tcq(sdev, dev->openings + dev->active); | 1474 | dev->openings + dev->active); |
1477 | break; | 1475 | break; |
1478 | default: | 1476 | default: |
1479 | /* | 1477 | /* |
@@ -1482,7 +1480,7 @@ ahd_platform_set_tags(struct ahd_softc *ahd, struct scsi_device *sdev, | |||
1482 | * serially on the controller/device. This should | 1480 | * serially on the controller/device. This should |
1483 | * remove some latency. | 1481 | * remove some latency. |
1484 | */ | 1482 | */ |
1485 | scsi_deactivate_tcq(sdev, 1); | 1483 | scsi_change_queue_depth(sdev, 1); |
1486 | break; | 1484 | break; |
1487 | } | 1485 | } |
1488 | } | 1486 | } |
@@ -1619,15 +1617,6 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev, | |||
1619 | } | 1617 | } |
1620 | 1618 | ||
1621 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { | 1619 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { |
1622 | int msg_bytes; | ||
1623 | uint8_t tag_msgs[2]; | ||
1624 | |||
1625 | msg_bytes = scsi_populate_tag_msg(cmd, tag_msgs); | ||
1626 | if (msg_bytes && tag_msgs[0] != MSG_SIMPLE_TASK) { | ||
1627 | hscb->control |= tag_msgs[0]; | ||
1628 | if (tag_msgs[0] == MSG_ORDERED_TASK) | ||
1629 | dev->commands_since_idle_or_otag = 0; | ||
1630 | } else | ||
1631 | if (dev->commands_since_idle_or_otag == AHD_OTAG_THRESH | 1620 | if (dev->commands_since_idle_or_otag == AHD_OTAG_THRESH |
1632 | && (dev->flags & AHD_DEV_Q_TAGGED) != 0) { | 1621 | && (dev->flags & AHD_DEV_Q_TAGGED) != 0) { |
1633 | hscb->control |= MSG_ORDERED_TASK; | 1622 | hscb->control |= MSG_ORDERED_TASK; |