* USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 @ 2021-03-09 6:41 William Allen 2021-03-09 7:27 ` Thinh Nguyen 0 siblings, 1 reply; 22+ messages in thread From: William Allen @ 2021-03-09 6:41 UTC (permalink / raw) To: linux-usb I've never submitted to the mailing list before, so please excuse any formalities that I may not be observing. I would like to be able to use USB 3.2 Gen2x2 "SuperSpeed+²⁰Gbps" under Linux. I've tried several different kernel versions, and have built the kernel from the usb-next tree. All without finding proper functionality. I have an Ableconn PEX-UB159 USB 3.2 Gen 2x2 PCIe expansion card, with the ASM3242 controller. This controller appears to be the only Gen2x2 capable controller that exists in commercial products- so far as I've found. Everything appears to work, except for "SuperSpeed+²⁰Gbps" when I plug in a capable device. Here is the dmesg output as soon as I plug in a Gen2x2 WD P50 Black External NVMe SSD, using an appropriate SuperSpeed+²⁰Gbps certified cable: 5.11.2-arch1-1 -------------------- usb 7-2: new SuperSpeedPlus Gen 2 USB device number 3 using xhci_hcd usb 7-2: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 usb 7-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 usb 7-2: Product: Game Drive usb 7-2: Manufacturer: Western Digital usb 7-2: SerialNumber: 323130334431343030303736 scsi host11: uas scsi 11:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 scsi 11:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 sd 11:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) sd 11:0:0:0: [sdf] Write Protect is off sd 11:0:0:0: [sdf] Mode Sense: 57 00 10 00 sd 11:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports DPO and FUA sd 11:0:0:0: [sdf] Optimal transfer size 33553920 bytes sd 11:0:0:0: [sdf] Attached SCSI disk When I saw commits referring to Gen2x2 in the usb-next repo, I built off that, and also ran linux-next-git.r0.gabaf6f60176f-1 from AUR, both giving me the same results/output: linux-next-git.r0.gabaf6f60176f-1 ---------------------------------------------- usb 5-1: new SuperSpeed Gen 1x2 USB device number 3 using xhci_hcd usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 usb 5-1: Product: Game Drive usb 5-1: Manufacturer: Western Digital usb 5-1: SerialNumber: 323130334431343030303736 scsi host7: uas scsi 7:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 scsi 7:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 ses 7:0:0:1: Attached Enclosure device ses 7:0:0:1: Failed to get diagnostic page 0x1 ses 7:0:0:1: Failed to bind enclosure -19 sd 7:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) sd 7:0:0:0: [sdf] Write Protect is off sd 7:0:0:0: [sdf] Mode Sense: 57 00 10 00 sd 7:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports DPO and FUA sd 7:0:0:0: [sdf] Optimal transfer size 33553920 bytes sd 7:0:0:0: [sdf] Attached SCSI disk See that it's detecting it as Gen 1x2. The output of lsusb -t shows that it is connected at 5000M using the uas driver. Even my much slower USB 3.1 SSDs connect at 10000M on the exact same port. When I attach the Gen2x2 NVMe SSD to my other 3.2 Gen2 card, it connects at 10000M, so It seems to be directly related to a mishandling when the Gen2x2 device gets recognized by the Gen2x2 card. lspci output from 5.11.2-arch1-1: ------------------------------------------- USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller (prog-if 30 [XHCI]) Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller Physical Slot: 1 Flags: bus master, fast devsel, latency 0, IRQ 62, NUMA node 0 Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ Capabilities: [68] MSI-X: Enable+ Count=8 Masked- Capabilities: [78] Power Management version 3 Capabilities: [80] Express Legacy Endpoint, MSI 00 Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 Capabilities: [100] Advanced Error Reporting Capabilities: [200] Secondary PCI Express Capabilities: [300] Latency Tolerance Reporting Capabilities: [400] L1 PM Substates Kernel driver in use: xhci_hcd Kernel modules: xhci_pci I'm happy to test anything, or file this somewhere more appropriate if you could point me in the right direction. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-09 6:41 USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 William Allen @ 2021-03-09 7:27 ` Thinh Nguyen 2021-03-09 12:02 ` Mathias Nyman 0 siblings, 1 reply; 22+ messages in thread From: Thinh Nguyen @ 2021-03-09 7:27 UTC (permalink / raw) To: William Allen, linux-usb, Mathias Nyman + Mathias Hi, William Allen wrote: > I've never submitted to the mailing list before, so please excuse any > formalities that I may not be observing. > I would like to be able to use USB 3.2 Gen2x2 "SuperSpeed+²⁰Gbps" > under Linux. I've tried several different kernel versions, and have > built the kernel from the usb-next tree. All without finding proper > functionality. > > I have an Ableconn PEX-UB159 USB 3.2 Gen 2x2 PCIe expansion card, with > the ASM3242 controller. This controller appears to be the only Gen2x2 > capable controller that exists in commercial products- so far as I've > found. Everything appears to work, except for "SuperSpeed+²⁰Gbps" when > I plug in a capable device. > Here is the dmesg output as soon as I plug in a Gen2x2 WD P50 Black > External NVMe SSD, using an appropriate SuperSpeed+²⁰Gbps certified > cable: > 5.11.2-arch1-1 > -------------------- > usb 7-2: new SuperSpeedPlus Gen 2 USB device number 3 using xhci_hcd > usb 7-2: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 > usb 7-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 > usb 7-2: Product: Game Drive > usb 7-2: Manufacturer: Western Digital > usb 7-2: SerialNumber: 323130334431343030303736 > scsi host11: uas > scsi 11:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 > scsi 11:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 > sd 11:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) > sd 11:0:0:0: [sdf] Write Protect is off > sd 11:0:0:0: [sdf] Mode Sense: 57 00 10 00 > sd 11:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports > DPO and FUA > sd 11:0:0:0: [sdf] Optimal transfer size 33553920 bytes > sd 11:0:0:0: [sdf] Attached SCSI disk > > When I saw commits referring to Gen2x2 in the usb-next repo, I built > off that, and also ran linux-next-git.r0.gabaf6f60176f-1 from AUR, > both giving me the same results/output: > linux-next-git.r0.gabaf6f60176f-1 > ---------------------------------------------- > usb 5-1: new SuperSpeed Gen 1x2 USB device number 3 using xhci_hcd > usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 > usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 > usb 5-1: Product: Game Drive > usb 5-1: Manufacturer: Western Digital > usb 5-1: SerialNumber: 323130334431343030303736 > scsi host7: uas > scsi 7:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 > scsi 7:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 > ses 7:0:0:1: Attached Enclosure device > ses 7:0:0:1: Failed to get diagnostic page 0x1 > ses 7:0:0:1: Failed to bind enclosure -19 > sd 7:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) > sd 7:0:0:0: [sdf] Write Protect is off > sd 7:0:0:0: [sdf] Mode Sense: 57 00 10 00 > sd 7:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports > DPO and FUA > sd 7:0:0:0: [sdf] Optimal transfer size 33553920 bytes > sd 7:0:0:0: [sdf] Attached SCSI disk > > See that it's detecting it as Gen 1x2. > The output of lsusb -t shows that it is connected at 5000M using the > uas driver. Even my much slower USB 3.1 SSDs connect at 10000M on the > exact same port. > When I attach the Gen2x2 NVMe SSD to my other 3.2 Gen2 card, it > connects at 10000M, so It seems to be directly related to a > mishandling when the Gen2x2 device gets recognized by the Gen2x2 card. > > lspci output from 5.11.2-arch1-1: > ------------------------------------------- > USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host > Controller (prog-if 30 [XHCI]) > Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller > Physical Slot: 1 > Flags: bus master, fast devsel, latency 0, IRQ 62, NUMA node 0 > Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] > Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ > Capabilities: [68] MSI-X: Enable+ Count=8 Masked- > Capabilities: [78] Power Management version 3 > Capabilities: [80] Express Legacy Endpoint, MSI 00 > Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 > Capabilities: [100] Advanced Error Reporting > Capabilities: [200] Secondary PCI Express > Capabilities: [300] Latency Tolerance Reporting > Capabilities: [400] L1 PM Substates > Kernel driver in use: xhci_hcd > Kernel modules: xhci_pci > > I'm happy to test anything, or file this somewhere more appropriate if > you could point me in the right direction. Currently the usb host stack doesn't really support USB 3.2 yet, at least the speed check part. I made some updates to handle that. You apply these patches and test on your setup https://patchwork.kernel.org/project/linux-usb/list/?series=427561 Hopefully Mathias will have time to review and Ack them for the next release cycle. BR, Thinh ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-09 7:27 ` Thinh Nguyen @ 2021-03-09 12:02 ` Mathias Nyman 2021-03-09 22:51 ` William Allen 2021-12-30 13:10 ` youling257 0 siblings, 2 replies; 22+ messages in thread From: Mathias Nyman @ 2021-03-09 12:02 UTC (permalink / raw) To: Thinh Nguyen, William Allen, linux-usb, Mathias Nyman On 9.3.2021 9.27, Thinh Nguyen wrote: > + Mathias > > Hi, > > William Allen wrote: >> I've never submitted to the mailing list before, so please excuse any >> formalities that I may not be observing. >> I would like to be able to use USB 3.2 Gen2x2 "SuperSpeed+²⁰Gbps" >> under Linux. I've tried several different kernel versions, and have >> built the kernel from the usb-next tree. All without finding proper >> functionality. >> >> I have an Ableconn PEX-UB159 USB 3.2 Gen 2x2 PCIe expansion card, with >> the ASM3242 controller. This controller appears to be the only Gen2x2 >> capable controller that exists in commercial products- so far as I've >> found. Everything appears to work, except for "SuperSpeed+²⁰Gbps" when >> I plug in a capable device. >> Here is the dmesg output as soon as I plug in a Gen2x2 WD P50 Black >> External NVMe SSD, using an appropriate SuperSpeed+²⁰Gbps certified >> cable: >> 5.11.2-arch1-1 >> -------------------- >> usb 7-2: new SuperSpeedPlus Gen 2 USB device number 3 using xhci_hcd >> usb 7-2: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 >> usb 7-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 >> usb 7-2: Product: Game Drive >> usb 7-2: Manufacturer: Western Digital >> usb 7-2: SerialNumber: 323130334431343030303736 >> scsi host11: uas >> scsi 11:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 >> scsi 11:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 >> sd 11:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) >> sd 11:0:0:0: [sdf] Write Protect is off >> sd 11:0:0:0: [sdf] Mode Sense: 57 00 10 00 >> sd 11:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports >> DPO and FUA >> sd 11:0:0:0: [sdf] Optimal transfer size 33553920 bytes >> sd 11:0:0:0: [sdf] Attached SCSI disk >> >> When I saw commits referring to Gen2x2 in the usb-next repo, I built >> off that, and also ran linux-next-git.r0.gabaf6f60176f-1 from AUR, >> both giving me the same results/output: >> linux-next-git.r0.gabaf6f60176f-1 >> ---------------------------------------------- >> usb 5-1: new SuperSpeed Gen 1x2 USB device number 3 using xhci_hcd >> usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 >> usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 >> usb 5-1: Product: Game Drive >> usb 5-1: Manufacturer: Western Digital >> usb 5-1: SerialNumber: 323130334431343030303736 >> scsi host7: uas >> scsi 7:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 >> scsi 7:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 >> ses 7:0:0:1: Attached Enclosure device >> ses 7:0:0:1: Failed to get diagnostic page 0x1 >> ses 7:0:0:1: Failed to bind enclosure -19 >> sd 7:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) >> sd 7:0:0:0: [sdf] Write Protect is off >> sd 7:0:0:0: [sdf] Mode Sense: 57 00 10 00 >> sd 7:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports >> DPO and FUA >> sd 7:0:0:0: [sdf] Optimal transfer size 33553920 bytes >> sd 7:0:0:0: [sdf] Attached SCSI disk >> >> See that it's detecting it as Gen 1x2. >> The output of lsusb -t shows that it is connected at 5000M using the >> uas driver. Even my much slower USB 3.1 SSDs connect at 10000M on the >> exact same port. >> When I attach the Gen2x2 NVMe SSD to my other 3.2 Gen2 card, it >> connects at 10000M, so It seems to be directly related to a >> mishandling when the Gen2x2 device gets recognized by the Gen2x2 card. >> >> lspci output from 5.11.2-arch1-1: >> ------------------------------------------- >> USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >> Controller (prog-if 30 [XHCI]) >> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller >> Physical Slot: 1 >> Flags: bus master, fast devsel, latency 0, IRQ 62, NUMA node 0 >> Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] >> Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ >> Capabilities: [68] MSI-X: Enable+ Count=8 Masked- >> Capabilities: [78] Power Management version 3 >> Capabilities: [80] Express Legacy Endpoint, MSI 00 >> Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 >> Capabilities: [100] Advanced Error Reporting >> Capabilities: [200] Secondary PCI Express >> Capabilities: [300] Latency Tolerance Reporting >> Capabilities: [400] L1 PM Substates >> Kernel driver in use: xhci_hcd >> Kernel modules: xhci_pci >> >> I'm happy to test anything, or file this somewhere more appropriate if >> you could point me in the right direction. > > Currently the usb host stack doesn't really support USB 3.2 yet, at > least the speed check part. I made some updates to handle that. > > You apply these patches and test on your setup > https://patchwork.kernel.org/project/linux-usb/list/?series=427561 > > Hopefully Mathias will have time to review and Ack them for the next > release cycle. Thanks for the reminder, added some comments to the series -Mathias ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-09 12:02 ` Mathias Nyman @ 2021-03-09 22:51 ` William Allen 2021-03-10 0:56 ` Thinh Nguyen 2021-12-30 13:10 ` youling257 1 sibling, 1 reply; 22+ messages in thread From: William Allen @ 2021-03-09 22:51 UTC (permalink / raw) To: Mathias Nyman; +Cc: Thinh Nguyen, linux-usb, Mathias Nyman Thank you! I tested your patches and got a little bit of success. The dmesg output now shows the drive connecting at SuperSpeedPlus Gen 2, which is inline with the 5.11.2-arch1-1 kernel, but shows the same failure messages, except under the "scsi" facility, rather than the "ses" facility 5.12.0-rc2-next-20210309-2-next-git (manually added your patches to the PKGBUILD file) ------------------------------------------------- usb 5-1: new SuperSpeedPlus Gen 2 USB device number 2 using xhci_hcd usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 usb 5-1: Product: Game Drive usb 5-1: Manufacturer: Western Digital usb 5-1: SerialNumber: 323130334431343030303736 scsi host12: uas scsi 12:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 scsi 12:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 sd 12:0:0:0: [sdi] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) sd 12:0:0:0: [sdi] Write Protect is off sd 12:0:0:0: [sdi] Mode Sense: 57 00 10 00 sd 12:0:0:0: [sdi] Write cache: enabled, read cache: enabled, supports DPO and FUA sd 12:0:0:0: [sdi] Optimal transfer size 33553920 bytes scsi 12:0:0:1: Failed to get diagnostic page 0x1 scsi 12:0:0:1: Failed to bind enclosure -19 sd 12:0:0:0: [sdi] Attached SCSI disk ses 12:0:0:1: Attached Enclosure device The drive also now connects at 10000M, whereas before it was connecting at 5000M. I still am not seeing anything relating to Gen 2x2 speeds. I checked the listed lanes, which IS showing new information. Value of: /sys/bus/usb/devices/usb5/rx_lanes = 2 /sys/bus/usb/devices/usb5/tx_lanes = 2 Here is the output of lsusb -vvv for the device: ------------------------------------------------- Bus 005 Device 002: ID 1058:2642 Western Digital Technologies, Inc. Game Drive Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.20 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x1058 Western Digital Technologies, Inc. idProduct 0x2642 bcdDevice 10.03 iManufacturer 2 Western Digital iProduct 3 Game Drive iSerial 1 323130334431343030303736 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0079 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 896mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 4 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 98 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-in pipe (0x03) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-out pipe (0x04) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Status pipe (0x02) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Command pipe (0x01) Binary Object Store Descriptor: bLength 5 bDescriptorType 15 wTotalLength 0x002a bNumDeviceCaps 3 USB 2.0 Extension Device Capability: bLength 7 bDescriptorType 16 bDevCapabilityType 2 bmAttributes 0x0000f41e BESL Link Power Management (LPM) Supported BESL value 1024 us Deep BESL value 61440 us SuperSpeed USB Device Capability: bLength 10 bDescriptorType 16 bDevCapabilityType 3 bmAttributes 0x00 wSpeedsSupported 0x000e Device can operate at Full Speed (12Mbps) Device can operate at High Speed (480Mbps) Device can operate at SuperSpeed (5Gbps) bFunctionalitySupport 1 Lowest fully-functional device speed is Full Speed (12Mbps) bU1DevExitLat 10 micro seconds bU2DevExitLat 2047 micro seconds SuperSpeedPlus USB Device Capability: bLength 20 bDescriptorType 16 bDevCapabilityType 10 bmAttributes 0x00000001 Sublink Speed Attribute count 1 Sublink Speed ID count 0 wFunctionalitySupport 0x1100 bmSublinkSpeedAttr[0] 0x000a4030 Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus bmSublinkSpeedAttr[1] 0x000a40b0 Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered) And here is output of lspci relating to the ASM3242: ------------------------------------------------- 04:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller (prog-if 30 [XHCI]) Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller Physical Slot: 1 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 62 Region 0: Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [68] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=0 offset=00002000 PBA: BAR=0 offset=00002080 Capabilities: [78] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <2us ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- DevCtl: CorrErr- NonFatalErr+ FatalErr+ UnsupReq- RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 4096 bytes DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend- LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 unlimited ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 8GT/s (ok), Width x4 (ok) TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range A, TimeoutDis- NROPrPrP- LTR+ 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix- EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit- FRS- AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- OBFF Disabled, AtomicOpsCtl: ReqEn- LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS- LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+ EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- Retimer- 2Retimers- CrosslinkRes: unsupported Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap- ECRCChkEn- MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 Capabilities: [200 v1] Secondary PCI Express LnkCtl3: LnkEquIntrruptEn- PerformEqu- LaneErrStat: LaneErr at lane: 0 1 2 3 Capabilities: [300 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [400 v1] L1 PM Substates L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+ PortCommonModeRestoreTime=0us PortTPowerOnTime=10us L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- T_CommonMode=0us LTR1.2_Threshold=0ns L1SubCtl2: T_PwrOn=0us Kernel driver in use: xhci_hcd Kernel modules: xhci_pci On Tue, Mar 9, 2021 at 6:00 AM Mathias Nyman <mathias.nyman@linux.intel.com> wrote: > > On 9.3.2021 9.27, Thinh Nguyen wrote: > > + Mathias > > > > Hi, > > > > William Allen wrote: > >> I've never submitted to the mailing list before, so please excuse any > >> formalities that I may not be observing. > >> I would like to be able to use USB 3.2 Gen2x2 "SuperSpeed+²⁰Gbps" > >> under Linux. I've tried several different kernel versions, and have > >> built the kernel from the usb-next tree. All without finding proper > >> functionality. > >> > >> I have an Ableconn PEX-UB159 USB 3.2 Gen 2x2 PCIe expansion card, with > >> the ASM3242 controller. This controller appears to be the only Gen2x2 > >> capable controller that exists in commercial products- so far as I've > >> found. Everything appears to work, except for "SuperSpeed+²⁰Gbps" when > >> I plug in a capable device. > >> Here is the dmesg output as soon as I plug in a Gen2x2 WD P50 Black > >> External NVMe SSD, using an appropriate SuperSpeed+²⁰Gbps certified > >> cable: > >> 5.11.2-arch1-1 > >> -------------------- > >> usb 7-2: new SuperSpeedPlus Gen 2 USB device number 3 using xhci_hcd > >> usb 7-2: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 > >> usb 7-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 > >> usb 7-2: Product: Game Drive > >> usb 7-2: Manufacturer: Western Digital > >> usb 7-2: SerialNumber: 323130334431343030303736 > >> scsi host11: uas > >> scsi 11:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 > >> scsi 11:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 > >> sd 11:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) > >> sd 11:0:0:0: [sdf] Write Protect is off > >> sd 11:0:0:0: [sdf] Mode Sense: 57 00 10 00 > >> sd 11:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports > >> DPO and FUA > >> sd 11:0:0:0: [sdf] Optimal transfer size 33553920 bytes > >> sd 11:0:0:0: [sdf] Attached SCSI disk > >> > >> When I saw commits referring to Gen2x2 in the usb-next repo, I built > >> off that, and also ran linux-next-git.r0.gabaf6f60176f-1 from AUR, > >> both giving me the same results/output: > >> linux-next-git.r0.gabaf6f60176f-1 > >> ---------------------------------------------- > >> usb 5-1: new SuperSpeed Gen 1x2 USB device number 3 using xhci_hcd > >> usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 > >> usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 > >> usb 5-1: Product: Game Drive > >> usb 5-1: Manufacturer: Western Digital > >> usb 5-1: SerialNumber: 323130334431343030303736 > >> scsi host7: uas > >> scsi 7:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 > >> scsi 7:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 > >> ses 7:0:0:1: Attached Enclosure device > >> ses 7:0:0:1: Failed to get diagnostic page 0x1 > >> ses 7:0:0:1: Failed to bind enclosure -19 > >> sd 7:0:0:0: [sdf] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) > >> sd 7:0:0:0: [sdf] Write Protect is off > >> sd 7:0:0:0: [sdf] Mode Sense: 57 00 10 00 > >> sd 7:0:0:0: [sdf] Write cache: enabled, read cache: enabled, supports > >> DPO and FUA > >> sd 7:0:0:0: [sdf] Optimal transfer size 33553920 bytes > >> sd 7:0:0:0: [sdf] Attached SCSI disk > >> > >> See that it's detecting it as Gen 1x2. > >> The output of lsusb -t shows that it is connected at 5000M using the > >> uas driver. Even my much slower USB 3.1 SSDs connect at 10000M on the > >> exact same port. > >> When I attach the Gen2x2 NVMe SSD to my other 3.2 Gen2 card, it > >> connects at 10000M, so It seems to be directly related to a > >> mishandling when the Gen2x2 device gets recognized by the Gen2x2 card. > >> > >> lspci output from 5.11.2-arch1-1: > >> ------------------------------------------- > >> USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host > >> Controller (prog-if 30 [XHCI]) > >> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller > >> Physical Slot: 1 > >> Flags: bus master, fast devsel, latency 0, IRQ 62, NUMA node 0 > >> Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] > >> Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ > >> Capabilities: [68] MSI-X: Enable+ Count=8 Masked- > >> Capabilities: [78] Power Management version 3 > >> Capabilities: [80] Express Legacy Endpoint, MSI 00 > >> Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 > >> Capabilities: [100] Advanced Error Reporting > >> Capabilities: [200] Secondary PCI Express > >> Capabilities: [300] Latency Tolerance Reporting > >> Capabilities: [400] L1 PM Substates > >> Kernel driver in use: xhci_hcd > >> Kernel modules: xhci_pci > >> > >> I'm happy to test anything, or file this somewhere more appropriate if > >> you could point me in the right direction. > > > > Currently the usb host stack doesn't really support USB 3.2 yet, at > > least the speed check part. I made some updates to handle that. > > > > You apply these patches and test on your setup > > https://patchwork.kernel.org/project/linux-usb/list/?series=427561 > > > > Hopefully Mathias will have time to review and Ack them for the next > > release cycle. > > Thanks for the reminder, added some comments to the series > > -Mathias > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-09 22:51 ` William Allen @ 2021-03-10 0:56 ` Thinh Nguyen 2021-03-10 1:19 ` Thinh Nguyen 0 siblings, 1 reply; 22+ messages in thread From: Thinh Nguyen @ 2021-03-10 0:56 UTC (permalink / raw) To: William Allen, Mathias Nyman; +Cc: Thinh Nguyen, linux-usb, Mathias Nyman Hi, William Allen wrote: > Thank you! I tested your patches and got a little bit of success. The > dmesg output now shows the drive connecting at SuperSpeedPlus Gen 2, > which is inline with the 5.11.2-arch1-1 kernel, but shows the same > failure messages, except under the "scsi" facility, rather than the > "ses" facility > > > 5.12.0-rc2-next-20210309-2-next-git (manually added your patches to > the PKGBUILD file) > ------------------------------------------------- > usb 5-1: new SuperSpeedPlus Gen 2 USB device number 2 using xhci_hcd It seems like you did not apply all the patches I provided. It wouldn't just print "Gen 2" here if you had applied all the patches. If the SSP rate is unknown, it would just print "SuperSpeed Plus". Refer to this patch: https://patchwork.kernel.org/project/linux-usb/patch/d7049743924adf82f93ddfe403a5ebb9ac06e49b.1612410491.git.Thinh.Nguyen@synopsys.com/ Please apply all 8 of the patches here: https://patchwork.kernel.org/project/linux-usb/list/?series=427561 If there are still issues, I can provide some debugging patches. BR, Thinh > usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 > usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 > usb 5-1: Product: Game Drive > usb 5-1: Manufacturer: Western Digital > usb 5-1: SerialNumber: 323130334431343030303736 > scsi host12: uas > scsi 12:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 > scsi 12:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 > sd 12:0:0:0: [sdi] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) > sd 12:0:0:0: [sdi] Write Protect is off > sd 12:0:0:0: [sdi] Mode Sense: 57 00 10 00 > sd 12:0:0:0: [sdi] Write cache: enabled, read cache: enabled, supports > DPO and FUA > sd 12:0:0:0: [sdi] Optimal transfer size 33553920 bytes > scsi 12:0:0:1: Failed to get diagnostic page 0x1 > scsi 12:0:0:1: Failed to bind enclosure -19 > sd 12:0:0:0: [sdi] Attached SCSI disk > ses 12:0:0:1: Attached Enclosure device > > > The drive also now connects at 10000M, whereas before it was > connecting at 5000M. > I still am not seeing anything relating to Gen 2x2 speeds. > > > I checked the listed lanes, which IS showing new information. Value of: > /sys/bus/usb/devices/usb5/rx_lanes = 2 > /sys/bus/usb/devices/usb5/tx_lanes = 2 > > > Here is the output of lsusb -vvv for the device: > ------------------------------------------------- > Bus 005 Device 002: ID 1058:2642 Western Digital Technologies, Inc. Game Drive > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 3.20 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 9 > idVendor 0x1058 Western Digital Technologies, Inc. > idProduct 0x2642 > bcdDevice 10.03 > iManufacturer 2 Western Digital > iProduct 3 Game Drive > iSerial 1 323130334431343030303736 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 0x0079 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0x80 > (Bus Powered) > MaxPower 896mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 8 Mass Storage > bInterfaceSubClass 6 SCSI > bInterfaceProtocol 80 Bulk-Only > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 1 > bNumEndpoints 4 > bInterfaceClass 8 Mass Storage > bInterfaceSubClass 6 SCSI > bInterfaceProtocol 98 > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Data-in pipe (0x03) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Data-out pipe (0x04) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x83 EP 3 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Status pipe (0x02) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x04 EP 4 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 0 > Command pipe (0x01) > Binary Object Store Descriptor: > bLength 5 > bDescriptorType 15 > wTotalLength 0x002a > bNumDeviceCaps 3 > USB 2.0 Extension Device Capability: > bLength 7 > bDescriptorType 16 > bDevCapabilityType 2 > bmAttributes 0x0000f41e > BESL Link Power Management (LPM) Supported > BESL value 1024 us > Deep BESL value 61440 us > SuperSpeed USB Device Capability: > bLength 10 > bDescriptorType 16 > bDevCapabilityType 3 > bmAttributes 0x00 > wSpeedsSupported 0x000e > Device can operate at Full Speed (12Mbps) > Device can operate at High Speed (480Mbps) > Device can operate at SuperSpeed (5Gbps) > bFunctionalitySupport 1 > Lowest fully-functional device speed is Full Speed (12Mbps) > bU1DevExitLat 10 micro seconds > bU2DevExitLat 2047 micro seconds > SuperSpeedPlus USB Device Capability: > bLength 20 > bDescriptorType 16 > bDevCapabilityType 10 > bmAttributes 0x00000001 > Sublink Speed Attribute count 1 > Sublink Speed ID count 0 > wFunctionalitySupport 0x1100 > bmSublinkSpeedAttr[0] 0x000a4030 > Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus > bmSublinkSpeedAttr[1] 0x000a40b0 > Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus > can't get debug descriptor: Resource temporarily unavailable > Device Status: 0x0000 > (Bus Powered) > > > And here is output of lspci relating to the ASM3242: > ------------------------------------------------- > 04:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host > Controller (prog-if 30 [XHCI]) > Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller > Physical Slot: 1 > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- > ParErr+ Stepping- SERR- FastB2B- DisINTx+ > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > Latency: 0, Cache Line Size: 64 bytes > Interrupt: pin A routed to IRQ 62 > Region 0: Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] > Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ > Address: 0000000000000000 Data: 0000 > Capabilities: [68] MSI-X: Enable+ Count=8 Masked- > Vector table: BAR=0 offset=00002000 > PBA: BAR=0 offset=00002080 > Capabilities: [78] Power Management version 3 > Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA > PME(D0+,D1-,D2-,D3hot+,D3cold+) > Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- > Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00 > DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s > <64ns, L1 <2us > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- > DevCtl: CorrErr- NonFatalErr+ FatalErr+ UnsupReq- > RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ > MaxPayload 256 bytes, MaxReadReq 4096 bytes > DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend- > LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit > Latency L1 unlimited > ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ > LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+ > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- > LnkSta: Speed 8GT/s (ok), Width x4 (ok) > TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- > DevCap2: Completion Timeout: Range A, TimeoutDis- NROPrPrP- LTR+ > 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ > EETLPPrefix- > EmergencyPowerReduction Not Supported, > EmergencyPowerReductionInit- > FRS- > AtomicOpsCap: 32bit- 64bit- 128bitCAS- > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- > OBFF Disabled, > AtomicOpsCtl: ReqEn- > LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- > Retimer- 2Retimers- DRS- > LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- > Transmit Margin: Normal Operating Range, > EnterModifiedCompliance- ComplianceSOS- > Compliance De-emphasis: -6dB > LnkSta2: Current De-emphasis Level: -6dB, > EqualizationComplete+ EqualizationPhase1+ > EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- > Retimer- 2Retimers- CrosslinkRes: unsupported > Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 > Capabilities: [100 v1] Advanced Error Reporting > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- > RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- > RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- > UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- > RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- > AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- > ECRCChkCap- ECRCChkEn- > MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- > HeaderLog: 00000000 00000000 00000000 00000000 > Capabilities: [200 v1] Secondary PCI Express > LnkCtl3: LnkEquIntrruptEn- PerformEqu- > LaneErrStat: LaneErr at lane: 0 1 2 3 > Capabilities: [300 v1] Latency Tolerance Reporting > Max snoop latency: 0ns > Max no snoop latency: 0ns > Capabilities: [400 v1] L1 PM Substates > L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ > L1_PM_Substates+ > PortCommonModeRestoreTime=0us PortTPowerOnTime=10us > L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- > T_CommonMode=0us LTR1.2_Threshold=0ns > L1SubCtl2: T_PwrOn=0us > Kernel driver in use: xhci_hcd > Kernel modules: xhci_pci > > On Tue, Mar 9, 2021 at 6:00 AM Mathias Nyman > <mathias.nyman@linux.intel.com> wrote: >> >>> Currently the usb host stack doesn't really support USB 3.2 yet, at >>> least the speed check part. I made some updates to handle that. >>> >>> You apply these patches and test on your setup >>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!O509Jgp-IveN9AmXa5oORW98Q_B4_GyjbA5RSAXFuZaexHl4jhm8G9dWbImQUw4CrNZJ$ >>> >>> Hopefully Mathias will have time to review and Ack them for the next >>> release cycle. >> Thanks for the reminder, added some comments to the series >> >> -Mathias >> ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-10 0:56 ` Thinh Nguyen @ 2021-03-10 1:19 ` Thinh Nguyen 0 siblings, 0 replies; 22+ messages in thread From: Thinh Nguyen @ 2021-03-10 1:19 UTC (permalink / raw) To: William Allen, Mathias Nyman; +Cc: linux-usb, Mathias Nyman Thinh Nguyen wrote: > Hi, > > William Allen wrote: >> Thank you! I tested your patches and got a little bit of success. The >> dmesg output now shows the drive connecting at SuperSpeedPlus Gen 2, >> which is inline with the 5.11.2-arch1-1 kernel, but shows the same >> failure messages, except under the "scsi" facility, rather than the >> "ses" facility >> >> >> 5.12.0-rc2-next-20210309-2-next-git (manually added your patches to >> the PKGBUILD file) >> ------------------------------------------------- >> usb 5-1: new SuperSpeedPlus Gen 2 USB device number 2 using xhci_hcd > It seems like you did not apply all the patches I provided. It wouldn't > just print "Gen 2" here if you had applied all the patches. If the SSP > rate is unknown, it would just print "SuperSpeed Plus". > > Refer to this patch: > https://patchwork.kernel.org/project/linux-usb/patch/d7049743924adf82f93ddfe403a5ebb9ac06e49b.1612410491.git.Thinh.Nguyen@synopsys.com/ > > Please apply all 8 of the patches here: > https://patchwork.kernel.org/project/linux-usb/list/?series=427561 > > If there are still issues, I can provide some debugging patches. > > BR, > Thinh > > >> usb 5-1: New USB device found, idVendor=1058, idProduct=2642, bcdDevice=10.03 >> usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 >> usb 5-1: Product: Game Drive >> usb 5-1: Manufacturer: Western Digital >> usb 5-1: SerialNumber: 323130334431343030303736 >> scsi host12: uas >> scsi 12:0:0:0: Direct-Access WD Game Drive 1003 PQ: 0 ANSI: 6 >> scsi 12:0:0:1: Enclosure WD SES Device 1003 PQ: 0 ANSI: 6 >> sd 12:0:0:0: [sdi] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB) >> sd 12:0:0:0: [sdi] Write Protect is off >> sd 12:0:0:0: [sdi] Mode Sense: 57 00 10 00 >> sd 12:0:0:0: [sdi] Write cache: enabled, read cache: enabled, supports >> DPO and FUA >> sd 12:0:0:0: [sdi] Optimal transfer size 33553920 bytes >> scsi 12:0:0:1: Failed to get diagnostic page 0x1 >> scsi 12:0:0:1: Failed to bind enclosure -19 BTW, this failure is unrelated to which speed the device is connected as. The device should just work regardless of the connected speed. Something else is wrong here. It could be a problem with the device not responding to a SCSI command correctly (often I find many UASP devices don't properly handle/respond correctly for an unsupported command). You can force the device to run with BOT protocol instead of UASP since it's less likely to run into this problem. (Add the 'u' quirk to ignore UAS). Thanks, Thinh >> sd 12:0:0:0: [sdi] Attached SCSI disk >> ses 12:0:0:1: Attached Enclosure device >> >> >> The drive also now connects at 10000M, whereas before it was >> connecting at 5000M. >> I still am not seeing anything relating to Gen 2x2 speeds. >> >> >> I checked the listed lanes, which IS showing new information. Value of: >> /sys/bus/usb/devices/usb5/rx_lanes = 2 >> /sys/bus/usb/devices/usb5/tx_lanes = 2 >> >> >> Here is the output of lsusb -vvv for the device: >> ------------------------------------------------- >> Bus 005 Device 002: ID 1058:2642 Western Digital Technologies, Inc. Game Drive >> Device Descriptor: >> bLength 18 >> bDescriptorType 1 >> bcdUSB 3.20 >> bDeviceClass 0 >> bDeviceSubClass 0 >> bDeviceProtocol 0 >> bMaxPacketSize0 9 >> idVendor 0x1058 Western Digital Technologies, Inc. >> idProduct 0x2642 >> bcdDevice 10.03 >> iManufacturer 2 Western Digital >> iProduct 3 Game Drive >> iSerial 1 323130334431343030303736 >> bNumConfigurations 1 >> Configuration Descriptor: >> bLength 9 >> bDescriptorType 2 >> wTotalLength 0x0079 >> bNumInterfaces 1 >> bConfigurationValue 1 >> iConfiguration 0 >> bmAttributes 0x80 >> (Bus Powered) >> MaxPower 896mA >> Interface Descriptor: >> bLength 9 >> bDescriptorType 4 >> bInterfaceNumber 0 >> bAlternateSetting 0 >> bNumEndpoints 2 >> bInterfaceClass 8 Mass Storage >> bInterfaceSubClass 6 SCSI >> bInterfaceProtocol 80 Bulk-Only >> iInterface 0 >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x81 EP 1 IN >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 15 >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x02 EP 2 OUT >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 15 >> Interface Descriptor: >> bLength 9 >> bDescriptorType 4 >> bInterfaceNumber 0 >> bAlternateSetting 1 >> bNumEndpoints 4 >> bInterfaceClass 8 Mass Storage >> bInterfaceSubClass 6 SCSI >> bInterfaceProtocol 98 >> iInterface 0 >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x81 EP 1 IN >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 15 >> MaxStreams 32 >> Data-in pipe (0x03) >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x02 EP 2 OUT >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 15 >> MaxStreams 32 >> Data-out pipe (0x04) >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x83 EP 3 IN >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 15 >> MaxStreams 32 >> Status pipe (0x02) >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x04 EP 4 OUT >> bmAttributes 2 >> Transfer Type Bulk >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0400 1x 1024 bytes >> bInterval 0 >> bMaxBurst 0 >> Command pipe (0x01) >> Binary Object Store Descriptor: >> bLength 5 >> bDescriptorType 15 >> wTotalLength 0x002a >> bNumDeviceCaps 3 >> USB 2.0 Extension Device Capability: >> bLength 7 >> bDescriptorType 16 >> bDevCapabilityType 2 >> bmAttributes 0x0000f41e >> BESL Link Power Management (LPM) Supported >> BESL value 1024 us >> Deep BESL value 61440 us >> SuperSpeed USB Device Capability: >> bLength 10 >> bDescriptorType 16 >> bDevCapabilityType 3 >> bmAttributes 0x00 >> wSpeedsSupported 0x000e >> Device can operate at Full Speed (12Mbps) >> Device can operate at High Speed (480Mbps) >> Device can operate at SuperSpeed (5Gbps) >> bFunctionalitySupport 1 >> Lowest fully-functional device speed is Full Speed (12Mbps) >> bU1DevExitLat 10 micro seconds >> bU2DevExitLat 2047 micro seconds >> SuperSpeedPlus USB Device Capability: >> bLength 20 >> bDescriptorType 16 >> bDevCapabilityType 10 >> bmAttributes 0x00000001 >> Sublink Speed Attribute count 1 >> Sublink Speed ID count 0 >> wFunctionalitySupport 0x1100 >> bmSublinkSpeedAttr[0] 0x000a4030 >> Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus >> bmSublinkSpeedAttr[1] 0x000a40b0 >> Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus >> can't get debug descriptor: Resource temporarily unavailable >> Device Status: 0x0000 >> (Bus Powered) >> >> >> And here is output of lspci relating to the ASM3242: >> ------------------------------------------------- >> 04:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >> Controller (prog-if 30 [XHCI]) >> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller >> Physical Slot: 1 >> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- >> ParErr+ Stepping- SERR- FastB2B- DisINTx+ >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- >> <TAbort- <MAbort- >SERR- <PERR- INTx- >> Latency: 0, Cache Line Size: 64 bytes >> Interrupt: pin A routed to IRQ 62 >> Region 0: Memory at f7df0000 (64-bit, non-prefetchable) [size=32K] >> Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ >> Address: 0000000000000000 Data: 0000 >> Capabilities: [68] MSI-X: Enable+ Count=8 Masked- >> Vector table: BAR=0 offset=00002000 >> PBA: BAR=0 offset=00002080 >> Capabilities: [78] Power Management version 3 >> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA >> PME(D0+,D1-,D2-,D3hot+,D3cold+) >> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- >> Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00 >> DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s >> <64ns, L1 <2us >> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- >> DevCtl: CorrErr- NonFatalErr+ FatalErr+ UnsupReq- >> RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ >> MaxPayload 256 bytes, MaxReadReq 4096 bytes >> DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend- >> LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit >> Latency L1 unlimited >> ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ >> LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+ >> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- >> LnkSta: Speed 8GT/s (ok), Width x4 (ok) >> TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- >> DevCap2: Completion Timeout: Range A, TimeoutDis- NROPrPrP- LTR+ >> 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ >> EETLPPrefix- >> EmergencyPowerReduction Not Supported, >> EmergencyPowerReductionInit- >> FRS- >> AtomicOpsCap: 32bit- 64bit- 128bitCAS- >> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- >> OBFF Disabled, >> AtomicOpsCtl: ReqEn- >> LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- >> Retimer- 2Retimers- DRS- >> LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- >> Transmit Margin: Normal Operating Range, >> EnterModifiedCompliance- ComplianceSOS- >> Compliance De-emphasis: -6dB >> LnkSta2: Current De-emphasis Level: -6dB, >> EqualizationComplete+ EqualizationPhase1+ >> EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- >> Retimer- 2Retimers- CrosslinkRes: unsupported >> Capabilities: [c0] Subsystem: ASMedia Technology Inc. Device 0201 >> Capabilities: [100 v1] Advanced Error Reporting >> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- >> RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- >> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- >> RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- >> UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- >> RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- >> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ >> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- >> AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- >> ECRCChkCap- ECRCChkEn- >> MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- >> HeaderLog: 00000000 00000000 00000000 00000000 >> Capabilities: [200 v1] Secondary PCI Express >> LnkCtl3: LnkEquIntrruptEn- PerformEqu- >> LaneErrStat: LaneErr at lane: 0 1 2 3 >> Capabilities: [300 v1] Latency Tolerance Reporting >> Max snoop latency: 0ns >> Max no snoop latency: 0ns >> Capabilities: [400 v1] L1 PM Substates >> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ >> L1_PM_Substates+ >> PortCommonModeRestoreTime=0us PortTPowerOnTime=10us >> L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- >> T_CommonMode=0us LTR1.2_Threshold=0ns >> L1SubCtl2: T_PwrOn=0us >> Kernel driver in use: xhci_hcd >> Kernel modules: xhci_pci >> >> On Tue, Mar 9, 2021 at 6:00 AM Mathias Nyman >> <mathias.nyman@linux.intel.com> wrote: > > > > >>>> Currently the usb host stack doesn't really support USB 3.2 yet, at >>>> least the speed check part. I made some updates to handle that. >>>> >>>> You apply these patches and test on your setup >>>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!O509Jgp-IveN9AmXa5oORW98Q_B4_GyjbA5RSAXFuZaexHl4jhm8G9dWbImQUw4CrNZJ$ >>>> >>>> Hopefully Mathias will have time to review and Ack them for the next >>>> release cycle. >>> Thanks for the reminder, added some comments to the series >>> >>> -Mathias >>> ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-03-09 12:02 ` Mathias Nyman 2021-03-09 22:51 ` William Allen @ 2021-12-30 13:10 ` youling257 2021-12-30 13:30 ` Greg KH 1 sibling, 1 reply; 22+ messages in thread From: youling257 @ 2021-12-30 13:10 UTC (permalink / raw) To: mathias.nyman; +Cc: william.allentx, linux-usb, Thinh.Nguyen where i can find the series patch? https://patchwork.kernel.org/project/linux-usb/list/?series=427561 when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only 500MB/s. cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 maiwo k1690 is on /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, 5000 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller (prog-if 30 [XHCI]) Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2 [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced SuperSpeed [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected [ 1191.795049] scsi host9: usb-storage 4-1:1.0 [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device 1.00 PQ: 0 ANSI: 6 [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB) [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 1051.072131] sda: sda1 sda2 i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe to USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on PciExpress X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be 10Gbps. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-30 13:10 ` youling257 @ 2021-12-30 13:30 ` Greg KH 2021-12-30 13:49 ` Mathias Nyman 2021-12-30 14:57 ` youling 257 0 siblings, 2 replies; 22+ messages in thread From: Greg KH @ 2021-12-30 13:30 UTC (permalink / raw) To: youling257; +Cc: mathias.nyman, william.allentx, linux-usb, Thinh.Nguyen On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: > where i can find the series patch? https://patchwork.kernel.org/project/linux-usb/list/?series=427561 There is nothing at that link. What is the lore.kernel.org link for the patch you are curious about? > when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only 500MB/s. > cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 > cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 > maiwo k1690 is on /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. > cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, 5000 > > > 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller (prog-if 30 [XHCI]) > Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller > > [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller > [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2 > [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced SuperSpeed > > [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd > [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected > [ 1191.795049] scsi host9: usb-storage 4-1:1.0 > [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device 1.00 PQ: 0 ANSI: 6 > [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 > [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB) > [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off > [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 > [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA > [ 1051.072131] sda: sda1 sda2 > > i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe to USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on PciExpress X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be 10Gbps. > Are you sure that your hardware can really support this? Do you have the right cable and the device will support this speed? And most important, what kernel version are you using? thanks, greg k-h ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-30 13:30 ` Greg KH @ 2021-12-30 13:49 ` Mathias Nyman 2021-12-30 14:57 ` youling 257 1 sibling, 0 replies; 22+ messages in thread From: Mathias Nyman @ 2021-12-30 13:49 UTC (permalink / raw) To: Greg KH, youling257 Cc: mathias.nyman, william.allentx, linux-usb, Thinh.Nguyen On 30.12.2021 15.30, Greg KH wrote: > On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >> where i can find the series patch? https://patchwork.kernel.org/project/linux-usb/list/?series=427561 > > There is nothing at that link. > > What is the lore.kernel.org link for the patch you are curious about? That series should be in 5.13 https://lore.kernel.org/linux-usb/cover.1615432770.git.Thinh.Nguyen@synopsys.com/ > >> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only 500MB/s. >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 >> maiwo k1690 is on /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, 5000 >> >> >> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller (prog-if 30 [XHCI]) >> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host Controller >> >> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2 >> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced SuperSpeed >> >> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd >> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device 1.00 PQ: 0 ANSI: 6 >> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB) >> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA >> [ 1051.072131] sda: sda1 sda2 >> >> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe to USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on PciExpress X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be 10Gbps. >> > > Are you sure that your hardware can really support this? Do you have > the right cable and the device will support this speed? > > And most important, what kernel version are you using? > > thanks, > > greg k-h > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-30 13:30 ` Greg KH 2021-12-30 13:49 ` Mathias Nyman @ 2021-12-30 14:57 ` youling 257 2021-12-31 1:39 ` Thinh Nguyen 1 sibling, 1 reply; 22+ messages in thread From: youling 257 @ 2021-12-30 14:57 UTC (permalink / raw) To: Greg KH; +Cc: mathias.nyman, william.allentx, linux-usb, Thinh.Nguyen 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: > On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >> where i can find the series patch? >> https://patchwork.kernel.org/project/linux-usb/list/?series=427561 > > There is nothing at that link. > > What is the lore.kernel.org link for the patch you are curious about? > >> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >> 500MB/s. >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 >> maiwo k1690 is on >> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >> 5000 >> >> >> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >> Controller (prog-if 30 [XHCI]) >> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >> Controller >> >> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus >> number 2 >> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >> SuperSpeed >> >> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd >> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device >> 1.00 PQ: 0 ANSI: 6 >> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: (256 >> GB/238 GiB) >> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >> enabled, doesn't support DPO or FUA >> [ 1051.072131] sda: sda1 sda2 >> >> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe to >> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on PciExpress >> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be 10Gbps. >> > > Are you sure that your hardware can really support this? Do you have > the right cable and the device will support this speed? 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 XHCI Controller maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number 2 using xhci_hcd [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected [ 1050.028560] scsi host9: usb-storage 2-2:1.0 pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. I don't have windows os to test them, may be 5gbps on windows yet. Is there a way to hack them to 10Gbps on linux? > And most important, what kernel version are you using? kernel 5.16 rc7. > thanks, > > greg k-h > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-30 14:57 ` youling 257 @ 2021-12-31 1:39 ` Thinh Nguyen 2021-12-31 3:10 ` youling 257 2021-12-31 8:49 ` youling 257 0 siblings, 2 replies; 22+ messages in thread From: Thinh Nguyen @ 2021-12-31 1:39 UTC (permalink / raw) To: youling 257, Greg KH Cc: mathias.nyman, william.allentx, linux-usb, Thinh Nguyen Hi, youling 257 wrote: > 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: >> On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >>> where i can find the series patch? >>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!M_zXKjO1JtIkz57qZ7BEEL7zjx2QXQTfau26hBNLX7bKEL_vOP-m8Xn1eZ14VRpY-0Ga$ >> >> There is nothing at that link. >> >> What is the lore.kernel.org link for the patch you are curious about? >> >>> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >>> 500MB/s. >>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 >>> maiwo k1690 is on >>> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >>> 5000 >>> >>> >>> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>> Controller (prog-if 30 [XHCI]) >>> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>> Controller >>> >>> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >>> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus >>> number 2 >>> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >>> SuperSpeed >>> >>> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd >>> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >>> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >>> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device >>> 1.00 PQ: 0 ANSI: 6 >>> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >>> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: (256 >>> GB/238 GiB) >>> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >>> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >>> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >>> enabled, doesn't support DPO or FUA >>> [ 1051.072131] sda: sda1 sda2 >>> >>> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe to >>> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on PciExpress >>> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be 10Gbps. >>> >> >> Are you sure that your hardware can really support this? Do you have >> the right cable and the device will support this speed? > 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series > Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) > Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 > XHCI Controller > > maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. > [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number > 2 using xhci_hcd > [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected > [ 1050.028560] scsi host9: usb-storage 2-2:1.0 > > pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. > I don't have windows os to test them, may be 5gbps on windows yet. > Is there a way to hack them to 10Gbps on linux? > >> And most important, what kernel version are you using? > kernel 5.16 rc7. >> thanks, >> >> greg k-h >> The ASmedia host controller incorrectly reports the speed ID in the port-status mismatching with its PSI capability for SSP devices. As a result, the host/hub driver will report the wrong speed. To resolve/workaround this, the xHCI driver can capture the device speed from sublink speed notification of a SSP device. All SSP devices must send sublink speed device notification, so this method should resolve your issue. You can apply the change below. This should resolve your issue. BR, Thinh diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 9ddcc0ab4db7..6de15f004684 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -2602,7 +2602,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) */ temp = readl(&xhci->op_regs->dev_notification); temp &= ~DEV_NOTE_MASK; - temp |= DEV_NOTE_FWAKE; + temp |= DEV_NOTE_FWAKE | DEV_NOTE_SUBLINK_SPEED; writel(temp, &xhci->op_regs->dev_notification); return 0; diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 99d9d9c88988..80081b3fd52a 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1860,6 +1860,8 @@ static void handle_device_notification(struct xhci_hcd *xhci, { u32 slot_id; struct usb_device *udev; + u32 type; + u32 dn; slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->generic.field[3])); if (!xhci->devs[slot_id]) { @@ -1868,11 +1870,45 @@ static void handle_device_notification(struct xhci_hcd *xhci, return; } - xhci_dbg(xhci, "Device Wake Notification event for slot ID %u\n", - slot_id); udev = xhci->devs[slot_id]->udev; - if (udev && udev->parent) - usb_wakeup_notification(udev->parent, udev->portnum); + type = TRB_DN_TYPE(le32_to_cpu(event->generic.field[0])); + + switch (type) { + case TRB_DN_TYPE_FUNC_WAKE: + xhci_info(xhci, "Device Wake Notification event for slot ID %u\n", + slot_id); + if (udev && udev->parent) + usb_wakeup_notification(udev->parent, udev->portnum); + break; + case TRB_DN_TYPE_SUBLINK_SPEED: + if (!udev) + break; + + dn = le32_to_cpu(event->generic.field[1]); + udev->ssp_rate = USB_SSP_GEN_UNKNOWN; + + if (TRB_DN_SUBLINK_SPEED_LP(dn) == + TRB_DN_SUBLINK_SPEED_LP_SSP) { + udev->speed = USB_SPEED_SUPER_PLUS; + + if (TRB_DN_SUBLINK_SPEED_LSE(dn) != + TRB_DN_SUBLINK_SPEED_LSE_GBPS) + break; + + if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 10) { + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) + udev->ssp_rate = USB_SSP_GEN_2x2; + else + udev->ssp_rate = USB_SSP_GEN_2x1; + } else if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 5) { + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) + udev->ssp_rate = USB_SSP_GEN_1x2; + } + } else { + udev->speed = USB_SPEED_SUPER; + } + break; + } } /* diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 9192465fd5f3..ce2ca67c115f 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -267,6 +267,7 @@ struct xhci_op_regs { * SW does need to pay attention to function wake notifications. */ #define DEV_NOTE_FWAKE ENABLE_DEV_NOTE(1) +#define DEV_NOTE_SUBLINK_SPEED ENABLE_DEV_NOTE(5) /* CRCR - Command Ring Control Register - cmd_ring bitmasks */ /* bit 0 is the command ring cycle state */ @@ -1434,6 +1435,30 @@ union xhci_trb { /* Get NEC firmware revision. */ #define TRB_NEC_GET_FW 49 +/* Get Device Notification type */ +#define TRB_DN_TYPE(p) (((p) >> 4) & 0xf) + +#define TRB_DN_TYPE_FUNC_WAKE 1 +#define TRB_DN_TYPE_SUBLINK_SPEED 5 + +/* Get sublink speed attributes */ +#define TRB_DN_SUBLINK_SPEED_LSE(p) (((p) >> 4) & 0x3) +#define TRB_DN_SUBLINK_SPEED_LSE_BPS 0 +#define TRB_DN_SUBLINK_SPEED_LSE_KBPS 1 +#define TRB_DN_SUBLINK_SPEED_LSE_MBPS 2 +#define TRB_DN_SUBLINK_SPEED_LSE_GBPS 3 +#define TRB_DN_SUBLINK_SPEED_ST(p) (((p) >> 6) & 0x3) +#define TRB_DN_SUBLINK_SPEED_LANES(p) (((p) >> 10) & 0xf) +#define TRB_DN_SUBLINK_SPEED_LP(p) (((p) >> 14) & 0x3) +#define TRB_DN_SUBLINK_SPEED_LP_SS 0 +#define TRB_DN_SUBLINK_SPEED_LP_SSP 1 +#define TRB_DN_SUBLINK_SPEED_LSM(p) (((p) >> 16) & 0xffff) + +#define TRB_DN_SUBLINK_SPEED_IS_SYMMETRIC(p) \ + (!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(0))) +#define TRB_DN_SUBLINK_SPEED_IS_TX(p) \ + (!!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(1))) + static inline const char *xhci_trb_type_string(u8 type) { switch (type) { ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 1:39 ` Thinh Nguyen @ 2021-12-31 3:10 ` youling 257 2021-12-31 3:46 ` Thinh Nguyen 2021-12-31 8:49 ` youling 257 1 sibling, 1 reply; 22+ messages in thread From: youling 257 @ 2021-12-31 3:10 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number 2 using xhci_hcd [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), run=1557-1557msec READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), io=1000MiB (1049MB), run=2140-2140msec the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), run=1194-1194msec READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), io=1000MiB (1049MB), run=1328-1328msec 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > Hi, > > youling 257 wrote: >> 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: >>> On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >>>> where i can find the series patch? >>>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!M_zXKjO1JtIkz57qZ7BEEL7zjx2QXQTfau26hBNLX7bKEL_vOP-m8Xn1eZ14VRpY-0Ga$ >>>> >>> >>> There is nothing at that link. >>> >>> What is the lore.kernel.org link for the patch you are curious about? >>> >>>> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >>>> 500MB/s. >>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 >>>> maiwo k1690 is on >>>> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >>>> 5000 >>>> >>>> >>>> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>> Controller (prog-if 30 [XHCI]) >>>> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>> Controller >>>> >>>> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >>>> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned >>>> bus >>>> number 2 >>>> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >>>> SuperSpeed >>>> >>>> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using >>>> xhci_hcd >>>> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >>>> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >>>> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device >>>> 1.00 PQ: 0 ANSI: 6 >>>> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >>>> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: >>>> (256 >>>> GB/238 GiB) >>>> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >>>> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >>>> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >>>> enabled, doesn't support DPO or FUA >>>> [ 1051.072131] sda: sda1 sda2 >>>> >>>> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe >>>> to >>>> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on >>>> PciExpress >>>> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be >>>> 10Gbps. >>>> >>> >>> Are you sure that your hardware can really support this? Do you have >>> the right cable and the device will support this speed? >> 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series >> Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) >> Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 >> XHCI Controller >> >> maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. >> [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number >> 2 using xhci_hcd >> [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected >> [ 1050.028560] scsi host9: usb-storage 2-2:1.0 >> >> pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. >> I don't have windows os to test them, may be 5gbps on windows yet. >> Is there a way to hack them to 10Gbps on linux? >> >>> And most important, what kernel version are you using? >> kernel 5.16 rc7. >>> thanks, >>> >>> greg k-h >>> > > The ASmedia host controller incorrectly reports the speed ID in the > port-status mismatching with its PSI capability for SSP devices. As > a result, the host/hub driver will report the wrong speed. > > To resolve/workaround this, the xHCI driver can capture the device speed > from sublink speed notification of a SSP device. All SSP devices must > send sublink speed device notification, so this method should resolve > your issue. > > You can apply the change below. This should resolve your issue. > > BR, > Thinh > > > diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c > index 9ddcc0ab4db7..6de15f004684 100644 > --- a/drivers/usb/host/xhci-mem.c > +++ b/drivers/usb/host/xhci-mem.c > @@ -2602,7 +2602,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) > */ > temp = readl(&xhci->op_regs->dev_notification); > temp &= ~DEV_NOTE_MASK; > - temp |= DEV_NOTE_FWAKE; > + temp |= DEV_NOTE_FWAKE | DEV_NOTE_SUBLINK_SPEED; > writel(temp, &xhci->op_regs->dev_notification); > > return 0; > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index 99d9d9c88988..80081b3fd52a 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -1860,6 +1860,8 @@ static void handle_device_notification(struct xhci_hcd > *xhci, > { > u32 slot_id; > struct usb_device *udev; > + u32 type; > + u32 dn; > > slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->generic.field[3])); > if (!xhci->devs[slot_id]) { > @@ -1868,11 +1870,45 @@ static void handle_device_notification(struct > xhci_hcd *xhci, > return; > } > > - xhci_dbg(xhci, "Device Wake Notification event for slot ID %u\n", > - slot_id); > udev = xhci->devs[slot_id]->udev; > - if (udev && udev->parent) > - usb_wakeup_notification(udev->parent, udev->portnum); > + type = TRB_DN_TYPE(le32_to_cpu(event->generic.field[0])); > + > + switch (type) { > + case TRB_DN_TYPE_FUNC_WAKE: > + xhci_info(xhci, "Device Wake Notification event for slot ID %u\n", > + slot_id); > + if (udev && udev->parent) > + usb_wakeup_notification(udev->parent, udev->portnum); > + break; > + case TRB_DN_TYPE_SUBLINK_SPEED: > + if (!udev) > + break; > + > + dn = le32_to_cpu(event->generic.field[1]); > + udev->ssp_rate = USB_SSP_GEN_UNKNOWN; > + > + if (TRB_DN_SUBLINK_SPEED_LP(dn) == > + TRB_DN_SUBLINK_SPEED_LP_SSP) { > + udev->speed = USB_SPEED_SUPER_PLUS; > + > + if (TRB_DN_SUBLINK_SPEED_LSE(dn) != > + TRB_DN_SUBLINK_SPEED_LSE_GBPS) > + break; > + > + if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 10) { > + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) > + udev->ssp_rate = USB_SSP_GEN_2x2; > + else > + udev->ssp_rate = USB_SSP_GEN_2x1; > + } else if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 5) { > + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) > + udev->ssp_rate = USB_SSP_GEN_1x2; > + } > + } else { > + udev->speed = USB_SPEED_SUPER; > + } > + break; > + } > } > > /* > diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h > index 9192465fd5f3..ce2ca67c115f 100644 > --- a/drivers/usb/host/xhci.h > +++ b/drivers/usb/host/xhci.h > @@ -267,6 +267,7 @@ struct xhci_op_regs { > * SW does need to pay attention to function wake notifications. > */ > #define DEV_NOTE_FWAKE ENABLE_DEV_NOTE(1) > +#define DEV_NOTE_SUBLINK_SPEED ENABLE_DEV_NOTE(5) > > /* CRCR - Command Ring Control Register - cmd_ring bitmasks */ > /* bit 0 is the command ring cycle state */ > @@ -1434,6 +1435,30 @@ union xhci_trb { > /* Get NEC firmware revision. */ > #define TRB_NEC_GET_FW 49 > > +/* Get Device Notification type */ > +#define TRB_DN_TYPE(p) (((p) >> 4) & 0xf) > + > +#define TRB_DN_TYPE_FUNC_WAKE 1 > +#define TRB_DN_TYPE_SUBLINK_SPEED 5 > + > +/* Get sublink speed attributes */ > +#define TRB_DN_SUBLINK_SPEED_LSE(p) (((p) >> 4) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LSE_BPS 0 > +#define TRB_DN_SUBLINK_SPEED_LSE_KBPS 1 > +#define TRB_DN_SUBLINK_SPEED_LSE_MBPS 2 > +#define TRB_DN_SUBLINK_SPEED_LSE_GBPS 3 > +#define TRB_DN_SUBLINK_SPEED_ST(p) (((p) >> 6) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LANES(p) (((p) >> 10) & 0xf) > +#define TRB_DN_SUBLINK_SPEED_LP(p) (((p) >> 14) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LP_SS 0 > +#define TRB_DN_SUBLINK_SPEED_LP_SSP 1 > +#define TRB_DN_SUBLINK_SPEED_LSM(p) (((p) >> 16) & 0xffff) > + > +#define TRB_DN_SUBLINK_SPEED_IS_SYMMETRIC(p) \ > + (!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(0))) > +#define TRB_DN_SUBLINK_SPEED_IS_TX(p) \ > + (!!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(1))) > + > static inline const char *xhci_trb_type_string(u8 type) > { > switch (type) { > > > > > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 3:10 ` youling 257 @ 2021-12-31 3:46 ` Thinh Nguyen 2021-12-31 4:42 ` youling 257 2021-12-31 4:52 ` youling 257 0 siblings, 2 replies; 22+ messages in thread From: Thinh Nguyen @ 2021-12-31 3:46 UTC (permalink / raw) To: youling 257, Thinh Nguyen Cc: Greg KH, mathias.nyman, william.allentx, linux-usb Hi, youling 257 wrote: > test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 > [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number > 2 using xhci_hcd > [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected > > but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), > 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), > run=1557-1557msec > READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), > io=1000MiB (1049MB), run=2140-2140msec > > the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), > 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), > run=1194-1194msec > READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), > io=1000MiB (1049MB), run=1328-1328msec > Let's avoid top-post. Some comments: 1) Just because the host is capable of gen2x2, it doesn't mean it will run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so that's the limit. The test speed for gen2x1 above is not unreasonable. 2) You're comparing 2 different controllers performance. The "mainboard" performs better for the specific setup and specific test that you use. (I'm assuming that the only difference in your test setup is the host controller and rest is the same). 3) Find a gen2x2 capable device to test ASmedia gen2x2 speed if that's what you're checking for. BR, Thinh > 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >> Hi, >> >> youling 257 wrote: >>> 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: >>>> On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >>>>> where i can find the series patch? >>>>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!M_zXKjO1JtIkz57qZ7BEEL7zjx2QXQTfau26hBNLX7bKEL_vOP-m8Xn1eZ14VRpY-0Ga$ >>>>> >>>> >>>> There is nothing at that link. >>>> >>>> What is the lore.kernel.org link for the patch you are curious about? >>>> >>>>> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >>>>> 500MB/s. >>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, 20000 >>>>> maiwo k1690 is on >>>>> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >>>>> 5000 >>>>> >>>>> >>>>> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>> Controller (prog-if 30 [XHCI]) >>>>> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>> Controller >>>>> >>>>> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >>>>> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, assigned >>>>> bus >>>>> number 2 >>>>> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >>>>> SuperSpeed >>>>> >>>>> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using >>>>> xhci_hcd >>>>> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >>>>> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >>>>> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device >>>>> 1.00 PQ: 0 ANSI: 6 >>>>> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >>>>> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: >>>>> (256 >>>>> GB/238 GiB) >>>>> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >>>>> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >>>>> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >>>>> enabled, doesn't support DPO or FUA >>>>> [ 1051.072131] sda: sda1 sda2 >>>>> >>>>> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe >>>>> to >>>>> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on >>>>> PciExpress >>>>> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be >>>>> 10Gbps. >>>>> >>>> >>>> Are you sure that your hardware can really support this? Do you have >>>> the right cable and the device will support this speed? >>> 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series >>> Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) >>> Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 >>> XHCI Controller >>> >>> maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. >>> [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number >>> 2 using xhci_hcd >>> [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected >>> [ 1050.028560] scsi host9: usb-storage 2-2:1.0 >>> >>> pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. >>> I don't have windows os to test them, may be 5gbps on windows yet. >>> Is there a way to hack them to 10Gbps on linux? >>> >>>> And most important, what kernel version are you using? >>> kernel 5.16 rc7. >>>> thanks, >>>> >>>> greg k-h >>>> >> >> The ASmedia host controller incorrectly reports the speed ID in the >> port-status mismatching with its PSI capability for SSP devices. As >> a result, the host/hub driver will report the wrong speed. >> >> To resolve/workaround this, the xHCI driver can capture the device speed >> from sublink speed notification of a SSP device. All SSP devices must >> send sublink speed device notification, so this method should resolve >> your issue. >> ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 3:46 ` Thinh Nguyen @ 2021-12-31 4:42 ` youling 257 2021-12-31 4:52 ` youling 257 1 sibling, 0 replies; 22+ messages in thread From: youling 257 @ 2021-12-31 4:42 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > Hi, > > youling 257 wrote: >> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >> 2 using xhci_hcd >> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >> >> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >> run=1557-1557msec >> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >> io=1000MiB (1049MB), run=2140-2140msec >> >> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >> run=1194-1194msec >> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >> io=1000MiB (1049MB), run=1328-1328msec >> > > Let's avoid top-post. > > Some comments: > 1) Just because the host is capable of gen2x2, it doesn't mean it will > run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so > that's the limit. The test speed for gen2x1 above is not unreasonable. > > 2) You're comparing 2 different controllers performance. The "mainboard" > performs better for the specific setup and specific test that you use. > (I'm assuming that the only difference in your test setup is the host > controller and rest is the same). > > 3) Find a gen2x2 capable device to test ASmedia gen2x2 speed if that's > what you're checking for. gen2x1 capable device to test ASmedia gen2x2 speed, can 1000MB/s on win10 pe, speed faster than on linux. > BR, > Thinh > >> 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>> Hi, >>> >>> youling 257 wrote: >>>> 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: >>>>> On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >>>>>> where i can find the series patch? >>>>>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!M_zXKjO1JtIkz57qZ7BEEL7zjx2QXQTfau26hBNLX7bKEL_vOP-m8Xn1eZ14VRpY-0Ga$ >>>>>> >>>>> >>>>> There is nothing at that link. >>>>> >>>>> What is the lore.kernel.org link for the patch you are curious about? >>>>> >>>>>> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >>>>>> 500MB/s. >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, >>>>>> 20000 >>>>>> maiwo k1690 is on >>>>>> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >>>>>> 5000 >>>>>> >>>>>> >>>>>> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>>> Controller (prog-if 30 [XHCI]) >>>>>> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>>> Controller >>>>>> >>>>>> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >>>>>> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, >>>>>> assigned >>>>>> bus >>>>>> number 2 >>>>>> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >>>>>> SuperSpeed >>>>>> >>>>>> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using >>>>>> xhci_hcd >>>>>> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >>>>>> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >>>>>> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 >>>>>> Device >>>>>> 1.00 PQ: 0 ANSI: 6 >>>>>> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >>>>>> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: >>>>>> (256 >>>>>> GB/238 GiB) >>>>>> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >>>>>> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >>>>>> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >>>>>> enabled, doesn't support DPO or FUA >>>>>> [ 1051.072131] sda: sda1 sda2 >>>>>> >>>>>> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe >>>>>> to >>>>>> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on >>>>>> PciExpress >>>>>> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be >>>>>> 10Gbps. >>>>>> >>>>> >>>>> Are you sure that your hardware can really support this? Do you have >>>>> the right cable and the device will support this speed? >>>> 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series >>>> Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) >>>> Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 >>>> XHCI Controller >>>> >>>> maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. >>>> [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number >>>> 2 using xhci_hcd >>>> [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected >>>> [ 1050.028560] scsi host9: usb-storage 2-2:1.0 >>>> >>>> pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. >>>> I don't have windows os to test them, may be 5gbps on windows yet. >>>> Is there a way to hack them to 10Gbps on linux? >>>> >>>>> And most important, what kernel version are you using? >>>> kernel 5.16 rc7. >>>>> thanks, >>>>> >>>>> greg k-h >>>>> >>> >>> The ASmedia host controller incorrectly reports the speed ID in the >>> port-status mismatching with its PSI capability for SSP devices. As >>> a result, the host/hub driver will report the wrong speed. >>> >>> To resolve/workaround this, the xHCI driver can capture the device speed >>> from sublink speed notification of a SSP device. All SSP devices must >>> send sublink speed device notification, so this method should resolve >>> your issue. >>> > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 3:46 ` Thinh Nguyen 2021-12-31 4:42 ` youling 257 @ 2021-12-31 4:52 ` youling 257 2021-12-31 7:02 ` Thinh Nguyen 1 sibling, 1 reply; 22+ messages in thread From: youling 257 @ 2021-12-31 4:52 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > Hi, > > youling 257 wrote: >> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >> 2 using xhci_hcd >> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >> >> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >> run=1557-1557msec >> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >> io=1000MiB (1049MB), run=2140-2140msec >> >> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >> run=1194-1194msec >> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >> io=1000MiB (1049MB), run=1328-1328msec >> > > Let's avoid top-post. > > Some comments: > 1) Just because the host is capable of gen2x2, it doesn't mean it will > run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so > that's the limit. The test speed for gen2x1 above is not unreasonable. my device can only operate up to gen2x1 10gbps speed on window, only 5gbps on linux kernel 5.16rc7. > 2) You're comparing 2 different controllers performance. The "mainboard" > performs better for the specific setup and specific test that you use. > (I'm assuming that the only difference in your test setup is the host > controller and rest is the same). > > 3) Find a gen2x2 capable device to test ASmedia gen2x2 speed if that's > what you're checking for. > > BR, > Thinh > >> 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>> Hi, >>> >>> youling 257 wrote: >>>> 2021-12-30 21:30 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: >>>>> On Thu, Dec 30, 2021 at 09:10:14PM +0800, youling257 wrote: >>>>>> where i can find the series patch? >>>>>> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-usb/list/?series=427561__;!!A4F2R9G_pg!M_zXKjO1JtIkz57qZ7BEEL7zjx2QXQTfau26hBNLX7bKEL_vOP-m8Xn1eZ14VRpY-0Ga$ >>>>>> >>>>> >>>>> There is nothing at that link. >>>>> >>>>> What is the lore.kernel.org link for the patch you are curious about? >>>>> >>>>>> when i used maiwo k1690(10gbps) connect to ASM3242 Controller, only >>>>>> 500MB/s. >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb3/speed, 480 >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/speed, >>>>>> 20000 >>>>>> maiwo k1690 is on >>>>>> /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1. >>>>>> cat /sys/devices/pci0000:00/0000:00:01.3/0000:09:00.0/usb4/4-1/speed, >>>>>> 5000 >>>>>> >>>>>> >>>>>> 01:00.0 USB controller: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>>> Controller (prog-if 30 [XHCI]) >>>>>> Subsystem: ASMedia Technology Inc. ASM3242 USB 3.2 Host >>>>>> Controller >>>>>> >>>>>> [ 0.359281] xhci_hcd 0000:01:00.0: xHCI Host Controller >>>>>> [ 0.359283] xhci_hcd 0000:01:00.0: new USB bus registered, >>>>>> assigned >>>>>> bus >>>>>> number 2 >>>>>> [ 0.359285] xhci_hcd 0000:01:00.0: Host supports USB 3.2 Enhanced >>>>>> SuperSpeed >>>>>> >>>>>> [ 1191.734123] usb 4-1: new SuperSpeed USB device number 2 using >>>>>> xhci_hcd >>>>>> [ 1191.794767] usb-storage 4-1:1.0: USB Mass Storage device detected >>>>>> [ 1191.795049] scsi host9: usb-storage 4-1:1.0 >>>>>> [ 1051.051274] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 >>>>>> Device >>>>>> 1.00 PQ: 0 ANSI: 6 >>>>>> [ 1051.051442] sd 9:0:0:0: Attached scsi generic sg0 type 0 >>>>>> [ 1051.054461] sd 9:0:0:0: [sda] 500118192 512-byte logical blocks: >>>>>> (256 >>>>>> GB/238 GiB) >>>>>> [ 1051.055068] sd 9:0:0:0: [sda] Write Protect is off >>>>>> [ 1051.055073] sd 9:0:0:0: [sda] Mode Sense: 37 00 00 08 >>>>>> [ 1051.055716] sd 9:0:0:0: [sda] Write cache: disabled, read cache: >>>>>> enabled, doesn't support DPO or FUA >>>>>> [ 1051.072131] sda: sda1 sda2 >>>>>> >>>>>> i don't have NVMe to USB 2x2 Enclosure (ASM2364 chipset), i have NVMe >>>>>> to >>>>>> USB 2x1 Enclosure (RTL9120B chipset), maiwo k1690, using it on >>>>>> PciExpress >>>>>> X4 add in card (ASM3242 chipset), it only 5Gbps speed, should be >>>>>> 10Gbps. >>>>>> >>>>> >>>>> Are you sure that your hardware can really support this? Do you have >>>>> the right cable and the device will support this speed? >>>> 02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series >>>> Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI]) >>>> Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 >>>> XHCI Controller >>>> >>>> maiwo k1690 connect to mainboard usb3.2 gen2x1 port can 10gbps. >>>> [ 1049.965556] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number >>>> 2 using xhci_hcd >>>> [ 1050.028280] usb-storage 2-2:1.0: USB Mass Storage device detected >>>> [ 1050.028560] scsi host9: usb-storage 2-2:1.0 >>>> >>>> pcie to usb3.2 gen2x2 asm3242 should be compatible usb3.2 gen2x1. >>>> I don't have windows os to test them, may be 5gbps on windows yet. >>>> Is there a way to hack them to 10Gbps on linux? >>>> >>>>> And most important, what kernel version are you using? >>>> kernel 5.16 rc7. >>>>> thanks, >>>>> >>>>> greg k-h >>>>> >>> >>> The ASmedia host controller incorrectly reports the speed ID in the >>> port-status mismatching with its PSI capability for SSP devices. As >>> a result, the host/hub driver will report the wrong speed. >>> >>> To resolve/workaround this, the xHCI driver can capture the device speed >>> from sublink speed notification of a SSP device. All SSP devices must >>> send sublink speed device notification, so this method should resolve >>> your issue. >>> > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 4:52 ` youling 257 @ 2021-12-31 7:02 ` Thinh Nguyen 2021-12-31 7:59 ` youling 257 2021-12-31 8:42 ` youling 257 0 siblings, 2 replies; 22+ messages in thread From: Thinh Nguyen @ 2021-12-31 7:02 UTC (permalink / raw) To: youling 257, Thinh Nguyen Cc: Greg KH, mathias.nyman, william.allentx, linux-usb youling 257 wrote: > 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >> Hi, >> >> youling 257 wrote: >>> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >>> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >>> 2 using xhci_hcd >>> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >>> >>> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >>> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >>> run=1557-1557msec >>> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >>> io=1000MiB (1049MB), run=2140-2140msec >>> >>> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >>> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >>> run=1194-1194msec >>> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >>> io=1000MiB (1049MB), run=1328-1328msec >>> >> >> Let's avoid top-post. >> >> Some comments: >> 1) Just because the host is capable of gen2x2, it doesn't mean it will >> run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so >> that's the limit. The test speed for gen2x1 above is not unreasonable. > my device can only operate up to gen2x1 10gbps speed on window, only > 5gbps on linux kernel 5.16rc7. With the change I provided, you were able to run test at gen2x1, albeit slower than expect. (i.e. write speed at 673MB/s for ASmedia host must be SSP). The issue with device unable to operate at SSP is at least answered. If you're looking to find out why the performance is slow, confirm these items first: 1) Are you using the same application to test on Linux to compare with Windows? (Looks like you're using CrystalDiskMark for your Windows test) 2) If you're using the same application, are you using the same test parameters and version? 3) Is your device operating in BOT or UASP in Linux? UAS Protocol is generally faster. Newer device generally uses UASP, and I assume yours is a newer device (check your enclosure). Make sure there's no quirk preventing the device operating in UASP. If all of those are checked out, you can start capturing logs so others may look into it. BR, Thinh (btw, I'll be on vacation for a week, maybe others can help while I'm away.) ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 7:02 ` Thinh Nguyen @ 2021-12-31 7:59 ` youling 257 2021-12-31 8:42 ` youling 257 1 sibling, 0 replies; 22+ messages in thread From: youling 257 @ 2021-12-31 7:59 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb 2021-12-31 15:02 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > youling 257 wrote: >> 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>> Hi, >>> >>> youling 257 wrote: >>>> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >>>> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >>>> 2 using xhci_hcd >>>> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >>>> >>>> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >>>> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >>>> run=1557-1557msec >>>> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >>>> io=1000MiB (1049MB), run=2140-2140msec >>>> >>>> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >>>> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >>>> run=1194-1194msec >>>> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >>>> io=1000MiB (1049MB), run=1328-1328msec >>>> >>> >>> Let's avoid top-post. >>> >>> Some comments: >>> 1) Just because the host is capable of gen2x2, it doesn't mean it will >>> run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so >>> that's the limit. The test speed for gen2x1 above is not unreasonable. > >> my device can only operate up to gen2x1 10gbps speed on window, only >> 5gbps on linux kernel 5.16rc7. > > With the change I provided, you were able to run test at gen2x1, albeit > slower than expect. (i.e. write speed at 673MB/s for ASmedia host must > be SSP). The issue with device unable to operate at SSP is at least > answered. > > If you're looking to find out why the performance is slow, confirm these > items first: > > 1) Are you using the same application to test on Linux to compare with > Windows? (Looks like you're using CrystalDiskMark for your Windows test) linux kdiskmark, windows crystaldiskmark > 2) If you're using the same application, are you using the same test > parameters and version? kdiskmark and crystaldiskmark used same parameters, seq1M Q8T1, linux 500MB/s, windows 1000MB/s. > 3) Is your device operating in BOT or UASP in Linux? UAS Protocol is > generally faster. Newer device generally uses UASP, and I assume yours > is a newer device (check your enclosure). Make sure there's no quirk > preventing the device operating in UASP. > > If all of those are checked out, you can start capturing logs so others > may look into it. > > BR, > Thinh > > (btw, I'll be on vacation for a week, maybe others can help while I'm > away.) > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 7:02 ` Thinh Nguyen 2021-12-31 7:59 ` youling 257 @ 2021-12-31 8:42 ` youling 257 2022-01-13 1:41 ` Thinh Nguyen 1 sibling, 1 reply; 22+ messages in thread From: youling 257 @ 2021-12-31 8:42 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb 2021-12-31 15:02 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > youling 257 wrote: >> 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>> Hi, >>> >>> youling 257 wrote: >>>> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >>>> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >>>> 2 using xhci_hcd >>>> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >>>> >>>> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >>>> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >>>> run=1557-1557msec >>>> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >>>> io=1000MiB (1049MB), run=2140-2140msec >>>> >>>> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >>>> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >>>> run=1194-1194msec >>>> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >>>> io=1000MiB (1049MB), run=1328-1328msec >>>> >>> >>> Let's avoid top-post. >>> >>> Some comments: >>> 1) Just because the host is capable of gen2x2, it doesn't mean it will >>> run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so >>> that's the limit. The test speed for gen2x1 above is not unreasonable. > >> my device can only operate up to gen2x1 10gbps speed on window, only >> 5gbps on linux kernel 5.16rc7. > > With the change I provided, you were able to run test at gen2x1, albeit > slower than expect. (i.e. write speed at 673MB/s for ASmedia host must > be SSP). The issue with device unable to operate at SSP is at least > answered. > > If you're looking to find out why the performance is slow, confirm these > items first: > > 1) Are you using the same application to test on Linux to compare with > Windows? (Looks like you're using CrystalDiskMark for your Windows test) > > 2) If you're using the same application, are you using the same test > parameters and version? > > 3) Is your device operating in BOT or UASP in Linux? UAS Protocol is my kernel config #CONFIG_USB_UAS is not set. > generally faster. Newer device generally uses UASP, and I assume yours > is a newer device (check your enclosure). Make sure there's no quirk > preventing the device operating in UASP. CONFIG_USB_UAS=y [ 524.630081] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number 5 using xhci_hcd [ 524.747496] scsi host9: uas [ 524.757580] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device 1.00 PQ: 0 ANSI: 6 Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 20000M/x2 |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 10000M windows fat32 speed, https://imgur.com/a/eq9qhKj linux ext4 speed, https://imgur.com/a/tUAskgV > If all of those are checked out, you can start capturing logs so others > may look into it. > > BR, > Thinh > > (btw, I'll be on vacation for a week, maybe others can help while I'm > away.) > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 8:42 ` youling 257 @ 2022-01-13 1:41 ` Thinh Nguyen 2022-01-13 6:05 ` youling 257 0 siblings, 1 reply; 22+ messages in thread From: Thinh Nguyen @ 2022-01-13 1:41 UTC (permalink / raw) To: youling 257, Thinh Nguyen Cc: Greg KH, mathias.nyman, william.allentx, linux-usb youling 257 wrote: > 2021-12-31 15:02 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >> youling 257 wrote: >>> 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>>> Hi, >>>> >>>> youling 257 wrote: >>>>> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >>>>> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >>>>> 2 using xhci_hcd >>>>> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >>>>> >>>>> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >>>>> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >>>>> run=1557-1557msec >>>>> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >>>>> io=1000MiB (1049MB), run=2140-2140msec >>>>> >>>>> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >>>>> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >>>>> run=1194-1194msec >>>>> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >>>>> io=1000MiB (1049MB), run=1328-1328msec >>>>> >>>> >>>> Let's avoid top-post. >>>> >>>> Some comments: >>>> 1) Just because the host is capable of gen2x2, it doesn't mean it will >>>> run at gen2x2 speed. Your device can only operate up to gen2x1 speed, so >>>> that's the limit. The test speed for gen2x1 above is not unreasonable. >> >>> my device can only operate up to gen2x1 10gbps speed on window, only >>> 5gbps on linux kernel 5.16rc7. >> >> With the change I provided, you were able to run test at gen2x1, albeit >> slower than expect. (i.e. write speed at 673MB/s for ASmedia host must >> be SSP). The issue with device unable to operate at SSP is at least >> answered. >> >> If you're looking to find out why the performance is slow, confirm these >> items first: >> >> 1) Are you using the same application to test on Linux to compare with >> Windows? (Looks like you're using CrystalDiskMark for your Windows test) >> >> 2) If you're using the same application, are you using the same test >> parameters and version? >> >> 3) Is your device operating in BOT or UASP in Linux? UAS Protocol is > my kernel config #CONFIG_USB_UAS is not set. Ok. >> generally faster. Newer device generally uses UASP, and I assume yours >> is a newer device (check your enclosure). Make sure there's no quirk >> preventing the device operating in UASP. > CONFIG_USB_UAS=y > [ 524.630081] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number > 5 using xhci_hcd > [ 524.747496] scsi host9: uas > [ 524.757580] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device > 1.00 PQ: 0 ANSI: 6 > Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 20000M/x2 > |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 10000M > > windows fat32 speed, https://urldefense.com/v3/__https://imgur.com/a/eq9qhKj__;!!A4F2R9G_pg!OkYlXXf1Zw-EMemp22NTRgqOnOxlP-Xp95WYBJvguF9b4iyS4SX_y4Z5pAe_IaB7ZNtb$ > linux ext4 speed, https://urldefense.com/v3/__https://imgur.com/a/tUAskgV__;!!A4F2R9G_pg!OkYlXXf1Zw-EMemp22NTRgqOnOxlP-Xp95WYBJvguF9b4iyS4SX_y4Z5pAe_IcQVJqNn$ > I can't view the "windows" image, but it seems like it's running in high performance in Linux as UASP device now right? (I see ~1GB/s) BR, Thinh ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2022-01-13 1:41 ` Thinh Nguyen @ 2022-01-13 6:05 ` youling 257 0 siblings, 0 replies; 22+ messages in thread From: youling 257 @ 2022-01-13 6:05 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb 2022-01-13 9:41 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > youling 257 wrote: >> 2021-12-31 15:02 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>> youling 257 wrote: >>>> 2021-12-31 11:46 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >>>>> Hi, >>>>> >>>>> youling 257 wrote: >>>>>> test this patch, cat /sys/bus/usb/devices/4-1/speed, 10000 >>>>>> [ 74.694284] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >>>>>> 2 using xhci_hcd >>>>>> [ 74.750329] usb-storage 4-1:1.0: USB Mass Storage device detected >>>>>> >>>>>> but speed, pcie to usb3.2 gen2x2, WRITE: bw=642MiB/s (673MB/s), >>>>>> 642MiB/s-642MiB/s (673MB/s-673MB/s), io=1000MiB (1049MB), >>>>>> run=1557-1557msec >>>>>> READ: bw=467MiB/s (490MB/s), 467MiB/s-467MiB/s (490MB/s-490MB/s), >>>>>> io=1000MiB (1049MB), run=2140-2140msec >>>>>> >>>>>> the mainboard usb3.2 gen2x1, WRITE: bw=838MiB/s (878MB/s), >>>>>> 838MiB/s-838MiB/s (878MB/s-878MB/s), io=1000MiB (1049MB), >>>>>> run=1194-1194msec >>>>>> READ: bw=753MiB/s (790MB/s), 753MiB/s-753MiB/s (790MB/s-790MB/s), >>>>>> io=1000MiB (1049MB), run=1328-1328msec >>>>>> >>>>> >>>>> Let's avoid top-post. >>>>> >>>>> Some comments: >>>>> 1) Just because the host is capable of gen2x2, it doesn't mean it will >>>>> run at gen2x2 speed. Your device can only operate up to gen2x1 speed, >>>>> so >>>>> that's the limit. The test speed for gen2x1 above is not unreasonable. >>> >>>> my device can only operate up to gen2x1 10gbps speed on window, only >>>> 5gbps on linux kernel 5.16rc7. >>> >>> With the change I provided, you were able to run test at gen2x1, albeit >>> slower than expect. (i.e. write speed at 673MB/s for ASmedia host must >>> be SSP). The issue with device unable to operate at SSP is at least >>> answered. >>> >>> If you're looking to find out why the performance is slow, confirm these >>> items first: >>> >>> 1) Are you using the same application to test on Linux to compare with >>> Windows? (Looks like you're using CrystalDiskMark for your Windows test) >>> >>> 2) If you're using the same application, are you using the same test >>> parameters and version? >>> >>> 3) Is your device operating in BOT or UASP in Linux? UAS Protocol is > >> my kernel config #CONFIG_USB_UAS is not set. > > Ok. > >>> generally faster. Newer device generally uses UASP, and I assume yours >>> is a newer device (check your enclosure). Make sure there's no quirk >>> preventing the device operating in UASP. >> CONFIG_USB_UAS=y >> [ 524.630081] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number >> 5 using xhci_hcd >> [ 524.747496] scsi host9: uas >> [ 524.757580] scsi 9:0:0:0: Direct-Access Realtek USB 3.2 Device >> 1.00 PQ: 0 ANSI: 6 >> Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 20000M/x2 >> |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 10000M >> >> windows fat32 speed, >> https://urldefense.com/v3/__https://imgur.com/a/eq9qhKj__;!!A4F2R9G_pg!OkYlXXf1Zw-EMemp22NTRgqOnOxlP-Xp95WYBJvguF9b4iyS4SX_y4Z5pAe_IaB7ZNtb$ >> >> linux ext4 speed, >> https://urldefense.com/v3/__https://imgur.com/a/tUAskgV__;!!A4F2R9G_pg!OkYlXXf1Zw-EMemp22NTRgqOnOxlP-Xp95WYBJvguF9b4iyS4SX_y4Z5pAe_IcQVJqNn$ >> >> > > I can't view the "windows" image, but it seems like it's running in high > performance in Linux as UASP device now right? (I see ~1GB/s) right. > BR, > Thinh > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 1:39 ` Thinh Nguyen 2021-12-31 3:10 ` youling 257 @ 2021-12-31 8:49 ` youling 257 2022-01-13 17:53 ` Thinh Nguyen 1 sibling, 1 reply; 22+ messages in thread From: youling 257 @ 2021-12-31 8:49 UTC (permalink / raw) To: Thinh Nguyen; +Cc: Greg KH, mathias.nyman, william.allentx, linux-usb please you subject a patch to linux-usb. 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: > The ASmedia host controller incorrectly reports the speed ID in the > port-status mismatching with its PSI capability for SSP devices. As > a result, the host/hub driver will report the wrong speed. > > To resolve/workaround this, the xHCI driver can capture the device speed > from sublink speed notification of a SSP device. All SSP devices must > send sublink speed device notification, so this method should resolve > your issue. > > You can apply the change below. This should resolve your issue. > > BR, > Thinh > > > diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c > index 9ddcc0ab4db7..6de15f004684 100644 > --- a/drivers/usb/host/xhci-mem.c > +++ b/drivers/usb/host/xhci-mem.c > @@ -2602,7 +2602,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) > */ > temp = readl(&xhci->op_regs->dev_notification); > temp &= ~DEV_NOTE_MASK; > - temp |= DEV_NOTE_FWAKE; > + temp |= DEV_NOTE_FWAKE | DEV_NOTE_SUBLINK_SPEED; > writel(temp, &xhci->op_regs->dev_notification); > > return 0; > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index 99d9d9c88988..80081b3fd52a 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -1860,6 +1860,8 @@ static void handle_device_notification(struct xhci_hcd > *xhci, > { > u32 slot_id; > struct usb_device *udev; > + u32 type; > + u32 dn; > > slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->generic.field[3])); > if (!xhci->devs[slot_id]) { > @@ -1868,11 +1870,45 @@ static void handle_device_notification(struct > xhci_hcd *xhci, > return; > } > > - xhci_dbg(xhci, "Device Wake Notification event for slot ID %u\n", > - slot_id); > udev = xhci->devs[slot_id]->udev; > - if (udev && udev->parent) > - usb_wakeup_notification(udev->parent, udev->portnum); > + type = TRB_DN_TYPE(le32_to_cpu(event->generic.field[0])); > + > + switch (type) { > + case TRB_DN_TYPE_FUNC_WAKE: > + xhci_info(xhci, "Device Wake Notification event for slot ID %u\n", > + slot_id); > + if (udev && udev->parent) > + usb_wakeup_notification(udev->parent, udev->portnum); > + break; > + case TRB_DN_TYPE_SUBLINK_SPEED: > + if (!udev) > + break; > + > + dn = le32_to_cpu(event->generic.field[1]); > + udev->ssp_rate = USB_SSP_GEN_UNKNOWN; > + > + if (TRB_DN_SUBLINK_SPEED_LP(dn) == > + TRB_DN_SUBLINK_SPEED_LP_SSP) { > + udev->speed = USB_SPEED_SUPER_PLUS; > + > + if (TRB_DN_SUBLINK_SPEED_LSE(dn) != > + TRB_DN_SUBLINK_SPEED_LSE_GBPS) > + break; > + > + if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 10) { > + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) > + udev->ssp_rate = USB_SSP_GEN_2x2; > + else > + udev->ssp_rate = USB_SSP_GEN_2x1; > + } else if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 5) { > + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) > + udev->ssp_rate = USB_SSP_GEN_1x2; > + } > + } else { > + udev->speed = USB_SPEED_SUPER; > + } > + break; > + } > } > > /* > diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h > index 9192465fd5f3..ce2ca67c115f 100644 > --- a/drivers/usb/host/xhci.h > +++ b/drivers/usb/host/xhci.h > @@ -267,6 +267,7 @@ struct xhci_op_regs { > * SW does need to pay attention to function wake notifications. > */ > #define DEV_NOTE_FWAKE ENABLE_DEV_NOTE(1) > +#define DEV_NOTE_SUBLINK_SPEED ENABLE_DEV_NOTE(5) > > /* CRCR - Command Ring Control Register - cmd_ring bitmasks */ > /* bit 0 is the command ring cycle state */ > @@ -1434,6 +1435,30 @@ union xhci_trb { > /* Get NEC firmware revision. */ > #define TRB_NEC_GET_FW 49 > > +/* Get Device Notification type */ > +#define TRB_DN_TYPE(p) (((p) >> 4) & 0xf) > + > +#define TRB_DN_TYPE_FUNC_WAKE 1 > +#define TRB_DN_TYPE_SUBLINK_SPEED 5 > + > +/* Get sublink speed attributes */ > +#define TRB_DN_SUBLINK_SPEED_LSE(p) (((p) >> 4) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LSE_BPS 0 > +#define TRB_DN_SUBLINK_SPEED_LSE_KBPS 1 > +#define TRB_DN_SUBLINK_SPEED_LSE_MBPS 2 > +#define TRB_DN_SUBLINK_SPEED_LSE_GBPS 3 > +#define TRB_DN_SUBLINK_SPEED_ST(p) (((p) >> 6) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LANES(p) (((p) >> 10) & 0xf) > +#define TRB_DN_SUBLINK_SPEED_LP(p) (((p) >> 14) & 0x3) > +#define TRB_DN_SUBLINK_SPEED_LP_SS 0 > +#define TRB_DN_SUBLINK_SPEED_LP_SSP 1 > +#define TRB_DN_SUBLINK_SPEED_LSM(p) (((p) >> 16) & 0xffff) > + > +#define TRB_DN_SUBLINK_SPEED_IS_SYMMETRIC(p) \ > + (!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(0))) > +#define TRB_DN_SUBLINK_SPEED_IS_TX(p) \ > + (!!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(1))) > + > static inline const char *xhci_trb_type_string(u8 type) > { > switch (type) { > > > > > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 2021-12-31 8:49 ` youling 257 @ 2022-01-13 17:53 ` Thinh Nguyen 0 siblings, 0 replies; 22+ messages in thread From: Thinh Nguyen @ 2022-01-13 17:53 UTC (permalink / raw) To: youling 257, Thinh Nguyen, mathias.nyman Cc: Greg KH, william.allentx, linux-usb youling 257 wrote: > please you subject a patch to linux-usb. > I'll take a look. > 2021-12-31 9:39 GMT+08:00, Thinh Nguyen <Thinh.Nguyen@synopsys.com>: >> The ASmedia host controller incorrectly reports the speed ID in the >> port-status mismatching with its PSI capability for SSP devices. As >> a result, the host/hub driver will report the wrong speed. >> >> To resolve/workaround this, the xHCI driver can capture the device speed >> from sublink speed notification of a SSP device. All SSP devices must >> send sublink speed device notification, so this method should resolve >> your issue. >> >> You can apply the change below. This should resolve your issue. >> >> BR, >> Thinh >> >> >> diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c >> index 9ddcc0ab4db7..6de15f004684 100644 >> --- a/drivers/usb/host/xhci-mem.c >> +++ b/drivers/usb/host/xhci-mem.c >> @@ -2602,7 +2602,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) >> */ >> temp = readl(&xhci->op_regs->dev_notification); >> temp &= ~DEV_NOTE_MASK; >> - temp |= DEV_NOTE_FWAKE; >> + temp |= DEV_NOTE_FWAKE | DEV_NOTE_SUBLINK_SPEED; >> writel(temp, &xhci->op_regs->dev_notification); >> >> return 0; >> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c >> index 99d9d9c88988..80081b3fd52a 100644 >> --- a/drivers/usb/host/xhci-ring.c >> +++ b/drivers/usb/host/xhci-ring.c >> @@ -1860,6 +1860,8 @@ static void handle_device_notification(struct xhci_hcd >> *xhci, >> { >> u32 slot_id; >> struct usb_device *udev; >> + u32 type; >> + u32 dn; >> >> slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->generic.field[3])); >> if (!xhci->devs[slot_id]) { >> @@ -1868,11 +1870,45 @@ static void handle_device_notification(struct >> xhci_hcd *xhci, >> return; >> } >> >> - xhci_dbg(xhci, "Device Wake Notification event for slot ID %u\n", >> - slot_id); >> udev = xhci->devs[slot_id]->udev; >> - if (udev && udev->parent) >> - usb_wakeup_notification(udev->parent, udev->portnum); >> + type = TRB_DN_TYPE(le32_to_cpu(event->generic.field[0])); >> + >> + switch (type) { >> + case TRB_DN_TYPE_FUNC_WAKE: >> + xhci_info(xhci, "Device Wake Notification event for slot ID %u\n", >> + slot_id); >> + if (udev && udev->parent) >> + usb_wakeup_notification(udev->parent, udev->portnum); >> + break; >> + case TRB_DN_TYPE_SUBLINK_SPEED: >> + if (!udev) >> + break; >> + >> + dn = le32_to_cpu(event->generic.field[1]); >> + udev->ssp_rate = USB_SSP_GEN_UNKNOWN; >> + >> + if (TRB_DN_SUBLINK_SPEED_LP(dn) == >> + TRB_DN_SUBLINK_SPEED_LP_SSP) { >> + udev->speed = USB_SPEED_SUPER_PLUS; >> + >> + if (TRB_DN_SUBLINK_SPEED_LSE(dn) != >> + TRB_DN_SUBLINK_SPEED_LSE_GBPS) >> + break; >> + >> + if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 10) { >> + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) >> + udev->ssp_rate = USB_SSP_GEN_2x2; >> + else >> + udev->ssp_rate = USB_SSP_GEN_2x1; >> + } else if (TRB_DN_SUBLINK_SPEED_LSM(dn) == 5) { >> + if (TRB_DN_SUBLINK_SPEED_LANES(dn)) >> + udev->ssp_rate = USB_SSP_GEN_1x2; >> + } >> + } else { >> + udev->speed = USB_SPEED_SUPER; >> + } >> + break; >> + } >> } >> >> /* >> diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h >> index 9192465fd5f3..ce2ca67c115f 100644 >> --- a/drivers/usb/host/xhci.h >> +++ b/drivers/usb/host/xhci.h >> @@ -267,6 +267,7 @@ struct xhci_op_regs { >> * SW does need to pay attention to function wake notifications. >> */ >> #define DEV_NOTE_FWAKE ENABLE_DEV_NOTE(1) >> +#define DEV_NOTE_SUBLINK_SPEED ENABLE_DEV_NOTE(5) >> >> /* CRCR - Command Ring Control Register - cmd_ring bitmasks */ >> /* bit 0 is the command ring cycle state */ >> @@ -1434,6 +1435,30 @@ union xhci_trb { >> /* Get NEC firmware revision. */ >> #define TRB_NEC_GET_FW 49 >> >> +/* Get Device Notification type */ >> +#define TRB_DN_TYPE(p) (((p) >> 4) & 0xf) >> + >> +#define TRB_DN_TYPE_FUNC_WAKE 1 >> +#define TRB_DN_TYPE_SUBLINK_SPEED 5 >> + >> +/* Get sublink speed attributes */ >> +#define TRB_DN_SUBLINK_SPEED_LSE(p) (((p) >> 4) & 0x3) >> +#define TRB_DN_SUBLINK_SPEED_LSE_BPS 0 >> +#define TRB_DN_SUBLINK_SPEED_LSE_KBPS 1 >> +#define TRB_DN_SUBLINK_SPEED_LSE_MBPS 2 >> +#define TRB_DN_SUBLINK_SPEED_LSE_GBPS 3 >> +#define TRB_DN_SUBLINK_SPEED_ST(p) (((p) >> 6) & 0x3) >> +#define TRB_DN_SUBLINK_SPEED_LANES(p) (((p) >> 10) & 0xf) >> +#define TRB_DN_SUBLINK_SPEED_LP(p) (((p) >> 14) & 0x3) >> +#define TRB_DN_SUBLINK_SPEED_LP_SS 0 >> +#define TRB_DN_SUBLINK_SPEED_LP_SSP 1 >> +#define TRB_DN_SUBLINK_SPEED_LSM(p) (((p) >> 16) & 0xffff) >> + >> +#define TRB_DN_SUBLINK_SPEED_IS_SYMMETRIC(p) \ >> + (!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(0))) >> +#define TRB_DN_SUBLINK_SPEED_IS_TX(p) \ >> + (!!(TRB_DN_SUBLINK_SPEED_ST(p) & BIT(1))) >> + >> static inline const char *xhci_trb_type_string(u8 type) >> { >> switch (type) { >> >> >> >> >> Hi Mathias/all, Some ASmedia hosts have issue with reporting correct port speed ID for devices operating in SSP. We can workaround this by getting the device speed from the device notification sublink speed instead. The question here is whether we should check speed from device notification (SSP only) or do we want to selectively set quirk for ASmedia hosts only. Should we trust a device response more or the host more? The change above that Youling tested overrides speed detected from port status with device notification sublink speed. Thanks, Thinh ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2022-01-13 17:53 UTC | newest] Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-09 6:41 USB 3.2 Gen 2x2 "Superspeed+20GBps" support for ASM3242 William Allen 2021-03-09 7:27 ` Thinh Nguyen 2021-03-09 12:02 ` Mathias Nyman 2021-03-09 22:51 ` William Allen 2021-03-10 0:56 ` Thinh Nguyen 2021-03-10 1:19 ` Thinh Nguyen 2021-12-30 13:10 ` youling257 2021-12-30 13:30 ` Greg KH 2021-12-30 13:49 ` Mathias Nyman 2021-12-30 14:57 ` youling 257 2021-12-31 1:39 ` Thinh Nguyen 2021-12-31 3:10 ` youling 257 2021-12-31 3:46 ` Thinh Nguyen 2021-12-31 4:42 ` youling 257 2021-12-31 4:52 ` youling 257 2021-12-31 7:02 ` Thinh Nguyen 2021-12-31 7:59 ` youling 257 2021-12-31 8:42 ` youling 257 2022-01-13 1:41 ` Thinh Nguyen 2022-01-13 6:05 ` youling 257 2021-12-31 8:49 ` youling 257 2022-01-13 17:53 ` Thinh Nguyen
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.