1. 02 9月, 2014 3 次提交
    • M
      ath10k: kill tasklets after free_irq · 21396271
      Michal Kazior 提交于
      Commit 5c771e74
      introduced a regression. On some systems spurious
      interrupts could schedule a tasklet while tearing
      down leading to, e.g.:
      
       BUG: unable to handle kernel paging request at fe589030
       IP: [<c1316fb0>] ioread32+0x30/0x40
       ...
       Call Trace:
        [<fe576c1b>] ath10k_pci_tasklet+0x1b/0x60 [ath10k_pci]
        [<c1053fbe>] tasklet_action+0x9e/0xb0
        [<c10534f1>] __do_softirq+0xf1/0x3f0
        [<c1053400>] ? ftrace_raw_event_irq_handler_entry+0xa0/0xa0
        [<c1004999>] do_softirq_own_stack+0x29/0x40
        <IRQ>
        [<c1053a76>] irq_exit+0x86/0xb0
       ...
        [<c132d522>] do_pci_disable_device+0x52/0x60
        [<c132d57f>] pci_disable_device+0x4f/0xb0
        [<c132a961>] ? __pci_set_master+0x51/0x80
        [<fe5740b3>] ath10k_pci_release+0x33/0x40 [ath10k_pci]
        [<fe575d4b>] ath10k_pci_remove+0x7b/0x90 [ath10k_pci]
      Reported-by: NKalle Valo <kvalo@qca.qualcomm.com>
      Tested-by: NKalle Valo <kvalo@qca.qualcomm.com>
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      21396271
    • M
      ath10k: fix num_legacy_stations tracking · a4841eb6
      Michal Kazior 提交于
      If a station was reassociated, i.e. due to change
      of supported rates update via sta_rc_update() the
      num_legacy_stations would be (incorrectly) bumped
      up leading to unbalanced usage of the var. This in
      turn could lock rtscts protection up as enabled.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      a4841eb6
    • M
      ath10k: re-enable interrupts properly in hw recovery · e75db4e3
      Michal Kazior 提交于
      Recent changes done to start/restart sequences
      broke hw recovery in some hw configurations. The
      pci transport was stopped twice however due to a
      workaround in the pci disabling code the
      disable/enable for first msi interrupt was not
      balanced. This ended up with irqs not being
      properly re-enabled and the following print out
      during recovery:
      
       ath10k: failed to receive control response completion, polling..
       ath10k: Service connect timeout: -110
       ath10k: Could not init core: -110
      
      Legacy interrupt mode was unaffected while msi
      ranged mode would be partially crippled (it would
      miss fw indication interrupts but otherwise it
      worked fine).
      
      This fixes completely broken fw recovery for a
      single msi interrupt mode and fixes subsequent fw
      crash reports for msi range interrupt mode.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      e75db4e3
  2. 29 8月, 2014 37 次提交