Libetas can not reload modules

Dongas dongas86 at gmail.com
Fri Jun 12 14:36:47 EDT 2009


Dear ALL,

The issue i encounterred is that libertas modules can not be reloaed.
(It works well when i first insmod them)
I want to rmmod them and do the re-insmod, but the error message is
shown as follows:
# insmod libertas_sdio.ko
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
……
libertas: failed to load helper firmware
libertas leave: if_sdio_prog_helper(), ret -110

After digging in the code, i found that the libertas driver will check
IF_SDIO_IO_RDY and IF_SDIO_DL_RDY bit in IF_SDIO_STATUS register for
the firmware downloading(CMD53 write) operation.
However, the SDIO status read back of mine card indicated that the
card IF_SDIO_DL_RDY bit was alway not set during the module reload
operation.Then the timeout happened with '-ETIMEDOUT' returned.

Is there any body know why?

BTW, i saw some code in if_sdio_prog_firmware funtion as follows.
---------------------------------------------------------------------------------------------------
	if (scratch == IF_SDIO_FIRMWARE_OK) {
		lbs_deb_sdio("firmware already loaded\n");
		goto success;
	}
-----------------------------------------------------------------------------------------------------
It seems the driver doesn't need to re-load the firmware if the
firmware is already loaded, right?
In my case, during the first insmod of libertas modules, the driver
works well and i can assume the firmware is already loaded.
But when i reload modules, why the driver still needs to do firmware
reloading rather than skip it as above code said?

(My card is based on Marvell 8686 chipset and kernel is 2.6.29)

Thanks

Regards
Dongas



More information about the libertas-dev mailing list