1. 28 3月, 2014 1 次提交
  2. 28 2月, 2014 2 次提交
    • M
      ath10k: bypass htc for htt tx path · a16942e6
      Michal Kazior 提交于
      Going through full htc tx path for htt tx is a
      waste of resources. By skipping it it's possible
      to easily submit scatter-gather to the pci hif for
      reduced host cpu load and improved performance.
      
      The new approach uses dma pool to store the
      following metadata for each tx request:
       * msdu fragment list
       * htc header
       * htt tx command
      
      The htt tx command contains a msdu prefetch.
      Instead of copying it original mapped msdu address
      is used to submit a second scatter-gather item to
      hif to make a complete htt tx command.
      
      The htt tx command itself hands over dma mapped
      pointers to msdus and completion of the command
      itself doesn't mean the frame has been sent and
      can be unmapped/freed. This is why htc tx
      completion is skipped for htt tx as all tx related
      resources are freed upon htt tx completion
      indication event (which also implicitly means htt
      tx command itself was completed).
      
      Since now each htt tx request effectively consists
      of 2 copy engine items CE_HTT_H2T_MSG_SRC_NENTRIES
      is updated to allow maximum of
      TARGET_10X_NUM_MSDU_DESC msdus being queued. This
      keeps the tx path resource management simple.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      a16942e6
    • M
      ath10k: replace send_head() with tx_sg() · 726346fc
      Michal Kazior 提交于
      PCI is capable of handling scatter-gather lists.
      This can be used to avoid copying memory.
      
      Change the name of the callback while at to
      reflect its purpose.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      726346fc
  3. 27 11月, 2013 1 次提交
    • M
      ath10k: defer irq registration until hif start() · 5d1aa946
      Michal Kazior 提交于
      It's impossible to rely on disable_irq() and/or CE
      interrupt masking with legacy shared interrupts.
      Other devices sharing the same irq line may assert
      it while ath10k is doing something that requires
      no interrupts.
      
      Irq handlers are now registered after all
      preparations are complete so spurious/foreign
      interrupts won't do any harm. The handlers are
      unregistered when no interrupts are required (i.e.
      during driver teardown).
      
      This also removes the ability to receive FW early
      indication (since interrupts are not registered
      until early boot is complete). This is not mission
      critical (it's more of a hint that early boot
      failed due to unexpected FW crash) and will be
      re-added in a follow up patch.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5d1aa946
  4. 13 11月, 2013 2 次提交
  5. 07 10月, 2013 2 次提交
  6. 13 9月, 2013 1 次提交
  7. 08 9月, 2013 1 次提交
    • M
      ath10k: prevent CE from looping indefinitely · 5440ce25
      Michal Kazior 提交于
      The double while() could end up running forever.
      Inner while() would complete very fast. However
      the completion processing could take enough time
      for more completions to flow in. In that case the
      outer while() would not terminate and run again,
      and again. This could happen especially on a slow
      host system.
      
      This could lead to a system freeze during heavy
      traffic. Note: this doesn't solve all known
      starvation issues yet.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5440ce25
  8. 01 9月, 2013 4 次提交
  9. 13 6月, 2013 1 次提交
    • K
      ath10k: mac80211 driver for Qualcomm Atheros 802.11ac CQA98xx devices · 5e3dd157
      Kalle Valo 提交于
      Here's a new mac80211 driver for Qualcomm Atheros 802.11ac QCA98xx devices.
      A major difference from ath9k is that there's now a firmware and
      that's why we had to implement a new driver.
      
      The wiki page for the driver is:
      
      http://wireless.kernel.org/en/users/Drivers/ath10k
      
      The driver has had many authors, they are listed here alphabetically:
      
      Bartosz Markowski <bartosz.markowski@tieto.com>
      Janusz Dziedzic <janusz.dziedzic@tieto.com>
      Kalle Valo <kvalo@qca.qualcomm.com>
      Marek Kwaczynski <marek.kwaczynski@tieto.com>
      Marek Puzyniak <marek.puzyniak@tieto.com>
      Michal Kazior <michal.kazior@tieto.com>
      Sujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5e3dd157