1. 20 4月, 2017 4 次提交
  2. 11 4月, 2017 5 次提交
  3. 07 2月, 2017 1 次提交
    • J
      iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe · 05e5a7e5
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      05e5a7e5
  4. 04 12月, 2016 1 次提交
  5. 19 10月, 2016 1 次提交
  6. 23 9月, 2016 1 次提交
  7. 19 9月, 2016 1 次提交
  8. 16 9月, 2016 5 次提交
  9. 30 8月, 2016 1 次提交
  10. 06 7月, 2016 6 次提交
  11. 11 5月, 2016 2 次提交
  12. 30 3月, 2016 1 次提交
    • S
      iwlwifi: pcie: do not pad QoS AMSDU · c772a3d3
      Sara Sharon 提交于
      We insert padding if the MAC header's size is not a multiple of 4
      to ensure that the SNAP header is DWORD aligned. When we do so, we
      let the firmware know by setting a bit in Tx command
      (TX_CMD_FLG_MH_PAD) which will instruct the firmware to drop those
      2 bytes before sending the frame.
      However, this is not needed for AMSDU as the sub frame header (14B)
      complements the MAC header (26B) so that the SNAP header is DWORD
      aligned without adding any pad.
      
      Until 9000, the firmware didn't check the TX_CMD_FLG_MH_PAD bit
      but rather checked the length of the MAC header itself and
      assumed the entity that enqueued the frame (driver or internal
      firmware code) added the pad.
      Since the driver inserted the pad even for AMSDU this logic applied.
      Note that the padding is a DMA optimization but it's not strictly
      needed, so we could pad even if it was not needed.
      
      However, the CSUM hardware introduced for the 9000 devices requires
      to not pad AMSDU as it is not needed, and will fail if such a pad
      exists.
      Due to older FW not checking the padding bit but checking the mac
      header size itself - we cannot do this adjustments for older
      generations.
      Do not align the size if it is an AMSDU and HW checksum is enabled -
      which will only happen on 9000 devices and on.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      c772a3d3
  13. 20 3月, 2016 1 次提交
  14. 28 2月, 2016 1 次提交
  15. 01 2月, 2016 2 次提交
  16. 31 1月, 2016 1 次提交
    • E
      iwlwifi: pcie: buffer packets to avoid overflowing Tx queues · 3955525d
      Emmanuel Grumbach 提交于
      When the Tx queues are full above a threshold, we
      immediately stop the mac80211's queue to stop getting new
      packets. This worked until TSO was enabled.
      With TSO, one single packet from mac80211 can use many
      descriptors since a large send needs to be split into
      several segments.
      This means that stopping mac80211's queues is not enough
      and we also need to ensure that we don't overflow the Tx
      queues with one single packet from mac80211.
      Add code to transport layer to do just that. Stop
      mac80211's queue as soon as the queue is full above the
      same threshold as before, and keep pushing the current
      packet along with its segments on the queue, but check
      that we don't overflow. If that would happen, buffer the
      segments, and send them when there is room in the Tx queue
      again. Of course, we first need to send the buffered
      segments and only then, wake up mac80211's queues.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      3955525d
  17. 21 12月, 2015 2 次提交
    • E
      iwlwifi: remove unused parameter from grab_nic_access · 23ba9340
      Emmanuel Grumbach 提交于
      All the callers used silent = false.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      23ba9340
    • E
      iwlwifi: pcie: build an A-MSDU using TSO core · 6eb5e529
      Emmanuel Grumbach 提交于
      When the op_mode sends an skb whose payload is bigger than
      MSS, PCIe will create an A-MSDU out of it. PCIe assumes
      that the skb that is coming from the op_mode can fit in one
      A-MSDU. It is the op_mode's responsibility to make sure
      that this guarantee holds.
      
      Additional headers need to be built for the subframes.
      The TSO core code takes care of the IP / TCP headers and
      the driver takes care of the 802.11 subframe headers.
      
      These headers are stored on a per-cpu page that is re-used
      for all the packets handled on that same CPU. Each skb
      holds a reference to that page and releases the page when
      it is reclaimed. When the page gets full, it is released
      and a new one is allocated.
      
      Since any SKB that doesn't go through the fast-xmit path
      of mac80211 will be segmented, we can assume here that the
      packet is not WEP / TKIP and has a proper SNAP header.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      6eb5e529
  18. 20 12月, 2015 3 次提交
  19. 13 12月, 2015 1 次提交