mt76x0u: Probing issues on Raspberry Pi 3 B+
Quoted 43 lines
Hi,
Am 11.02.19 um 11:04 schrieb Lorenzo Bianconi:
Quoted 31 lines
Quoted 31 lines · Lorenzo Bianconi
Quoted 9 lines
Quoted 9 lines · Stefan Wahren
Quoted 3 lines
Quoted 2 lines
could you please test the following series:
https://patchwork.kernel.org/cover/10764453/yeah this fixed the probing timeout and the driver will probe successful. AFAIK the dwc2 host mode doesn't support scatter-gather yet.
So this is either dwc2 scatter-gather problem which should be addressed in this driver or mt76x0u does something wrong when configuring SG.
Disabling SG is just workaround, which do not address actual problem.
Quoted 7 lines
Quoted 4 lines
I think I found mt76x0u issue that could cause this USB probe error (and possibly also address AMD IOMMU issue). We seems do not correctly set URB transfer length smaller than sg buffer length. Attached patch should correct that.
Hi Stanislaw,
I think 'sg[0].length' is already set in
mt76u_fill_rx_sg().It is,
buf->lenand sg[0].length are initialized to the same value for 1 segment. But thenbuf->len(assigned tourb->buffer_transfer_length) change to smaller value , but sg[0].length stay the same. What I think can be problem for usb host driver.Quoted 1 line
Moreover applying this patch I got the following crash (rpi-5.0.y):
Ok, so with patch probe fail instantly and trigger yet another bug(s) on error path. You seems to address that already.
Quoted 5 lines
Moreover for mt76x0u SG is 'already' disabled since we use just one buffer so from performance point of view I do not see any difference of using a standard usb buffer.
This patch has been tested in multiple scenarios and seems to fix reported issues (for usb2.0).Quoted 9 lines
Quoted 2 lines
Ok, so passing buffer via
urb->transfer_bufferworks. But whyurb->sgdoes not work for 1 segment ?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
Quoted 3 lines
i'm not sure that you understand my mail [1] with the summary of my test results.
Yes right, I did not get it sorry :)
as indicated here https://www.raspberrypi.org/documentation/linux/kernel/building.md
I am using bcm2709_defconfig config (using it I spotted the mt76 crashes and probe failure)
Regards,
Lorenzo
Quoted 10 lines
In case of using the arm/multi_v7_defconfig (32 bit) the mt76 works like a charm without your sg avoid patch series, but the arm64/defconfig (64 bit) requires the series to probe at least. So i wouldn't conclude from the fact that dwc2 doesn't support SG any probing issues on arm64. So we need to investigate which config option triggers the problem.
Stefan