Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: PROBLEM: Issue with wireless driver after resume from suspend.
From: Anil Nair @ 2017-10-31 12:32 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, ath10k
In-Reply-To: <87a807sopr.fsf@purkki.adurom.net>

On Tue, Oct 31, 2017 at 10:31:28AM +0200, Kalle Valo wrote:
> Luca Coelho <luca@coelho.fi> writes:
> 
> >> I am having a issue with the wireless driver in my laptop. Attached
> >> information
> >> pertaining to the issue.
> >
> > It would be useful to specify which wireless card you are using.  In
> > this case, the problem seems to be with ath10k.
> 
> For ath10k issues please also CC ath10k list:
> 
> https://wireless.wiki.kernel.org/en/users/drivers/ath10k/support
> 
> And please copy the relevant errors from the logs to the email, faster
> that way.

Okay Mentioning only the relevant error lines from the logs,

[  730.953046] wlp3s0: deauthenticating from 74:a2:e6:d8:67:71 by local choice (Reason: 3=DEAUTH_LEAVING)
[  731.061011] ath10k_pci 0000:03:00.0: firmware crashed! (uuid 4dc52092-f261-4606-885f-08947740c27c)
[  731.061019] ath10k_pci 0000:03:00.0: qca6164 hw2.1 target 0x05010000 chip_id 0x003405ff sub 17aa:3545
[  731.061021] ath10k_pci 0000:03:00.0: kconfig debug 0 debugfs 1 tracing 1 dfs 0 testmode 0
[  731.061420] ath10k_pci 0000:03:00.0: firmware ver SW_RM.1.1.1-00157-QCARMSWPZ-1 api 5 features ignore-otp,no-4addr-pad crc32 10bf8e08
[  731.061629] ath10k_pci 0000:03:00.0: board_file api 2 bmi_id N/A crc32 ae2e275a
[  731.061632] ath10k_pci 0000:03:00.0: htt-ver 3.1 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1
[  731.063645] ath10k_pci 0000:03:00.0: firmware register dump:
[  731.063651] ath10k_pci 0000:03:00.0: [00]: 0x05010000 0x00000000 0x0092E4DC 0xC2A898F7
[  731.063654] ath10k_pci 0000:03:00.0: [04]: 0x0092E4DC 0x00060130 0x00000018 0x0041A760
[  731.063657] ath10k_pci 0000:03:00.0: [08]: 0xC2A898E3 0x00400000 0x00000000 0x000A5C88
[  731.063659] ath10k_pci 0000:03:00.0: [12]: 0x00000009 0x00000000 0x0096C09C 0x0096C0A7
[  731.063662] ath10k_pci 0000:03:00.0: [16]: 0x0096BDBC 0x009287BD 0x00000000 0x009287BD
[  731.063665] ath10k_pci 0000:03:00.0: [20]: 0x4092E4DC 0x0041A710 0x00000000 0x0F000000
[  731.063667] ath10k_pci 0000:03:00.0: [24]: 0x809432A7 0x0041A770 0x0040D400 0xC092E4DC
[  731.063670] ath10k_pci 0000:03:00.0: [28]: 0x80942BC4 0x0041A790 0xC2A898E3 0x00400000
[  731.063672] ath10k_pci 0000:03:00.0: [32]: 0x80947BA7 0x0041A7B0 0x00404D88 0x0040E074
[  731.063675] ath10k_pci 0000:03:00.0: [36]: 0x809BDECC 0x0041A7D0 0x00404D88 0x0040E074
[  731.063677] ath10k_pci 0000:03:00.0: [40]: 0x8099638C 0x0041A7F0 0x00404D88 0x00000000
[  731.063680] ath10k_pci 0000:03:00.0: [44]: 0x80992076 0x0041A810 0x0044FD68 0x0046FFE8
[  731.063682] ath10k_pci 0000:03:00.0: [48]: 0x80996BD3 0x0041A830 0x0044FD68 0x00000000
[  731.063685] ath10k_pci 0000:03:00.0: [52]: 0x800B4405 0x0041A850 0x00422318 0x00005002
[  731.063688] ath10k_pci 0000:03:00.0: [56]: 0x809A6C34 0x0041A8E0 0x0042932C 0x0042CA20
[  731.063690] ath10k_pci 0000:03:00.0: Copy Engine register dump:
[  731.063703] ath10k_pci 0000:03:00.0: [00]: 0x00034400   1   1   3   3
[  731.063716] ath10k_pci 0000:03:00.0: [01]: 0x00034800  27  27 222 223
[  731.063729] ath10k_pci 0000:03:00.0: [02]: 0x00034c00  50  50  49  50
[  731.063742] ath10k_pci 0000:03:00.0: [03]: 0x00035000  12  12  13  12
[  731.063756] ath10k_pci 0000:03:00.0: [04]: 0x00035400 6009 6009 254 190
[  731.063769] ath10k_pci 0000:03:00.0: [05]: 0x00035800   0   0   0   0
[  731.063781] ath10k_pci 0000:03:00.0: [06]: 0x00035c00  10  10  10  10
[  731.063794] ath10k_pci 0000:03:00.0: [07]: 0x00036000   1   1   1   1
[  731.169797] ieee80211 phy0: Hardware restart was requested
[  731.169841] ath10k_pci 0000:03:00.0: failed to delete WMI vdev 1: -108
[  741.570291] PM: Syncing filesystems ... done.
[  741.719245] PM: Preparing system for sleep (mem)
[  741.719766] Freezing user space processes ... 
[  761.724209] Freezing of tasks failed after 20.004 seconds (10 tasks refusing to freeze, wq_busy=0):
[  761.724244] cups-browsed    D    0   989      1 0x00000004
[  761.724250] Call Trace:
[  761.724263]  __schedule+0x3c2/0x8b0
[  761.724268]  ? consume_skb+0x34/0xa0
[  761.724272]  schedule+0x36/0x80
[  761.724276]  schedule_preempt_disabled+0xe/0x10
[  761.724280]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.724286]  __mutex_lock_slowpath+0x13/0x20
[  761.724289]  ? __mutex_lock_slowpath+0x13/0x20
[  761.724293]  mutex_lock+0x2f/0x40
[  761.724297]  rtnetlink_rcv+0x19/0x30
[  761.724302]  netlink_unicast+0x18c/0x240
[  761.724306]  netlink_sendmsg+0x2c5/0x3a0
[  761.724310]  sock_sendmsg+0x38/0x50
[  761.724313]  SYSC_sendto+0x101/0x190
[  761.724321]  ? SYSC_getsockname+0x89/0xe0
[  761.724327]  ? fd_install+0x25/0x30
[  761.724333]  ? sock_map_fd+0x44/0x70
[  761.724337]  SyS_sendto+0xe/0x10
[  761.724342]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.724345] RIP: 0033:0x7f87f22ac4d3
[  761.724348] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  761.724352] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  761.724354] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  761.724355] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  761.724358] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  761.724359] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  761.724369] wpa_supplicant  D    0  1049      1 0x00000004
[  761.724373] Call Trace:
[  761.724377]  __schedule+0x3c2/0x8b0
[  761.724381]  schedule+0x36/0x80
[  761.724386]  schedule_timeout+0x17a/0x360
[  761.724392]  ? call_timer_fn+0x140/0x140
[  761.724398]  msleep+0x2e/0x40
[  761.724402]  ? msleep+0x2e/0x40
[  761.724413]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  761.724434]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  761.724449]  ath10k_halt+0x102/0x160 [ath10k_core]
[  761.724464]  ath10k_stop+0x39/0x80 [ath10k_core]
[  761.724509]  drv_stop+0x33/0xf0 [mac80211]
[  761.724554]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  761.724594]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  761.724599]  ? __rtnl_unlock+0x2a/0x50
[  761.724604]  ? nla_memcpy+0x26/0x50
[  761.724645]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  761.724685]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  761.724722]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  761.724756]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  761.724761]  genl_family_rcv_msg+0x1f5/0x3d0
[  761.724765]  ? __netlink_sendskb+0x3e/0x60
[  761.724771]  genl_rcv_msg+0x4c/0x90
[  761.724775]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  761.724779]  netlink_rcv_skb+0xe7/0x120
[  761.724784]  genl_rcv+0x28/0x40
[  761.724787]  netlink_unicast+0x18c/0x240
[  761.724792]  netlink_sendmsg+0x2c5/0x3a0
[  761.724796]  sock_sendmsg+0x38/0x50
[  761.724800]  ___sys_sendmsg+0x2b6/0x2d0
[  761.724804]  ? netlink_sendmsg+0x133/0x3a0
[  761.724812]  ? kzfree+0x2d/0x40
[  761.724819]  ? dput+0xc7/0x1f0
[  761.724825]  ? mntput+0x24/0x40
[  761.724829]  __sys_sendmsg+0x54/0x90
[  761.724832]  ? __sys_sendmsg+0x54/0x90
[  761.724837]  SyS_sendmsg+0x12/0x20
[  761.724842]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.724845] RIP: 0033:0x7fd5b8652450
[  761.724848] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  761.724851] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  761.724853] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  761.724855] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  761.724857] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  761.724859] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  761.724867] whoopsie        D    0  1169      1 0x00000004
[  761.724871] Call Trace:
[  761.724875]  __schedule+0x3c2/0x8b0
[  761.724881]  ? __wake_up_common+0x73/0x90
[  761.724885]  schedule+0x36/0x80
[  761.724889]  schedule_preempt_disabled+0xe/0x10
[  761.724893]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.724898]  __mutex_lock_slowpath+0x13/0x20
[  761.724902]  ? __mutex_lock_slowpath+0x13/0x20
[  761.724906]  mutex_lock+0x2f/0x40
[  761.724910]  rtnetlink_rcv+0x19/0x30
[  761.724914]  netlink_unicast+0x18c/0x240
[  761.724918]  netlink_sendmsg+0x2c5/0x3a0
[  761.724922]  sock_sendmsg+0x38/0x50
[  761.724925]  SYSC_sendto+0x101/0x190
[  761.724931]  ? security_file_permission+0x9b/0xc0
[  761.724937]  ? vfs_read+0x93/0x130
[  761.724942]  SyS_sendto+0xe/0x10
[  761.724946]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.724949] RIP: 0033:0x7f804d02a3ff
[  761.724951] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.724955] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  761.724957] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  761.724958] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  761.724960] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  761.724962] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  761.724995] gnome-software  D    0  2123   1992 0x00000004
[  761.724999] Call Trace:
[  761.725004]  __schedule+0x3c2/0x8b0
[  761.725009]  schedule+0x36/0x80
[  761.725012]  schedule_preempt_disabled+0xe/0x10
[  761.725016]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725022]  __mutex_lock_slowpath+0x13/0x20
[  761.725025]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725029]  mutex_lock+0x2f/0x40
[  761.725033]  rtnetlink_rcv+0x19/0x30
[  761.725037]  netlink_unicast+0x18c/0x240
[  761.725041]  netlink_sendmsg+0x2c5/0x3a0
[  761.725045]  sock_sendmsg+0x38/0x50
[  761.725048]  SYSC_sendto+0x101/0x190
[  761.725053]  ? security_file_permission+0x9b/0xc0
[  761.725058]  ? vfs_read+0x93/0x130
[  761.725062]  SyS_sendto+0xe/0x10
[  761.725067]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725070] RIP: 0033:0x7f483f67e9ff
[  761.725072] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725076] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  761.725078] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  761.725080] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  761.725082] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  761.725083] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  761.725103] evolution-calen D    0  2487   2464 0x00000004
[  761.725107] Call Trace:
[  761.725112]  __schedule+0x3c2/0x8b0
[  761.725116]  schedule+0x36/0x80
[  761.725120]  schedule_preempt_disabled+0xe/0x10
[  761.725124]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725129]  __mutex_lock_slowpath+0x13/0x20
[  761.725133]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725136]  mutex_lock+0x2f/0x40
[  761.725140]  rtnetlink_rcv+0x19/0x30
[  761.725144]  netlink_unicast+0x18c/0x240
[  761.725148]  netlink_sendmsg+0x2c5/0x3a0
[  761.725152]  sock_sendmsg+0x38/0x50
[  761.725155]  SYSC_sendto+0x101/0x190
[  761.725160]  ? security_file_permission+0x9b/0xc0
[  761.725166]  ? vfs_read+0x93/0x130
[  761.725170]  SyS_sendto+0xe/0x10
[  761.725175]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725177] RIP: 0033:0x7f2764fc19ff
[  761.725179] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725183] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  761.725185] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  761.725187] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  761.725189] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  761.725191] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  761.725197] evolution-calen D    0  2499   2464 0x00000004
[  761.725201] Call Trace:
[  761.725205]  __schedule+0x3c2/0x8b0
[  761.725210]  schedule+0x36/0x80
[  761.725213]  schedule_preempt_disabled+0xe/0x10
[  761.725217]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725222]  __mutex_lock_slowpath+0x13/0x20
[  761.725226]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725229]  mutex_lock+0x2f/0x40
[  761.725233]  rtnetlink_rcv+0x19/0x30
[  761.725237]  netlink_unicast+0x18c/0x240
[  761.725241]  netlink_sendmsg+0x2c5/0x3a0
[  761.725245]  sock_sendmsg+0x38/0x50
[  761.725248]  SYSC_sendto+0x101/0x190
[  761.725253]  ? security_file_permission+0x9b/0xc0
[  761.725258]  ? vfs_read+0x93/0x130
[  761.725262]  SyS_sendto+0xe/0x10
[  761.725267]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725270] RIP: 0033:0x7fb2c6e629ff
[  761.725272] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725275] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  761.725277] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  761.725279] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  761.725281] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  761.725283] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  761.725288] evolution-addre D    0  2519   2497 0x00000004
[  761.725292] Call Trace:
[  761.725296]  __schedule+0x3c2/0x8b0
[  761.725300]  schedule+0x36/0x80
[  761.725304]  schedule_preempt_disabled+0xe/0x10
[  761.725308]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725313]  __mutex_lock_slowpath+0x13/0x20
[  761.725317]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725320]  mutex_lock+0x2f/0x40
[  761.725324]  rtnetlink_rcv+0x19/0x30
[  761.725327]  netlink_unicast+0x18c/0x240
[  761.725332]  netlink_sendmsg+0x2c5/0x3a0
[  761.725336]  sock_sendmsg+0x38/0x50
[  761.725339]  SYSC_sendto+0x101/0x190
[  761.725343]  ? security_file_permission+0x9b/0xc0
[  761.725349]  ? vfs_read+0x93/0x130
[  761.725353]  SyS_sendto+0xe/0x10
[  761.725358]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725360] RIP: 0033:0x7f4a6d1aa9ff
[  761.725362] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725366] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  761.725368] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  761.725370] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  761.725372] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  761.725374] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  761.725384] geoclue         D    0  2681      1 0x00000004
[  761.725387] Call Trace:
[  761.725392]  __schedule+0x3c2/0x8b0
[  761.725395]  ? consume_skb+0x34/0xa0
[  761.725399]  schedule+0x36/0x80
[  761.725403]  schedule_preempt_disabled+0xe/0x10
[  761.725406]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725412]  __mutex_lock_slowpath+0x13/0x20
[  761.725415]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725419]  mutex_lock+0x2f/0x40
[  761.725422]  rtnetlink_rcv+0x19/0x30
[  761.725426]  netlink_unicast+0x18c/0x240
[  761.725430]  netlink_sendmsg+0x2c5/0x3a0
[  761.725434]  sock_sendmsg+0x38/0x50
[  761.725437]  SYSC_sendto+0x101/0x190
[  761.725442]  ? security_file_permission+0x9b/0xc0
[  761.725447]  ? vfs_read+0x93/0x130
[  761.725451]  SyS_sendto+0xe/0x10
[  761.725456]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725458] RIP: 0033:0x7f22fe6c13ff
[  761.725460] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725464] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  761.725466] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  761.725468] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  761.725470] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  761.725472] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  761.725491] deja-dup-monito D    0  2923   1992 0x00000004
[  761.725495] Call Trace:
[  761.725499]  __schedule+0x3c2/0x8b0
[  761.725504]  schedule+0x36/0x80
[  761.725507]  schedule_preempt_disabled+0xe/0x10
[  761.725511]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725516]  __mutex_lock_slowpath+0x13/0x20
[  761.725520]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725523]  mutex_lock+0x2f/0x40
[  761.725527]  rtnetlink_rcv+0x19/0x30
[  761.725531]  netlink_unicast+0x18c/0x240
[  761.725535]  netlink_sendmsg+0x2c5/0x3a0
[  761.725539]  sock_sendmsg+0x38/0x50
[  761.725542]  SYSC_sendto+0x101/0x190
[  761.725546]  ? security_file_permission+0x9b/0xc0
[  761.725552]  ? vfs_read+0x93/0x130
[  761.725556]  SyS_sendto+0xe/0x10
[  761.725561]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725563] RIP: 0033:0x7ff26c2df9ff
[  761.725565] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725569] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  761.725571] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  761.725573] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  761.725575] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  761.725577] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  761.725587] ip              D    0 14444  14443 0x00000004
[  761.725591] Call Trace:
[  761.725595]  __schedule+0x3c2/0x8b0
[  761.725600]  schedule+0x36/0x80
[  761.725603]  schedule_preempt_disabled+0xe/0x10
[  761.725607]  __mutex_lock.isra.2+0x2ae/0x4e0
[  761.725612]  ? current_time+0x38/0x70
[  761.725616]  __mutex_lock_slowpath+0x13/0x20
[  761.725620]  ? __mutex_lock_slowpath+0x13/0x20
[  761.725623]  mutex_lock+0x2f/0x40
[  761.725627]  rtnetlink_rcv+0x19/0x30
[  761.725631]  netlink_unicast+0x18c/0x240
[  761.725635]  netlink_sendmsg+0x2c5/0x3a0
[  761.725639]  sock_sendmsg+0x38/0x50
[  761.725642]  SYSC_sendto+0x101/0x190
[  761.725649]  ? handle_mm_fault+0xcc/0x1c0
[  761.725656]  ? __do_page_fault+0x283/0x4f0
[  761.725660]  SyS_sendto+0xe/0x10
[  761.725665]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  761.725668] RIP: 0033:0x7fb0aae9f39d
[  761.725670] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  761.725673] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  761.725675] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  761.725677] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  761.725679] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  761.725681] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  761.725688] OOM killer enabled.
[  761.725689] Restarting tasks ... done.
[  761.836907] PM: Syncing filesystems ... done.
[  762.064653] PM: Preparing system for sleep (freeze)
[  762.064956] Freezing user space processes ... 
[  782.068576] Freezing of tasks failed after 20.003 seconds (10 tasks refusing to freeze, wq_busy=0):
[  782.068612] cups-browsed    D    0   989      1 0x00000004
[  782.068617] Call Trace:
[  782.068631]  __schedule+0x3c2/0x8b0
[  782.068636]  ? consume_skb+0x34/0xa0
[  782.068640]  schedule+0x36/0x80
[  782.068644]  schedule_preempt_disabled+0xe/0x10
[  782.068648]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.068654]  __mutex_lock_slowpath+0x13/0x20
[  782.068657]  ? __mutex_lock_slowpath+0x13/0x20
[  782.068661]  mutex_lock+0x2f/0x40
[  782.068665]  rtnetlink_rcv+0x19/0x30
[  782.068670]  netlink_unicast+0x18c/0x240
[  782.068674]  netlink_sendmsg+0x2c5/0x3a0
[  782.068678]  sock_sendmsg+0x38/0x50
[  782.068681]  SYSC_sendto+0x101/0x190
[  782.068689]  ? SYSC_getsockname+0x89/0xe0
[  782.068696]  ? fd_install+0x25/0x30
[  782.068701]  ? sock_map_fd+0x44/0x70
[  782.068705]  SyS_sendto+0xe/0x10
[  782.068710]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.068713] RIP: 0033:0x7f87f22ac4d3
[  782.068716] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  782.068720] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  782.068722] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  782.068724] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  782.068726] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  782.068728] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  782.068737] wpa_supplicant  D    0  1049      1 0x00000004
[  782.068741] Call Trace:
[  782.068746]  __schedule+0x3c2/0x8b0
[  782.068750]  schedule+0x36/0x80
[  782.068754]  schedule_timeout+0x17a/0x360
[  782.068761]  ? call_timer_fn+0x140/0x140
[  782.068766]  msleep+0x2e/0x40
[  782.068770]  ? msleep+0x2e/0x40
[  782.068781]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  782.068802]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  782.068817]  ath10k_halt+0x102/0x160 [ath10k_core]
[  782.068832]  ath10k_stop+0x39/0x80 [ath10k_core]
[  782.068875]  drv_stop+0x33/0xf0 [mac80211]
[  782.068918]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  782.068954]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  782.068959]  ? __rtnl_unlock+0x2a/0x50
[  782.068964]  ? nla_memcpy+0x26/0x50
[  782.069003]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  782.069044]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  782.069081]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  782.069114]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  782.069119]  genl_family_rcv_msg+0x1f5/0x3d0
[  782.069124]  ? __netlink_sendskb+0x3e/0x60
[  782.069130]  genl_rcv_msg+0x4c/0x90
[  782.069134]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  782.069137]  netlink_rcv_skb+0xe7/0x120
[  782.069142]  genl_rcv+0x28/0x40
[  782.069146]  netlink_unicast+0x18c/0x240
[  782.069150]  netlink_sendmsg+0x2c5/0x3a0
[  782.069154]  sock_sendmsg+0x38/0x50
[  782.069158]  ___sys_sendmsg+0x2b6/0x2d0
[  782.069162]  ? netlink_sendmsg+0x133/0x3a0
[  782.069170]  ? kzfree+0x2d/0x40
[  782.069176]  ? dput+0xc7/0x1f0
[  782.069182]  ? mntput+0x24/0x40
[  782.069186]  __sys_sendmsg+0x54/0x90
[  782.069189]  ? __sys_sendmsg+0x54/0x90
[  782.069194]  SyS_sendmsg+0x12/0x20
[  782.069200]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069202] RIP: 0033:0x7fd5b8652450
[  782.069205] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  782.069209] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  782.069211] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  782.069212] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  782.069215] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  782.069216] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  782.069224] whoopsie        D    0  1169      1 0x00000004
[  782.069228] Call Trace:
[  782.069233]  __schedule+0x3c2/0x8b0
[  782.069239]  ? __wake_up_common+0x73/0x90
[  782.069242]  schedule+0x36/0x80
[  782.069246]  schedule_preempt_disabled+0xe/0x10
[  782.069250]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069256]  __mutex_lock_slowpath+0x13/0x20
[  782.069259]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069263]  mutex_lock+0x2f/0x40
[  782.069267]  rtnetlink_rcv+0x19/0x30
[  782.069271]  netlink_unicast+0x18c/0x240
[  782.069275]  netlink_sendmsg+0x2c5/0x3a0
[  782.069279]  sock_sendmsg+0x38/0x50
[  782.069282]  SYSC_sendto+0x101/0x190
[  782.069288]  ? security_file_permission+0x9b/0xc0
[  782.069294]  ? vfs_read+0x93/0x130
[  782.069298]  SyS_sendto+0xe/0x10
[  782.069303]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069306] RIP: 0033:0x7f804d02a3ff
[  782.069308] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069312] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  782.069314] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  782.069315] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  782.069317] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  782.069319] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  782.069353] gnome-software  D    0  2123   1992 0x00000004
[  782.069357] Call Trace:
[  782.069362]  __schedule+0x3c2/0x8b0
[  782.069366]  schedule+0x36/0x80
[  782.069370]  schedule_preempt_disabled+0xe/0x10
[  782.069374]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069379]  __mutex_lock_slowpath+0x13/0x20
[  782.069383]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069386]  mutex_lock+0x2f/0x40
[  782.069390]  rtnetlink_rcv+0x19/0x30
[  782.069394]  netlink_unicast+0x18c/0x240
[  782.069398]  netlink_sendmsg+0x2c5/0x3a0
[  782.069402]  sock_sendmsg+0x38/0x50
[  782.069405]  SYSC_sendto+0x101/0x190
[  782.069410]  ? security_file_permission+0x9b/0xc0
[  782.069416]  ? vfs_read+0x93/0x130
[  782.069420]  SyS_sendto+0xe/0x10
[  782.069425]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069427] RIP: 0033:0x7f483f67e9ff
[  782.069429] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069433] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  782.069435] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  782.069437] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  782.069439] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  782.069441] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  782.069460] evolution-calen D    0  2487   2464 0x00000004
[  782.069464] Call Trace:
[  782.069468]  __schedule+0x3c2/0x8b0
[  782.069473]  schedule+0x36/0x80
[  782.069476]  schedule_preempt_disabled+0xe/0x10
[  782.069480]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069486]  __mutex_lock_slowpath+0x13/0x20
[  782.069489]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069492]  mutex_lock+0x2f/0x40
[  782.069496]  rtnetlink_rcv+0x19/0x30
[  782.069500]  netlink_unicast+0x18c/0x240
[  782.069504]  netlink_sendmsg+0x2c5/0x3a0
[  782.069508]  sock_sendmsg+0x38/0x50
[  782.069511]  SYSC_sendto+0x101/0x190
[  782.069516]  ? security_file_permission+0x9b/0xc0
[  782.069521]  ? vfs_read+0x93/0x130
[  782.069525]  SyS_sendto+0xe/0x10
[  782.069530]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069533] RIP: 0033:0x7f2764fc19ff
[  782.069535] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069538] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  782.069540] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  782.069542] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  782.069544] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  782.069546] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  782.069552] evolution-calen D    0  2499   2464 0x00000004
[  782.069556] Call Trace:
[  782.069560]  __schedule+0x3c2/0x8b0
[  782.069565]  schedule+0x36/0x80
[  782.069568]  schedule_preempt_disabled+0xe/0x10
[  782.069572]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069577]  __mutex_lock_slowpath+0x13/0x20
[  782.069581]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069584]  mutex_lock+0x2f/0x40
[  782.069588]  rtnetlink_rcv+0x19/0x30
[  782.069592]  netlink_unicast+0x18c/0x240
[  782.069596]  netlink_sendmsg+0x2c5/0x3a0
[  782.069600]  sock_sendmsg+0x38/0x50
[  782.069603]  SYSC_sendto+0x101/0x190
[  782.069607]  ? security_file_permission+0x9b/0xc0
[  782.069613]  ? vfs_read+0x93/0x130
[  782.069617]  SyS_sendto+0xe/0x10
[  782.069621]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069624] RIP: 0033:0x7fb2c6e629ff
[  782.069626] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069629] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  782.069631] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  782.069633] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  782.069635] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  782.069637] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  782.069642] evolution-addre D    0  2519   2497 0x00000004
[  782.069646] Call Trace:
[  782.069650]  __schedule+0x3c2/0x8b0
[  782.069655]  schedule+0x36/0x80
[  782.069658]  schedule_preempt_disabled+0xe/0x10
[  782.069662]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069667]  __mutex_lock_slowpath+0x13/0x20
[  782.069670]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069674]  mutex_lock+0x2f/0x40
[  782.069678]  rtnetlink_rcv+0x19/0x30
[  782.069681]  netlink_unicast+0x18c/0x240
[  782.069685]  netlink_sendmsg+0x2c5/0x3a0
[  782.069689]  sock_sendmsg+0x38/0x50
[  782.069693]  SYSC_sendto+0x101/0x190
[  782.069697]  ? security_file_permission+0x9b/0xc0
[  782.069702]  ? vfs_read+0x93/0x130
[  782.069706]  SyS_sendto+0xe/0x10
[  782.069711]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069713] RIP: 0033:0x7f4a6d1aa9ff
[  782.069715] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069719] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  782.069721] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  782.069723] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  782.069725] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  782.069727] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  782.069737] geoclue         D    0  2681      1 0x00000004
[  782.069741] Call Trace:
[  782.069745]  __schedule+0x3c2/0x8b0
[  782.069748]  ? consume_skb+0x34/0xa0
[  782.069752]  schedule+0x36/0x80
[  782.069756]  schedule_preempt_disabled+0xe/0x10
[  782.069760]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069765]  __mutex_lock_slowpath+0x13/0x20
[  782.069769]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069772]  mutex_lock+0x2f/0x40
[  782.069776]  rtnetlink_rcv+0x19/0x30
[  782.069780]  netlink_unicast+0x18c/0x240
[  782.069784]  netlink_sendmsg+0x2c5/0x3a0
[  782.069788]  sock_sendmsg+0x38/0x50
[  782.069791]  SYSC_sendto+0x101/0x190
[  782.069795]  ? security_file_permission+0x9b/0xc0
[  782.069801]  ? vfs_read+0x93/0x130
[  782.069805]  SyS_sendto+0xe/0x10
[  782.069810]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069812] RIP: 0033:0x7f22fe6c13ff
[  782.069814] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069818] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  782.069820] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  782.069822] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  782.069824] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  782.069825] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  782.069845] deja-dup-monito D    0  2923   1992 0x00000004
[  782.069848] Call Trace:
[  782.069853]  __schedule+0x3c2/0x8b0
[  782.069857]  schedule+0x36/0x80
[  782.069861]  schedule_preempt_disabled+0xe/0x10
[  782.069864]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069870]  __mutex_lock_slowpath+0x13/0x20
[  782.069873]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069877]  mutex_lock+0x2f/0x40
[  782.069880]  rtnetlink_rcv+0x19/0x30
[  782.069884]  netlink_unicast+0x18c/0x240
[  782.069888]  netlink_sendmsg+0x2c5/0x3a0
[  782.069892]  sock_sendmsg+0x38/0x50
[  782.069895]  SYSC_sendto+0x101/0x190
[  782.069899]  ? security_file_permission+0x9b/0xc0
[  782.069905]  ? vfs_read+0x93/0x130
[  782.069909]  SyS_sendto+0xe/0x10
[  782.069914]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.069916] RIP: 0033:0x7ff26c2df9ff
[  782.069918] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.069922] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  782.069924] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  782.069926] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  782.069928] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  782.069929] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  782.069940] ip              D    0 14444  14443 0x00000004
[  782.069944] Call Trace:
[  782.069948]  __schedule+0x3c2/0x8b0
[  782.069952]  schedule+0x36/0x80
[  782.069956]  schedule_preempt_disabled+0xe/0x10
[  782.069959]  __mutex_lock.isra.2+0x2ae/0x4e0
[  782.069964]  ? current_time+0x38/0x70
[  782.069968]  __mutex_lock_slowpath+0x13/0x20
[  782.069972]  ? __mutex_lock_slowpath+0x13/0x20
[  782.069975]  mutex_lock+0x2f/0x40
[  782.069979]  rtnetlink_rcv+0x19/0x30
[  782.069983]  netlink_unicast+0x18c/0x240
[  782.069987]  netlink_sendmsg+0x2c5/0x3a0
[  782.069991]  sock_sendmsg+0x38/0x50
[  782.069994]  SYSC_sendto+0x101/0x190
[  782.070001]  ? handle_mm_fault+0xcc/0x1c0
[  782.070008]  ? __do_page_fault+0x283/0x4f0
[  782.070012]  SyS_sendto+0xe/0x10
[  782.070017]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  782.070020] RIP: 0033:0x7fb0aae9f39d
[  782.070022] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  782.070025] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  782.070027] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  782.070029] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  782.070031] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  782.070033] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  782.070040] OOM killer enabled.
[  782.070041] Restarting tasks ... done.
[  792.193128] PM: Syncing filesystems ... done.
[  792.382775] PM: Preparing system for sleep (mem)
[  792.383005] Freezing user space processes ... 
[  812.387298] Freezing of tasks failed after 20.004 seconds (11 tasks refusing to freeze, wq_busy=0):
[  812.387331] cups-browsed    D    0   989      1 0x00000004
[  812.387337] Call Trace:
[  812.387350]  __schedule+0x3c2/0x8b0
[  812.387355]  ? consume_skb+0x34/0xa0
[  812.387359]  schedule+0x36/0x80
[  812.387363]  schedule_preempt_disabled+0xe/0x10
[  812.387367]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.387373]  __mutex_lock_slowpath+0x13/0x20
[  812.387376]  ? __mutex_lock_slowpath+0x13/0x20
[  812.387379]  mutex_lock+0x2f/0x40
[  812.387384]  rtnetlink_rcv+0x19/0x30
[  812.387389]  netlink_unicast+0x18c/0x240
[  812.387393]  netlink_sendmsg+0x2c5/0x3a0
[  812.387398]  sock_sendmsg+0x38/0x50
[  812.387401]  SYSC_sendto+0x101/0x190
[  812.387408]  ? SYSC_getsockname+0x89/0xe0
[  812.387415]  ? fd_install+0x25/0x30
[  812.387420]  ? sock_map_fd+0x44/0x70
[  812.387424]  SyS_sendto+0xe/0x10
[  812.387429]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.387433] RIP: 0033:0x7f87f22ac4d3
[  812.387435] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  812.387439] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  812.387442] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  812.387444] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  812.387446] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  812.387448] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  812.387453] NetworkManager  D    0   990      1 0x00000004
[  812.387457] Call Trace:
[  812.387461]  __schedule+0x3c2/0x8b0
[  812.387466]  schedule+0x36/0x80
[  812.387469]  schedule_preempt_disabled+0xe/0x10
[  812.387473]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.387479]  ? ___slab_alloc+0x32b/0x4c0
[  812.387484]  __mutex_lock_slowpath+0x13/0x20
[  812.387487]  ? __mutex_lock_slowpath+0x13/0x20
[  812.387490]  mutex_lock+0x2f/0x40
[  812.387494]  rtnl_lock+0x15/0x20
[  812.387500]  dev_ioctl+0x312/0x530
[  812.387504]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  812.387510]  sock_do_ioctl+0x42/0x50
[  812.387515]  ? sock_do_ioctl+0x42/0x50
[  812.387520]  sock_ioctl+0x1f6/0x2c0
[  812.387524]  ? alloc_file+0x69/0xe0
[  812.387529]  do_vfs_ioctl+0xa1/0x5d0
[  812.387535]  ? sock_alloc_file+0xa6/0x130
[  812.387540]  SyS_ioctl+0x79/0x90
[  812.387545]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.387547] RIP: 0033:0x7f9d454bbf07
[  812.387549] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  812.387553] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  812.387555] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  812.387557] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  812.387559] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  812.387561] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  812.387568] wpa_supplicant  D    0  1049      1 0x00000004
[  812.387571] Call Trace:
[  812.387575]  __schedule+0x3c2/0x8b0
[  812.387579]  schedule+0x36/0x80
[  812.387583]  schedule_timeout+0x17a/0x360
[  812.387590]  ? call_timer_fn+0x140/0x140
[  812.387595]  msleep+0x2e/0x40
[  812.387599]  ? msleep+0x2e/0x40
[  812.387610]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  812.387631]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  812.387646]  ath10k_halt+0x102/0x160 [ath10k_core]
[  812.387660]  ath10k_stop+0x39/0x80 [ath10k_core]
[  812.387704]  drv_stop+0x33/0xf0 [mac80211]
[  812.387746]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  812.387785]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  812.387791]  ? __rtnl_unlock+0x2a/0x50
[  812.387796]  ? nla_memcpy+0x26/0x50
[  812.387836]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  812.387877]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  812.387914]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  812.387948]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  812.387953]  genl_family_rcv_msg+0x1f5/0x3d0
[  812.387957]  ? __netlink_sendskb+0x3e/0x60
[  812.387963]  genl_rcv_msg+0x4c/0x90
[  812.387967]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  812.387971]  netlink_rcv_skb+0xe7/0x120
[  812.387975]  genl_rcv+0x28/0x40
[  812.387979]  netlink_unicast+0x18c/0x240
[  812.387983]  netlink_sendmsg+0x2c5/0x3a0
[  812.387988]  sock_sendmsg+0x38/0x50
[  812.387991]  ___sys_sendmsg+0x2b6/0x2d0
[  812.388022]  ? netlink_sendmsg+0x133/0x3a0
[  812.388030]  ? kzfree+0x2d/0x40
[  812.388036]  ? dput+0xc7/0x1f0
[  812.388042]  ? mntput+0x24/0x40
[  812.388046]  __sys_sendmsg+0x54/0x90
[  812.388050]  ? __sys_sendmsg+0x54/0x90
[  812.388054]  SyS_sendmsg+0x12/0x20
[  812.388060]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388062] RIP: 0033:0x7fd5b8652450
[  812.388065] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  812.388069] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  812.388071] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  812.388073] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  812.388075] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  812.388077] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  812.388085] whoopsie        D    0  1169      1 0x00000004
[  812.388089] Call Trace:
[  812.388094]  __schedule+0x3c2/0x8b0
[  812.388100]  ? __wake_up_common+0x73/0x90
[  812.388104]  schedule+0x36/0x80
[  812.388107]  schedule_preempt_disabled+0xe/0x10
[  812.388111]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388117]  __mutex_lock_slowpath+0x13/0x20
[  812.388120]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388124]  mutex_lock+0x2f/0x40
[  812.388128]  rtnetlink_rcv+0x19/0x30
[  812.388132]  netlink_unicast+0x18c/0x240
[  812.388136]  netlink_sendmsg+0x2c5/0x3a0
[  812.388140]  sock_sendmsg+0x38/0x50
[  812.388143]  SYSC_sendto+0x101/0x190
[  812.388149]  ? security_file_permission+0x9b/0xc0
[  812.388155]  ? vfs_read+0x93/0x130
[  812.388159]  SyS_sendto+0xe/0x10
[  812.388164]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388166] RIP: 0033:0x7f804d02a3ff
[  812.388168] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388172] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  812.388174] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  812.388176] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  812.388178] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  812.388180] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  812.388215] gnome-software  D    0  2123   1992 0x00000004
[  812.388219] Call Trace:
[  812.388223]  __schedule+0x3c2/0x8b0
[  812.388227]  schedule+0x36/0x80
[  812.388231]  schedule_preempt_disabled+0xe/0x10
[  812.388235]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388240]  __mutex_lock_slowpath+0x13/0x20
[  812.388243]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388247]  mutex_lock+0x2f/0x40
[  812.388251]  rtnetlink_rcv+0x19/0x30
[  812.388255]  netlink_unicast+0x18c/0x240
[  812.388259]  netlink_sendmsg+0x2c5/0x3a0
[  812.388263]  sock_sendmsg+0x38/0x50
[  812.388266]  SYSC_sendto+0x101/0x190
[  812.388271]  ? security_file_permission+0x9b/0xc0
[  812.388277]  ? vfs_read+0x93/0x130
[  812.388281]  SyS_sendto+0xe/0x10
[  812.388286]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388288] RIP: 0033:0x7f483f67e9ff
[  812.388290] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388294] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  812.388296] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  812.388298] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  812.388300] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  812.388302] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  812.388322] evolution-calen D    0  2487   2464 0x00000004
[  812.388326] Call Trace:
[  812.388330]  __schedule+0x3c2/0x8b0
[  812.388335]  schedule+0x36/0x80
[  812.388338]  schedule_preempt_disabled+0xe/0x10
[  812.388342]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388348]  __mutex_lock_slowpath+0x13/0x20
[  812.388351]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388355]  mutex_lock+0x2f/0x40
[  812.388359]  rtnetlink_rcv+0x19/0x30
[  812.388362]  netlink_unicast+0x18c/0x240
[  812.388366]  netlink_sendmsg+0x2c5/0x3a0
[  812.388370]  sock_sendmsg+0x38/0x50
[  812.388374]  SYSC_sendto+0x101/0x190
[  812.388378]  ? security_file_permission+0x9b/0xc0
[  812.388384]  ? vfs_read+0x93/0x130
[  812.388388]  SyS_sendto+0xe/0x10
[  812.388392]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388395] RIP: 0033:0x7f2764fc19ff
[  812.388397] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388401] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  812.388403] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  812.388404] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  812.388406] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  812.388408] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  812.388414] evolution-calen D    0  2499   2464 0x00000004
[  812.388418] Call Trace:
[  812.388422]  __schedule+0x3c2/0x8b0
[  812.388427]  schedule+0x36/0x80
[  812.388430]  schedule_preempt_disabled+0xe/0x10
[  812.388434]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388439]  __mutex_lock_slowpath+0x13/0x20
[  812.388443]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388446]  mutex_lock+0x2f/0x40
[  812.388450]  rtnetlink_rcv+0x19/0x30
[  812.388454]  netlink_unicast+0x18c/0x240
[  812.388458]  netlink_sendmsg+0x2c5/0x3a0
[  812.388462]  sock_sendmsg+0x38/0x50
[  812.388465]  SYSC_sendto+0x101/0x190
[  812.388469]  ? security_file_permission+0x9b/0xc0
[  812.388475]  ? vfs_read+0x93/0x130
[  812.388479]  SyS_sendto+0xe/0x10
[  812.388484]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388486] RIP: 0033:0x7fb2c6e629ff
[  812.388488] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388492] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  812.388494] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  812.388496] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  812.388498] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  812.388500] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  812.388504] evolution-addre D    0  2519   2497 0x00000004
[  812.388508] Call Trace:
[  812.388513]  __schedule+0x3c2/0x8b0
[  812.388517]  schedule+0x36/0x80
[  812.388520]  schedule_preempt_disabled+0xe/0x10
[  812.388524]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388529]  __mutex_lock_slowpath+0x13/0x20
[  812.388533]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388536]  mutex_lock+0x2f/0x40
[  812.388540]  rtnetlink_rcv+0x19/0x30
[  812.388544]  netlink_unicast+0x18c/0x240
[  812.388548]  netlink_sendmsg+0x2c5/0x3a0
[  812.388552]  sock_sendmsg+0x38/0x50
[  812.388555]  SYSC_sendto+0x101/0x190
[  812.388560]  ? security_file_permission+0x9b/0xc0
[  812.388565]  ? vfs_read+0x93/0x130
[  812.388570]  SyS_sendto+0xe/0x10
[  812.388574]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388577] RIP: 0033:0x7f4a6d1aa9ff
[  812.388579] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388583] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  812.388584] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  812.388586] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  812.388588] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  812.388590] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  812.388601] geoclue         D    0  2681      1 0x00000004
[  812.388605] Call Trace:
[  812.388609]  __schedule+0x3c2/0x8b0
[  812.388612]  ? consume_skb+0x34/0xa0
[  812.388616]  schedule+0x36/0x80
[  812.388620]  schedule_preempt_disabled+0xe/0x10
[  812.388624]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388629]  __mutex_lock_slowpath+0x13/0x20
[  812.388633]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388636]  mutex_lock+0x2f/0x40
[  812.388640]  rtnetlink_rcv+0x19/0x30
[  812.388643]  netlink_unicast+0x18c/0x240
[  812.388648]  netlink_sendmsg+0x2c5/0x3a0
[  812.388652]  sock_sendmsg+0x38/0x50
[  812.388655]  SYSC_sendto+0x101/0x190
[  812.388659]  ? security_file_permission+0x9b/0xc0
[  812.388665]  ? vfs_read+0x93/0x130
[  812.388669]  SyS_sendto+0xe/0x10
[  812.388673]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388676] RIP: 0033:0x7f22fe6c13ff
[  812.388678] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388682] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  812.388684] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  812.388686] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  812.388687] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  812.388689] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  812.388710] deja-dup-monito D    0  2923   1992 0x00000004
[  812.388713] Call Trace:
[  812.388718]  __schedule+0x3c2/0x8b0
[  812.388722]  schedule+0x36/0x80
[  812.388726]  schedule_preempt_disabled+0xe/0x10
[  812.388730]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388735]  __mutex_lock_slowpath+0x13/0x20
[  812.388739]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388742]  mutex_lock+0x2f/0x40
[  812.388746]  rtnetlink_rcv+0x19/0x30
[  812.388750]  netlink_unicast+0x18c/0x240
[  812.388754]  netlink_sendmsg+0x2c5/0x3a0
[  812.388758]  sock_sendmsg+0x38/0x50
[  812.388761]  SYSC_sendto+0x101/0x190
[  812.388766]  ? security_file_permission+0x9b/0xc0
[  812.388771]  ? vfs_read+0x93/0x130
[  812.388775]  SyS_sendto+0xe/0x10
[  812.388780]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388782] RIP: 0033:0x7ff26c2df9ff
[  812.388784] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388788] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  812.388790] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  812.388792] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  812.388794] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  812.388796] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  812.388806] ip              D    0 14444  14443 0x00000004
[  812.388810] Call Trace:
[  812.388815]  __schedule+0x3c2/0x8b0
[  812.388819]  schedule+0x36/0x80
[  812.388823]  schedule_preempt_disabled+0xe/0x10
[  812.388827]  __mutex_lock.isra.2+0x2ae/0x4e0
[  812.388831]  ? current_time+0x38/0x70
[  812.388835]  __mutex_lock_slowpath+0x13/0x20
[  812.388839]  ? __mutex_lock_slowpath+0x13/0x20
[  812.388842]  mutex_lock+0x2f/0x40
[  812.388846]  rtnetlink_rcv+0x19/0x30
[  812.388850]  netlink_unicast+0x18c/0x240
[  812.388854]  netlink_sendmsg+0x2c5/0x3a0
[  812.388858]  sock_sendmsg+0x38/0x50
[  812.388861]  SYSC_sendto+0x101/0x190
[  812.388868]  ? handle_mm_fault+0xcc/0x1c0
[  812.388875]  ? __do_page_fault+0x283/0x4f0
[  812.388880]  SyS_sendto+0xe/0x10
[  812.388885]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  812.388887] RIP: 0033:0x7fb0aae9f39d
[  812.388889] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  812.388893] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  812.388895] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  812.388897] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  812.388898] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  812.388900] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  812.388908] OOM killer enabled.
[  812.388909] Restarting tasks ... done.
[  812.497026] PM: Syncing filesystems ... done.
[  812.847861] PM: Preparing system for sleep (freeze)
[  812.848274] Freezing user space processes ... 
[  832.858985] Freezing of tasks failed after 20.010 seconds (11 tasks refusing to freeze, wq_busy=0):
[  832.859019] cups-browsed    D    0   989      1 0x00000004
[  832.859025] Call Trace:
[  832.859038]  __schedule+0x3c2/0x8b0
[  832.859043]  ? consume_skb+0x34/0xa0
[  832.859047]  schedule+0x36/0x80
[  832.859051]  schedule_preempt_disabled+0xe/0x10
[  832.859055]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.859061]  __mutex_lock_slowpath+0x13/0x20
[  832.859064]  ? __mutex_lock_slowpath+0x13/0x20
[  832.859068]  mutex_lock+0x2f/0x40
[  832.859072]  rtnetlink_rcv+0x19/0x30
[  832.859077]  netlink_unicast+0x18c/0x240
[  832.859081]  netlink_sendmsg+0x2c5/0x3a0
[  832.859085]  sock_sendmsg+0x38/0x50
[  832.859089]  SYSC_sendto+0x101/0x190
[  832.859096]  ? SYSC_getsockname+0x89/0xe0
[  832.859102]  ? fd_install+0x25/0x30
[  832.859108]  ? sock_map_fd+0x44/0x70
[  832.859112]  SyS_sendto+0xe/0x10
[  832.859117]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.859121] RIP: 0033:0x7f87f22ac4d3
[  832.859123] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  832.859127] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  832.859129] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  832.859131] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  832.859133] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  832.859135] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  832.859141] NetworkManager  D    0   990      1 0x00000004
[  832.859145] Call Trace:
[  832.859149]  __schedule+0x3c2/0x8b0
[  832.859153]  schedule+0x36/0x80
[  832.859157]  schedule_preempt_disabled+0xe/0x10
[  832.859160]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.859166]  ? ___slab_alloc+0x32b/0x4c0
[  832.859171]  __mutex_lock_slowpath+0x13/0x20
[  832.859174]  ? __mutex_lock_slowpath+0x13/0x20
[  832.859177]  mutex_lock+0x2f/0x40
[  832.859181]  rtnl_lock+0x15/0x20
[  832.859187]  dev_ioctl+0x312/0x530
[  832.859191]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  832.859197]  sock_do_ioctl+0x42/0x50
[  832.859202]  ? sock_do_ioctl+0x42/0x50
[  832.859207]  sock_ioctl+0x1f6/0x2c0
[  832.859211]  ? alloc_file+0x69/0xe0
[  832.859216]  do_vfs_ioctl+0xa1/0x5d0
[  832.859222]  ? sock_alloc_file+0xa6/0x130
[  832.859227]  SyS_ioctl+0x79/0x90
[  832.859232]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.859234] RIP: 0033:0x7f9d454bbf07
[  832.859236] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  832.859240] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  832.859242] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  832.859244] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  832.859246] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  832.859248] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  832.859256] wpa_supplicant  D    0  1049      1 0x00000004
[  832.859259] Call Trace:
[  832.859263]  __schedule+0x3c2/0x8b0
[  832.859267]  schedule+0x36/0x80
[  832.859271]  schedule_timeout+0x17a/0x360
[  832.859277]  ? call_timer_fn+0x140/0x140
[  832.859283]  msleep+0x2e/0x40
[  832.859287]  ? msleep+0x2e/0x40
[  832.859297]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  832.859319]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  832.859334]  ath10k_halt+0x102/0x160 [ath10k_core]
[  832.859348]  ath10k_stop+0x39/0x80 [ath10k_core]
[  832.859391]  drv_stop+0x33/0xf0 [mac80211]
[  832.859434]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  832.859470]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  832.859476]  ? __rtnl_unlock+0x2a/0x50
[  832.859481]  ? nla_memcpy+0x26/0x50
[  832.859516]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  832.859552]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  832.859589]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  832.859621]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  832.859625]  genl_family_rcv_msg+0x1f5/0x3d0
[  832.859630]  ? __netlink_sendskb+0x3e/0x60
[  832.859635]  genl_rcv_msg+0x4c/0x90
[  832.859639]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  832.859643]  netlink_rcv_skb+0xe7/0x120
[  832.859648]  genl_rcv+0x28/0x40
[  832.859651]  netlink_unicast+0x18c/0x240
[  832.859655]  netlink_sendmsg+0x2c5/0x3a0
[  832.859660]  sock_sendmsg+0x38/0x50
[  832.859663]  ___sys_sendmsg+0x2b6/0x2d0
[  832.859667]  ? netlink_sendmsg+0x133/0x3a0
[  832.859675]  ? kzfree+0x2d/0x40
[  832.859681]  ? dput+0xc7/0x1f0
[  832.859687]  ? mntput+0x24/0x40
[  832.859691]  __sys_sendmsg+0x54/0x90
[  832.859694]  ? __sys_sendmsg+0x54/0x90
[  832.859699]  SyS_sendmsg+0x12/0x20
[  832.859704]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.859706] RIP: 0033:0x7fd5b8652450
[  832.859708] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  832.859711] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  832.859713] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  832.859715] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  832.859717] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  832.859719] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  832.859726] whoopsie        D    0  1169      1 0x00000004
[  832.859730] Call Trace:
[  832.859734]  __schedule+0x3c2/0x8b0
[  832.859740]  ? __wake_up_common+0x73/0x90
[  832.859744]  schedule+0x36/0x80
[  832.859747]  schedule_preempt_disabled+0xe/0x10
[  832.859751]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.859756]  __mutex_lock_slowpath+0x13/0x20
[  832.859759]  ? __mutex_lock_slowpath+0x13/0x20
[  832.859763]  mutex_lock+0x2f/0x40
[  832.859767]  rtnetlink_rcv+0x19/0x30
[  832.859770]  netlink_unicast+0x18c/0x240
[  832.859774]  netlink_sendmsg+0x2c5/0x3a0
[  832.859778]  sock_sendmsg+0x38/0x50
[  832.859781]  SYSC_sendto+0x101/0x190
[  832.859786]  ? security_file_permission+0x9b/0xc0
[  832.859792]  ? vfs_read+0x93/0x130
[  832.859796]  SyS_sendto+0xe/0x10
[  832.859801]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.859803] RIP: 0033:0x7f804d02a3ff
[  832.859804] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.859808] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  832.859810] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  832.859811] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  832.859813] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  832.859815] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  832.859846] gnome-software  D    0  2123   1992 0x00000004
[  832.859850] Call Trace:
[  832.859854]  __schedule+0x3c2/0x8b0
[  832.859858]  schedule+0x36/0x80
[  832.859861]  schedule_preempt_disabled+0xe/0x10
[  832.859864]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.859870]  __mutex_lock_slowpath+0x13/0x20
[  832.859873]  ? __mutex_lock_slowpath+0x13/0x20
[  832.859876]  mutex_lock+0x2f/0x40
[  832.859880]  rtnetlink_rcv+0x19/0x30
[  832.859883]  netlink_unicast+0x18c/0x240
[  832.859887]  netlink_sendmsg+0x2c5/0x3a0
[  832.859891]  sock_sendmsg+0x38/0x50
[  832.859894]  SYSC_sendto+0x101/0x190
[  832.859898]  ? security_file_permission+0x9b/0xc0
[  832.859903]  ? vfs_read+0x93/0x130
[  832.859907]  SyS_sendto+0xe/0x10
[  832.859912]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.859914] RIP: 0033:0x7f483f67e9ff
[  832.859915] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.859918] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  832.859920] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  832.859921] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  832.859923] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  832.859925] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  832.859943] evolution-calen D    0  2487   2464 0x00000004
[  832.859946] Call Trace:
[  832.859950]  __schedule+0x3c2/0x8b0
[  832.859954]  schedule+0x36/0x80
[  832.859957]  schedule_preempt_disabled+0xe/0x10
[  832.859960]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.859965]  __mutex_lock_slowpath+0x13/0x20
[  832.859969]  ? __mutex_lock_slowpath+0x13/0x20
[  832.859972]  mutex_lock+0x2f/0x40
[  832.859975]  rtnetlink_rcv+0x19/0x30
[  832.859979]  netlink_unicast+0x18c/0x240
[  832.859982]  netlink_sendmsg+0x2c5/0x3a0
[  832.859986]  sock_sendmsg+0x38/0x50
[  832.859989]  SYSC_sendto+0x101/0x190
[  832.859993]  ? security_file_permission+0x9b/0xc0
[  832.860032]  ? vfs_read+0x93/0x130
[  832.860036]  SyS_sendto+0xe/0x10
[  832.860041]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860043] RIP: 0033:0x7f2764fc19ff
[  832.860044] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860047] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  832.860049] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  832.860051] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  832.860052] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  832.860054] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  832.860060] evolution-calen D    0  2499   2464 0x00000004
[  832.860063] Call Trace:
[  832.860067]  __schedule+0x3c2/0x8b0
[  832.860071]  schedule+0x36/0x80
[  832.860074]  schedule_preempt_disabled+0xe/0x10
[  832.860078]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.860083]  __mutex_lock_slowpath+0x13/0x20
[  832.860086]  ? __mutex_lock_slowpath+0x13/0x20
[  832.860089]  mutex_lock+0x2f/0x40
[  832.860093]  rtnetlink_rcv+0x19/0x30
[  832.860096]  netlink_unicast+0x18c/0x240
[  832.860100]  netlink_sendmsg+0x2c5/0x3a0
[  832.860104]  sock_sendmsg+0x38/0x50
[  832.860107]  SYSC_sendto+0x101/0x190
[  832.860111]  ? security_file_permission+0x9b/0xc0
[  832.860116]  ? vfs_read+0x93/0x130
[  832.860120]  SyS_sendto+0xe/0x10
[  832.860124]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860126] RIP: 0033:0x7fb2c6e629ff
[  832.860127] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860131] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  832.860132] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  832.860134] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  832.860136] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  832.860137] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  832.860142] evolution-addre D    0  2519   2497 0x00000004
[  832.860145] Call Trace:
[  832.860149]  __schedule+0x3c2/0x8b0
[  832.860153]  schedule+0x36/0x80
[  832.860156]  schedule_preempt_disabled+0xe/0x10
[  832.860159]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.860164]  __mutex_lock_slowpath+0x13/0x20
[  832.860168]  ? __mutex_lock_slowpath+0x13/0x20
[  832.860171]  mutex_lock+0x2f/0x40
[  832.860174]  rtnetlink_rcv+0x19/0x30
[  832.860178]  netlink_unicast+0x18c/0x240
[  832.860181]  netlink_sendmsg+0x2c5/0x3a0
[  832.860185]  sock_sendmsg+0x38/0x50
[  832.860188]  SYSC_sendto+0x101/0x190
[  832.860192]  ? security_file_permission+0x9b/0xc0
[  832.860197]  ? vfs_read+0x93/0x130
[  832.860201]  SyS_sendto+0xe/0x10
[  832.860205]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860207] RIP: 0033:0x7f4a6d1aa9ff
[  832.860209] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860212] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  832.860213] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  832.860215] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  832.860217] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  832.860219] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  832.860228] geoclue         D    0  2681      1 0x00000004
[  832.860232] Call Trace:
[  832.860235]  __schedule+0x3c2/0x8b0
[  832.860239]  ? consume_skb+0x34/0xa0
[  832.860242]  schedule+0x36/0x80
[  832.860246]  schedule_preempt_disabled+0xe/0x10
[  832.860249]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.860254]  __mutex_lock_slowpath+0x13/0x20
[  832.860257]  ? __mutex_lock_slowpath+0x13/0x20
[  832.860260]  mutex_lock+0x2f/0x40
[  832.860264]  rtnetlink_rcv+0x19/0x30
[  832.860267]  netlink_unicast+0x18c/0x240
[  832.860271]  netlink_sendmsg+0x2c5/0x3a0
[  832.860275]  sock_sendmsg+0x38/0x50
[  832.860278]  SYSC_sendto+0x101/0x190
[  832.860282]  ? security_file_permission+0x9b/0xc0
[  832.860287]  ? vfs_read+0x93/0x130
[  832.860291]  SyS_sendto+0xe/0x10
[  832.860295]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860297] RIP: 0033:0x7f22fe6c13ff
[  832.860298] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860302] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  832.860303] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  832.860305] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  832.860307] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  832.860308] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  832.860328] deja-dup-monito D    0  2923   1992 0x00000004
[  832.860331] Call Trace:
[  832.860335]  __schedule+0x3c2/0x8b0
[  832.860339]  schedule+0x36/0x80
[  832.860342]  schedule_preempt_disabled+0xe/0x10
[  832.860345]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.860350]  __mutex_lock_slowpath+0x13/0x20
[  832.860354]  ? __mutex_lock_slowpath+0x13/0x20
[  832.860357]  mutex_lock+0x2f/0x40
[  832.860361]  rtnetlink_rcv+0x19/0x30
[  832.860364]  netlink_unicast+0x18c/0x240
[  832.860368]  netlink_sendmsg+0x2c5/0x3a0
[  832.860371]  sock_sendmsg+0x38/0x50
[  832.860374]  SYSC_sendto+0x101/0x190
[  832.860378]  ? security_file_permission+0x9b/0xc0
[  832.860383]  ? vfs_read+0x93/0x130
[  832.860387]  SyS_sendto+0xe/0x10
[  832.860391]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860393] RIP: 0033:0x7ff26c2df9ff
[  832.860395] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860398] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  832.860399] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  832.860401] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  832.860403] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  832.860404] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  832.860415] ip              D    0 14444  14443 0x00000004
[  832.860418] Call Trace:
[  832.860422]  __schedule+0x3c2/0x8b0
[  832.860426]  schedule+0x36/0x80
[  832.860429]  schedule_preempt_disabled+0xe/0x10
[  832.860432]  __mutex_lock.isra.2+0x2ae/0x4e0
[  832.860437]  ? current_time+0x38/0x70
[  832.860441]  __mutex_lock_slowpath+0x13/0x20
[  832.860444]  ? __mutex_lock_slowpath+0x13/0x20
[  832.860447]  mutex_lock+0x2f/0x40
[  832.860451]  rtnetlink_rcv+0x19/0x30
[  832.860454]  netlink_unicast+0x18c/0x240
[  832.860458]  netlink_sendmsg+0x2c5/0x3a0
[  832.860462]  sock_sendmsg+0x38/0x50
[  832.860465]  SYSC_sendto+0x101/0x190
[  832.860471]  ? handle_mm_fault+0xcc/0x1c0
[  832.860478]  ? __do_page_fault+0x283/0x4f0
[  832.860482]  SyS_sendto+0xe/0x10
[  832.860487]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  832.860489] RIP: 0033:0x7fb0aae9f39d
[  832.860490] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  832.860493] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  832.860495] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  832.860497] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  832.860498] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  832.860500] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  832.860508] OOM killer enabled.
[  832.860509] Restarting tasks ... done.
[  842.990330] PM: Syncing filesystems ... done.
[  843.140905] PM: Preparing system for sleep (mem)
[  843.141416] Freezing user space processes ... 
[  863.145924] Freezing of tasks failed after 20.004 seconds (12 tasks refusing to freeze, wq_busy=0):
[  863.145959] cups-browsed    D    0   989      1 0x00000004
[  863.145964] Call Trace:
[  863.145978]  __schedule+0x3c2/0x8b0
[  863.145983]  ? consume_skb+0x34/0xa0
[  863.145987]  schedule+0x36/0x80
[  863.145991]  schedule_preempt_disabled+0xe/0x10
[  863.145995]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146000]  __mutex_lock_slowpath+0x13/0x20
[  863.146004]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146007]  mutex_lock+0x2f/0x40
[  863.146012]  rtnetlink_rcv+0x19/0x30
[  863.146017]  netlink_unicast+0x18c/0x240
[  863.146021]  netlink_sendmsg+0x2c5/0x3a0
[  863.146025]  sock_sendmsg+0x38/0x50
[  863.146028]  SYSC_sendto+0x101/0x190
[  863.146036]  ? SYSC_getsockname+0x89/0xe0
[  863.146042]  ? fd_install+0x25/0x30
[  863.146047]  ? sock_map_fd+0x44/0x70
[  863.146051]  SyS_sendto+0xe/0x10
[  863.146057]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146060] RIP: 0033:0x7f87f22ac4d3
[  863.146063] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  863.146067] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  863.146069] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  863.146071] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  863.146073] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  863.146075] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  863.146081] NetworkManager  D    0   990      1 0x00000004
[  863.146085] Call Trace:
[  863.146089]  __schedule+0x3c2/0x8b0
[  863.146093]  schedule+0x36/0x80
[  863.146097]  schedule_preempt_disabled+0xe/0x10
[  863.146100]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146106]  ? ___slab_alloc+0x32b/0x4c0
[  863.146111]  __mutex_lock_slowpath+0x13/0x20
[  863.146114]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146117]  mutex_lock+0x2f/0x40
[  863.146121]  rtnl_lock+0x15/0x20
[  863.146126]  dev_ioctl+0x312/0x530
[  863.146131]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  863.146137]  sock_do_ioctl+0x42/0x50
[  863.146142]  ? sock_do_ioctl+0x42/0x50
[  863.146147]  sock_ioctl+0x1f6/0x2c0
[  863.146151]  ? alloc_file+0x69/0xe0
[  863.146156]  do_vfs_ioctl+0xa1/0x5d0
[  863.146161]  ? sock_alloc_file+0xa6/0x130
[  863.146166]  SyS_ioctl+0x79/0x90
[  863.146171]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146174] RIP: 0033:0x7f9d454bbf07
[  863.146176] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  863.146179] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  863.146181] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  863.146183] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  863.146185] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  863.146187] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  863.146195] wpa_supplicant  D    0  1049      1 0x00000004
[  863.146198] Call Trace:
[  863.146202]  __schedule+0x3c2/0x8b0
[  863.146206]  schedule+0x36/0x80
[  863.146210]  schedule_timeout+0x17a/0x360
[  863.146216]  ? call_timer_fn+0x140/0x140
[  863.146222]  msleep+0x2e/0x40
[  863.146226]  ? msleep+0x2e/0x40
[  863.146236]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  863.146259]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  863.146274]  ath10k_halt+0x102/0x160 [ath10k_core]
[  863.146288]  ath10k_stop+0x39/0x80 [ath10k_core]
[  863.146331]  drv_stop+0x33/0xf0 [mac80211]
[  863.146374]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  863.146410]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  863.146416]  ? __rtnl_unlock+0x2a/0x50
[  863.146421]  ? nla_memcpy+0x26/0x50
[  863.146456]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  863.146492]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  863.146528]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  863.146560]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  863.146564]  genl_family_rcv_msg+0x1f5/0x3d0
[  863.146569]  ? __netlink_sendskb+0x3e/0x60
[  863.146574]  genl_rcv_msg+0x4c/0x90
[  863.146578]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  863.146582]  netlink_rcv_skb+0xe7/0x120
[  863.146587]  genl_rcv+0x28/0x40
[  863.146590]  netlink_unicast+0x18c/0x240
[  863.146594]  netlink_sendmsg+0x2c5/0x3a0
[  863.146599]  sock_sendmsg+0x38/0x50
[  863.146602]  ___sys_sendmsg+0x2b6/0x2d0
[  863.146607]  ? netlink_sendmsg+0x133/0x3a0
[  863.146615]  ? kzfree+0x2d/0x40
[  863.146621]  ? dput+0xc7/0x1f0
[  863.146626]  ? mntput+0x24/0x40
[  863.146630]  __sys_sendmsg+0x54/0x90
[  863.146633]  ? __sys_sendmsg+0x54/0x90
[  863.146638]  SyS_sendmsg+0x12/0x20
[  863.146643]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146646] RIP: 0033:0x7fd5b8652450
[  863.146647] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  863.146651] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  863.146653] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  863.146654] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  863.146657] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  863.146658] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  863.146666] whoopsie        D    0  1169      1 0x00000004
[  863.146669] Call Trace:
[  863.146674]  __schedule+0x3c2/0x8b0
[  863.146679]  ? __wake_up_common+0x73/0x90
[  863.146683]  schedule+0x36/0x80
[  863.146686]  schedule_preempt_disabled+0xe/0x10
[  863.146690]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146695]  __mutex_lock_slowpath+0x13/0x20
[  863.146699]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146702]  mutex_lock+0x2f/0x40
[  863.146706]  rtnetlink_rcv+0x19/0x30
[  863.146709]  netlink_unicast+0x18c/0x240
[  863.146713]  netlink_sendmsg+0x2c5/0x3a0
[  863.146717]  sock_sendmsg+0x38/0x50
[  863.146720]  SYSC_sendto+0x101/0x190
[  863.146725]  ? security_file_permission+0x9b/0xc0
[  863.146731]  ? vfs_read+0x93/0x130
[  863.146736]  SyS_sendto+0xe/0x10
[  863.146740]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146742] RIP: 0033:0x7f804d02a3ff
[  863.146744] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.146747] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  863.146749] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  863.146750] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  863.146752] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  863.146754] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  863.146785] gnome-software  D    0  2123   1992 0x00000004
[  863.146789] Call Trace:
[  863.146793]  __schedule+0x3c2/0x8b0
[  863.146797]  schedule+0x36/0x80
[  863.146800]  schedule_preempt_disabled+0xe/0x10
[  863.146804]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146809]  __mutex_lock_slowpath+0x13/0x20
[  863.146812]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146816]  mutex_lock+0x2f/0x40
[  863.146819]  rtnetlink_rcv+0x19/0x30
[  863.146823]  netlink_unicast+0x18c/0x240
[  863.146826]  netlink_sendmsg+0x2c5/0x3a0
[  863.146830]  sock_sendmsg+0x38/0x50
[  863.146833]  SYSC_sendto+0x101/0x190
[  863.146837]  ? security_file_permission+0x9b/0xc0
[  863.146843]  ? vfs_read+0x93/0x130
[  863.146847]  SyS_sendto+0xe/0x10
[  863.146851]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146853] RIP: 0033:0x7f483f67e9ff
[  863.146855] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.146858] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  863.146859] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  863.146861] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  863.146863] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  863.146865] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  863.146882] evolution-calen D    0  2487   2464 0x00000004
[  863.146885] Call Trace:
[  863.146889]  __schedule+0x3c2/0x8b0
[  863.146893]  schedule+0x36/0x80
[  863.146896]  schedule_preempt_disabled+0xe/0x10
[  863.146900]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146905]  __mutex_lock_slowpath+0x13/0x20
[  863.146908]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146911]  mutex_lock+0x2f/0x40
[  863.146915]  rtnetlink_rcv+0x19/0x30
[  863.146918]  netlink_unicast+0x18c/0x240
[  863.146922]  netlink_sendmsg+0x2c5/0x3a0
[  863.146926]  sock_sendmsg+0x38/0x50
[  863.146929]  SYSC_sendto+0x101/0x190
[  863.146933]  ? security_file_permission+0x9b/0xc0
[  863.146938]  ? vfs_read+0x93/0x130
[  863.146942]  SyS_sendto+0xe/0x10
[  863.146946]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.146948] RIP: 0033:0x7f2764fc19ff
[  863.146950] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.146953] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  863.146954] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  863.146956] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  863.146958] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  863.146959] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  863.146965] evolution-calen D    0  2499   2464 0x00000004
[  863.146968] Call Trace:
[  863.146972]  __schedule+0x3c2/0x8b0
[  863.146976]  schedule+0x36/0x80
[  863.146979]  schedule_preempt_disabled+0xe/0x10
[  863.146982]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.146987]  __mutex_lock_slowpath+0x13/0x20
[  863.146991]  ? __mutex_lock_slowpath+0x13/0x20
[  863.146994]  mutex_lock+0x2f/0x40
[  863.146997]  rtnetlink_rcv+0x19/0x30
[  863.147001]  netlink_unicast+0x18c/0x240
[  863.147004]  netlink_sendmsg+0x2c5/0x3a0
[  863.147008]  sock_sendmsg+0x38/0x50
[  863.147011]  SYSC_sendto+0x101/0x190
[  863.147015]  ? security_file_permission+0x9b/0xc0
[  863.147020]  ? vfs_read+0x93/0x130
[  863.147024]  SyS_sendto+0xe/0x10
[  863.147028]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147030] RIP: 0033:0x7fb2c6e629ff
[  863.147032] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.147035] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  863.147036] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  863.147038] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  863.147040] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  863.147042] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  863.147046] evolution-addre D    0  2519   2497 0x00000004
[  863.147049] Call Trace:
[  863.147053]  __schedule+0x3c2/0x8b0
[  863.147057]  schedule+0x36/0x80
[  863.147060]  schedule_preempt_disabled+0xe/0x10
[  863.147063]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.147068]  __mutex_lock_slowpath+0x13/0x20
[  863.147072]  ? __mutex_lock_slowpath+0x13/0x20
[  863.147075]  mutex_lock+0x2f/0x40
[  863.147079]  rtnetlink_rcv+0x19/0x30
[  863.147082]  netlink_unicast+0x18c/0x240
[  863.147086]  netlink_sendmsg+0x2c5/0x3a0
[  863.147089]  sock_sendmsg+0x38/0x50
[  863.147092]  SYSC_sendto+0x101/0x190
[  863.147096]  ? security_file_permission+0x9b/0xc0
[  863.147101]  ? vfs_read+0x93/0x130
[  863.147105]  SyS_sendto+0xe/0x10
[  863.147109]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147111] RIP: 0033:0x7f4a6d1aa9ff
[  863.147113] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.147116] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  863.147118] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  863.147119] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  863.147121] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  863.147123] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  863.147132] geoclue         D    0  2681      1 0x00000004
[  863.147136] Call Trace:
[  863.147139]  __schedule+0x3c2/0x8b0
[  863.147142]  ? consume_skb+0x34/0xa0
[  863.147146]  schedule+0x36/0x80
[  863.147149]  schedule_preempt_disabled+0xe/0x10
[  863.147153]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.147158]  __mutex_lock_slowpath+0x13/0x20
[  863.147161]  ? __mutex_lock_slowpath+0x13/0x20
[  863.147164]  mutex_lock+0x2f/0x40
[  863.147168]  rtnetlink_rcv+0x19/0x30
[  863.147171]  netlink_unicast+0x18c/0x240
[  863.147175]  netlink_sendmsg+0x2c5/0x3a0
[  863.147179]  sock_sendmsg+0x38/0x50
[  863.147182]  SYSC_sendto+0x101/0x190
[  863.147186]  ? security_file_permission+0x9b/0xc0
[  863.147191]  ? vfs_read+0x93/0x130
[  863.147195]  SyS_sendto+0xe/0x10
[  863.147199]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147201] RIP: 0033:0x7f22fe6c13ff
[  863.147203] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.147206] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  863.147208] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  863.147209] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  863.147211] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  863.147213] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  863.147225] DNS Resolver #3 D    0 14484   1715 0x00000004
[  863.147228] Call Trace:
[  863.147232]  __schedule+0x3c2/0x8b0
[  863.147236]  schedule+0x36/0x80
[  863.147239]  schedule_preempt_disabled+0xe/0x10
[  863.147242]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.147247]  __mutex_lock_slowpath+0x13/0x20
[  863.147251]  ? __mutex_lock_slowpath+0x13/0x20
[  863.147254]  mutex_lock+0x2f/0x40
[  863.147257]  rtnetlink_rcv+0x19/0x30
[  863.147261]  netlink_unicast+0x18c/0x240
[  863.147264]  netlink_sendmsg+0x2c5/0x3a0
[  863.147268]  sock_sendmsg+0x38/0x50
[  863.147271]  SYSC_sendto+0x101/0x190
[  863.147278]  ? SYSC_getsockname+0x89/0xe0
[  863.147283]  ? fd_install+0x25/0x30
[  863.147288]  ? sock_map_fd+0x44/0x70
[  863.147291]  SyS_sendto+0xe/0x10
[  863.147296]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147298] RIP: 0033:0x7fec02b384d3
[  863.147299] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  863.147302] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  863.147304] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  863.147306] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  863.147308] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  863.147309] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  863.147320] deja-dup-monito D    0  2923   1992 0x00000004
[  863.147323] Call Trace:
[  863.147327]  __schedule+0x3c2/0x8b0
[  863.147331]  schedule+0x36/0x80
[  863.147334]  schedule_preempt_disabled+0xe/0x10
[  863.147338]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.147343]  __mutex_lock_slowpath+0x13/0x20
[  863.147346]  ? __mutex_lock_slowpath+0x13/0x20
[  863.147349]  mutex_lock+0x2f/0x40
[  863.147353]  rtnetlink_rcv+0x19/0x30
[  863.147356]  netlink_unicast+0x18c/0x240
[  863.147360]  netlink_sendmsg+0x2c5/0x3a0
[  863.147364]  sock_sendmsg+0x38/0x50
[  863.147367]  SYSC_sendto+0x101/0x190
[  863.147371]  ? security_file_permission+0x9b/0xc0
[  863.147376]  ? vfs_read+0x93/0x130
[  863.147380]  SyS_sendto+0xe/0x10
[  863.147384]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147386] RIP: 0033:0x7ff26c2df9ff
[  863.147388] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.147391] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  863.147392] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  863.147394] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  863.147396] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  863.147398] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  863.147408] ip              D    0 14444  14443 0x00000004
[  863.147411] Call Trace:
[  863.147415]  __schedule+0x3c2/0x8b0
[  863.147419]  schedule+0x36/0x80
[  863.147422]  schedule_preempt_disabled+0xe/0x10
[  863.147425]  __mutex_lock.isra.2+0x2ae/0x4e0
[  863.147429]  ? current_time+0x38/0x70
[  863.147434]  __mutex_lock_slowpath+0x13/0x20
[  863.147437]  ? __mutex_lock_slowpath+0x13/0x20
[  863.147440]  mutex_lock+0x2f/0x40
[  863.147444]  rtnetlink_rcv+0x19/0x30
[  863.147447]  netlink_unicast+0x18c/0x240
[  863.147451]  netlink_sendmsg+0x2c5/0x3a0
[  863.147454]  sock_sendmsg+0x38/0x50
[  863.147457]  SYSC_sendto+0x101/0x190
[  863.147464]  ? handle_mm_fault+0xcc/0x1c0
[  863.147471]  ? __do_page_fault+0x283/0x4f0
[  863.147475]  SyS_sendto+0xe/0x10
[  863.147480]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  863.147482] RIP: 0033:0x7fb0aae9f39d
[  863.147483] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  863.147486] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  863.147488] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  863.147490] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  863.147491] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  863.147493] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  863.147501] OOM killer enabled.
[  863.147502] Restarting tasks ... done.
[  863.257541] PM: Syncing filesystems ... done.
[  863.585655] PM: Preparing system for sleep (freeze)
[  863.585816] Freezing user space processes ... 
[  883.595822] Freezing of tasks failed after 20.009 seconds (12 tasks refusing to freeze, wq_busy=0):
[  883.595856] cups-browsed    D    0   989      1 0x00000004
[  883.595861] Call Trace:
[  883.595874]  __schedule+0x3c2/0x8b0
[  883.595879]  ? consume_skb+0x34/0xa0
[  883.595883]  schedule+0x36/0x80
[  883.595887]  schedule_preempt_disabled+0xe/0x10
[  883.595891]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.595897]  __mutex_lock_slowpath+0x13/0x20
[  883.595900]  ? __mutex_lock_slowpath+0x13/0x20
[  883.595904]  mutex_lock+0x2f/0x40
[  883.595908]  rtnetlink_rcv+0x19/0x30
[  883.595913]  netlink_unicast+0x18c/0x240
[  883.595917]  netlink_sendmsg+0x2c5/0x3a0
[  883.595922]  sock_sendmsg+0x38/0x50
[  883.595925]  SYSC_sendto+0x101/0x190
[  883.595932]  ? SYSC_getsockname+0x89/0xe0
[  883.595939]  ? fd_install+0x25/0x30
[  883.595944]  ? sock_map_fd+0x44/0x70
[  883.595948]  SyS_sendto+0xe/0x10
[  883.595953]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.595957] RIP: 0033:0x7f87f22ac4d3
[  883.595959] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  883.595963] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  883.595965] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  883.595967] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  883.595969] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  883.595971] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  883.595977] NetworkManager  D    0   990      1 0x00000004
[  883.595981] Call Trace:
[  883.595985]  __schedule+0x3c2/0x8b0
[  883.595989]  schedule+0x36/0x80
[  883.595992]  schedule_preempt_disabled+0xe/0x10
[  883.595996]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596024]  ? ___slab_alloc+0x32b/0x4c0
[  883.596029]  __mutex_lock_slowpath+0x13/0x20
[  883.596032]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596035]  mutex_lock+0x2f/0x40
[  883.596039]  rtnl_lock+0x15/0x20
[  883.596045]  dev_ioctl+0x312/0x530
[  883.596049]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  883.596056]  sock_do_ioctl+0x42/0x50
[  883.596061]  ? sock_do_ioctl+0x42/0x50
[  883.596066]  sock_ioctl+0x1f6/0x2c0
[  883.596070]  ? alloc_file+0x69/0xe0
[  883.596075]  do_vfs_ioctl+0xa1/0x5d0
[  883.596080]  ? sock_alloc_file+0xa6/0x130
[  883.596086]  SyS_ioctl+0x79/0x90
[  883.596091]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596093] RIP: 0033:0x7f9d454bbf07
[  883.596095] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  883.596099] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  883.596101] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  883.596103] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  883.596104] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  883.596106] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  883.596115] wpa_supplicant  D    0  1049      1 0x00000004
[  883.596118] Call Trace:
[  883.596122]  __schedule+0x3c2/0x8b0
[  883.596126]  schedule+0x36/0x80
[  883.596130]  schedule_timeout+0x17a/0x360
[  883.596136]  ? call_timer_fn+0x140/0x140
[  883.596141]  msleep+0x2e/0x40
[  883.596146]  ? msleep+0x2e/0x40
[  883.596156]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  883.596177]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  883.596192]  ath10k_halt+0x102/0x160 [ath10k_core]
[  883.596207]  ath10k_stop+0x39/0x80 [ath10k_core]
[  883.596249]  drv_stop+0x33/0xf0 [mac80211]
[  883.596292]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  883.596328]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  883.596334]  ? __rtnl_unlock+0x2a/0x50
[  883.596339]  ? nla_memcpy+0x26/0x50
[  883.596374]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  883.596409]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  883.596446]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  883.596477]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  883.596482]  genl_family_rcv_msg+0x1f5/0x3d0
[  883.596486]  ? __netlink_sendskb+0x3e/0x60
[  883.596492]  genl_rcv_msg+0x4c/0x90
[  883.596496]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  883.596499]  netlink_rcv_skb+0xe7/0x120
[  883.596504]  genl_rcv+0x28/0x40
[  883.596507]  netlink_unicast+0x18c/0x240
[  883.596511]  netlink_sendmsg+0x2c5/0x3a0
[  883.596516]  sock_sendmsg+0x38/0x50
[  883.596519]  ___sys_sendmsg+0x2b6/0x2d0
[  883.596523]  ? netlink_sendmsg+0x133/0x3a0
[  883.596531]  ? kzfree+0x2d/0x40
[  883.596537]  ? dput+0xc7/0x1f0
[  883.596542]  ? mntput+0x24/0x40
[  883.596546]  __sys_sendmsg+0x54/0x90
[  883.596549]  ? __sys_sendmsg+0x54/0x90
[  883.596554]  SyS_sendmsg+0x12/0x20
[  883.596559]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596562] RIP: 0033:0x7fd5b8652450
[  883.596564] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  883.596567] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  883.596569] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  883.596571] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  883.596573] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  883.596574] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  883.596582] whoopsie        D    0  1169      1 0x00000004
[  883.596586] Call Trace:
[  883.596590]  __schedule+0x3c2/0x8b0
[  883.596595]  ? __wake_up_common+0x73/0x90
[  883.596599]  schedule+0x36/0x80
[  883.596603]  schedule_preempt_disabled+0xe/0x10
[  883.596606]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596611]  __mutex_lock_slowpath+0x13/0x20
[  883.596615]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596618]  mutex_lock+0x2f/0x40
[  883.596622]  rtnetlink_rcv+0x19/0x30
[  883.596626]  netlink_unicast+0x18c/0x240
[  883.596630]  netlink_sendmsg+0x2c5/0x3a0
[  883.596634]  sock_sendmsg+0x38/0x50
[  883.596637]  SYSC_sendto+0x101/0x190
[  883.596642]  ? security_file_permission+0x9b/0xc0
[  883.596648]  ? vfs_read+0x93/0x130
[  883.596652]  SyS_sendto+0xe/0x10
[  883.596657]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596659] RIP: 0033:0x7f804d02a3ff
[  883.596660] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.596664] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  883.596665] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  883.596667] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  883.596669] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  883.596671] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  883.596703] gnome-software  D    0  2123   1992 0x00000004
[  883.596707] Call Trace:
[  883.596711]  __schedule+0x3c2/0x8b0
[  883.596715]  schedule+0x36/0x80
[  883.596718]  schedule_preempt_disabled+0xe/0x10
[  883.596721]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596726]  __mutex_lock_slowpath+0x13/0x20
[  883.596730]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596733]  mutex_lock+0x2f/0x40
[  883.596736]  rtnetlink_rcv+0x19/0x30
[  883.596740]  netlink_unicast+0x18c/0x240
[  883.596744]  netlink_sendmsg+0x2c5/0x3a0
[  883.596748]  sock_sendmsg+0x38/0x50
[  883.596751]  SYSC_sendto+0x101/0x190
[  883.596755]  ? security_file_permission+0x9b/0xc0
[  883.596760]  ? vfs_read+0x93/0x130
[  883.596764]  SyS_sendto+0xe/0x10
[  883.596769]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596770] RIP: 0033:0x7f483f67e9ff
[  883.596772] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.596775] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  883.596777] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  883.596778] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  883.596780] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  883.596782] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  883.596800] evolution-calen D    0  2487   2464 0x00000004
[  883.596803] Call Trace:
[  883.596807]  __schedule+0x3c2/0x8b0
[  883.596811]  schedule+0x36/0x80
[  883.596814]  schedule_preempt_disabled+0xe/0x10
[  883.596817]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596823]  __mutex_lock_slowpath+0x13/0x20
[  883.596826]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596829]  mutex_lock+0x2f/0x40
[  883.596833]  rtnetlink_rcv+0x19/0x30
[  883.596836]  netlink_unicast+0x18c/0x240
[  883.596840]  netlink_sendmsg+0x2c5/0x3a0
[  883.596844]  sock_sendmsg+0x38/0x50
[  883.596847]  SYSC_sendto+0x101/0x190
[  883.596850]  ? security_file_permission+0x9b/0xc0
[  883.596856]  ? vfs_read+0x93/0x130
[  883.596860]  SyS_sendto+0xe/0x10
[  883.596864]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596866] RIP: 0033:0x7f2764fc19ff
[  883.596867] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.596870] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  883.596872] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  883.596874] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  883.596875] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  883.596877] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  883.596883] evolution-calen D    0  2499   2464 0x00000004
[  883.596886] Call Trace:
[  883.596889]  __schedule+0x3c2/0x8b0
[  883.596893]  schedule+0x36/0x80
[  883.596896]  schedule_preempt_disabled+0xe/0x10
[  883.596900]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596905]  __mutex_lock_slowpath+0x13/0x20
[  883.596908]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596911]  mutex_lock+0x2f/0x40
[  883.596915]  rtnetlink_rcv+0x19/0x30
[  883.596918]  netlink_unicast+0x18c/0x240
[  883.596922]  netlink_sendmsg+0x2c5/0x3a0
[  883.596926]  sock_sendmsg+0x38/0x50
[  883.596929]  SYSC_sendto+0x101/0x190
[  883.596933]  ? security_file_permission+0x9b/0xc0
[  883.596938]  ? vfs_read+0x93/0x130
[  883.596942]  SyS_sendto+0xe/0x10
[  883.596946]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.596948] RIP: 0033:0x7fb2c6e629ff
[  883.596949] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.596952] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  883.596954] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  883.596956] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  883.596957] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  883.596959] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  883.596964] evolution-addre D    0  2519   2497 0x00000004
[  883.596967] Call Trace:
[  883.596971]  __schedule+0x3c2/0x8b0
[  883.596975]  schedule+0x36/0x80
[  883.596978]  schedule_preempt_disabled+0xe/0x10
[  883.596981]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.596986]  __mutex_lock_slowpath+0x13/0x20
[  883.596989]  ? __mutex_lock_slowpath+0x13/0x20
[  883.596992]  mutex_lock+0x2f/0x40
[  883.596996]  rtnetlink_rcv+0x19/0x30
[  883.596999]  netlink_unicast+0x18c/0x240
[  883.597003]  netlink_sendmsg+0x2c5/0x3a0
[  883.597007]  sock_sendmsg+0x38/0x50
[  883.597010]  SYSC_sendto+0x101/0x190
[  883.597014]  ? security_file_permission+0x9b/0xc0
[  883.597019]  ? vfs_read+0x93/0x130
[  883.597023]  SyS_sendto+0xe/0x10
[  883.597027]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.597029] RIP: 0033:0x7f4a6d1aa9ff
[  883.597030] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.597033] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  883.597035] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  883.597037] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  883.597038] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  883.597040] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  883.597050] geoclue         D    0  2681      1 0x00000004
[  883.597053] Call Trace:
[  883.597056]  __schedule+0x3c2/0x8b0
[  883.597060]  ? consume_skb+0x34/0xa0
[  883.597063]  schedule+0x36/0x80
[  883.597066]  schedule_preempt_disabled+0xe/0x10
[  883.597070]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.597075]  __mutex_lock_slowpath+0x13/0x20
[  883.597078]  ? __mutex_lock_slowpath+0x13/0x20
[  883.597081]  mutex_lock+0x2f/0x40
[  883.597085]  rtnetlink_rcv+0x19/0x30
[  883.597088]  netlink_unicast+0x18c/0x240
[  883.597092]  netlink_sendmsg+0x2c5/0x3a0
[  883.597096]  sock_sendmsg+0x38/0x50
[  883.597099]  SYSC_sendto+0x101/0x190
[  883.597103]  ? security_file_permission+0x9b/0xc0
[  883.597108]  ? vfs_read+0x93/0x130
[  883.597112]  SyS_sendto+0xe/0x10
[  883.597116]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.597118] RIP: 0033:0x7f22fe6c13ff
[  883.597119] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.597122] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  883.597124] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  883.597126] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  883.597127] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  883.597129] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  883.597141] DNS Resolver #3 D    0 14484   1715 0x00000004
[  883.597145] Call Trace:
[  883.597148]  __schedule+0x3c2/0x8b0
[  883.597152]  schedule+0x36/0x80
[  883.597156]  schedule_preempt_disabled+0xe/0x10
[  883.597159]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.597164]  __mutex_lock_slowpath+0x13/0x20
[  883.597167]  ? __mutex_lock_slowpath+0x13/0x20
[  883.597170]  mutex_lock+0x2f/0x40
[  883.597174]  rtnetlink_rcv+0x19/0x30
[  883.597177]  netlink_unicast+0x18c/0x240
[  883.597181]  netlink_sendmsg+0x2c5/0x3a0
[  883.597185]  sock_sendmsg+0x38/0x50
[  883.597187]  SYSC_sendto+0x101/0x190
[  883.597194]  ? SYSC_getsockname+0x89/0xe0
[  883.597200]  ? fd_install+0x25/0x30
[  883.597205]  ? sock_map_fd+0x44/0x70
[  883.597208]  SyS_sendto+0xe/0x10
[  883.597213]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.597214] RIP: 0033:0x7fec02b384d3
[  883.597216] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  883.597219] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  883.597221] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  883.597223] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  883.597224] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  883.597226] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  883.597237] deja-dup-monito D    0  2923   1992 0x00000004
[  883.597240] Call Trace:
[  883.597244]  __schedule+0x3c2/0x8b0
[  883.597248]  schedule+0x36/0x80
[  883.597251]  schedule_preempt_disabled+0xe/0x10
[  883.597255]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.597260]  __mutex_lock_slowpath+0x13/0x20
[  883.597263]  ? __mutex_lock_slowpath+0x13/0x20
[  883.597266]  mutex_lock+0x2f/0x40
[  883.597269]  rtnetlink_rcv+0x19/0x30
[  883.597273]  netlink_unicast+0x18c/0x240
[  883.597277]  netlink_sendmsg+0x2c5/0x3a0
[  883.597280]  sock_sendmsg+0x38/0x50
[  883.597283]  SYSC_sendto+0x101/0x190
[  883.597287]  ? security_file_permission+0x9b/0xc0
[  883.597293]  ? vfs_read+0x93/0x130
[  883.597296]  SyS_sendto+0xe/0x10
[  883.597301]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.597303] RIP: 0033:0x7ff26c2df9ff
[  883.597304] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.597307] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  883.597309] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  883.597311] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  883.597312] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  883.597314] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  883.597324] ip              D    0 14444  14443 0x00000004
[  883.597327] Call Trace:
[  883.597331]  __schedule+0x3c2/0x8b0
[  883.597335]  schedule+0x36/0x80
[  883.597338]  schedule_preempt_disabled+0xe/0x10
[  883.597342]  __mutex_lock.isra.2+0x2ae/0x4e0
[  883.597346]  ? current_time+0x38/0x70
[  883.597350]  __mutex_lock_slowpath+0x13/0x20
[  883.597353]  ? __mutex_lock_slowpath+0x13/0x20
[  883.597356]  mutex_lock+0x2f/0x40
[  883.597360]  rtnetlink_rcv+0x19/0x30
[  883.597363]  netlink_unicast+0x18c/0x240
[  883.597367]  netlink_sendmsg+0x2c5/0x3a0
[  883.597371]  sock_sendmsg+0x38/0x50
[  883.597374]  SYSC_sendto+0x101/0x190
[  883.597380]  ? handle_mm_fault+0xcc/0x1c0
[  883.597387]  ? __do_page_fault+0x283/0x4f0
[  883.597392]  SyS_sendto+0xe/0x10
[  883.597396]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  883.597398] RIP: 0033:0x7fb0aae9f39d
[  883.597399] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  883.597402] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  883.597404] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  883.597406] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  883.597407] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  883.597409] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  883.597417] OOM killer enabled.
[  883.597418] Restarting tasks ... done.
[  893.729302] PM: Syncing filesystems ... done.
[  893.846916] PM: Preparing system for sleep (mem)
[  893.847189] Freezing user space processes ... 
[  913.851684] Freezing of tasks failed after 20.004 seconds (12 tasks refusing to freeze, wq_busy=0):
[  913.851718] cups-browsed    D    0   989      1 0x00000004
[  913.851723] Call Trace:
[  913.851737]  __schedule+0x3c2/0x8b0
[  913.851742]  ? consume_skb+0x34/0xa0
[  913.851746]  schedule+0x36/0x80
[  913.851750]  schedule_preempt_disabled+0xe/0x10
[  913.851754]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.851760]  __mutex_lock_slowpath+0x13/0x20
[  913.851764]  ? __mutex_lock_slowpath+0x13/0x20
[  913.851768]  mutex_lock+0x2f/0x40
[  913.851772]  rtnetlink_rcv+0x19/0x30
[  913.851777]  netlink_unicast+0x18c/0x240
[  913.851781]  netlink_sendmsg+0x2c5/0x3a0
[  913.851785]  sock_sendmsg+0x38/0x50
[  913.851789]  SYSC_sendto+0x101/0x190
[  913.851796]  ? SYSC_getsockname+0x89/0xe0
[  913.851803]  ? fd_install+0x25/0x30
[  913.851808]  ? sock_map_fd+0x44/0x70
[  913.851812]  SyS_sendto+0xe/0x10
[  913.851817]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.851820] RIP: 0033:0x7f87f22ac4d3
[  913.851823] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  913.851827] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  913.851829] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  913.851831] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  913.851833] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  913.851835] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  913.851840] NetworkManager  D    0   990      1 0x00000004
[  913.851844] Call Trace:
[  913.851848]  __schedule+0x3c2/0x8b0
[  913.851853]  schedule+0x36/0x80
[  913.851856]  schedule_preempt_disabled+0xe/0x10
[  913.851860]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.851866]  ? ___slab_alloc+0x32b/0x4c0
[  913.851870]  __mutex_lock_slowpath+0x13/0x20
[  913.851874]  ? __mutex_lock_slowpath+0x13/0x20
[  913.851877]  mutex_lock+0x2f/0x40
[  913.851880]  rtnl_lock+0x15/0x20
[  913.851886]  dev_ioctl+0x312/0x530
[  913.851890]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  913.851897]  sock_do_ioctl+0x42/0x50
[  913.851902]  ? sock_do_ioctl+0x42/0x50
[  913.851907]  sock_ioctl+0x1f6/0x2c0
[  913.851910]  ? alloc_file+0x69/0xe0
[  913.851916]  do_vfs_ioctl+0xa1/0x5d0
[  913.851921]  ? sock_alloc_file+0xa6/0x130
[  913.851926]  SyS_ioctl+0x79/0x90
[  913.851932]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.851934] RIP: 0033:0x7f9d454bbf07
[  913.851936] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  913.851940] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  913.851942] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  913.851944] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  913.851946] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  913.851948] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  913.851955] wpa_supplicant  D    0  1049      1 0x00000004
[  913.851958] Call Trace:
[  913.851962]  __schedule+0x3c2/0x8b0
[  913.851966]  schedule+0x36/0x80
[  913.851971]  schedule_timeout+0x17a/0x360
[  913.851977]  ? call_timer_fn+0x140/0x140
[  913.851982]  msleep+0x2e/0x40
[  913.851986]  ? msleep+0x2e/0x40
[  913.851997]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  913.852056]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  913.852071]  ath10k_halt+0x102/0x160 [ath10k_core]
[  913.852085]  ath10k_stop+0x39/0x80 [ath10k_core]
[  913.852129]  drv_stop+0x33/0xf0 [mac80211]
[  913.852174]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  913.852213]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  913.852219]  ? __rtnl_unlock+0x2a/0x50
[  913.852225]  ? nla_memcpy+0x26/0x50
[  913.852265]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  913.852305]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  913.852342]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  913.852375]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  913.852380]  genl_family_rcv_msg+0x1f5/0x3d0
[  913.852385]  ? __netlink_sendskb+0x3e/0x60
[  913.852391]  genl_rcv_msg+0x4c/0x90
[  913.852395]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  913.852399]  netlink_rcv_skb+0xe7/0x120
[  913.852404]  genl_rcv+0x28/0x40
[  913.852407]  netlink_unicast+0x18c/0x240
[  913.852412]  netlink_sendmsg+0x2c5/0x3a0
[  913.852416]  sock_sendmsg+0x38/0x50
[  913.852419]  ___sys_sendmsg+0x2b6/0x2d0
[  913.852424]  ? netlink_sendmsg+0x133/0x3a0
[  913.852432]  ? kzfree+0x2d/0x40
[  913.852438]  ? dput+0xc7/0x1f0
[  913.852444]  ? mntput+0x24/0x40
[  913.852448]  __sys_sendmsg+0x54/0x90
[  913.852451]  ? __sys_sendmsg+0x54/0x90
[  913.852456]  SyS_sendmsg+0x12/0x20
[  913.852461]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852464] RIP: 0033:0x7fd5b8652450
[  913.852467] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  913.852470] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  913.852473] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  913.852475] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  913.852477] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  913.852479] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  913.852487] whoopsie        D    0  1169      1 0x00000004
[  913.852491] Call Trace:
[  913.852495]  __schedule+0x3c2/0x8b0
[  913.852501]  ? __wake_up_common+0x73/0x90
[  913.852505]  schedule+0x36/0x80
[  913.852509]  schedule_preempt_disabled+0xe/0x10
[  913.852513]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.852518]  __mutex_lock_slowpath+0x13/0x20
[  913.852522]  ? __mutex_lock_slowpath+0x13/0x20
[  913.852525]  mutex_lock+0x2f/0x40
[  913.852529]  rtnetlink_rcv+0x19/0x30
[  913.852533]  netlink_unicast+0x18c/0x240
[  913.852538]  netlink_sendmsg+0x2c5/0x3a0
[  913.852542]  sock_sendmsg+0x38/0x50
[  913.852545]  SYSC_sendto+0x101/0x190
[  913.852550]  ? security_file_permission+0x9b/0xc0
[  913.852556]  ? vfs_read+0x93/0x130
[  913.852561]  SyS_sendto+0xe/0x10
[  913.852566]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852568] RIP: 0033:0x7f804d02a3ff
[  913.852570] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.852574] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  913.852576] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  913.852578] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  913.852580] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  913.852582] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  913.852616] gnome-software  D    0  2123   1992 0x00000004
[  913.852621] Call Trace:
[  913.852625]  __schedule+0x3c2/0x8b0
[  913.852630]  schedule+0x36/0x80
[  913.852633]  schedule_preempt_disabled+0xe/0x10
[  913.852637]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.852642]  __mutex_lock_slowpath+0x13/0x20
[  913.852646]  ? __mutex_lock_slowpath+0x13/0x20
[  913.852649]  mutex_lock+0x2f/0x40
[  913.852653]  rtnetlink_rcv+0x19/0x30
[  913.852657]  netlink_unicast+0x18c/0x240
[  913.852661]  netlink_sendmsg+0x2c5/0x3a0
[  913.852665]  sock_sendmsg+0x38/0x50
[  913.852668]  SYSC_sendto+0x101/0x190
[  913.852673]  ? security_file_permission+0x9b/0xc0
[  913.852679]  ? vfs_read+0x93/0x130
[  913.852683]  SyS_sendto+0xe/0x10
[  913.852688]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852690] RIP: 0033:0x7f483f67e9ff
[  913.852692] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.852696] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  913.852698] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  913.852700] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  913.852702] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  913.852704] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  913.852724] evolution-calen D    0  2487   2464 0x00000004
[  913.852728] Call Trace:
[  913.852732]  __schedule+0x3c2/0x8b0
[  913.852737]  schedule+0x36/0x80
[  913.852741]  schedule_preempt_disabled+0xe/0x10
[  913.852744]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.852750]  __mutex_lock_slowpath+0x13/0x20
[  913.852753]  ? __mutex_lock_slowpath+0x13/0x20
[  913.852757]  mutex_lock+0x2f/0x40
[  913.852761]  rtnetlink_rcv+0x19/0x30
[  913.852764]  netlink_unicast+0x18c/0x240
[  913.852768]  netlink_sendmsg+0x2c5/0x3a0
[  913.852773]  sock_sendmsg+0x38/0x50
[  913.852776]  SYSC_sendto+0x101/0x190
[  913.852780]  ? security_file_permission+0x9b/0xc0
[  913.852786]  ? vfs_read+0x93/0x130
[  913.852790]  SyS_sendto+0xe/0x10
[  913.852795]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852797] RIP: 0033:0x7f2764fc19ff
[  913.852800] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.852803] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  913.852805] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  913.852807] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  913.852809] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  913.852811] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  913.852817] evolution-calen D    0  2499   2464 0x00000004
[  913.852821] Call Trace:
[  913.852825]  __schedule+0x3c2/0x8b0
[  913.852829]  schedule+0x36/0x80
[  913.852833]  schedule_preempt_disabled+0xe/0x10
[  913.852837]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.852842]  __mutex_lock_slowpath+0x13/0x20
[  913.852845]  ? __mutex_lock_slowpath+0x13/0x20
[  913.852849]  mutex_lock+0x2f/0x40
[  913.852853]  rtnetlink_rcv+0x19/0x30
[  913.852857]  netlink_unicast+0x18c/0x240
[  913.852861]  netlink_sendmsg+0x2c5/0x3a0
[  913.852865]  sock_sendmsg+0x38/0x50
[  913.852868]  SYSC_sendto+0x101/0x190
[  913.852872]  ? security_file_permission+0x9b/0xc0
[  913.852878]  ? vfs_read+0x93/0x130
[  913.852882]  SyS_sendto+0xe/0x10
[  913.852886]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852889] RIP: 0033:0x7fb2c6e629ff
[  913.852891] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.852895] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  913.852897] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  913.852898] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  913.852901] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  913.852902] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  913.852907] evolution-addre D    0  2519   2497 0x00000004
[  913.852911] Call Trace:
[  913.852915]  __schedule+0x3c2/0x8b0
[  913.852920]  schedule+0x36/0x80
[  913.852923]  schedule_preempt_disabled+0xe/0x10
[  913.852927]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.852932]  __mutex_lock_slowpath+0x13/0x20
[  913.852936]  ? __mutex_lock_slowpath+0x13/0x20
[  913.852939]  mutex_lock+0x2f/0x40
[  913.852943]  rtnetlink_rcv+0x19/0x30
[  913.852946]  netlink_unicast+0x18c/0x240
[  913.852950]  netlink_sendmsg+0x2c5/0x3a0
[  913.852954]  sock_sendmsg+0x38/0x50
[  913.852958]  SYSC_sendto+0x101/0x190
[  913.852962]  ? security_file_permission+0x9b/0xc0
[  913.852967]  ? vfs_read+0x93/0x130
[  913.852971]  SyS_sendto+0xe/0x10
[  913.852976]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.852979] RIP: 0033:0x7f4a6d1aa9ff
[  913.852981] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.852984] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  913.852986] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  913.852988] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  913.852990] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  913.852992] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  913.853002] geoclue         D    0  2681      1 0x00000004
[  913.853006] Call Trace:
[  913.853010]  __schedule+0x3c2/0x8b0
[  913.853014]  ? consume_skb+0x34/0xa0
[  913.853018]  schedule+0x36/0x80
[  913.853021]  schedule_preempt_disabled+0xe/0x10
[  913.853025]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.853030]  __mutex_lock_slowpath+0x13/0x20
[  913.853034]  ? __mutex_lock_slowpath+0x13/0x20
[  913.853037]  mutex_lock+0x2f/0x40
[  913.853041]  rtnetlink_rcv+0x19/0x30
[  913.853045]  netlink_unicast+0x18c/0x240
[  913.853049]  netlink_sendmsg+0x2c5/0x3a0
[  913.853053]  sock_sendmsg+0x38/0x50
[  913.853056]  SYSC_sendto+0x101/0x190
[  913.853060]  ? security_file_permission+0x9b/0xc0
[  913.853066]  ? vfs_read+0x93/0x130
[  913.853070]  SyS_sendto+0xe/0x10
[  913.853074]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.853077] RIP: 0033:0x7f22fe6c13ff
[  913.853079] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.853083] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  913.853085] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  913.853087] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  913.853089] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  913.853090] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  913.853103] DNS Resolver #3 D    0 14484   1715 0x00000004
[  913.853107] Call Trace:
[  913.853111]  __schedule+0x3c2/0x8b0
[  913.853115]  schedule+0x36/0x80
[  913.853119]  schedule_preempt_disabled+0xe/0x10
[  913.853123]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.853128]  __mutex_lock_slowpath+0x13/0x20
[  913.853131]  ? __mutex_lock_slowpath+0x13/0x20
[  913.853135]  mutex_lock+0x2f/0x40
[  913.853138]  rtnetlink_rcv+0x19/0x30
[  913.853142]  netlink_unicast+0x18c/0x240
[  913.853146]  netlink_sendmsg+0x2c5/0x3a0
[  913.853150]  sock_sendmsg+0x38/0x50
[  913.853153]  SYSC_sendto+0x101/0x190
[  913.853160]  ? SYSC_getsockname+0x89/0xe0
[  913.853166]  ? fd_install+0x25/0x30
[  913.853171]  ? sock_map_fd+0x44/0x70
[  913.853175]  SyS_sendto+0xe/0x10
[  913.853179]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.853182] RIP: 0033:0x7fec02b384d3
[  913.853184] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  913.853188] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  913.853189] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  913.853191] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  913.853193] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  913.853195] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  913.853207] deja-dup-monito D    0  2923   1992 0x00000004
[  913.853210] Call Trace:
[  913.853215]  __schedule+0x3c2/0x8b0
[  913.853219]  schedule+0x36/0x80
[  913.853223]  schedule_preempt_disabled+0xe/0x10
[  913.853226]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.853232]  __mutex_lock_slowpath+0x13/0x20
[  913.853235]  ? __mutex_lock_slowpath+0x13/0x20
[  913.853239]  mutex_lock+0x2f/0x40
[  913.853243]  rtnetlink_rcv+0x19/0x30
[  913.853247]  netlink_unicast+0x18c/0x240
[  913.853250]  netlink_sendmsg+0x2c5/0x3a0
[  913.853255]  sock_sendmsg+0x38/0x50
[  913.853258]  SYSC_sendto+0x101/0x190
[  913.853262]  ? security_file_permission+0x9b/0xc0
[  913.853268]  ? vfs_read+0x93/0x130
[  913.853272]  SyS_sendto+0xe/0x10
[  913.853276]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.853279] RIP: 0033:0x7ff26c2df9ff
[  913.853281] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.853284] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  913.853286] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  913.853288] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  913.853290] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  913.853292] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  913.853303] ip              D    0 14444  14443 0x00000004
[  913.853307] Call Trace:
[  913.853311]  __schedule+0x3c2/0x8b0
[  913.853316]  schedule+0x36/0x80
[  913.853319]  schedule_preempt_disabled+0xe/0x10
[  913.853323]  __mutex_lock.isra.2+0x2ae/0x4e0
[  913.853327]  ? current_time+0x38/0x70
[  913.853331]  __mutex_lock_slowpath+0x13/0x20
[  913.853335]  ? __mutex_lock_slowpath+0x13/0x20
[  913.853338]  mutex_lock+0x2f/0x40
[  913.853342]  rtnetlink_rcv+0x19/0x30
[  913.853346]  netlink_unicast+0x18c/0x240
[  913.853350]  netlink_sendmsg+0x2c5/0x3a0
[  913.853354]  sock_sendmsg+0x38/0x50
[  913.853357]  SYSC_sendto+0x101/0x190
[  913.853364]  ? handle_mm_fault+0xcc/0x1c0
[  913.853371]  ? __do_page_fault+0x283/0x4f0
[  913.853376]  SyS_sendto+0xe/0x10
[  913.853380]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  913.853383] RIP: 0033:0x7fb0aae9f39d
[  913.853385] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  913.853388] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  913.853390] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  913.853392] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  913.853394] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  913.853396] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  913.853404] OOM killer enabled.
[  913.853405] Restarting tasks ... done.
[  913.960078] PM: Syncing filesystems ... done.
[  914.301320] PM: Preparing system for sleep (freeze)
[  914.301650] Freezing user space processes ... 
[  934.305747] Freezing of tasks failed after 20.004 seconds (12 tasks refusing to freeze, wq_busy=0):
[  934.305780] cups-browsed    D    0   989      1 0x00000004
[  934.305786] Call Trace:
[  934.305799]  __schedule+0x3c2/0x8b0
[  934.305804]  ? consume_skb+0x34/0xa0
[  934.305808]  schedule+0x36/0x80
[  934.305812]  schedule_preempt_disabled+0xe/0x10
[  934.305816]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.305821]  __mutex_lock_slowpath+0x13/0x20
[  934.305825]  ? __mutex_lock_slowpath+0x13/0x20
[  934.305828]  mutex_lock+0x2f/0x40
[  934.305833]  rtnetlink_rcv+0x19/0x30
[  934.305837]  netlink_unicast+0x18c/0x240
[  934.305841]  netlink_sendmsg+0x2c5/0x3a0
[  934.305846]  sock_sendmsg+0x38/0x50
[  934.305849]  SYSC_sendto+0x101/0x190
[  934.305857]  ? SYSC_getsockname+0x89/0xe0
[  934.305863]  ? fd_install+0x25/0x30
[  934.305868]  ? sock_map_fd+0x44/0x70
[  934.305872]  SyS_sendto+0xe/0x10
[  934.305877]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.305881] RIP: 0033:0x7f87f22ac4d3
[  934.305884] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  934.305888] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  934.305890] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  934.305892] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  934.305894] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  934.305896] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  934.305901] NetworkManager  D    0   990      1 0x00000004
[  934.305905] Call Trace:
[  934.305909]  __schedule+0x3c2/0x8b0
[  934.305913]  schedule+0x36/0x80
[  934.305917]  schedule_preempt_disabled+0xe/0x10
[  934.305921]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.305927]  ? ___slab_alloc+0x32b/0x4c0
[  934.305931]  __mutex_lock_slowpath+0x13/0x20
[  934.305934]  ? __mutex_lock_slowpath+0x13/0x20
[  934.305937]  mutex_lock+0x2f/0x40
[  934.305941]  rtnl_lock+0x15/0x20
[  934.305947]  dev_ioctl+0x312/0x530
[  934.305951]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  934.305958]  sock_do_ioctl+0x42/0x50
[  934.305963]  ? sock_do_ioctl+0x42/0x50
[  934.305968]  sock_ioctl+0x1f6/0x2c0
[  934.305971]  ? alloc_file+0x69/0xe0
[  934.305977]  do_vfs_ioctl+0xa1/0x5d0
[  934.305982]  ? sock_alloc_file+0xa6/0x130
[  934.305987]  SyS_ioctl+0x79/0x90
[  934.305993]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.305995] RIP: 0033:0x7f9d454bbf07
[  934.305997] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  934.306001] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  934.306003] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  934.306005] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  934.306007] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  934.306008] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  934.306016] wpa_supplicant  D    0  1049      1 0x00000004
[  934.306019] Call Trace:
[  934.306023]  __schedule+0x3c2/0x8b0
[  934.306027]  schedule+0x36/0x80
[  934.306032]  schedule_timeout+0x17a/0x360
[  934.306038]  ? call_timer_fn+0x140/0x140
[  934.306043]  msleep+0x2e/0x40
[  934.306047]  ? msleep+0x2e/0x40
[  934.306057]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  934.306079]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  934.306094]  ath10k_halt+0x102/0x160 [ath10k_core]
[  934.306108]  ath10k_stop+0x39/0x80 [ath10k_core]
[  934.306151]  drv_stop+0x33/0xf0 [mac80211]
[  934.306193]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  934.306230]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  934.306236]  ? __rtnl_unlock+0x2a/0x50
[  934.306240]  ? nla_memcpy+0x26/0x50
[  934.306275]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  934.306310]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  934.306347]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  934.306379]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  934.306383]  genl_family_rcv_msg+0x1f5/0x3d0
[  934.306388]  ? __netlink_sendskb+0x3e/0x60
[  934.306393]  genl_rcv_msg+0x4c/0x90
[  934.306397]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  934.306401]  netlink_rcv_skb+0xe7/0x120
[  934.306406]  genl_rcv+0x28/0x40
[  934.306409]  netlink_unicast+0x18c/0x240
[  934.306414]  netlink_sendmsg+0x2c5/0x3a0
[  934.306418]  sock_sendmsg+0x38/0x50
[  934.306421]  ___sys_sendmsg+0x2b6/0x2d0
[  934.306425]  ? netlink_sendmsg+0x133/0x3a0
[  934.306433]  ? kzfree+0x2d/0x40
[  934.306439]  ? dput+0xc7/0x1f0
[  934.306444]  ? mntput+0x24/0x40
[  934.306448]  __sys_sendmsg+0x54/0x90
[  934.306451]  ? __sys_sendmsg+0x54/0x90
[  934.306456]  SyS_sendmsg+0x12/0x20
[  934.306461]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306463] RIP: 0033:0x7fd5b8652450
[  934.306465] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  934.306469] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  934.306470] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  934.306472] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  934.306474] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  934.306476] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  934.306483] whoopsie        D    0  1169      1 0x00000004
[  934.306486] Call Trace:
[  934.306490]  __schedule+0x3c2/0x8b0
[  934.306496]  ? __wake_up_common+0x73/0x90
[  934.306500]  schedule+0x36/0x80
[  934.306503]  schedule_preempt_disabled+0xe/0x10
[  934.306507]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306512]  __mutex_lock_slowpath+0x13/0x20
[  934.306515]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306519]  mutex_lock+0x2f/0x40
[  934.306523]  rtnetlink_rcv+0x19/0x30
[  934.306526]  netlink_unicast+0x18c/0x240
[  934.306530]  netlink_sendmsg+0x2c5/0x3a0
[  934.306534]  sock_sendmsg+0x38/0x50
[  934.306537]  SYSC_sendto+0x101/0x190
[  934.306542]  ? security_file_permission+0x9b/0xc0
[  934.306548]  ? vfs_read+0x93/0x130
[  934.306552]  SyS_sendto+0xe/0x10
[  934.306557]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306559] RIP: 0033:0x7f804d02a3ff
[  934.306561] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.306564] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  934.306566] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  934.306567] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  934.306569] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  934.306571] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  934.306604] gnome-software  D    0  2123   1992 0x00000004
[  934.306607] Call Trace:
[  934.306612]  __schedule+0x3c2/0x8b0
[  934.306615]  schedule+0x36/0x80
[  934.306619]  schedule_preempt_disabled+0xe/0x10
[  934.306622]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306627]  __mutex_lock_slowpath+0x13/0x20
[  934.306631]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306634]  mutex_lock+0x2f/0x40
[  934.306637]  rtnetlink_rcv+0x19/0x30
[  934.306641]  netlink_unicast+0x18c/0x240
[  934.306645]  netlink_sendmsg+0x2c5/0x3a0
[  934.306649]  sock_sendmsg+0x38/0x50
[  934.306651]  SYSC_sendto+0x101/0x190
[  934.306655]  ? security_file_permission+0x9b/0xc0
[  934.306661]  ? vfs_read+0x93/0x130
[  934.306665]  SyS_sendto+0xe/0x10
[  934.306670]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306672] RIP: 0033:0x7f483f67e9ff
[  934.306673] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.306676] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  934.306678] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  934.306680] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  934.306681] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  934.306683] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  934.306702] evolution-calen D    0  2487   2464 0x00000004
[  934.306705] Call Trace:
[  934.306709]  __schedule+0x3c2/0x8b0
[  934.306713]  schedule+0x36/0x80
[  934.306716]  schedule_preempt_disabled+0xe/0x10
[  934.306719]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306724]  __mutex_lock_slowpath+0x13/0x20
[  934.306728]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306731]  mutex_lock+0x2f/0x40
[  934.306734]  rtnetlink_rcv+0x19/0x30
[  934.306738]  netlink_unicast+0x18c/0x240
[  934.306742]  netlink_sendmsg+0x2c5/0x3a0
[  934.306746]  sock_sendmsg+0x38/0x50
[  934.306748]  SYSC_sendto+0x101/0x190
[  934.306752]  ? security_file_permission+0x9b/0xc0
[  934.306758]  ? vfs_read+0x93/0x130
[  934.306762]  SyS_sendto+0xe/0x10
[  934.306766]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306768] RIP: 0033:0x7f2764fc19ff
[  934.306769] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.306773] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  934.306774] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  934.306776] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  934.306778] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  934.306779] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  934.306785] evolution-calen D    0  2499   2464 0x00000004
[  934.306788] Call Trace:
[  934.306792]  __schedule+0x3c2/0x8b0
[  934.306796]  schedule+0x36/0x80
[  934.306799]  schedule_preempt_disabled+0xe/0x10
[  934.306802]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306807]  __mutex_lock_slowpath+0x13/0x20
[  934.306811]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306814]  mutex_lock+0x2f/0x40
[  934.306817]  rtnetlink_rcv+0x19/0x30
[  934.306821]  netlink_unicast+0x18c/0x240
[  934.306825]  netlink_sendmsg+0x2c5/0x3a0
[  934.306828]  sock_sendmsg+0x38/0x50
[  934.306831]  SYSC_sendto+0x101/0x190
[  934.306835]  ? security_file_permission+0x9b/0xc0
[  934.306840]  ? vfs_read+0x93/0x130
[  934.306844]  SyS_sendto+0xe/0x10
[  934.306849]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306851] RIP: 0033:0x7fb2c6e629ff
[  934.306852] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.306855] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  934.306857] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  934.306859] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  934.306860] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  934.306862] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  934.306866] evolution-addre D    0  2519   2497 0x00000004
[  934.306870] Call Trace:
[  934.306873]  __schedule+0x3c2/0x8b0
[  934.306877]  schedule+0x36/0x80
[  934.306880]  schedule_preempt_disabled+0xe/0x10
[  934.306884]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306889]  __mutex_lock_slowpath+0x13/0x20
[  934.306892]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306895]  mutex_lock+0x2f/0x40
[  934.306899]  rtnetlink_rcv+0x19/0x30
[  934.306902]  netlink_unicast+0x18c/0x240
[  934.306906]  netlink_sendmsg+0x2c5/0x3a0
[  934.306910]  sock_sendmsg+0x38/0x50
[  934.306912]  SYSC_sendto+0x101/0x190
[  934.306916]  ? security_file_permission+0x9b/0xc0
[  934.306922]  ? vfs_read+0x93/0x130
[  934.306925]  SyS_sendto+0xe/0x10
[  934.306930]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.306931] RIP: 0033:0x7f4a6d1aa9ff
[  934.306933] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.306936] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  934.306938] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  934.306939] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  934.306941] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  934.306943] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  934.306952] geoclue         D    0  2681      1 0x00000004
[  934.306955] Call Trace:
[  934.306959]  __schedule+0x3c2/0x8b0
[  934.306962]  ? consume_skb+0x34/0xa0
[  934.306966]  schedule+0x36/0x80
[  934.306969]  schedule_preempt_disabled+0xe/0x10
[  934.306972]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.306977]  __mutex_lock_slowpath+0x13/0x20
[  934.306981]  ? __mutex_lock_slowpath+0x13/0x20
[  934.306984]  mutex_lock+0x2f/0x40
[  934.306987]  rtnetlink_rcv+0x19/0x30
[  934.306991]  netlink_unicast+0x18c/0x240
[  934.306995]  netlink_sendmsg+0x2c5/0x3a0
[  934.306998]  sock_sendmsg+0x38/0x50
[  934.307001]  SYSC_sendto+0x101/0x190
[  934.307005]  ? security_file_permission+0x9b/0xc0
[  934.307010]  ? vfs_read+0x93/0x130
[  934.307014]  SyS_sendto+0xe/0x10
[  934.307018]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.307020] RIP: 0033:0x7f22fe6c13ff
[  934.307022] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.307025] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  934.307027] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  934.307028] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  934.307030] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  934.307032] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  934.307044] DNS Resolver #3 D    0 14484   1715 0x00000004
[  934.307047] Call Trace:
[  934.307051]  __schedule+0x3c2/0x8b0
[  934.307055]  schedule+0x36/0x80
[  934.307058]  schedule_preempt_disabled+0xe/0x10
[  934.307062]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.307067]  __mutex_lock_slowpath+0x13/0x20
[  934.307070]  ? __mutex_lock_slowpath+0x13/0x20
[  934.307073]  mutex_lock+0x2f/0x40
[  934.307077]  rtnetlink_rcv+0x19/0x30
[  934.307080]  netlink_unicast+0x18c/0x240
[  934.307084]  netlink_sendmsg+0x2c5/0x3a0
[  934.307088]  sock_sendmsg+0x38/0x50
[  934.307090]  SYSC_sendto+0x101/0x190
[  934.307098]  ? SYSC_getsockname+0x89/0xe0
[  934.307103]  ? fd_install+0x25/0x30
[  934.307108]  ? sock_map_fd+0x44/0x70
[  934.307112]  SyS_sendto+0xe/0x10
[  934.307116]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.307118] RIP: 0033:0x7fec02b384d3
[  934.307119] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  934.307122] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  934.307124] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  934.307126] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  934.307128] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  934.307129] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  934.307140] deja-dup-monito D    0  2923   1992 0x00000004
[  934.307143] Call Trace:
[  934.307147]  __schedule+0x3c2/0x8b0
[  934.307151]  schedule+0x36/0x80
[  934.307154]  schedule_preempt_disabled+0xe/0x10
[  934.307157]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.307162]  __mutex_lock_slowpath+0x13/0x20
[  934.307166]  ? __mutex_lock_slowpath+0x13/0x20
[  934.307169]  mutex_lock+0x2f/0x40
[  934.307172]  rtnetlink_rcv+0x19/0x30
[  934.307176]  netlink_unicast+0x18c/0x240
[  934.307179]  netlink_sendmsg+0x2c5/0x3a0
[  934.307183]  sock_sendmsg+0x38/0x50
[  934.307186]  SYSC_sendto+0x101/0x190
[  934.307190]  ? security_file_permission+0x9b/0xc0
[  934.307195]  ? vfs_read+0x93/0x130
[  934.307199]  SyS_sendto+0xe/0x10
[  934.307203]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.307205] RIP: 0033:0x7ff26c2df9ff
[  934.307207] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.307210] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  934.307211] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  934.307213] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  934.307215] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  934.307217] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  934.307226] ip              D    0 14444  14443 0x00000004
[  934.307230] Call Trace:
[  934.307233]  __schedule+0x3c2/0x8b0
[  934.307238]  schedule+0x36/0x80
[  934.307241]  schedule_preempt_disabled+0xe/0x10
[  934.307244]  __mutex_lock.isra.2+0x2ae/0x4e0
[  934.307248]  ? current_time+0x38/0x70
[  934.307252]  __mutex_lock_slowpath+0x13/0x20
[  934.307256]  ? __mutex_lock_slowpath+0x13/0x20
[  934.307259]  mutex_lock+0x2f/0x40
[  934.307262]  rtnetlink_rcv+0x19/0x30
[  934.307266]  netlink_unicast+0x18c/0x240
[  934.307269]  netlink_sendmsg+0x2c5/0x3a0
[  934.307273]  sock_sendmsg+0x38/0x50
[  934.307276]  SYSC_sendto+0x101/0x190
[  934.307283]  ? handle_mm_fault+0xcc/0x1c0
[  934.307290]  ? __do_page_fault+0x283/0x4f0
[  934.307294]  SyS_sendto+0xe/0x10
[  934.307298]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  934.307300] RIP: 0033:0x7fb0aae9f39d
[  934.307301] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  934.307304] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  934.307306] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  934.307308] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  934.307310] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  934.307311] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  934.307319] OOM killer enabled.
[  934.307320] Restarting tasks ... done.
[  944.436525] PM: Syncing filesystems ... done.
[  944.572646] PM: Preparing system for sleep (mem)
[  944.573160] Freezing user space processes ... 
[  964.580304] Freezing of tasks failed after 20.007 seconds (12 tasks refusing to freeze, wq_busy=0):
[  964.580338] cups-browsed    D    0   989      1 0x00000004
[  964.580343] Call Trace:
[  964.580356]  __schedule+0x3c2/0x8b0
[  964.580361]  ? consume_skb+0x34/0xa0
[  964.580366]  schedule+0x36/0x80
[  964.580369]  schedule_preempt_disabled+0xe/0x10
[  964.580374]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.580379]  __mutex_lock_slowpath+0x13/0x20
[  964.580383]  ? __mutex_lock_slowpath+0x13/0x20
[  964.580386]  mutex_lock+0x2f/0x40
[  964.580391]  rtnetlink_rcv+0x19/0x30
[  964.580395]  netlink_unicast+0x18c/0x240
[  964.580400]  netlink_sendmsg+0x2c5/0x3a0
[  964.580404]  sock_sendmsg+0x38/0x50
[  964.580407]  SYSC_sendto+0x101/0x190
[  964.580415]  ? SYSC_getsockname+0x89/0xe0
[  964.580421]  ? fd_install+0x25/0x30
[  964.580426]  ? sock_map_fd+0x44/0x70
[  964.580430]  SyS_sendto+0xe/0x10
[  964.580435]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.580439] RIP: 0033:0x7f87f22ac4d3
[  964.580442] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  964.580445] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  964.580447] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  964.580449] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  964.580451] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  964.580453] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  964.580459] NetworkManager  D    0   990      1 0x00000004
[  964.580462] Call Trace:
[  964.580467]  __schedule+0x3c2/0x8b0
[  964.580471]  schedule+0x36/0x80
[  964.580474]  schedule_preempt_disabled+0xe/0x10
[  964.580478]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.580484]  ? ___slab_alloc+0x32b/0x4c0
[  964.580489]  __mutex_lock_slowpath+0x13/0x20
[  964.580492]  ? __mutex_lock_slowpath+0x13/0x20
[  964.580495]  mutex_lock+0x2f/0x40
[  964.580498]  rtnl_lock+0x15/0x20
[  964.580504]  dev_ioctl+0x312/0x530
[  964.580509]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  964.580515]  sock_do_ioctl+0x42/0x50
[  964.580520]  ? sock_do_ioctl+0x42/0x50
[  964.580525]  sock_ioctl+0x1f6/0x2c0
[  964.580529]  ? alloc_file+0x69/0xe0
[  964.580534]  do_vfs_ioctl+0xa1/0x5d0
[  964.580539]  ? sock_alloc_file+0xa6/0x130
[  964.580545]  SyS_ioctl+0x79/0x90
[  964.580550]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.580552] RIP: 0033:0x7f9d454bbf07
[  964.580554] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  964.580558] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  964.580560] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  964.580562] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  964.580563] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  964.580565] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  964.580573] wpa_supplicant  D    0  1049      1 0x00000004
[  964.580576] Call Trace:
[  964.580580]  __schedule+0x3c2/0x8b0
[  964.580584]  schedule+0x36/0x80
[  964.580589]  schedule_timeout+0x17a/0x360
[  964.580595]  ? call_timer_fn+0x140/0x140
[  964.580600]  msleep+0x2e/0x40
[  964.580604]  ? msleep+0x2e/0x40
[  964.580614]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  964.580636]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  964.580652]  ath10k_halt+0x102/0x160 [ath10k_core]
[  964.580668]  ath10k_stop+0x39/0x80 [ath10k_core]
[  964.580712]  drv_stop+0x33/0xf0 [mac80211]
[  964.580757]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  964.580797]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  964.580802]  ? __rtnl_unlock+0x2a/0x50
[  964.580808]  ? nla_memcpy+0x26/0x50
[  964.580848]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  964.580888]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  964.580925]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  964.580958]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  964.580964]  genl_family_rcv_msg+0x1f5/0x3d0
[  964.580968]  ? __netlink_sendskb+0x3e/0x60
[  964.580974]  genl_rcv_msg+0x4c/0x90
[  964.580978]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  964.580982]  netlink_rcv_skb+0xe7/0x120
[  964.580986]  genl_rcv+0x28/0x40
[  964.580990]  netlink_unicast+0x18c/0x240
[  964.580994]  netlink_sendmsg+0x2c5/0x3a0
[  964.580999]  sock_sendmsg+0x38/0x50
[  964.581002]  ___sys_sendmsg+0x2b6/0x2d0
[  964.581007]  ? netlink_sendmsg+0x133/0x3a0
[  964.581014]  ? kzfree+0x2d/0x40
[  964.581020]  ? dput+0xc7/0x1f0
[  964.581026]  ? mntput+0x24/0x40
[  964.581030]  __sys_sendmsg+0x54/0x90
[  964.581033]  ? __sys_sendmsg+0x54/0x90
[  964.581038]  SyS_sendmsg+0x12/0x20
[  964.581044]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581046] RIP: 0033:0x7fd5b8652450
[  964.581049] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  964.581052] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  964.581054] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  964.581056] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  964.581058] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  964.581060] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  964.581068] whoopsie        D    0  1169      1 0x00000004
[  964.581072] Call Trace:
[  964.581076]  __schedule+0x3c2/0x8b0
[  964.581082]  ? __wake_up_common+0x73/0x90
[  964.581086]  schedule+0x36/0x80
[  964.581090]  schedule_preempt_disabled+0xe/0x10
[  964.581093]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581099]  __mutex_lock_slowpath+0x13/0x20
[  964.581103]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581106]  mutex_lock+0x2f/0x40
[  964.581110]  rtnetlink_rcv+0x19/0x30
[  964.581114]  netlink_unicast+0x18c/0x240
[  964.581118]  netlink_sendmsg+0x2c5/0x3a0
[  964.581122]  sock_sendmsg+0x38/0x50
[  964.581125]  SYSC_sendto+0x101/0x190
[  964.581131]  ? security_file_permission+0x9b/0xc0
[  964.581137]  ? vfs_read+0x93/0x130
[  964.581141]  SyS_sendto+0xe/0x10
[  964.581146]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581149] RIP: 0033:0x7f804d02a3ff
[  964.581151] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581154] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  964.581156] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  964.581158] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  964.581160] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  964.581162] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  964.581196] gnome-software  D    0  2123   1992 0x00000004
[  964.581200] Call Trace:
[  964.581205]  __schedule+0x3c2/0x8b0
[  964.581210]  schedule+0x36/0x80
[  964.581213]  schedule_preempt_disabled+0xe/0x10
[  964.581217]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581222]  __mutex_lock_slowpath+0x13/0x20
[  964.581226]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581229]  mutex_lock+0x2f/0x40
[  964.581233]  rtnetlink_rcv+0x19/0x30
[  964.581237]  netlink_unicast+0x18c/0x240
[  964.581241]  netlink_sendmsg+0x2c5/0x3a0
[  964.581245]  sock_sendmsg+0x38/0x50
[  964.581249]  SYSC_sendto+0x101/0x190
[  964.581253]  ? security_file_permission+0x9b/0xc0
[  964.581259]  ? vfs_read+0x93/0x130
[  964.581263]  SyS_sendto+0xe/0x10
[  964.581268]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581270] RIP: 0033:0x7f483f67e9ff
[  964.581272] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581276] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  964.581278] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  964.581280] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  964.581282] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  964.581284] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  964.581303] evolution-calen D    0  2487   2464 0x00000004
[  964.581307] Call Trace:
[  964.581312]  __schedule+0x3c2/0x8b0
[  964.581316]  schedule+0x36/0x80
[  964.581320]  schedule_preempt_disabled+0xe/0x10
[  964.581324]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581329]  __mutex_lock_slowpath+0x13/0x20
[  964.581333]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581336]  mutex_lock+0x2f/0x40
[  964.581340]  rtnetlink_rcv+0x19/0x30
[  964.581343]  netlink_unicast+0x18c/0x240
[  964.581348]  netlink_sendmsg+0x2c5/0x3a0
[  964.581352]  sock_sendmsg+0x38/0x50
[  964.581355]  SYSC_sendto+0x101/0x190
[  964.581359]  ? security_file_permission+0x9b/0xc0
[  964.581365]  ? vfs_read+0x93/0x130
[  964.581369]  SyS_sendto+0xe/0x10
[  964.581374]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581376] RIP: 0033:0x7f2764fc19ff
[  964.581378] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581382] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  964.581384] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  964.581386] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  964.581388] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  964.581390] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  964.581396] evolution-calen D    0  2499   2464 0x00000004
[  964.581400] Call Trace:
[  964.581404]  __schedule+0x3c2/0x8b0
[  964.581408]  schedule+0x36/0x80
[  964.581412]  schedule_preempt_disabled+0xe/0x10
[  964.581415]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581421]  __mutex_lock_slowpath+0x13/0x20
[  964.581424]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581428]  mutex_lock+0x2f/0x40
[  964.581431]  rtnetlink_rcv+0x19/0x30
[  964.581435]  netlink_unicast+0x18c/0x240
[  964.581439]  netlink_sendmsg+0x2c5/0x3a0
[  964.581443]  sock_sendmsg+0x38/0x50
[  964.581447]  SYSC_sendto+0x101/0x190
[  964.581451]  ? security_file_permission+0x9b/0xc0
[  964.581456]  ? vfs_read+0x93/0x130
[  964.581460]  SyS_sendto+0xe/0x10
[  964.581465]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581467] RIP: 0033:0x7fb2c6e629ff
[  964.581469] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581473] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  964.581475] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  964.581477] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  964.581479] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  964.581481] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  964.581486] evolution-addre D    0  2519   2497 0x00000004
[  964.581490] Call Trace:
[  964.581494]  __schedule+0x3c2/0x8b0
[  964.581499]  schedule+0x36/0x80
[  964.581502]  schedule_preempt_disabled+0xe/0x10
[  964.581506]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581511]  __mutex_lock_slowpath+0x13/0x20
[  964.581514]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581518]  mutex_lock+0x2f/0x40
[  964.581522]  rtnetlink_rcv+0x19/0x30
[  964.581526]  netlink_unicast+0x18c/0x240
[  964.581530]  netlink_sendmsg+0x2c5/0x3a0
[  964.581534]  sock_sendmsg+0x38/0x50
[  964.581537]  SYSC_sendto+0x101/0x190
[  964.581541]  ? security_file_permission+0x9b/0xc0
[  964.581547]  ? vfs_read+0x93/0x130
[  964.581551]  SyS_sendto+0xe/0x10
[  964.581555]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581558] RIP: 0033:0x7f4a6d1aa9ff
[  964.581560] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581563] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  964.581565] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  964.581567] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  964.581569] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  964.581571] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  964.581581] geoclue         D    0  2681      1 0x00000004
[  964.581585] Call Trace:
[  964.581589]  __schedule+0x3c2/0x8b0
[  964.581593]  ? consume_skb+0x34/0xa0
[  964.581597]  schedule+0x36/0x80
[  964.581600]  schedule_preempt_disabled+0xe/0x10
[  964.581604]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581609]  __mutex_lock_slowpath+0x13/0x20
[  964.581613]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581616]  mutex_lock+0x2f/0x40
[  964.581620]  rtnetlink_rcv+0x19/0x30
[  964.581624]  netlink_unicast+0x18c/0x240
[  964.581628]  netlink_sendmsg+0x2c5/0x3a0
[  964.581632]  sock_sendmsg+0x38/0x50
[  964.581635]  SYSC_sendto+0x101/0x190
[  964.581640]  ? security_file_permission+0x9b/0xc0
[  964.581645]  ? vfs_read+0x93/0x130
[  964.581649]  SyS_sendto+0xe/0x10
[  964.581654]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581657] RIP: 0033:0x7f22fe6c13ff
[  964.581659] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581662] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  964.581664] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  964.581666] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  964.581668] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  964.581670] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  964.581683] DNS Resolver #3 D    0 14484   1715 0x00000004
[  964.581686] Call Trace:
[  964.581691]  __schedule+0x3c2/0x8b0
[  964.581695]  schedule+0x36/0x80
[  964.581699]  schedule_preempt_disabled+0xe/0x10
[  964.581703]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581708]  __mutex_lock_slowpath+0x13/0x20
[  964.581712]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581715]  mutex_lock+0x2f/0x40
[  964.581719]  rtnetlink_rcv+0x19/0x30
[  964.581723]  netlink_unicast+0x18c/0x240
[  964.581727]  netlink_sendmsg+0x2c5/0x3a0
[  964.581731]  sock_sendmsg+0x38/0x50
[  964.581734]  SYSC_sendto+0x101/0x190
[  964.581741]  ? SYSC_getsockname+0x89/0xe0
[  964.581746]  ? fd_install+0x25/0x30
[  964.581751]  ? sock_map_fd+0x44/0x70
[  964.581755]  SyS_sendto+0xe/0x10
[  964.581760]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581762] RIP: 0033:0x7fec02b384d3
[  964.581764] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  964.581768] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  964.581770] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  964.581772] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  964.581774] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  964.581776] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  964.581787] deja-dup-monito D    0  2923   1992 0x00000004
[  964.581791] Call Trace:
[  964.581795]  __schedule+0x3c2/0x8b0
[  964.581800]  schedule+0x36/0x80
[  964.581803]  schedule_preempt_disabled+0xe/0x10
[  964.581807]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581812]  __mutex_lock_slowpath+0x13/0x20
[  964.581816]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581819]  mutex_lock+0x2f/0x40
[  964.581823]  rtnetlink_rcv+0x19/0x30
[  964.581827]  netlink_unicast+0x18c/0x240
[  964.581831]  netlink_sendmsg+0x2c5/0x3a0
[  964.581835]  sock_sendmsg+0x38/0x50
[  964.581838]  SYSC_sendto+0x101/0x190
[  964.581842]  ? security_file_permission+0x9b/0xc0
[  964.581848]  ? vfs_read+0x93/0x130
[  964.581852]  SyS_sendto+0xe/0x10
[  964.581857]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581859] RIP: 0033:0x7ff26c2df9ff
[  964.581861] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581865] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  964.581867] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  964.581869] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  964.581871] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  964.581872] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  964.581882] ip              D    0 14444  14443 0x00000004
[  964.581886] Call Trace:
[  964.581890]  __schedule+0x3c2/0x8b0
[  964.581895]  schedule+0x36/0x80
[  964.581898]  schedule_preempt_disabled+0xe/0x10
[  964.581902]  __mutex_lock.isra.2+0x2ae/0x4e0
[  964.581906]  ? current_time+0x38/0x70
[  964.581911]  __mutex_lock_slowpath+0x13/0x20
[  964.581914]  ? __mutex_lock_slowpath+0x13/0x20
[  964.581917]  mutex_lock+0x2f/0x40
[  964.581921]  rtnetlink_rcv+0x19/0x30
[  964.581925]  netlink_unicast+0x18c/0x240
[  964.581929]  netlink_sendmsg+0x2c5/0x3a0
[  964.581933]  sock_sendmsg+0x38/0x50
[  964.581936]  SYSC_sendto+0x101/0x190
[  964.581942]  ? handle_mm_fault+0xcc/0x1c0
[  964.581950]  ? __do_page_fault+0x283/0x4f0
[  964.581954]  SyS_sendto+0xe/0x10
[  964.581959]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  964.581961] RIP: 0033:0x7fb0aae9f39d
[  964.581963] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  964.581967] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  964.581969] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  964.581971] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  964.581973] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  964.581975] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  964.581982] OOM killer enabled.
[  964.581983] Restarting tasks ... done.
[  964.692859] PM: Syncing filesystems ... done.
[  964.951747] PM: Preparing system for sleep (freeze)
[  964.951912] Freezing user space processes ... 
[  967.648130] INFO: task kworker/2:1:34 blocked for more than 120 seconds.
[  967.648139]       Not tainted 4.13.5anil-1017 #1
[  967.648142] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648146] kworker/2:1     D    0    34      2 0x00000000
[  967.648161] Workqueue: ipv6_addrconf addrconf_verify_work
[  967.648164] Call Trace:
[  967.648174]  __schedule+0x3c2/0x8b0
[  967.648180]  schedule+0x36/0x80
[  967.648184]  schedule_preempt_disabled+0xe/0x10
[  967.648188]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648196]  ? __switch_to+0x211/0x490
[  967.648201]  __mutex_lock_slowpath+0x13/0x20
[  967.648204]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648208]  mutex_lock+0x2f/0x40
[  967.648212]  rtnl_lock+0x15/0x20
[  967.648217]  addrconf_verify_work+0xe/0x20
[  967.648222]  process_one_work+0x156/0x3f0
[  967.648227]  worker_thread+0x4b/0x410
[  967.648233]  kthread+0x109/0x140
[  967.648237]  ? process_one_work+0x3f0/0x3f0
[  967.648242]  ? kthread_create_on_node+0x70/0x70
[  967.648247]  ret_from_fork+0x25/0x30
[  967.648258] INFO: task kworker/u8:4:183 blocked for more than 120 seconds.
[  967.648262]       Not tainted 4.13.5anil-1017 #1
[  967.648264] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648267] kworker/u8:4    D    0   183      2 0x00000000
[  967.648313] Workqueue: events_power_efficient reg_check_chans_work [cfg80211]
[  967.648316] Call Trace:
[  967.648321]  __schedule+0x3c2/0x8b0
[  967.648326]  ? __switch_to+0x211/0x490
[  967.648330]  schedule+0x36/0x80
[  967.648334]  schedule_preempt_disabled+0xe/0x10
[  967.648338]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648343]  __mutex_lock_slowpath+0x13/0x20
[  967.648346]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648350]  mutex_lock+0x2f/0x40
[  967.648354]  rtnl_lock+0x15/0x20
[  967.648381]  reg_check_chans_work+0x2f/0x350 [cfg80211]
[  967.648385]  ? __schedule+0x3ca/0x8b0
[  967.648389]  process_one_work+0x156/0x3f0
[  967.648394]  worker_thread+0x4b/0x410
[  967.648400]  kthread+0x109/0x140
[  967.648403]  ? process_one_work+0x3f0/0x3f0
[  967.648408]  ? kthread_create_on_node+0x70/0x70
[  967.648413]  ret_from_fork+0x25/0x30
[  967.648418] INFO: task kworker/3:2:185 blocked for more than 120 seconds.
[  967.648421]       Not tainted 4.13.5anil-1017 #1
[  967.648423] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648426] kworker/3:2     D    0   185      2 0x00000000
[  967.648472] Workqueue: events_freezable ieee80211_restart_work [mac80211]
[  967.648474] Call Trace:
[  967.648479]  __schedule+0x3c2/0x8b0
[  967.648483]  schedule+0x36/0x80
[  967.648486]  schedule_preempt_disabled+0xe/0x10
[  967.648490]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648495]  ? flush_workqueue+0x1d5/0x400
[  967.648500]  __mutex_lock_slowpath+0x13/0x20
[  967.648503]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648506]  mutex_lock+0x2f/0x40
[  967.648510]  rtnl_lock+0x15/0x20
[  967.648544]  ieee80211_restart_work+0x55/0xd0 [mac80211]
[  967.648549]  process_one_work+0x156/0x3f0
[  967.648554]  worker_thread+0x4b/0x410
[  967.648560]  kthread+0x109/0x140
[  967.648564]  ? process_one_work+0x3f0/0x3f0
[  967.648569]  ? kthread_create_on_node+0x70/0x70
[  967.648575]  ret_from_fork+0x25/0x30
[  967.648590] INFO: task cups-browsed:989 blocked for more than 120 seconds.
[  967.648594]       Not tainted 4.13.5anil-1017 #1
[  967.648596] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648600] cups-browsed    D    0   989      1 0x00000004
[  967.648604] Call Trace:
[  967.648608]  __schedule+0x3c2/0x8b0
[  967.648613]  ? consume_skb+0x34/0xa0
[  967.648617]  schedule+0x36/0x80
[  967.648620]  schedule_preempt_disabled+0xe/0x10
[  967.648624]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648630]  __mutex_lock_slowpath+0x13/0x20
[  967.648633]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648637]  mutex_lock+0x2f/0x40
[  967.648641]  rtnetlink_rcv+0x19/0x30
[  967.648646]  netlink_unicast+0x18c/0x240
[  967.648650]  netlink_sendmsg+0x2c5/0x3a0
[  967.648655]  sock_sendmsg+0x38/0x50
[  967.648658]  SYSC_sendto+0x101/0x190
[  967.648666]  ? SYSC_getsockname+0x89/0xe0
[  967.648672]  ? fd_install+0x25/0x30
[  967.648677]  ? sock_map_fd+0x44/0x70
[  967.648681]  SyS_sendto+0xe/0x10
[  967.648686]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.648690] RIP: 0033:0x7f87f22ac4d3
[  967.648692] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  967.648696] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  967.648698] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  967.648700] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  967.648703] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  967.648704] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  967.648710] INFO: task NetworkManager:990 blocked for more than 120 seconds.
[  967.648714]       Not tainted 4.13.5anil-1017 #1
[  967.648717] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648720] NetworkManager  D    0   990      1 0x00000004
[  967.648724] Call Trace:
[  967.648728]  __schedule+0x3c2/0x8b0
[  967.648733]  schedule+0x36/0x80
[  967.648737]  schedule_preempt_disabled+0xe/0x10
[  967.648740]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648747]  ? ___slab_alloc+0x32b/0x4c0
[  967.648751]  __mutex_lock_slowpath+0x13/0x20
[  967.648755]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648758]  mutex_lock+0x2f/0x40
[  967.648762]  rtnl_lock+0x15/0x20
[  967.648768]  dev_ioctl+0x312/0x530
[  967.648772]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  967.648779]  sock_do_ioctl+0x42/0x50
[  967.648784]  ? sock_do_ioctl+0x42/0x50
[  967.648789]  sock_ioctl+0x1f6/0x2c0
[  967.648793]  ? alloc_file+0x69/0xe0
[  967.648799]  do_vfs_ioctl+0xa1/0x5d0
[  967.648805]  ? sock_alloc_file+0xa6/0x130
[  967.648810]  SyS_ioctl+0x79/0x90
[  967.648815]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.648818] RIP: 0033:0x7f9d454bbf07
[  967.648820] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  967.648825] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  967.648827] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  967.648829] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  967.648831] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  967.648833] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  967.648844] INFO: task whoopsie:1169 blocked for more than 120 seconds.
[  967.648848]       Not tainted 4.13.5anil-1017 #1
[  967.648851] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648854] whoopsie        D    0  1169      1 0x00000004
[  967.648858] Call Trace:
[  967.648863]  __schedule+0x3c2/0x8b0
[  967.648868]  ? __wake_up_common+0x73/0x90
[  967.648872]  schedule+0x36/0x80
[  967.648876]  schedule_preempt_disabled+0xe/0x10
[  967.648880]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.648885]  __mutex_lock_slowpath+0x13/0x20
[  967.648889]  ? __mutex_lock_slowpath+0x13/0x20
[  967.648892]  mutex_lock+0x2f/0x40
[  967.648896]  rtnetlink_rcv+0x19/0x30
[  967.648900]  netlink_unicast+0x18c/0x240
[  967.648904]  netlink_sendmsg+0x2c5/0x3a0
[  967.648908]  sock_sendmsg+0x38/0x50
[  967.648911]  SYSC_sendto+0x101/0x190
[  967.648917]  ? security_file_permission+0x9b/0xc0
[  967.648923]  ? vfs_read+0x93/0x130
[  967.648927]  SyS_sendto+0xe/0x10
[  967.648932]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.648935] RIP: 0033:0x7f804d02a3ff
[  967.648937] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  967.648941] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  967.648943] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  967.648944] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  967.648947] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  967.648948] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  967.648977] INFO: task gnome-software:2123 blocked for more than 120 seconds.
[  967.648981]       Not tainted 4.13.5anil-1017 #1
[  967.648983] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.648986] gnome-software  D    0  2123   1992 0x00000004
[  967.648990] Call Trace:
[  967.648995]  __schedule+0x3c2/0x8b0
[  967.648999]  schedule+0x36/0x80
[  967.649003]  schedule_preempt_disabled+0xe/0x10
[  967.649007]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.649012]  __mutex_lock_slowpath+0x13/0x20
[  967.649015]  ? __mutex_lock_slowpath+0x13/0x20
[  967.649018]  mutex_lock+0x2f/0x40
[  967.649022]  rtnetlink_rcv+0x19/0x30
[  967.649026]  netlink_unicast+0x18c/0x240
[  967.649030]  netlink_sendmsg+0x2c5/0x3a0
[  967.649034]  sock_sendmsg+0x38/0x50
[  967.649037]  SYSC_sendto+0x101/0x190
[  967.649041]  ? security_file_permission+0x9b/0xc0
[  967.649047]  ? vfs_read+0x93/0x130
[  967.649051]  SyS_sendto+0xe/0x10
[  967.649056]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.649058] RIP: 0033:0x7f483f67e9ff
[  967.649060] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  967.649064] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  967.649066] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  967.649068] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  967.649070] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  967.649072] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  967.649087] INFO: task evolution-calen:2487 blocked for more than 120 seconds.
[  967.649090]       Not tainted 4.13.5anil-1017 #1
[  967.649092] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.649095] evolution-calen D    0  2487   2464 0x00000004
[  967.649098] Call Trace:
[  967.649102]  __schedule+0x3c2/0x8b0
[  967.649106]  schedule+0x36/0x80
[  967.649110]  schedule_preempt_disabled+0xe/0x10
[  967.649113]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.649118]  __mutex_lock_slowpath+0x13/0x20
[  967.649122]  ? __mutex_lock_slowpath+0x13/0x20
[  967.649125]  mutex_lock+0x2f/0x40
[  967.649128]  rtnetlink_rcv+0x19/0x30
[  967.649132]  netlink_unicast+0x18c/0x240
[  967.649136]  netlink_sendmsg+0x2c5/0x3a0
[  967.649140]  sock_sendmsg+0x38/0x50
[  967.649143]  SYSC_sendto+0x101/0x190
[  967.649147]  ? security_file_permission+0x9b/0xc0
[  967.649153]  ? vfs_read+0x93/0x130
[  967.649156]  SyS_sendto+0xe/0x10
[  967.649161]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.649163] RIP: 0033:0x7f2764fc19ff
[  967.649165] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  967.649168] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  967.649170] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  967.649172] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  967.649173] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  967.649175] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  967.649181] INFO: task evolution-calen:2499 blocked for more than 120 seconds.
[  967.649184]       Not tainted 4.13.5anil-1017 #1
[  967.649186] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.649189] evolution-calen D    0  2499   2464 0x00000004
[  967.649191] Call Trace:
[  967.649195]  __schedule+0x3c2/0x8b0
[  967.649199]  schedule+0x36/0x80
[  967.649202]  schedule_preempt_disabled+0xe/0x10
[  967.649206]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.649211]  __mutex_lock_slowpath+0x13/0x20
[  967.649214]  ? __mutex_lock_slowpath+0x13/0x20
[  967.649217]  mutex_lock+0x2f/0x40
[  967.649221]  rtnetlink_rcv+0x19/0x30
[  967.649224]  netlink_unicast+0x18c/0x240
[  967.649228]  netlink_sendmsg+0x2c5/0x3a0
[  967.649232]  sock_sendmsg+0x38/0x50
[  967.649235]  SYSC_sendto+0x101/0x190
[  967.649239]  ? security_file_permission+0x9b/0xc0
[  967.649244]  ? vfs_read+0x93/0x130
[  967.649248]  SyS_sendto+0xe/0x10
[  967.649252]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.649254] RIP: 0033:0x7fb2c6e629ff
[  967.649256] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  967.649259] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  967.649260] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  967.649262] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  967.649264] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  967.649266] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  967.649270] INFO: task evolution-addre:2519 blocked for more than 120 seconds.
[  967.649273]       Not tainted 4.13.5anil-1017 #1
[  967.649275] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  967.649277] evolution-addre D    0  2519   2497 0x00000004
[  967.649280] Call Trace:
[  967.649284]  __schedule+0x3c2/0x8b0
[  967.649288]  schedule+0x36/0x80
[  967.649292]  schedule_preempt_disabled+0xe/0x10
[  967.649295]  __mutex_lock.isra.2+0x2ae/0x4e0
[  967.649300]  __mutex_lock_slowpath+0x13/0x20
[  967.649303]  ? __mutex_lock_slowpath+0x13/0x20
[  967.649307]  mutex_lock+0x2f/0x40
[  967.649310]  rtnetlink_rcv+0x19/0x30
[  967.649313]  netlink_unicast+0x18c/0x240
[  967.649317]  netlink_sendmsg+0x2c5/0x3a0
[  967.649321]  sock_sendmsg+0x38/0x50
[  967.649324]  SYSC_sendto+0x101/0x190
[  967.649328]  ? security_file_permission+0x9b/0xc0
[  967.649333]  ? vfs_read+0x93/0x130
[  967.649337]  SyS_sendto+0xe/0x10
[  967.649341]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  967.649343] RIP: 0033:0x7f4a6d1aa9ff
[  967.649345] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  967.649348] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  967.649349] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  967.649351] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  967.649353] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  967.649355] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  984.956158] Freezing of tasks failed after 20.004 seconds (12 tasks refusing to freeze, wq_busy=0):
[  984.956192] cups-browsed    D    0   989      1 0x00000004
[  984.956198] Call Trace:
[  984.956210]  __schedule+0x3c2/0x8b0
[  984.956215]  ? consume_skb+0x34/0xa0
[  984.956219]  schedule+0x36/0x80
[  984.956223]  schedule_preempt_disabled+0xe/0x10
[  984.956227]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.956232]  __mutex_lock_slowpath+0x13/0x20
[  984.956236]  ? __mutex_lock_slowpath+0x13/0x20
[  984.956239]  mutex_lock+0x2f/0x40
[  984.956244]  rtnetlink_rcv+0x19/0x30
[  984.956248]  netlink_unicast+0x18c/0x240
[  984.956252]  netlink_sendmsg+0x2c5/0x3a0
[  984.956257]  sock_sendmsg+0x38/0x50
[  984.956260]  SYSC_sendto+0x101/0x190
[  984.956268]  ? SYSC_getsockname+0x89/0xe0
[  984.956274]  ? fd_install+0x25/0x30
[  984.956279]  ? sock_map_fd+0x44/0x70
[  984.956283]  SyS_sendto+0xe/0x10
[  984.956288]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.956292] RIP: 0033:0x7f87f22ac4d3
[  984.956295] RSP: 002b:00007ffdac4e3bb0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  984.956298] RAX: ffffffffffffffda RBX: 00007ffdac4e4d10 RCX: 00007f87f22ac4d3
[  984.956300] RDX: 0000000000000014 RSI: 00007ffdac4e4c10 RDI: 000000000000000c
[  984.956302] RBP: 00007ffdac4e4d60 R08: 00007ffdac4e4bf0 R09: 000000000000000c
[  984.956304] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000c6dd68
[  984.956306] R13: 0000000000000003 R14: 0000000000c6dc10 R15: 0000000000000000
[  984.956312] NetworkManager  D    0   990      1 0x00000004
[  984.956316] Call Trace:
[  984.956320]  __schedule+0x3c2/0x8b0
[  984.956324]  schedule+0x36/0x80
[  984.956328]  schedule_preempt_disabled+0xe/0x10
[  984.956332]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.956338]  ? ___slab_alloc+0x32b/0x4c0
[  984.956342]  __mutex_lock_slowpath+0x13/0x20
[  984.956345]  ? __mutex_lock_slowpath+0x13/0x20
[  984.956349]  mutex_lock+0x2f/0x40
[  984.956352]  rtnl_lock+0x15/0x20
[  984.956358]  dev_ioctl+0x312/0x530
[  984.956363]  ? kmem_cache_alloc_trace+0xdb/0x1c0
[  984.956369]  sock_do_ioctl+0x42/0x50
[  984.956374]  ? sock_do_ioctl+0x42/0x50
[  984.956379]  sock_ioctl+0x1f6/0x2c0
[  984.956382]  ? alloc_file+0x69/0xe0
[  984.956388]  do_vfs_ioctl+0xa1/0x5d0
[  984.956393]  ? sock_alloc_file+0xa6/0x130
[  984.956398]  SyS_ioctl+0x79/0x90
[  984.956403]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.956406] RIP: 0033:0x7f9d454bbf07
[  984.956408] RSP: 002b:00007ffda4b8bf08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  984.956411] RAX: ffffffffffffffda RBX: 00000000024eab00 RCX: 00007f9d454bbf07
[  984.956413] RDX: 00007ffda4b8bf10 RSI: 0000000000008946 RDI: 0000000000000013
[  984.956415] RBP: 00007ffda4b8c380 R08: 0000000000000001 R09: 0000000000000000
[  984.956417] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000000
[  984.956419] R13: 00000000024c9de0 R14: 00007ffda4b8c390 R15: 00000000024e3cd0
[  984.956427] wpa_supplicant  D    0  1049      1 0x00000004
[  984.956430] Call Trace:
[  984.956434]  __schedule+0x3c2/0x8b0
[  984.956438]  schedule+0x36/0x80
[  984.956442]  schedule_timeout+0x17a/0x360
[  984.956448]  ? call_timer_fn+0x140/0x140
[  984.956454]  msleep+0x2e/0x40
[  984.956458]  ? msleep+0x2e/0x40
[  984.956468]  ath10k_pci_hif_stop+0x60/0xc0 [ath10k_pci]
[  984.956489]  ath10k_core_stop+0x45/0x70 [ath10k_core]
[  984.956504]  ath10k_halt+0x102/0x160 [ath10k_core]
[  984.956520]  ath10k_stop+0x39/0x80 [ath10k_core]
[  984.956564]  drv_stop+0x33/0xf0 [mac80211]
[  984.956609]  ieee80211_stop_device+0x43/0x50 [mac80211]
[  984.956649]  ieee80211_do_stop+0x4fc/0x840 [mac80211]
[  984.956655]  ? __rtnl_unlock+0x2a/0x50
[  984.956660]  ? nla_memcpy+0x26/0x50
[  984.956700]  ieee80211_sdata_stop+0x1e/0x30 [mac80211]
[  984.956740]  ieee80211_stop_p2p_device+0x12/0x20 [mac80211]
[  984.956777]  cfg80211_stop_p2p_device+0x6c/0x180 [cfg80211]
[  984.956811]  nl80211_stop_p2p_device+0x2e/0x40 [cfg80211]
[  984.956816]  genl_family_rcv_msg+0x1f5/0x3d0
[  984.956820]  ? __netlink_sendskb+0x3e/0x60
[  984.956826]  genl_rcv_msg+0x4c/0x90
[  984.956830]  ? genl_family_rcv_msg+0x3d0/0x3d0
[  984.956834]  netlink_rcv_skb+0xe7/0x120
[  984.956838]  genl_rcv+0x28/0x40
[  984.956842]  netlink_unicast+0x18c/0x240
[  984.956847]  netlink_sendmsg+0x2c5/0x3a0
[  984.956851]  sock_sendmsg+0x38/0x50
[  984.956854]  ___sys_sendmsg+0x2b6/0x2d0
[  984.956859]  ? netlink_sendmsg+0x133/0x3a0
[  984.956866]  ? kzfree+0x2d/0x40
[  984.956872]  ? dput+0xc7/0x1f0
[  984.956878]  ? mntput+0x24/0x40
[  984.956882]  __sys_sendmsg+0x54/0x90
[  984.956886]  ? __sys_sendmsg+0x54/0x90
[  984.956890]  SyS_sendmsg+0x12/0x20
[  984.956896]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.956898] RIP: 0033:0x7fd5b8652450
[  984.956900] RSP: 002b:00007ffef628fb18 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  984.956904] RAX: ffffffffffffffda RBX: 00005572d06095e0 RCX: 00007fd5b8652450
[  984.956906] RDX: 0000000000000000 RSI: 00007ffef628fba0 RDI: 0000000000000006
[  984.956908] RBP: 00005572d0608180 R08: 0000000000000000 R09: 00005572d060ac40
[  984.956910] R10: 0000000000001000 R11: 0000000000000246 R12: 00005572d06081a0
[  984.956912] R13: 0000000000000001 R14: 00005572d060a488 R15: 00005572d0609aec
[  984.956919] whoopsie        D    0  1169      1 0x00000004
[  984.956923] Call Trace:
[  984.956928]  __schedule+0x3c2/0x8b0
[  984.956934]  ? __wake_up_common+0x73/0x90
[  984.956938]  schedule+0x36/0x80
[  984.956941]  schedule_preempt_disabled+0xe/0x10
[  984.956945]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.956951]  __mutex_lock_slowpath+0x13/0x20
[  984.956954]  ? __mutex_lock_slowpath+0x13/0x20
[  984.956958]  mutex_lock+0x2f/0x40
[  984.956962]  rtnetlink_rcv+0x19/0x30
[  984.956966]  netlink_unicast+0x18c/0x240
[  984.956970]  netlink_sendmsg+0x2c5/0x3a0
[  984.956974]  sock_sendmsg+0x38/0x50
[  984.956977]  SYSC_sendto+0x101/0x190
[  984.956983]  ? security_file_permission+0x9b/0xc0
[  984.956989]  ? vfs_read+0x93/0x130
[  984.956993]  SyS_sendto+0xe/0x10
[  984.956998]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957000] RIP: 0033:0x7f804d02a3ff
[  984.957002] RSP: 002b:00007fffc050a600 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957006] RAX: ffffffffffffffda RBX: 0000000001ec71d0 RCX: 00007f804d02a3ff
[  984.957008] RDX: 0000000000000014 RSI: 00007fffc050a690 RDI: 0000000000000008
[  984.957010] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[  984.957012] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f804d2eaa80
[  984.957014] R13: 00007f8038007120 R14: 0000000000000000 R15: 0000000001e9c2c0
[  984.957047] gnome-software  D    0  2123   1992 0x00000004
[  984.957051] Call Trace:
[  984.957055]  __schedule+0x3c2/0x8b0
[  984.957059]  schedule+0x36/0x80
[  984.957063]  schedule_preempt_disabled+0xe/0x10
[  984.957067]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957072]  __mutex_lock_slowpath+0x13/0x20
[  984.957076]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957079]  mutex_lock+0x2f/0x40
[  984.957083]  rtnetlink_rcv+0x19/0x30
[  984.957087]  netlink_unicast+0x18c/0x240
[  984.957091]  netlink_sendmsg+0x2c5/0x3a0
[  984.957095]  sock_sendmsg+0x38/0x50
[  984.957098]  SYSC_sendto+0x101/0x190
[  984.957103]  ? security_file_permission+0x9b/0xc0
[  984.957109]  ? vfs_read+0x93/0x130
[  984.957113]  SyS_sendto+0xe/0x10
[  984.957118]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957120] RIP: 0033:0x7f483f67e9ff
[  984.957122] RSP: 002b:00007fffd6f44dd0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957126] RAX: ffffffffffffffda RBX: 0000000002a57f40 RCX: 00007f483f67e9ff
[  984.957128] RDX: 0000000000000014 RSI: 00007fffd6f44e60 RDI: 000000000000000e
[  984.957130] RBP: 00007fffd6f448e0 R08: 0000000000000000 R09: 0000000000000000
[  984.957132] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000006
[  984.957134] R13: 0000000000dc1960 R14: 0000000000000000 R15: 00007f48429c70da
[  984.957154] evolution-calen D    0  2487   2464 0x00000004
[  984.957158] Call Trace:
[  984.957162]  __schedule+0x3c2/0x8b0
[  984.957167]  schedule+0x36/0x80
[  984.957170]  schedule_preempt_disabled+0xe/0x10
[  984.957174]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957179]  __mutex_lock_slowpath+0x13/0x20
[  984.957183]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957186]  mutex_lock+0x2f/0x40
[  984.957190]  rtnetlink_rcv+0x19/0x30
[  984.957194]  netlink_unicast+0x18c/0x240
[  984.957198]  netlink_sendmsg+0x2c5/0x3a0
[  984.957202]  sock_sendmsg+0x38/0x50
[  984.957205]  SYSC_sendto+0x101/0x190
[  984.957209]  ? security_file_permission+0x9b/0xc0
[  984.957215]  ? vfs_read+0x93/0x130
[  984.957219]  SyS_sendto+0xe/0x10
[  984.957224]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957226] RIP: 0033:0x7f2764fc19ff
[  984.957228] RSP: 002b:00007ffc3f99d1d0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957232] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f2764fc19ff
[  984.957234] RDX: 0000000000000014 RSI: 00007ffc3f99d260 RDI: 0000000000000009
[  984.957236] RBP: 00007f274401fc00 R08: 0000000000000000 R09: 0000000000000000
[  984.957238] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f274401fc20
[  984.957240] R13: 0000000000000001 R14: 00007ffc3f99c950 R15: 0000000000000000
[  984.957246] evolution-calen D    0  2499   2464 0x00000004
[  984.957249] Call Trace:
[  984.957254]  __schedule+0x3c2/0x8b0
[  984.957258]  schedule+0x36/0x80
[  984.957262]  schedule_preempt_disabled+0xe/0x10
[  984.957265]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957271]  __mutex_lock_slowpath+0x13/0x20
[  984.957274]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957278]  mutex_lock+0x2f/0x40
[  984.957281]  rtnetlink_rcv+0x19/0x30
[  984.957285]  netlink_unicast+0x18c/0x240
[  984.957289]  netlink_sendmsg+0x2c5/0x3a0
[  984.957293]  sock_sendmsg+0x38/0x50
[  984.957296]  SYSC_sendto+0x101/0x190
[  984.957301]  ? security_file_permission+0x9b/0xc0
[  984.957306]  ? vfs_read+0x93/0x130
[  984.957310]  SyS_sendto+0xe/0x10
[  984.957315]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957317] RIP: 0033:0x7fb2c6e629ff
[  984.957320] RSP: 002b:00007ffcf7509210 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957323] RAX: ffffffffffffffda RBX: 00007fb2c6e4cb20 RCX: 00007fb2c6e629ff
[  984.957326] RDX: 0000000000000014 RSI: 00007ffcf75092a0 RDI: 0000000000000009
[  984.957328] RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000000
[  984.957330] R10: 0000000000004000 R11: 0000000000000246 R12: 00007fb2a8003c60
[  984.957332] R13: 0000000000000000 R14: 0000000000000000 R15: 000000000000003c
[  984.957337] evolution-addre D    0  2519   2497 0x00000004
[  984.957341] Call Trace:
[  984.957345]  __schedule+0x3c2/0x8b0
[  984.957350]  schedule+0x36/0x80
[  984.957353]  schedule_preempt_disabled+0xe/0x10
[  984.957357]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957362]  __mutex_lock_slowpath+0x13/0x20
[  984.957366]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957369]  mutex_lock+0x2f/0x40
[  984.957373]  rtnetlink_rcv+0x19/0x30
[  984.957377]  netlink_unicast+0x18c/0x240
[  984.957381]  netlink_sendmsg+0x2c5/0x3a0
[  984.957385]  sock_sendmsg+0x38/0x50
[  984.957388]  SYSC_sendto+0x101/0x190
[  984.957393]  ? security_file_permission+0x9b/0xc0
[  984.957398]  ? vfs_read+0x93/0x130
[  984.957402]  SyS_sendto+0xe/0x10
[  984.957407]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957409] RIP: 0033:0x7f4a6d1aa9ff
[  984.957411] RSP: 002b:00007ffd455986c0 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957415] RAX: ffffffffffffffda RBX: 00007f4a6d194b20 RCX: 00007f4a6d1aa9ff
[  984.957417] RDX: 0000000000000014 RSI: 00007ffd45598750 RDI: 0000000000000009
[  984.957419] RBP: 0000000000000091 R08: 0000000000000000 R09: 0000000000000000
[  984.957421] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f4a6d194b78
[  984.957423] R13: 00007f4a6d194b78 R14: 000000000000270f R15: 00007f4a6d194c78
[  984.957433] geoclue         D    0  2681      1 0x00000004
[  984.957437] Call Trace:
[  984.957441]  __schedule+0x3c2/0x8b0
[  984.957445]  ? consume_skb+0x34/0xa0
[  984.957449]  schedule+0x36/0x80
[  984.957453]  schedule_preempt_disabled+0xe/0x10
[  984.957456]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957462]  __mutex_lock_slowpath+0x13/0x20
[  984.957465]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957469]  mutex_lock+0x2f/0x40
[  984.957472]  rtnetlink_rcv+0x19/0x30
[  984.957476]  netlink_unicast+0x18c/0x240
[  984.957480]  netlink_sendmsg+0x2c5/0x3a0
[  984.957484]  sock_sendmsg+0x38/0x50
[  984.957488]  SYSC_sendto+0x101/0x190
[  984.957492]  ? security_file_permission+0x9b/0xc0
[  984.957498]  ? vfs_read+0x93/0x130
[  984.957501]  SyS_sendto+0xe/0x10
[  984.957506]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957509] RIP: 0033:0x7f22fe6c13ff
[  984.957510] RSP: 002b:00007fff93ef7c70 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957514] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f22fe6c13ff
[  984.957516] RDX: 0000000000000014 RSI: 00007fff93ef7d00 RDI: 0000000000000007
[  984.957518] RBP: 00007fff93ef7c30 R08: 0000000000000000 R09: 0000000000000000
[  984.957520] R10: 0000000000004000 R11: 0000000000000246 R12: 00007f22ec00a670
[  984.957522] R13: 00007fff93ef7cb0 R14: 00007fff93ef7cd0 R15: 0000000000000000
[  984.957535] DNS Resolver #3 D    0 14484   1715 0x00000004
[  984.957539] Call Trace:
[  984.957543]  __schedule+0x3c2/0x8b0
[  984.957547]  schedule+0x36/0x80
[  984.957551]  schedule_preempt_disabled+0xe/0x10
[  984.957555]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957560]  __mutex_lock_slowpath+0x13/0x20
[  984.957564]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957567]  mutex_lock+0x2f/0x40
[  984.957571]  rtnetlink_rcv+0x19/0x30
[  984.957575]  netlink_unicast+0x18c/0x240
[  984.957579]  netlink_sendmsg+0x2c5/0x3a0
[  984.957583]  sock_sendmsg+0x38/0x50
[  984.957586]  SYSC_sendto+0x101/0x190
[  984.957593]  ? SYSC_getsockname+0x89/0xe0
[  984.957599]  ? fd_install+0x25/0x30
[  984.957604]  ? sock_map_fd+0x44/0x70
[  984.957608]  SyS_sendto+0xe/0x10
[  984.957613]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957615] RIP: 0033:0x7fec02b384d3
[  984.957617] RSP: 002b:00007febad1fda50 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
[  984.957621] RAX: ffffffffffffffda RBX: 00007febad1ff700 RCX: 00007fec02b384d3
[  984.957623] RDX: 0000000000000014 RSI: 00007febad1feb10 RDI: 000000000000002c
[  984.957625] RBP: 00007febe6ee6690 R08: 00007febad1feaf0 R09: 000000000000000c
[  984.957627] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
[  984.957629] R13: 00007febe6ee65ef R14: 0000000000800000 R15: 00007febab477e20
[  984.957640] deja-dup-monito D    0  2923   1992 0x00000004
[  984.957644] Call Trace:
[  984.957649]  __schedule+0x3c2/0x8b0
[  984.957653]  schedule+0x36/0x80
[  984.957657]  schedule_preempt_disabled+0xe/0x10
[  984.957660]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957666]  __mutex_lock_slowpath+0x13/0x20
[  984.957670]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957673]  mutex_lock+0x2f/0x40
[  984.957677]  rtnetlink_rcv+0x19/0x30
[  984.957681]  netlink_unicast+0x18c/0x240
[  984.957685]  netlink_sendmsg+0x2c5/0x3a0
[  984.957689]  sock_sendmsg+0x38/0x50
[  984.957692]  SYSC_sendto+0x101/0x190
[  984.957696]  ? security_file_permission+0x9b/0xc0
[  984.957702]  ? vfs_read+0x93/0x130
[  984.957706]  SyS_sendto+0xe/0x10
[  984.957711]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957713] RIP: 0033:0x7ff26c2df9ff
[  984.957715] RSP: 002b:00007fff507f7630 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957719] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff26c2df9ff
[  984.957721] RDX: 0000000000000014 RSI: 00007fff507f76c0 RDI: 0000000000000008
[  984.957723] RBP: 0000000001461ba0 R08: 0000000000000000 R09: 0000000000000000
[  984.957725] R10: 0000000000004000 R11: 0000000000000246 R12: 0000000000000000
[  984.957727] R13: 0000000000000000 R14: 0000000000000000 R15: 00007fff507f6960
[  984.957737] ip              D    0 14444  14443 0x00000004
[  984.957741] Call Trace:
[  984.957745]  __schedule+0x3c2/0x8b0
[  984.957750]  schedule+0x36/0x80
[  984.957753]  schedule_preempt_disabled+0xe/0x10
[  984.957757]  __mutex_lock.isra.2+0x2ae/0x4e0
[  984.957761]  ? current_time+0x38/0x70
[  984.957766]  __mutex_lock_slowpath+0x13/0x20
[  984.957769]  ? __mutex_lock_slowpath+0x13/0x20
[  984.957773]  mutex_lock+0x2f/0x40
[  984.957777]  rtnetlink_rcv+0x19/0x30
[  984.957780]  netlink_unicast+0x18c/0x240
[  984.957785]  netlink_sendmsg+0x2c5/0x3a0
[  984.957789]  sock_sendmsg+0x38/0x50
[  984.957792]  SYSC_sendto+0x101/0x190
[  984.957798]  ? handle_mm_fault+0xcc/0x1c0
[  984.957806]  ? __do_page_fault+0x283/0x4f0
[  984.957810]  SyS_sendto+0xe/0x10
[  984.957815]  entry_SYSCALL_64_fastpath+0x1e/0xa9
[  984.957817] RIP: 0033:0x7fb0aae9f39d
[  984.957819] RSP: 002b:00007fffa92ab0c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  984.957822] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0aae9f39d
[  984.957824] RDX: 0000000000000028 RSI: 00007fffa92ab0d0 RDI: 0000000000000003
[  984.957826] RBP: 000000000155b250 R08: 0000000000000000 R09: 0000000000000000
[  984.957828] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[  984.957830] R13: 000000000065a540 R14: 00007fffa92ace62 R15: 00007fffa92ab11c
[  984.957839] OOM killer enabled.
[  984.957840] Restarting tasks ... done.

The lines are repearing. 

> 
> -- 
> Kalle Valo

^ permalink raw reply

* [PATCH v3 2/3] mac80211: Add airtime account and scheduling to TXQs
From: Toke Høiland-Jørgensen @ 2017-10-31 11:27 UTC (permalink / raw)
  To: make-wifi-fast, linux-wireless; +Cc: Toke Høiland-Jørgensen
In-Reply-To: <20171027141451.22768-1-toke@toke.dk>

This adds airtime accounting and scheduling to the mac80211 TXQ
scheduler. A new hardware flag, AIRTIME_ACCOUNTING, is added that
drivers can set if they support reporting airtime usage of
transmissions. When this flag is set, mac80211 will expect the actual
airtime usage to be reported in the tx_time and rx_time fields of the
respective status structs.

When airtime information is present, mac80211 will schedule TXQs
(through ieee80211_next_txq()) in a way that enforces airtime fairness
between active stations. This scheduling works the same way as the ath9k
in-driver airtime fairness scheduling.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
---
 include/net/mac80211.h     | 24 ++++++++++++++++++++++++
 net/mac80211/debugfs.c     |  1 +
 net/mac80211/debugfs_sta.c | 29 +++++++++++++++++++++++++++++
 net/mac80211/ieee80211_i.h |  9 +++++++--
 net/mac80211/main.c        |  3 ++-
 net/mac80211/rx.c          |  8 ++++++++
 net/mac80211/sta_info.c    |  2 ++
 net/mac80211/sta_info.h    |  7 +++++++
 net/mac80211/status.c      | 16 ++++++++++++++++
 net/mac80211/tx.c          | 31 ++++++++++++++++++++++++++-----
 10 files changed, 122 insertions(+), 8 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 715f45501aff..453653d082af 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1188,6 +1188,8 @@ enum mac80211_rx_encoding {
  *	HT or VHT is used (%RX_FLAG_HT/%RX_FLAG_VHT)
  * @nss: number of streams (VHT and HE only)
  * @flag: %RX_FLAG_\*
+ * @airtime: Duration of frame in usec. See @IEEE80211_HW_AIRTIME_ACCOUNTING for
+ *       how to use this.
  * @encoding: &enum mac80211_rx_encoding
  * @bw: &enum rate_info_bw
  * @enc_flags: uses bits from &enum mac80211_rx_encoding_flags
@@ -1202,6 +1204,7 @@ struct ieee80211_rx_status {
 	u32 device_timestamp;
 	u32 ampdu_reference;
 	u32 flag;
+	u16 airtime;
 	u16 freq;
 	u8 enc_flags;
 	u8 encoding:2, bw:3;
@@ -2059,6 +2062,26 @@ struct ieee80211_txq {
  *	The stack will not do fragmentation.
  *	The callback for @set_frag_threshold should be set as well.
  *
+ * @IEEE80211_HW_AIRTIME_ACCOUNTING: Hardware supports accounting the airtime
+ *      usage of other stations and reports it in the @tx_time and/or @airtime
+ *      fields of the TX/RX status structs.
+ *      When setting this flag, the driver should ensure that the respective
+ *      fields in the TX and RX status structs are always either zero or
+ *      contains a valid duration for the frame in usec. The driver can choose
+ *      to report either or both of TX and RX airtime, but it is recommended to
+ *      report both.
+ *      The reported airtime should as a minimum include all time that is spent
+ *      transmitting to the remote station, including overhead and padding, but
+ *      not including time spent waiting for a TXOP. If the time is not reported
+ *      by the hardware it can in some cases be calculated from the rate and
+ *      known frame composition. When possible, the time should include any
+ *      failed transmission attempts.
+ *      For aggregated frames, there are two possible strategies to report the
+ *      airtime: Either include the airtime of the entire aggregate in the first
+ *      (or last) frame and leave the others at zero. Alternatively, include the
+ *      overhead of the full aggregate in the first or last frame and report the
+ *      time of each frame + padding not including the full aggregate overhead.
+ *
  * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
  */
 enum ieee80211_hw_flags {
@@ -2101,6 +2124,7 @@ enum ieee80211_hw_flags {
 	IEEE80211_HW_TX_FRAG_LIST,
 	IEEE80211_HW_REPORTS_LOW_ACK,
 	IEEE80211_HW_SUPPORTS_TX_FRAG,
+	IEEE80211_HW_AIRTIME_ACCOUNTING,
 
 	/* keep last, obviously */
 	NUM_IEEE80211_HW_FLAGS
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c
index 5fae001f286c..20e3aa0e8464 100644
--- a/net/mac80211/debugfs.c
+++ b/net/mac80211/debugfs.c
@@ -211,6 +211,7 @@ static const char *hw_flag_names[] = {
 	FLAG(TX_FRAG_LIST),
 	FLAG(REPORTS_LOW_ACK),
 	FLAG(SUPPORTS_TX_FRAG),
+	FLAG(AIRTIME_ACCOUNTING),
 #undef FLAG
 };
 
diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c
index b15412c21ac9..40dba446836f 100644
--- a/net/mac80211/debugfs_sta.c
+++ b/net/mac80211/debugfs_sta.c
@@ -188,6 +188,32 @@ static ssize_t sta_aqm_read(struct file *file, char __user *userbuf,
 }
 STA_OPS(aqm);
 
+static ssize_t sta_airtime_read(struct file *file, char __user *userbuf,
+				size_t count, loff_t *ppos)
+{
+	struct sta_info *sta = file->private_data;
+	size_t bufsz = 200;
+	char *buf = kzalloc(bufsz, GFP_KERNEL), *p = buf;
+	ssize_t rv;
+
+	if (!buf)
+		return -ENOMEM;
+
+	spin_lock_bh(&sta->lock);
+
+	p += scnprintf(p, bufsz + buf - p,
+		"RX: %llu us\nTX: %llu us\nDeficit: %lld us\n",
+		sta->airtime_stats.rx_airtime,
+		sta->airtime_stats.tx_airtime,
+		sta->airtime_deficit);
+
+	spin_unlock_bh(&sta->lock);
+	rv = simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
+	kfree(buf);
+	return rv;
+}
+STA_OPS(airtime);
+
 static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
 					size_t count, loff_t *ppos)
 {
@@ -542,6 +568,9 @@ void ieee80211_sta_debugfs_add(struct sta_info *sta)
 	if (local->ops->wake_tx_queue)
 		DEBUGFS_ADD(aqm);
 
+	if (ieee80211_hw_check(&local->hw, AIRTIME_ACCOUNTING))
+		DEBUGFS_ADD(airtime);
+
 	if (sizeof(sta->driver_buffered_tids) == sizeof(u32))
 		debugfs_create_x32("driver_buffered_tids", 0400,
 				   sta->debugfs_dir,
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 95be548b1d4f..e74aeff7662a 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -90,6 +90,9 @@ extern const u8 ieee80211_ac_to_qos_mask[IEEE80211_NUM_ACS];
 
 #define IEEE80211_MAX_NAN_INSTANCE_ID 255
 
+/* How much to increase airtime deficit on each scheduling round */
+#define IEEE80211_AIRTIME_QUANTUM        1000 /* usec */
+
 struct ieee80211_fragment_entry {
 	struct sk_buff_head skb_list;
 	unsigned long first_frag_time;
@@ -1122,9 +1125,11 @@ struct ieee80211_local {
 	struct codel_vars *cvars;
 	struct codel_params cparams;
 
-	/* protects active_txqs and txqi->schedule_order */
+	/* protects active_txqs_{new,old} and txqi->schedule_order */
 	spinlock_t active_txq_lock;
-	struct list_head active_txqs;
+	struct list_head active_txqs_new;
+	struct list_head active_txqs_old;
+
 
 	const struct ieee80211_ops *ops;
 
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 9ad0556aa24b..acf73c398d9b 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -616,7 +616,8 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
 	spin_lock_init(&local->rx_path_lock);
 	spin_lock_init(&local->queue_stop_reason_lock);
 
-	INIT_LIST_HEAD(&local->active_txqs);
+	INIT_LIST_HEAD(&local->active_txqs_new);
+	INIT_LIST_HEAD(&local->active_txqs_old);
 	spin_lock_init(&local->active_txq_lock);
 
 	INIT_LIST_HEAD(&local->chanctx_list);
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 70e9d2ca8bbe..a6166850b971 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1637,6 +1637,14 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
 	if (ieee80211_vif_is_mesh(&rx->sdata->vif))
 		ieee80211_mps_rx_h_sta_process(sta, hdr);
 
+	/* airtime accounting */
+	if (status->airtime) {
+		spin_lock_bh(&sta->lock);
+		sta->airtime_stats.rx_airtime += status->airtime;
+		sta->airtime_deficit -= status->airtime;
+		spin_unlock_bh(&sta->lock);
+	}
+
 	/*
 	 * Drop (qos-)data::nullfunc frames silently, since they
 	 * are used only to control station power saving mode.
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index da3737d4778f..e8511922a7c7 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -433,6 +433,8 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
 	sta->cparams.interval = MS2TIME(100);
 	sta->cparams.ecn = true;
 
+	sta->airtime_deficit = IEEE80211_AIRTIME_QUANTUM;
+
 	sta_dbg(sdata, "Allocated STA %pM\n", sta->sta.addr);
 
 	return sta;
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 5c54acd10562..5d1802f22550 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -550,6 +550,13 @@ struct sta_info {
 	} tx_stats;
 	u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
 
+	/* Airtime stats and deficit, protected by lock */
+	struct {
+		u64 rx_airtime;
+		u64 tx_airtime;
+	} airtime_stats;
+	s64 airtime_deficit;
+
 	/*
 	 * Aggregation information, locked with lock.
 	 */
diff --git a/net/mac80211/status.c b/net/mac80211/status.c
index da7427a41529..cf7956f7a040 100644
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -823,6 +823,14 @@ static void __ieee80211_tx_status(struct ieee80211_hw *hw,
 				ieee80211_lost_packet(sta, info);
 			}
 		}
+
+		if (ieee80211_hw_check(&local->hw, AIRTIME_ACCOUNTING) &&
+		    info->status.tx_time) {
+			spin_lock_bh(&sta->lock);
+			sta->airtime_stats.tx_airtime += info->status.tx_time;
+			sta->airtime_deficit -= info->status.tx_time;
+			spin_unlock_bh(&sta->lock);
+		}
 	}
 
 	/* SNMP counters
@@ -947,6 +955,14 @@ void ieee80211_tx_status_ext(struct ieee80211_hw *hw,
 			sta->status_stats.retry_failed++;
 		sta->status_stats.retry_count += retry_count;
 
+		if (ieee80211_hw_check(&local->hw, AIRTIME_ACCOUNTING) &&
+		    info->status.tx_time) {
+			spin_lock_bh(&sta->lock);
+			sta->airtime_stats.tx_airtime += info->status.tx_time;
+			sta->airtime_deficit -= info->status.tx_time;
+			spin_unlock_bh(&sta->lock);
+		}
+
 		if (acked) {
 			sta->status_stats.last_ack = jiffies;
 
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 824d87e6d3eb..409e84509625 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3530,7 +3530,7 @@ bool ieee80211_schedule_txq(struct ieee80211_hw *hw,
 	spin_lock_bh(&local->active_txq_lock);
 
 	if (list_empty(&txqi->schedule_order)) {
-		list_add_tail(&txqi->schedule_order, &local->active_txqs);
+		list_add_tail(&txqi->schedule_order, &local->active_txqs_new);
 		ret = true;
 	}
 
@@ -3544,14 +3544,35 @@ struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw)
 {
 	struct ieee80211_local *local = hw_to_local(hw);
 	struct txq_info *txqi = NULL;
+	struct list_head *head;
 
 	spin_lock_bh(&local->active_txq_lock);
 
-	if (list_empty(&local->active_txqs))
-		goto out;
+begin:
+	head = &local->active_txqs_new;
+	if (list_empty(head)) {
+		head = &local->active_txqs_old;
+		if (list_empty(head))
+			goto out;
+	}
+
+	txqi = list_first_entry(head, struct txq_info, schedule_order);
+
+	if (txqi->txq.sta) {
+		struct sta_info *sta = container_of(txqi->txq.sta,
+						struct sta_info, sta);
+
+		spin_lock_bh(&sta->lock);
+		if (sta->airtime_deficit < 0) {
+			sta->airtime_deficit += IEEE80211_AIRTIME_QUANTUM;
+			list_move_tail(&txqi->schedule_order,
+				       &local->active_txqs_old);
+			spin_unlock_bh(&sta->lock);
+			goto begin;
+		}
+		spin_unlock_bh(&sta->lock);
+	}
 
-	txqi = list_first_entry(&local->active_txqs,
-				struct txq_info, schedule_order);
 	list_del_init(&txqi->schedule_order);
 
 out:
-- 
2.14.3

^ permalink raw reply related

* [PATCH v3 1/3] mac80211: Add TXQ scheduling API
From: Toke Høiland-Jørgensen @ 2017-10-31 11:27 UTC (permalink / raw)
  To: make-wifi-fast, linux-wireless; +Cc: Toke Høiland-Jørgensen
In-Reply-To: <20171027141451.22768-1-toke@toke.dk>

This adds an API to mac80211 to handle scheduling of TXQs and changes the
interface between driver and mac80211 for TXQ handling as follows:

- The wake_tx_queue callback interface no longer includes the TXQ. Instead,
  the driver is expected to retrieve that from ieee80211_next_txq()

- Two new mac80211 functions are added: ieee80211_next_txq() and
  ieee80211_schedule_txq(). The former returns the next TXQ that should be
  scheduled, and is how the driver gets a queue to pull packets from. The
  latter is called internally by mac80211 to start scheduling a queue, and
  the driver is supposed to call it to re-schedule the TXQ after it is
  finished pulling packets from it (unless the queue emptied).

The ath9k and ath10k drivers are changed to use the new API.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
---
Changes since v2:
- Fix build error of first patch in the series reported by the kbuild
  bot

 drivers/net/wireless/ath/ath10k/core.c |   2 -
 drivers/net/wireless/ath/ath10k/core.h |   4 -
 drivers/net/wireless/ath/ath10k/mac.c  |  55 +++------
 drivers/net/wireless/ath/ath9k/ath9k.h |   9 +-
 drivers/net/wireless/ath/ath9k/main.c  |   2 +-
 drivers/net/wireless/ath/ath9k/recv.c  |   2 -
 drivers/net/wireless/ath/ath9k/xmit.c  | 210 ++++++++-------------------------
 include/net/mac80211.h                 |  37 +++++-
 net/mac80211/agg-tx.c                  |   6 +-
 net/mac80211/driver-ops.h              |  12 +-
 net/mac80211/ieee80211_i.h             |   5 +
 net/mac80211/main.c                    |   3 +
 net/mac80211/sta_info.c                |   7 +-
 net/mac80211/trace.h                   |  32 +----
 net/mac80211/tx.c                      |  49 +++++++-
 15 files changed, 173 insertions(+), 262 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index a4f635820f35..759df3297d48 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -2561,9 +2561,7 @@ struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
 
 	mutex_init(&ar->conf_mutex);
 	spin_lock_init(&ar->data_lock);
-	spin_lock_init(&ar->txqs_lock);
 
-	INIT_LIST_HEAD(&ar->txqs);
 	INIT_LIST_HEAD(&ar->peers);
 	init_waitqueue_head(&ar->peer_mapping_wq);
 	init_waitqueue_head(&ar->htt.empty_tx_wq);
diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 949ebb3e967b..3c3b158cdb20 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -347,7 +347,6 @@ struct ath10k_peer {
 };
 
 struct ath10k_txq {
-	struct list_head list;
 	unsigned long num_fw_queued;
 	unsigned long num_push_allowed;
 };
@@ -892,10 +891,7 @@ struct ath10k {
 
 	/* protects shared structure data */
 	spinlock_t data_lock;
-	/* protects: ar->txqs, artxq->list */
-	spinlock_t txqs_lock;
 
-	struct list_head txqs;
 	struct list_head arvifs;
 	struct list_head peers;
 	struct ath10k_peer *peer_map[ATH10K_MAX_NUM_PEER_IDS];
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 5683f1a5330e..f9c70d8c9a09 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3820,12 +3820,10 @@ static void ath10k_mac_txq_init(struct ieee80211_txq *txq)
 		return;
 
 	artxq = (void *)txq->drv_priv;
-	INIT_LIST_HEAD(&artxq->list);
 }
 
 static void ath10k_mac_txq_unref(struct ath10k *ar, struct ieee80211_txq *txq)
 {
-	struct ath10k_txq *artxq;
 	struct ath10k_skb_cb *cb;
 	struct sk_buff *msdu;
 	int msdu_id;
@@ -3833,12 +3831,6 @@ static void ath10k_mac_txq_unref(struct ath10k *ar, struct ieee80211_txq *txq)
 	if (!txq)
 		return;
 
-	artxq = (void *)txq->drv_priv;
-	spin_lock_bh(&ar->txqs_lock);
-	if (!list_empty(&artxq->list))
-		list_del_init(&artxq->list);
-	spin_unlock_bh(&ar->txqs_lock);
-
 	spin_lock_bh(&ar->htt.tx_lock);
 	idr_for_each_entry(&ar->htt.pending_tx, msdu, msdu_id) {
 		cb = ATH10K_SKB_CB(msdu);
@@ -3968,23 +3960,17 @@ int ath10k_mac_tx_push_txq(struct ieee80211_hw *hw,
 void ath10k_mac_tx_push_pending(struct ath10k *ar)
 {
 	struct ieee80211_hw *hw = ar->hw;
-	struct ieee80211_txq *txq;
-	struct ath10k_txq *artxq;
-	struct ath10k_txq *last;
+	struct ieee80211_txq *txq, *first = NULL;
 	int ret;
 	int max;
 
 	if (ar->htt.num_pending_tx >= (ar->htt.max_num_pending_tx / 2))
 		return;
 
-	spin_lock_bh(&ar->txqs_lock);
 	rcu_read_lock();
 
-	last = list_last_entry(&ar->txqs, struct ath10k_txq, list);
-	while (!list_empty(&ar->txqs)) {
-		artxq = list_first_entry(&ar->txqs, struct ath10k_txq, list);
-		txq = container_of((void *)artxq, struct ieee80211_txq,
-				   drv_priv);
+	txq = ieee80211_next_txq(hw);
+	while (txq) {
 
 		/* Prevent aggressive sta/tid taking over tx queue */
 		max = 16;
@@ -3995,18 +3981,21 @@ void ath10k_mac_tx_push_pending(struct ath10k *ar)
 				break;
 		}
 
-		list_del_init(&artxq->list);
 		if (ret != -ENOENT)
-			list_add_tail(&artxq->list, &ar->txqs);
+			ieee80211_schedule_txq(hw, txq);
 
 		ath10k_htt_tx_txq_update(hw, txq);
 
-		if (artxq == last || (ret < 0 && ret != -ENOENT))
+		if (first == txq || (ret < 0 && ret != -ENOENT))
 			break;
+
+		if (!first)
+			first = txq;
+
+		txq = ieee80211_next_txq(hw);
 	}
 
 	rcu_read_unlock();
-	spin_unlock_bh(&ar->txqs_lock);
 }
 
 /************/
@@ -4240,34 +4229,22 @@ static void ath10k_mac_op_tx(struct ieee80211_hw *hw,
 	}
 }
 
-static void ath10k_mac_op_wake_tx_queue(struct ieee80211_hw *hw,
-					struct ieee80211_txq *txq)
+static void ath10k_mac_op_wake_tx_queue(struct ieee80211_hw *hw)
 {
-	struct ath10k *ar = hw->priv;
-	struct ath10k_txq *artxq = (void *)txq->drv_priv;
-	struct ieee80211_txq *f_txq;
-	struct ath10k_txq *f_artxq;
+	struct ieee80211_txq *txq;
 	int ret = 0;
 	int max = 16;
 
-	spin_lock_bh(&ar->txqs_lock);
-	if (list_empty(&artxq->list))
-		list_add_tail(&artxq->list, &ar->txqs);
-
-	f_artxq = list_first_entry(&ar->txqs, struct ath10k_txq, list);
-	f_txq = container_of((void *)f_artxq, struct ieee80211_txq, drv_priv);
-	list_del_init(&f_artxq->list);
+	txq = ieee80211_next_txq(hw);
 
-	while (ath10k_mac_tx_can_push(hw, f_txq) && max--) {
-		ret = ath10k_mac_tx_push_txq(hw, f_txq);
+	while (ath10k_mac_tx_can_push(hw, txq) && max--) {
+		ret = ath10k_mac_tx_push_txq(hw, txq);
 		if (ret)
 			break;
 	}
 	if (ret != -ENOENT)
-		list_add_tail(&f_artxq->list, &ar->txqs);
-	spin_unlock_bh(&ar->txqs_lock);
+		ieee80211_schedule_txq(hw, txq);
 
-	ath10k_htt_tx_txq_update(hw, f_txq);
 	ath10k_htt_tx_txq_update(hw, txq);
 }
 
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index cf076719c27e..a5088792b769 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -246,12 +246,8 @@ struct ath_atx_tid {
 	s8 bar_index;
 	bool active;
 	bool clear_ps_filter;
-	bool has_queued;
 };
 
-void __ath_tx_queue_tid(struct ath_softc *sc, struct ath_atx_tid *tid);
-void ath_tx_queue_tid(struct ath_softc *sc, struct ath_atx_tid *tid);
-
 struct ath_node {
 	struct ath_softc *sc;
 	struct ieee80211_sta *sta; /* station struct we're part of */
@@ -591,8 +587,7 @@ bool ath_drain_all_txq(struct ath_softc *sc);
 void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq);
 void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an);
 void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an);
-void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq);
-void ath_txq_schedule_all(struct ath_softc *sc);
+void ath_txq_schedule(struct ath_softc *sc);
 int ath_tx_init(struct ath_softc *sc, int nbufs);
 int ath_txq_update(struct ath_softc *sc, int qnum,
 		   struct ath9k_tx_queue_info *q);
@@ -618,7 +613,7 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw,
 				   u16 tids, int nframes,
 				   enum ieee80211_frame_release_type reason,
 				   bool more_data);
-void ath9k_wake_tx_queue(struct ieee80211_hw *hw, struct ieee80211_txq *queue);
+void ath9k_wake_tx_queue(struct ieee80211_hw *hw);
 
 /********/
 /* VIFs */
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 8b4ac7f0a09b..7c2ba21fd972 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -265,7 +265,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
 		}
 	work:
 		ath_restart_work(sc);
-		ath_txq_schedule_all(sc);
+		ath_txq_schedule(sc);
 	}
 
 	sc->gtt_cnt = 0;
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 2197aee2bb72..a768e841524d 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1057,8 +1057,6 @@ static void ath_rx_count_airtime(struct ath_softc *sc,
  	if (!!(sc->airtime_flags & AIRTIME_USE_RX)) {
 		spin_lock_bh(&acq->lock);
 		an->airtime_deficit[acno] -= airtime;
-		if (an->airtime_deficit[acno] <= 0)
-			__ath_tx_queue_tid(sc, ATH_AN_2_TID(an, tidno));
 		spin_unlock_bh(&acq->lock);
 	}
 	ath_debug_airtime(sc, an, airtime, 0);
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 396bf05c6bf6..bd438062a6db 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -112,62 +112,11 @@ void ath_txq_unlock_complete(struct ath_softc *sc, struct ath_txq *txq)
 		ath_tx_status(hw, skb);
 }
 
-void __ath_tx_queue_tid(struct ath_softc *sc, struct ath_atx_tid *tid)
-{
-	struct ath_vif *avp = (struct ath_vif *) tid->an->vif->drv_priv;
-	struct ath_chanctx *ctx = avp->chanctx;
-	struct ath_acq *acq;
-	struct list_head *tid_list;
-	u8 acno = TID_TO_WME_AC(tid->tidno);
-
-	if (!ctx || !list_empty(&tid->list))
-		return;
-
-
-	acq = &ctx->acq[acno];
-	if ((sc->airtime_flags & AIRTIME_USE_NEW_QUEUES) &&
-	    tid->an->airtime_deficit[acno] > 0)
-		tid_list = &acq->acq_new;
-	else
-		tid_list = &acq->acq_old;
-
-	list_add_tail(&tid->list, tid_list);
-}
-
-void ath_tx_queue_tid(struct ath_softc *sc, struct ath_atx_tid *tid)
-{
-	struct ath_vif *avp = (struct ath_vif *) tid->an->vif->drv_priv;
-	struct ath_chanctx *ctx = avp->chanctx;
-	struct ath_acq *acq;
-
-	if (!ctx || !list_empty(&tid->list))
-		return;
-
-	acq = &ctx->acq[TID_TO_WME_AC(tid->tidno)];
-	spin_lock_bh(&acq->lock);
-	__ath_tx_queue_tid(sc, tid);
-	spin_unlock_bh(&acq->lock);
-}
-
-
-void ath9k_wake_tx_queue(struct ieee80211_hw *hw, struct ieee80211_txq *queue)
+void ath9k_wake_tx_queue(struct ieee80211_hw *hw)
 {
 	struct ath_softc *sc = hw->priv;
-	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-	struct ath_atx_tid *tid = (struct ath_atx_tid *) queue->drv_priv;
-	struct ath_txq *txq = tid->txq;
-
-	ath_dbg(common, QUEUE, "Waking TX queue: %pM (%d)\n",
-		queue->sta ? queue->sta->addr : queue->vif->addr,
-		tid->tidno);
-
-	ath_txq_lock(sc, txq);
 
-	tid->has_queued = true;
-	ath_tx_queue_tid(sc, tid);
-	ath_txq_schedule(sc, txq);
-
-	ath_txq_unlock(sc, txq);
+	ath_txq_schedule(sc);
 }
 
 static struct ath_frame_info *get_frame_info(struct sk_buff *skb)
@@ -230,14 +179,9 @@ ath_tid_pull(struct ath_atx_tid *tid)
 	struct ath_frame_info *fi;
 	int q;
 
-	if (!tid->has_queued)
-		return NULL;
-
 	skb = ieee80211_tx_dequeue(hw, txq);
-	if (!skb) {
-		tid->has_queued = false;
+	if (!skb)
 		return NULL;
-	}
 
 	if (ath_tx_prepare(hw, skb, &txctl)) {
 		ieee80211_free_txskb(hw, skb);
@@ -254,12 +198,6 @@ ath_tid_pull(struct ath_atx_tid *tid)
 	return skb;
  }
 
-
-static bool ath_tid_has_buffered(struct ath_atx_tid *tid)
-{
-	return !skb_queue_empty(&tid->retry_q) || tid->has_queued;
-}
-
 static struct sk_buff *ath_tid_dequeue(struct ath_atx_tid *tid)
 {
 	struct sk_buff *skb;
@@ -671,7 +609,10 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
 
 		skb_queue_splice_tail(&bf_pending, &tid->retry_q);
 		if (!an->sleeping) {
-			ath_tx_queue_tid(sc, tid);
+			struct ieee80211_txq *queue = container_of(
+				(void *)tid, struct ieee80211_txq, drv_priv);
+
+			ieee80211_schedule_txq(sc->hw, queue);
 
 			if (ts->ts_status & (ATH9K_TXERR_FILT | ATH9K_TXERR_XRETRY))
 				tid->clear_ps_filter = true;
@@ -719,8 +660,6 @@ static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_node *an,
 
 		spin_lock_bh(&acq->lock);
 		an->airtime_deficit[q] -= airtime;
-		if (an->airtime_deficit[q] <= 0)
-			__ath_tx_queue_tid(sc, tid);
 		spin_unlock_bh(&acq->lock);
 	}
 	ath_debug_airtime(sc, an, 0, airtime);
@@ -770,8 +709,6 @@ static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,
 	} else
 		ath_tx_complete_aggr(sc, txq, bf, bf_head, sta, tid, ts, txok);
 
-	if (!flush)
-		ath_txq_schedule(sc, txq);
 }
 
 static bool ath_lookup_legacy(struct ath_buf *bf)
@@ -1506,8 +1443,8 @@ ath_tx_form_burst(struct ath_softc *sc, struct ath_txq *txq,
 	} while (1);
 }
 
-static bool ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
-			      struct ath_atx_tid *tid)
+static int ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
+			     struct ath_atx_tid *tid)
 {
 	struct ath_buf *bf;
 	struct ieee80211_tx_info *tx_info;
@@ -1515,21 +1452,18 @@ static bool ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
 	int aggr_len = 0;
 	bool aggr;
 
-	if (!ath_tid_has_buffered(tid))
-		return false;
-
 	INIT_LIST_HEAD(&bf_q);
 
 	bf = ath_tx_get_tid_subframe(sc, txq, tid);
 	if (!bf)
-		return false;
+		return -ENOENT;
 
 	tx_info = IEEE80211_SKB_CB(bf->bf_mpdu);
 	aggr = !!(tx_info->flags & IEEE80211_TX_CTL_AMPDU);
 	if ((aggr && txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) ||
 	    (!aggr && txq->axq_depth >= ATH_NON_AGGR_MIN_QDEPTH)) {
 		__skb_queue_tail(&tid->retry_q, bf->bf_mpdu);
-		return false;
+		return -ENOBUFS;
 	}
 
 	ath_set_rates(tid->an->vif, tid->an->sta, bf);
@@ -1539,7 +1473,7 @@ static bool ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
 		ath_tx_form_burst(sc, txq, tid, &bf_q, bf);
 
 	if (list_empty(&bf_q))
-		return false;
+		return -ENOENT;
 
 	if (tid->clear_ps_filter || tid->an->no_ps_filter) {
 		tid->clear_ps_filter = false;
@@ -1548,7 +1482,7 @@ static bool ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
 
 	ath_tx_fill_desc(sc, bf, txq, aggr_len);
 	ath_tx_txqaddbuf(sc, txq, &bf_q, false);
-	return true;
+	return 0;
 }
 
 int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta,
@@ -1611,52 +1545,49 @@ void ath_tx_aggr_sleep(struct ieee80211_sta *sta, struct ath_softc *sc,
 {
 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
 	struct ath_atx_tid *tid;
-	struct ath_txq *txq;
+	struct ieee80211_txq *queue;
 	int tidno;
 
 	ath_dbg(common, XMIT, "%s called\n", __func__);
 
 	for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) {
 		tid = ath_node_to_tid(an, tidno);
-		txq = tid->txq;
-
-		ath_txq_lock(sc, txq);
-
-		if (list_empty(&tid->list)) {
-			ath_txq_unlock(sc, txq);
-			continue;
-		}
+		queue = container_of((void *)tid,
+				     struct ieee80211_txq, drv_priv);
 
 		if (!skb_queue_empty(&tid->retry_q))
 			ieee80211_sta_set_buffered(sta, tid->tidno, true);
 
-		list_del_init(&tid->list);
-
-		ath_txq_unlock(sc, txq);
 	}
 }
 
 void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an)
 {
 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+	struct ieee80211_txq *queue;
 	struct ath_atx_tid *tid;
 	struct ath_txq *txq;
 	int tidno;
+	bool sched, wake = false;
 
 	ath_dbg(common, XMIT, "%s called\n", __func__);
 
 	for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) {
 		tid = ath_node_to_tid(an, tidno);
 		txq = tid->txq;
+		queue = container_of((void *)tid,
+				     struct ieee80211_txq, drv_priv);
 
 		ath_txq_lock(sc, txq);
 		tid->clear_ps_filter = true;
-		if (ath_tid_has_buffered(tid)) {
-			ath_tx_queue_tid(sc, tid);
-			ath_txq_schedule(sc, txq);
-		}
-		ath_txq_unlock_complete(sc, txq);
+		sched = !skb_queue_empty(&tid->retry_q);
+		ath_txq_unlock(sc, txq);
+
+		if (sched && ieee80211_schedule_txq(sc->hw, queue))
+			wake = true;
 	}
+	if (wake)
+		ath_txq_schedule(sc);
 }
 
 void ath9k_release_buffered_frames(struct ieee80211_hw *hw,
@@ -1948,86 +1879,44 @@ void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq)
 /* For each acq entry, for each tid, try to schedule packets
  * for transmit until ampdu_depth has reached min Q depth.
  */
-void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq)
+void ath_txq_schedule(struct ath_softc *sc)
 {
+	struct ieee80211_hw *hw = sc->hw;
 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+	struct ieee80211_txq *queue;
 	struct ath_atx_tid *tid;
-	struct list_head *tid_list;
-	struct ath_acq *acq;
-	bool active = AIRTIME_ACTIVE(sc->airtime_flags);
+	struct ath_txq *txq;
+	int ret = 0;
 
-	if (txq->mac80211_qnum < 0)
+	if (test_bit(ATH_OP_HW_RESET, &common->op_flags))
 		return;
 
-	if (test_bit(ATH_OP_HW_RESET, &common->op_flags))
+	queue = ieee80211_next_txq(hw);
+	if (!queue)
 		return;
 
-	spin_lock_bh(&sc->chan_lock);
-	rcu_read_lock();
-	acq = &sc->cur_chan->acq[txq->mac80211_qnum];
+	tid = (struct ath_atx_tid *)queue->drv_priv;
+	txq = tid->txq;
 
-	if (sc->cur_chan->stopped)
+	ath_txq_lock(sc, txq);
+	if (txq->mac80211_qnum < 0)
 		goto out;
 
-begin:
-	tid_list = &acq->acq_new;
-	if (list_empty(tid_list)) {
-		tid_list = &acq->acq_old;
-		if (list_empty(tid_list))
-			goto out;
-	}
-	tid = list_first_entry(tid_list, struct ath_atx_tid, list);
-
-	if (active && tid->an->airtime_deficit[txq->mac80211_qnum] <= 0) {
-		spin_lock_bh(&acq->lock);
-		tid->an->airtime_deficit[txq->mac80211_qnum] += ATH_AIRTIME_QUANTUM;
-		list_move_tail(&tid->list, &acq->acq_old);
-		spin_unlock_bh(&acq->lock);
-		goto begin;
-	}
-
-	if (!ath_tid_has_buffered(tid)) {
-		spin_lock_bh(&acq->lock);
-		if ((tid_list == &acq->acq_new) && !list_empty(&acq->acq_old))
-			list_move_tail(&tid->list, &acq->acq_old);
-		else {
-			list_del_init(&tid->list);
-		}
-		spin_unlock_bh(&acq->lock);
-		goto begin;
-	}
-
+	spin_lock_bh(&sc->chan_lock);
+	rcu_read_lock();
 
-	/*
-	 * If we succeed in scheduling something, immediately restart to make
-	 * sure we keep the HW busy.
-	 */
-	if(ath_tx_sched_aggr(sc, txq, tid)) {
-		if (!active) {
-			spin_lock_bh(&acq->lock);
-			list_move_tail(&tid->list, &acq->acq_old);
-			spin_unlock_bh(&acq->lock);
-		}
-		goto begin;
-	}
+	if (!sc->cur_chan->stopped)
+		ret = ath_tx_sched_aggr(sc, txq, tid);
 
-out:
 	rcu_read_unlock();
 	spin_unlock_bh(&sc->chan_lock);
-}
 
-void ath_txq_schedule_all(struct ath_softc *sc)
-{
-	struct ath_txq *txq;
-	int i;
+out:
 
-	for (i = 0; i < IEEE80211_NUM_ACS; i++) {
-		txq = sc->tx.txq_map[i];
+	if (ret != -ENOENT)
+		ieee80211_schedule_txq(hw, queue);
 
-		spin_lock_bh(&txq->axq_lock);
-		ath_txq_schedule(sc, txq);
-		spin_unlock_bh(&txq->axq_lock);
-	}
+	ath_txq_unlock(sc, txq);
 }
 
 /***********/
@@ -2645,7 +2534,6 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
 
 		if (list_empty(&txq->axq_q)) {
 			txq->axq_link = NULL;
-			ath_txq_schedule(sc, txq);
 			break;
 		}
 		bf = list_first_entry(&txq->axq_q, struct ath_buf, list);
@@ -2697,6 +2585,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
 		ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head);
 	}
 	ath_txq_unlock_complete(sc, txq);
+	ath_txq_schedule(sc);
 }
 
 void ath_tx_tasklet(struct ath_softc *sc)
@@ -2711,6 +2600,7 @@ void ath_tx_tasklet(struct ath_softc *sc)
 			ath_tx_processq(sc, &sc->tx.txq[i]);
 	}
 	rcu_read_unlock();
+	ath_txq_schedule(sc);
 }
 
 void ath_tx_edma_tasklet(struct ath_softc *sc)
@@ -2796,6 +2686,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc)
 		ath_txq_unlock_complete(sc, txq);
 	}
 	rcu_read_unlock();
+	ath_txq_schedule(sc);
 }
 
 /*****************/
@@ -2875,7 +2766,6 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an)
 		tid->baw_head  = tid->baw_tail = 0;
 		tid->active	   = false;
 		tid->clear_ps_filter = true;
-		tid->has_queued  = false;
 		__skb_queue_head_init(&tid->retry_q);
 		INIT_LIST_HEAD(&tid->list);
 		acno = TID_TO_WME_AC(tidno);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index cc9073e45be9..715f45501aff 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -105,9 +105,12 @@
  * The driver is expected to initialize its private per-queue data for stations
  * and interfaces in the .add_interface and .sta_add ops.
  *
- * The driver can't access the queue directly. To dequeue a frame, it calls
- * ieee80211_tx_dequeue(). Whenever mac80211 adds a new frame to a queue, it
- * calls the .wake_tx_queue driver op.
+ * The driver can't access the queue directly. To obtain the next queue to pull
+ * frames from, the driver calls ieee80211_next_txq(). To dequeue a frame from a
+ * txq, it calls ieee80211_tx_dequeue(). Whenever mac80211 adds a new frame to a
+ * queue, it calls the .wake_tx_queue driver op. The driver is expected to
+ * re-schedule the txq using ieee80211_schedule_txq() if it is still active
+ * after the driver has finished pulling packets from it.
  *
  * For AP powersave TIM handling, the driver only needs to indicate if it has
  * buffered packets in the driver specific data structures by calling
@@ -3723,8 +3726,7 @@ struct ieee80211_ops {
 					 struct ieee80211_vif *vif,
 					 struct ieee80211_tdls_ch_sw_params *params);
 
-	void (*wake_tx_queue)(struct ieee80211_hw *hw,
-			      struct ieee80211_txq *txq);
+	void (*wake_tx_queue)(struct ieee80211_hw *hw);
 	void (*sync_rx_queues)(struct ieee80211_hw *hw);
 
 	int (*start_nan)(struct ieee80211_hw *hw,
@@ -5869,13 +5871,36 @@ void ieee80211_unreserve_tid(struct ieee80211_sta *sta, u8 tid);
  * ieee80211_tx_dequeue - dequeue a packet from a software tx queue
  *
  * @hw: pointer as obtained from ieee80211_alloc_hw()
- * @txq: pointer obtained from station or virtual interface
+ * @txq: pointer obtained from ieee80211_next_txq()
  *
  * Returns the skb if successful, %NULL if no frame was available.
  */
 struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,
 				     struct ieee80211_txq *txq);
 
+/**
+ * ieee80211_schedule_txq - add txq to scheduling loop
+ *
+ * @hw: pointer as obtained from ieee80211_alloc_hw()
+ * @txq: pointer obtained from station or virtual interface
+ *
+ * Returns %true if the txq was actually added to the scheduling,
+ * %false otherwise.
+ */
+bool ieee80211_schedule_txq(struct ieee80211_hw *hw,
+			    struct ieee80211_txq *txq);
+
+/**
+ * ieee80211_next_txq - get next tx queue to pull packets from
+ *
+ * @hw: pointer as obtained from ieee80211_alloc_hw()
+ *
+ * Returns the next txq if successful, %NULL if no queue is eligible. If a txq
+ * is returned, it will have been removed from the scheduler queue and needs to
+ * be re-scheduled with ieee80211_schedule_txq() to continue to be active.
+ */
+struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw);
+
 /**
  * ieee80211_txq_get_depth - get pending frame/byte count of given txq
  *
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index bef516ec47f9..569b5b5c6d70 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -226,9 +226,13 @@ ieee80211_agg_start_txq(struct sta_info *sta, int tid, bool enable)
 		clear_bit(IEEE80211_TXQ_AMPDU, &txqi->flags);
 
 	clear_bit(IEEE80211_TXQ_STOP, &txqi->flags);
+
+	if (!ieee80211_schedule_txq(&sta->sdata->local->hw, txq))
+		return;
+
 	local_bh_disable();
 	rcu_read_lock();
-	drv_wake_tx_queue(sta->sdata->local, txqi);
+	drv_wake_tx_queue(sta->sdata->local);
 	rcu_read_unlock();
 	local_bh_enable();
 }
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 09f77e4a8a79..e20a9e2acd53 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1157,16 +1157,10 @@ drv_tdls_recv_channel_switch(struct ieee80211_local *local,
 	trace_drv_return_void(local);
 }
 
-static inline void drv_wake_tx_queue(struct ieee80211_local *local,
-				     struct txq_info *txq)
+static inline void drv_wake_tx_queue(struct ieee80211_local *local)
 {
-	struct ieee80211_sub_if_data *sdata = vif_to_sdata(txq->txq.vif);
-
-	if (!check_sdata_in_driver(sdata))
-		return;
-
-	trace_drv_wake_tx_queue(local, sdata, txq);
-	local->ops->wake_tx_queue(&local->hw, &txq->txq);
+	trace_drv_wake_tx_queue(local);
+	local->ops->wake_tx_queue(&local->hw);
 }
 
 static inline int drv_start_nan(struct ieee80211_local *local,
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 9675814f64db..95be548b1d4f 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -832,6 +832,7 @@ struct txq_info {
 	struct codel_vars def_cvars;
 	struct codel_stats cstats;
 	struct sk_buff_head frags;
+	struct list_head schedule_order;
 	unsigned long flags;
 
 	/* keep last! */
@@ -1121,6 +1122,10 @@ struct ieee80211_local {
 	struct codel_vars *cvars;
 	struct codel_params cparams;
 
+	/* protects active_txqs and txqi->schedule_order */
+	spinlock_t active_txq_lock;
+	struct list_head active_txqs;
+
 	const struct ieee80211_ops *ops;
 
 	/*
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 8aa1f5b6a051..9ad0556aa24b 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -616,6 +616,9 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
 	spin_lock_init(&local->rx_path_lock);
 	spin_lock_init(&local->queue_stop_reason_lock);
 
+	INIT_LIST_HEAD(&local->active_txqs);
+	spin_lock_init(&local->active_txq_lock);
+
 	INIT_LIST_HEAD(&local->chanctx_list);
 	mutex_init(&local->chanctx_mtx);
 
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 9673e157bf8f..da3737d4778f 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1246,12 +1246,17 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
 		drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta);
 
 	if (sta->sta.txq[0]) {
+		bool wake = false;
+
 		for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
 			if (!txq_has_queue(sta->sta.txq[i]))
 				continue;
 
-			drv_wake_tx_queue(local, to_txq_info(sta->sta.txq[i]));
+			if (ieee80211_schedule_txq(&local->hw, sta->sta.txq[i]))
+				wake = true;
 		}
+		if (wake)
+			drv_wake_tx_queue(local);
 	}
 
 	skb_queue_head_init(&pending);
diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h
index 3d9ac17af407..f51eade947ee 100644
--- a/net/mac80211/trace.h
+++ b/net/mac80211/trace.h
@@ -2549,35 +2549,9 @@ TRACE_EVENT(drv_tdls_recv_channel_switch,
 	)
 );
 
-TRACE_EVENT(drv_wake_tx_queue,
-	TP_PROTO(struct ieee80211_local *local,
-		 struct ieee80211_sub_if_data *sdata,
-		 struct txq_info *txq),
-
-	TP_ARGS(local, sdata, txq),
-
-	TP_STRUCT__entry(
-		LOCAL_ENTRY
-		VIF_ENTRY
-		STA_ENTRY
-		__field(u8, ac)
-		__field(u8, tid)
-	),
-
-	TP_fast_assign(
-		struct ieee80211_sta *sta = txq->txq.sta;
-
-		LOCAL_ASSIGN;
-		VIF_ASSIGN;
-		STA_ASSIGN;
-		__entry->ac = txq->txq.ac;
-		__entry->tid = txq->txq.tid;
-	),
-
-	TP_printk(
-		LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " ac:%d tid:%d",
-		LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid
-	)
+DEFINE_EVENT(local_only_evt, drv_wake_tx_queue,
+	     TP_PROTO(struct ieee80211_local *local),
+	     TP_ARGS(local)
 );
 
 #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 94826680cf2b..824d87e6d3eb 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1405,6 +1405,7 @@ void ieee80211_txq_init(struct ieee80211_sub_if_data *sdata,
 	codel_vars_init(&txqi->def_cvars);
 	codel_stats_init(&txqi->cstats);
 	__skb_queue_head_init(&txqi->frags);
+	INIT_LIST_HEAD(&txqi->schedule_order);
 
 	txqi->txq.vif = &sdata->vif;
 
@@ -1428,6 +1429,7 @@ void ieee80211_txq_purge(struct ieee80211_local *local,
 
 	fq_tin_reset(fq, tin, fq_skb_free_func);
 	ieee80211_purge_tx_queue(&local->hw, &txqi->frags);
+	list_del_init(&txqi->schedule_order);
 }
 
 int ieee80211_txq_setup_flows(struct ieee80211_local *local)
@@ -1524,7 +1526,8 @@ static bool ieee80211_queue_skb(struct ieee80211_local *local,
 	ieee80211_txq_enqueue(local, txqi, skb);
 	spin_unlock_bh(&fq->lock);
 
-	drv_wake_tx_queue(local, txqi);
+	if (ieee80211_schedule_txq(&local->hw, &txqi->txq))
+		drv_wake_tx_queue(local);
 
 	return true;
 }
@@ -3517,6 +3520,50 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,
 }
 EXPORT_SYMBOL(ieee80211_tx_dequeue);
 
+bool ieee80211_schedule_txq(struct ieee80211_hw *hw,
+			    struct ieee80211_txq *txq)
+{
+	struct ieee80211_local *local = hw_to_local(hw);
+	struct txq_info *txqi = to_txq_info(txq);
+	bool ret = false;
+
+	spin_lock_bh(&local->active_txq_lock);
+
+	if (list_empty(&txqi->schedule_order)) {
+		list_add_tail(&txqi->schedule_order, &local->active_txqs);
+		ret = true;
+	}
+
+	spin_unlock_bh(&local->active_txq_lock);
+
+	return ret;
+}
+EXPORT_SYMBOL(ieee80211_schedule_txq);
+
+struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw)
+{
+	struct ieee80211_local *local = hw_to_local(hw);
+	struct txq_info *txqi = NULL;
+
+	spin_lock_bh(&local->active_txq_lock);
+
+	if (list_empty(&local->active_txqs))
+		goto out;
+
+	txqi = list_first_entry(&local->active_txqs,
+				struct txq_info, schedule_order);
+	list_del_init(&txqi->schedule_order);
+
+out:
+	spin_unlock_bh(&local->active_txq_lock);
+
+	if (!txqi)
+		return NULL;
+
+	return &txqi->txq;
+}
+EXPORT_SYMBOL(ieee80211_next_txq);
+
 void __ieee80211_subif_start_xmit(struct sk_buff *skb,
 				  struct net_device *dev,
 				  u32 info_flags)
-- 
2.14.3

^ permalink raw reply related

* [PATCH v3 3/3] ath9k: Switch to mac80211 airtime API
From: Toke Høiland-Jørgensen @ 2017-10-31 11:27 UTC (permalink / raw)
  To: make-wifi-fast, linux-wireless; +Cc: Toke Høiland-Jørgensen
In-Reply-To: <20171027141451.22768-1-toke@toke.dk>

This removes the in-driver airtime fairness scheduling from ath9k and
switches the driver to use the API introduced in mac80211 in the
previous commit.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
---
 drivers/net/wireless/ath/ath9k/ath9k.h     |  7 +---
 drivers/net/wireless/ath/ath9k/debug.h     |  8 -----
 drivers/net/wireless/ath/ath9k/debug_sta.c | 54 ------------------------------
 drivers/net/wireless/ath/ath9k/init.c      |  4 +--
 drivers/net/wireless/ath/ath9k/recv.c      |  9 ++---
 drivers/net/wireless/ath/ath9k/xmit.c      | 21 ++++--------
 6 files changed, 12 insertions(+), 91 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index a5088792b769..7c7dece6cb91 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -112,8 +112,6 @@ int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd,
 #define ATH_TXFIFO_DEPTH           8
 #define ATH_TX_ERROR               0x01
 
-#define ATH_AIRTIME_QUANTUM        300 /* usec */
-
 /* Stop tx traffic 1ms before the GO goes away */
 #define ATH_P2P_PS_STOP_TIME       1000
 
@@ -215,6 +213,7 @@ struct ath_buf_state {
 	bool stale;
 	u16 seqno;
 	unsigned long bfs_paprd_timestamp;
+	u32 airtime;
 };
 
 struct ath_buf {
@@ -259,12 +258,9 @@ struct ath_node {
 
 	bool sleeping;
 	bool no_ps_filter;
-	s64 airtime_deficit[IEEE80211_NUM_ACS];
-	u32 airtime_rx_start;
 
 #ifdef CONFIG_ATH9K_STATION_STATISTICS
 	struct ath_rx_rate_stats rx_rate_stats;
-	struct ath_airtime_stats airtime_stats;
 #endif
 	u8 key_idx[4];
 
@@ -983,7 +979,6 @@ void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs);
 
 #define AIRTIME_USE_TX		BIT(0)
 #define AIRTIME_USE_RX		BIT(1)
-#define AIRTIME_USE_NEW_QUEUES	BIT(2)
 #define AIRTIME_ACTIVE(flags) (!!(flags & (AIRTIME_USE_TX|AIRTIME_USE_RX)))
 
 struct ath_softc {
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index 249f8141cd00..559d9628f280 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -319,20 +319,12 @@ ath9k_debug_sync_cause(struct ath_softc *sc, u32 sync_cause)
 void ath_debug_rate_stats(struct ath_softc *sc,
 			  struct ath_rx_status *rs,
 			  struct sk_buff *skb);
-void ath_debug_airtime(struct ath_softc *sc,
-		       struct ath_node *an,
-		       u32 rx, u32 tx);
 #else
 static inline void ath_debug_rate_stats(struct ath_softc *sc,
 					struct ath_rx_status *rs,
 					struct sk_buff *skb)
 {
 }
-static inline void ath_debug_airtime(struct ath_softc *sc,
-			      struct ath_node *an,
-			      u32 rx, u32 tx)
-{
-}
 #endif /* CONFIG_ATH9K_STATION_STATISTICS */
 
 #endif /* DEBUG_H */
diff --git a/drivers/net/wireless/ath/ath9k/debug_sta.c b/drivers/net/wireless/ath/ath9k/debug_sta.c
index efc692ee67d4..89ba95287a8b 100644
--- a/drivers/net/wireless/ath/ath9k/debug_sta.c
+++ b/drivers/net/wireless/ath/ath9k/debug_sta.c
@@ -242,59 +242,6 @@ static const struct file_operations fops_node_recv = {
 	.llseek = default_llseek,
 };
 
-void ath_debug_airtime(struct ath_softc *sc,
-		struct ath_node *an,
-		u32 rx,
-		u32 tx)
-{
-	struct ath_airtime_stats *astats = &an->airtime_stats;
-
-	astats->rx_airtime += rx;
-	astats->tx_airtime += tx;
-}
-
-static ssize_t read_airtime(struct file *file, char __user *user_buf,
-			size_t count, loff_t *ppos)
-{
-	struct ath_node *an = file->private_data;
-	struct ath_airtime_stats *astats;
-	static const char *qname[4] = {
-		"VO", "VI", "BE", "BK"
-	};
-	u32 len = 0, size = 256;
-	char *buf;
-	size_t retval;
-	int i;
-
-	buf = kzalloc(size, GFP_KERNEL);
-	if (buf == NULL)
-		return -ENOMEM;
-
-	astats = &an->airtime_stats;
-
-	len += scnprintf(buf + len, size - len, "RX: %u us\n", astats->rx_airtime);
-	len += scnprintf(buf + len, size - len, "TX: %u us\n", astats->tx_airtime);
-	len += scnprintf(buf + len, size - len, "Deficit: ");
-	for (i = 0; i < 4; i++)
-		len += scnprintf(buf+len, size - len, "%s: %lld us ", qname[i], an->airtime_deficit[i]);
-	if (len < size)
-		buf[len++] = '\n';
-
-	retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
-	kfree(buf);
-
-	return retval;
-}
-
-
-static const struct file_operations fops_airtime = {
-	.read = read_airtime,
-	.open = simple_open,
-	.owner = THIS_MODULE,
-	.llseek = default_llseek,
-};
-
-
 void ath9k_sta_add_debugfs(struct ieee80211_hw *hw,
 			   struct ieee80211_vif *vif,
 			   struct ieee80211_sta *sta,
@@ -304,5 +251,4 @@ void ath9k_sta_add_debugfs(struct ieee80211_hw *hw,
 
 	debugfs_create_file("node_aggr", S_IRUGO, dir, an, &fops_node_aggr);
 	debugfs_create_file("node_recv", S_IRUGO, dir, an, &fops_node_recv);
-	debugfs_create_file("airtime", S_IRUGO, dir, an, &fops_airtime);
 }
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index bb7936090b91..b4c6fc49b19e 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -620,8 +620,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
 
 	/* Will be cleared in ath9k_start() */
 	set_bit(ATH_OP_INVALID, &common->op_flags);
-	sc->airtime_flags = (AIRTIME_USE_TX | AIRTIME_USE_RX |
-			     AIRTIME_USE_NEW_QUEUES);
+	sc->airtime_flags = (AIRTIME_USE_TX | AIRTIME_USE_RX);
 
 	sc->sc_ah = ah;
 	sc->dfs_detector = dfs_pattern_detector_init(common, NL80211_DFS_UNSET);
@@ -873,6 +872,7 @@ static void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
 	ieee80211_hw_set(hw, HOST_BROADCAST_PS_BUFFERING);
 	ieee80211_hw_set(hw, SUPPORT_FAST_XMIT);
 	ieee80211_hw_set(hw, SUPPORTS_CLONED_SKBS);
+	ieee80211_hw_set(hw, AIRTIME_ACCOUNTING);
 
 	if (ath9k_ps_enable)
 		ieee80211_hw_set(hw, SUPPORTS_PS);
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index a768e841524d..69a4ba5d4013 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1054,12 +1054,9 @@ static void ath_rx_count_airtime(struct ath_softc *sc,
 						len, rxs->rate_idx, is_sp);
 	}
 
- 	if (!!(sc->airtime_flags & AIRTIME_USE_RX)) {
-		spin_lock_bh(&acq->lock);
-		an->airtime_deficit[acno] -= airtime;
-		spin_unlock_bh(&acq->lock);
-	}
-	ath_debug_airtime(sc, an, airtime, 0);
+	if (!!(sc->airtime_flags & AIRTIME_USE_RX))
+		rxs->airtime = airtime;
+
 exit:
 	rcu_read_unlock();
 }
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index bd438062a6db..5ffd44a4b3de 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -640,11 +640,9 @@ static bool bf_is_ampdu_not_probing(struct ath_buf *bf)
     return bf_isampdu(bf) && !(info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE);
 }
 
-static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_node *an,
-				 struct ath_atx_tid *tid, struct ath_buf *bf,
+static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_buf *bf,
 				 struct ath_tx_status *ts)
 {
-	struct ath_txq *txq = tid->txq;
 	u32 airtime = 0;
 	int i;
 
@@ -654,15 +652,9 @@ static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_node *an,
 		airtime += rate_dur * bf->rates[i].count;
 	}
 
-	if (sc->airtime_flags & AIRTIME_USE_TX) {
-		int q = txq->mac80211_qnum;
-		struct ath_acq *acq = &sc->cur_chan->acq[q];
+	if (sc->airtime_flags & AIRTIME_USE_TX)
+		bf->bf_state.airtime = airtime;
 
-		spin_lock_bh(&acq->lock);
-		an->airtime_deficit[q] -= airtime;
-		spin_unlock_bh(&acq->lock);
-	}
-	ath_debug_airtime(sc, an, 0, airtime);
 }
 
 static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,
@@ -692,7 +684,7 @@ static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,
 	if (sta) {
 		struct ath_node *an = (struct ath_node *)sta->drv_priv;
 		tid = ath_get_skb_tid(sc, an, bf->bf_mpdu);
-		ath_tx_count_airtime(sc, an, tid, bf, ts);
+		ath_tx_count_airtime(sc, bf, ts);
 		if (ts->ts_status & (ATH9K_TXERR_FILT | ATH9K_TXERR_XRETRY))
 			tid->clear_ps_filter = true;
 	}
@@ -2428,6 +2420,8 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
 	if (ts->ts_status & ATH9K_TXERR_FILT)
 		tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
 
+	tx_info->status.tx_time = min_t(u32, 0xffff, bf->bf_state.airtime);
+
 	dma_unmap_single(sc->dev, bf->bf_buf_addr, skb->len, DMA_TO_DEVICE);
 	bf->bf_buf_addr = 0;
 	if (sc->tx99_state)
@@ -2754,9 +2748,6 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an)
 	struct ath_atx_tid *tid;
 	int tidno, acno;
 
-	for (acno = 0; acno < IEEE80211_NUM_ACS; acno++)
-		an->airtime_deficit[acno] = ATH_AIRTIME_QUANTUM;
-
 	for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) {
 		tid = ath_node_to_tid(an, tidno);
 		tid->an        = an;
-- 
2.14.3

^ permalink raw reply related

* [PATCH 3/3] mwifiex: cleanup rx_reorder_tbl_lock usage
From: Ganapathi Bhat @ 2017-10-31  9:42 UTC (permalink / raw)
  To: linux-wireless
  Cc: Brian Norris, Cathy Luo, Xinming Hu, Zhiyuan Yang, James Cao,
	Mangesh Malusare, Douglas Anderson, Karthik Ananthapadmanabha,
	Ganapathi Bhat
In-Reply-To: <1509442967-14149-1-git-send-email-gbhat@marvell.com>

From: Karthik Ananthapadmanabha <karthida@marvell.com>

Fix the incorrect usage of rx_reorder_tbl_lock spinlock:

1. We shouldn't access the fields of the elements returned by
mwifiex_11n_get_rx_reorder_tbl() after we have released spin
lock. To fix this, To fix this, aquire the spinlock before
calling this function and release the lock only after processing
the corresponding element is complete.

2. Realsing the spinlock during iteration of the list and holding
it back before next iteration is unsafe. Fix it by releasing the
lock only after iteration of the list is complete.

Signed-off-by: Karthik Ananthapadmanabha <karthida@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
---
 .../net/wireless/marvell/mwifiex/11n_rxreorder.c   | 34 +++++++++++++++++-----
 drivers/net/wireless/marvell/mwifiex/uap_txrx.c    |  3 ++
 2 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
index 4631bc2..b99ace8 100644
--- a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
+++ b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
@@ -234,23 +234,19 @@ static int mwifiex_11n_dispatch_pkt(struct mwifiex_private *priv, void *payload)
 
 /*
  * This function returns the pointer to an entry in Rx reordering
- * table which matches the given TA/TID pair.
+ * table which matches the given TA/TID pair. The caller must
+ * hold rx_reorder_tbl_lock, before calling this function.
  */
 struct mwifiex_rx_reorder_tbl *
 mwifiex_11n_get_rx_reorder_tbl(struct mwifiex_private *priv, int tid, u8 *ta)
 {
 	struct mwifiex_rx_reorder_tbl *tbl;
-	unsigned long flags;
 
-	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	list_for_each_entry(tbl, &priv->rx_reorder_tbl_ptr, list) {
 		if (!memcmp(tbl->ta, ta, ETH_ALEN) && tbl->tid == tid) {
-			spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock,
-					       flags);
 			return tbl;
 		}
 	}
-	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 
 	return NULL;
 }
@@ -355,11 +351,14 @@ void mwifiex_11n_del_rx_reorder_tbl_by_ta(struct mwifiex_private *priv, u8 *ta)
 	 * If we get a TID, ta pair which is already present dispatch all the
 	 * the packets and move the window size until the ssn
 	 */
+	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta);
 	if (tbl) {
 		mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, seq_num);
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		return;
 	}
+	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 	/* if !tbl then create one */
 	new_node = kzalloc(sizeof(struct mwifiex_rx_reorder_tbl), GFP_KERNEL);
 	if (!new_node)
@@ -571,15 +570,19 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 	u16 pkt_index;
 	bool init_window_shift = false;
 	int ret = 0;
+	unsigned long flags;
 
+	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta);
 	if (!tbl) {
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		if (pkt_type != PKT_TYPE_BAR)
 			mwifiex_11n_dispatch_pkt(priv, payload);
 		return ret;
 	}
 
 	if ((pkt_type == PKT_TYPE_AMSDU) && !tbl->amsdu) {
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		mwifiex_11n_dispatch_pkt(priv, payload);
 		return ret;
 	}
@@ -666,6 +669,8 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 	if (!tbl->timer_context.timer_is_set ||
 	    prev_start_win != tbl->start_win)
 		mwifiex_11n_rxreorder_timer_restart(tbl);
+
+	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 	return ret;
 }
 
@@ -683,6 +688,7 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 	struct mwifiex_ra_list_tbl *ra_list;
 	u8 cleanup_rx_reorder_tbl;
 	int tid_down;
+	unsigned long flags;
 
 	if (type == TYPE_DELBA_RECEIVE)
 		cleanup_rx_reorder_tbl = (initiator) ? true : false;
@@ -693,14 +699,18 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 		    peer_mac, tid, initiator);
 
 	if (cleanup_rx_reorder_tbl) {
+		spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 		tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid,
 								 peer_mac);
 		if (!tbl) {
+			spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock,
+					       flags);
 			mwifiex_dbg(priv->adapter, EVENT,
 				    "event: TID, TA not found in table\n");
 			return;
 		}
 		mwifiex_del_rx_reorder_entry(priv, tbl);
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 	} else {
 		ptx_tbl = mwifiex_get_ba_tbl(priv, tid, peer_mac);
 		if (!ptx_tbl) {
@@ -732,6 +742,7 @@ int mwifiex_ret_11n_addba_resp(struct mwifiex_private *priv,
 	int tid, win_size;
 	struct mwifiex_rx_reorder_tbl *tbl;
 	uint16_t block_ack_param_set;
+	unsigned long flags;
 
 	block_ack_param_set = le16_to_cpu(add_ba_rsp->block_ack_param_set);
 
@@ -745,17 +756,20 @@ int mwifiex_ret_11n_addba_resp(struct mwifiex_private *priv,
 		mwifiex_dbg(priv->adapter, ERROR, "ADDBA RSP: failed %pM tid=%d)\n",
 			    add_ba_rsp->peer_mac_addr, tid);
 
+		spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 		tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid,
 						     add_ba_rsp->peer_mac_addr);
 		if (tbl)
 			mwifiex_del_rx_reorder_entry(priv, tbl);
 
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		return 0;
 	}
 
 	win_size = (block_ack_param_set & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK)
 		    >> BLOCKACKPARAM_WINSIZE_POS;
 
+	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid,
 					     add_ba_rsp->peer_mac_addr);
 	if (tbl) {
@@ -766,6 +780,7 @@ int mwifiex_ret_11n_addba_resp(struct mwifiex_private *priv,
 		else
 			tbl->amsdu = false;
 	}
+	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 
 	mwifiex_dbg(priv->adapter, CMD,
 		    "cmd: ADDBA RSP: %pM tid=%d ssn=%d win_size=%d\n",
@@ -806,9 +821,7 @@ void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv)
 	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	list_for_each_entry_safe(del_tbl_ptr, tmp_node,
 				 &priv->rx_reorder_tbl_ptr, list) {
-		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		mwifiex_del_rx_reorder_entry(priv, del_tbl_ptr);
-		spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	}
 	INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr);
 	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
@@ -933,6 +946,7 @@ void mwifiex_11n_rxba_sync_event(struct mwifiex_private *priv,
 	int tlv_buf_left = len;
 	int ret;
 	u8 *tmp;
+	unsigned long flags;
 
 	mwifiex_dbg_dump(priv->adapter, EVT_D, "RXBA_SYNC event:",
 			 event_buf, len);
@@ -952,14 +966,18 @@ void mwifiex_11n_rxba_sync_event(struct mwifiex_private *priv,
 			    tlv_rxba->mac, tlv_rxba->tid, tlv_seq_num,
 			    tlv_bitmap_len);
 
+		spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 		rx_reor_tbl_ptr =
 			mwifiex_11n_get_rx_reorder_tbl(priv, tlv_rxba->tid,
 						       tlv_rxba->mac);
 		if (!rx_reor_tbl_ptr) {
+			spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock,
+					       flags);
 			mwifiex_dbg(priv->adapter, ERROR,
 				    "Can not find rx_reorder_tbl!");
 			return;
 		}
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 
 		for (i = 0; i < tlv_bitmap_len; i++) {
 			for (j = 0 ; j < 8; j++) {
diff --git a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
index 1e6a62c..21dc14f 100644
--- a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
+++ b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
@@ -421,12 +421,15 @@ int mwifiex_process_uap_rx_packet(struct mwifiex_private *priv,
 		spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
 	}
 
+	spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
 	if (!priv->ap_11n_enabled ||
 	    (!mwifiex_11n_get_rx_reorder_tbl(priv, uap_rx_pd->priority, ta) &&
 	    (le16_to_cpu(uap_rx_pd->rx_pkt_type) != PKT_TYPE_AMSDU))) {
+		spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 		ret = mwifiex_handle_uap_rx_forward(priv, skb);
 		return ret;
 	}
+	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 
 	/* Reorder and send to kernel */
 	pkt_type = (u8)le16_to_cpu(uap_rx_pd->rx_pkt_type);
-- 
1.9.1

^ permalink raw reply related

* [PATCH 2/3] mwifiex: cleanup tx_ba_stream_tbl_lock usage
From: Ganapathi Bhat @ 2017-10-31  9:42 UTC (permalink / raw)
  To: linux-wireless
  Cc: Brian Norris, Cathy Luo, Xinming Hu, Zhiyuan Yang, James Cao,
	Mangesh Malusare, Douglas Anderson, Karthik Ananthapadmanabha,
	Ganapathi Bhat
In-Reply-To: <1509442967-14149-1-git-send-email-gbhat@marvell.com>

From: Karthik Ananthapadmanabha <karthida@marvell.com>

Fix the incorrect usage of tx_ba_stream_tbl_lock spinlock:

1. We shouldn't access the fields of the elements returned by
mwifiex_get_ba_status() and mwifiex_get_ba_tbl(), after we have
released the spin lock. To fix this, aquire the spinlock before
calling these functions and release the lock only after
processing the correspnding element is complete.

2. Move tx_ba_stream_tbl_lock out of mwifiex_del_ba_tbl(), to
avoid recursive spinlock. Acquire the spinlock explicitly, before
calling mwifiex_del_ba_tbl().

Signed-off-by: Karthik Ananthapadmanabha <karthida@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
---
 drivers/net/wireless/marvell/mwifiex/11n.c         | 45 +++++++++++++---------
 .../net/wireless/marvell/mwifiex/11n_rxreorder.c   |  3 --
 2 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/11n.c b/drivers/net/wireless/marvell/mwifiex/11n.c
index 8772e39..38d7b48 100644
--- a/drivers/net/wireless/marvell/mwifiex/11n.c
+++ b/drivers/net/wireless/marvell/mwifiex/11n.c
@@ -77,24 +77,19 @@ int mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
 
 /*
  * This function returns the pointer to an entry in BA Stream
- * table which matches the requested BA status.
+ * table which matches the requested BA status. The caller
+ * must hold tx_ba_stream_tbl_lock before calling this function.
  */
 static struct mwifiex_tx_ba_stream_tbl *
 mwifiex_get_ba_status(struct mwifiex_private *priv,
 		      enum mwifiex_ba_status ba_status)
 {
 	struct mwifiex_tx_ba_stream_tbl *tx_ba_tsr_tbl;
-	unsigned long flags;
 
-	spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 	list_for_each_entry(tx_ba_tsr_tbl, &priv->tx_ba_stream_tbl_ptr, list) {
-		if (tx_ba_tsr_tbl->ba_status == ba_status) {
-			spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock,
-					       flags);
+		if (tx_ba_tsr_tbl->ba_status == ba_status)
 			return tx_ba_tsr_tbl;
-		}
 	}
-	spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 	return NULL;
 }
 
@@ -114,9 +109,11 @@ int mwifiex_ret_11n_delba(struct mwifiex_private *priv,
 	struct mwifiex_tx_ba_stream_tbl *tx_ba_tbl;
 	struct host_cmd_ds_11n_delba *del_ba = &resp->params.del_ba;
 	uint16_t del_ba_param_set = le16_to_cpu(del_ba->del_ba_param_set);
+	unsigned long flags;
 
 	tid = del_ba_param_set >> DELBA_TID_POS;
 	if (del_ba->del_result == BA_RESULT_SUCCESS) {
+		spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 		mwifiex_del_ba_tbl(priv, tid, del_ba->peer_mac_addr,
 				   TYPE_DELBA_SENT,
 				   INITIATOR_BIT(del_ba_param_set));
@@ -125,6 +122,7 @@ int mwifiex_ret_11n_delba(struct mwifiex_private *priv,
 		if (tx_ba_tbl)
 			mwifiex_send_addba(priv, tx_ba_tbl->tid,
 					   tx_ba_tbl->ra);
+		spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 	} else { /*
 		  * In case of failure, recreate the deleted stream in case
 		  * we initiated the ADDBA
@@ -135,11 +133,13 @@ int mwifiex_ret_11n_delba(struct mwifiex_private *priv,
 		mwifiex_create_ba_tbl(priv, del_ba->peer_mac_addr, tid,
 				      BA_SETUP_INPROGRESS);
 
+		spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 		tx_ba_tbl = mwifiex_get_ba_status(priv, BA_SETUP_INPROGRESS);
 
 		if (tx_ba_tbl)
 			mwifiex_del_ba_tbl(priv, tx_ba_tbl->tid, tx_ba_tbl->ra,
 					   TYPE_DELBA_SENT, true);
+		spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 	}
 
 	return 0;
@@ -160,6 +160,7 @@ int mwifiex_ret_11n_addba_req(struct mwifiex_private *priv,
 	struct host_cmd_ds_11n_addba_rsp *add_ba_rsp = &resp->params.add_ba_rsp;
 	struct mwifiex_tx_ba_stream_tbl *tx_ba_tbl;
 	struct mwifiex_ra_list_tbl *ra_list;
+	unsigned long flags;
 	u16 block_ack_param_set = le16_to_cpu(add_ba_rsp->block_ack_param_set);
 
 	add_ba_rsp->ssn = cpu_to_le16((le16_to_cpu(add_ba_rsp->ssn))
@@ -176,14 +177,17 @@ int mwifiex_ret_11n_addba_req(struct mwifiex_private *priv,
 			ra_list->ba_status = BA_SETUP_NONE;
 			ra_list->amsdu_in_ampdu = false;
 		}
+		spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 		mwifiex_del_ba_tbl(priv, tid, add_ba_rsp->peer_mac_addr,
 				   TYPE_DELBA_SENT, true);
+		spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 		if (add_ba_rsp->add_rsp_result != BA_RESULT_TIMEOUT)
 			priv->aggr_prio_tbl[tid].ampdu_ap =
 				BA_STREAM_NOT_ALLOWED;
 		return 0;
 	}
 
+	spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 	tx_ba_tbl = mwifiex_get_ba_tbl(priv, tid, add_ba_rsp->peer_mac_addr);
 	if (tx_ba_tbl) {
 		mwifiex_dbg(priv->adapter, EVENT, "info: BA stream complete\n");
@@ -201,6 +205,7 @@ int mwifiex_ret_11n_addba_req(struct mwifiex_private *priv,
 	} else {
 		mwifiex_dbg(priv->adapter, ERROR, "BA stream not created\n");
 	}
+	spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 
 	return 0;
 }
@@ -501,24 +506,20 @@ void mwifiex_11n_delete_all_tx_ba_stream_tbl(struct mwifiex_private *priv)
 
 /*
  * This function returns the pointer to an entry in BA Stream
- * table which matches the given RA/TID pair.
+ * table which matches the given RA/TID pair. The caller must
+ * hold tx_ba_stream_tbl_lock before calling this function.
  */
 struct mwifiex_tx_ba_stream_tbl *
 mwifiex_get_ba_tbl(struct mwifiex_private *priv, int tid, u8 *ra)
 {
 	struct mwifiex_tx_ba_stream_tbl *tx_ba_tsr_tbl;
-	unsigned long flags;
 
-	spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 	list_for_each_entry(tx_ba_tsr_tbl, &priv->tx_ba_stream_tbl_ptr, list) {
 		if (ether_addr_equal_unaligned(tx_ba_tsr_tbl->ra, ra) &&
-		    tx_ba_tsr_tbl->tid == tid) {
-			spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock,
-					       flags);
+		    tx_ba_tsr_tbl->tid == tid)
 			return tx_ba_tsr_tbl;
-		}
 	}
-	spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
+
 	return NULL;
 }
 
@@ -534,11 +535,15 @@ void mwifiex_create_ba_tbl(struct mwifiex_private *priv, u8 *ra, int tid,
 	unsigned long flags;
 	int tid_down;
 
+	spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 	if (!mwifiex_get_ba_tbl(priv, tid, ra)) {
 		new_node = kzalloc(sizeof(struct mwifiex_tx_ba_stream_tbl),
 				   GFP_ATOMIC);
-		if (!new_node)
+		if (!new_node) {
+			spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock,
+					       flags);
 			return;
+		}
 
 		tid_down = mwifiex_wmm_downgrade_tid(priv, tid);
 		ra_list = mwifiex_wmm_get_ralist_node(priv, tid_down, ra);
@@ -552,10 +557,9 @@ void mwifiex_create_ba_tbl(struct mwifiex_private *priv, u8 *ra, int tid,
 		new_node->ba_status = ba_status;
 		memcpy(new_node->ra, ra, ETH_ALEN);
 
-		spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 		list_add_tail(&new_node->list, &priv->tx_ba_stream_tbl_ptr);
-		spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 	}
+	spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 }
 
 /*
@@ -680,11 +684,14 @@ void mwifiex_11n_delete_ba_stream(struct mwifiex_private *priv, u8 *del_ba)
 		(struct host_cmd_ds_11n_delba *) del_ba;
 	uint16_t del_ba_param_set = le16_to_cpu(cmd_del_ba->del_ba_param_set);
 	int tid;
+	unsigned long flags;
 
 	tid = del_ba_param_set >> DELBA_TID_POS;
 
+	spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 	mwifiex_del_ba_tbl(priv, tid, cmd_del_ba->peer_mac_addr,
 			   TYPE_DELBA_RECEIVE, INITIATOR_BIT(del_ba_param_set));
+	spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 }
 
 /*
diff --git a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
index 0149c4a..4631bc2 100644
--- a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
+++ b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
@@ -682,7 +682,6 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 	struct mwifiex_tx_ba_stream_tbl *ptx_tbl;
 	struct mwifiex_ra_list_tbl *ra_list;
 	u8 cleanup_rx_reorder_tbl;
-	unsigned long flags;
 	int tid_down;
 
 	if (type == TYPE_DELBA_RECEIVE)
@@ -716,9 +715,7 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
 			ra_list->amsdu_in_ampdu = false;
 			ra_list->ba_status = BA_SETUP_NONE;
 		}
-		spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
 		mwifiex_11n_delete_tx_ba_stream_tbl_entry(priv, ptx_tbl);
-		spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags);
 	}
 }
 
-- 
1.9.1

^ permalink raw reply related

* [PATCH 1/3] mwifiex: cleanup rx_pkt_lock usage in 11n_rxreorder.c
From: Ganapathi Bhat @ 2017-10-31  9:42 UTC (permalink / raw)
  To: linux-wireless
  Cc: Brian Norris, Cathy Luo, Xinming Hu, Zhiyuan Yang, James Cao,
	Mangesh Malusare, Douglas Anderson, Karthik Ananthapadmanabha,
	Ganapathi Bhat
In-Reply-To: <1509442967-14149-1-git-send-email-gbhat@marvell.com>

From: Karthik Ananthapadmanabha <karthida@marvell.com>

Fix the incorrect usage of rx_pkt_lock spinlock. Realsing the
spinlock while the element is still in process is unsafe. The
lock must be released only after the element processing is
complete.

Signed-off-by: Karthik Ananthapadmanabha <karthida@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
---
 drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
index 1edcdda..0149c4a 100644
--- a/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
+++ b/drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c
@@ -124,9 +124,10 @@ static int mwifiex_11n_dispatch_pkt(struct mwifiex_private *priv, void *payload)
 			rx_tmp_ptr = tbl->rx_reorder_ptr[i];
 			tbl->rx_reorder_ptr[i] = NULL;
 		}
-		spin_unlock_irqrestore(&priv->rx_pkt_lock, flags);
 		if (rx_tmp_ptr)
 			mwifiex_11n_dispatch_pkt(priv, rx_tmp_ptr);
+
+		spin_unlock_irqrestore(&priv->rx_pkt_lock, flags);
 	}
 
 	spin_lock_irqsave(&priv->rx_pkt_lock, flags);
@@ -167,8 +168,8 @@ static int mwifiex_11n_dispatch_pkt(struct mwifiex_private *priv, void *payload)
 		}
 		rx_tmp_ptr = tbl->rx_reorder_ptr[i];
 		tbl->rx_reorder_ptr[i] = NULL;
-		spin_unlock_irqrestore(&priv->rx_pkt_lock, flags);
 		mwifiex_11n_dispatch_pkt(priv, rx_tmp_ptr);
+		spin_unlock_irqrestore(&priv->rx_pkt_lock, flags);
 	}
 
 	spin_lock_irqsave(&priv->rx_pkt_lock, flags);
-- 
1.9.1

^ permalink raw reply related

* [PATCH 0/3] mwifiex: fix usage issues with spinlocks
From: Ganapathi Bhat @ 2017-10-31  9:42 UTC (permalink / raw)
  To: linux-wireless
  Cc: Brian Norris, Cathy Luo, Xinming Hu, Zhiyuan Yang, James Cao,
	Mangesh Malusare, Douglas Anderson, Ganapathi Bhat

This patch series fixes issues with usage of few of the spinlocks
used by the driver. To summarise it fixes below issues:

1. Driver does access the elements returned by the list, without
acquiring the lock.

2. Driver release the lock during iteration of the list and hold
it back before starting the next iteration.

3. Driver release the lock while the element is still in process.

Karthik Ananthapadmanabha (3):
  mwifiex: cleanup rx_pkt_lock usage in 11n_rxreorder.c
  mwifiex: cleanup tx_ba_stream_tbl_lock usage
  mwifiex: cleanup rx_reorder_tbl_lock usage

 drivers/net/wireless/marvell/mwifiex/11n.c         | 45 +++++++++++++---------
 .../net/wireless/marvell/mwifiex/11n_rxreorder.c   | 42 +++++++++++++-------
 drivers/net/wireless/marvell/mwifiex/uap_txrx.c    |  3 ++
 3 files changed, 58 insertions(+), 32 deletions(-)

-- 
1.9.1

^ permalink raw reply

* Re: PROBLEM: Issue with wireless driver after resume from suspend.
From: Kalle Valo @ 2017-10-31  8:31 UTC (permalink / raw)
  To: Luca Coelho; +Cc: Anil Nair, linux-wireless, ath10k
In-Reply-To: <1509434604.4492.192.camel@coelho.fi>

Luca Coelho <luca@coelho.fi> writes:

>> I am having a issue with the wireless driver in my laptop. Attached
>> information
>> pertaining to the issue.
>
> It would be useful to specify which wireless card you are using.  In
> this case, the problem seems to be with ath10k.

For ath10k issues please also CC ath10k list:

https://wireless.wiki.kernel.org/en/users/drivers/ath10k/support

And please copy the relevant errors from the logs to the email, faster
that way.

-- 
Kalle Valo

^ permalink raw reply

* Re: Need support for Intel new wifi module 9462NGW
From: Chris Chiu @ 2017-10-31  7:29 UTC (permalink / raw)
  To: Luca Coelho
  Cc: johannes.berg, linuxwifi, linux-wireless, Linux Upstreaming Team
In-Reply-To: <1509434718.4492.195.camel@coelho.fi>

Great. Thanks.

On Tue, Oct 31, 2017 at 3:25 PM, Luca Coelho <luca@coelho.fi> wrote:
> On Tue, 2017-10-31 at 12:13 +0800, Chris Chiu wrote:
>> Hi,
>
> Hi Chris,
>
>
>>     We just have the Intel new WiFi module 9462NGW from Acer and
>> tried
>> to verify if it works on the latest linux kernel. Unfortunately it
>> seems not even detected because the PCI ID seems unknown to the
>> iwlwifi driver. Then I add the following line to
>> drivers/net/wireless/intel/iwlwifi/pcie/drv.c
>> iwl_hw_card_ids
>> {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9460_2ac_cfg)},
>>
>> dmesg shows the following
>>
>> [   12.994422] iwlwifi 0000:00:0c.0: Direct firmware load for
>> iwlwifi-9260-th-b0-jf-b0-33.ucode failed with error -2
>> [   12.994442] iwlwifi 0000:00:0c.0: Direct firmware load for
>> iwlwifi-9260-th-b0-jf-b0-32.ucode failed with error -2
>> [   12.994456] iwlwifi 0000:00:0c.0: Direct firmware load for
>> iwlwifi-9260-th-b0-jf-b0-31.ucode failed with error -2
>> [   12.994470] iwlwifi 0000:00:0c.0: Direct firmware load for
>> iwlwifi-9260-th-b0-jf-b0-30.ucode failed with error -2
>> [   12.994473] iwlwifi 0000:00:0c.0: no suitable firmware found!
>> [   12.994477] iwlwifi 0000:00:0c.0: minimum version required:
>> iwlwifi-9260-th-b0-jf-b0-30
>> [   12.994479] iwlwifi 0000:00:0c.0: maximum version supported:
>> iwlwifi-9260-th-b0-jf-b0-33
>>
>>
>>
>> I'm not able to find these missing files in linux-firmware.git and
>> any
>> other possible place. What's the status of supporting this 9462NGW?
>> Please let me know if any more information required. Thanks
>
> Unfortunately we have not published the firmware for this NIC yet.
> I'll try to get an approval to publish it today (or latest by the end
> of the week) and I'll let you know.
>
> --
> Cheers,
> Luca.

^ permalink raw reply

* Re: Need support for Intel new wifi module 9462NGW
From: Luca Coelho @ 2017-10-31  7:25 UTC (permalink / raw)
  To: Chris Chiu, johannes.berg, linuxwifi, linux-wireless,
	Linux Upstreaming Team
In-Reply-To: <CAB4CAwdO0dKAinnPk+ihJyDgOJ1z=2D=+pLMrObJYH+QiaDRqA@mail.gmail.com>

On Tue, 2017-10-31 at 12:13 +0800, Chris Chiu wrote:
> Hi,

Hi Chris,


>     We just have the Intel new WiFi module 9462NGW from Acer and
> tried
> to verify if it works on the latest linux kernel. Unfortunately it
> seems not even detected because the PCI ID seems unknown to the
> iwlwifi driver. Then I add the following line to
> drivers/net/wireless/intel/iwlwifi/pcie/drv.c
> iwl_hw_card_ids
> {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9460_2ac_cfg)},
> 
> dmesg shows the following
> 
> [   12.994422] iwlwifi 0000:00:0c.0: Direct firmware load for
> iwlwifi-9260-th-b0-jf-b0-33.ucode failed with error -2
> [   12.994442] iwlwifi 0000:00:0c.0: Direct firmware load for
> iwlwifi-9260-th-b0-jf-b0-32.ucode failed with error -2
> [   12.994456] iwlwifi 0000:00:0c.0: Direct firmware load for
> iwlwifi-9260-th-b0-jf-b0-31.ucode failed with error -2
> [   12.994470] iwlwifi 0000:00:0c.0: Direct firmware load for
> iwlwifi-9260-th-b0-jf-b0-30.ucode failed with error -2
> [   12.994473] iwlwifi 0000:00:0c.0: no suitable firmware found!
> [   12.994477] iwlwifi 0000:00:0c.0: minimum version required:
> iwlwifi-9260-th-b0-jf-b0-30
> [   12.994479] iwlwifi 0000:00:0c.0: maximum version supported:
> iwlwifi-9260-th-b0-jf-b0-33
> 
> 
> 
> I'm not able to find these missing files in linux-firmware.git and
> any
> other possible place. What's the status of supporting this 9462NGW?
> Please let me know if any more information required. Thanks

Unfortunately we have not published the firmware for this NIC yet. 
I'll try to get an approval to publish it today (or latest by the end
of the week) and I'll let you know.

--
Cheers,
Luca.

^ permalink raw reply

* Re: PROBLEM: Issue with wireless driver after resume from suspend.
From: Luca Coelho @ 2017-10-31  7:23 UTC (permalink / raw)
  To: Anil Nair; +Cc: linux-wireless
In-Reply-To: <20171031065122.GA24662@gmail.com>

On Tue, 2017-10-31 at 12:21 +0530, Anil Nair wrote:
> Hi All,

Hi,


> I am having a issue with the wireless driver in my laptop. Attached
> information
> pertaining to the issue.

It would be useful to specify which wireless card you are using.  In
this case, the problem seems to be with ath10k.


--
Cheers,
Luca.

^ permalink raw reply

* PROBLEM: Issue with wireless driver after resume from suspend.
From: Anil Nair @ 2017-10-31  6:51 UTC (permalink / raw)
  Cc: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 2181 bytes --]

Hi All,

I am having a issue with the wireless driver in my laptop. Attached information
pertaining to the issue.
     
  [1.] One line summary of the problem:

  Wifi not working after resuming from suspend state.

  [2.] Full description of the problem/report:

  I had put my laptop in suspend mode, after resmuing the laptop from suspend
  mode wifi stopped working, or rather not responding I tried switching the 
  airplane mode on then off still no effect.

  [3.] Keywords (i.e., modules, networking, kernel):

  Networking particularly Wireless Networking.

  [4.] Kernel information

  4.13.5

  [4.1.] Kernel version (from /proc/version):

  Linux version 4.13.5anil-1017 (root@anilnair-lenovo) 
  (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)) 
  #1 SMP Sat Oct 14 12:30:16 IST 2017

  [4.2.] Kernel .config file:

  Attached in the below mail file named config_kernel.txt

  [5.] Most recent kernel version which did not have the bug:

  4.4.0

  [6.] Output of Oops.. message (if applicable) with symbolic information
       resolved (see Documentation/admin-guide/oops-tracing.rst)
  
  Attached in the below mail file named error_log.txt

  [8.1.] Software (add the output of the ver_linux script here)
  
  Attached in the below mail file named software_version.txt
  
  [8.2.] Processor information (from /proc/cpuinfo):

  Attached in the below mail file named cpu_config.txt

  [8.3.] Module information (from /proc/modules):

  Attached in the below mail file named modules_config.txt

  [8.4.] Loaded driver and hardware information (/proc/ioports, /proc/iomem)

  Attached in the below mail file named ioports_config.txt,iomem_config.txt,

  [8.5.] PCI information ('lspci -vvv' as root)

  Attached in the below mail file named pci_config.txt

  [8.6.] SCSI information (from /proc/scsi/scsi)

  Attached in the below mail file named cpu_config.txt

  [X.] Other notes, patches, fixes, workarounds:
  
  A reboot fixes the issue.
  
  All Files are compressed in the tar and sent.
  Let me know what went wrong and how can i fix it.
  Let me know if any further information is required.
  
  Thanking You.
  
  --
  Regards,
  Anil Nair
  

[-- Attachment #2: linux-bug-reporting.tar.gz --]
[-- Type: application/gzip, Size: 100558 bytes --]

^ permalink raw reply

* Need support for Intel new wifi module 9462NGW
From: Chris Chiu @ 2017-10-31  4:13 UTC (permalink / raw)
  To: johannes.berg, linuxwifi, linux-wireless, Linux Upstreaming Team

Hi,
    We just have the Intel new WiFi module 9462NGW from Acer and tried
to verify if it works on the latest linux kernel. Unfortunately it
seems not even detected because the PCI ID seems unknown to the
iwlwifi driver. Then I add the following line to
drivers/net/wireless/intel/iwlwifi/pcie/drv.c
iwl_hw_card_ids
{IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9460_2ac_cfg)},

dmesg shows the following

[   12.994422] iwlwifi 0000:00:0c.0: Direct firmware load for
iwlwifi-9260-th-b0-jf-b0-33.ucode failed with error -2
[   12.994442] iwlwifi 0000:00:0c.0: Direct firmware load for
iwlwifi-9260-th-b0-jf-b0-32.ucode failed with error -2
[   12.994456] iwlwifi 0000:00:0c.0: Direct firmware load for
iwlwifi-9260-th-b0-jf-b0-31.ucode failed with error -2
[   12.994470] iwlwifi 0000:00:0c.0: Direct firmware load for
iwlwifi-9260-th-b0-jf-b0-30.ucode failed with error -2
[   12.994473] iwlwifi 0000:00:0c.0: no suitable firmware found!
[   12.994477] iwlwifi 0000:00:0c.0: minimum version required:
iwlwifi-9260-th-b0-jf-b0-30
[   12.994479] iwlwifi 0000:00:0c.0: maximum version supported:
iwlwifi-9260-th-b0-jf-b0-33



I'm not able to find these missing files in linux-firmware.git and any
other possible place. What's the status of supporting this 9462NGW?
Please let me know if any more information required. Thanks

Chris

^ permalink raw reply

* Re: rtlwifi oops
From: Barry Day @ 2017-10-31  3:11 UTC (permalink / raw)
  To: nirinA raseliarison; +Cc: James Cameron, Larry Finger, linux-wireless
In-Reply-To: <bd5a4917-96e7-c9ef-909a-e8e4f34b0ef1@gmail.com>

On Sun, Oct 29, 2017 at 01:08:24AM +0300, nirinA raseliarison wrote:
> [  145.966016] usb 2-1.4: new high-speed USB device number 4 using ehci-pci
> [  146.045808] usb 2-1.4: New USB device found, idVendor=0bda,
> idProduct=8178
> [  146.045811] usb 2-1.4: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [  146.045812] usb 2-1.4: Product: 802.11n WLAN Adapter
> [  146.045813] usb 2-1.4: Manufacturer: Realtek
> [  146.045814] usb 2-1.4: SerialNumber: 00e04c000001
> [  146.202043] rtl8192cu: Chip version 0x11
> [  146.278549] rtl8192cu: Board Type 0
> [  146.278790] rtl_usb: rx_max_size 15360, rx_urb_num 8, in_ep 1
> [  146.278823] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin
> [  146.278938] ieee80211 phy0: Selected rate control algorithm 'rtl_rc'
> [  146.279113] usbcore: registered new interface driver rtl8192cu
> [  146.281706] usbcore: registered new interface driver rtl8xxxu
> --
> nirinA

It appears that both rtl8192cu and rtl8xxxu are being loaded for the
one device.

Try blacklisting one of them.

Barry

^ permalink raw reply

* [PATCH V2 9/9] qtnfmac: pass all CONNECT cmd params to wireless card for processing
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Specifically, following parameters are needed for wireless device
configuration but were not available to it before:
- HT/VHT capabilities and capabilities masks.
- full channel info (not just IEEE number)
- BSSID hint
- previous BSSID for reassoc request

Move Management Frame Protection setting from common encr info
structure into STA-specific .connect command parameters.

Make sure that all new qlink structure definitions are alignment-safe.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 63 +++++++++++++++--------
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 32 +++++++++---
 2 files changed, 65 insertions(+), 30 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index c2f0b75..8bc8dd6 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -221,7 +221,6 @@ int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
 	aen = &cmd->aen;
 	aen->auth_type = s->auth_type;
 	aen->privacy = !!s->privacy;
-	aen->mfp = 0;
 	aen->wpa_versions = cpu_to_le32(s->crypto.wpa_versions);
 	aen->cipher_group = cpu_to_le32(s->crypto.cipher_group);
 	aen->n_ciphers_pairwise = cpu_to_le32(s->crypto.n_ciphers_pairwise);
@@ -2029,17 +2028,36 @@ int qtnf_cmd_send_del_sta(struct qtnf_vif *vif,
 	return ret;
 }
 
+static void qtnf_cmd_channel_tlv_add(struct sk_buff *cmd_skb,
+				     const struct ieee80211_channel *sc)
+{
+	struct qlink_tlv_channel *qchan;
+	u32 flags = 0;
+
+	qchan = skb_put_zero(cmd_skb, sizeof(*qchan));
+	qchan->hdr.type = cpu_to_le16(QTN_TLV_ID_CHANNEL);
+	qchan->hdr.len = cpu_to_le16(sizeof(*qchan) - sizeof(qchan->hdr));
+	qchan->center_freq = cpu_to_le16(sc->center_freq);
+	qchan->hw_value = cpu_to_le16(sc->hw_value);
+
+	if (sc->flags & IEEE80211_CHAN_NO_IR)
+		flags |= QLINK_CHAN_NO_IR;
+
+	if (sc->flags & IEEE80211_CHAN_RADAR)
+		flags |= QLINK_CHAN_RADAR;
+
+	qchan->flags = cpu_to_le32(flags);
+}
+
 int qtnf_cmd_send_scan(struct qtnf_wmac *mac)
 {
 	struct sk_buff *cmd_skb;
 	u16 res_code = QLINK_CMD_RESULT_OK;
 	struct ieee80211_channel *sc;
 	struct cfg80211_scan_request *scan_req = mac->scan_req;
-	struct qlink_tlv_channel *qchan;
 	int n_channels;
 	int count = 0;
 	int ret;
-	u32 flags;
 
 	if (scan_req->n_ssids > QTNF_MAX_SSID_LIST_LENGTH) {
 		pr_err("MAC%u: too many SSIDs in scan request\n", mac->macid);
@@ -2081,22 +2099,8 @@ int qtnf_cmd_send_scan(struct qtnf_wmac *mac)
 			pr_debug("MAC%u: scan chan=%d, freq=%d, flags=%#x\n",
 				 mac->macid, sc->hw_value, sc->center_freq,
 				 sc->flags);
-			qchan = skb_put_zero(cmd_skb, sizeof(*qchan));
-			flags = 0;
-
-			qchan->hdr.type = cpu_to_le16(QTN_TLV_ID_CHANNEL);
-			qchan->hdr.len = cpu_to_le16(sizeof(*qchan) -
-					sizeof(struct qlink_tlv_hdr));
-			qchan->center_freq = cpu_to_le16(sc->center_freq);
-			qchan->hw_value = cpu_to_le16(sc->hw_value);
-
-			if (sc->flags & IEEE80211_CHAN_NO_IR)
-				flags |= QLINK_CHAN_NO_IR;
 
-			if (sc->flags & IEEE80211_CHAN_RADAR)
-				flags |= QLINK_CHAN_RADAR;
-
-			qchan->flags = cpu_to_le32(flags);
+			qtnf_cmd_channel_tlv_add(cmd_skb, sc);
 			n_channels--;
 			count++;
 		}
@@ -2140,10 +2144,15 @@ int qtnf_cmd_send_connect(struct qtnf_vif *vif,
 
 	ether_addr_copy(cmd->bssid, vif->bssid);
 
-	if (sme->channel)
-		cmd->channel = cpu_to_le16(sme->channel->hw_value);
+	if (sme->bssid_hint)
+		ether_addr_copy(cmd->bssid_hint, sme->bssid_hint);
 	else
-		cmd->channel = 0;
+		eth_zero_addr(cmd->bssid_hint);
+
+	if (sme->prev_bssid)
+		ether_addr_copy(cmd->prev_bssid, sme->prev_bssid);
+	else
+		eth_zero_addr(cmd->prev_bssid);
 
 	if ((sme->bg_scan_period > 0) &&
 	    (sme->bg_scan_period <= QTNF_MAX_BG_SCAN_PERIOD))
@@ -2161,11 +2170,18 @@ int qtnf_cmd_send_connect(struct qtnf_vif *vif,
 		connect_flags |= QLINK_STA_CONNECT_USE_RRM;
 
 	cmd->flags = cpu_to_le32(connect_flags);
+	memcpy(&cmd->ht_capa, &sme->ht_capa, sizeof(cmd->ht_capa));
+	memcpy(&cmd->ht_capa_mask, &sme->ht_capa_mask,
+	       sizeof(cmd->ht_capa_mask));
+	memcpy(&cmd->vht_capa, &sme->vht_capa, sizeof(cmd->vht_capa));
+	memcpy(&cmd->vht_capa_mask, &sme->vht_capa_mask,
+	       sizeof(cmd->vht_capa_mask));
+	cmd->pbss = sme->pbss;
 
 	aen = &cmd->aen;
 	aen->auth_type = sme->auth_type;
 	aen->privacy = !!sme->privacy;
-	aen->mfp = sme->mfp;
+	cmd->mfp = sme->mfp;
 	aen->wpa_versions = cpu_to_le32(sme->crypto.wpa_versions);
 	aen->cipher_group = cpu_to_le32(sme->crypto.cipher_group);
 	aen->n_ciphers_pairwise = cpu_to_le32(sme->crypto.n_ciphers_pairwise);
@@ -2192,6 +2208,9 @@ int qtnf_cmd_send_connect(struct qtnf_vif *vif,
 		qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_ASSOC_REQ,
 					sme->ie, sme->ie_len);
 
+	if (sme->channel)
+		qtnf_cmd_channel_tlv_add(cmd_skb, sme->channel);
+
 	qtnf_bus_lock(vif->mac->bus);
 
 	ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index e07f776..a432fb0 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -19,7 +19,7 @@
 
 #include <linux/ieee80211.h>
 
-#define QLINK_PROTO_VER		5
+#define QLINK_PROTO_VER		6
 
 #define QLINK_MACID_RSVD		0xFF
 #define QLINK_VIFID_RSVD		0xFF
@@ -148,9 +148,9 @@ struct qlink_auth_encr {
 	__le16 control_port_ethertype;
 	u8 auth_type;
 	u8 privacy;
-	u8 mfp;
 	u8 control_port;
 	u8 control_port_no_encrypt;
+	u8 rsvd[2];
 } __packed;
 
 /* QLINK Command messages related definitions
@@ -404,20 +404,36 @@ enum qlink_sta_connect_flags {
 /**
  * struct qlink_cmd_connect - data for QLINK_CMD_CONNECT command
  *
- * @flags: for future use.
- * @channel: channel which should be used to connect.
+ * @bssid: BSSID of the BSS to connect to.
+ * @bssid_hint: recommended AP BSSID for initial connection to the BSS or
+ *	00:00:00:00:00:00 if not specified.
+ * @prev_bssid: previous BSSID, if specified (not 00:00:00:00:00:00) indicates
+ *	a request to reassociate.
  * @bg_scan_period: period of background scan.
+ * @flags: one of &enum qlink_sta_connect_flags.
+ * @ht_capa: HT Capabilities overrides.
+ * @ht_capa_mask: The bits of ht_capa which are to be used.
+ * @vht_capa: VHT Capability overrides
+ * @vht_capa_mask: The bits of vht_capa which are to be used.
  * @aen: authentication information.
- * @bssid: BSSID of the BSS to connect to.
+ * @mfp: whether to use management frame protection.
  * @payload: variable portion of connection request.
  */
 struct qlink_cmd_connect {
 	struct qlink_cmd chdr;
-	__le32 flags;
-	__le16 channel;
+	u8 bssid[ETH_ALEN];
+	u8 bssid_hint[ETH_ALEN];
+	u8 prev_bssid[ETH_ALEN];
 	__le16 bg_scan_period;
+	__le32 flags;
+	struct ieee80211_ht_cap ht_capa;
+	struct ieee80211_ht_cap ht_capa_mask;
+	struct ieee80211_vht_cap vht_capa;
+	struct ieee80211_vht_cap vht_capa_mask;
 	struct qlink_auth_encr aen;
-	u8 bssid[ETH_ALEN];
+	u8 mfp;
+	u8 pbss;
+	u8 rsvd[2];
 	u8 payload[0];
 } __packed;
 
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 8/9] qtnfmac: include HTCAP and VHTCAP into config AP command
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Include HT/VHT caps directly into command so that they won't have
to be searched for in IEs.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 5186116..c2f0b75 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -266,6 +266,24 @@ int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
 				s->beacon.assocresp_ies,
 				s->beacon.assocresp_ies_len);
 
+	if (s->ht_cap) {
+		struct qlink_tlv_hdr *tlv = (struct qlink_tlv_hdr *)
+			skb_put(cmd_skb, sizeof(*tlv) + sizeof(*s->ht_cap));
+
+		tlv->type = cpu_to_le16(WLAN_EID_HT_CAPABILITY);
+		tlv->len = cpu_to_le16(sizeof(*s->ht_cap));
+		memcpy(tlv->val, s->ht_cap, sizeof(*s->ht_cap));
+	}
+
+	if (s->vht_cap) {
+		struct qlink_tlv_hdr *tlv = (struct qlink_tlv_hdr *)
+			skb_put(cmd_skb, sizeof(*tlv) + sizeof(*s->vht_cap));
+
+		tlv->type = cpu_to_le16(WLAN_EID_VHT_CAPABILITY);
+		tlv->len = cpu_to_le16(sizeof(*s->vht_cap));
+		memcpy(tlv->val, s->vht_cap, sizeof(*s->vht_cap));
+	}
+
 	qtnf_bus_lock(vif->mac->bus);
 
 	ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 7/9] qtnfmac: configure and start AP interface with a single command
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Current logic artificially divides "start AP" procedure into three
stages:
- generic interface configuration (security, channel etc)
- IE's processing
- enable AP mode on interface

This separation would not allow to do a proper device configuration as
first stage needs to use information from IEs that are processed on
a second stage. Which means first and second stages have to be meged.
In that case there is no point anymore to keep third stage either, so
merge all three into a single command.

This new command carries all the same info as contained in
"struct cfg80211_ap_settings".

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 17 +-----
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 72 +++++++++++++----------
 drivers/net/wireless/quantenna/qtnfmac/commands.h |  5 +-
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    |  5 +-
 4 files changed, 47 insertions(+), 52 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 27b11dc..7d6dc76 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -271,26 +271,11 @@ static int qtnf_start_ap(struct wiphy *wiphy, struct net_device *dev,
 	struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
 	int ret;
 
-	ret = qtnf_cmd_send_config_ap(vif, settings);
-	if (ret) {
-		pr_err("VIF%u.%u: failed to push config to FW\n",
-		       vif->mac->macid, vif->vifid);
-		goto out;
-	}
-
-	ret = qtnf_mgmt_set_appie(vif, &settings->beacon);
-	if (ret) {
-		pr_err("VIF%u.%u: failed to add IEs to beacon\n",
-		       vif->mac->macid, vif->vifid);
-		goto out;
-	}
-
-	ret = qtnf_cmd_send_start_ap(vif);
+	ret = qtnf_cmd_send_start_ap(vif, settings);
 	if (ret)
 		pr_err("VIF%u.%u: failed to start AP\n", vif->mac->macid,
 		       vif->vifid);
 
-out:
 	return ret;
 }
 
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 294418c..5186116 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -162,56 +162,51 @@ static void qtnf_cmd_tlv_ie_set_add(struct sk_buff *cmd_skb, u8 frame_type,
 		memcpy(tlv->ie_data, buf, len);
 }
 
-int qtnf_cmd_send_start_ap(struct qtnf_vif *vif)
+static bool qtnf_cmd_start_ap_can_fit(const struct qtnf_vif *vif,
+				      const struct cfg80211_ap_settings *s)
 {
-	struct sk_buff *cmd_skb;
-	u16 res_code = QLINK_CMD_RESULT_OK;
-	int ret;
+	unsigned int len = sizeof(struct qlink_cmd_start_ap);
 
-	cmd_skb = qtnf_cmd_alloc_new_cmdskb(vif->mac->macid, vif->vifid,
-					    QLINK_CMD_START_AP,
-					    sizeof(struct qlink_cmd));
-	if (unlikely(!cmd_skb))
-		return -ENOMEM;
+	len += s->ssid_len;
+	len += s->beacon.head_len;
+	len += s->beacon.tail_len;
+	len += s->beacon.beacon_ies_len;
+	len += s->beacon.proberesp_ies_len;
+	len += s->beacon.assocresp_ies_len;
+	len += s->beacon.probe_resp_len;
 
-	qtnf_bus_lock(vif->mac->bus);
-
-	ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
+	if (cfg80211_chandef_valid(&s->chandef))
+		len += sizeof(struct qlink_tlv_chandef);
 
-	if (unlikely(ret))
-		goto out;
-
-	if (unlikely(res_code != QLINK_CMD_RESULT_OK)) {
-		pr_err("VIF%u.%u: CMD failed: %u\n", vif->mac->macid,
-		       vif->vifid, res_code);
-		ret = -EFAULT;
-		goto out;
+	if (len > (sizeof(struct qlink_cmd) + QTNF_MAX_CMD_BUF_SIZE)) {
+		pr_err("VIF%u.%u: can not fit AP settings: %u\n",
+		       vif->mac->macid, vif->vifid, len);
+		return false;
 	}
 
-	netif_carrier_on(vif->netdev);
-
-out:
-	qtnf_bus_unlock(vif->mac->bus);
-	return ret;
+	return true;
 }
 
-int qtnf_cmd_send_config_ap(struct qtnf_vif *vif,
-			    const struct cfg80211_ap_settings *s)
+int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
+			   const struct cfg80211_ap_settings *s)
 {
 	struct sk_buff *cmd_skb;
-	struct qlink_cmd_config_ap *cmd;
+	struct qlink_cmd_start_ap *cmd;
 	struct qlink_auth_encr *aen;
 	u16 res_code = QLINK_CMD_RESULT_OK;
 	int ret;
 	int i;
 
+	if (!qtnf_cmd_start_ap_can_fit(vif, s))
+		return -E2BIG;
+
 	cmd_skb = qtnf_cmd_alloc_new_cmdskb(vif->mac->macid, vif->vifid,
-					    QLINK_CMD_CONFIG_AP,
+					    QLINK_CMD_START_AP,
 					    sizeof(*cmd));
 	if (unlikely(!cmd_skb))
 		return -ENOMEM;
 
-	cmd = (struct qlink_cmd_config_ap *)cmd_skb->data;
+	cmd = (struct qlink_cmd_start_ap *)cmd_skb->data;
 	cmd->dtim_period = s->dtim_period;
 	cmd->beacon_interval = cpu_to_le16(s->beacon_interval);
 	cmd->hidden_ssid = qlink_hidden_ssid_nl2q(s->hidden_ssid);
@@ -256,6 +251,21 @@ int qtnf_cmd_send_config_ap(struct qtnf_vif *vif,
 		qlink_chandef_cfg2q(&s->chandef, &chtlv->chan);
 	}
 
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_BEACON_HEAD,
+				s->beacon.head, s->beacon.head_len);
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_BEACON_TAIL,
+				s->beacon.tail, s->beacon.tail_len);
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_BEACON_IES,
+				s->beacon.beacon_ies, s->beacon.beacon_ies_len);
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_PROBE_RESP,
+				s->beacon.probe_resp, s->beacon.probe_resp_len);
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_PROBE_RESP_IES,
+				s->beacon.proberesp_ies,
+				s->beacon.proberesp_ies_len);
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_ASSOC_RESP,
+				s->beacon.assocresp_ies,
+				s->beacon.assocresp_ies_len);
+
 	qtnf_bus_lock(vif->mac->bus);
 
 	ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
@@ -270,6 +280,8 @@ int qtnf_cmd_send_config_ap(struct qtnf_vif *vif,
 		goto out;
 	}
 
+	netif_carrier_on(vif->netdev);
+
 out:
 	qtnf_bus_unlock(vif->mac->bus);
 	return ret;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.h b/drivers/net/wireless/quantenna/qtnfmac/commands.h
index d6fe3cc..d981a76 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.h
@@ -33,9 +33,8 @@ int qtnf_cmd_send_del_intf(struct qtnf_vif *vif);
 int qtnf_cmd_band_info_get(struct qtnf_wmac *mac,
 			   struct ieee80211_supported_band *band);
 int qtnf_cmd_send_regulatory_config(struct qtnf_wmac *mac, const char *alpha2);
-int qtnf_cmd_send_config_ap(struct qtnf_vif *vif,
-			    const struct cfg80211_ap_settings *s);
-int qtnf_cmd_send_start_ap(struct qtnf_vif *vif);
+int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
+			   const struct cfg80211_ap_settings *s);
 int qtnf_cmd_send_stop_ap(struct qtnf_vif *vif);
 int qtnf_cmd_send_register_mgmt(struct qtnf_vif *vif, u16 frame_type, bool reg);
 int qtnf_cmd_send_mgmt_frame(struct qtnf_vif *vif, u32 cookie, u16 flags,
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index 43ce451..e07f776 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -192,7 +192,6 @@ enum qlink_cmd_type {
 	QLINK_CMD_BAND_INFO_GET		= 0x001A,
 	QLINK_CMD_CHAN_SWITCH		= 0x001B,
 	QLINK_CMD_CHAN_GET		= 0x001C,
-	QLINK_CMD_CONFIG_AP		= 0x0020,
 	QLINK_CMD_START_AP		= 0x0021,
 	QLINK_CMD_STOP_AP		= 0x0022,
 	QLINK_CMD_GET_STA_INFO		= 0x0030,
@@ -542,7 +541,7 @@ enum qlink_hidden_ssid {
 };
 
 /**
- * struct qlink_cmd_config_ap - data for QLINK_CMD_CONFIG_AP command
+ * struct qlink_cmd_start_ap - data for QLINK_CMD_START_AP command
  *
  * @beacon_interval: beacon interval
  * @inactivity_timeout: station's inactivity period in seconds
@@ -554,7 +553,7 @@ enum qlink_hidden_ssid {
  * @aen: encryption info
  * @info: variable configurations
  */
-struct qlink_cmd_config_ap {
+struct qlink_cmd_start_ap {
 	struct qlink_cmd chdr;
 	__le16 beacon_interval;
 	__le16 inactivity_timeout;
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 6/9] qtnfmac: convert "Append IEs" command to QTN_TLV_ID_IE_SET usage
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Data contained within "Append IEs" command (QLINK_CMD_MGMT_SET_APPIE)
duplicates QTN_TLV_ID_IE_SET TLV. Convert the command to use that TLV
instead.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 12 ++++++------
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 17 ++++-------------
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 15 ---------------
 3 files changed, 10 insertions(+), 34 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 1a0c538..27b11dc 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -217,10 +217,10 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
 	int ret = 0;
 
 	if (!info->beacon_ies || !info->beacon_ies_len) {
-		ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_MGMT_FRAME_BEACON,
+		ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_IE_SET_BEACON_IES,
 						   NULL, 0);
 	} else {
-		ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_MGMT_FRAME_BEACON,
+		ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_IE_SET_BEACON_IES,
 						   info->beacon_ies,
 						   info->beacon_ies_len);
 	}
@@ -230,11 +230,11 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
 
 	if (!info->proberesp_ies || !info->proberesp_ies_len) {
 		ret = qtnf_cmd_send_mgmt_set_appie(vif,
-						   QLINK_MGMT_FRAME_PROBE_RESP,
+						   QLINK_IE_SET_PROBE_RESP_IES,
 						   NULL, 0);
 	} else {
 		ret = qtnf_cmd_send_mgmt_set_appie(vif,
-						   QLINK_MGMT_FRAME_PROBE_RESP,
+						   QLINK_IE_SET_PROBE_RESP_IES,
 						   info->proberesp_ies,
 						   info->proberesp_ies_len);
 	}
@@ -244,11 +244,11 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
 
 	if (!info->assocresp_ies || !info->assocresp_ies_len) {
 		ret = qtnf_cmd_send_mgmt_set_appie(vif,
-						   QLINK_MGMT_FRAME_ASSOC_RESP,
+						   QLINK_IE_SET_ASSOC_RESP,
 						   NULL, 0);
 	} else {
 		ret = qtnf_cmd_send_mgmt_set_appie(vif,
-						   QLINK_MGMT_FRAME_ASSOC_RESP,
+						   QLINK_IE_SET_ASSOC_RESP,
 						   info->assocresp_ies,
 						   info->assocresp_ies_len);
 	}
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 8d3cdba..294418c 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -395,11 +395,10 @@ int qtnf_cmd_send_mgmt_set_appie(struct qtnf_vif *vif, u8 frame_type,
 				 const u8 *buf, size_t len)
 {
 	struct sk_buff *cmd_skb;
-	struct qlink_cmd_mgmt_append_ie *cmd;
 	u16 res_code = QLINK_CMD_RESULT_OK;
 	int ret;
 
-	if (sizeof(*cmd) + len > QTNF_MAX_CMD_BUF_SIZE) {
+	if (len > QTNF_MAX_CMD_BUF_SIZE) {
 		pr_warn("VIF%u.%u: %u frame is too big: %zu\n", vif->mac->macid,
 			vif->vifid, frame_type, len);
 		return -E2BIG;
@@ -407,21 +406,13 @@ int qtnf_cmd_send_mgmt_set_appie(struct qtnf_vif *vif, u8 frame_type,
 
 	cmd_skb = qtnf_cmd_alloc_new_cmdskb(vif->mac->macid, vif->vifid,
 					    QLINK_CMD_MGMT_SET_APPIE,
-					    sizeof(*cmd));
+					    sizeof(struct qlink_cmd));
 	if (unlikely(!cmd_skb))
 		return -ENOMEM;
 
-	qtnf_bus_lock(vif->mac->bus);
-
-	cmd = (struct qlink_cmd_mgmt_append_ie *)cmd_skb->data;
-	cmd->type = frame_type;
-	cmd->flags = 0;
+	qtnf_cmd_tlv_ie_set_add(cmd_skb, frame_type, buf, len);
 
-	/* If len == 0 then IE buf for specified frame type
-	 * should be cleared on EP.
-	 */
-	if (len && buf)
-		qtnf_cmd_skb_put_buffer(cmd_skb, buf, len);
+	qtnf_bus_lock(vif->mac->bus);
 
 	ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
 
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index 81effd2..43ce451 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -299,21 +299,6 @@ struct qlink_cmd_mgmt_frame_tx {
 } __packed;
 
 /**
- * struct qlink_cmd_mgmt_append_ie - data for QLINK_CMD_MGMT_SET_APPIE command
- *
- * @type: type of MGMT frame to appent requested IEs to, one of
- *	&enum qlink_mgmt_frame_type.
- * @flags: for future use.
- * @ie_data: IEs data to append.
- */
-struct qlink_cmd_mgmt_append_ie {
-	struct qlink_cmd chdr;
-	u8 type;
-	u8 flags;
-	u8 ie_data[0];
-} __packed;
-
-/**
  * struct qlink_cmd_get_sta_info - data for QLINK_CMD_GET_STA_INFO command
  *
  * @sta_addr: MAC address of the STA statistics is requested for.
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 5/9] qtnfmac: SCAN results: retreive frame type information from "IE set" TLV
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

"IE set" TLV carries the same information as
qlink_event_scan_result::frame_type. Convert the event to make use of
TLV and drop frame_type member.
While at it, make qlink_event_scan_result structure alignement-safe.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/event.c | 25 ++++++++++++-------------
 drivers/net/wireless/quantenna/qtnfmac/qlink.h | 11 ++---------
 2 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c
index b67a082..4abc6d9 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/event.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/event.c
@@ -252,13 +252,12 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
 	struct cfg80211_bss *bss;
 	struct ieee80211_channel *channel;
 	struct wiphy *wiphy = priv_to_wiphy(vif->mac);
-	enum cfg80211_bss_frame_type frame_type;
+	enum cfg80211_bss_frame_type frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
 	size_t payload_len;
 	u16 tlv_type;
 	u16 tlv_value_len;
 	size_t tlv_full_len;
 	const struct qlink_tlv_hdr *tlv;
-
 	const u8 *ies = NULL;
 	size_t ies_len = 0;
 
@@ -275,17 +274,6 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
 		return -EINVAL;
 	}
 
-	switch (sr->frame_type) {
-	case QLINK_BSS_FTYPE_BEACON:
-		frame_type = CFG80211_BSS_FTYPE_BEACON;
-		break;
-	case QLINK_BSS_FTYPE_PRESP:
-		frame_type = CFG80211_BSS_FTYPE_PRESP;
-		break;
-	default:
-		frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
-	}
-
 	payload_len = len - sizeof(*sr);
 	tlv = (struct qlink_tlv_hdr *)sr->payload;
 
@@ -308,6 +296,17 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
 			ie_len = tlv_value_len -
 				(sizeof(*ie_set) - sizeof(ie_set->hdr));
 
+			switch (ie_set->type) {
+			case QLINK_IE_SET_BEACON_IES:
+				frame_type = CFG80211_BSS_FTYPE_BEACON;
+				break;
+			case QLINK_IE_SET_PROBE_RESP_IES:
+				frame_type = CFG80211_BSS_FTYPE_PRESP;
+				break;
+			default:
+				frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
+			}
+
 			if (ie_len) {
 				ies = ie_set->ie_data;
 				ies_len = ie_len;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index f491942..81effd2 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -881,12 +881,6 @@ struct qlink_event_rxmgmt {
 	u8 frame_data[0];
 } __packed;
 
-enum qlink_frame_type {
-	QLINK_BSS_FTYPE_UNKNOWN,
-	QLINK_BSS_FTYPE_BEACON,
-	QLINK_BSS_FTYPE_PRESP,
-};
-
 /**
  * struct qlink_event_scan_result - data for QLINK_EVENT_SCAN_RESULTS event
  *
@@ -896,7 +890,6 @@ enum qlink_frame_type {
  * @capab: capabilities field.
  * @bintval: beacon interval announced by discovered BSS.
  * @signal: signal strength.
- * @frame_type: frame type used to get scan result, see &enum qlink_frame_type.
  * @bssid: BSSID announced by discovered BSS.
  * @ssid_len: length of SSID announced by BSS.
  * @ssid: SSID announced by discovered BSS.
@@ -909,10 +902,10 @@ struct qlink_event_scan_result {
 	__le16 capab;
 	__le16 bintval;
 	s8 signal;
-	u8 frame_type;
-	u8 bssid[ETH_ALEN];
 	u8 ssid_len;
 	u8 ssid[IEEE80211_MAX_SSID_LEN];
+	u8 bssid[ETH_ALEN];
+	u8 rsvd[2];
 	u8 payload[0];
 } __packed;
 
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 4/9] qtnfmac: extend "IE set" TLV to include frame type info
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Specifying frame type for "IE set" TLV will allow to use several
TLVs in a single message.
Modify users accordingly.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 25 +++++++---
 drivers/net/wireless/quantenna/qtnfmac/event.c    | 58 +++++++++++++----------
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 27 +++++++++++
 3 files changed, 80 insertions(+), 30 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 503187a..8d3cdba 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -147,6 +147,21 @@ static struct sk_buff *qtnf_cmd_alloc_new_cmdskb(u8 macid, u8 vifid, u16 cmd_no,
 	return cmd_skb;
 }
 
+static void qtnf_cmd_tlv_ie_set_add(struct sk_buff *cmd_skb, u8 frame_type,
+				    const u8 *buf, size_t len)
+{
+	struct qlink_tlv_ie_set *tlv;
+
+	tlv = (struct qlink_tlv_ie_set *)skb_put(cmd_skb, sizeof(*tlv) + len);
+	tlv->hdr.type = cpu_to_le16(QTN_TLV_ID_IE_SET);
+	tlv->hdr.len = cpu_to_le16(len + sizeof(*tlv) - sizeof(tlv->hdr));
+	tlv->type = frame_type;
+	tlv->flags = 0;
+
+	if (len && buf)
+		memcpy(tlv->ie_data, buf, len);
+}
+
 int qtnf_cmd_send_start_ap(struct qtnf_vif *vif)
 {
 	struct sk_buff *cmd_skb;
@@ -2028,9 +2043,8 @@ int qtnf_cmd_send_scan(struct qtnf_wmac *mac)
 	}
 
 	if (scan_req->ie_len != 0)
-		qtnf_cmd_skb_put_tlv_arr(cmd_skb, QTN_TLV_ID_IE_SET,
-					 scan_req->ie,
-					 scan_req->ie_len);
+		qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_PROBE_REQ,
+					scan_req->ie, scan_req->ie_len);
 
 	if (scan_req->n_channels) {
 		n_channels = scan_req->n_channels;
@@ -2154,9 +2168,8 @@ int qtnf_cmd_send_connect(struct qtnf_vif *vif,
 				 sme->ssid_len);
 
 	if (sme->ie_len != 0)
-		qtnf_cmd_skb_put_tlv_arr(cmd_skb, QTN_TLV_ID_IE_SET,
-					 sme->ie,
-					 sme->ie_len);
+		qtnf_cmd_tlv_ie_set_add(cmd_skb, QLINK_IE_SET_ASSOC_REQ,
+					sme->ie, sme->ie_len);
 
 	qtnf_bus_lock(vif->mac->bus);
 
diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c
index 4b29f9f..b67a082 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/event.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/event.c
@@ -65,34 +65,39 @@ qtnf_event_handle_sta_assoc(struct qtnf_wmac *mac, struct qtnf_vif *vif,
 	sinfo.assoc_req_ies_len = 0;
 
 	payload_len = len - sizeof(*sta_assoc);
-	tlv = (struct qlink_tlv_hdr *)sta_assoc->ies;
+	tlv = (const struct qlink_tlv_hdr *)sta_assoc->ies;
 
-	while (payload_len >= sizeof(struct qlink_tlv_hdr)) {
+	while (payload_len >= sizeof(*tlv)) {
 		tlv_type = le16_to_cpu(tlv->type);
 		tlv_value_len = le16_to_cpu(tlv->len);
 		tlv_full_len = tlv_value_len + sizeof(struct qlink_tlv_hdr);
 
-		if (tlv_full_len > payload_len) {
-			pr_warn("VIF%u.%u: malformed TLV 0x%.2X; LEN: %u\n",
-				mac->macid, vif->vifid, tlv_type,
-				tlv_value_len);
+		if (tlv_full_len > payload_len)
 			return -EINVAL;
-		}
 
 		if (tlv_type == QTN_TLV_ID_IE_SET) {
-			sinfo.assoc_req_ies = tlv->val;
-			sinfo.assoc_req_ies_len = tlv_value_len;
+			const struct qlink_tlv_ie_set *ie_set;
+			unsigned int ie_len;
+
+			if (payload_len < sizeof(*ie_set))
+				return -EINVAL;
+
+			ie_set = (const struct qlink_tlv_ie_set *)tlv;
+			ie_len = tlv_value_len -
+				(sizeof(*ie_set) - sizeof(ie_set->hdr));
+
+			if (ie_set->type == QLINK_IE_SET_ASSOC_REQ && ie_len) {
+				sinfo.assoc_req_ies = ie_set->ie_data;
+				sinfo.assoc_req_ies_len = ie_len;
+			}
 		}
 
 		payload_len -= tlv_full_len;
 		tlv = (struct qlink_tlv_hdr *)(tlv->val + tlv_value_len);
 	}
 
-	if (payload_len) {
-		pr_warn("VIF%u.%u: malformed TLV buf; bytes left: %zu\n",
-			mac->macid, vif->vifid, payload_len);
+	if (payload_len)
 		return -EINVAL;
-	}
 
 	cfg80211_new_sta(vif->netdev, sta_assoc->sta_addr, &sinfo,
 			 GFP_KERNEL);
@@ -289,27 +294,32 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
 		tlv_value_len = le16_to_cpu(tlv->len);
 		tlv_full_len = tlv_value_len + sizeof(struct qlink_tlv_hdr);
 
-		if (tlv_full_len > payload_len) {
-			pr_warn("VIF%u.%u: malformed TLV 0x%.2X; LEN: %u\n",
-				vif->mac->macid, vif->vifid, tlv_type,
-				tlv_value_len);
+		if (tlv_full_len > payload_len)
 			return -EINVAL;
-		}
 
 		if (tlv_type == QTN_TLV_ID_IE_SET) {
-			ies = tlv->val;
-			ies_len = tlv_value_len;
+			const struct qlink_tlv_ie_set *ie_set;
+			unsigned int ie_len;
+
+			if (payload_len < sizeof(*ie_set))
+				return -EINVAL;
+
+			ie_set = (const struct qlink_tlv_ie_set *)tlv;
+			ie_len = tlv_value_len -
+				(sizeof(*ie_set) - sizeof(ie_set->hdr));
+
+			if (ie_len) {
+				ies = ie_set->ie_data;
+				ies_len = ie_len;
+			}
 		}
 
 		payload_len -= tlv_full_len;
 		tlv = (struct qlink_tlv_hdr *)(tlv->val + tlv_value_len);
 	}
 
-	if (payload_len) {
-		pr_warn("VIF%u.%u: malformed TLV buf; bytes left: %zu\n",
-			vif->mac->macid, vif->vifid, payload_len);
+	if (payload_len)
 		return -EINVAL;
-	}
 
 	bss = cfg80211_inform_bss(wiphy, channel, frame_type,
 				  sr->bssid, get_unaligned_le64(&sr->tsf),
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index c558d81..f491942 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -1147,6 +1147,33 @@ struct qlink_tlv_chandef {
 	struct qlink_chandef chan;
 } __packed;
 
+enum qlink_ie_set_type {
+	QLINK_IE_SET_UNKNOWN,
+	QLINK_IE_SET_ASSOC_REQ,
+	QLINK_IE_SET_ASSOC_RESP,
+	QLINK_IE_SET_PROBE_REQ,
+	QLINK_IE_SET_SCAN,
+	QLINK_IE_SET_BEACON_HEAD,
+	QLINK_IE_SET_BEACON_TAIL,
+	QLINK_IE_SET_BEACON_IES,
+	QLINK_IE_SET_PROBE_RESP,
+	QLINK_IE_SET_PROBE_RESP_IES,
+};
+
+/**
+ * struct qlink_tlv_ie_set - data for QTN_TLV_ID_IE_SET
+ *
+ * @type: type of MGMT frame IEs belong to, one of &enum qlink_ie_set_type.
+ * @flags: for future use.
+ * @ie_data: IEs data.
+ */
+struct qlink_tlv_ie_set {
+	struct qlink_tlv_hdr hdr;
+	u8 type;
+	u8 flags;
+	u8 ie_data[0];
+} __packed;
+
 struct qlink_chan_stats {
 	__le32 chan_num;
 	__le32 cca_tx;
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 3/9] qtnfmac: get rid of PHYMODE capabilities flags
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Supported WiFi operation modes are now identified per-band based on
HT/VHT capabilities of each band.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c |  3 ---
 drivers/net/wireless/quantenna/qtnfmac/commands.c |  1 -
 drivers/net/wireless/quantenna/qtnfmac/core.h     |  1 -
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 11 ++---------
 4 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index b6a2540..1a0c538 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -891,9 +891,6 @@ int qtnf_wiphy_register(struct qtnf_hw_info *hw_info, struct qtnf_wmac *mac)
 	if (ret)
 		goto out;
 
-	pr_info("MAC%u: phymode=%#x radar=%#x\n", mac->macid,
-		mac->macinfo.phymode_cap, mac->macinfo.radar_detect_widths);
-
 	wiphy->frag_threshold = mac->macinfo.frag_thr;
 	wiphy->rts_threshold = mac->macinfo.rts_thr;
 	wiphy->retry_short = mac->macinfo.sretry_limit;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 35ff7e8..503187a 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -1090,7 +1090,6 @@ qtnf_cmd_resp_proc_mac_info(struct qtnf_wmac *mac,
 	mac_info = &mac->macinfo;
 
 	mac_info->bands_cap = resp_info->bands_cap;
-	mac_info->phymode_cap = resp_info->phymode_cap;
 	memcpy(&mac_info->dev_mac, &resp_info->dev_mac,
 	       sizeof(mac_info->dev_mac));
 
diff --git a/drivers/net/wireless/quantenna/qtnfmac/core.h b/drivers/net/wireless/quantenna/qtnfmac/core.h
index 74b94ce..1b7bc03 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/core.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/core.h
@@ -92,7 +92,6 @@ struct qtnf_vif {
 
 struct qtnf_mac_info {
 	u8 bands_cap;
-	u8 phymode_cap;
 	u8 dev_mac[ETH_ALEN];
 	u8 num_tx_chain;
 	u8 num_rx_chain;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index b2c4e27..c558d81 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -74,12 +74,6 @@ enum qlink_hw_capab {
 	QLINK_HW_CAPAB_STA_INACT_TIMEOUT = BIT(1),
 };
 
-enum qlink_phy_mode {
-	QLINK_PHYMODE_BGN	= BIT(0),
-	QLINK_PHYMODE_AN	= BIT(1),
-	QLINK_PHYMODE_AC	= BIT(2),
-};
-
 enum qlink_iface_type {
 	QLINK_IFTYPE_AP		= 1,
 	QLINK_IFTYPE_STATION	= 2,
@@ -639,7 +633,6 @@ struct qlink_resp {
  * @vht_cap_mod_mask: mask specifying which VHT capabilities can be altered.
  * @ht_cap_mod_mask: mask specifying which HT capabilities can be altered.
  * @bands_cap: wireless bands WMAC can operate in, bitmap of &enum qlink_band.
- * @phymode_cap: PHY modes WMAC can operate in, bitmap of &enum qlink_phy_mode.
  * @max_ap_assoc_sta: Maximum number of associations supported by WMAC.
  * @radar_detect_widths: bitmask of channels BW for which WMAC can detect radar.
  * @var_info: variable-length WMAC info data.
@@ -651,10 +644,10 @@ struct qlink_resp_get_mac_info {
 	u8 num_rx_chain;
 	struct ieee80211_vht_cap vht_cap_mod_mask;
 	struct ieee80211_ht_cap ht_cap_mod_mask;
-	u8 bands_cap;
-	u8 phymode_cap;
 	__le16 max_ap_assoc_sta;
 	__le16 radar_detect_widths;
+	u8 bands_cap;
+	u8 rsvd[1];
 	u8 var_info[0];
 } __packed;
 
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 2/9] qtnfmac: initialize HT/VHT caps "can override" masks
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

Information on which HT/VHT capabilities can be overridden is reported
per-MAC by wireless device.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 2 ++
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 7 ++++---
 drivers/net/wireless/quantenna/qtnfmac/core.h     | 4 ++--
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 8 ++++----
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 2f60331..b6a2540 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -925,6 +925,8 @@ int qtnf_wiphy_register(struct qtnf_hw_info *hw_info, struct qtnf_wmac *mac)
 	wiphy->available_antennas_rx = mac->macinfo.num_rx_chain;
 
 	wiphy->max_ap_assoc_sta = mac->macinfo.max_ap_assoc_sta;
+	wiphy->ht_capa_mod_mask = &mac->macinfo.ht_cap_mod_mask;
+	wiphy->vht_capa_mod_mask = &mac->macinfo.vht_cap_mod_mask;
 
 	ether_addr_copy(wiphy->perm_addr, mac->macaddr);
 
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index a7422c5..35ff7e8 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -1110,9 +1110,10 @@ qtnf_cmd_resp_proc_mac_info(struct qtnf_wmac *mac,
 			qlink_chan_width_mask_to_nl(le16_to_cpu(
 					resp_info->radar_detect_widths));
 
-	memcpy(&mac_info->ht_cap, &resp_info->ht_cap, sizeof(mac_info->ht_cap));
-	memcpy(&mac_info->vht_cap, &resp_info->vht_cap,
-	       sizeof(mac_info->vht_cap));
+	memcpy(&mac_info->ht_cap_mod_mask, &resp_info->ht_cap_mod_mask,
+	       sizeof(mac_info->ht_cap_mod_mask));
+	memcpy(&mac_info->vht_cap_mod_mask, &resp_info->vht_cap_mod_mask,
+	       sizeof(mac_info->vht_cap_mod_mask));
 }
 
 static void qtnf_cmd_resp_band_fill_htcap(const u8 *info,
diff --git a/drivers/net/wireless/quantenna/qtnfmac/core.h b/drivers/net/wireless/quantenna/qtnfmac/core.h
index da2c24e..74b94ce 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/core.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/core.h
@@ -103,8 +103,8 @@ struct qtnf_mac_info {
 	u8 sretry_limit;
 	u8 coverage_class;
 	u8 radar_detect_widths;
-	struct ieee80211_ht_cap ht_cap;
-	struct ieee80211_vht_cap vht_cap;
+	struct ieee80211_ht_cap ht_cap_mod_mask;
+	struct ieee80211_vht_cap vht_cap_mod_mask;
 	struct ieee80211_iface_limit *limits;
 	size_t n_limits;
 };
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index dfef7fa..b2c4e27 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -636,8 +636,8 @@ struct qlink_resp {
  *	specified WMAC).
  * @num_tx_chain: Number of transmit chains used by WMAC.
  * @num_rx_chain: Number of receive chains used by WMAC.
- * @vht_cap: VHT capabilities.
- * @ht_cap: HT capabilities.
+ * @vht_cap_mod_mask: mask specifying which VHT capabilities can be altered.
+ * @ht_cap_mod_mask: mask specifying which HT capabilities can be altered.
  * @bands_cap: wireless bands WMAC can operate in, bitmap of &enum qlink_band.
  * @phymode_cap: PHY modes WMAC can operate in, bitmap of &enum qlink_phy_mode.
  * @max_ap_assoc_sta: Maximum number of associations supported by WMAC.
@@ -649,8 +649,8 @@ struct qlink_resp_get_mac_info {
 	u8 dev_mac[ETH_ALEN];
 	u8 num_tx_chain;
 	u8 num_rx_chain;
-	struct ieee80211_vht_cap vht_cap;
-	struct ieee80211_ht_cap ht_cap;
+	struct ieee80211_vht_cap vht_cap_mod_mask;
+	struct ieee80211_ht_cap ht_cap_mod_mask;
 	u8 bands_cap;
 	u8 phymode_cap;
 	__le16 max_ap_assoc_sta;
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 1/9] qtnfmac: use per-band HT/VHT info from wireless device
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes
In-Reply-To: <20171031010455.27772-1-igor.mitsyanko.os@quantenna.com>

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

HT/VHT capabilities must be reported per each band supported by a radio,
not for all bands on a radio. Furthermore, driver better not assume
any capabilities and just use whetever is reported by device itself.

To support this, convert "get channels" command into "get band info"
command. Difference is that it may also carry HT/VHT capabilities along
with channels information.

While at it, also add "num_bitrates" field to "get band info" command,
for future use.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 30 +--------
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 77 +++++++++++++++++++----
 drivers/net/wireless/quantenna/qtnfmac/commands.h |  4 +-
 drivers/net/wireless/quantenna/qtnfmac/core.c     |  3 +-
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 29 +++++----
 5 files changed, 84 insertions(+), 59 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index e70f5bd..2f60331 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -823,8 +823,7 @@ static void qtnf_cfg80211_reg_notifier(struct wiphy *wiphy_in,
 			if (!wiphy->bands[band])
 				continue;
 
-			ret = qtnf_cmd_get_mac_chan_info(mac,
-							 wiphy->bands[band]);
+			ret = qtnf_cmd_band_info_get(mac, wiphy->bands[band]);
 			if (ret)
 				pr_err("failed to get chan info for mac %u band %u\n",
 				       mac_idx, band);
@@ -832,33 +831,6 @@ static void qtnf_cfg80211_reg_notifier(struct wiphy *wiphy_in,
 	}
 }
 
-void qtnf_band_setup_htvht_caps(struct qtnf_mac_info *macinfo,
-				struct ieee80211_supported_band *band)
-{
-	struct ieee80211_sta_ht_cap *ht_cap;
-	struct ieee80211_sta_vht_cap *vht_cap;
-
-	ht_cap = &band->ht_cap;
-	ht_cap->ht_supported = true;
-	memcpy(&ht_cap->cap, &macinfo->ht_cap.cap_info,
-	       sizeof(u16));
-	ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-	ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_NONE;
-	memcpy(&ht_cap->mcs, &macinfo->ht_cap.mcs,
-	       sizeof(ht_cap->mcs));
-
-	if (macinfo->phymode_cap & QLINK_PHYMODE_AC) {
-		vht_cap = &band->vht_cap;
-		vht_cap->vht_supported = true;
-		memcpy(&vht_cap->cap,
-		       &macinfo->vht_cap.vht_cap_info, sizeof(u32));
-		/* Update MCS support for VHT */
-		memcpy(&vht_cap->vht_mcs,
-		       &macinfo->vht_cap.supp_mcs,
-		       sizeof(struct ieee80211_vht_mcs_info));
-	}
-}
-
 struct wiphy *qtnf_wiphy_allocate(struct qtnf_bus *bus)
 {
 	struct wiphy *wiphy;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index b81f81b..a7422c5 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -1115,19 +1115,50 @@ qtnf_cmd_resp_proc_mac_info(struct qtnf_wmac *mac,
 	       sizeof(mac_info->vht_cap));
 }
 
+static void qtnf_cmd_resp_band_fill_htcap(const u8 *info,
+					  struct ieee80211_sta_ht_cap *bcap)
+{
+	const struct ieee80211_ht_cap *ht_cap =
+		(const struct ieee80211_ht_cap *)info;
+
+	bcap->ht_supported = true;
+	bcap->cap = le16_to_cpu(ht_cap->cap_info);
+	bcap->ampdu_factor =
+		ht_cap->ampdu_params_info & IEEE80211_HT_AMPDU_PARM_FACTOR;
+	bcap->ampdu_density =
+		(ht_cap->ampdu_params_info & IEEE80211_HT_AMPDU_PARM_DENSITY) >>
+		IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT;
+	memcpy(&bcap->mcs, &ht_cap->mcs, sizeof(bcap->mcs));
+}
+
+static void qtnf_cmd_resp_band_fill_vhtcap(const u8 *info,
+					   struct ieee80211_sta_vht_cap *bcap)
+{
+	const struct ieee80211_vht_cap *vht_cap =
+		(const struct ieee80211_vht_cap *)info;
+
+	bcap->vht_supported = true;
+	bcap->cap = le32_to_cpu(vht_cap->vht_cap_info);
+	memcpy(&bcap->vht_mcs, &vht_cap->supp_mcs, sizeof(bcap->vht_mcs));
+}
+
 static int
-qtnf_cmd_resp_fill_channels_info(struct ieee80211_supported_band *band,
-				 struct qlink_resp_get_chan_info *resp,
-				 size_t payload_len)
+qtnf_cmd_resp_fill_band_info(struct ieee80211_supported_band *band,
+			     struct qlink_resp_band_info_get *resp,
+			     size_t payload_len)
 {
 	u16 tlv_type;
 	size_t tlv_len;
+	size_t tlv_dlen;
 	const struct qlink_tlv_hdr *tlv;
 	const struct qlink_tlv_channel *qchan;
 	struct ieee80211_channel *chan;
 	unsigned int chidx = 0;
 	u32 qflags;
 
+	memset(&band->ht_cap, 0, sizeof(band->ht_cap));
+	memset(&band->vht_cap, 0, sizeof(band->vht_cap));
+
 	if (band->channels) {
 		if (band->n_channels == resp->num_chans) {
 			memset(band->channels, 0,
@@ -1155,7 +1186,8 @@ qtnf_cmd_resp_fill_channels_info(struct ieee80211_supported_band *band,
 
 	while (payload_len >= sizeof(*tlv)) {
 		tlv_type = le16_to_cpu(tlv->type);
-		tlv_len = le16_to_cpu(tlv->len) + sizeof(*tlv);
+		tlv_dlen = le16_to_cpu(tlv->len);
+		tlv_len = tlv_dlen + sizeof(*tlv);
 
 		if (tlv_len > payload_len) {
 			pr_warn("malformed TLV 0x%.2X; LEN: %zu\n",
@@ -1241,13 +1273,32 @@ qtnf_cmd_resp_fill_channels_info(struct ieee80211_supported_band *band,
 				 chan->hw_value, chan->flags, chan->max_power,
 				 chan->max_reg_power);
 			break;
+		case WLAN_EID_HT_CAPABILITY:
+			if (unlikely(tlv_dlen !=
+				     sizeof(struct ieee80211_ht_cap))) {
+				pr_err("bad HTCAP TLV len %zu\n", tlv_dlen);
+				goto error_ret;
+			}
+
+			qtnf_cmd_resp_band_fill_htcap(tlv->val, &band->ht_cap);
+			break;
+		case WLAN_EID_VHT_CAPABILITY:
+			if (unlikely(tlv_dlen !=
+				     sizeof(struct ieee80211_vht_cap))) {
+				pr_err("bad VHTCAP TLV len %zu\n", tlv_dlen);
+				goto error_ret;
+			}
+
+			qtnf_cmd_resp_band_fill_vhtcap(tlv->val,
+						       &band->vht_cap);
+			break;
 		default:
 			pr_warn("unknown TLV type: %#x\n", tlv_type);
 			break;
 		}
 
 		payload_len -= tlv_len;
-		tlv = (struct qlink_tlv_hdr *)((u8 *)tlv + tlv_len);
+		tlv = (struct qlink_tlv_hdr *)(tlv->val + tlv_dlen);
 	}
 
 	if (payload_len) {
@@ -1469,13 +1520,13 @@ int qtnf_cmd_get_hw_info(struct qtnf_bus *bus)
 	return ret;
 }
 
-int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac,
-			       struct ieee80211_supported_band *band)
+int qtnf_cmd_band_info_get(struct qtnf_wmac *mac,
+			   struct ieee80211_supported_band *band)
 {
 	struct sk_buff *cmd_skb, *resp_skb = NULL;
 	size_t info_len;
-	struct qlink_cmd_chans_info_get *cmd;
-	struct qlink_resp_get_chan_info *resp;
+	struct qlink_cmd_band_info_get *cmd;
+	struct qlink_resp_band_info_get *resp;
 	u16 res_code = QLINK_CMD_RESULT_OK;
 	int ret = 0;
 	u8 qband;
@@ -1495,12 +1546,12 @@ int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac,
 	}
 
 	cmd_skb = qtnf_cmd_alloc_new_cmdskb(mac->macid, 0,
-					    QLINK_CMD_CHANS_INFO_GET,
+					    QLINK_CMD_BAND_INFO_GET,
 					    sizeof(*cmd));
 	if (!cmd_skb)
 		return -ENOMEM;
 
-	cmd = (struct qlink_cmd_chans_info_get *)cmd_skb->data;
+	cmd = (struct qlink_cmd_band_info_get *)cmd_skb->data;
 	cmd->band = qband;
 
 	qtnf_bus_lock(mac->bus);
@@ -1517,7 +1568,7 @@ int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac,
 		goto out;
 	}
 
-	resp = (struct qlink_resp_get_chan_info *)resp_skb->data;
+	resp = (struct qlink_resp_band_info_get *)resp_skb->data;
 	if (resp->band != qband) {
 		pr_err("MAC%u: reply band %u != cmd band %u\n", mac->macid,
 		       resp->band, qband);
@@ -1525,7 +1576,7 @@ int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac,
 		goto out;
 	}
 
-	ret = qtnf_cmd_resp_fill_channels_info(band, resp, info_len);
+	ret = qtnf_cmd_resp_fill_band_info(band, resp, info_len);
 
 out:
 	qtnf_bus_unlock(mac->bus);
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.h b/drivers/net/wireless/quantenna/qtnfmac/commands.h
index e87c4a4..d6fe3cc 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.h
@@ -30,8 +30,8 @@ int qtnf_cmd_send_add_intf(struct qtnf_vif *vif, enum nl80211_iftype iftype,
 int qtnf_cmd_send_change_intf_type(struct qtnf_vif *vif,
 				   enum nl80211_iftype iftype, u8 *mac_addr);
 int qtnf_cmd_send_del_intf(struct qtnf_vif *vif);
-int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac,
-			       struct ieee80211_supported_band *band);
+int qtnf_cmd_band_info_get(struct qtnf_wmac *mac,
+			   struct ieee80211_supported_band *band);
 int qtnf_cmd_send_regulatory_config(struct qtnf_wmac *mac, const char *alpha2);
 int qtnf_cmd_send_config_ap(struct qtnf_vif *vif,
 			    const struct cfg80211_ap_settings *s);
diff --git a/drivers/net/wireless/quantenna/qtnfmac/core.c b/drivers/net/wireless/quantenna/qtnfmac/core.c
index 6a6e5ff..2d2c1ea 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/core.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/core.c
@@ -171,7 +171,7 @@ static int qtnf_mac_init_single_band(struct wiphy *wiphy,
 
 	wiphy->bands[band]->band = band;
 
-	ret = qtnf_cmd_get_mac_chan_info(mac, wiphy->bands[band]);
+	ret = qtnf_cmd_band_info_get(mac, wiphy->bands[band]);
 	if (ret) {
 		pr_err("MAC%u: band %u: failed to get chans info: %d\n",
 		       mac->macid, band, ret);
@@ -179,7 +179,6 @@ static int qtnf_mac_init_single_band(struct wiphy *wiphy,
 	}
 
 	qtnf_band_init_rates(wiphy->bands[band]);
-	qtnf_band_setup_htvht_caps(&mac->macinfo, wiphy->bands[band]);
 
 	return 0;
 }
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index 0f58278..dfef7fa 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -168,11 +168,12 @@ struct qlink_auth_encr {
  * Commands are QLINK messages of type @QLINK_MSG_TYPE_CMD, sent by driver to
  * wireless network device for processing. Device is expected to send back a
  * reply message of type &QLINK_MSG_TYPE_CMDRSP, containing at least command
- * execution status (one of &enum qlink_cmd_result) at least. Reply message
+ * execution status (one of &enum qlink_cmd_result). Reply message
  * may also contain data payload specific to the command type.
  *
- * @QLINK_CMD_CHANS_INFO_GET: for the specified MAC and specified band, get
- *	number of operational channels and information on each of the channel.
+ * @QLINK_CMD_BAND_INFO_GET: for the specified MAC and specified band, get
+ *	the band's description including number of operational channels and
+ *	info on each channel, HT/VHT capabilities, supported rates etc.
  *	This command is generic to a specified MAC, interface index must be set
  *	to QLINK_VIFID_RSVD in command header.
  * @QLINK_CMD_REG_NOTIFY: notify device about regulatory domain change. This
@@ -194,7 +195,7 @@ enum qlink_cmd_type {
 	QLINK_CMD_CHANGE_INTF		= 0x0017,
 	QLINK_CMD_UPDOWN_INTF		= 0x0018,
 	QLINK_CMD_REG_NOTIFY		= 0x0019,
-	QLINK_CMD_CHANS_INFO_GET	= 0x001A,
+	QLINK_CMD_BAND_INFO_GET		= 0x001A,
 	QLINK_CMD_CHAN_SWITCH		= 0x001B,
 	QLINK_CMD_CHAN_GET		= 0x001C,
 	QLINK_CMD_CONFIG_AP		= 0x0020,
@@ -477,11 +478,11 @@ enum qlink_band {
 };
 
 /**
- * struct qlink_cmd_chans_info_get - data for QLINK_CMD_CHANS_INFO_GET command
+ * struct qlink_cmd_band_info_get - data for QLINK_CMD_BAND_INFO_GET command
  *
- * @band: a PHY band for which channels info is needed, one of @enum qlink_band
+ * @band: a PHY band for which information is queried, one of @enum qlink_band
  */
-struct qlink_cmd_chans_info_get {
+struct qlink_cmd_band_info_get {
 	struct qlink_cmd chdr;
 	u8 band;
 } __packed;
@@ -730,17 +731,19 @@ struct qlink_resp_get_sta_info {
 } __packed;
 
 /**
- * struct qlink_resp_get_chan_info - response for QLINK_CMD_CHANS_INFO_GET cmd
+ * struct qlink_resp_band_info_get - response for QLINK_CMD_BAND_INFO_GET cmd
  *
- * @band: frequency band to which channels belong to, one of @enum qlink_band.
- * @num_chans: total number of channels info data contained in reply data.
- * @info: variable-length channels info.
+ * @band: frequency band that the response describes, one of @enum qlink_band.
+ * @num_chans: total number of channels info TLVs contained in reply.
+ * @num_bitrates: total number of bitrate TLVs contained in reply.
+ * @info: variable-length info portion.
  */
-struct qlink_resp_get_chan_info {
+struct qlink_resp_band_info_get {
 	struct qlink_resp rhdr;
 	u8 band;
 	u8 num_chans;
-	u8 rsvd[2];
+	u8 num_bitrates;
+	u8 rsvd[1];
 	u8 info[0];
 } __packed;
 
-- 
2.9.5

^ permalink raw reply related

* [PATCH V2 0/9] qtnfmac: allow to configure channel, BW, HT/VHT caps
From: igor.mitsyanko.os @ 2017-10-31  1:04 UTC (permalink / raw)
  To: linux-wireless; +Cc: sergey.matyukevich.os, vulyanov, johannes

From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>

This patchset has a goal to make operational parameters (channel, BW,
HT/VHT capabilities) configuration possible for qtnfmac driver.

It was part of bigger changeset when it was V1, rest are already applied.

Changelist V1->V2:
PATCH 8:
  - fix a typo causing initialization of HT capabilities with VHT data.

Igor Mitsyanko (9):
  qtnfmac: use per-band HT/VHT info from wireless device
  qtnfmac: initialize HT/VHT caps "can override" masks
  qtnfmac: get rid of PHYMODE capabilities flags
  qtnfmac: extend "IE set" TLV to include frame type info
  qtnfmac: SCAN results: retreive frame type information from "IE set"
    TLV
  qtnfmac: convert "Append IEs" command to QTN_TLV_ID_IE_SET usage
  qtnfmac: configure and start AP interface with a single command
  qtnfmac: include HTCAP and VHTCAP into config AP command
  qtnfmac: pass all CONNECT cmd params to wireless card for processing

 drivers/net/wireless/quantenna/qtnfmac/cfg80211.c |  64 +----
 drivers/net/wireless/quantenna/qtnfmac/commands.c | 276 +++++++++++++++-------
 drivers/net/wireless/quantenna/qtnfmac/commands.h |   9 +-
 drivers/net/wireless/quantenna/qtnfmac/core.c     |   3 +-
 drivers/net/wireless/quantenna/qtnfmac/core.h     |   5 +-
 drivers/net/wireless/quantenna/qtnfmac/event.c    |  83 ++++---
 drivers/net/wireless/quantenna/qtnfmac/qlink.h    | 138 ++++++-----
 7 files changed, 330 insertions(+), 248 deletions(-)

-- 
2.9.5

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox