1. 15 4月, 2010 1 次提交
    • B
      ath5k: treat RXORN as non-fatal · 87d77c4e
      Bruno Randolf 提交于
      We get RXORN interrupts when all receive buffers are full. This is not
      necessarily a fatal situation. It can also happen when the bus is busy or the
      CPU is not fast enough to process all frames.
      
      Older chipsets apparently need a reset to come out of this situration, but on
      newer chips we can treat RXORN like RX, as going thru a full reset does more
      harm than good, there.
      
      The exact chip revisions which need a reset are unknown - this guess
      AR5K_SREV_AR5212 ("venice") is copied from the HAL.
      
      Inspired by openwrt 413-rxorn.patch:
      "treat rxorn like rx, reset after rxorn seems to do more harm than good"
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      87d77c4e
  2. 08 4月, 2010 1 次提交
    • B
      ath5k: Adaptive Noise Immunity (ANI) Implementation · 2111ac0d
      Bruno Randolf 提交于
      This is an Adaptive Noise Imunity (ANI) implementation for ath5k. I have looked
      at both ath9k and HAL sources (they are nearly the same), and even though i
      have implemented some things differently, the basic algorithm is practically
      the same, for now. I hope that this can serve as a clean start to improve the
      algorithm later.
      
      This also adds a possibility to manually control ANI settings, right now only
      thru a debugfs file:
        * set lowest sensitivity (=highest noise immunity):
      	echo sens-low > /sys/kernel/debug/ath5k/phy0/ani
        * set highest sensitivity (=lowest noise immunity):
      	echo sens-high > /sys/kernel/debug/ath5k/phy0/ani
        * automatically control immunity (default):
      	echo ani-on > /sys/kernel/debug/ath5k/phy0/ani
        * to see the parameters in use and watch them change:
      	cat /sys/kernel/debug/ath5k/phy0/ani
      
      Manually setting sensitivity will turn the automatic control off. You can also
      control each of the five immunity parameters (noise immunity, spur immunity,
      firstep, ofdm weak signal detection, cck weak signal detection) manually thru
      the debugfs file.
      
      This is tested on AR5414 and nearly doubles the thruput in a noisy 2GHz band.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2111ac0d
  3. 01 4月, 2010 2 次提交
  4. 11 3月, 2010 2 次提交
  5. 09 2月, 2010 1 次提交
  6. 05 12月, 2009 1 次提交
  7. 04 12月, 2009 1 次提交
  8. 12 11月, 2009 1 次提交
  9. 08 10月, 2009 2 次提交
  10. 20 8月, 2009 1 次提交
  11. 14 8月, 2009 2 次提交
  12. 11 7月, 2009 2 次提交
    • B
      ath5k: rework beacon configuration · 21800491
      Bob Copeland 提交于
      Using the enable_beacon flag allows some simplifications and fixes
      some corner cases in beacon handling.  This change adds a state
      variable for beaconing in ath5k_beacon_config and handles both
      enabling and disabling, thus eliminating the need for
      ath5k_beacon_disable.  We also now configure the beacon when any
      of the beacon parameters change, so ath5k_beacon_reconfig is no
      longer needed (its mmiowb gets moved to ath5k_beacon_config).
      Finally, by locking around the whole config function, we don't
      need to worry about clearing the interrupt mask register before
      installing the new mask.
      
      The upshot is this correctly disables beaconing when the interfaces
      are taken down, it fixes a potential restarting of beaconing
      when ath5k_reset() is called, and ensures that updates to the
      beacon interval take effect immediately.
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      21800491
    • B
      ath5k: send buffered frames after the beacon · cec8db23
      Bob Copeland 提交于
      Enable the "Content" After Beacon queue and utilize it to send
      any buffered frames for power-saving clients.
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cec8db23
  13. 11 6月, 2009 2 次提交
  14. 23 4月, 2009 2 次提交
  15. 28 3月, 2009 1 次提交
    • B
      ath5k: warn and correct rate for unknown hw rate indexes · b7266047
      Bob Copeland 提交于
      ath5k sets up a mapping table from the hardware rate index to
      the rate index used by mac80211; however, we have seen some
      received frames with incorrect rate indexes.  Such frames
      normally get dropped with a warning in __ieee80211_rx(),
      but it doesn't include enough information to track down the
      error.
      
      This patch adds a warning to hw_to_driver_rix for any lookups
      that result in a rate index of -1, then returns a valid rate so
      the frame can be processed.
      
      Changes-licensed-under: 3-Clause-BSD
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b7266047
  16. 28 2月, 2009 1 次提交
  17. 30 1月, 2009 1 次提交
  18. 26 11月, 2008 1 次提交
  19. 23 10月, 2008 1 次提交
  20. 16 9月, 2008 1 次提交
  21. 27 8月, 2008 1 次提交
  22. 23 8月, 2008 1 次提交
    • B
      ath5k: rates cleanup · 63266a65
      Bruno Randolf 提交于
      cleanup the rates structures used by ath5k. instead of separate driver and
      mac80211 rate structures we now setup a static ieee80211_rate array and use it
      directly. no conversion between two different rate structures has to be done
      any more. a lot of unused and confusing junk was deleted.
      
      renamed ath5k_getchannels into ath5k_setup_bands because this is what it does.
      rewrote it to copy the bitrates correctly for each band. this is necessary for
      running different hardware with the same driver (e.g. 5211 and 5212 based
      cards).
      
      add special handling of rates for AR5211 chipsets: it uses different rate codes
      for CCK rates (which are actually like the other chips but with a 0xF mask).
      
      setup a hardware code to rate index reverse mapping table for getting the rate
      index of received frames.
      
      the rates for control frames which have to be set in
      ath5k_hw_write_rate_duration are now in one single array.
      
      drivers/net/wireless/ath5k/ath5k.h:     Changes-licensed-under: ISC
      drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD
      drivers/net/wireless/ath5k/base.h:      Changes-licensed-under: 3-Clause-BSD
      drivers/net/wireless/ath5k/hw.c:        Changes-licensed-under: ISC
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      63266a65
  23. 30 7月, 2008 1 次提交
    • J
      Ath5k: fix memory corruption · 3a0f2c87
      Jiri Slaby 提交于
      When signal is noisy, hardware can use all RX buffers and since the last
      entry in the list is self-linked, it overwrites the entry until we link
      new buffers.
      
      Ensure that we don't free this last one until we are 100% sure that it
      is not used by the hardware anymore to not cause memory curruption as
      can be seen below.
      
      This is done by checking next buffer in the list. Even after that we
      know that the hardware refetched the new link and proceeded further
      (the next buffer is ready) we can finally free the overwritten buffer.
      
      We discard it since the status in its descriptor is overwritten (OR-ed
      by new status) too.
      
      =============================================================================
      BUG kmalloc-4096: Poison overwritten
      -----------------------------------------------------------------------------
      
      INFO: 0xffff810067419060-0xffff810067419667. First byte 0x8 instead of 0x6b
      INFO: Allocated in dev_alloc_skb+0x18/0x30 age=1118 cpu=1 pid=0
      INFO: Freed in skb_release_data+0x85/0xd0 age=1105 cpu=1 pid=3718
      INFO: Slab 0xffffe200019d0600 objects=7 used=0 fp=0xffff810067419048 flags=0x40000000000020c3
      INFO: Object 0xffff810067419048 @offset=4168 fp=0xffff81006741c120
      
      Bytes b4 0xffff810067419038:  4f 0b 02 00 01 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a O.......ZZZZZZZZ
        Object 0xffff810067419048:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
        Object 0xffff810067419058:  6b 6b 6b 6b 6b 6b 6b 6b 08 42 30 00 00 0b 6b 80 kkkkkkkk.B0...k.
        Object 0xffff810067419068:  f0 5d 00 4f 62 08 a3 64 00 0c 42 16 52 e4 f0 5a 360].Ob.243d..B.R344360Z
        Object 0xffff810067419078:  68 81 00 00 7b a5 b4 be 7d 3b 8f 53 cd d5 de 12 h...{245264276};.S315325336.
        Object 0xffff810067419088:  96 10 0b 89 48 54 23 41 0f 4e 2d b9 37 c3 cb 29 ....HT#A.N-2717303313)
        Object 0xffff810067419098:  d1 e0 de 14 8a 57 2a cc 3b 44 0d 78 7a 19 12 15 321340336..W*314;D.xz...
        Object 0xffff8100674190a8:  a9 ec d4 35 a8 10 ec 8c 40 a7 06 0a 51 a7 48 bb 2513543245250.354.@247..Q247H273
        Object 0xffff8100674190b8:  3e cf a1 c7 38 60 63 3f 51 15 c7 20 eb ba 65 30 >ϡ3078`c?Q.307.353272e0
       Redzone 0xffff81006741a048:  bb bb bb bb bb bb bb bb                         273273273273273273273273
       Padding 0xffff81006741a088:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ
      Pid: 3297, comm: ath5k_pci Not tainted 2.6.26-rc8-mm1_64 #427
      
      Call Trace:
       [<ffffffff802a7306>] print_trailer+0xf6/0x150
       [<ffffffff802a7485>] check_bytes_and_report+0x125/0x180
       [<ffffffff802a75dc>] check_object+0xac/0x260
       [<ffffffff802a9308>] __slab_alloc+0x368/0x6d0
       [<ffffffff80544f82>] ? wireless_send_event+0x142/0x310
       [<ffffffff804b1bd4>] ? __alloc_skb+0x44/0x150
       [<ffffffff80544f82>] ? wireless_send_event+0x142/0x310
       [<ffffffff802aa853>] __kmalloc_track_caller+0xc3/0xf0
       [<ffffffff804b1bfe>] __alloc_skb+0x6e/0x150
      [... stack snipped]
      
      FIX kmalloc-4096: Restoring 0xffff810067419060-0xffff810067419667=0x6b
      
      FIX kmalloc-4096: Marking all objects used
      Signed-off-by: NJiri Slaby <jirislaby@gmail.com>
      Acked-by: NNick Kossifidis <mickflemm@gmail.com>
      Cc: Luis R. Rodriguez <mcgrof@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3a0f2c87
  24. 27 6月, 2008 1 次提交
  25. 22 5月, 2008 1 次提交
  26. 08 5月, 2008 1 次提交
  27. 01 3月, 2008 2 次提交
    • L
      ath5k: Port debug.c over to the new band API and enable as build option · b446197c
      Luis R. Rodriguez 提交于
      This patch finishes the port and enables debug as an build option.
      This was tested on:
      
      Atheros AR5213A chip found (MAC: 0x59, PHY: 0x43)
      RF5112A multiband radio found (0x36)
      
      Note:
      
      For 2 GHz band on the above card I noticed we get negative channel
      numbers. Will look into this unless someone beats me to it.
      
      Example out put when loading using:
      
      sudo modprobe ath5k debug=0x00000400
      
       Band 2 GHz: channels 26, rates 12
        channels:
           1 2412 00c0 0000
           2 2417 00c0 0000
           3 2422 00c0 0000
           4 2427 00c0 0000
           5 2432 00c0 0000
           6 2437 00c0 0000
           7 2442 00c0 0000
           8 2447 00c0 0000
           9 2452 00c0 0000
          10 2457 00c0 0000
          11 2462 00c0 0000
          12 2467 00c0 0000
          13 2472 00c0 0000
          14 2484 00c0 0000
         -498 2512 00c0 0000
         -494 2532 00c0 0000
         -490 2552 00c0 0000
         -486 2572 00c0 0000
         -482 2592 00c0 0000
         -478 2612 00c0 0000
         -474 2632 00c0 0000
         -470 2652 00c0 0000
         -466 2672 00c0 0000
         -462 2692 00c0 0000
         -458 2712 00c0 0000
         -454 2732 00c0 0000
       Band 5 GHz: channels 194, rates 8
        channels:
          27 5135 0140 0000
          28 5140 0140 0000
      [... etc ]
         219 6095 0140 0000
         220 6100 0140 0000
        rates:
           60 000b 0000 0000
           90 000f 0000 0000
          120 000a 0000 0000
          180 000e 0000 0000
          240 0009 0000 0000
          360 000d 0000 0000
          480 0008 0000 0000
          540 000c 0000 0000
      
      Changes to base.c, base.h
      Changes-licensed-under: 3-Clause-BSD
      
      Changes to debug.c, debug.h
      Changes-licensed-under: GPL
      Signed-off-by: NLuis R. Rodriguez <mcgrof@winlab.rutgers.edu>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b446197c
    • L
      ath5k: Port to new bitrate/channel API · d8ee398d
      Luis R. Rodriguez 提交于
      Author: Nick Kossifidis <mickflemm@gmail.com>
      
      Tested on 5211, 5213+5112, 5213A+2112A and it wors fine.
      
      Also i figured out a way to process rate vallue found
      on status descriptors, it's still buggy but we are getting
      closer (i think it improved stability a little).
      
      Changes to hw.c, initvals.c, phy.c
      Changes-licensed-under: ISC
      
      Changes to ath5k.h, base.c, base.h
      Changes-licensed-under: 3-Clause-BSD
      Acked-by: NJiri Slaby <jirislaby@gmail.com>
      Signed-off-by: NNick Kossifidis <mickflemm@gmail.com>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@winlab.rutgers.edu>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d8ee398d
  28. 29 1月, 2008 4 次提交