1. 30 8月, 2016 1 次提交
  2. 06 7月, 2016 6 次提交
  3. 19 5月, 2016 1 次提交
    • L
      iwlwifi: fix mis-merge that breaks the driver · 0e034f5c
      Linus Torvalds 提交于
      My laptop that uses the intel 7680 iwlwifi module would no longer
      connects to the network.  It would fail with a "Microcode SW error
      detected." and spew out register state over and over again without ever
      connecting to the network.
      
      The cause is mis-merge in commit 909b27f7, where David seems to have
      lost some of the changes to iwl_mvm_set_tx_cmd() from commit
      5c08b0f5 ("iwlwifi: mvm: don't override the rate with the AMSDU
      len").
      
      The reason seems to be a conflict with commit d8fe4844 ("iwlwifi:
      mvm: add support for new TX CMD API"), which touched a line adjacent to
      the changes in 909b27f7.
      
      David missed the fact that "info->driver_data[0]" had become
      "skb_info->driver_data[0]".  Then he removed the skb_info because it was
      unused.
      
      This just re-updates iwl_mvm_set_tx_cmd() with the lost two lines.
      Reported-and-tested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Reported-by: NReinoud Koornstra <reinoudkoornstra@gmail.com>
      Cc: Luciano Coelho <luciano.coelho@intel.com>
      Cc: Kalle Valo <kvalo@codeaurora.org>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0e034f5c
  4. 11 5月, 2016 3 次提交
  5. 10 5月, 2016 2 次提交
  6. 05 5月, 2016 1 次提交
    • E
      iwlwifi: mvm: don't override the rate with the AMSDU len · 5c08b0f5
      Emmanuel Grumbach 提交于
      The TSO code creates A-MSDUs from a single large send. Each
      A-MSDU is an skb and skb->len doesn't include the number of
      bytes which need to be added for the headers being added
      (subframe header, TCP header, IP header, SNAP, padding).
      
      To be able to set the right value in the Tx command, we
      put the number of bytes added by those headers in
      driver_data in iwl_mvm_tx_tso and use this value in
      iwl_mvm_set_tx_cmd.
      
      The problem by setting this value in driver_data is that
      it overrides the ieee80211_tx_info. The bug manifested
      itself when we send P2P related frames in CCK since the
      rate in ieee80211_tx_info is zero-ed. This of course is
      a violation of the P2P specification.
      
      To fix this, copy the original ieee80211_tx_info to the
      stack and pass it to the functions which need it.
      Assign the number of bytes added by the headers to the
      driver_data inside the skb itself.
      
      Fixes: a6d5e32f ("iwlwifi: mvm: send large SKBs to the transport")
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      5c08b0f5
  7. 12 4月, 2016 1 次提交
  8. 30 3月, 2016 4 次提交
  9. 10 3月, 2016 1 次提交
    • E
      iwlwifi: mvm: don't let NDPs mess the packet tracking · 532beba3
      Emmanuel Grumbach 提交于
      We need to track the next packet that we will reclaim in
      order to know when the Tx queues are empty. This is useful
      when we open or tear down an A-MPDU session which requires
      to switch queue.
      The next packet being reclaimed is identified by its WiFi
      sequence number and this is relevant only when we use QoS.
      QoS NDPs do have a TID but have a meaningless sequence
      number. The spec mandates the receiver to ignore the
      sequence number in this case, allowing the transmitter to
      put any sequence number. Our implementation leaves it 0.
      When we reclaim a QoS NDP, we can't update the next_relcaim
      counter since the sequence number of the QoS NDP itself is
      invalid.
      We used to update the next_reclaim based on the sequence
      number of the QoS NDP which reset it to 1 (0 + 1) and
      because of this, we never knew when the queue got empty.
      This had to sad consequence to stuck the A-MPDU state
      machine in a transient state.
      To fix this, don't update next_reclaim when we reclaim
      a QoS NDP.
      
      Alesya saw this bug when testing u-APSD. Because the
      A-MPDU state machine was stuck in EMPTYING_DELBA, we
      updated mac80211 that we still have frames for that
      station when it got back to sleep. mac80211 then wrongly
      set the TIM bit in the beacon and requested to release
      non-existent frames from the A-MPDU queue. This led to
      a situation where the client was trying to poll frames
      but we had no frames to send.
      Reported-by: NAlesya Shapira <alesya.shapira@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      532beba3
  10. 28 2月, 2016 5 次提交
  11. 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
  12. 16 2月, 2016 1 次提交
    • L
      iwlwifi: mvm: inc pending frames counter also when txing non-sta · fb896c44
      Liad Kaufman 提交于
      Until this patch, when TXing non-sta the pending_frames counter
      wasn't increased, but it WAS decreased in
      iwl_mvm_rx_tx_cmd_single(), what makes it negative in certain
      conditions. This in turn caused much trouble when we need to
      remove the station since we won't be waiting forever until
      pending_frames gets 0. In certain cases, we were exhausting
      the station table even in BSS mode, because we had a lot of
      stale stations.
      
      Increase the counter also in iwl_mvm_tx_skb_non_sta() after a
      successful TX to avoid this outcome.
      
      CC: <stable@vger.kernel.org> [3.18+]
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      fb896c44
  13. 01 2月, 2016 1 次提交
  14. 26 1月, 2016 1 次提交
    • G
      iwlwifi: mvm: rs: fix TPC statistics handling · 69c7fda4
      Gregory Greenman 提交于
      FW behaviour changed and now updates driver about the used TPC
      reduction in the following cases:
      1. In tx response, which is used mostly for a single frame case
      2. In BA notification
      
      When tx aggregation fails with the initial rate, FW will send
      to the driver BA notification and will try to transmit with the
      next rate, but this time without tx power reduction. Thus, in case
      of a failure with the initial rate, driver will get two BA notifications,
      the first one with reduced tx power as in the LQ command and the second
      one with 0 power reduction.
      
      This patch adapts the TPC statistics according to the description above:
      1. Use BA notifications instead of Tx response
      2. For TPC only, drop the optimization which considers empty BA as one
      MPDU. The reason is that with TPC we want to recover very quickly from
      a bad power reduction and, therefore we'd like the success ratio to get
      an immediate hit when failing to get a BA, so we'd switch back to a
      lower or zero power reduction
      Signed-off-by: NGregory Greenman <gregory.greenman@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      69c7fda4
  15. 20 12月, 2015 3 次提交
  16. 13 12月, 2015 1 次提交
  17. 02 12月, 2015 1 次提交
  18. 18 11月, 2015 1 次提交
  19. 25 10月, 2015 1 次提交
  20. 05 10月, 2015 1 次提交
    • L
      iwlwifi: mvm: support using multiple ACs on single HW queue · 4ecafae9
      Liad Kaufman 提交于
      "DQA" is shorthand for "dynamic queue allocation", with the
      idea of allocating queues per-RA/TID on-demand rather than
      using shared queues statically allocated per vif. The goal
      of this is to enable future features (like GO PM) and to
      improve performance measurements of TX traffic.
      
      When RA/TID streams can't be neatly sorted into different AC
      queues, DQA allows sharing queues for the same RA. This means
      that DQA allows different ACs may reach the same HW queue.
      
      Update the code to allow such queue sharing by having a mapping
      between the HW queue and the mac80211 queues using it (as this
      could be more than one queue).
      Signed-off-by: NLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      4ecafae9
  21. 05 8月, 2015 2 次提交
  22. 04 8月, 2015 1 次提交