On Mon, Feb 18, 2019 at 11:19:40PM +0100, Stefan Wahren wrote: > Hi, > > > Stanislaw Gruszka <sgruszka@xxxxxxxxxx> hat am 18. Februar 2019 um 14:52 geschrieben: > > > > > > On Sat, Feb 16, 2019 at 08:17:07PM +0100, Stefan Wahren wrote: > > > this is a misunderstanding. The warning is about memory alignment to 32 bit addresses, not about page alignment. This is a typical ARM restriction. Maybe we need to make sure in mt76 that the DMA buffer needs to be aligned. But it's also possible that the warning isn't the root cause of our problem. > > > > > > > I see, it needs 4 bytes alignment . There is already dwc2 code checks > > that and allocate new buffer if the alignment is not right: > > dwc2_alloc_dma_aligned_buffer(), but it does nothing if urb->sg > > is not NULL. I thought mt76usb already provide aligned buffers, but > > looks it does not for one TX special case, which are PROBE REQUEST > > frames. Other frames are aligned by inserting L2 header pad. One > > solution for this would be just submit urb with NULL sg (same as > > Lorenzo's patches do, but still allocating buffers via buf->sg), > > but I think, you have right, we should provide 4 bytes aligned buffers > > by default as other DMA hardware may require that. I'm attaching yet > > another patch to test, which fix up alignment for PROBE REQUEST frames. > > > > > > Attached patch should fix this, plese test, thanks in advance. > > i saw Felix decided to use Lorenzo's approach. > > The patches 1,3,5 applied on today's next fixed only the warning and wifi is still broken (authentication timeout). > > Here are the logs for multi_v7_defconfig: > https://gist.github.com/lategoodbye/0a7c5cea7dbf25d0de7944c05d229d79 It would be interesting why urb->num_sgs = 0 & urb->sg cause the troubles. This is how usb_sg_init() submit urbs for sg_tablesize = 0 controllers. So either are there are some requirement on urb->sg mapped via dma_map_page() (which mt76usb does not meet) not needed for urb->transfer_buffer mapped via dma_map_single() or there is something wrong in dwc2 with sg and this driver will not work with urb_sg_init() as well. I don't have hardware to investigate this and don't want to bother you with more patches. > > > Anyway i tested the following patch combinations against next with the same results as 1,2,3 (no wifi, alignment warning): > > > 1,3 > > > 1,2,3,4 > > > > I noticed on my setup that patch 4 can cause troubles, but still > > device is workable here on my PC machines. > > > > > > > Btw i can confirm a regression was introduced after 4.19, because in 4.19 there was no firmware timeout but even no working wifi: > > > > > > > > You ment 'no working wifi' or 'working wifi'? > > > > > > Wifi is broken in 4.19, 4.20, 5.0 and next. It only worked with Lorenzo's SG avoid patches so far. Btw the regression (firmware timeout) started in 4.20. I also tested it today. > > > > That somewhat strange because 4.19 mt76x0u does not use SG. > > On 4.19 there is phy calibration bug fixed in 4.19.5: > > Sorry for being inprecise. I was talking about the branches not the exact tags. I tested 4.19.23 without luck. In github link you provided someone report mt76x0u working on 4.19 with dwc_otg with disabled FIQ irq, so perhaps this is due to bug in dwc2 fixed in -next but not backported to 4.19. > Many thanks anyway Thanks for testing! Stanislaw