Bug 39762

Summary: iwlagn crashes on attempt to suspend/hibernate
Product: Drivers Reporter: Dmitry Nezhevenko (dion)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: CLOSED CODE_FIX    
Severity: normal CC: florian, guorong.koh, linville, maciej.rutecki, rjw, wey-yi.w.guy
Priority: P1    
Hardware: All   
OS: Linux   
URL: http://dion.org.ua/uploads/2011/07/linux_30_iwlagn_crash.jpg
Kernel Version: 3.0 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216, 36912    

Description Dmitry Nezhevenko 2011-07-22 12:48:31 UTC
After updating 2.6.39 -> 3.0 I can't suspend/hibernate anymore. iwlagn driver crashes somewhere in suspend routines.

stack:
iwlagn_wait_tx_queue_empty+0x41/0xac
iwlagn_mac_flush
__ieee80211_suspend
? index_show
ieee80211_suspend
wiphy_suspend
legacy_suspend
__device_suspend
dpm_suspend
dpm_suspend_start
suspend_devices_and_enter

(see URL for camera photo with stack)

After unloading iwlagn I'm able to suspend again.

2.6.39 works just fine so it's definitly regression
Comment 1 wey-yi.w.guy 2011-07-22 14:43:40 UTC
could you try the follow commit# from wireless-next-2.6

commit 94f9b97be5b3bf67392e43fb7f567721b09142c2
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Jul 14 16:48:54 2011 +0200

    mac80211: be more careful in suspend/resume


Thanks
Wey
Comment 2 Dmitry Nezhevenko 2011-07-22 20:36:05 UTC
I've bisected it:            
a70171dce9cd44cb06c7d299eba9fa87a8933045 is the first bad commit
dion@laptop:/usr/src/linux-git% git show a70171dce9cd44cb
commit a70171dce9cd44cb06c7d299eba9fa87a8933045
Merge: 5a412ad eaef6a9
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu May 5 13:32:35 2011 -0400

    Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
    
    Conflicts:
        drivers/net/wireless/libertas/if_cs.c
        drivers/net/wireless/rtlwifi/pci.c
        net/bluetooth/l2cap_sock.c

diff --cc drivers/net/wireless/rtlwifi/base.c
index b259f80,d366657..ccb6da3
--- a/drivers/net/wireless/rtlwifi/base.c
+++ b/drivers/net/wireless/rtlwifi/base.c
@@@ -522,10 -698,10 +698,10 @@@ void rtl_get_tcb_desc(struct ieee80211_
                         *because hw will nerver use hw_rate
                         *when tcb_desc->use_driver_rate = false
                         *so we never set highest N rate here,
 -                       *and N rate will all be controled by FW
 +                       *and N rate will all be controlled by FW
                         *when tcb_desc->use_driver_rate = false
                         */
-                       if (rtlmac->ht_enable) {
+                       if (sta && (sta->ht_cap.ht_supported)) {
                                tcb_desc->hw_rate = _rtl_get_highest_n_rate(hw);
                        } else {
                                if (rtlmac->mode == WIRELESS_MODE_B) {
diff --cc net/bluetooth/l2cap_sock.c
index 47394a1,09cc7a0..7c4a9ae
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@@ -678,8 -692,8 +692,8 @@@ static int l2cap_sock_setsockopt(struc
                }
  
                if (opt == BT_FLUSHABLE_OFF) {
-                       struct l2cap_conn *conn = l2cap_pi(sk)->conn;
+                       struct l2cap_conn *conn = chan->conn;
 -                      /* proceed futher only when we have l2cap_conn and
 +                      /* proceed further only when we have l2cap_conn and
                           No Flush support in the LM */
                        if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
                                err = -EINVAL;

I'll try to apply commit from wireless-next-2.6 now
Comment 3 Dmitry Nezhevenko 2011-07-22 21:30:46 UTC
(In reply to comment #1)
> could you try the follow commit# from wireless-next-2.6
> 
> commit 94f9b97be5b3bf67392e43fb7f567721b09142c2
> Author: Johannes Berg <johannes.berg@intel.com>
> Date:   Thu Jul 14 16:48:54 2011 +0200
> 
>     mac80211: be more careful in suspend/resume

It doesn't applies cleanly to v3.0 (one chunk looks like not needed anymore). 
I've applied rest and can confirm that s2ram works now.

Thanks!
Comment 4 wey-yi.w.guy 2011-07-22 21:32:38 UTC
Great, thank you very much for reporting

Wey
Comment 5 Florian Mickler 2011-08-09 08:04:21 UTC
commit from comment #1 merged in v3.1-rc1.