1. 17 8月, 2010 4 次提交
  2. 14 8月, 2010 3 次提交
    • M
      ath5k: disable ASPM L0s for all cards · 6ccf15a1
      Maxim Levitsky 提交于
      Atheros PCIe wireless cards handled by ath5k do require L0s disabled.
      For distributions shipping with CONFIG_PCIEASPM (this will be enabled
      by default in the future in 2.6.36) this will also mean both L1 and L0s
      will be disabled when a pre 1.1 PCIe device is detected. We do know L1
      works correctly even for all ath5k pre 1.1 PCIe devices though but cannot
      currently undue the effect of a blacklist, for details you can read
      pcie_aspm_sanity_check() and see how it adjusts the device link
      capability.
      
      It may be possible in the future to implement some PCI API to allow
      drivers to override blacklists for pre 1.1 PCIe but for now it is
      best to accept that both L0s and L1 will be disabled completely for
      distributions shipping with CONFIG_PCIEASPM rather than having this
      issue present. Motivation for adding this new API will be to help
      with power consumption for some of these devices.
      
      Example of issues you'd see:
      
        - On the Acer Aspire One (AOA150, Atheros Communications Inc. AR5001
          Wireless Network Adapter [168c:001c] (rev 01)) doesn't work well
          with ASPM enabled, the card will eventually stall on heavy traffic
          with often 'unsupported jumbo' warnings appearing. Disabling
          ASPM L0s in ath5k fixes these problems.
      
        - On the same card you would see a storm of RXORN interrupts
          even though medium is idle.
      
      Credit for root causing and fixing the bug goes to Jussi Kivilinna.
      
      Cc: David Quan <David.Quan@atheros.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Cc: Tim Gardner <tim.gardner@canonical.com>
      Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Cc: stable@kernel.org
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6ccf15a1
    • R
      ath9k_htc: load proper firmware for device ID 7015 · ca6cff1f
      Rajkumar Manoharan 提交于
      This patch handles the firmware loading properly
      for device ID 7015.
      Signed-off-by: NRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ca6cff1f
    • V
      ath9k_htc: Fix disconnect issue in HT40 mode. · 71ba186c
      Vivek Natarajan 提交于
      Some APs advertise that they may be HT40 capable in the capabilites
      but the current operating channel configuration may be only HT20.
      This causes disconnection as ath9k_htc sets WLAN_RC_40_FLAG despite
      the AP operating in HT20 mode.
      Hence set this flag only if the current channel configuration
      is HT40 enabled.
      
      Cc: stable@kernel.org
      Signed-off-by: NVivek Natarajan <vnatarajan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      71ba186c
  3. 12 8月, 2010 1 次提交
    • R
      ath9k_htc: fix panic on packet injection using airbase-ng tool. · da93f106
      Rajkumar Manoharan 提交于
      This should fix the oops which occurs during the packet injection
      on monitor interface.
      
      EIP is at ath9k_htc_tx_start+0x69/0x220 [ath9k_htc]
       [<f84dc8ea>] ? invoke_tx_handlers+0xa5a/0xee0 [mac80211]
       [<f82c84f4>] ? ath9k_htc_tx+0x44/0xe0 [ath9k_htc]
       [<f84db7b8>] ? __ieee80211_tx+0xf8/0x190 [mac80211]
       [<f84dce0d>] ? ieee80211_tx+0x9d/0x1a0 [mac80211]
       [<f84dcfac>] ? ieee80211_xmit+0x9c/0x1c0 [mac80211]
       [<f84dd1b5>] ? ieee80211_monitor_start_xmit+0x85/0xb0 [mac80211]
       [<c04c30cd>] ? dev_hard_start_xmit+0x1ad/0x210
       [<c04b97c2>] ? __alloc_skb+0x52/0x130
       [<c04d7cd5>] ? sch_direct_xmit+0x105/0x170
       [<c04c5e9f>] ? dev_queue_xmit+0x37f/0x4b0
       [<c0567e1e>] ? packet_snd+0x21e/0x250
       [<c05684a2>] ? packet_sendmsg+0x32/0x40
       [<c04b4c63>] ? sock_aio_write+0x113/0x130
       [<c0207934>] ? do_sync_write+0xc4/0x100
       [<c0167740>] ? autoremove_wake_function+0x0/0x50
       [<c02f4414>] ? security_file_permission+0x14/0x20
       [<c0207ad4>] ? rw_verify_area+0x64/0xe0
       [<c01e6458>] ? handle_mm_fault+0x338/0x390
       [<c0207cd5>] ? vfs_write+0x185/0x1a0
       [<c058db20>] ? do_page_fault+0x160/0x3a0
       [<c0208512>] ? sys_write+0x42/0x70
       [<c01033ec>] ? syscall_call+0x7/0xb
      Signed-off-by: NRajkumar Manoharan <rmanoharan@atheros.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      da93f106
  4. 05 8月, 2010 10 次提交
  5. 30 7月, 2010 2 次提交
  6. 29 7月, 2010 1 次提交
  7. 28 7月, 2010 5 次提交
  8. 27 7月, 2010 8 次提交
  9. 21 7月, 2010 1 次提交
  10. 17 7月, 2010 2 次提交
  11. 15 7月, 2010 3 次提交
    • B
      ath5k: clean up rxlink handling · b3f194e5
      Bruno Randolf 提交于
      There were a few places where the sc->rxlink pointer was set to NULL "just in
      case". This helps nothing - quite to the contrary it is problematic since it
      can create self-linked rx descriptors in the middle of the list of receive
      buffers.
      
      Here is an example how this could happen (thanks Bob!):
      
      cpu 0:                                      cpu 1:
      
      ath5k_rx_stop
                                                  ath5k_tasklet_rx
      sc->rxlink = NULL;   /* just in case */
                                                    // following doesn't link used
                                                    // buffer to prev.
                                                    ath5k_rxbuf_setup()
      
      In the case of ath5k_rx_stop() and ath5k_stop_locked() buffers/descriptors are
      not changed so rxlink should not be changed as well.
      
      In ath5k_intr() we seem to  try to work around a hardware bug, as the comment
      (which is copied 1:1 from the HAL) suggests. I don't see how this could help.
      Also the HAL does not set rxlink in this case (So where does this code come
      from? It has been there since the first import of ath5k). Changed to just
      increment a statistics counter.
      
      After this patch rxlink is only set to NULL before we initialize rx descriptors
      and updated when the descriptors are linked together.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b3f194e5
    • B
      ath5k: disable tasklets during reset · 450464de
      Bob Copeland 提交于
      Based on a patch from Bruno Randolf, attempting useful
      work while we are resetting the chip just leads to interface
      lockups and bad descriptor data, and possibly DMAing to
      freed buffers.  Let's suspend all tasklets while
      reprogramming the registers in the card to avoid such
      problems.
      
      In the future we can convert the tasklets to threaded
      interrupt handlers to simplify things.
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Acked-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      450464de
    • B
      ath5k: move reset to mac80211 workqueue · 5faaff74
      Bob Copeland 提交于
      We currently trigger a reset via a tasklet when certain error
      conditions are detected so that the card will (eventually)
      restart.  Unfortunately this makes locking complicated since
      reset can also be called in process context (e.g. for channel
      change).  Currently nothing protects against concurrent resets,
      which can be the source of corruption bugs.
      
      Reset takes too long to spinlock the whole thing, so this
      patch moves deferred resets into the mac80211 workqueue to
      enable use of sc->lock mutex.
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Acked-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5faaff74