[Q] HOW TO rmmod with malfunction device driver kernel module.
[Q] HOW TO rmmod with malfunction device driver kernel module.
Hi everyone.
"This question is NOT about WIFI."
I'm developing a wifi-device.
Our wifi module (Marvell) sometimes is stuck! "Stuck" means there is no answer from WIFI module. Wifi modules is connected on SDIO.
What I want to is "Reset wifi module by controlling power pins, and remove driver modules and load driver module again"
I DID reset module. However I can not remove driver modules.
dmesg says "
[ 3216.000071] ------------[ cut here ]------------
[ 3216.000089] WARNING: at /build/buildd/linux-2.6.32/net/sched/sch_generic.c:261 dev_watchdog+0x1fe/0x210()
[ 3216.000095] Hardware name: 2510A36
[ 3216.000099] NETDEV WATCHDOG: wifi0 (wlan_sdio): transmit queue 0 timed out
[ 3216.000104] Modules linked in: nls_iso8859_1 nls_cp437 vfat fat usb_storage sd8xxx mlan(P) mmc_block binfmt_misc ppdev snd_hda_codec_analog fbcon tileblit font bitblit softcursor vga16fb vgastate thinkpad_acpi pcmcia snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device i915 drm_kms_helper yenta_socket drm tpm_tis snd sdhci_pci sdhci intel_agp i2c_algo_bit tpm tpm_bios nvram rsrc_nonstatic psmouse serio_raw led_class pcmcia_core video soundcore output snd_page_alloc agpgart lp parport ohci1394 ieee1394 e1000e
[ 3216.000218] Pid: 0, comm: swapper Tainted: P 2.6.32-38-generic #83-Ubuntu
[ 3216.000223] Call Trace:
[ 3216.000234] [<c014d202>] warn_slowpath_common+0x72/0xa0
[ 3216.000243] [<c04dd1de>] ? dev_watchdog+0x1fe/0x210
[ 3216.000250] [<c04dd1de>] ? dev_watchdog+0x1fe/0x210
[ 3216.000258] [<c014d27b>] warn_slowpath_fmt+0x2b/0x30
[ 3216.000265] [<c04dd1de>] dev_watchdog+0x1fe/0x210
[ 3216.000275] [<c01648a0>] ? insert_work+0x60/0xb0
[ 3216.000284] [<c012a958>] ? default_spin_lock_flags+0x8/0x10
[ 3216.000293] [<c05911df>] ? _spin_lock_irqsave+0x2f/0x50
[ 3216.000301] [<c0164b66>] ? __queue_work+0x36/0x50
[ 3216.000308] [<c015c53e>] run_timer_softirq+0x13e/0x2c0
[ 3216.000317] [<c017702c>] ? tick_handle_oneshot_broadcast+0x12c/0x140
[ 3216.000326] [<c04dcfe0>] ? dev_watchdog+0x0/0x210
[ 3216.000333] [<c0153f38>] __do_softirq+0x98/0x1b0
[ 3216.000341] [<c01a0dc4>] ? handle_IRQ_event+0x54/0x150
[ 3216.000349] [<c01a4079>] ? move_native_irq+0x19/0x50
[ 3216.000356] [<c0154095>] do_softirq+0x45/0x50
[ 3216.000363] [<c01541e5>] irq_exit+0x65/0x70
[ 3216.000369] [<c0595655>] do_IRQ+0x55/0xc0
[ 3216.000376] [<c016e455>] ? sched_clock_local+0xa5/0x180
[ 3216.000385] [<c0103a30>] common_interrupt+0x30/0x40
[ 3216.000392] [<c016007b>] ? force_sig_info+0x9b/0xd0
[ 3216.000401] [<c03a0ce6>] ? acpi_idle_enter_bm+0x275/0x2a4
[ 3216.000410] [<c04a513a>] cpuidle_idle_call+0x7a/0x100
[ 3216.000417] [<c01021c4>] cpu_idle+0x94/0xd0
[ 3216.000427] [<c057e9a2>] rest_init+0x62/0x70
[ 3216.000436] [<c07a98fb>] start_kernel+0x356/0x35c
[ 3216.000444] [<c07a93d1>] ? unknown_bootoption+0x0/0x19e
[ 3216.000452] [<c07a90aa>] i386_start_kernel+0xaa/0xb1
[ 3216.000457] ---[ end trace f3dad122ae4aab74 ]---
"
I can not do "rmmod". Because the module I want to remove is used by system.
So I tried to "ifconfig wifi0 down"
The command ifconfig is stuck also. ( Ctrl+c doesn't work )
I also don't know I can rmmod after ifconfig command.
Kernel version is "2.6.29"
Is there any solution for this situation?
Thank you
|