aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/init.c
Commit message (Collapse)AuthorAgeFilesLines
* ath9k: use generic mac80211 LED blinking codeFelix Fietkau2011-02-281-0/+22
| | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6John W. Linville2011-02-181-8/+0
|\ | | | | | | | | | | Conflicts: drivers/bluetooth/ath3k.c drivers/bluetooth/btusb.c
| * ath9k: Fix ath9k prevents CPU to enter C3 statesMohammed Shafi Shajakhan2011-02-151-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DMA latency issue is observed only in Intel pinetrail platforms but in the driver we had a default PM-QOS value of 55. This caused unnecessary power consumption and battery drain in other platforms. Remove the pm-qos thing in the driver code and address the throughput issue in Intel pinetrail platfroms in user space using any one of the scripts in below links: http://www.kernel.org/pub/linux/kernel/people/mcgrof/scripts/cpudmalatency.c http://johannes.sipsolutions.net/files/netlatency.c.txt More details can be found in the following bugzilla link: https://bugzilla.kernel.org/show_bug.cgi?id=27532 This reverts the following commits: 98c316e348bedffa730e6f1e4baeb8a3c3e0f28b 4dc3530df7c0428b41c00399a7ee8c929406d181 10598c124ecabbbfd7522f74de19b8f7d52a1bee Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | Merge branch 'master' of ↵John W. Linville2011-01-281-5/+2
|\ \ | |/ | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Conflicts: drivers/net/wireless/ath/ath9k/init.c
| * ath9k: Fix power save usage count imbalance on deinitRajkumar Manoharan2011-01-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While unloading the driver, the ps_usecount is incremented before configuring gpio registers in deinit_device. But it is failed to restore the ps_usecount after that. The problem is that the chip is forcibly moved to FULL SLEEP by radio_disable when mac80211 is reporting as idle though ps_usecount is not zero. This patch retores ps_usecount properly and ensures that the chip is always moved to full sleep only if ps usage count is zero which also helps in debugging deadbeef on multivif case. And also fixes the following warning. ath: DMA failed to stop in 10 ms AR_CR=0xdeadbeef AR_DIAG_SW=0xdeadbeef ath: Could not stop RX, we could be confusing the DMA engine when we start RX up ------------[ cut here ]------------ WARNING: at drivers/net/wireless/ath/ath9k/recv.c:536 ath_stoprecv+0xf4/0x100 [ath9k]() Cc: stable@kernel.org Cc: Paul Stewart <pstew@google.com> Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * ath9k: fix race conditions when stop deviceStanislaw Gruszka2011-01-271-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We do not kill any scheduled tasklets when stopping device, that may cause usage of resources after free. Moreover we enable interrupts in tasklet function, so we could potentially end with interrupts enabled when driver is not ready to receive them. I think patch should fix Ben's kernel crash from: http://marc.info/?l=linux-wireless&m=129438358921501&w=2 Cc: stable@kernel.org Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: fold struct ath_wiphy into struct ath_softcFelix Fietkau2011-01-281-4/+2
| | | | | | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: remove support for virtual wiphysFelix Fietkau2011-01-281-18/+1
| | | | | | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Restart xmit logic in xmit watchdog.Ben Greear2011-01-211-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The system can get into a state where the xmit queue is stopped, but there are no packets pending, so the queue will not be restarted. Add logic to the xmit watchdog to attempt to restart the xmit logic if this situation is detected. Example 'dmesg' output: ath: txq: f4e723e0 axq_qnum: 2, mac80211_qnum: 2 axq_link: f4e996c8 pending frames: 1 axq_acq empty: 1 stopped: 0 axq_depth: 0 Attempting to restart tx logic. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Keep track of stations for debugfs.Ben Greear2011-01-211-0/+4
| | | | | | | | | | | | | | | | | | | | The stations hold the ath_node, which holds the tid and other xmit logic structures. In order to debug stuck xmit logic, we need a way to print out the tid state for the stations. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Initialize ah->hwBen Greear2011-01-211-0/+1
|/ | | | | | | Previous code left it NULL. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: qualify global modparam_nohwcrypt variableJohn W. Linville2011-01-051-3/+3
| | | | Signed-off-by: John W. Linville <linville@tuxdriver.com>
* Revert "ath9k: Parse DTIM period from mac80211"Mohammed Shafi Shajakhan2011-01-041-2/+1
| | | | | | | | | | | | | | | This reverts commit 0ce3bcfc84900a64347b0fe1140229bd81314008. Event though with the above commit we obtain the configured DTIM period from the AP rather than always hardcoding it to '1', this seems to cause problems under the following scenarios: * Preventing association with broken AP's * Adds latency in roaming So its better to always use the safe value of '1' for dtim period Cc: Jouni Malinen <Jouni.Malinen@Atheros.com> Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Reset keycache on resumeMohammed Shafi Shajakhan2010-12-221-1/+1
| | | | | | | | | | | | | | It looks like some hardware registers are left into undefined state after suspend/resume. At minimum, this can cause odd issues related to key cache and hardware trying to encrypt/decrypt frames unexpectedly. This seems to happen even when there is no keys configured, i.e., hardware can end up touching TX frames just based of invalid key cache context even if the driver is not asking a specific entry to be used. In addition, RX can likely be affected. This patch fixes this issue. Signed-off-by: Jouni Malinen <Jouni.Malinen@Atheros.com> Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix warnings on card removalRajkumar Manoharan2010-12-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The recently added warning message on power change failure is not needed on device removal. ath: Failed to wakeup in 500us ------------[ cut here ]------------ WARNING: at drivers/net/wireless/ath/ath9k/hw.c:1618 ath9k_hw_setpower+0x61f/0x630 [ath9k_hw]() Hardware name: 64756D6 Pid: 540, comm: kworker/u:3 Not tainted 2.6.37-rc6-wl #37 Call Trace: [<ffffffff810501aa>] warn_slowpath_common+0x7a/0xb0 [<ffffffffa056e280>] ? ath9k_iowrite32+0x0/0x90 [ath9k] [<ffffffff810501f5>] warn_slowpath_null+0x15/0x20 [<ffffffffa05226ef>] ath9k_hw_setpower+0x61f/0x630 [ath9k_hw] [<ffffffffa05700e5>] ath9k_ps_wakeup+0x85/0xd0 [ath9k] [<ffffffffa0570685>] ath9k_configure_filter+0x25/0x80 [ath9k] [<ffffffffa04dde43>] ieee80211_configure_filter+0x133/0x190 [mac80211] [<ffffffffa04ee502>] ieee80211_do_stop+0x132/0x540 [mac80211] [<ffffffff813466ff>] ? _raw_spin_unlock_bh+0x1f/0x30 [<ffffffff812b6923>] ? dev_deactivate+0x1c3/0x1e0 [<ffffffffa04ee925>] ieee80211_stop+0x15/0x20 [mac80211] [<ffffffff8129d1b6>] __dev_close+0x56/0x90 Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Properly initialize channel table for 2GHzMohammed Shafi Shajakhan2010-12-201-0/+1
| | | | | | | | | | ath9k channel table for 2Ghz does not seems to initialize the 'band' parameter.Though it does not seems to cause any visible issue it looks odd when we initialize the 'band' parameter for 5Ghz channel table while not so for 2Ghz. Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Make PM-QOS value as user configurableMohammed Shafi Shajakhan2010-12-151-0/+4
| | | | | | | | | | | | | | | This patch allows the pm-qos value to be user configurable by making it as a module parameter.This will help our customers to configure the pm-qos value according to the effect in throughput due to the DMA latency problem which was observed in Intel Pinetrail platforms. The tested value of '55' will be filled as the default pm-qos-value incase the user does not specifies pm-qos value as a module parameter. example usage: sudo modprobe ath9k pmqos=65 Cc: Senthilkumar Balasubramanian <Senthilkumar.Balasubramanian@Atheros.com> Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Parse DTIM period from mac80211Mohammed Shafi Shajakhan2010-12-071-1/+2
| | | | | | | | | | | | | | | With the current save power save implementation we assume a dtim period of 1.This value is assigned based on a sanity check in the driver eventhough we had not parsed it from mac80211.This patch obtains the actual DTIM period from AP by parsing it from mac80211.Yet for handling multicast traffic we may still have it as fixed rather than parsing it from mac80211 .This does not breaks power save or anything as the sleep duration is currently fixed in the driver.This patch may serve to improve power save in the future by using dtim period for sleep duration and using correct dtim period adhoc mode. Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Disable TX STBC for AR9485Vasanthakumar Thiagarajan2010-12-071-1/+3
| | | | | Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath: Convert ath_print to ath_dbgJoe Perches2010-12-071-11/+11
| | | | | | | | | | | Remove ath/debug.h and the includes of these files. Coalesce long formats. Correct a few misspellings and missing "\n"s from these logging messages. Remove unnecessary trailing space before a newline. Remove ARRAY_SIZE casts, use printf type %zu Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath: Convert ath_print(.., ATH_DBG_FATAL to ath_errJoe Perches2010-12-071-4/+2
| | | | | | | | So these errors are always emitted at KERN_ERR level. Remove ARRAY_SIZE casts, use printf type %zu Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* Merge branch 'master' of ↵John W. Linville2010-12-021-5/+4
|\ | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Conflicts: drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
| * ath9k/carl9170: advertise P2PJohannes Berg2010-11-291-0/+2
| | | | | | | | | | | | | | | | | | | | With some upcoming changes we'd like to use the interface types for P2P capability tests. Enable them now so that when we add those tests in wpa_supplicant, nothing will break. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * ath9k: use per-device struct for pm_qos_* operationsGabor Juhos2010-11-291-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ath9k driver uses a shared pm_qos_request_list structure for all devices. This causes the following warning if more than one device is present in the system: WARNING: at kernel/pm_qos_params.c:234 ath9k_init_device+0x5e8/0x6b0() pm_qos_add_request() called for already added request Modules linked in: Call Trace: [<802b1cdc>] dump_stack+0x8/0x34 [<8007dd90>] warn_slowpath_common+0x78/0xa4 [<8007de44>] warn_slowpath_fmt+0x2c/0x38 [<801b0828>] ath9k_init_device+0x5e8/0x6b0 [<801bc508>] ath_pci_probe+0x2dc/0x39c [<80176254>] pci_device_probe+0x64/0xa4 [<8019471c>] driver_probe_device+0xbc/0x188 [<80194854>] __driver_attach+0x6c/0xa4 [<80193e20>] bus_for_each_dev+0x60/0xb0 [<80193580>] bus_add_driver+0xcc/0x268 [<80194c08>] driver_register+0xe0/0x198 [<801764e0>] __pci_register_driver+0x50/0xe0 [<80365f48>] ath9k_init+0x3c/0x6c [<8006050c>] do_one_initcall+0xfc/0x1d8 [<80355340>] kernel_init+0xd4/0x174 [<800639a4>] kernel_thread_helper+0x10/0x18 ---[ end trace 5345fc6f870564a6 ]--- This patch fixes that warning by using a separate pm_qos_request_list sructure for each device. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Move debugfs under ieee80211/[phyname]/ath9k/Ben Greear2010-12-021-22/+8
| | | | | | | | | | | | | | | | | | This fixes debugfs problems when a phy is renamed, and is able to remove a bit of code that is no longer needed. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Reintroduce modparam to enable btcoexVasanthakumar Thiagarajan2010-11-291-0/+5
| | | | | | | | | | | | | | | | | | | | It is not ideal to enable btcoex based on subsys id as it is not unique, they are so random. It is also a pain keeping all of them in a table to enable btcoex for a particular hw. Going back to the old idea. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | Merge branch 'master' of ↵John W. Linville2010-11-241-0/+7
|\ \ | |/ | | | | git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
| * ath9k: Remove pm_qos request after hw unregister.Vivek Natarajan2010-11-161-2/+1
| | | | | | | | | | | | | | | | | | | | Update pm_qos before removing it in deinit_device to prevent this warning: pm_qos_update_request() called for unknown object. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * ath9k: Fix a DMA latency issue for Intel Pinetrail platforms.Vivek Natarajan2010-11-081-0/+8
| | | | | | | | | | | | | | | | | | | | Throughput was severely affected in Intel Pinetrail platforms because of a DMA problem in C3 state. This patch fixes this issue. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> CC: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: add support for reading eeprom from platform data on PCI devicesFelix Fietkau2010-11-181-0/+3
| | | | | | | | | | | | | | | | | | Some embedded boards store platform data for connected PCIe AR92xx chips in the system flash instead of a separate EEPROM chip. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: rework tx queue selection and fix queue stopping/wakingFelix Fietkau2010-11-151-46/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current ath9k tx queue handling code showed a few issues that could lead to locking issues, tx stalls due to stopped queues, and maybe even DMA issues. The main source of these issues is that in some places the queue is selected via skb queue mapping in places where this mapping may no longer be valid. One such place is when data frames are transmitted via the CAB queue (for powersave buffered frames). This is made even worse by a lookup WMM AC values from the assigned tx queue (which is undefined for the CAB queue). This messed up the pending frame counting, which in turn caused issues with queues getting stopped, but not woken again. To fix these issues, this patch removes an unnecessary abstraction separating a driver internal queue number from the skb queue number (not to be confused with the hardware queue number). It seems that this abstraction may have been necessary because of tx queue preinitialization from the initvals. This patch avoids breakage here by pushing the software <-> hardware queue mapping to the function that assigns the tx queues and redefining the WMM AC definitions to match the numbers used by mac80211 (also affects ath9k_htc). To ensure consistency wrt. pending frame count tracking, these counters are moved to the ath_txq struct, updated with the txq lock held, but only where the tx queue selected by the skb queue map actually matches the tx queue used by the driver for the frame. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Reported-by: Björn Smedman <bjorn.smedman@venatech.se> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: simplify hw reset lockingLuis R. Rodriguez2010-11-151-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new PCU lock is better placed so we can just contend against that when trying to reset hardware. This is part of a series of patches which fix stopping TX DMA completley when requested on the driver. For more details about this issue refer to this thread: http://marc.info/?l=linux-wireless&m=128629803703756&w=2 Tested-by: Ben Greear <greearb@candelatech.com> Cc: Kyungwan Nam <kyungwan.nam@atheros.com> Cc: stable@kernel.org Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: initialize per-channel tx power limits instead of hardcoding themFelix Fietkau2010-11-151-0/+33
| | | | | | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: optimize/fix ANI RSSI processingFelix Fietkau2010-11-091-0/+2
|/ | | | | | | | | | | | ANI needs the RSSI average only in station mode, and only for tracking the signal strength of beacons of the AP that it is connected to. Adjust the code to track on the beacon RSSI, and store the average of that in the ath_wiphy struct. With these changes, we can get rid of this extra station lookup in the rx path, which saves precious CPU cycles. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Properly initialize ath_common->cc_lock.Ben Greear2010-10-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, lockdep splats, at the least: INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. Pid: 2240, comm: ip Not tainted 2.6.36-rc8-wl+ #32 Call Trace: [<c075d940>] ? printk+0xf/0x17 [<c045507a>] register_lock_class+0x5a/0x29e [<c0455be2>] ? mark_lock+0x1e/0x1de [<c0456af5>] __lock_acquire+0xa2/0xb8c [<c0455be2>] ? mark_lock+0x1e/0x1de [<c0457639>] lock_acquire+0x5a/0x78 [<f8c5115b>] ? ath9k_config+0x274/0x3d8 [ath9k] [<c075f602>] _raw_spin_lock_irqsave+0x2f/0x3f [<f8c5115b>] ? ath9k_config+0x274/0x3d8 [ath9k] [<f8c5115b>] ath9k_config+0x274/0x3d8 [ath9k] [<f8c0ba2e>] ieee80211_hw_config+0x11b/0x125 [mac80211] [<f8c17edf>] ieee80211_do_open+0x3c5/0x466 [mac80211] [<f8c171d6>] ? ieee80211_check_concurrent_iface+0x21/0x13a [mac80211] [<f8c17fdb>] ieee80211_open+0x5b/0x5e [mac80211] [<c06ce76b>] __dev_open+0x80/0xae [<c06cc99b>] __dev_change_flags+0xa0/0x115 [<c06ce6bf>] dev_change_flags+0x13/0x3f [<c06d7e78>] do_setlink+0x23a/0x51b [<c0455037>] ? register_lock_class+0x17/0x29e [<c06d847c>] rtnl_newlink+0x269/0x431 [<c06d8291>] ? rtnl_newlink+0x7e/0x431 [<c0455be2>] ? mark_lock+0x1e/0x1de [<c0455de9>] ? mark_held_locks+0x47/0x5f [<c075ebcf>] ? __mutex_lock_common+0x2bb/0x2d6 [<c0456045>] ? trace_hardirqs_on_caller+0x104/0x125 [<c075ebe0>] ? __mutex_lock_common+0x2cc/0x2d6 [<c06d8213>] ? rtnl_newlink+0x0/0x431 [<c06d79e2>] rtnetlink_rcv_msg+0x182/0x198 [<c06d7860>] ? rtnetlink_rcv_msg+0x0/0x198 [<c06e503c>] netlink_rcv_skb+0x30/0x77 [<c06d7859>] rtnetlink_rcv+0x1b/0x22 [<c06e4e77>] netlink_unicast+0xbe/0x119 [<c06e5a15>] netlink_sendmsg+0x234/0x24c [<c06bf93a>] __sock_sendmsg+0x51/0x5a [<c06bfba4>] sock_sendmsg+0x93/0xa7 [<c04968cf>] ? might_fault+0x47/0x81 [<c0496904>] ? might_fault+0x7c/0x81 [<c06c7904>] ? copy_from_user+0x8/0xa [<c06c7c2d>] ? verify_iovec+0x3e/0x6d [<c06bfd8c>] sys_sendmsg+0x149/0x193 [<c0455037>] ? register_lock_class+0x17/0x29e [<c0455be2>] ? mark_lock+0x1e/0x1de [<c0498d7a>] ? __do_fault+0x1fc/0x3a5 [<c048690a>] ? unlock_page+0x40/0x43 [<c0498ef7>] ? __do_fault+0x379/0x3a5 [<c04576dd>] ? lock_release_non_nested+0x86/0x1d8 [<c04968cf>] ? might_fault+0x47/0x81 [<c04968cf>] ? might_fault+0x47/0x81 [<c06c148b>] sys_socketcall+0x15e/0x1a5 [<c0402f1c>] sysenter_do_call+0x12/0x38 Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k_hw: remove enum wireless_mode and its usersFelix Fietkau2010-10-151-6/+6
| | | | | | | | The wireless mode bitfield was only used to detect 2.4 and 5 GHz support, which can be simplified by using ATH9K_HW_CAP_* capabilities. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: add compile time checking for the size of the channel listFelix Fietkau2010-10-111-0/+4
| | | | | | | | This prevents random memory corruption if the number of channels ever gets changed without an update to the internal channel array size. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: add WDS interfaces to ath9kBill Jordan2010-10-051-0/+1
| | | | | | | Enable WDS for the ath9k driver. Signed-off-by: Bill Jordan <bjordan@rajant.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix channel flag / regd issues with multiple cardsFelix Fietkau2010-10-051-6/+31
| | | | | | | | | | Since the regulatory code touches the channel array, it needs to be copied for each device instance. That way the original channel array can also be made const. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Cc: stable@kernel.org [all] Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: remove the noise floor value in the ani structFelix Fietkau2010-10-051-1/+0
| | | | | | | | | common->ani.noise_floor is now only used for a similar redundant debug message similar to the one that was removed from ath9k_htc in an earlier patch. Remove it from ath9k as well now. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k_hw: simplify revision checks for AR9280Felix Fietkau2010-09-271-1/+1
| | | | | | | | | Since AR9280 v1.0 was never sold (and the initvals removed), v1.0 specific revision checks can be removed and the 'v2.0 or later' check can be simplified to a check for AR9280 or later. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: make the driver specific rate control module optionalFelix Fietkau2010-09-211-0/+2
| | | | | | | ath9k can use minstrel_ht instead, so it makes sense to save some space here. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix regression which disabled ps on ath9kLuis R. Rodriguez2010-09-161-1/+2
| | | | | | | | | | | | | | | | | | | The patch titled "ath9k: Add new file init.c" shuffled some code around but in dong so for some reason also removed the revision check for disablign power save. Add this revision check again so we can get power save re-enabled again by default on cards newer than AR5416 and AR5418. $ git describe --contains 556242049cc3992d0ee625e9f15c4b00ea4baac8 v2.6.34-rc1~233^2~49^2~343 This patch has fixes for stable kernels [2.6.34+]. Cc: stable@kernel.org Cc: Paul Stewart <pstew@google.com> Cc: Amod Bodas <amod.bodas@atheros.com> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Use common ath key management functionsBruno Randolf2010-09-161-1/+1
| | | | | | | | Use key management functions which have been moved to ath/key.c and remove ath9k copies of these functions and other now unused definitions. Signed-off-by: Bruno Randolf <br1@einfach.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath/ath9k: Replace common->splitmic with a flagBruno Randolf2010-09-161-2/+2
| | | | | | | | | | | Replace common->splitmic with ATH_CRYPT_CAP_MIC_COMBINED flag. splitmic has to be used when the ATH_CRYPT_CAP_MIC_COMBINED capability flag is not set. Signed-off-by: Bruno Randolf <br1@einfach.org> Acked-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k_hw: remove useless hw capability flagsFelix Fietkau2010-09-141-2/+1
| | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Implement an algorithm for Antenna diversity and combiningVasanthakumar Thiagarajan2010-09-071-0/+3
| | | | | | | | | | This algorithm chooses the best main and alt lna out of LNA1, LNA2, LNA1+LNA2 and LNA1-LNA2 to improve rx for single chain chips(AR9285). This would greatly improve rx when there is only one antenna is connected with AR9285. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Change the default LED pattern.Vivek Natarajan2010-08-271-1/+1
| | | | | | | | All major Atheros customers require the led to be in continuous ON state rather than the blinking pattern. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix panic while cleaning up virtaul wifisRajkumar Manoharan2010-07-141-1/+1
| | | | | | | | | num_sec_wiphy means max secondary wifis that the driver can accomudate. So cancelling wiphy work should be based on the presence of secondary wifis. Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix false positives in the baseband hang checkFelix Fietkau2010-07-021-0/+1
| | | | | | | | | | | | | ath9k_hw_check_alive() occasionally returns false, as the hardware is still processing data in a specific state. Fix this issue by repeating the test a few times with longer delay inbetween attempts. This gets rid of excessive hardware resets that appear frequently on some AR9132 based devices, but could also happen on AR9280. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Reported-by: Björn Smedman <bjorn.smedman@venatech.se> Cc: stable@kernel.org Signed-off-by: John W. Linville <linville@tuxdriver.com>