scsi: avoid ->change_queue_depth indirection for queue full tracking
[linux-block.git] / drivers / scsi / libsas / sas_scsi_host.c
index 24e477d2ea701d97a9afe69bf48831cbb8c8cf66..914e411651378a3fd54aec9cd373550bf6ba46a8 100644 (file)
@@ -940,15 +940,12 @@ int sas_slave_configure(struct scsi_device *scsi_dev)
        sas_read_port_mode_page(scsi_dev);
 
        if (scsi_dev->tagged_supported) {
-               scsi_set_tag_type(scsi_dev, MSG_SIMPLE_TAG);
-               scsi_activate_tcq(scsi_dev, SAS_DEF_QD);
+               scsi_adjust_queue_depth(scsi_dev, SAS_DEF_QD);
        } else {
                SAS_DPRINTK("device %llx, LUN %llx doesn't support "
                            "TCQ\n", SAS_ADDR(dev->sas_addr),
                            scsi_dev->lun);
-               scsi_dev->tagged_supported = 0;
-               scsi_set_tag_type(scsi_dev, 0);
-               scsi_deactivate_tcq(scsi_dev, 1);
+               scsi_adjust_queue_depth(scsi_dev, 1);
        }
 
        scsi_dev->allow_restart = 1;
@@ -964,39 +961,17 @@ int sas_change_queue_depth(struct scsi_device *sdev, int depth, int reason)
                return __ata_change_queue_depth(dev->sata_dev.ap, sdev, depth,
                                                reason);
 
-       switch (reason) {
-       case SCSI_QDEPTH_DEFAULT:
-       case SCSI_QDEPTH_RAMP_UP:
-               if (!sdev->tagged_supported)
-                       depth = 1;
-               scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
-               break;
-       case SCSI_QDEPTH_QFULL:
-               scsi_track_queue_full(sdev, depth);
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
+       if (!sdev->tagged_supported)
+               depth = 1;
+       scsi_adjust_queue_depth(sdev, depth);
        return depth;
 }
 
-int sas_change_queue_type(struct scsi_device *scsi_dev, int qt)
+int sas_change_queue_type(struct scsi_device *scsi_dev, int type)
 {
-       struct domain_device *dev = sdev_to_domain_dev(scsi_dev);
-
-       if (dev_is_sata(dev))
+       if (dev_is_sata(sdev_to_domain_dev(scsi_dev)))
                return -EINVAL;
-
-       if (!scsi_dev->tagged_supported)
-               return 0;
-
-       scsi_deactivate_tcq(scsi_dev, 1);
-
-       scsi_set_tag_type(scsi_dev, qt);
-       scsi_activate_tcq(scsi_dev, scsi_dev->queue_depth);
-
-       return qt;
+       return scsi_change_queue_type(scsi_dev, type);
 }
 
 int sas_bios_param(struct scsi_device *scsi_dev,