> > On Mon, 11 Feb 2019, Stanislaw Gruszka wrote: > > > On Mon, Feb 11, 2019 at 10:12:57AM -0500, Alan Stern wrote: > > > On Mon, 11 Feb 2019, Lorenzo Bianconi wrote: > > > > > > > Here it is a different issue respect to the AMD IOMMU one, dwc2 host driver > > > > does not implement SG I/O so probing fails. I guess it is still useful to > > > > implement a 'legacy' mode that enable mt76 on host controllers that do not implement > > > > SG I/O (rpi is a very common device so it will be cool to have mt76 working on > > > > it). Moreover we are not removing functionalities, user experience will remain > > > > the same > > > > > > Has anyone considered adding SG support to dwc2? It shouldn't be very > > > difficult. The corresponding change for ehci-hcd required adding no > > > more than about 30 lines of code. > > > > That would be cool. Perhaps somebody with dwc2 hardware could do this. > > > > However in mt76x02u we possibly would like to support other usb host > > drivers with sg_tablesize = 0 . I would like to clarify what is correct > > to do with such drivers. > > > > Is ok to pass buffer via urb->sg with urb->num_sgs = 1 ? Or maybe > > urb->num_sgs should be 0 to pass buffer via urb->sg on such drivers ? > > Or maybe non of above is correct and the only option that will work > > in 100% is pass buffer via urb->transfer_buffer ? > > See the kerneldoc for usb_sg_init(), usb_sg_wait(), and usb_sg_cancel() > in drivers/usb/core/message.c. These routines will always do the right > thing -- however usb_sg_wait() must be called in process context. > > Alan Stern > Hi Alan, I actually used usb_sg_init()/usb_sg_wait() as reference to implement mt76u {tx/rx} datapath, but I will double-check. I guess we should even consider if there are other usb host drivers that do not implement SG I/O and it is worth to support. I am wondering if the right approach is to add SG to the controller one by one or have legacy I/O in mt76 (not sure what is the 'best' approach) What do you think? Regards, Lorenzo