1. 01 7月, 2016 2 次提交
  2. 11 5月, 2016 7 次提交
    • 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
    • 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
    • J
      iwlwifi: mvm: advertise RSS queue usage · 80938abc
      Johannes Berg 提交于
      In order for mac80211 to use per-CPU statistics for RSS RX, the
      driver needs to advertise that it uses RSS. Do this when using
      more than a single queue.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      80938abc
    • S
      iwlwifi: mvm: add reorder buffer per queue · b915c101
      Sara Sharon 提交于
      Next hardware will direct packets to core based on the TCP/UDP
      streams.
      This logic can create holes in reorder buffer since packets that
      belong to other stream were directed to a different core.
      However, those are valid holes and the packets can be indicated
      in L3 order.
      
      The hardware will utilize a mechanism of informing the driver of
      the normalized ssn and the driver shall release all packets that
      SN is lower than the nssn.
      This enables managing the reorder across the queues without sharing
      any data between them.
      
      The reorder buffer is allocated and released directly in the RX path
      in order to avoid various races between control path and rx path.
      The code utilizes the internal messaging to notify rx queues of when
      to delete the reorder buffer.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      b915c101
    • S
      iwlwifi: mvm: add infrastructure for tracking BA session in driver · 10b2b201
      Sara Sharon 提交于
      According to the spec when a BA session is started there
      is a timeout set for the session in the ADDBA request.
      If there is not activity on the TA/TID then the session
      expires and a DELBA is sent.
      In order to check for the timeout, data must be shared
      among the rx queues.
      Add a timer that runs as long as BA session is active
      for the station and stops aggregation session if needed.
      This patch also lays the infrastructure for the reordering
      buffer which will be enabled in the next patches.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      10b2b201
    • S
      iwlwifi: mvm: change RX sync notification to be an attribute and not a type · d0ff5d22
      Sara Sharon 提交于
      Currently the sync notification is a type of notification. However, it
      is better fitted as an attribute of a notification, since there might
      be another message in the payload (delba for instance) that should be
      sent while control path is waiting for all queues to process.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      d0ff5d22
    • S
      iwlwifi: mvm: implement driver RX queues sync command · 0636b938
      Sara Sharon 提交于
      mac80211 will call the driver whenever there is a race between
      RSS queues and control path that requires a processing of all
      pending frames in RSS queues.
      Implement that by utilizing the internal notification mechanism:
      queue a message to all queues. When the message is received on
      a queue it decrements the atomic counter. This guarantees that
      all pending frames in the RX queue were processed since the message
      is in order inside the queue.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      0636b938
  3. 12 4月, 2016 1 次提交
  4. 30 3月, 2016 4 次提交
    • S
      iwlwifi: mvm: enable TCP/UDP checksum support for 9000 family · 5e6a98dc
      Sara Sharon 提交于
      Declare and enable support of RX and TX checksum for 9000 family.
      Configure offload_assist in the TX cmd accordingly to support
      TX csum.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      5e6a98dc
    • L
      iwlwifi: mvm: support bss dynamic alloc/dealloc of queues · 24afba76
      Liad Kaufman 提交于
      "DQA" is shorthand for "dynamic queue allocation". This
      enables on-demand allocation of queues per RA/TID rather than
      statically allocating per vif, thus allowing a potential
      benefit of various factors.
      
      Please refer to the DOC section this patch adds to sta.h to
      see a more in-depth explanation of this feature.
      
      There are many things to take into consideration when working
      in DQA mode, and this patch is only one in a series. Note that
      default operation mode is non-DQA mode, unless the FW
      indicates that it supports DQA mode.
      
      This patch enables support of DQA for a station connected to
      an AP, and works in a non-aggregated mode.
      
      When a frame for an unused RA/TID arrives at the driver, it
      isn't TXed immediately, but deferred first until a suitable
      queue is first allocated for it, and then TXed by a worker
      that both allocates the queues and TXes deferred traffic.
      
      When a STA is removed, its queues goes back into the queue
      pools for reuse as needed.
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      24afba76
    • E
      iwlwifi: make uapsd_disable module param a bitmap · 11dee0b4
      Emmanuel Grumbach 提交于
      This allows to disable uapsd for BSS only, or P2P client
      separately. Remove the now unneeded
      IWL_MVM_P2P_UAPSD_STANDALONE constant.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      11dee0b4
    • A
      iwlwifi: mvm: add LQM vendor command and notification · 03098268
      Aviya Erenfeld 提交于
      LQM stands for Link Quality Measurement. The firmware
      will collect a defined set of statitics (see the
      notification for details) that allow to know how busy
      the medium is. The driver issues a request to the firmware
      that includes the duration of the measurement (the firmware
      needs to be on channel for that amount of time) and the
      timeout (in case the firmware has a lot of offchannel
      activities). If the timeout elapses, the firmware will
      send partial results which are still valuable.
      In case of disassociation / channel switch and alike, the
      driver is in charge of stopping the measurements and the
      firmware will reply with partial results.
      
      The user space API for now is debugfs only and will be
      implmemented in an upcoming patch.
      Signed-off-by: NAviya Erenfeld <aviya.erenfeld@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      03098268
  5. 21 3月, 2016 1 次提交
  6. 10 3月, 2016 2 次提交
  7. 07 3月, 2016 1 次提交
  8. 02 3月, 2016 1 次提交
  9. 28 2月, 2016 7 次提交
  10. 24 2月, 2016 1 次提交
    • E
      iwlwifi: mvm: move TX PN assignment for TKIP to the driver · 1ad4f639
      Eliad Peller 提交于
      If protocol offloading is configured, the fw might generate some
      frames (e.g. arp response) on its own during d3/d0i3.
      
      On d3/d0i3 exit the driver queries the updated PN (if relevant),
      and updates its keys (for the d0i3 case, this is done by
      iwl_mvm_d0i3_exit_work(), which is scheduled on d0i3 exit)
      
      While in d0i3, iwlmvm defers tx frames until d0i3 exit, and
      then continues their processing.
      
      This is problematic with TKIP, since the frame's PN has already
      been set at this stage (in contrast to CCMP, where the PN is
      being set only later on), so both the frame's PN and the upcoming
      PN update (from d0i3 exit work) might be wrong.
      
      Fix it by moving the TX PN assignment (for TKIP) to the driver,
      similarly to CCMP.
      Signed-off-by: NEliad Peller <eliadx.peller@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1ad4f639
  11. 01 2月, 2016 1 次提交
  12. 14 1月, 2016 1 次提交
  13. 08 1月, 2016 4 次提交
  14. 21 12月, 2015 3 次提交
  15. 20 12月, 2015 3 次提交
  16. 13 12月, 2015 1 次提交
    • L
      iwlwifi: replace d0i3_mode and wowlan_d0i3 with more generic variables · b7282643
      Luca Coelho 提交于
      The d0i3_mode variable is used to distinguish between transports that
      handle d0i3 entry during suspend by themselves (i.e. the slave
      transports) and those which rely on the op_mode layer to do it.  The
      reason why the former do it by themselves is that they need to
      transition from d0i3 in runtime_suspend into d0i3 in system-wide
      suspend and this transition needs to happen before the op_mode's
      suspend flow is called.
      
      The wowlan_d0i3 element is also a bit confusing, because it just
      reflects the wowlan->any value for the trans to understand.  This is a
      bit unclear in the code and not generic enough for future use.
      
      To make it clearer and to generalize the platform power mode settings,
      introduce two variables to indicate the platform power management
      modes used by the transport.
      
      Additionally, in order not to take too big a step in one patch, treat
      this new variables semantically in the same way as the old d0i3_mode
      element, introducing a iwl_mvm_enter_d0i3_on_suspend() function to
      help with that.
      
      This commit also adds the foundation for a new concept where the
      firmware configuration state (i.e. D0, D3 or D0i3) is abstracted from
      the platform PM mode we are in (i.e. runtime suspend or system-wide
      suspend).
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      b7282643