From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?J=F6rg_Krause?= Date: Tue, 01 Jul 2014 00:44:09 +0200 Subject: [U-Boot] [PATCH] usb: ci_udc: fix interaction with CONFIG_USB_ETH_CDC In-Reply-To: <53B1C0B5.9030501@wwwdotorg.org> References: <1403546568-30830-1-git-send-email-swarren@wwwdotorg.org> <201406251551.29728.marex@denx.de> <53AAF389.3010204@wwwdotorg.org> <53ADE412.5060902@posteo.de> <53ADE847.8080104@wwwdotorg.org> <53ADFB5C.1040108@posteo.de> <53AE003E.8090207@wwwdotorg.org> <53AE1BA9.9000401@posteo.de> <53B189F8.1060809@wwwdotorg.org> <53B1C0B5.9030501@wwwdotorg.org> Message-ID: <53B1E839.6040206@posteo.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 06/30/2014 09:55 PM, Stephen Warren wrote: > On 06/30/2014 10:02 AM, Stephen Warren wrote: >> On 06/27/2014 07:34 PM, J?rg Krause wrote: >>> On 06/28/2014 01:37 AM, Stephen Warren wrote: >>>> On 06/27/2014 05:16 PM, J?rg Krause wrote: >>>>> On 06/27/2014 11:55 PM, Stephen Warren wrote: >>>>>> On 06/27/2014 03:37 PM, J?rg Krause wrote: >>>>>>> I added the last series of patches beginning from 2014-06-10 for >>>>>>> testing >>>>>>> purposes. The patches from 2014-05-29 were already applied. >>>>>>> >>>>>>> First series of patches: >>>>>>> >>>>>>> Applying: usb: ci_udc: call udc_disconnect() from ci_pullup() >>>>>>> Applying: usb: ci_udc: fix freeing of ep0 req >>>>>>> Applying: usb: ci_udc: fix probe error cleanup >>>>>>> Applying: usb: ci_udc: clean up all allocations in unregister >>>>>>> >>>>>>> Calling tftp the first time after a reset runs fine, >>>>>> I thought the issue you reported was that the *first* time you run the >>>>>> "tftp" command, it has issues such as timeouts? Did I misunderstand, or >>>>>> did that issue somehow go away? >>>>> That's right! This was the state before applying a series of patches >>>>> after allow multiple buffer allocs per ep. Now, the first run of tftp >>>>> runs without any errors. >>>> Just to make sure I understand, here's what you saw: >>>> >>>> 1) tftp works fine to start with. No timeouts even on repeated >>>> invocation. >>> I went back in time and now I can be more precise. Everything worked >>> fine until commit usb: ci_udc: allow multiple buffer allocs per ep which >>> introduces timeouts in almost all tftp file downloads. Even the first >>> run of tfpt can end in a timeout. > I've pushed out some branches for you to test at: > git://github.com/swarren/u-boot.git > > I looked back to see where the problematic commit 2813006fecda "usb: > ci_udc: allow multiple buffer allocs per ep" was first applied. I then > started with that same commit, and split up the problematic commit into > tiny pieces, and applied each piece in turn. The result is in branch > ci-udc-debug-base. If you could please test every commit in that branch: > >> fabf0df9523a usb: ci_udc: remainder of "allow multiple buffer allocs" >> 373098f12a1d usb: ci_udc: dynamically alloc USB request objects >> 43fff2b11860 usb: ci_udc: dynamically alloc bounce buffer >> f21b9989bf83 usb: ci_udc: bounce only actual (rounded) packet len not buffer len for small pkts >> 09ba064f9a99 usb: ci_udc: debounce only actual packet len not buffer len >> 7e90ae0e4973 usb: ci_udc: use ci_req-> not ep-> a bit more >> 9663ff89c764 usb: ci_udc: pass ci_req not ep to bounce/debounce >> b9fdf9dd3f96 usb: ci_udc: move buffer fields from ep to req >> 82f35a839e31 usb: ci_udc: introduce struct ci_req >> c9396bc55069 usb: ci_udc: create "req" variable in bounce/unbounce >> 173d294b94cf Merge branch 'serial' of git://www.denx.de/git/u-boot-microblaze > ... and tell me which commit causes the problem, that would be useful. > Since the problem is intermittent, please make sure you test each commit > many times (at least 10-20, preferably nearer 100). You can stop early > if you see the problem, but if you don't, please test many times to make > sure there is no problem. Commit 373098f12a1d usb: ci_udc: dynamically alloc USB request objects cannot be build. The error is introduced with the latest commit fabf0df9523a usb: ci_udc: remainder of "allow multiple buffer allocs". I attached the output message for this commit. > > You mentioned that your board support is not upstream. In order to test, > you should probably do: For each commit I mention above, check it out, > apply the minimal set of patches needed to support your board, and test. Done. Just added board support. > > Please don't apply any other patches while testing this series. Please > only test TFTP download, and not ubifs writes, etc. This is my test script: "test_usb=" \ "setenv i 64; " \ "while test ${i} -gt 0; do " \ "echo ${i}; " \ "tftp ${rootfs_file}; " \ "setexpr i ${i} - 1; " \ "done; " \ "setenv i; " \ "\0" > > I've also pushed out branch ci-udc-debug-tegra-dfu-working which has a > whole load of other commits I needed to test the split up patches. These > were needed to add board support for the board I'm currently using, and > to fix/enhance the core DFU code. Most of these commits are already > applied in u-boot.git/master, it's just that I cherry-picked them on top > of the old base commit so I would have something to test with. > > BTW, I'm going on vacation from Jul 3rd-July 20th. I might answer some > limited email during this time, but I certainly won't have access to any > test HW. -------------- next part -------------- => reset resetting ... HTLLCLLC U-Boot 2014.04-gfabf0df-dirty (Jul 01 2014 - 00:36:11) CPU: Freescale i.MX28 rev1.2 at 454 MHz BOOT: NAND, 3V3 DRAM: 64 MiB NAND: 128 MiB In: serial Out: serial Err: serial Net: usb_ether [PRIME] Warning: Your board does not use generic board. Please read doc/README.generic-board and take action. Boards not upgraded by the late 2014 may break or be removed. Hit any key to stop autoboot: 0 => run test_usb 64 using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################################################### 5.8 MiB/s done Bytes transferred = 13205504 (c98000 hex) 63 using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######T ########################################################### ################################################################# #################timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet Retry count exceeded; starting again using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################################################### 5.7 MiB/s done Bytes transferred = 13205504 (c98000 hex) 62 using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet ERROR: The remote end did not respond in time. at drivers/usb/gadget/ether.c:2388/usb_eth_init() 61 using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################################################### 5.7 MiB/s done Bytes transferred = 13205504 (c98000 hex) 60 using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ############timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet Retry count exceeded; starting again using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################################################### 5.7 MiB/s done Bytes transferred = 13205504 (c98000 hex) 5f using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet ERROR: The remote end did not respond in time. at drivers/usb/gadget/ether.c:2388/usb_eth_init() 5e using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ############################################################T ##### ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################################################### 1.7 MiB/s done Bytes transferred = 13205504 (c98000 hex) 5d using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Using usb_ether device TFTP from server 10.0.0.1; our IP address is 10.0.0.2 Filename 'rootfs.ubifs'. Load address: 0x40008000 Loading: ################################################timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet T timeout sending packets to usb ethernet T timeout sending packets to usb ethernet timeout sending packets to usb ethernet Retry count exceeded; starting again using ci_udc, OUT ep- IN ep- STATUS ep- MAC 00:19:b8:00:00:02 HOST MAC 00:19:b8:00:00:01 high speed config #1: 2 mA, Ethernet Gadget, using CDC Ethernet USB network up! Abort =>