1. 21 7月, 2017 1 次提交
    • J
      iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART · bf8b286f
      Johannes Berg 提交于
      A hardware/firmware error may happen at any point in time. In
      particular, it might happen while mac80211 is in the middle of
      a flow. We observed the following situation:
       * mac80211 is in authentication flow, in ieee80211_prep_connection()
       * iwlwifi firmware crashes, but no error can be reported at this
         precise point (mostly because the driver method is void, but even
         if it wasn't we'd just shift to a race condition)
       * mac80211 continues the flow, trying to add the AP station
       * iwlwifi has already set its internal restart flag, and so thinks
         that adding the station is part of the restart and already set up,
         so it uses the information that's supposed to already be in the
         struct
      
      This can happen with any flow in mac80211 and with any information
      we try to preserve across hardware restarts.
      
      To fix this, only set a new HW_RESTART_REQUESTED flag and translate
      that to IN_HW_RESTART once mac80211 actually starts the restart by
      calling our start() method. As a consequence, any mac80211 flow in
      progress at the time of the restart will properly finish (certainly
      with errors), before the restart is attempted.
      
      This fixes https://bugzilla.kernel.org/show_bug.cgi?id=195299.
      Reported-by: Ndjagoo <dev@djagoo.io>
      Reported-by: NŁukasz Siudut <lsiudut@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      bf8b286f
  2. 30 6月, 2017 2 次提交
    • L
      iwlwifi: mvm: update rx statistics cmd api · 678d9b6d
      Liad Kaufman 提交于
      The API has changed - update the code.
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      678d9b6d
    • J
      iwlwifi: mvm: fix mac80211 queue tracking · 37e474ac
      Johannes Berg 提交于
      In the driver, we track which hardware queue is associated with
      which mac80211 "hw_queue", in order to be able to stop and wake
      it. When moving these bitmaps out of the queue_info structures,
      the type of the bitmap was erroneously changed from u32 to u8,
      presumably in order to save memory.
      
      Turns out that u32 isn't needed, because the highest queue we
      can ever tell mac80211 is always < 16, but a u16 definitely is
      needed, queues >=8 do happen.
      
      While at it, throw a BUILD_BUG_ON() into the place where we set
      the limit (mvm->first_agg_queue) and a warning when it actually
      gets put into the bitmap.
      
      The consequence of this bug is that full HW queues associated
      with such a too-high mac80211 number never stop higher layer
      queues when full, and thus would simply drop all packets that
      couldn't be enqueued to the hardware queue.
      
      Fixes: 34e10860 ("iwlwifi: mvm: remove references to queue_info in new TX path")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      37e474ac
  3. 29 6月, 2017 5 次提交
  4. 23 6月, 2017 6 次提交
  5. 06 6月, 2017 6 次提交
  6. 02 6月, 2017 2 次提交
  7. 26 4月, 2017 5 次提交
  8. 25 4月, 2017 1 次提交
  9. 20 4月, 2017 8 次提交
  10. 11 4月, 2017 4 次提交
    • S
      iwlwifi: mvm: remove call for paging in new init flow · 30d23c3c
      Sara Sharon 提交于
      Now that transport inits the paging in the context info -
      remove the call in mvm.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      30d23c3c
    • G
      iwlwifi: mvm: support MFUART dump in case of MFUART assert · bdccdb85
      Golan Ben-Ami 提交于
      In case of a MFUART assert, get a notification from the fw
      that consists of the assert id and debug data.
      
      The notification may be divided to multiple chunks, depending
      on the size of the debug data sent to the driver, which would
      be up to 1KB.
      
      Get the notification, and if the debug info flag is enabled,
      print the debug data to the dmesg.
      Signed-off-by: NGolan Ben-Ami <golan.ben.ami@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      bdccdb85
    • S
      iwlwifi: mvm: don't assume static queue numbers · 49f71713
      Sara Sharon 提交于
      In a000 devices FW will assign the queue number. Prepare for
      that by getting rid of static defines and store them in variables.
      Enlarge to u16 since we may have up to 512 queues.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      49f71713
    • 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