Прошу помощи.
Есть коммуникатор Samsung Galaxy Note на Android ICS 4.0.3 (прошивка сток, ядро CF-Root-SGN_XX_SEB_LQ3-v5.6-CWM5).
# uname -a
Linux localhost 3.0.15-N7000XXLQ3-CL646962 #3 SMP PREEMPT Wed May 30 21:05:57 KST 2012 armv7l GNU/Linux
Требуется подключить к нему адаптер USB-Eth на ASIX AX88772B. Коммуникатор имеет порт micro-USB, подключаю через USB-OTG.
Исходники драйвера есть. В комплекте сам модуль и axusbnet.c (как я понял, замена стандартного usbnet.c).
Исходники ядра есть.
Собирал arm-2010q1.
Подключаю адаптер:
[ 90.311645] usb_otg_accessory_power: otg power = 1
[ 90.316215] host_notify: ndev name=usb_otg: from state=0 -> to state=1
[ 90.645890] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 90.646018] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 90.646145] usb usb2: Product: S3C OTGHCD
[ 90.646225] usb usb2: Manufacturer: Linux 3.0.15-N7000XXLQ3-CL646962 EMSP_OTGHCD
[ 90.646348] usb usb2: SerialNumber: s3cotg
[ 90.688297] usb usb2: otg host do not enter suspend.
[ 90.688354] OTG s5pc110_start_otg(214): OTG HCD Initialized HCD, bus=C110 OTG Controller, usbbus=2
[ 91.025575] usb 2-1: new high speed USB device number 2 using s3c_otghcd
[ 91.070410] usb 2-1: New USB device found, idVendor=0b95, idProduct=772b
[ 91.070520] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 91.070621] usb 2-1: SerialNumber: 000977
Гружу модули (mii и asix):
# insmod /system/lib/modules/mii.ko
# insmod /system/lib/modules/asix.ko
# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 1519:0020
Bus 002 Device 001: ID 1d6b:0002
Bus 002 Device 002: ID 0b95:772b
# lsmod
asix 45984 0 - Live 0xbf080000
mii 4249 1 asix, Live 0xbf007000
dhd 390627 0 - Live 0xbf01f000
j4fs 69431 1 - Live 0xbf00a000 (P)
Si4709_driver 24207 0 - Live 0xbf000000
# dmesg | grep asix
[ 208.068599] eth0: register 'asix' at usb-s3cotg-1, ASIX AX88772B USB 2.0 Ethernet, 1e:c0:f7:bf:6d:77
[ 208.072102] usbcore: registered new interface driver asix
#
Есть eth0 и его mac.
Однако
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
и далее при попытке выгрузить модуль asix, либо вытащить разъем USB имеем kernel panic:
<6>[15424.006991] usb 2-1: USB disconnect, device number 2
<6>[15424.007787] eth0: unregister 'asix' usb-s3cotg-1, ASIX AX88772B USB 2.0 Ethernet
<1>[15424.027392] Unable to handle kernel paging request at virtual address bff7c022
<1>[15424.027503] pgd = c0004000
<1>[15424.027560] [bff7c022] *pgd=6b0b2811, *pte=00000000, *ppte=00000000
<0>[15424.027696] Internal error: Oops: 807 [#1] PREEMPT SMP
<4>[15424.027783] Modules linked in: asix mii dhd j4fs(P) Si4709_driver [last unloaded: dhd]
<4>[15424.027977] CPU: 0 Tainted: P (3.0.15-N7000XXLQ3-CL646962 #3)
<4>[15424.028125] PC is at __hw_addr_flush+0x38/0x68
<4>[15424.028217] LR is at dev_addr_flush+0x18/0x24
<4>[15424.028308] pc : [<c060eb5c>] lr : [<c060ec04>] psr: 20000013
<4>[15424.028394] sp : e5307d78 ip : d64e776d fp : e5307d94
<4>[15424.028487] r10: e563d400 r9 : 0000001f r8 : 00000000
<4>[15424.028581] r7 : d64e6800 r6 : 00200200 r5 : d64e6978 r4 : bff7c01e
<4>[15424.028689] r3 : c742d940 r2 : bff7c01e r1 : 00000030 r0 : c742d970
<4>[15424.028803] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
<4>[15424.028923] Control: 10c5387d Table: 62d9404a DAC: 00000015
<4>[15424.047751] Backtrace:
<4>[15424.047848] [<c060eb24>] (__hw_addr_flush+0x0/0x68) from [<c060ec04>] (dev_addr_flush+0x18/0x24)
<4>[15424.047980] r7:d64e6800 r6:d64e6800 r5:d64e6800 r4:d64e6800
<4>[15424.048162] [<c060ebec>] (dev_addr_flush+0x0/0x24) from [<c0605078>] (free_netdev+0x34/0xc4)
<4>[15424.048289] r5:d64e6800 r4:d64e6c20
<4>[15424.048464] [<c0605044>] (free_netdev+0x0/0xc4) from [<bf033ff0>] (axusbnet_disconnect+0xa8/0xec [asix])
<4>[15424.048605] r7:d64e6800 r6:d6356000 r5:d3a63e00 r4:d64e6c20
<4>[15424.048806] [<bf033f48>] (axusbnet_disconnect+0x0/0xec [asix]) from [<c049c0fc>] (usb_unbind_interface+0x58/0x1d8)
<4>[15424.048956] r7:bf038280 r6:d6356000 r5:d3a63e20 r4:d3a63e00
<4>[15424.049127] [<c049c0a4>] (usb_unbind_interface+0x0/0x1d8) from [<c04508bc>] (__device_release_driver+0x78/0xc8)
<4>[15424.049304] [<c0450844>] (__device_release_driver+0x0/0xc8) from [<c04509e8>] (device_release_driver+0x24/0x30)
<4>[15424.049451] r5:d3a63e20 r4:d3a63e54
<4>[15424.049563] [<c04509c4>] (device_release_driver+0x0/0x30) from [<c044fe20>] (bus_remove_device+0xc4/0xd4)
<4>[15424.049703] r5:d3a63e20 r4:d3a63e20
<4>[15424.049813] [<c044fd5c>] (bus_remove_device+0x0/0xd4) from [<c044e69c>] (device_del+0x100/0x174)
<4>[15424.049943] r7:00000001 r6:e563d400 r5:d6356068 r4:d3a63e20
<4>[15424.050115] [<c044e59c>] (device_del+0x0/0x174) from [<c04990c4>] (usb_disable_device+0xa8/0x1b0)
<4>[15424.050247] r7:00000001 r6:e563d400 r5:00000000 r4:d6356000
<4>[15424.050411] [<c049901c>] (usb_disable_device+0x0/0x1b0) from [<c0493c3c>] (usb_disconnect+0x90/0x12c)
<4>[15424.050577] [<c0493bac>] (usb_disconnect+0x0/0x12c) from [<c04949b4>] (hub_thread+0x350/0x11ac)
<4>[15424.050755] [<c0494664>] (hub_thread+0x0/0x11ac) from [<c029c4c0>] (kthread+0x90/0x98)
<4>[15424.050918] [<c029c430>] (kthread+0x0/0x98) from [<c0283d38>] (do_exit+0x0/0x6e0)
<4>[15424.051033] r7:00000013 r6:c0283d38 r5:c029c430 r4:e5043ef0
<0>[15424.051184] Code: e3406020 e593c004 e2830030 e3a01030 (e582c004)
<4>[15424.051403] ---[ end trace 8b33e0e0e42b3c17 ]---
<0>[15424.051743] Kernel panic - not syncing: Fatal exception
Аналогичная ситуация и с адаптером D-Link DU-E100 и модулем pegasus - kernel panic при выгрузке модуля и при отключении адаптера.
<6>[ 86.855070] usb 2-1: new full speed USB device number 2 using s3c_otghcd
<6>[ 86.855264] OTG compare_ed(384): update ed 8 (0x8)
<6>[ 86.877747] usb 2-1: New USB device found, idVendor=07b8, idProduct=4102
<6>[ 86.877788] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[ 86.877827] usb 2-1: Product: USB 10/100 Fast Ethernet
<6>[ 86.877854] usb 2-1: Manufacturer: USBs
<6>[ 86.877876] usb 2-1: SerialNumber: 8f0c6e
<6>[ 386.511487] pegasus 2-1:1.0: eth0, USB 10/100 Fast Ethernet, 4e:01:05:8f:0c:6e
<6>[ 386.512386] usbcore: registered new interface driver pegasus
<6>[ 714.011428] usbcore: deregistering interface driver pegasus
<1>[ 714.030230] Unable to handle kernel paging request at virtual address 8f050152
<1>[ 714.030302] pgd = d6654000
<1>[ 714.030331] [8f050152] *pgd=00000000
<0>[ 714.030373] Internal error: Oops: 805 [#1] PREEMPT SMP
<4>[ 714.030421] Modules linked in: pegasus(-) usbnet mii dhd j4fs(P) Si4709_driver
<4>[ 714.030507] CPU: 0 Tainted: P (3.0.15-N7000XXLQ3-CL646962 #3)
<4>[ 714.030592] PC is at __hw_addr_flush+0x38/0x68
<4>[ 714.030636] LR is at dev_addr_flush+0x18/0x24
<4>[ 714.030680] pc : [<c060eb5c>] lr : [<c060ec04>] psr: 200e0013
<4>[ 714.030734] sp : d5b7fde0 ip : e3a06e0c fp : d5b7fdfc
<4>[ 714.030782] r10: 00000000 r9 : d5b7e000 r8 : 00000000
<4>[ 714.030831] r7 : bf08d1ec r6 : 00200200 r5 : e3a01178 r4 : 8f05014e
<4>[ 714.030890] r3 : d77b06c0 r2 : 8f05014e r1 : 00000030 r0 : d77b06f0
<4>[ 714.030952] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
<4>[ 714.031016] Control: 10c5387d Table: 5665404a DAC: 00000015
<4>[ 714.038601] Backtrace:
<4>[ 714.038636] [<c060eb24>] (__hw_addr_flush+0x0/0x68) from [<c060ec04>] (dev_addr_flush+0x18/0x24)
<4>[ 714.038713] r7:bf08d1ec r6:e3a01000 r5:e3a01000 r4:e3a01000
<4>[ 714.038787] [<c060ebec>] (dev_addr_flush+0x0/0x24) from [<c0605078>] (free_netdev+0x34/0xc4)
<4>[ 714.038861] r5:e3a01000 r4:e3a01420
<4>[ 714.038918] [<c0605044>] (free_netdev+0x0/0xc4) from [<bf08a690>] (pegasus_disconnect+0xa4/0xd8 [pegasus])
<4>[ 714.039002] r7:bf08d1ec r6:cee0f020 r5:bf08dd14 r4:e3a01420
<4>[ 714.039070] [<bf08a5ec>] (pegasus_disconnect+0x0/0xd8 [pegasus]) from [<c049c0fc>] (usb_unbind_interface+0x58/0x1d8)
<4>[ 714.039160] r6:d0e76c00 r5:cee0f020 r4:cee0f000 r3:00000003
<4>[ 714.039229] [<c049c0a4>] (usb_unbind_interface+0x0/0x1d8) from [<c04508bc>] (__device_release_driver+0x78/0xc8)
<4>[ 714.039322] [<c0450844>] (__device_release_driver+0x0/0xc8) from [<c04509c0>] (driver_detach+0xb4/0xb8)
<4>[ 714.039403] r5:bf08d224 r4:cee0f020
<4>[ 714.039445] [<c045090c>] (driver_detach+0x0/0xb8) from [<c044fa84>] (bus_remove_driver+0x84/0xc8)
<4>[ 714.039522] r7:d5b7ff34 r6:c09adbcc r5:bf08d224 r4:00000000
<4>[ 714.039585] [<c044fa00>] (bus_remove_driver+0x0/0xc8) from [<c0451318>] (driver_unregister+0x58/0x78)
<4>[ 714.039665] r7:d5b7ff34 r6:bf08d21c r5:bf08d224 r4:00000000
<4>[ 714.039726] [<c04512c0>] (driver_unregister+0x0/0x78) from [<c049be70>] (usb_deregister+0xc4/0xdc)
<4>[ 714.039803] r5:bf08d224 r4:bf08d214
<4>[ 714.039848] [<c049bdac>] (usb_deregister+0x0/0xdc) from [<bf08c6f8>] (pegasus_exit+0x18/0x1c [pegasus])
<4>[ 714.039943] [<bf08c6e0>] (pegasus_exit+0x0/0x1c [pegasus]) from [<c02b6de8>] (sys_delete_module+0x168/0x238)
<4>[ 714.040039] [<c02b6c80>] (sys_delete_module+0x0/0x238) from [<c0244c80>] (ret_fast_syscall+0x0/0x30)
<4>[ 714.040119] r8:c0244e28 r7:00000081 r6:00000001 r5:00000000 r4:be8ec92e
<0>[ 714.040192] Code: e3406020 e593c004 e2830030 e3a01030 (e582c004)
<4>[ 714.041333] ---[ end trace b11a3de5703310e8 ]---
<0>[ 714.041419] Kernel panic - not syncing: Fatal exception
В обоих случаях видно, что засада в mac-адресе (его как-бы нет, что приводит к невозможности его удаления - если я правильно понял).
Подскажите, что и где подправить.
Или хотя бы в каком направлении искать.