1. 18 8月, 2017 1 次提交
  2. 10 8月, 2017 4 次提交
  3. 09 8月, 2017 6 次提交
  4. 01 8月, 2017 19 次提交
  5. 21 7月, 2017 3 次提交
    • 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
    • L
      iwlwifi: mvm: handle IBSS probe_queue in a few missing places · 7b758a11
      Luca Coelho 提交于
      When IBSS was implemented for DQA, we missid a few places where it
      should be handled in the same way as AP.
      
      Fixes: ee48b722 ("iwlwifi: mvm: support ibss in dqa mode")
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      7b758a11
    • E
      iwlwifi: mvm: fix a NULL pointer dereference of error in recovery · 61dd8a8a
      Emmanuel Grumbach 提交于
      Sometimes, we can have an firmware crash while trying to
      recover from a previous firmware problem.
      When that happens, lots of things can go wrong. For example
      the stations don't get added properly to mvm->fw_id_to_mac_id.
      
      Mac80211 tries to stop A-MPDU upon reconfig but in case of
      a firmware crash we will bail out fairly early and in the
      end, we won't delete the A-MPDU Rx timeout.
      When that timer expired after a double firmware crash,
      we end up dereferencing mvm->fw_id_to_mac_id[sta_id]
      which is NULL.
      
      Fixes: 10b2b201 ("iwlwifi: mvm: add infrastructure for tracking BA session in driver")
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      61dd8a8a
  6. 30 6月, 2017 7 次提交
    • E
      iwlwifi: pcie: wait longer after device reset · 099a628b
      Emmanuel Grumbach 提交于
      The newest devices need a longer time to reset because of
      their more complex hardware. Wait 5ms after device reset.
      Consolidate all the places that reset the device in the
      PCIe transport to avoid future bugs.
      
      While at it, unify the flow to use set_bit instead of full
      write as requested by the hardware designers.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      099a628b
    • J
      iwlwifi: mvm: quietly accept non-sta disassoc frames · 51da3d8b
      Johannes Berg 提交于
      When a station that's not associated sends a data frame (e.g. an NDP)
      hostapd will respond with a disassoc frame, telling it that it's not
      associated. The station might also not be authenticated, in which case
      there will not be a station entry for it, and as a result we need to
      accept such frames without a station.
      
      Fixes: 3ee0f0e2 ("iwlwifi: mvm: fix DQA AP mode station assumption")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      51da3d8b
    • 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: remove DQA non-STA client mode special case · 6e464963
      Johannes Berg 提交于
      When we get a non-STA frame to transmit in client mode, we try to use
      the IWL_MVM_DQA_BSS_CLIENT_QUEUE queue (queue #4). However, at this
      point, the queue might not be allocated at all, causing warnings. The
      scenario on which this happened was a race condition between mac80211
      and our queue allocation work:
       * mac80211 sends auth
       * we stop mac80211 queues to allocate a hw queue
       * authentication is aborted
       * we allocate HW queue and start mac80211 queues
       * mac80211 removes station
       * mac80211 hands us the auth frame from the pending queue
      
      At this point, since mac80211 has already removed the station, we try
      to transmit the frame through this special non-station case on queue
      4 anyway.
      
      In order to really use it properly, we'd have to again go through the
      hw queue allocation work, and attach it to a station, etc. In this
      case that isn't possible (there's no station anymore), but if this
      special case were needed, then we'd have to do it this way.
      
      However, the special case is documented to exist for TDLS, but can't
      trigger there because the TDLS setup frames etc. are normal to-DS
      frames going to the peer through the AP. Testing also confirms that
      this code path isn't triggered in TDLS.
      
      Therefore, remove the code path to avoid using an unused queue. The
      erroneous frame described above will still be transmitted on the AUX
      queue, but arguably that's a mac80211 problem, which will eventually
      be fixed by moving everything there to TXQs.
      
      Fixes: e3118ad7 ("iwlwifi: mvm: support tdls in dqa mode")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      6e464963
    • E
      iwlwifi: mvm: don't mess the SNAP header in TSO for non-QoS packets · 6344436e
      Emmanuel Grumbach 提交于
      When we get large sends on non-QoS association, we had a
      bug that mangled the SNAP header. Fix that.
      
      Fixes: a6d5e32f ("iwlwifi: mvm: send large SKBs to the transport")
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      6344436e
    • E
      iwlwifi: mvm: don't send fetch the TID from a non-QoS packet in TSO · 4f555e60
      Emmanuel Grumbach 提交于
      Getting the TID of a packet before we know it is a QoS data
      packet isn't a good idea. Delay the TID retrieval until
      we know the packet is a QoS data packet.
      
      Fixes: bb81bb68 ("iwlwifi: mvm: add Tx A-MSDU inside A-MPDU")
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      4f555e60
    • J
      iwlwifi: mvm: fix mac80211's hw_queue in DQA mode · 32026e8f
      Johannes Berg 提交于
      When in non-DQA mode, mac80211 actually gets a pretty much perfect
      idea (in vif->hw_queue/cab_queue) of which queues we're using. But
      in DQA mode, this isn't true - nonetheless, we were adding all the
      queues, even the ones stations are using, to the queue allocation
      bitmap.
      
      Fix this, we should only add the queues we really are using in DQA
      mode:
       * IWL_MVM_OFFCHANNEL_QUEUE, as we use this in both modes
       * mvm->aux_queue, as we use this in both modes - mac80211
         never really knows about it but we use it as a cookie
         internally, so can't reuse it
       * possibly the GCAST queue (cab_queue)
       * all the "queues" we told mac80211 about we were using on each
         interface (vif->hw_queue), these are entirely virtual in this
         mode
      
      Also add back the failure now when we can't allocate any more of
      these - now virtual - queues; this was skipped in DQA mode and
      would lead to having multiple ACs or even interfaces use the same
      queue number in mac80211 (10, since that's the limit), which would
      stop far too many queues if stopped.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      32026e8f