1. 20 4月, 2010 1 次提交
  2. 15 4月, 2010 2 次提交
    • 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
    • B
      ath5k: Use high bitrates for ACK/CTS · 0edc9a67
      Bruno Randolf 提交于
      There was a confusion in the usage of the bits AR5K_STA_ID1_ACKCTS_6MB and
      AR5K_STA_ID1_BASE_RATE_11B. If they are set (1), we will get lower bitrates for
      ACK and CTS. Therefore ath5k_hw_set_ack_bitrate_high(ah, false) actually
      resulted in high bitrates, which i think is what we want anyways. Cleared the
      confusion and added some documentation.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0edc9a67
  3. 09 4月, 2010 2 次提交
  4. 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
  5. 01 4月, 2010 6 次提交
  6. 11 3月, 2010 5 次提交
    • B
      ath5k: add debugfs file frameerrors · 7644395f
      Bruno Randolf 提交于
      add a debugfs file to see different RX and TX errors as reported in our status
      descriptors. this can help to diagnose driver problems.
      
      statistics can be cleared by writing 'clear' into the frameerrors file.
      
      example:
      
      # cat /sys/kernel/debug/ath5k/phy0/frameerrors
      RX
      ---------------------
      CRC     27      (11%)
      PHY     3       (1%)
      FIFO    0       (0%)
      decrypt 0       (0%)
      MIC     0       (0%)
      process 0       (0%)
      jumbo   0       (0%)
      [RX all 245]
      
      TX
      ---------------------
      retry   2       (9%)
      FIFO    0       (0%)
      filter  0       (0%)
      [TX all 21]
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Acked-by: NNick Kossifidis <mickflemm@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7644395f
    • B
      ath5k: remove double opmode definition · ccfe5552
      Bruno Randolf 提交于
      opmode (operating mode) was defined in struct ath5k_hw and struct ath5k_softc.
      remove it from ath5k_hw and use only from ath5k_softc (sc->opmode).
      
      (btw: what's the meaning of opmode when we have multiple interfaces?)
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Acked-by: NNick Kossifidis <mickflemm@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ccfe5552
    • B
      ath5k: preserve antenna settings · caec9112
      Bruno Randolf 提交于
      save antenna settings and preserve across resets.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Acked-by: NNick Kossifidis <mickflemm@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      caec9112
    • B
      ath5k: add antenna statistics and debugfs file for antenna settings · 604eeadd
      Bruno Randolf 提交于
      keep statistics about which antenna was used for TX and RX. this is used only
      for debugging right now, but might have other applications later.
      
      add a new file 'antenna' in debugfs (/sys/kernel/debug/ath5k/phy0/antenna) to show
      antenna use statistics and antenna diversity related register values. it can
      also be used to set the antenna mode until we have proper support for that in
      iw:
        - echo diversity > antenna: use default antenna mode (RX and TX diversity)
        - echo fixed-a > antenna: use fixed antenna A for RX and TX
        - echo fixed-b > antenna: use fixed antenna B for RX and TX
        - echo clear > antenna: reset antenna statistics
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Acked-by: NNick Kossifidis <mickflemm@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      604eeadd
    • B
      ath5k: Fix TX/RX padding for all frames · 8127fbdc
      Benoit Papillault 提交于
      Currently, the padding position is based on
      ieee80211_get_hdrlen_from_skb(). This is not correct since the HW does
      padding on RX (and expect the same padding to be present on TX) at the
      following position :
      
      - management : 24 + 6 if 4-addr format
      - control    : 24 + 6 if 4-addr format
      - data       : 24 + 6 if 4-addr format + 2 if QoS
      - invalid    : 24 + 6 if 4-addr format
      
      whereas ieee80211_get_hdrlen_from_skb() is :
      
      - management : 24
      - control    : 16 except for ACK/CTS where it is 10
      - data       : 24 + 6 if 4-addr format + 2 if QoS + 2 if QoS & order
      - invalid    : 24
      
      So, correct frames are not affected : management frames do not use
      4-addr format, control frames have no body and invalid frames are ...
      not valid by definition. However, in order to use monitor interface for
      debugging purpose, one must be able to send/receive any frames, be it
      correct or not. Such frames are affected by incorrect padding.
      
      Moreover, since padding is added on TX, we need to remove it before
      calling ieee80211_tx_status. This affect TX packets received by monitor
      interfaces.
      
      It has been tested between an ath5k based card (AR5212) and an ar9170usb
      based card (netgear WNDA3100) using a frame generator and a monitor
      interface for each card.
      
      v2: Added ath5k_add_padding / ath5k_remove_padding
      Signed-off-by: NBenoit Papillault <benoit.papillault@free.fr>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8127fbdc
  7. 10 3月, 2010 1 次提交
  8. 11 2月, 2010 1 次提交
  9. 09 2月, 2010 1 次提交
  10. 23 1月, 2010 1 次提交
  11. 13 1月, 2010 1 次提交
  12. 08 1月, 2010 1 次提交
  13. 29 12月, 2009 3 次提交
    • J
      mac80211: remove struct ieee80211_if_init_conf · 1ed32e4f
      Johannes Berg 提交于
      All its members (vif, mac_addr, type) are now available
      in the vif struct directly, so we can pass that instead
      of the conf struct. I generated this patch (except the
      mac80211 and header file changes) with this semantic
      patch:
      
      @@
      identifier conf, fn, hw;
      type tp;
      @@
      tp fn(struct ieee80211_hw *hw,
      -struct ieee80211_if_init_conf *conf)
      +struct ieee80211_vif *vif)
      {
      <...
      (
      -conf->type
      +vif->type
      |
      -conf->mac_addr
      +vif->addr
      |
      -conf->vif
      +vif
      )
      ...>
      }
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1ed32e4f
    • J
      wireless: remove remaining qual code · 671adc93
      Johannes Berg 提交于
      This removes the remaining users of the rx status
      'qual' field and the field itself.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      671adc93
    • B
      ath5k: fix SWI calibration interrupt storm · 242ab7ad
      Bob Copeland 提交于
      The calibration period is now invoked by triggering a software
      interrupt from within the ISR by ath5k_hw_calibration_poll()
      instead of via a timer.
      
      However, the calibration interval isn't initialized before
      interrupts are enabled, so we can have a situation where an
      interrupt occurs before the interval is assigned, so the
      interval is actually negative.  As a result, the ISR will
      arm a software interrupt to schedule the tasklet, and then
      rearm it when the SWI is processed, and so on, leading to a
      softlockup at modprobe time.
      
      Move the initialization order around so the calibration interval
      is set before interrupts are active.  Another possible fix
      is to schedule the tasklet directly from the poll routine,
      but I think there are additional plans for the SWI.
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      242ab7ad
  14. 12 11月, 2009 3 次提交
  15. 11 11月, 2009 1 次提交
  16. 08 10月, 2009 10 次提交