1. 24 11月, 2009 1 次提交
  2. 19 11月, 2009 1 次提交
    • M
      b43: Enforce DMA descriptor memory constraints · 9bd568a5
      Michael Buesch 提交于
      Enforce all device constraints on the descriptor memory region.
      
      There are several constraints on the descriptor memory, as documented
      in the specification. The current code does not enforce them and/or
      incorrectly enforces them.
      
      Those constraints are:
      - The address limitations on 30/32bit engines, that also apply to
        the skbs.
      - The 4k alignment requirement on 30/32bit engines.
      - The 8k alignment requirement on 64bit engines.
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9bd568a5
  3. 12 11月, 2009 1 次提交
  4. 31 10月, 2009 1 次提交
    • M
      b43: Fix DMA TX bounce buffer copying · 9a3f4511
      Michael Buesch 提交于
      b43 allocates a bouncebuffer, if the supplied TX skb is in an invalid
      memory range for DMA.
      However, this is broken in that it fails to copy over some metadata to the
      new skb.
      
      This patch fixes three problems:
      * Failure to adjust the ieee80211_tx_info pointer to the new buffer.
        This results in a kmemcheck warning.
      * Failure to copy the skb cb, which contains ieee80211_tx_info, to the new skb.
        This results in breakage of various TX-status postprocessing (Rate control).
      * Failure to transfer the queue mapping.
        This results in the wrong queue being stopped on saturation and can result in queue overflow.
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Tested-by: NChristian Casteyde <casteyde.christian@free.fr>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9a3f4511
  5. 23 9月, 2009 1 次提交
  6. 09 9月, 2009 2 次提交
  7. 20 8月, 2009 1 次提交
  8. 05 8月, 2009 1 次提交
    • L
      b43: Work around mac80211 race condition · 18c69510
      Larry Finger 提交于
      As shown in http://thread.gmane.org/gmane.linux.kernel.wireless.general/36497,
      mac80211 has a bug that allows a call to the TX routine after the queues have
      been stopped. This situation will only occur under extreme stress. Although
      b43 does not crash when this condition occurs, it does generate a WARN_ON and
      also logs a queue overrun message. This patch recognizes b43 is not at fault
      and logs a message only when the most verbose debugging mode is enabled. In
      the unlikely event that the queue is not stopped when the DMA queue becomes
      full, then a warning is issued.
      
      During testing of this patch with one output stream running repeated tcpperf
      writes and a second running a flood ping, this routine was entered with
      the DMA ring stopped about once per hour. The condition where the DMA queue is
      full but the ring has not been stopped has never been seen by me.
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      18c69510
  9. 11 6月, 2009 1 次提交
  10. 16 4月, 2009 2 次提交
    • M
      b43: Refresh RX poison on buffer recycling · cf68636a
      Michael Buesch 提交于
      The RX buffer poison needs to be refreshed, if we recycle an RX buffer,
      because it might be (partially) overwritten by some DMA operations.
      
      Cc: stable@kernel.org
      Cc: Francesco Gringoli <francesco.gringoli@ing.unibs.it>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cf68636a
    • M
      b43: Poison RX buffers · ec9a1d8c
      Michael Buesch 提交于
      This patch adds poisoning and sanity checking to the RX DMA buffers.
      This is used for protection against buggy hardware/firmware that raises
      RX interrupts without doing an actual DMA transfer.
      
      This mechanism protects against rare "bad packets" (due to uninitialized skb data)
      and rare kernel crashes due to uninitialized RX headers.
      
      The poison is selected to not match on valid frames and to be cheap for checking.
      
      The poison check mechanism _might_ trigger incorrectly, if we are voluntarily
      receiving frames with bad PLCP headers. However, this is nonfatal, because the
      chance of such a match is basically zero and in case it happens it just results
      in dropping the packet.
      Bad-PLCP RX defaults to off, and you should leave it off unless you want to listen
      to the latest news broadcasted by your microwave oven.
      
      This patch also moves the initialization of the RX-header "length" field in front of
      the mapping of the DMA buffer. The CPU should not touch the buffer after we mapped it.
      
      Cc: stable@kernel.org
      Reported-by: NFrancesco Gringoli <francesco.gringoli@ing.unibs.it>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ec9a1d8c
  11. 07 4月, 2009 3 次提交
  12. 06 3月, 2009 1 次提交
  13. 28 2月, 2009 5 次提交
  14. 01 11月, 2008 1 次提交
  15. 27 6月, 2008 1 次提交
  16. 14 6月, 2008 1 次提交
  17. 22 5月, 2008 2 次提交
  18. 08 5月, 2008 1 次提交
  19. 24 4月, 2008 1 次提交
  20. 16 4月, 2008 1 次提交
    • M
      ssb: Fix usage of struct device used for DMAing · 4ac58469
      Michael Buesch 提交于
      This fixes DMA on architectures where DMA is nontrivial, like PPC64.
      We must use the host-device's (PCI) struct device for any DMA
      operation instead of the SSB device. For this we add a new
      struct device pointer to the SSB device structure that will always
      point to the right device for DMAing.
      
      Without this patch b43 and b44 drivers won't work on complex-DMA
      architectures, that for example need dev->archdata for DMA operations.
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4ac58469
  21. 09 4月, 2008 1 次提交
    • M
      b43: Add PIO support for PCMCIA devices · 5100d5ac
      Michael Buesch 提交于
      This adds PIO support back (D'oh!) for PCMCIA devices.
      This is a complete rewrite of the old PIO code. It does actually work
      and we get reasonable performance out of it on a modern machine.
      On a PowerBook G4 I get a few MBit for TX and a few more for RX.
      So it doesn't work as well as DMA (of course), but it's a _lot_ faster
      than the old PIO code (only got a few kBit with that).
      
      The limiting factor is the host CPU speed. So it will generate 100%
      CPU usage when the network interface is heavily loaded. A voluntary preemption
      point in the RX path makes sure Desktop Latency isn't hurt.
      
      PIO is needed for 16bit PCMCIA devices, as we really don't want to poke with
      the braindead DMA mechanisms on PCMCIA sockets. Additionally, not all
      PCMCIA sockets do actually support DMA in 16bit mode (mine doesn't).
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5100d5ac
  22. 02 4月, 2008 1 次提交
  23. 25 3月, 2008 2 次提交
  24. 08 3月, 2008 4 次提交
  25. 06 2月, 2008 1 次提交
  26. 01 2月, 2008 1 次提交
  27. 29 1月, 2008 1 次提交