Re: usbip port number limits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/15/2017 01:52 AM, Juan Zea wrote:
>> On 11/14/2017 09:25 AM, Juan Zea wrote: 
>>> Hi, 
>>>
>>> I've been working on the issue. This is what I found about multi-controller setup: 
>>>
>>> The problem comes from the usbip tool trying to connect usb2 devices to usb3 ports, like this: 
>>>
>>> - usbip tool asks vhci driver for free port. 
>>> - If the first port (usb2) is already occupied, vhci answers with usb3 port (instead of next controller's usb2 port) 
>>> - usbip tool tries to connect usb2 device to usb3 port and fails 
>>
>> It would be interesting to see how this fails. Can you send me complete 
>> dmesg from client and server for this. 
> 
> I'm attaching two files for this: dmesg-usbip-server.txt and dmesg-usbip-client.txt
> Server is my own machine, and dmesg is too long, so I have selected latest lines. Hope it's enough.
> Client side is a kvm machine I'm using for these tests, so I made a clear boot just for this and its complete.
> 
> 
>>> - usbip tool asks for the next free port, which is still the same usb3 port. 
>>> - Loop the above forever 
>>
>> That doesn't sound right. 
> 
> I'm also attaching usbip attach output with debug option (usbip-attach-debug.txt). I think it's interesting to see this for the forever loop.
> 
>>>
>>> the code at tools/usb/usbip/libsrc/vhci_driver.c : 
>>> 329 int usbip_vhci_get_free_port(uint32_t speed) 
>>> 330 { 
>>> 331 for (int i = 0; i < vhci_driver->nports; i++) { 
>>> 332 if (speed == USB_SPEED_SUPER && 
>>> 333 vhci_driver->idev[i].hub != HUB_SPEED_SUPER) 
>>> 334 continue; 
>>> 335 
>>> 336 if (vhci_driver->idev[i].status == VDEV_ST_NULL) 
>>> 337 return vhci_driver->idev[i].port; 
>>> 338 } 
>>> 339 
>>> 340 return -1; 
>>> 341 } 
>>>
>>> prevents usb3 devices connecting to usb2 ports, but not the other way around. 
>>
>> Connecting usb2 device to usb3 port should work. It would make sense 
>> to prevent usb3 devices connecting to usb2 ports, and not the other 
>> way round. 
>>
> 
> Ok, that sounds right, but then... why having usb2 ports at all? Isn't it a nuisance to maintain code that duplicates the hubs if usb3 ports can do the job?> 

Some systems have both usb2 and usb3 ports. You can't get rid of
usb2 or usb support. More specifically LOW_SPEED, and HIGH_SPEED
support can't be removed. usb2 devices work in usb3 port due to
backwards protocol compatibility. You will see xhci, ehci drivers
in the for this very same reason.

thanks,
-- Shuah
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux