1. 06 Feb, 2017 6 commits
    • Johannes Berg's avatar
      iwlwifi: mvm: align copy-break SKB payload for MQ RX · 4b40571e
      Johannes Berg authored
      When a small frame is copied completely into the skb->head, the code
      doesn't take alignment into account, making mac80211 copy it again
      later on architectures that need the alignment. Avoid this by taking
      the PAD flag from the device into account when copying.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      4b40571e
    • Sara Sharon's avatar
      iwlwifi: mvm: fix pending frame counter calculation · 94c3e614
      Sara Sharon authored
      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: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      94c3e614
    • Sara Sharon's avatar
      iwlwifi: pcie: fix the set of DMA memory mask · 2c6262b7
      Sara Sharon authored
      Our 9000 device supports 64 bit DMA address for RX only, and
      not for TX.
      Setting DMA mask to 64 for the whole device is erroneous - we
      can do it only for a000 devices where device is capable of
      both RX & TX DMA with 64 bit address space.
      
      Fixes: 96a6497b ("iwlwifi: pcie: add 9000 series multi queue rx DMA support")
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      2c6262b7
    • Liad Kaufman's avatar
      iwlwifi: mvm: release static queues on bcast release · df88c08d
      Liad Kaufman authored
      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: default avatarLiad Kaufman <liad.kaufman@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      df88c08d
    • Johannes Berg's avatar
      iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe · 05e5a7e5
      Johannes Berg authored
      Instead of setting the tx_cmd length in the mvm code, which is
      complicated by the fact that DQA may want to temporarily store
      the SKB on the side, adjust the length in the PCIe code which
      also knows about this since it's responsible for duplicating
      all those headers that are account for in this code.
      
      As the PCIe code already relies on the tx_cmd->len field, this
      doesn't really introduce any new dependencies.
      
      To make this possible we need to move the memcpy() of the TX
      command until after it was updated.
      
      This does even simplify the code though, since the PCIe code
      already does a lot of manipulations to build A-MSDUs correctly
      and changing the length becomes a simple operation to see how
      much was added/removed, rather than predicting it.
      
      Fixes: 24afba76 ("iwlwifi: mvm: support bss dynamic alloc/dealloc of queues")
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      05e5a7e5
    • Johannes Berg's avatar
      iwlwifi: mvm: overwrite skb info later · bd05a5bd
      Johannes Berg authored
      We don't really need clear the skb's status area nor store the
      dev_cmd into it until we really commit to the frame by handing
      it to the transport - defer those operations until just before
      we do that.
      
      This doesn't entirely fix the bug with frames not getting sent
      out after having been deferred due to DQA, because it doesn't
      restore the info->driver_data[0] place that was already set to
      zero (or another value) by the A-MSDU logic.
      
      Fixes: 24afba76 ("iwlwifi: mvm: support bss dynamic alloc/dealloc of queues")
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      bd05a5bd
  2. 03 Feb, 2017 13 commits
  3. 02 Feb, 2017 2 commits
  4. 01 Feb, 2017 15 commits
  5. 31 Jan, 2017 4 commits