This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TUSB9261:咨询 SCSI 中的最大 xfer 长度(块)

Guru**** 1916930 points
Other Parts Discussed in Thread: TUSB9261
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1385926/tusb9261-consultation-about-max-xfer-length-blocks-in-scsi

器件型号:TUSB9261

工具与软件:

我很抱歉打扰您。

问题如下:  

我必须使用存储并转发功能来禁用换行窗口。 然后、TUSB9261演示有一个64KB (受硬件限制)缓冲区、用于缓存读/写、这意味着它最多只能缓存128块(512Byte)的内存。

但是、SCSI Write-10和 Read-10命令具有 Total Blocks 字段、对于 USB2.0、最多可以包含240个块(120KB)。 最初在 Windows 11上测试产品时、一次写入的数据不会超过128个块。 但是、在 Linux 上进行测试时、它有时会写入超过128个块、这会导致 USB 存储设备崩溃。 Linux 源代码显示、对于 USB2.0、默认为 max_sectors=240个块


是否有办法告诉 Linux 主机操作系统请求的块不超过128个?

我知道 TUSB9261固件实现了块限制 VPD 页面、在 Windows 10/11上运行良好。 我甚至将块限制设置为64块、也没问题。 因为在数据传输之前、Windows 主机发出 SCSI 查询顺序、VPD 页代码为0xB0、因此器件可以将块限制信息传输到主机。 然后、Windows 主机可以调整传输的数据量。

但是、在 Linux 或 MacOS 上、主机似乎未运行 block limits 命令。 因此可能主机不知道什么是块限制。 写入/读取块的数量超出了缓冲区大小。

这真的让我困扰了很多。 我该怎么办?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chongyu:

    我对 Linux 没有太多的经验,但这听起来更像这个问题,因为主机没有向9261发出查询,并坚持其预期的更高设置。 为了防止发生这种情况、我唯一能想到的方法是对用于连接到 TUSB9261的主机或驱动程序进行更改、并查看可以从那里进行哪些更改。

    除此之外、我认为我们没有任何其他方法可以解决这个问题、因为 TUSB9261不能支持更高版本。

    谢谢!

    Ryan