1. 11 4月, 2017 2 次提交
    • S
      iwlwifi: mvm: add multicast station · 26d6c16b
      Sara Sharon 提交于
      Currently multicast queue is associated with the broadcast
      station.
      
      This raises quite a few issues:
      
      The multicast queue has a special treatment:
      - It is sent in the MAC context command
      - It is excluded from tfd_queue_mask
      
      In DQA mode we end up enabling two queues - the probe response
      queue and the multicast queue - with the same station (broadcast)
      and TID while in DQA mode it should be unique RA-TID.
      Firmware will enforce it for a000 devices, so this allocation
      will fail.
      
      In addition, in a000 devices the FW will set the FIFO and not
      the driver. So there is a need for FW to know when we enable
      the queue that it is multicast queue so it will be bound to
      the multicast FIFO. There is no such way in current design.
      
      In order to simplify driver and firmware handling of this queue
      create a multicast station.
      This solves the unique RA-TID issue in the short term and serves
      as preparation for the long term.
      
      In the long term we will also add a flag marking this station for
      the FW as the multicast station.
      Once we will do that the FW will know this is the multicast queue
      immediately when it is added and bind it to the correct FIFO.
      It will also enable removing the special treatment of the
      queue in the MAC context command.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      26d6c16b
    • S
      iwlwifi: mvm: cleanup pending frames in DQA mode · 1c17627b
      Sara Sharon 提交于
      When a station is asleep, the fw will set it as "asleep".
      All queues that are used only by one station will be stopped by
      the fw.
      
      In pre-DQA mode this was relevant for aggregation queues. However,
      in DQA mode a queue is owned by one station only, so all queues
      will be stopped.
      As a result, we don't expect to get filtered frames back to
      mac80211 and don't have to maintain the entire pending_frames
      state logic, the same way as we do in aggregations.
      
      The correct behavior is to align DQA behavior with the aggregation
      queue behaviour pre-DQA:
      - Don't count pending frames.
      - Let mac80211 know we have frames in these queues so that it can
      properly handle trigger frames.
      
      When a trigger frame is received, mac80211 tells the driver to send
      frames from the queues using release_buffered_frames.
      The driver will tell the fw to let frames out even if the station
      is asleep. This is done by iwl_mvm_sta_modify_sleep_tx_count.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      1c17627b
  2. 08 2月, 2017 1 次提交
  3. 07 2月, 2017 2 次提交
    • S
      iwlwifi: mvm: fix pending frame counter calculation · 94c3e614
      Sara Sharon 提交于
      In DQA mode the check whether to decrement the pending frames
      counter relies on the tid status and not on the txq id.
      This may result in an inconsistent state of the pending frames
      counter in case frame is queued on a non aggregation queue but
      with this TID, and will be followed by a failure to remove the
      station and later on SYSASSERT 0x3421 when trying to remove the
      MAC.
      Such frames are for example bar and qos NDPs.
      Fix it by aligning the condition of incrementing the counter
      with the condition of decrementing it - rely on TID state for
      DQA mode.
      Also, avoid internal error like this affecting station removal
      for DQA mode - since we can know for sure it is an internal
      error.
      
      Fixes: cf961e16 ("iwlwifi: mvm: support dqa-mode agg on non-shared queue")
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      94c3e614
    • L
      iwlwifi: mvm: release static queues on bcast release · df88c08d
      Liad Kaufman 提交于
      A few of the static queues are enabled along with the bcast
      STA. Make sure they are removed along with it, rather than
      waiting for the mac ctxt release.
      
      This is needed because we sometimes have a STA being removed
      and then added again (either with the same sta_id or a
      different one). If we wait for the mac ctxt release we will
      try to allocate the queues again (as this is currently done
      in the STA allocation and not in the MAC init) although
      they weren't freed, and even if the sta_id of the STA has
      changed.
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      df88c08d
  4. 03 2月, 2017 2 次提交
  5. 26 1月, 2017 2 次提交
  6. 23 1月, 2017 1 次提交
  7. 19 10月, 2016 5 次提交
  8. 27 9月, 2016 1 次提交
  9. 19 9月, 2016 2 次提交
  10. 16 9月, 2016 3 次提交
  11. 30 8月, 2016 6 次提交
  12. 06 7月, 2016 9 次提交
  13. 01 7月, 2016 1 次提交
  14. 10 6月, 2016 2 次提交
    • A
      iwlwifi: mvm: set the encryption type of an IGTK key · aa950524
      Ayala Beker 提交于
      The FW expect the driver to set the encryption algorithm type when
      installing the IGTK key in the HW.
      Currently when installing CMAC IGTK key we don't set the algorithm type
      and as a result the FW fails to calculate the MIC of multicast management
      frames.
      Fix it.
      Signed-off-by: NAyala Beker <ayala.beker@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      aa950524
    • E
      iwlwifi: mvm: fix RCU splat in TKIP's update_key · 7d6a1ab6
      Emmanuel Grumbach 提交于
      The commit below mistakenly changed an rcu_dereference_check
      to a rcu_dereference_protected which introduced the
      following RCU warning:
      
      [ INFO: suspicious RCU usage. ]
       4.6.0-rc7-next-20160513-dbg-00004-g8de8b92-dirty #655 Not tainted
       -------------------------------
       drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:1069 suspicious rcu_dereference_protected() usage!
       Call Trace:
        [<ffffffff8106b836>] lockdep_rcu_suspicious+0xf7/0x100
        [<ffffffffa03b2321>] iwl_mvm_get_key_sta.part.0+0x5d/0x80 [iwlmvm]
        [<ffffffffa03b4acb>] iwl_mvm_update_tkip_key+0xd3/0x162 [iwlmvm]
        [<ffffffffa03a2b60>] iwl_mvm_mac_update_tkip_key+0x17/0x19 [iwlmvm]
        [<ffffffffa0329646>] ieee80211_tkip_decrypt_data+0x22c/0x24b [mac80211]
        [<ffffffffa0318bb1>] ieee80211_crypto_tkip_decrypt+0xc5/0x110 [mac80211]
        [<ffffffffa033102e>] ieee80211_rx_handlers+0x9bb/0x1fe1 [mac80211]
      
      Fixes: 13303c0f ("iwlwifi: mvm: use helpers to get iwl_mvm_sta")
      Reported-by: NSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      7d6a1ab6
  15. 11 5月, 2016 1 次提交