1. Jun 30, 2016
    • Mohammed Shafi Shajakhan's avatar
      ath10k: fix crash during card removal · fb7caaba
      Mohammed Shafi Shajakhan authored
      
      
      Usually when the firmware crashes we check for the value
      'FW_IND_EVENT_PENDING' in 'FW_INDICATOR_ADDRESS' and proceed with
      disabling the irq and dumping firmware 'crash dump'. Now
      when the PCI card is unplugged from the device the PCI controller
      seems to generate a spurious interrupt after some time which
      was as treated a firmware crash and resulting in the below race
      condition (and eventually crashing the system)
      
      	ath10k_core_unregister -> ath10k_core_free_board_files
      
      	...... device unplug spurious interrupt .........
      
      	ath10k_pci_taklet -> ath10k_pci_fw_crashed_dump  ...etc
      
      Clearly even after the firmware board files related data structure
      is freed up we are getting a spurious interrupt from PCI with 0xfffffff
      in the 'FW_INDICATOR_ADDRESS' resulting in scheduling of the pci tasklet
      and doing a crash dump, printing f/w board related info resulting in the
      below crash. Fix this by detecting this spurious interrupt in ath10k PCI
      irq handler itself and return IRQ_NONE. Thanks to Michal Kazior for
      helping us conclude the most appropriate fix.
      
      Call trace:
      
       EIP is at ath10k_debug_print_board_info+0x39/0xb0
      [ath10k_core]
      EAX: 00000000 EBX: d4de15a0 ECX: 00000000 EDX: 00000064
      ESI: f615ddd0 EDI: f8530000 EBP: f615de3c ESP: f615ddbc
       DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
      CR0: 80050033 CR2: 00000004 CR3: 01c0a000 CR4: 000006f0
      Stack:
       f615ddd0 00000064 f8b4ecdd 00000000 00000000 00412f4e
      00000000 00000000
      00000000 00000000 00000000 00000000 00000000 00000000
      00000000 00000000
       00000000 00000000 00000000 00000000 00000000 00000000
      00000000 00000000
      Call Trace:
        [<f8b1f517>] ath10k_print_driver_info+0x17/0x30
      [ath10k_core]
      [<f875463a>] ath10k_pci_fw_crashed_dump+0x7a/0xe0
      [ath10k_pci]
      [<f87549d0>] ath10k_pci_tasklet+0x70/0x90 [ath10k_pci]
      [<c106151e>] tasklet_action+0x9e/0xb0
      
      Cc: Michal Kazior <michal.kazior@tieto.com>
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      fb7caaba
    • Guy Mishol's avatar
      wlcore: reconfigure sta rates on authorization · 535633a5
      Guy Mishol authored
      
      
      Since stations can now be added before association
      (NL80211_FEATURE_FULL_AP_CLIENT_STATE support),
      no supported rates are set when the station is added
      to the fw, resulting in fw recovery.
      
      Fix it by first configuring the AP basic rates as
      the station configured rates (when the station is
      first added to the driver), and after the station
      was authorized re-configure it, now with the actual
      supported rates.
      
      Signed-off-by: default avatarGuy Mishol <guym@ti.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      535633a5
    • Rafał Miłecki's avatar
      brcmfmac: add missing break when deleting P2P_DEVICE · 20856adf
      Rafał Miłecki authored
      
      
      We obviously don't want to fall through in that switch. With this change
      1) We wait for event (triggered by p2p_disc) as expected
      2) We remove interface manually on timeout
      3) We return 0 on success instead of -ENOTSUPP
      
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      20856adf
    • Rafał Miłecki's avatar
      brcmfmac: include also core.h header in cfg80211.h · bda9d014
      Rafał Miłecki authored
      
      
      This header provides two inline functions using struct brcmf_if so we
      need core.h to avoid:
      
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h: In function ‘ndev_to_prof’:
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h:368:13: error: dereferencing pointer to incomplete type
        return &ifp->vif->profile;
                   ^
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h: In function ‘ndev_to_vif’:
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h:374:12: error: dereferencing pointer to incomplete type
        return ifp->vif;
                  ^
      
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      bda9d014
  2. Jun 29, 2016
  3. Jun 28, 2016