1. 11 Nov, 2018 4 commits
    • Shahar S Matityahu's avatar
      iwlwifi: trans: Clear persistence bit when starting the FW · 8954e1eb
      Shahar S Matityahu authored
      In D3 suspend flow in 9260 gen2 HW, the NIC receives two PERST signals.
      The first PERST is expected and indicates the device on coming resume flow.
      The second PERST causes FW restart FW restart.
      In order to avoid this issue, the FW set the persistence bit on.
      Once this bit is set, the FW ignores reset attempts.
      The problem is when the FW gets assert during D3 and then the persistence
      bit is set and causes the FW to ignore reset.
      To handle this issue, the FW opens the preg bit which allows access
      to the persistence bit, so that the driver clear the persistence bit
      and reset the NIC.
      
      The flow is as follows:
      the driver checks if the persistence bit is set.
      If the bit is set, the driver checks if he can clear the bit.
      If the driver can not clear the bit then there is no point to continue
      configuring the NIC since it will fail.
      
      The fix was added is in start HW flow instead of the resume flow since in
      general, if the persistence bit is set, the driver can not start the FW.
      So it is good to check it when we start configuring the NIC.
      
      The driver does not need to close the preg bit since the FW close it
      during the start flow.
      Signed-off-by: default avatarShahar S Matityahu <shahar.s.matityahu@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      8954e1eb
    • Johannes Berg's avatar
      iwlwifi: mvm: remove queue_info_lock · f3f240f9
      Johannes Berg authored
      All the queue management code runs under mvm->mutex, so there are
      only very few cases of accessing the data structures without it:
       * TX path, which doesn't take any locks anyway
       * iwl_mvm_wake_sw_queue() and iwl_mvm_stop_sw_queue() where we
         just (atomically) read a bitmap, so the lock isn't needed.
      
      Therefore, we can remove the spinlock. This enables some cleanup
      in the ugly locking in iwl_mvm_inactivity_check().
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      f3f240f9
    • Johannes Berg's avatar
      iwlwifi: mvm: synchronize TID queue removal · 06bc6f6e
      Johannes Berg authored
      When we mark a TID as no longer having a queue, there's no
      guarantee the TX path isn't using this txq_id right now,
      having accessed it just before we reset the value. To fix
      this, add synchronize_net() when we change the TIDs from
      having a queue to not having one, so that we can then be
      sure that the TX path is no longer accessing that queue.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      06bc6f6e
    • YueHaibing's avatar
      iwlwifi: mvm: remove set but not used variable 'he_phy_data' · 41c4588b
      YueHaibing authored
      Fixes gcc '-Wunused-but-set-variable' warning:
      
      drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_rx_mpdu_mq':
      drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1386:7: warning:
       variable 'he_phy_data' set but not used [-Wunused-but-set-variable]
         u64 he_phy_data;
      
      'he_phy_data' never used since be introduce in
      commit 18ead597 ("iwlwifi: support new rx_mpdu_desc api")
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      41c4588b
  2. 09 Nov, 2018 1 commit
  3. 06 Nov, 2018 35 commits