[Letux-kernel] [Gta04-owner] no wifi today (cannot load helper firmware)
Andreas Kemnade
andreas at kemnade.info
Thu May 5 19:02:13 CEST 2016
On Mon, 2016-04-25 at 00:04 +0200, Andreas Kemnade wrote:
> Hi,
>
> On Sun, 24 Apr 2016 11:56:26 +0200
> "H. Nikolaus Schaller" <hns at goldelico.com> wrote:
>
> > Hi,
> >
> > > Am 23.04.2016 um 21:26 schrieb Andreas Kemnade <andreas at kemnade.info>:
> > >
> > > Hi,
> > >
> > > today my wifi fails. Does not matter which partition I boot from.
> >
> > :(
> >
> I even tried the last production image on a new sd:
> export SERVER=http://download.goldelico.com/gta04/20140521-GTA04-Production-3.12.7-wheezy-7.5/
> DEV=/dev/sdb ./makesd
>
> on a fresh sd
> So no 3.7, no 3.12.7, no 4.5, no 4.6rc4 works.
> Having it unpowered for some hours does not help.
>
> > > It does even work on partitions I do no experiments with.
> > > It does not work with the 3.7 kernel.
> > >
> > > Bluetooth works.
> > >
> > > [ 672.540863] libertas_sdio: failed to load helper firmware
> > > [ 672.548522] libertas_sdio: probe of mmc1:0001:1 failed with error -84
> > >
> > > I have seen this -84 somewhere...
> > > EILSEQ
> >
> > http://lxr.free-electrons.com/source/include/uapi/asm-generic/errno.h#L66
> >
> > Hm. Illegal byte sequence... Strange.
> >
> > >
> > > EILSEQ=EILLPHONE?
> > >
> > > Does anyone else have this error and recovered from it?
> > > Is it some funny race condition popping up only at some phases of the moon?
> >
> > Yes. And especially in April.
> >
> I analyzed various timestamps and logs.
> I had the problem once between Apr 1 and Apr 11.
> But then it was only with one kernel. I just reverted the change I made
> and everything was fine.
>
> Last known time it works was on Apr 18.
>
> > > @hns: If I remember correctly you had this error with some 4.x? Did you recover
> > > from it?
> >
> > I have not checked for a while.
> >
> > The worst thing could be that there was something broken in SDIO firmware download
> > for a while which allowed to execute dangerous code in the WiFi controller (it has its
> > own ARM subsystem) and has damaged it so that it now fails with any kernel or setup.
> >
> The worst thing would be some damaged pads at the Wifi chip.
> Or the DM3730... But I do not notice any obvious other problems...
>
> > But let's assume the best case...
> >
> > As far as I can see the important occurrences of EILSEQ in WiFi related code are here:
> >
> > http://lxr.free-electrons.com/source/net/wireless/util.c#L1194
> > http://lxr.free-electrons.com/source/drivers/net/wireless/marvell/libertas/cfg.c#L503
> > http://lxr.free-electrons.com/source/drivers/mmc/host/mmc_spi.c#L262 (but I think we don't use mmc-spi)
> >
> Interesting is also EILSEQ
> in omap_hsmmc.c.
>
> I tried also with libertas_tf.
>
Hmm, I tried letux-4.6rc6.
No changes.
I tried to change the bus width to 1bit via dtb.
Now I get further:
[ 320.668182] libertas leave: __lbs_cleanup_and_insert_cmd()
[ 320.674926] libertas enter: __lbs_cleanup_and_insert_cmd()
[ 320.680725] libertas leave: __lbs_cleanup_and_insert_cmd()
[ 320.687469] libertas leave: lbs_allocate_cmd_buffer(), ret 0
[ 320.693634] libertas leave: lbs_init_adapter(), ret 0
[ 320.699920] libertas thread: Starting main thread...
[ 320.708709] libertas enter: lbs_thread()
[ 320.713165] libertas thread: 1: currenttxskb (null), dnld_sent 0
[ 320.720611] libertas thread: sleeping, connect_status 1, psmode 0,
psstate 0
[ 320.728240] libertas leave: lbs_add_card(), priv dd540600
[ 320.735382] libertas enter: if_sdio_prog_firmware()
[ 320.740997] libertas sdio: firmware status = 0x0
[ 320.746643] libertas sdio: scratch ret = 0
[ 320.750976] libertas fw: Starting async firmware load
[ 320.757080] libertas fw: Requesting libertas/sd8686_v9_helper.bin
[ 320.763702] libertas leave: if_sdio_prog_firmware(), ret 0
[ 320.770294] libertas leave: if_sdio_probe(), ret 0
[ 320.779510] libertas fw: Requesting libertas/sd8686_v9.bin
[ 320.787231] libertas fw: firmware load complete, code 0
[ 320.792999] libertas enter: if_sdio_prog_helper()
[ 320.894561] libertas sdio: waiting for helper to boot...
[ 320.900482] libertas leave: if_sdio_prog_helper(), ret 0
[ 320.907012] libertas sdio: Helper firmware loaded
[ 320.912170] libertas enter: if_sdio_prog_real()
[ 321.251220] libertas sdio: waiting for firmware to boot...
[ 321.338592] libertas leave: if_sdio_prog_real(), ret 0
[ 321.349517] libertas sdio: Firmware loaded
[ 321.371093] libertas enter: lbs_start_card()
[ 321.375610] libertas enter: lbs_setup_firmware()
[ 321.389312] libertas enter: lbs_update_hw_spec()
[ 321.394409] libertas enter: __lbs_cmd()
[ 321.399505] libertas enter: __lbs_cmd_async()
[ 321.404296] libertas enter: lbs_get_free_cmd_node()
[ 321.410614] libertas leave: lbs_get_free_cmd_node()
[ 321.415924] libertas host: PREP_CMD: command 0x0003
[ 321.421997] libertas enter: lbs_queue_cmd()
[ 321.427307] libertas host: QUEUE_CMD: inserted command 0x0003 into
cmdpendingq
[ 321.435028] libertas leave: lbs_queue_cmd()
[ 321.440460] libertas thread: 2: currenttxskb (null), dnld_send 0
[ 321.447723] libertas leave: __lbs_cmd_async(), ret de728400
[ 321.453796] libertas thread: 3: currenttxskb (null), dnld_sent 0
[ 321.461425] libertas thread: 4: currenttxskb (null), dnld_sent 0
[ 321.468719] libertas enter: lbs_execute_next_command()
[ 321.474273] libertas host: EXEC_NEXT_CMD: sending command 0x0003
[ 321.483001] libertas enter: lbs_submit_command()
[ 321.489105] libertas cmd: DNLD_CMD: command 0x0003, seq 1, size 46
[ 321.495788] libertas DNLD_CMD: 03 00 2e 00 01 00 00 00 00 00 00 00 00
00 00 00
[ 321.504516] libertas DNLD_CMD: ff ff ff ff ff ff 00 00 00 00 00 00 00
00 00 00
[ 321.513092] libertas DNLD_CMD: 00 00 00 00 00 00 00 00 00 00 00 00 00
00
[ 321.521087] libertas enter: if_sdio_host_to_card(type 1, bytes 46)
[ 321.528594] libertas enter: if_sdio_host_to_card_worker()
[ 321.534454] libertas leave: if_sdio_host_to_card(), ret 0
[ 321.534484] libertas leave: lbs_submit_command()
[ 321.534484] libertas leave: lbs_execute_next_command()
[ 321.534484] libertas thread: 1: currenttxskb (null), dnld_sent 2
[ 321.534515] libertas thread: sleeping, connect_status 1, psmode 0,
psstate 0
[ 321.566162] libertas leave: if_sdio_host_to_card_worker()
reverting 9dc0754ccfc1aaa2b8cd38b2d1579ac902b8bbc0
than makes wifi work at least slowly and with much current consumption.
I am still wondering whether this is a hardware error on my gta04
since I do not find any kernel which works now. Both measures (1bit mode
and no sdio-irq reduce the pins used. So if some of them have a
problem...
Is there any hw with libertas available so that I might at least
upstream the libertas stuff?
Regards,
Andreas
More information about the Letux-kernel
mailing list