On Tue, Mar 23, 2010 at 11:23 PM, Chris Lopes <clo...@gmail.com> wrote:
> I didn't try a "cold reboot" that did not involve the removal of
> battery and power supply, so maybe it would work.
>
> Honestly I am still perplexed (given modern hardware and software), as
> to why/how:
> 1) Hibernate and un-hibernate, regardless of what happens in between
> with the wireless card, could somehow result in it stopping working
> 2) Rebooting (warm), regardless of how the wireless card is messed up
> in my situation does not fix the problem
> 3) Cold rebooting and warm rebooting are different in any way whatsoever
>
> (all of the above involve zero changes on the hard disk during the
> time when the OS is not running)
>
> Is this behavior some sort of "feature" with unintuitive results, or
> is it a bug?  And what is the buggy component, exactly?
> It seems like something that would happen with early 1990's technology.
>
> Also, are you saying that there is some sort of known problem that
> results in you having to "recover the wireless" via a cold-reboot?
> What is this problem and is it similar to my situation?

Well, the following sequence can easily happen:
1. You boot Vista. The Broadcom official driver initializes the card
(writing a complete register setup) with the embedded firmware.
2. You hibernate Vista. The card is un-initialized and prepared for
restore upon return from hibernation. Some registers are left in the
state they were originally, to aid in quicker restore.
3. You boot Linux. b43 finds the Broadcom card, and, seeing that it is
un-initialized, quickly initializes it (again, overwriting all
registers, including the ones left intact by hibernation) with your
installed firmware. Due to a known bug, the driver misses some part of
the initialization routine; we are working on fixing this,.
4. With the card only partially initialized, DMA TX is broken. (On
2.6.33, b43 works around this by falling back to PIO.)
5. You leave Linux. b43 either doesn't uninitialize the card at all,
or does a full uninit, in preparation for a shutdown (as opposed to
hibernate)
6. You restore Vista. The Broadcom driver expects the card to be in
the state it left it during hibernation; but it is really either in
the (broken) init state produced by Linux, or completely
uninitialized. The driver does a resume routine, assuming the card is
prepared for it. The result of this operation is completely undefined;
as my college programming professor once said: "even if it becomes
self-aware and nukes the world, it is still operating correctly".
7. You scan for wireless networks. The card is in an undefined state,
so this obviously doesn't work!

-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
_______________________________________________
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to