Re: esp_scsi QTAG in FAS216
Hi Michael, 2014-04-11 3:47 GMT+02:00 Michael Schmitz schmitz...@gmail.com: The more important issue is the one about the one-byte reconnect message. Does the manual speak to that particular issue? Any hint on how we could enable SCSI-2 features on chip init? There's the SCSI2 bit in the Config 2 register and/or the QTE bit in the Config 3 register. The 53CF9x-2 manual says about SCSI-2 bit: Bit 2 SCSI-2 Setting this bit allows the FSC to support two new features adopted in SCSI-2: the 3-byte message exchange for Tagged-Queueing and Group 2 commands. These features can also be set independently in the Config 3 register. Tagged-Queueing When this bit is set and the FSC is selected with ATN (Attention), it will request either one or three message bytes depending on whether ATN remains true or goes false. If ATN is still true after the first byte has been received, the FSC may request two more message bytes before switching to Command phase. If ATN goes false, it will switch to Command phase after the first message byte. When the bit is not set it will request a single message byte (as a target) when selected with ATN, and abort the selection sequence (as an initiator) if the target does not switch to Command phase after one message byte has been transferred. Group 2 Commands (seems to only be relevant for target mode). And about the QTE bit: Bit 6 Queue Tag Enable When this bit is set, the 53CF94/96 can receive 3-byte messages during bus-initiated Select With ATN. This feature is also enabled by setting bit 3 in the Configuration 2 register. The message bytes consist of a one-byte identify message and a two-byte queue tag message. The middle byte is the tagged queue message itself and the last byte is the tag value (0 to 255). When this bit is set, the second byte is checked to see if it is a valid queue tagging message. If the value of the byte is not 20, 21 or 22h, the sequence halts and an interrupt is generated. When this bit is not set, the chip aborts the Select With ATN sequence after it receives one Identify Message byte, if ATN is still asserted. Then there is a section called Bus Initiated Reselection: Bus Initiated Reselection The FSC will allow itself to be reselected as an initiator by a target if it has previously received the Enable Selection/Reselection command. If the sequence completes normally, the following information will be in the FIFO: * Bus ID * Identify Message * Optional 2-byte queue tag message The bus ID will always be present and will always be one byte. It is an un-encoded version of the state of the bus during Reselection phase. The identify message will always be present and will always be one byte. If queue tagging is enabled, and the target is sending a queue tag message, the target will also send two queue tag message bytes. Can you point me to a source for the manuals if possible? I only have dead tree versions of the QLogic manual and the Symbios Logic manual. The only public place I know of is bitsavers, they do have a manual for the 53C94/95/96 online here: http://bitsavers.trailing-edge.com/pdf/ncr/scsi/NCR_53C94_53C95_53C96_Data_Sheet_Feb90.pdf. I put the 53C90A/B manual online at http://members.home.nl/karsdejong/NCR53C90ab.pdf and a preliminary version of the 53CF94/96-2 at http://members.home.nl/karsdejong/NCR53CF9x-2.pdf. Kind regards, Kars. -- To unsubscribe from this list: send the line unsubscribe linux-m68k in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: esp_scsi QTAG in FAS216
Hi Kars, thanks for the PDFs! Bit 2 SCSI-2 Setting this bit allows the FSC to support two new features adopted in SCSI-2: the 3-byte message exchange for Tagged-Queueing and Group 2 commands. These features can also be set independently in the Config 3 register. Tagged-Queueing When this bit is set and the FSC is selected with ATN (Attention), it will request either one or three message bytes depending on whether ATN remains true or goes false. If ATN is still true after the first byte has been received, the FSC may request two more message bytes before switching to Command phase. If ATN goes false, it will switch to Command phase after the first message byte. When the bit is not set it will request a single message byte (as a target) when selected with ATN, and abort the selection sequence (as an initiator) if the target does not switch to Command phase after one message byte has been transferred. That appears to be our problem if I recall correctly Tuomas' debugging report. (reselection, not selection as initiator). As esp_slave_configure() enables queue tags regardless of chip config, we'd best make certain the chip is configured correctly. The SCSI2 bit is used to test for presence of config register 2 in esp_get_revision but later cleared in the same function. It appears we'd need to set it after the call to scsi_esp_register() - can you test whether that obsoletes the zorro_esp_slave_configure hack, Tuomas? diff --git a/drivers/scsi/zorro_esp.c b/drivers/scsi/zorro_esp.c index 1a1eb95..b33c3b5 100644 --- a/drivers/scsi/zorro_esp.c +++ b/drivers/scsi/zorro_esp.c @@ -418,9 +418,6 @@ static int zorro_esp_init_one(struct zorro_dev *z, return -EBUSY; } - /* Fill in the required pieces of hostdata */ - scsi_esp_template.slave_configure = zorro_esp_slave_configure; - host = scsi_host_alloc(tpnt, sizeof(struct esp)); if (!host) { @@ -508,6 +505,10 @@ static int zorro_esp_init_one(struct zorro_dev *z, if (err) goto fail_free_irq; + esp-config2 = ESP_CONFIG2_SCSI2ENAB; + zorro_esp_write8(esp, esp-config2, ESP_CFG2); + + zorro_set_drvdata(z, host); return 0; Group 2 Commands (seems to only be relevant for target mode). And about the QTE bit: Bit 6 Queue Tag Enable When this bit is set, the 53CF94/96 can receive 3-byte messages during bus-initiated Select With ATN. This feature is also enabled by setting bit 3 in the Configuration 2 register. My preference would be to set this one (named ESP_CONFIG3_TBMS). Your opinion, Dave? Cheers, Michael -- To unsubscribe from this list: send the line unsubscribe linux-m68k in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: esp_scsi QTAG in FAS216
From: Michael Schmitz schmitz...@gmail.com Date: Mon, 14 Apr 2014 10:38:09 +1200 That appears to be our problem if I recall correctly Tuomas' debugging report. (reselection, not selection as initiator). As esp_slave_configure() enables queue tags regardless of chip config, we'd best make certain the chip is configured correctly. The SCSI2 bit is used to test for presence of config register 2 in esp_get_revision but later cleared in the same function. It appears we'd need to set it after the call to scsi_esp_register() - can you test whether that obsoletes the zorro_esp_slave_configure hack, Tuomas? ... Group 2 Commands (seems to only be relevant for target mode). And about the QTE bit: Bit 6 Queue Tag Enable When this bit is set, the 53CF94/96 can receive 3-byte messages during bus-initiated Select With ATN. This feature is also enabled by setting bit 3 in the Configuration 2 register. My preference would be to set this one (named ESP_CONFIG3_TBMS). Your opinion, Dave? As seems to be agreed upon here, the SCSI2 bit in the CONFIG2 register (ESP_CONFIG2_SCSI2ENAB) is only for when the chip is used in target mode. So it is not relevant for our discussion because this driver is for initiator mode operation only. But some pieces of documentation seem like they might not agree on this point. With respect to bit 3 in the config3 register, it can take on one of two meaning depending upon chip revision. As per ESP_CONFIG3_{TMS,FCLK} it either controls fast SCSI clocking, or it enabled 3 byte message recognition. But oddly in the NCR53CX docs: http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR53C9X.txt it speaks as if ESP_CONFIG3_TMS and ESP_CONFIG3_TENB are merely finer grained versions of config2 register setting ESP_CONFIG2_SCSI2ENAB, which enables both features. Again I looked at the FreeBSD driver and for all chips after plain esp100, they set ESP_CONFIG2_SCSI2ENAB. Can we try testing the following patch? esp_scsi: Set SCSI2 bit in config2 register. This should allow proper recognition of 3 byte reselection on all esp100a and later chips. Reported-by: Kars de Jong jo...@linux-m68k.org Reported-by: Michael Schmitz schmitz...@gmail.com Signed-off-by: David S. Miller da...@davemloft.net diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index 55548dc..16f69e0 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -2160,7 +2160,7 @@ static void esp_get_revision(struct esp *esp) */ esp-rev = ESP100; } else { - esp-config2 = 0; + esp-config2 = ESP_CONFIG2_SCSI2ENAB; esp_set_all_config3(esp, 5); esp-prev_cfg3 = 5; esp_write8(esp-config2, ESP_CFG2); @@ -2187,8 +2187,6 @@ static void esp_get_revision(struct esp *esp) } else { esp-rev = ESP236; } - esp-config2 = 0; - esp_write8(esp-config2, ESP_CFG2); } } } -- To unsubscribe from this list: send the line unsubscribe linux-m68k in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: esp_scsi QTAG in FAS216
On 14.04.2014 05:14, David Miller wrote: From: Michael Schmitz schmitz...@gmail.com Date: Mon, 14 Apr 2014 10:38:09 +1200 That appears to be our problem if I recall correctly Tuomas' debugging report. (reselection, not selection as initiator). As esp_slave_configure() enables queue tags regardless of chip config, we'd best make certain the chip is configured correctly. The SCSI2 bit is used to test for presence of config register 2 in esp_get_revision but later cleared in the same function. It appears we'd need to set it after the call to scsi_esp_register() - can you test whether that obsoletes the zorro_esp_slave_configure hack, Tuomas? ... Group 2 Commands (seems to only be relevant for target mode). And about the QTE bit: Bit 6 Queue Tag Enable When this bit is set, the 53CF94/96 can receive 3-byte messages during bus-initiated Select With ATN. This feature is also enabled by setting bit 3 in the Configuration 2 register. My preference would be to set this one (named ESP_CONFIG3_TBMS). Your opinion, Dave? As seems to be agreed upon here, the SCSI2 bit in the CONFIG2 register (ESP_CONFIG2_SCSI2ENAB) is only for when the chip is used in target mode. So it is not relevant for our discussion because this driver is for initiator mode operation only. But some pieces of documentation seem like they might not agree on this point. With respect to bit 3 in the config3 register, it can take on one of two meaning depending upon chip revision. As per ESP_CONFIG3_{TMS,FCLK} it either controls fast SCSI clocking, or it enabled 3 byte message recognition. But oddly in the NCR53CX docs: http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR53C9X.txt it speaks as if ESP_CONFIG3_TMS and ESP_CONFIG3_TENB are merely finer grained versions of config2 register setting ESP_CONFIG2_SCSI2ENAB, which enables both features. Again I looked at the FreeBSD driver and for all chips after plain esp100, they set ESP_CONFIG2_SCSI2ENAB. Can we try testing the following patch? esp_scsi: Set SCSI2 bit in config2 register. This should allow proper recognition of 3 byte reselection on all esp100a and later chips. Reported-by: Kars de Jong jo...@linux-m68k.org Reported-by: Michael Schmitz schmitz...@gmail.com Signed-off-by: David S. Miller da...@davemloft.net diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index 55548dc..16f69e0 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -2160,7 +2160,7 @@ static void esp_get_revision(struct esp *esp) */ esp-rev = ESP100; } else { - esp-config2 = 0; + esp-config2 = ESP_CONFIG2_SCSI2ENAB; esp_set_all_config3(esp, 5); esp-prev_cfg3 = 5; esp_write8(esp-config2, ESP_CFG2); @@ -2187,8 +2187,6 @@ static void esp_get_revision(struct esp *esp) } else { esp-rev = ESP236; } - esp-config2 = 0; - esp_write8(esp-config2, ESP_CFG2); } } } I'll test these out soon. Michael, where can I pull the latest version of zorro_esp? -Tuomas -- To unsubscribe from this list: send the line unsubscribe linux-m68k in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html