1. 04 10月, 2017 1 次提交
  2. 25 9月, 2017 5 次提交
    • L
      wcn36xx: Disable 5GHz for wcn3620 · fd52bdae
      Loic Poulain 提交于
      wcn3620 can only operate on 2.4GHz band due to RF limitation.
      If wcn36xx digital block is associated with an external IRIS
      RF module, retrieve the id and disable 5GHz band in case of
      wcn3620 id.
      Signed-off-by: NLoic Poulain <loic.poulain@linaro.org>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      fd52bdae
    • V
      ath9k: Avoid a potential deadlock · ba24d63d
      Ville Syrjälä 提交于
      Lockdep warns us that sc_pm_lock and cc_lock can cause a deadlock when
      cc_lock is acquired by itself with interrupts enabled. Disable irqs
      whenever taking cc_lock to avoid this.
      
      [   19.094524] kworker/u2:0/5 just changed the state of lock:
      [   19.094578]  (&(&sc->sc_pm_lock)->rlock){-.-...}, at: [<f836c00e>] ath_isr+0x15e/0x200 [ath9k]
      [   19.094674] but this lock took another, HARDIRQ-unsafe lock in the past:
      [   19.094731]  (&(&common->cc_lock)->rlock){+.-...}
      [   19.094741]
      
                     and interrupts could create inverse lock ordering between them.
      
      [   19.094866]
                     other info that might help us debug this:
      [   19.094926]  Possible interrupt unsafe locking scenario:
      
      [   19.094985]        CPU0                    CPU1
      [   19.095036]        ----                    ----
      [   19.095086]   lock(&(&common->cc_lock)->rlock);
      [   19.095197]                                local_irq_disable();
      [   19.095305]                                lock(&(&sc->sc_pm_lock)->rlock);
      [   19.095423]                                lock(&(&common->cc_lock)->rlock);
      [   19.095539]   <Interrupt>
      [   19.095636]     lock(&(&sc->sc_pm_lock)->rlock);
      [   19.095745]
                      *** DEADLOCK ***
      
      [   19.095965] 3 locks held by kworker/u2:0/5:
      [   19.096067]  #0:  ("%s"wiphy_name(local->hw.wiphy)){.+.+.+}, at: [<c1067f37>] process_one_work+0x127/0x580
      [   19.096260]  #1:  ((&local->dynamic_ps_enable_work)){+.+...}, at: [<c1067f37>] process_one_work+0x127/0x580
      [   19.096447]  #2:  (&sc->mutex){+.+...}, at: [<f836b8b0>] ath9k_config+0x30/0x1d0 [ath9k]
      [   19.096639]
                     the shortest dependencies between 2nd lock and 1st lock:
      [   19.096813]  -> (&(&common->cc_lock)->rlock){+.-...} ops: 38 {
      [   19.096816]     HARDIRQ-ON-W at:
      [   19.096816]                       __lock_acquire+0x57e/0x1260
      [   19.096816]                       lock_acquire+0xb1/0x1c0
      [   19.096816]                       _raw_spin_lock_bh+0x3f/0x50
      [   19.096816]                       ath_chanctx_set_channel+0xb6/0x2c0 [ath9k]
      [   19.096816]                       ath9k_config+0xa8/0x1d0 [ath9k]
      [   19.096816]                       ieee80211_hw_config+0xa8/0x5f0 [mac80211]
      [   19.096816]                       ieee80211_do_open+0x67a/0x920 [mac80211]
      [   19.096816]                       ieee80211_open+0x41/0x50 [mac80211]
      [   19.096816]                       __dev_open+0xab/0x140
      [   19.096816]                       __dev_change_flags+0x89/0x150
      [   19.096816]                       dev_change_flags+0x28/0x60
      [   19.096816]                       do_setlink+0x290/0x890
      [   19.096816]                       rtnl_newlink+0x7cf/0x8e0
      [   19.096816]                       rtnetlink_rcv_msg+0xbf/0x1f0
      [   19.096816]                       netlink_rcv_skb+0xb9/0xe0
      [   19.096816]                       rtnetlink_rcv+0x1e/0x30
      [   19.096816]                       netlink_unicast+0x13a/0x2c0
      [   19.096816]                       netlink_sendmsg+0x290/0x380
      [   19.096816]                       ___sys_sendmsg+0x1e2/0x280
      [   19.096816]                       __sys_sendmsg+0x3f/0x80
      [   19.096816]                       SyS_socketcall+0x58c/0x6b0
      [   19.096816]                       do_fast_syscall_32+0x96/0x1d0
      [   19.096816]                       entry_SYSENTER_32+0x4c/0x7b
      [   19.096816]     IN-SOFTIRQ-W at:
      [   19.096816]                       __lock_acquire+0x55a/0x1260
      [   19.096816]                       lock_acquire+0xb1/0x1c0
      [   19.096816]                       _raw_spin_lock+0x3c/0x50
      [   19.096816]                       ath_ps_full_sleep+0x24/0x70 [ath9k]
      [   19.096816]                       call_timer_fn+0xa4/0x300
      [   19.096816]                       run_timer_softirq+0x1b1/0x560
      [   19.096816]                       __do_softirq+0xb0/0x430
      [   19.096816]                       do_softirq_own_stack+0x33/0x40
      [   19.096816]                       irq_exit+0xad/0xc0
      [   19.096816]                       smp_apic_timer_interrupt+0x31/0x40
      [   19.096816]                       apic_timer_interrupt+0x37/0x3c
      [   19.096816]                       wp_page_copy+0xb8/0x580
      [   19.096816]                       do_wp_page+0x64/0x420
      [   19.096816]                       handle_mm_fault+0x430/0x990
      [   19.096816]                       __do_page_fault+0x18b/0x430
      [   19.096816]                       do_page_fault+0xb/0x10
      [   19.096816]                       common_exception+0x62/0x6a
      [   19.096816]     INITIAL USE at:
      [   19.096816]                      __lock_acquire+0x204/0x1260
      [   19.096816]                      lock_acquire+0xb1/0x1c0
      [   19.096816]                      _raw_spin_lock_bh+0x3f/0x50
      [   19.096816]                      ath_chanctx_set_channel+0xb6/0x2c0 [ath9k]
      [   19.096816]                      ath9k_config+0xa8/0x1d0 [ath9k]
      [   19.096816]                      ieee80211_hw_config+0xa8/0x5f0 [mac80211]
      [   19.096816]                      ieee80211_do_open+0x67a/0x920 [mac80211]
      [   19.096816]                      ieee80211_open+0x41/0x50 [mac80211]
      [   19.096816]                      __dev_open+0xab/0x140
      [   19.096816]                      __dev_change_flags+0x89/0x150
      [   19.096816]                      dev_change_flags+0x28/0x60
      [   19.096816]                      do_setlink+0x290/0x890
      [   19.096816]                      rtnl_newlink+0x7cf/0x8e0
      [   19.096816]                      rtnetlink_rcv_msg+0xbf/0x1f0
      [   19.096816]                      netlink_rcv_skb+0xb9/0xe0
      [   19.096816]                      rtnetlink_rcv+0x1e/0x30
      [   19.096816]                      netlink_unicast+0x13a/0x2c0
      [   19.096816]                      netlink_sendmsg+0x290/0x380
      [   19.096816]                      ___sys_sendmsg+0x1e2/0x280
      [   19.096816]                      __sys_sendmsg+0x3f/0x80
      [   19.096816]                      SyS_socketcall+0x58c/0x6b0
      [   19.096816]                      do_fast_syscall_32+0x96/0x1d0
      [   19.096816]                      entry_SYSENTER_32+0x4c/0x7b
      [   19.096816]   }
      [   19.096816]   ... key      at: [<f837b694>] __key.61991+0x0/0xffffc96c [ath9k]
      [   19.096816]   ... acquired at:
      [   19.096816]    lock_acquire+0xb1/0x1c0
      [   19.096816]    _raw_spin_lock+0x3c/0x50
      [   19.096816]    ath9k_ps_wakeup+0x85/0xe0 [ath9k]
      [   19.096816]    ath9k_bss_info_changed+0x2a/0x1b0 [ath9k]
      [   19.096816]    ieee80211_bss_info_change_notify+0xf3/0x360 [mac80211]
      [   19.096816]    ieee80211_recalc_txpower+0x33/0x40 [mac80211]
      [   19.096816]    ieee80211_set_tx_power+0x45/0x1d0 [mac80211]
      [   19.096816]    cfg80211_wext_siwtxpower+0xd3/0x350 [cfg80211]
      [   19.096816]    ioctl_standard_call+0x4e/0x400
      [   19.096816]    wext_handle_ioctl+0xf4/0x190
      [   19.096816]    dev_ioctl+0xb7/0x630
      [   19.096816]    sock_ioctl+0x13e/0x2d0
      [   19.096816]    do_vfs_ioctl+0x84/0x750
      [   19.096816]    SyS_ioctl+0x34/0x60
      [   19.096816]    do_fast_syscall_32+0x96/0x1d0
      [   19.096816]    entry_SYSENTER_32+0x4c/0x7b
      
      [   19.096816] -> (&(&sc->sc_pm_lock)->rlock){-.-...} ops: 597 {
      [   19.096816]    IN-HARDIRQ-W at:
      [   19.096816]                     __lock_acquire+0x6ae/0x1260
      [   19.096816]                     lock_acquire+0xb1/0x1c0
      [   19.096816]                     _raw_spin_lock_irqsave+0x45/0x60
      [   19.096816]                     ath_isr+0x15e/0x200 [ath9k]
      [   19.096816]                     __handle_irq_event_percpu+0x44/0x340
      [   19.096816]                     handle_irq_event_percpu+0x1d/0x50
      [   19.096816]                     handle_irq_event+0x32/0x60
      [   19.096816]                     handle_level_irq+0x81/0x100
      [   19.096816]                     handle_irq+0x9c/0xd0
      [   19.096816]                     do_IRQ+0x5c/0x120
      [   19.096816]                     common_interrupt+0x36/0x3c
      [   19.096816]                     _raw_spin_unlock_irqrestore+0x57/0x70
      [   19.096816]                     ath9k_config+0x16a/0x1d0 [ath9k]
      [   19.096816]                     ieee80211_hw_config+0xa8/0x5f0 [mac80211]
      [   19.096816]                     ieee80211_dynamic_ps_enable_work+0x1c3/0x680 [mac80211]
      [   19.096816]                     process_one_work+0x1d1/0x580
      [   19.096816]                     worker_thread+0x31/0x380
      [   19.096816]                     kthread+0xd9/0x110
      [   19.096816]                     ret_from_fork+0x19/0x24
      [   19.096816]    IN-SOFTIRQ-W at:
      [   19.096816]                     __lock_acquire+0x55a/0x1260
      [   19.096816]                     lock_acquire+0xb1/0x1c0
      [   19.096816]                     _raw_spin_lock_irqsave+0x45/0x60
      [   19.096816]                     ath9k_ps_wakeup+0x24/0xe0 [ath9k]
      [   19.096816]                     ath9k_tasklet+0x42/0x260 [ath9k]
      [   19.096816]                     tasklet_action+0x196/0x1e0
      [   19.096816]                     __do_softirq+0xb0/0x430
      [   19.096816]                     do_softirq_own_stack+0x33/0x40
      [   19.096816]                     irq_exit+0xad/0xc0
      [   19.096816]                     do_IRQ+0x65/0x120
      [   19.096816]                     common_interrupt+0x36/0x3c
      [   19.096816]                     get_page_from_freelist+0x20a/0x970
      [   19.096816]                     __alloc_pages_nodemask+0xca/0xed0
      [   19.096816]                     __get_free_pages+0x14/0x30
      [   19.096816]                     pgd_alloc+0x1d/0x160
      [   19.096816]                     mm_init.isra.47+0x13a/0x1b0
      [   19.096816]                     copy_process.part.54+0xb55/0x1700
      [   19.096816]                     _do_fork+0xd4/0x6a0
      [   19.096816]                     SyS_clone+0x27/0x30
      [   19.096816]                     do_fast_syscall_32+0x96/0x1d0
      [   19.096816]                     entry_SYSENTER_32+0x4c/0x7b
      [   19.096816]    INITIAL USE at:
      [   19.096816]                    __lock_acquire+0x204/0x1260
      [   19.096816]                    lock_acquire+0xb1/0x1c0
      [   19.096816]                    _raw_spin_lock_irqsave+0x45/0x60
      [   19.096816]                    ath9k_ps_wakeup+0x24/0xe0 [ath9k]
      [   19.096816]                    ath9k_start+0x29/0x1f0 [ath9k]
      [   19.096816]                    drv_start+0x71/0x270 [mac80211]
      [   19.096816]                    ieee80211_do_open+0x31f/0x920 [mac80211]
      [   19.096816]                    ieee80211_open+0x41/0x50 [mac80211]
      [   19.096816]                    __dev_open+0xab/0x140
      [   19.096816]                    __dev_change_flags+0x89/0x150
      [   19.096816]                    dev_change_flags+0x28/0x60
      [   19.096816]                    do_setlink+0x290/0x890
      [   19.096816]                    rtnl_newlink+0x7cf/0x8e0
      [   19.096816]                    rtnetlink_rcv_msg+0xbf/0x1f0
      [   19.096816]                    netlink_rcv_skb+0xb9/0xe0
      [   19.096816]                    rtnetlink_rcv+0x1e/0x30
      [   19.096816]                    netlink_unicast+0x13a/0x2c0
      [   19.096816]                    netlink_sendmsg+0x290/0x380
      [   19.096816]                    ___sys_sendmsg+0x1e2/0x280
      [   19.096816]                    __sys_sendmsg+0x3f/0x80
      [   19.096816]                    SyS_socketcall+0x58c/0x6b0
      [   19.096816]                    do_fast_syscall_32+0x96/0x1d0
      [   19.096816]                    entry_SYSENTER_32+0x4c/0x7b
      [   19.096816]  }
      [   19.096816]  ... key      at: [<f837b67c>] __key.61994+0x0/0xffffc984 [ath9k]
      [   19.096816]  ... acquired at:
      [   19.096816]    check_usage_forwards+0x118/0x120
      [   19.096816]    mark_lock+0x2e4/0x590
      [   19.096816]    __lock_acquire+0x6ae/0x1260
      [   19.096816]    lock_acquire+0xb1/0x1c0
      [   19.096816]    _raw_spin_lock_irqsave+0x45/0x60
      [   19.096816]    ath_isr+0x15e/0x200 [ath9k]
      [   19.096816]    __handle_irq_event_percpu+0x44/0x340
      [   19.096816]    handle_irq_event_percpu+0x1d/0x50
      [   19.096816]    handle_irq_event+0x32/0x60
      [   19.096816]    handle_level_irq+0x81/0x100
      [   19.096816]    handle_irq+0x9c/0xd0
      [   19.096816]    do_IRQ+0x5c/0x120
      [   19.096816]    common_interrupt+0x36/0x3c
      [   19.096816]    _raw_spin_unlock_irqrestore+0x57/0x70
      [   19.096816]    ath9k_config+0x16a/0x1d0 [ath9k]
      [   19.096816]    ieee80211_hw_config+0xa8/0x5f0 [mac80211]
      [   19.096816]    ieee80211_dynamic_ps_enable_work+0x1c3/0x680 [mac80211]
      [   19.096816]    process_one_work+0x1d1/0x580
      [   19.096816]    worker_thread+0x31/0x380
      [   19.096816]    kthread+0xd9/0x110
      [   19.096816]    ret_from_fork+0x19/0x24
      
      [   19.096816]
                     stack backtrace:
      [   19.096816] CPU: 0 PID: 5 Comm: kworker/u2:0 Not tainted 4.13.0-mgm-ovl+ #51
      [   19.096816] Hardware name: FUJITSU SIEMENS LIFEBOOK S6120/FJNB16C, BIOS Version 1.26  05/10/2004
      [   19.096816] Workqueue: phy0 ieee80211_dynamic_ps_enable_work [mac80211]
      [   19.096816] Call Trace:
      [   19.096816]  <IRQ>
      [   19.096816]  dump_stack+0x16/0x19
      [   19.096816]  print_irq_inversion_bug.part.37+0x16c/0x179
      [   19.096816]  check_usage_forwards+0x118/0x120
      [   19.096816]  ? ret_from_fork+0x19/0x24
      [   19.096816]  ? print_shortest_lock_dependencies+0x1a0/0x1a0
      [   19.096816]  mark_lock+0x2e4/0x590
      [   19.096816]  ? print_shortest_lock_dependencies+0x1a0/0x1a0
      [   19.096816]  __lock_acquire+0x6ae/0x1260
      [   19.096816]  lock_acquire+0xb1/0x1c0
      [   19.096816]  ? ath_isr+0x15e/0x200 [ath9k]
      [   19.096816]  _raw_spin_lock_irqsave+0x45/0x60
      [   19.096816]  ? ath_isr+0x15e/0x200 [ath9k]
      [   19.096816]  ath_isr+0x15e/0x200 [ath9k]
      [   19.096816]  __handle_irq_event_percpu+0x44/0x340
      [   19.096816]  handle_irq_event_percpu+0x1d/0x50
      [   19.096816]  handle_irq_event+0x32/0x60
      [   19.096816]  ? handle_nested_irq+0x100/0x100
      [   19.096816]  handle_level_irq+0x81/0x100
      [   19.096816]  handle_irq+0x9c/0xd0
      [   19.096816]  </IRQ>
      [   19.096816]  do_IRQ+0x5c/0x120
      [   19.096816]  common_interrupt+0x36/0x3c
      [   19.096816] EIP: _raw_spin_unlock_irqrestore+0x57/0x70
      [   19.096816] EFLAGS: 00000286 CPU: 0
      [   19.096816] EAX: f60a3600 EBX: 00000286 ECX: 00000006 EDX: 00000001
      [   19.096816] ESI: f46c9e68 EDI: f46c8620 EBP: f60b5e8c ESP: f60b5e84
      [   19.096816]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
      [   19.096816]  ath9k_config+0x16a/0x1d0 [ath9k]
      [   19.096816]  ieee80211_hw_config+0xa8/0x5f0 [mac80211]
      [   19.096816]  ? ieee80211_hw_config+0x1db/0x5f0 [mac80211]
      [   19.096816]  ieee80211_dynamic_ps_enable_work+0x1c3/0x680 [mac80211]
      [   19.096816]  ? process_one_work+0x127/0x580
      [   19.096816]  ? process_one_work+0x127/0x580
      [   19.096816]  process_one_work+0x1d1/0x580
      [   19.096816]  ? process_one_work+0x127/0x580
      [   19.096816]  worker_thread+0x31/0x380
      [   19.096816]  kthread+0xd9/0x110
      [   19.096816]  ? process_one_work+0x580/0x580
      [   19.096816]  ? kthread_create_on_node+0x30/0x30
      [   19.096816]  ret_from_fork+0x19/0x24
      
      Cc: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
      Cc: Kalle Valo <kvalo@codeaurora.org>
      Cc: netdev@vger.kernel.org
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      ba24d63d
    • B
      ath10k: make ath10k_hw_ce_regs const · 496cbf3e
      Bhumika Goyal 提交于
      Make them const as they are not modified in the file referencing
      them. They are only stored in the const field 'hw_ce_reg' of an ath10k
      structure. Also, make the declarations in the header const.
      Signed-off-by: NBhumika Goyal <bhumirks@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      496cbf3e
    • T
      ath9k: Use ARRAY_SIZE macro · 896cbefa
      Thomas Meyer 提交于
      Use ARRAY_SIZE macro, rather than explicitly coding some variant of it
      yourself.
      Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i -e
      's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\)
      /ARRAY_SIZE(\1)/g' and manual check/verification.
      Signed-off-by: NThomas Meyer <thomas@m3y3r.de>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      896cbefa
    • H
      ath9k: remove cast to void pointer · 50c8cd44
      Himanshu Jha 提交于
      casting to void pointer from any pointer type and vice-versa is done
      implicitly and therefore casting is not needed in such a case.
      
      Done using Coccinellle.
      Semantic Patch used :
      
      @r@
      expression x;
      void* e;
      type T;
      identifier f;
      @@
      
      (
        *((T *)e)
      |
        ((T *)x)[...]
      |
        ((T *)x)->f
      |
      - (T *)
        e
      )
      Signed-off-by: NHimanshu Jha <himanshujha199640@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      50c8cd44
  3. 08 9月, 2017 2 次提交
  4. 07 9月, 2017 2 次提交
    • L
      rtlwifi: btcoexist: Fix antenna selection code · 6d622692
      Larry Finger 提交于
      In commit 87d8a9f3 ("rtlwifi: btcoex: call bind to setup btcoex"),
      the code turns on a call to exhalbtc_bind_bt_coex_withadapter(). This
      routine contains a bug that causes incorrect antenna selection for those
      HP laptops with only one antenna and an incorrectly programmed EFUSE.
      These boxes are the ones that need the ant_sel module parameter.
      
      Fixes: 87d8a9f3 ("rtlwifi: btcoex: call bind to setup btcoex")
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Cc: Ping-Ke Shih <pkshih@realtek.com>
      Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
      Cc: Birming Chiu <birming@realtek.com>
      Cc: Shaofu <shaofu@realtek.com>
      Cc: Steven Ting <steventing@realtek.com>
      Cc: Stable <stable@vger.kernel.org> # 4.13+
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      6d622692
    • L
      rtlwifi: btcoexist: Fix breakage of ant_sel for rtl8723be · a33fcba6
      Larry Finger 提交于
      In commit bcd37f4a ("rtlwifi: btcoex: 23b 2ant: let bt transmit when
      hw initialisation done"), there is an additional error when the module
      parameter ant_sel is used to select the auxilary antenna. The error is
      that the antenna selection is not checked when writing the antenna
      selection register.
      
      Fixes: bcd37f4a ("rtlwifi: btcoex: 23b 2ant: let bt transmit when hw initialisation done")
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Cc: Ping-Ke Shih <pkshih@realtek.com>
      Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
      Cc: Birming Chiu <birming@realtek.com>
      Cc: Shaofu <shaofu@realtek.com>
      Cc: Steven Ting <steventing@realtek.com>
      Cc: Stable <stable@vger.kernel.org> # 4.12+
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      a33fcba6
  5. 05 9月, 2017 1 次提交
    • B
      mac80211_hwsim: Use proper TX power · 9de981f5
      Beni Lev 提交于
      In struct ieee80211_tx_info, control.vif pointer and rate_driver_data[0]
      falls on the same place, depending on the union usage.
      During the whole TX process, the union is referred to as a control struct,
      which holds the vif that is later used in the tx flow, especially in order
      to derive the used tx power.
      Referring direcly to rate_driver_data[0] and assigning a value to it,
      overwrites the vif pointer, hence making all later references irrelevant.
      Moreover, rate_driver_data[0] isn't used later in the flow in order to
      retrieve the channel that it is pointing to.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NBeni Lev <beni.lev@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9de981f5
  6. 01 9月, 2017 3 次提交
    • C
      wl1251: add a missing spin_lock_init() · f581a0dd
      Cong Wang 提交于
      wl1251: add a missing spin_lock_init()
      
      This fixes the following kernel warning:
      
       [ 5668.771453] BUG: spinlock bad magic on CPU#0, kworker/u2:3/9745
       [ 5668.771850]  lock: 0xce63ef20, .magic: 00000000, .owner: <none>/-1,
       .owner_cpu: 0
       [ 5668.772277] CPU: 0 PID: 9745 Comm: kworker/u2:3 Tainted: G        W
       4.12.0-03002-gec979a4-dirty #40
       [ 5668.772796] Hardware name: Nokia RX-51 board
       [ 5668.773071] Workqueue: phy1 wl1251_irq_work
       [ 5668.773345] [<c010c9e4>] (unwind_backtrace) from [<c010a274>]
       (show_stack+0x10/0x14)
       [ 5668.773803] [<c010a274>] (show_stack) from [<c01545a4>]
       (do_raw_spin_lock+0x6c/0xa0)
       [ 5668.774230] [<c01545a4>] (do_raw_spin_lock) from [<c06ca578>]
       (_raw_spin_lock_irqsave+0x10/0x18)
       [ 5668.774658] [<c06ca578>] (_raw_spin_lock_irqsave) from [<c048c010>]
       (wl1251_op_tx+0x38/0x5c)
       [ 5668.775115] [<c048c010>] (wl1251_op_tx) from [<c06a12e8>]
       (ieee80211_tx_frags+0x188/0x1c0)
       [ 5668.775543] [<c06a12e8>] (ieee80211_tx_frags) from [<c06a138c>]
       (__ieee80211_tx+0x6c/0x130)
       [ 5668.775970] [<c06a138c>] (__ieee80211_tx) from [<c06a3dbc>]
       (ieee80211_tx+0xdc/0x104)
       [ 5668.776367] [<c06a3dbc>] (ieee80211_tx) from [<c06a4af0>]
       (__ieee80211_subif_start_xmit+0x454/0x8c8)
       [ 5668.776824] [<c06a4af0>] (__ieee80211_subif_start_xmit) from
       [<c06a4f94>] (ieee80211_subif_start_xmit+0x30/0x2fc)
       [ 5668.777343] [<c06a4f94>] (ieee80211_subif_start_xmit) from
       [<c0578848>] (dev_hard_start_xmit+0x80/0x118)
      ...
      
          by adding the missing spin_lock_init().
      Reported-by: NPavel Machek <pavel@ucw.cz>
      Cc: Kalle Valo <kvalo@codeaurora.org>
      Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      Signed-off-by: NPavel Machek <pavel@ucw.cz>
      Cc: stable@kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f581a0dd
    • R
      ath10k: configure and enable the wakeup capability · 393b706c
      Ryan Hsu 提交于
      ACPI will rely on device driver to tell it if the device could support
      wakeup function when system in D3 state.
      
      This has caused some platform can't support remote wakeup correctly,
      because the ACPI wakeup GPE is not enabled, hence registers the .set_wakeup
      callback to handle it if device supports wakeup.
      
      Tested with QCA6174 hw3.0, firmware ('WLAN.RM.4.4.1-00008-QCARMSWP-1')
      Signed-off-by: NRyan Hsu <ryanhsu@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      393b706c
    • R
      ath10k: add the PCI PM core suspend/resume ops · 32faa3f0
      Ryan Hsu 提交于
      The actual PCI suspend/resume in ath10k has been handled in wow.c,
      but in the case of the device doesn't support remote wakeup,
      the .hif_suspend() and .hif_resume() will never be handled.
      
        ath10k_wow_op_suspend()
        {
      	if (WARN_ON(!test_bit(ATH10K_FW_FEATURE_WOWLAN_SUPPORT,
      		    ar->running_fw->fw_file.fw_features))) {
      		ret = 1;
      		goto exit;
      	}
      
      	....
      
      	ret = ath10k_hif_suspend(ar);
        }
      
      So register the PCI PM core to support the suspend/resume if the device
      doesn't support remote wakeup.
      Signed-off-by: NRyan Hsu <ryanhsu@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      32faa3f0
  7. 31 8月, 2017 21 次提交
  8. 30 8月, 2017 3 次提交
  9. 24 8月, 2017 2 次提交