1. 11 3月, 2010 2 次提交
    • 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
  2. 10 3月, 2010 4 次提交
  3. 04 3月, 2010 1 次提交
    • S
      mac80211: Fix HT rate control configuration · 4fa00437
      Sujith 提交于
      Handling HT configuration changes involved setting the channel
      with the new HT parameters and then issuing a rate_update()
      notification to the driver.
      
      This behavior changed after the off-channel changes. Now, the channel
      is not updated with the new HT params in enable_ht() - instead, it
      is now done when the scan work terminates. This results in the driver
      depending on stale information, defaulting to non-HT mode always.
      
      Fix this by passing the new channel type to the driver.
      
      Cc: stable@kernel.org
      Signed-off-by: NSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4fa00437
  4. 03 3月, 2010 2 次提交
    • J
      ar9170: load firmware asynchronously · 53576517
      Johannes Berg 提交于
      This converts ar9170 to load firmware asynchronously
      out of ->probe() and only register with mac80211 when
      all firmware has been loaded successfully. If, on the
      other hand, any firmware fails to load, it will now
      unbind from the device.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      53576517
    • M
      ath9k: fix lockdep warning when unloading module · a9f042cb
      Ming Lei 提交于
      Since txq->axq_lock may be hold in softirq context, it must be
      acquired with spin_lock_bh() instead of spin_lock() if softieq is
      enabled.
      
      The patch fixes the lockdep warning below when unloading ath9k modules.
      
      =================================
      [ INFO: inconsistent lock state ]
      2.6.33-wl #12
      ---------------------------------
      inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
      rmmod/3642 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (&(&txq->axq_lock)->rlock){+.?...}, at: [<ffffffffa03568c3>] ath_tx_node_cleanup+0x62/0x180 [ath9k]
      {IN-SOFTIRQ-W} state was registered at:
        [<ffffffff8107577d>] __lock_acquire+0x2f6/0xd35
        [<ffffffff81076289>] lock_acquire+0xcd/0xf1
        [<ffffffff813a7486>] _raw_spin_lock_bh+0x3b/0x6e
        [<ffffffffa0356b49>] spin_lock_bh+0xe/0x10 [ath9k]
        [<ffffffffa0358ec7>] ath_tx_tasklet+0xcd/0x391 [ath9k]
        [<ffffffffa0354f5f>] ath9k_tasklet+0x70/0xc8 [ath9k]
        [<ffffffff8104e601>] tasklet_action+0x8c/0xf4
        [<ffffffff8104f459>] __do_softirq+0xf8/0x1cd
        [<ffffffff8100ab1c>] call_softirq+0x1c/0x30
        [<ffffffff8100c2cf>] do_softirq+0x4b/0xa3
        [<ffffffff8104f045>] irq_exit+0x4a/0x8c
        [<ffffffff813acccc>] do_IRQ+0xac/0xc3
        [<ffffffff813a7d53>] ret_from_intr+0x0/0x16
        [<ffffffff81302d52>] cpuidle_idle_call+0x9e/0xf8
        [<ffffffff81008be7>] cpu_idle+0x62/0x9d
        [<ffffffff81391c1a>] rest_init+0x7e/0x80
        [<ffffffff818bbd38>] start_kernel+0x3e8/0x3f3
        [<ffffffff818bb2bc>] x86_64_start_reservations+0xa7/0xab
        [<ffffffff818bb3b8>] x86_64_start_kernel+0xf8/0x107
      irq event stamp: 42037
      hardirqs last  enabled at (42037): [<ffffffff813a7b21>] _raw_spin_unlock_irqrestore+0x47/0x56
      hardirqs last disabled at (42036): [<ffffffff813a72f4>] _raw_spin_lock_irqsave+0x2b/0x88
      softirqs last  enabled at (42000): [<ffffffffa0353ea6>] spin_unlock_bh+0xe/0x10 [ath9k]
      softirqs last disabled at (41998): [<ffffffff813a7463>] _raw_spin_lock_bh+0x18/0x6e
      
      other info that might help us debug this:
      4 locks held by rmmod/3642:
       #0:  (rtnl_mutex){+.+.+.}, at: [<ffffffff8132c10d>] rtnl_lock+0x17/0x19
       #1:  (&wdev->mtx){+.+.+.}, at: [<ffffffffa01e53f2>] cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       #2:  (&ifmgd->mtx){+.+.+.}, at: [<ffffffffa0260834>] ieee80211_mgd_deauth+0x3f/0x17e [mac80211]
       #3:  (&local->sta_mtx){+.+.+.}, at: [<ffffffffa025a381>] sta_info_destroy_addr+0x2b/0x5e [mac80211]
      
      stack backtrace:
      Pid: 3642, comm: rmmod Not tainted 2.6.33-wl #12
      Call Trace:
       [<ffffffff81074469>] valid_state+0x178/0x18b
       [<ffffffff81014f94>] ? save_stack_trace+0x2f/0x4c
       [<ffffffff81074e08>] ? check_usage_backwards+0x0/0x88
       [<ffffffff8107458f>] mark_lock+0x113/0x230
       [<ffffffff810757f1>] __lock_acquire+0x36a/0xd35
       [<ffffffff8101018d>] ? native_sched_clock+0x2d/0x5f
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff81076289>] lock_acquire+0xcd/0xf1
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff810732eb>] ? trace_hardirqs_off+0xd/0xf
       [<ffffffff813a7193>] _raw_spin_lock+0x36/0x69
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffffa03568c3>] ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff810749ed>] ? trace_hardirqs_on+0xd/0xf
       [<ffffffffa0353950>] ath9k_sta_remove+0x22/0x26 [ath9k]
       [<ffffffffa025a08f>] __sta_info_destroy+0x1ad/0x38c [mac80211]
       [<ffffffffa025a394>] sta_info_destroy_addr+0x3e/0x5e [mac80211]
       [<ffffffffa02605d6>] ieee80211_set_disassoc+0x175/0x180 [mac80211]
       [<ffffffffa026084d>] ieee80211_mgd_deauth+0x58/0x17e [mac80211]
       [<ffffffff813a60c1>] ? __mutex_lock_common+0x37f/0x3a4
       [<ffffffffa01e53f2>] ? cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       [<ffffffffa026786e>] ieee80211_deauth+0x1e/0x20 [mac80211]
       [<ffffffffa01f47f9>] __cfg80211_mlme_deauth+0x130/0x13f [cfg80211]
       [<ffffffffa01e53f2>] ? cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       [<ffffffff810732eb>] ? trace_hardirqs_off+0xd/0xf
       [<ffffffffa01f7eee>] __cfg80211_disconnect+0x111/0x189 [cfg80211]
       [<ffffffffa01e5433>] cfg80211_netdev_notifier_call+0x2ce/0x46d [cfg80211]
       [<ffffffff813aa9ea>] notifier_call_chain+0x37/0x63
       [<ffffffff81068c98>] raw_notifier_call_chain+0x14/0x16
       [<ffffffff81322e97>] call_netdevice_notifiers+0x1b/0x1d
       [<ffffffff8132386d>] dev_close+0x6a/0xa6
       [<ffffffff8132395f>] rollback_registered_many+0xb6/0x2f4
       [<ffffffff81323bb8>] unregister_netdevice_many+0x1b/0x66
       [<ffffffffa026494f>] ieee80211_remove_interfaces+0xc5/0xd0 [mac80211]
       [<ffffffffa02580a2>] ieee80211_unregister_hw+0x47/0xe8 [mac80211]
       [<ffffffffa035290e>] ath9k_deinit_device+0x7a/0x9b [ath9k]
       [<ffffffffa035bc26>] ath_pci_remove+0x38/0x76 [ath9k]
       [<ffffffff8120940a>] pci_device_remove+0x2d/0x51
       [<ffffffff8129d797>] __device_release_driver+0x7b/0xd1
       [<ffffffff8129d885>] driver_detach+0x98/0xbe
       [<ffffffff8129ca7a>] bus_remove_driver+0x94/0xb7
       [<ffffffff8129ddd6>] driver_unregister+0x6c/0x74
       [<ffffffff812096d2>] pci_unregister_driver+0x46/0xad
       [<ffffffffa035bae1>] ath_pci_exit+0x15/0x17 [ath9k]
       [<ffffffffa035e1a2>] ath9k_exit+0xe/0x2f [ath9k]
       [<ffffffff8108050a>] sys_delete_module+0x1c7/0x236
       [<ffffffff813a7df5>] ? retint_swapgs+0x13/0x1b
       [<ffffffff810749b5>] ? trace_hardirqs_on_caller+0x119/0x144
       [<ffffffff8109b9f6>] ? audit_syscall_entry+0x11e/0x14a
       [<ffffffff81009bb2>] system_call_fastpath+0x16/0x1b
      wlan1: deauthenticating from 00:23:cd:e1:f9:b2 by local choice (reason=3)
      PM: Removing info for No Bus:wlan1
      cfg80211: Calling CRDA to update world regulatory domain
      PM: Removing info for No Bus:rfkill2
      PM: Removing info for No Bus:phy1
      ath9k 0000:16:00.0: PCI INT A disabled
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a9f042cb
  5. 27 2月, 2010 1 次提交
  6. 20 2月, 2010 4 次提交
  7. 17 2月, 2010 1 次提交
  8. 13 2月, 2010 1 次提交
  9. 11 2月, 2010 1 次提交
  10. 10 2月, 2010 2 次提交
  11. 09 2月, 2010 6 次提交
  12. 03 2月, 2010 1 次提交
  13. 02 2月, 2010 3 次提交
  14. 29 1月, 2010 1 次提交
  15. 28 1月, 2010 1 次提交
  16. 26 1月, 2010 2 次提交
  17. 23 1月, 2010 3 次提交
  18. 20 1月, 2010 3 次提交
    • F
      ath9k: fix beacon slot/buffer leak · 74401773
      Felix Fietkau 提交于
      When cleaning up beacon buffers and slots, ath9k currently checks if
      sc->ah->opmode is set to a beacon related mode before cleaning up
      buffers.
      An unfortunate ordering of interface up/down commands can lead to
      sc->ah->opmode being set to monitor mode, while there are AP interfaces
      present on the same wiphy.
      Always cleaning up beacon buffers if present fixes this issue.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      74401773
    • L
      ath9k: make tx power config changes take effect immediatley · c9f6a656
      Luis R. Rodriguez 提交于
      Users wishing to tweak tx power want it to happen immediately,
      try to respect that. This was tested by Lorenzo by measuring the
      received signal strength from an AP with ath9k and the patch.
      
      Changing the tx power on the AP produced these results:
      
      1) iwconfig wlan0 txpower 20 ---> Rx power -37dbm
      2) iwconfig wlan0 txpower 15 ---> Rx power -41dbm
      3) iwconfig wlan0 txpower 10 ---> Rx power -45dbm
      4) iwconfig wlan0 txpower 5 ---> Rx power -51dbm
      5) iwconfig wlan0 txpower 0 ---> Rx power -37dbm
      
      The result with 0 is an anomoly and would need to be
      addressed through a separate patch.
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Tested-by: NLorenzo Bianconi <lorenzo.bianconi83@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c9f6a656
    • F
      ath9k: fix RTS/CTS handling · 27032059
      Felix Fietkau 提交于
      The Tx DMA descriptor has two kinds of flags that select RTS/CTS usage.
      The first one (global for the frame) selects whether RTS/CTS or
      CTS-to-self should be used, the second one enables RTS/CTS or
      CTS-to-self usage for an individual multi-rate-retry entry.
      Previously the code preparing the descriptor only enabled the global
      flag, if the first MRR series selected the local one.
      Fix this by enabling the global flag if any of the MRR entries need it.
      With this patch, rate control can properly select the use of RTS/CTS
      for all MRR entries except the first one, which is the default behavior.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      27032059
  19. 16 1月, 2010 1 次提交