Messages in this thread | | | Subject | Re: [PATCH v3 2/2] usbip: Implement SG support to vhci-hcd and stub driver | From | shuah <> | Date | Mon, 5 Aug 2019 09:07:24 -0600 |
| |
On 8/5/19 2:04 AM, Suwan Kim wrote: > On Fri, Aug 02, 2019 at 04:41:52PM -0600, shuah wrote: >> Hi Suwan, >> >> On 8/2/19 11:36 AM, Suwan Kim wrote: >>> There are bugs on vhci with usb 3.0 storage device. >> >> This sentence doesn't make sense to me. What bugs? Ca you eloborate? > > Alan's patch description "usb-storage: Set virt_boundary_mask to > avoid SG overflows" elaborates the problem. In USB, each SG list > entry buffer should be divisible by the bulk maxpacket size. But > with native SG support, this problem doesn't matter because the > SG buffer is treated as contiguous buffer. But without native SG > support, storage driver breaks SG list into several URBs and each > URB is sparate transfer. > > Let's assume that driver request 31.5 KB data and has SG list which > has 3584 bytes buffer followed by 7 4096 bytes buffer for some > reason. USB Storage driver splits this SG list into several URBs > because VHCI doesn't support SG and send them separately. So the > first URB buffer size is 3584 bytes. When receiving data from device, > USB 3.0 device sends data packet of 1024 bytes size because the max > packet size of BULK pipe is 1024 bytes. So device sends 4096 bytes. > But the first URB buffer has only 3584 bytes buffer size. So host > controller terminates the transfer even though there is more data > to receive. > > Please also reference the mail thread > https://marc.info/?t=155449209600003&r=1&w=2 > https://marc.info/?l=linux-usb&m=155482317722223&w=2 >
I am asking you to elaborate and add it to the commit log instead of just saying "There are bugs on vhci with usb 3.0 storage device."
thanks, -- Shuah
| |