[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#628444: iwlagn - "MAC is in deep sleep", cannot restore wifi operation



Shannon Dealy <dealy@deatech.com> writes:

> I have not seen this problem or any of the other iwl instabilities in
> a long time, however, I have been running with these option lines
> disabling 11n functionality in order to achieve that stability:
>
>     options iwlagn 11n_disable50=1
>     options iwlwifi 11n_disable=1
>
> since I am no longer running kernels which use iwlagn (currently
> running 3.2.xx), I can't really speak to the original issue anymore.
> Of course iwlwifi has had 11n related stability issues as well,
> however, I have never seen the:
>
>   "MAC is in deep sleep"
>
> bug (as far as I can recall) while running a newer kernel with iwlwifi
> instead of iwlagn.  Not sure how much code (if any) is common between
> iwlwifi and the older iwlagn module.

AFAIK the code printing that particular error message is still the same
in 3.2. The error message was changed and a stack trace was added in
v3.4, so you have to look for another message if testing newer kernels:


commit aa5affbacb24cb5d8fd6f7c66e57d62164ed6d34
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Wed Mar 7 09:52:23 2012 -0800

    iwlwifi: dump stack when fail to gain access to the device
    
    Print dump stack when the device is not responding. This should give
    some more clue about the reason of failure. Also change the message we
    print, since "MAC in deep sleep" is kinda confusing.
    
    On the way add unlikely(), as fail to gain NIC access is hmm ...
    unlikely.
    
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>

diff --git a/drivers/net/wireless/iwlwifi/iwl-io.c b/drivers/net/wireless/iwlwifi/iwl-io.c
index e2e3b5c..fc36535 100644
--- a/drivers/net/wireless/iwlwifi/iwl-io.c
+++ b/drivers/net/wireless/iwlwifi/iwl-io.c
@@ -121,10 +121,10 @@ int iwl_grab_nic_access_silent(struct iwl_trans *trans)
 int iwl_grab_nic_access(struct iwl_trans *trans)
 {
        int ret = iwl_grab_nic_access_silent(trans);
-       if (ret) {
+       if (unlikely(ret)) {
                u32 val = iwl_read32(trans, CSR_GP_CNTRL);
-               IWL_ERR(trans,
-                       "MAC is in deep sleep!. CSR_GP_CNTRL = 0x%08X\n", val);
+               WARN_ONCE(1, "Timeout waiting for hardware access "
+                            "(CSR_GP_CNTRL 0x%08x)\n", val);
        }
 
        return ret;



This code has since been refactored and moved into
drivers/net/wireless/iwlwifi/pcie/trans.c but the "Timeout waiting for
hardware access" message is still there.

> I suppose I should try enabling 11n again to see what happens (I had
> forgotten it was disabled).

Time to move on to 11ac now :)


Bjørn


Reply to: