1. 06 Oct, 2018 8 commits
    • Emmanuel Grumbach's avatar
      iwlwifi: mvm: clear HW_RESTART_REQUESTED when stopping the interface · 155f7e04
      Emmanuel Grumbach authored
      Fix a bug that happens in the following scenario:
      1) suspend without WoWLAN
      2) mac80211 calls drv_stop because of the suspend
      3) __iwl_mvm_mac_stop deallocates the aux station
      4) during drv_stop the firmware crashes
      5) iwlmvm:
      	* sets IWL_MVM_STATUS_HW_RESTART_REQUESTED
      	* asks mac80211 to kick the restart flow
      6) mac80211 puts the restart worker into a freezable
         queue which means that the worker will not run for now
         since the workqueue is already frozen
      7) ...
      8) resume
      9) mac80211 runs ieee80211_reconfig as part of the resume
      10) mac80211 detects that a restart flow has been requested
          and that we are now resuming from suspend and cancels
          the restart worker
      11) mac80211 calls drv_start()
      12) __iwl_mvm_mac_start checks that IWL_MVM_STATUS_HW_RESTART_REQUESTED
          clears it, sets IWL_MVM_STATUS_IN_HW_RESTART and calls
          iwl_mvm_restart_cleanup()
      13) iwl_fw_error_dump gets called and accesses the device
          to get debug data
      14) iwl_mvm_up adds the aux station
      15) iwl_mvm_add_aux_sta() allocates an internal station for
          the aux station
      16) iwl_mvm_allocate_int_sta() tests IWL_MVM_STATUS_IN_HW_RESTART
          and doesn't really allocate a station ID for the aux
          station
      17) a new queue is added for the aux station
      
      Note that steps from 5 to 9 aren't really part of the
      problem but were described for the sake of completeness.
      
      Once the iwl_mvm_mac_stop() is called, the device is not
      accessible, meaning that step 12) can't succeed and we'll
      see the following:
      
      drivers/net/wireless/intel/iwlwifi/pcie/trans.c:2122 iwl_trans_pcie_grab_nic_access+0xc0/0x1d6 [iwlwifi]()
      Timeout waiting for hardware access (CSR_GP_CNTRL 0x080403d8)
      Call Trace:
      [<ffffffffc03e6ad3>] iwl_trans_pcie_grab_nic_access+0xc0/0x1d6 [iwlwifi]
      [<ffffffffc03e6a13>] iwl_trans_pcie_dump_regs+0x3fd/0x3fd [iwlwifi]
      [<ffffffffc03dad42>] iwl_fw_error_dump+0x4f5/0xe8b [iwlwifi]
      [<ffffffffc04bd43e>] __iwl_mvm_mac_start+0x5a/0x21a [iwlmvm]
      [<ffffffffc04bd6d2>] iwl_mvm_mac_start+0xd4/0x103 [iwlmvm]
      [<ffffffffc042d378>] drv_start+0xa1/0xc5 [iwl7000_mac80211]
      [<ffffffffc045a339>] ieee80211_reconfig+0x145/0xf50 [mac80211]
      [<ffffffffc044788b>] ieee80211_resume+0x62/0x66 [mac80211]
      [<ffffffffc0366c5b>] wiphy_resume+0xa9/0xc6 [cfg80211]
      
      The station id of the aux station is set to 0xff in step 3
      and because we don't really allocate a new station id for
      the auxliary station (as explained in 16), we end up sending
      a command to the firmware asking to connect the queue
      to station id 0xff. This makes the firmware crash with the
      following information:
      
      0x00002093 | ADVANCED_SYSASSERT
      0x000002F0 | trm_hw_status0
      0x00000000 | trm_hw_status1
      0x00000B38 | branchlink2
      0x0001978C | interruptlink1
      0x00000000 | interruptlink2
      0xFF080501 | data1
      0xDEADBEEF | data2
      0xDEADBEEF | data3
      Firmware error during reconfiguration - reprobe!
      FW error in SYNC CMD SCD_QUEUE_CFG
      
      Fix this by clearing IWL_MVM_STATUS_HW_RESTART_REQUESTED
      in iwl_mvm_mac_stop(). We won't be able to collect debug
      data anyway and when we will brought up again, we will
      have a clean state from the firmware perspective.
      Since we won't have IWL_MVM_STATUS_IN_HW_RESTART set in
      step 12) we won't get to the 2093 ASSERT either.
      
      Fixes: bf8b286f ("iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART")
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      155f7e04
    • Sara Sharon's avatar
      iwlwifi: dbg: group trigger condition to helper function · 6c042d75
      Sara Sharon authored
      The triplet of get trigger, is trigger enabled and is trigger stopped
      repeats itself.  Group them in a function to avoid code duplication.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      6c042d75
    • Sara Sharon's avatar
      iwlwifi: dbg: dump memory in a helper function · 7339cc29
      Sara Sharon authored
      The code that dumps various memory types repeats itself.  Move it to a
      function to avoid duplication.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      7339cc29
    • Ayala Beker's avatar
      iwlwifi: mvm: allow channel reorder optimization during scan · 9c16e0bb
      Ayala Beker authored
      Allow the FW to reorder HB channels and first scan HB channels with
      assumed APs, in order to reduce the scan duration.
      
      Currently enable it for all scan requests types.
      Signed-off-by: default avatarAyala Beker <ayala.beker@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      9c16e0bb
    • Sara Sharon's avatar
      iwlwifi: dbg: split iwl_fw_error_dump to two functions · a6820511
      Sara Sharon authored
      Split iwl_fw_error_dump to two parts.  The first part will dump the
      actual data, and second will do the file allocations, trans calls and
      actual file operations.  This is done in order to enable reuse of the
      code for the new debug ini infrastructure.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      a6820511
    • Sara Sharon's avatar
      iwlwifi: dbg: refactor dump code to improve readability · 68025d5f
      Sara Sharon authored
      Add a macro to replace all the conditions checking for valid dump
      length.  In addition, move the fifo len calculation to a helper
      function.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      68025d5f
    • Sara Sharon's avatar
      iwlwifi: dbg: move debug data to a struct · 17b809c9
      Sara Sharon authored
      The debug variables are bloating the iwl_fw struct.  And the fields
      are out of order, missing docs and some are redundant.
      
      Clean this up.  This serves as preparation for unionizing it for the
      new ini infra.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      17b809c9
    • Luca Coelho's avatar
      iwlwifi: mvm: check for n_profiles validity in EWRD ACPI · 2e1976bb
      Luca Coelho authored
      When reading the profiles from the EWRD table in ACPI, we loop over
      the data and set it into our internal table.  We use the number of
      profiles specified in ACPI without checking its validity, so if the
      ACPI table is corrupted and the number is larger than our array size,
      we will try to make an out-of-bounds access.
      
      Fix this by making sure the value specified in the ACPI table is
      valid.
      
      Fixes: 69964905 ("iwlwifi: mvm: add support for EWRD (Dynamic SAR) ACPI table")
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      2e1976bb
  2. 05 Oct, 2018 21 commits
  3. 04 Oct, 2018 2 commits
    • Kalle Valo's avatar
      Merge tag 'mt76-for-kvalo-2018-10-01' of https://github.com/nbd168/wireless · 9434dca9
      Kalle Valo authored
      mt76 patches for 4.20
      
      * unify code between mt76x0, mt76x2
      * mt76x0 fixes
      * tx power configuration fix for 76x2
      * more progress on mt76x0e support
      * support for getting firmware version via ethtool
      * fix for rx buffer allocation regression on usb
      * fix for handling powersave responses
      * fix for mt76x2 beacon transmission
      9434dca9
    • Kalle Valo's avatar
      Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git · 09afaba1
      Kalle Valo authored
      ath.git patches for 4.20. Major changes:
      
      ath10k
      
      * retrieve MAC address from system firmware if provided
      
      * support extended board data download for dual-band QCA9984
      
      * extended per sta tx statistics support via debugfs
      
      * average ack rssi support for data frames
      
      * speed up QCA6174 and QCA9377 firmware download using diag Copy Engine
      
      * HTT High Latency mode support needed by SDIO and USB support
      
      * get STA power save state via debugfs
      
      ath9k
      
      * add reset functionality for airtime station debugfs file
      09afaba1
  4. 03 Oct, 2018 9 commits