Query on USB related debugging

Victor Ascroft victorascroft at gmail.com
Thu Nov 27 03:56:44 EST 2014


Hello,

I have an embedded device with a Freescale ARM Cortex A5 processor, running the 3.18-rc5 kernel. I have a problem where using the Ethernet over USB client stops functioning after a while. If I set the IP of the usb0 interface and try to ping the device from the host or vice versa, it works fine up to that point. Running iperf, establishes a connection to the host, but, doesn't complete even one cycle.  Checking /proc/interrupts shows that after a while, probably a few seconds, it freezes. No more interrupts are serviced it seems. I put in a few debug prints in udc_irq to check, if things go right superficially at least, udc_irq seems to exit cleanly and of course my device doesn't hang.

root:~# cat /proc/interrupts
           CPU0      
 27:      15122       GIC  27  gt
107:        162       GIC 107  40034000.usb

The above number of interrupts does not increase at some point, showing that irq's are not serviced any more.

My main query is how can I go about and start debugging this issue? What process, tools or methods I can use to debug and solve this problem. I have done some debugging before in the kernel/u-boot, but, the problems have always been which lead to crashes. So, the origin of it was at least clear, if not the source/cause of it. In this scenario, I am at a loss in which direction to start digging.

I enabled prints for the whole USB driver section, with dynamic debug, but, this doesn't help much or at least I am not able to make out much from it. Below is the relevant dmesg log.

[    1.175253] using random self ethernet address
[    1.182722] using random host ethernet address
[    1.205327] using random self ethernet address
[    1.212857] using random host ethernet address
[    1.220419] g_ether gadget: adding config #2 'RNDIS'/808055c8
[    1.220467] g_ether gadget: adding 'rndis'/8ea48300 to config 'RNDIS'/808055c8
[    1.220545] g_ether gadget: RNDIS: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[    1.220566] g_ether gadget: cfg 2/808055c8 speeds: high full
[    1.220583] g_ether gadget:   interface 0 = rndis/8ea48300
[    1.220599] g_ether gadget:   interface 1 = rndis/8ea48300
[    1.220617] g_ether gadget: adding config #1 'CDC Ethernet (ECM)'/8080551c
[    1.220646] g_ether gadget: adding 'cdc_ethernet'/8ea483c0 to config 'CDC Ethernet (ECM)'/8080551c
[    1.220701] g_ether gadget: CDC Ethernet: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[    1.220721] g_ether gadget: cfg 1/8080551c speeds: high full
[    1.220737] g_ether gadget:   interface 0 = cdc_ethernet/8ea483c0
[    1.220753] g_ether gadget:   interface 1 = cdc_ethernet/8ea483c0
[    1.220778] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[    1.230557] g_ether gadget: g_ether ready
[    1.682860] g_ether gadget: high-speed config #1: CDC Ethernet (ECM)
[    1.692933] g_ether gadget: init ecm
[    1.692957] g_ether gadget: notify connect false
[    1.702757] g_ether gadget: activate ecm
[    1.702798] g_ether gadget: ecm_close
[    1.710720] g_ether gadget: packet filter 0e
[    1.710734] g_ether gadget: ecm req21.43 v000e i0000 l0
[    1.786925] g_ether gadget: packet filter 0e
[    1.786946] g_ether gadget: ecm req21.43 v000e i0000 l0
[    1.789824] g_ether gadget: packet filter 0e
[    1.789843] g_ether gadget: ecm req21.43 v000e i0000 l0
[    1.790733] g_ether gadget: setup complete --> -108, 0/0
[    1.790750] g_ether gadget: packet filter 0e
[    1.790768] g_ether gadget: ecm req21.43 v000e i0000 l0
[    1.806118] g_ether gadget: notify connect false
[    1.838131] g_ether gadget: notify speed 425984000
[    6.277081] g_ether gadget: packet filter 0e
[    6.277103] g_ether gadget: ecm req21.43 v000e i0000 l0
[  294.926900] [472] usb_f_ecm:ecm_open:665: g_ether gadget: ecm_open
[  294.926930] [472] usb_f_ecm:ecm_do_notify:405: g_ether gadget: notify connect true
[  294.945515] <intr> usb_f_ecm:ecm_do_notify:420: g_ether gadget: notify speed 425984000
[  294.948877] <intr> usb_f_ecm:ecm_setup:490: g_ether gadget: packet filter 0e
[  294.948904] <intr> usb_f_ecm:ecm_setup:519: g_ether gadget: ecm req21.43 v000e i0000 l0
[  295.009820] <intr> usb_f_ecm:ecm_setup:490: g_ether gadget: packet filter 0e
[  295.009846] <intr> usb_f_ecm:ecm_setup:519: g_ether gadget: ecm req21.43 v000e i0000 l0
[  324.637471] <intr> usb_f_ecm:ecm_setup:490: g_ether gadget: packet filter 0e
[  324.637500] <intr> usb_f_ecm:ecm_setup:519: g_ether gadget: ecm req21.43 v000e i0000 l0

Any pointers would be useful. Thanks!

--Regards.




More information about the Kernelnewbies mailing list