On Fri, 15 Dec 2017, Vainikka Tuomas wrote:
Hello, Just bear in mind that there was no need for the PIO transfers when the TCQ was hacked off. Commands over DMA worked fine then at least on my Blizzard SCSI-IV...
Inhibiting TCQ also affects performance. If you want to, you can measure the difference (compared to Michael's patch) by using a patch like the one below, with the option esp_scsi.esp_no_tcq=1. The use of PIO for short transfers should cost nothing in the absence of TCQ because there should be no short tranfers. --
-Tuomas
diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index c3fc34b9964d..69c3de96b79c 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -37,6 +37,8 @@ /* SCSI bus reset settle time in seconds. */ static int esp_bus_reset_settle = 3; +static int esp_no_tcq = -1; + static u32 esp_debug; #define ESP_DEBUG_INTR 0x00000001 #define ESP_DEBUG_SCSICMD 0x00000002 @@ -698,7 +700,7 @@ static struct esp_cmd_entry *find_and_prep_issuable_command(struct esp *esp) return ent; } - if (!spi_populate_tag_msg(&ent->tag[0], cmd)) { + if (esp_no_tcq > 0 || !spi_populate_tag_msg(&ent->tag[0], cmd)) { ent->tag[0] = 0; ent->tag[1] = 0; } @@ -2476,7 +2478,7 @@ static int esp_slave_configure(struct scsi_device *dev) struct esp *esp = shost_priv(dev->host); struct esp_target_data *tp = &esp->target[dev->id]; - if (dev->tagged_supported) + if (esp_no_tcq <= 0 && dev->tagged_supported) scsi_change_queue_depth(dev, esp->num_tags); tp->flags |= ESP_TGT_DISCONNECT; @@ -2768,6 +2770,9 @@ MODULE_AUTHOR("David S. Miller (davem@xxxxxxxxxxxxx)"); MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_VERSION); +module_param(esp_no_tcq, int, 0); +MODULE_PARM_DESC(esp_no_tcq, "Send no command tags"); + module_param(esp_bus_reset_settle, int, 0); MODULE_PARM_DESC(esp_bus_reset_settle, "ESP scsi bus reset delay in seconds"); -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html