summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath9k
AgeCommit message (Collapse)AuthorFilesLines
2014-01-04ath9k: Fix AR9100 chip power-onSujith Manoharan1-1/+5
AR9100 requires a larger delay after waking up the RTC. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Cleanup __ath9k_hw_init()Sujith Manoharan1-32/+32
* Move initialization of config variables to ath9k_hw_init_config(). * Move initialization of defaults to ath9k_hw_init_defaults(). Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Handle unsupported MAC versions earlySujith Manoharan1-24/+24
There is no point in trying to bring up the chip when the MAC version is not present in the supported list. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Move private HW callbacks to hw-ops.hSujith Manoharan2-39/+27
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Remove unused functionsSujith Manoharan1-12/+0
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix "cc_lock" usageSujith Manoharan2-9/+7
IRQ save/restore is not required for the cycle counters since they are accessed only from softirq and process context. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Process BB watchdog events in the taskletSujith Manoharan1-8/+6
Move the BB processing code to the tasklet and avoid doing it in the ISR, there is no real benefit and this makes the ISR less heavy. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Remove RX PollSujith Manoharan7-77/+17
This patch removes the convoluted and hacky method of monitoring for connectivity. We rely on mac80211's connection loss logic and doing it in the driver is not necessary. The HW check for MAC/BB hangs is also simplified, there is no need to have a separate work instance for it. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix baseband watchdog resetSujith Manoharan1-8/+19
Do a HW reset only for required signatures. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Identify baseband watchdog signaturesSujith Manoharan3-0/+65
A full HW reset is not required for all baseband watchdog signatures. Some BB watchdog updates are benign and can be discarded, some require re-programming of certain registers and others require a chip reset. This patch adds a routine to identify such signatures. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix baseband watchdog interruptsSujith Manoharan3-6/+27
Program the required baseband watchdog interrupt mask to ensure that the correct watchdog interrupts are raised when the BB is hung for some reason. Also, use the capability HW_BB_WATCHDOG instead of relying on other flags. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix PHY restart workaroundSujith Manoharan2-11/+11
The PHY restart workaround that handles baseband hangs for packets with unsupported rates is required only for a HW bug in AR9300 v2.2. All the subsequent chips in the AR9003 family do not require this driver fix since it has been addressed in the HW. Since the value of the AR_PHY_RESTART register is written with the default initvals, make sure that PHY restart is always disabled once this particular BB hang signaure has been encountered. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix MAC HW hang check for AR9003Sujith Manoharan1-55/+75
The current method of identifying MAC hangs is convoluted and also, the signatures are wrong and don't apply to all the chips in the AR9003 family. Fix this by cleaning up the code and checking for the correct hang signatures. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Add HW callbacks for MAC/BB hang checksSujith Manoharan4-70/+85
This is required for adding separate hang check routines for AR9002 and AR9003. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Register supported HW hang checksSujith Manoharan5-9/+59
HW hang checks have to be done on a per-chip basis. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: Fix max AMPDU size calculationSujith Manoharan2-13/+2
The maximum A-MPDU size is calculated in ath_tx_aggr_start(), so there is no need to do it in node_attach() too. Also, make sure that the correct size is calculated as described in 8.4.2.58.3. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k_hw: fix TSF offset calculationFelix Fietkau1-2/+2
Since the unit is microseconds and not milliseconds, tv_sec needs to be multiplied by 1000000, not 1000. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k_hw: fix gentimer callback without overflow handlerFelix Fietkau1-2/+2
If a gentimer has both the trigger and the overflow bits set, only mask out the trigger bit if an overflow handler is present. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-01-04ath9k: fix sparse non static symbol warningWei Yongjun1-1/+1
Fixes the following sparse warning: drivers/net/wireless/ath/ath9k/spectral.c:500:24: warning: symbol 'rfs_spec_scan_cb' was not declared. Should it be static? Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: simplify/fix tx packet TID handlingFelix Fietkau1-8/+1
mac80211 guarantees that skb->priority is set to the TID, so use it instead of trying to parse the QoS header manually. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: fix TSF offset precision issueFelix Fietkau1-3/+4
Dividing the beacon interval by ATH_BCBUF (8) truncates the result for the default beacon interval of 100. Fix the calculation by moving the division after conversion from TU to microseconds. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: call ath9k_set_tsfadjust from ath9k_beacon_configFelix Fietkau3-12/+11
Make that function and ath9k_allow_beacon_config static Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: move ath9k_debug_sync_cause out of ath9k_hwFelix Fietkau8-57/+64
ath9k_hw should not depend on any ath9k data structures like ath_softc Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Use a subroutine for the AR9330 reset WARSujith Manoharan2-33/+38
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Fix RTC reset delaySujith Manoharan1-1/+6
The delay that is required after issuing a RTC reset varies for each chip. Handle this properly. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Add a delay between RTC reset/clear for AR9003Sujith Manoharan1-2/+1
The small delay that is present between a RTC reset/clear operation is required for the chip to settle and this is needed for all chips, not just the AR9002 family. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Fix regulatory complianceSujith Manoharan2-1/+35
To comply with ETSI regulations, make sure that the CCA registers are programmed with the threshold values from the EEPROM/Caldata. A new field is used to indicate if the card has been calibrated with the required threshold information. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Update BaseExtension_1 eeprom structureSujith Manoharan2-7/+17
* Add a new field "misc_enable" * Use int_8 for tempslopextension. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Initialize "switchcomspdt" eeprom field explicitlySujith Manoharan1-0/+10
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Remove unneeded ref. count initializationSujith Manoharan1-1/+0
The interrupt reference counter is always initialized in ath9k_start(). Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Cleanup ath9k.hSujith Manoharan2-102/+79
* Remove unused macros. * Move definitions to appropriate sections. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: Cleanup spectral scan codeSujith Manoharan7-671/+761
* Move definitions to spectral.h * Move processing/debug code to spectral.c Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: properly preserve TSF across resetFelix Fietkau2-45/+45
The beacon code previously reset TSF on every configuration call, as some of the code was not prepared to properly calculate nexttbtt based on current TSF. This patch adds a common function for calculating nexttbtt and moves the TSF reset to driver start. This should improve AP mode compatibility with various stations that expect the TSF to not randomly jump due to hardware resets. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: clean up station beacon timer APIFelix Fietkau4-70/+31
Remove unused fields, pass timer info in usec instead of TU. Preparation for fixing nexttbtt calculation Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: remove spur related unused definesFelix Fietkau1-2/+0
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: remove additional_swba_backoffFelix Fietkau3-4/+1
It is unused Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: simplify spur channel handlingFelix Fietkau6-88/+3
Remove ah->config.spurmode and ah->config.spurchans, always use EEPROM data. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: remove ah->config.pcie_clock_reqFelix Fietkau3-8/+2
It is unused Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: remove defunct ad-hoc mode ATIM window handling codeFelix Fietkau2-6/+0
The hardware does not have support for ATIM processing, and the driver does not set up ah->atim_window anywhere. Additionally, the code can clobber the timer used by P2P powersave. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: clean up generic timer codeFelix Fietkau5-104/+45
- Use generic bitops instead of custom hackery - Move interrupt enable/disable logic from ath9k to ath9k_hw - Decouple ISR call from btcoex - Make the overflow callback optional (to prevent IRQ storms) Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_hw: use a software timer for btcoex no_stomp_timerFelix Fietkau3-47/+15
TSF accuracy is not needed here, and there is only one usable generic timer that is supported by all chips and uses the primary TSF counter. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: add support for reporting per-chain signal strengthFelix Fietkau6-35/+46
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_common: get rid of an unnecessary variableFelix Fietkau1-3/+1
There's no need to truncate curchan->hw_value to u8 Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k: fix 5/10MHz channel width initialization on ar9003Lorenzo Bianconi1-1/+2
Move ath9k_hw_set_rfmode() after ath9k_hw_process_ini() in order to avoid AR_PHY_MODE register is overwritten with default values by ar9003_hw_process_ini() Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-19ath9k_htc: reconfigure led_gpios after resumeOleksij Rempel3-5/+19
On suspend/resume, firmware will restart and gpios configuration will be reseted. Restore this configureation at least for LEDs Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-17ath9k: Fix interrupt handling for the AR9002 familySujith Manoharan1-9/+43
This patch adds a driver workaround for a HW issue. A race condition in the HW results in missing interrupts, which can be avoided by a read/write with the ISR register. All chips in the AR9002 series are affected by this bug - AR9003 and above do not have this problem. Cc: stable@vger.kernel.org Cc: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-17ath9k_htc: properly set MAC address and BSSID maskMathy Vanhoef2-10/+20
Pick the MAC address of the first virtual interface as the new hardware MAC address. Set BSSID mask according to this MAC address. This fixes CVE-2013-4579. Signed-off-by: Mathy Vanhoef <vanhoefm@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-11ath9k: initialize retry chain flags in tx99 codeLorenzo Bianconi1-1/+9
Initialize first chain flags in ath9k_build_tx99_skb() according to configured channel mode and channel width Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-10ath9k: Apply tuning caps for AR9330 and AR9485Sujith Manoharan1-1/+1
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-12-10ath9k: Fix internal regulator for AR955xSujith Manoharan1-1/+1
The internal regulator needs to be programmed correctly for AR955x. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>