1. 06 7月, 2016 25 次提交
  2. 01 7月, 2016 9 次提交
  3. 11 5月, 2016 6 次提交
    • L
      iwlwifi: mvm: support dqa-mode agg on non-shared queue · cf961e16
      Liad Kaufman 提交于
      In non-shared queues, DQA requires re-configuring existing
      queues to become aggregated rather than allocating a new
      one. It also requires "un-aggregating" an existing queue
      when aggregations are turned off.
      
      Support this requirement for non-shared queues.
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      cf961e16
    • E
      iwlwifi: don't access a nonexistent register upon assert · 39654cb3
      Emmanuel Grumbach 提交于
      The commit below added code to dump the content of FIFOs
      that are present only on dual CPU products (8000 and up).
      This broke 7265D whose firmware does advertise
      IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG but doesn't have 2
      CPUs. The current code does check the length of the FIFO
      before dumping them (and the nonexistent FIFO has a 0
      length), but we still accessed a register to set the FIFO
      number and that made the DMA unhappy.
      
      The impact was a much longer recovery upon firmware assert.
      
      Fixes: 5b086414 ("iwlwifi: mvm: support dumping UMAC internal txfifos")
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      39654cb3
    • S
      iwlwifi: mvm: use helpers to get iwl_mvm_sta · 13303c0f
      Sara Sharon 提交于
      Getting the mvm station out of station id requires dereferencing
      the station id to get ieee80211_sta, then checking for pointer
      validity and only then extract mvm station out.
      Given that there are helpers to do it - use them instead of
      duplicating the code whenever we need only mvm station.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      13303c0f
    • S
      iwlwifi: mvm: remove redundant alloc_ctx parameter · ce1f2778
      Sara Sharon 提交于
      iwl_phy_db_set_section() is get called only from atomic
      context, the alloc_ctx parameter is not needed. Remove it.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      ce1f2778
    • S
      iwlwifi: mvm: loosen nssn comparison to reorder buffer head · 74dd1764
      Sara Sharon 提交于
      Up till now, the reorder buffer uses standard spec based comparison
      when comparing the buffer status to NSSN. This indeed works for the
      regular case, since we shouldn't cross the 2048 boundary without
      getting a frame release notification.
      However, this is problematic due to packet filtering that may be
      performed by the FW while we are in d0i3. Theoretically we may
      filter over 2048 packets, and then the check of the NSSN will get
      incorrect.
      Change the comparison to always trust nssn unless it is 64 or less
      frames behind the head - which might happen due to a timeout.
      This new comparison is to be used only when comparing reorder buffer
      head with nssn, and not when comparing the packet SN to nssn or
      reorder buffer head.
      Put this in a separate commit as the logic is a bit tricky and
      stands for its own commit message.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      74dd1764
    • S
      iwlwifi: mvm: don't allow negative reference count · 16c45822
      Sara Sharon 提交于
      Currently code allows mvm reference to become negative and
      only warns in case mvm reference is released while reference
      counting is 0.
      However, we better prevent this from happening at all since
      iwl_mvm_unref() may race against iwl_mvm_unref_all_except()
      which is called on restart.
      As a result we might get the same reference unreferenced twice
      ending with a negative value:
      An example for an easily reproduced log:
          [ 2689.909166] iwl_mvm_ref Take mvm reference - type 8
          [ 2690.732716] iwl_mvm_unref_all_except Cleanup: remove mvm ref type 8 (1)
          [ 2690.849708] iwl_mvm_unref Leave mvm reference - type 8
          [ 2690.849721] WARNING: ... iwl_mvm_unref+0xb0/0xc0 [iwlmvm]()
      
      If there will be yet another another restart iwl_mvm_unref_all_except
      will run from 0 up to ref count, and since it is unsigned, we will throw
      the transport ref count completely out of balance:
          iwl_mvm_unref_all_except[I] -- Cleanup: remove mvm ref type 8 (255)
          iwl_trans_slv_unref[I] -- rpm counter: 0
          iwl_trans_slv_unref[I] -- rpm counter: -1
          iwl_trans_slv_unref[I] -- rpm counter: -2
       ...
          iwl_trans_slv_unref[I] -- rpm counter: -253
          iwl_trans_slv_unref[I] -- rpm counter: -254
      
      As there is no valid scenario where we can get to a negative
      reference count - prevent it from happening.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      16c45822