MC7710 DirectIP kernel oops

To All,

I am trying to use MC7710 with DirectIP option under our custom Linux on AT91SAM9263 SoC, running kernel 2.6.32.27, but I am getting a kernel crash when I load the module.

I have downloaded the DirectIP driver from here:
mycusthelp.net/SIERRAWIRELESS/_c … spx?aid=44

At first, driver didn’t compile so I needed to apply a simple patch.

Now, when I plug in my card, I get:

usb 1-1.3: new high speed USB device using isp1761 and address 3
usb 1-1.3: config 1 has an invalid interface number: 7 but max is 5
usb 1-1.3: config 1 has no interface number 5
usb 1-1.3: config 1 has usb 1-1.3: New USB device found, idVendor=1199, idProduct=68a3
usb 1-1.3: New USB device strings: Mfr=3, Product=2, SerialNumber=4
usb 1-1.3: Product: MC7710
usb 1-1.3: Manufacturer: Sierra Wireless, Incorporated
usb 1-1.3: SerialNumber: 358178040268312

But when I load seirra_net.ko I immediately get a crash, like this:

GL-SH> modprobe sierra_net
Unable to handle kernel paging request at virtual address ffffffb4
pgd = c7990000
[ffffffb4] *pgd=203ec031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1]
last sysfs file:
Modules linked in: sierra_net(+) isp1760 usbnet usbcore usb_pdc
cfi_cmdset_0002 cfi_probe gen_probe cfi_util physma]
CPU: 0 Not tainted (2.6.32.27-GL3-4 #5)
PC is at usb_set_interface+0x10/0x1ac [usbcore]
LR is at usbnet_get_endpoints+0x158/0x1b8 [usbnet]
pc : [] lr : [] psr: 60000013
sp : c79b7d18 ip : c79b7d58 fp : c79b7d54
r10: c7a2a2c0 r9 : c7a2bd80 r8 : 0000001c
r7 : c7a055e8 r6 : 00000003 r5 : c7a2bdd8 r4 : c7a2bdac
r3 : 00000220 r2 : 00000000 r1 : 00000007 r0 : ffffff9c
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 0005317f Table: 27990000 DAC: 00000015
Process modprobe (pid: 454, stack limit = 0xc79b6270)
Stack: (0xc79b7d18 to 0xc79b8000)
7d00: 000000f4 c7a2a144
7d20: c7a2a144 00000020 c7a2a144 c79b7d6c c7a2bdac c7a2bdd8 00000003 c7a055e8
7d40: 0000001c c7a2a2c0 c79b7d8c c79b7d58 bf07c4a4 bf05c8bc c791e3c0 00000003
7d60: 00000001 c7a2a2c0 00000003 00000007 bf096430 00000000 bf0963f0 c791e3c0
7d80: c79b7dc8 c79b7d90 bf09563c bf07c35c bf066bdd c791e3e0 c791e3c0 bf09638c
7da0: bf09654c c7a2a37c c7a2a3a4 bf07da9c c7a2a2c0 c7a2a000 c791e3c0 c79b7e14
7dc0: c79b7dcc bf07c930 bf0955b8 00000001 c79b7dfc c79b7de0 c7a055e8 ffffff9c
7de0: 00000000 bf09638c c791e3c0 c791e3e0 c791e3e0 c791e3c0 bf09638c bf09654c
7e00: c79b6000 c7a2a800 c79b7e4c c79b7e18 bf05e168 bf07c7b8 c00cd064 bf09651c
7e20: c79b7e4c c791e3e0 c791e3e0 bf09654c bf09654c bf068ffc c79b6000 00000000
7e40: c79b7e6c c79b7e50 c013b948 bf05e03c c791e3e0 c791e414 bf09654c c79b7e90
7e60: c79b7e8c c79b7e70 c013ba88 c013b8a8 00000000 00000000 c013ba1c bf09654c
7e80: c79b7eb4 c79b7e90 c013b140 c013ba2c c78d1758 c793c890 bf09651c bf09654c
7ea0: bf09654c c793c0e0 c79b7ec4 c79b7eb8 c013b7a4 c013b0f8 c79b7ef4 c79b7ec8
7ec0: c013a974 c013b794 bf09624c c79b7ed8 bf09651c bf096588 bf09654c bf09654c
7ee0: c0025044 00018268 c79b7f1c c79b7ef8 c013bdb8 c013a8dc 00000026 bf09651c
7f00: bf096588 bf09624c bf09654c c0025044 c79b7f3c c79b7f20 bf05dec8 c013bd00
7f20: 00000000 bf096588 bf099000 00000000 c79b7f4c c79b7f40 bf09901c bf05de6c
7f40: c79b7f7c c79b7f50 c002438c bf099010 4006b000 c0025044 c79b7f7c c79b7f68
7f60: 00000000 bf096588 00000000 4006b000 c79b7fa4 c79b7f80 c005e0e8 c0024338
7f80: 00000003 00000000 000096a0 000182b8 00000000 00000080 00000000 c79b7fa8
7fa0: c0024ec0 c005e030 000096a0 000182b8 4006b000 00027121 000160a8 00000000
7fc0: 000096a0 000182b8 00000000 00000080 00000000 00018274 00018268 00000000
7fe0: 4001a624 bed53a00 0000b114 4001a638 20000010 4006b000 6c74636f 76656400
Backtrace:
[] (usb_set_interface+0x0/0x1ac [usbcore]) from [] (usbnet_get_endpoints+0x158/0x1b8 [usbnet])
[] (usbnet_get_endpoints+0x0/0x1b8 [usbnet]) from []
(sierra_net_bind+0x94/0x394 [sierra_net])
[] (sierra_net_bind+0x0/0x394 [sierra_net]) from []
(usbnet_probe+0x188/0x4d0 [usbnet])
[] (usbnet_probe+0x0/0x4d0 [usbnet]) from []
(usb_probe_interface+0x13c/0x198 [usbcore])
[] (usb_probe_interface+0x0/0x198 [usbcore]) from []
(driver_probe_device+0xb0/0x184)
[] (driver_probe_device+0x0/0x184) from []
(__driver_attach+0x6c/0x90)
r7:c79b7e90 r6:bf09654c r5:c791e414 r4:c791e3e0
[] (__driver_attach+0x0/0x90) from []
(bus_for_each_dev+0x58/0x98)
r6:bf09654c r5:c013ba1c r4:00000000
[] (bus_for_each_dev+0x0/0x98) from []
(driver_attach+0x20/0x28)
r7:c793c0e0 r6:bf09654c r5:bf09654c r4:bf09651c
[] (driver_attach+0x0/0x28) from []
(bus_add_driver+0xa8/0x230)
[] (bus_add_driver+0x0/0x230) from []
(driver_register+0xc8/0x154)
[] (driver_register+0x0/0x154) from []
(usb_register_driver+0x6c/0xe8 [usbcore])
r8:c0025044 r7:bf09654c r6:bf09624c r5:bf096588 r4:bf09651c
[] (usb_register_driver+0x0/0xe8 [usbcore]) from []
(sierra_net_init+0x1c/0x2c [sierra_net])
r7:00000000 r6:bf099000 r5:bf096588 r4:00000000
[] (sierra_net_init+0x0/0x2c [sierra_net]) from []
(do_one_initcall+0x64/0x1cc)
[] (do_one_initcall+0x0/0x1cc) from []
(sys_init_module+0xc8/0x1f8)
r7:4006b000 r6:00000000 r5:bf096588 r4:00000000
[] (sys_init_module+0x0/0x1f8) from []
(ret_fast_syscall+0x0/0x28)
r7:00000080 r6:00000000 r5:000182b8 r4:000096a0
Code: e1a0c00d e92dddf0 e24cb004 e24dd018 (e5903018)
—[ end trace 899faccaf18a5c63 ]—

Please note, the I can use this modem using only sierra.ko module as a “normal” modem
with the help from PPP.

It seems that interface_to_usbdev() returns incorrect address, but I do not know why.

Any help would be appreciated.

Also, as I side note. What is preferred, DIrectIP or QMI mode for Linux?

Thank you and Best Regards,
Matej

To all,

I still haven’t solved this problem, but I also tried to use MC7710 in QMI mode.
I have downloaded and compiled the drivers from:
codeaurora.org/patches/quic/gobi/Gobi3000/

As with the sierra_net.ko I also get the similar crash, as before it seems that
interface_to_usbdev() is returning bogus address.
Anyone has an idea, why?

Thank you and Regards,
Matej