RE: xhci data toggle out of sync

From: Mahesh Vardhamanaiah <maheshmv_at_juniper.net>
Date: Tue, 19 Apr 2022 11:20:13 UTC
Hi,
Thanks for the clarification.

I have not added any changes to xhci driver it’s a pristine stable/12 driver. The error seems to come from 
xhci_configure_reset_endpoint->xhci_configure_endpoint_by_xfer-> xhci_configure_endpoint

       epno = XHCI_EPNO2EPID(epno);

            if (epno == 0)
                    return (USB_ERR_NO_PIPE);               /* invalid */


Thanks,
Mahesh


Juniper Business Use Only

-----Original Message-----
From: Hans Petter Selasky <hps@selasky.org> 
Sent: Tuesday, April 19, 2022 4:37 PM
To: Mahesh Vardhamanaiah <maheshmv@juniper.net>; freebsd-usb@freebsd.org
Cc: Steve Kiernan <stevek@juniper.net>; Justin Hibbits <jhibbits@juniper.net>; Kumara N Babu <bkumara@juniper.net>; Kamal Prasad <krprasad@juniper.net>; Kristof Provost <kp@FreeBSD.org>; Bjoern A. Zeeb <bz@FreeBSD.org>
Subject: Re: xhci data toggle out of sync

[External Email. Be cautious of content]


On 4/19/22 11:30, Mahesh Vardhamanaiah wrote:
> Hi HPS,
>
> The error seems to be NO_PIPE and end points are 2 & 3 but the 
> usbconfig dump_all_desc lists epaddress 1, 81 any idea why ?
>

Hi,

The XHCI endpoint context order is different from the endpoint numbers, so this is expected.

> ugen0.3: <Virtium VTDU31XC008G-A901> at usbus0, cfg=0 md=HOST spd=HIGH 
> (480Mbps) pwr=ON (100mA)
>
>    bLength = 0x0012
>    bDescriptorType = 0x0001
>    bcdUSB = 0x0200
>    bDeviceClass = 0x0000  <Probed by interface class>
>    bDeviceSubClass = 0x0000
>    bDeviceProtocol = 0x0000
>    bMaxPacketSize0 = 0x0040
>    idVendor = 0x2aaa
>    idProduct = 0x0100
>    bcdDevice = 0x0100
>    iManufacturer = 0x0001  <Virtium>
>    iProduct = 0x0003  <VTDU31XC008G-A901>
>    iSerialNumber = 0x0002  <P1T66005607903260063>
>    bNumConfigurations = 0x0001
>
>   Configuration index 0
>
>      bLength = 0x0009
>      bDescriptorType = 0x0002
>      wTotalLength = 0x0020
>      bNumInterfaces = 0x0001
>      bConfigurationValue = 0x0001
>      iConfiguration = 0x0000  <no string>
>      bmAttributes = 0x0080
>      bMaxPower = 0x0032
>
>      Interface 0
>        bLength = 0x0009
>        bDescriptorType = 0x0004
>        bInterfaceNumber = 0x0000
>        bAlternateSetting = 0x0000
>        bNumEndpoints = 0x0002
>        bInterfaceClass = 0x0008  <Mass storage>
>        bInterfaceSubClass = 0x0006
>        bInterfaceProtocol = 0x0050
>        iInterface = 0x0000  <no string>
>
>       Endpoint 0
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0081  <IN>
>          bmAttributes = 0x0002  <BULK>
>          wMaxPacketSize = 0x0200
>          bInterval = 0x0000
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
>
>       Endpoint 1
>          bLength = 0x0007
>          bDescriptorType = 0x0005
>          bEndpointAddress = 0x0001  <OUT>
>          bmAttributes = 0x0002  <BULK>
>          wMaxPacketSize = 0x0200
>          bInterval = 0x0000
>          bRefresh = 0x0000
>          bSynchAddress = 0x0000
>
>
>
> root@:RE:0%
>

xhci_do_command() does not return USB_ERR_NO_PIPE !

https://urldefense.com/v3/__http://fxr.watson.org/fxr/source/dev/usb/controller/xhci.c*L1154__;Iw!!NEt6yMaO-gk!XK7KjRCXNaNwxr1lfu8ePe4EUfDdnrQYz-WoXX_3ri8UqjB6UlUGnX59UQrmdFOy$

Do you have local patches perhaps?

--HPS