aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/main.c
Commit message (Collapse)AuthorAge
* ath9k: fix check for antenna diversity supportFelix Fietkau2011-12-06
| | | | | | | | | | fixes a regression on single-stream chips introduced in commit 43c3528430bd29f5e52438cad7cf7c0c62bf4583 "ath9k: implement .get_antenna and .set_antenna" Signed-off-by: Felix Fietkau <nbd@openwrt.org> Reported-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k_hw: make ath9k_hw_set_interrupts use ah->imask by defaultFelix Fietkau2011-10-11
| | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: keep track of what's triggering hardware resetsFelix Fietkau2011-10-11
| | | | | | | Export how many times each of the reset triggers has fired through debugfs. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: pass vif param to conf_tx() callbackEliad Peller2011-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | tx params should be configured per interface. add ieee80211_vif param to the conf_tx callback, and change all the drivers that use this callback. The following spatch was used: @rule1@ struct ieee80211_ops ops; identifier conf_tx_op; @@ ops.conf_tx = conf_tx_op; @rule2@ identifier rule1.conf_tx_op; identifier hw, queue, params; @@ conf_tx_op ( - struct ieee80211_hw *hw, + struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 queue, const struct ieee80211_tx_queue_params *params) {...} Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: let drivers inform it about per TID buffered framesJohannes Berg2011-09-30
| | | | | | | | | | | | | | | | | | | | | | | | | | For uAPSD implementation, it is necessary to know on which ACs frames are buffered. mac80211 obviously knows about the frames it has buffered itself, but with aggregation many drivers buffer frames. Thus, mac80211 needs to be informed about this. For now, since we don't have APSD in any form, this will unconditionally set the TIM bit for the station but later with uAPSD only some ACs might cause the TIM bit to be set. ath9k is the only driver using this API and I only modify it in the most basic way, it won't be able to implement uAPSD with this yet. But it can't do that anyway since there's no way to selectively release frames to the peer yet. Since drivers will buffer frames per TID, let them inform mac80211 on a per TID basis, mac80211 will then sort out the AC mapping itself. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix a regression in ath9k_ps_restoreFelix Fietkau2011-09-27
| | | | | | | | | | After 'ath9k: optimize ath9k_ps_restore', it would only send the device to network sleep and not to full sleep anymore, potentially causing more battery drain. Reported-by: Vivek Natarajan <nataraja@qca.qualcomm.com> Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: add ieee80211_vif param to tsf functionsEliad Peller2011-09-27
| | | | | | | | | | | TSF can be kept per vif. Add ieee80211_vif param to set/get/reset_tsf, and move the debugfs entries to the per-vif directory. Update all the drivers that implement these callbacks. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* Merge branch 'master' of git://git.infradead.org/users/linville/wirelessJohn W. Linville2011-09-20
|\ | | | | | | | | | | | | | | Conflicts: drivers/net/wireless/iwlwifi/iwl-pci.c drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c drivers/net/wireless/rt2x00/rt2800usb.c drivers/net/wireless/wl12xx/main.c
| * ath9k: Fix kernel panic on unplugging the deviceMohammed Shafi Shajakhan2011-09-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when the device is yanked out ath_pci_remove starts doing the cleanups, unregistering the hardware etc. so we should bail out immediately when we get drv_flush callback from mac80211 when the card is being unplugged. the panic occurs after we had associated to an AP. EIP: 0060:[<fb315b00>] EFLAGS: 00010246 CPU: 0 EIP is at ath_reset+0xa0/0x1c0 [ath9k] EAX: 00000000 EBX: 000697c0 ECX: 00000002 EDX: f3c3ccf0 ESI: 00000000 EDI: 00000000 EBP: f43e7b78 ESP: f43e7b50 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 Process kworker/u:2 (pid: 182, ti=f43e6000 task=f3c3c7c0 task.ti=f43e6000) Stack: 0000002a 00000000 00000000 003e7b78 0000000f eaaa8500 ffffffea eaaa97c0 eaaaa000 00000001 f43e7ba8 fb315d23 f99e7721 ecece680 eaaac738 eaaa8500 eaaaa020 000000c8 000000c8 00000000 eaaa8d58 eaaa8500 f43e7bd0 fb080b29 Call Trace: [<fb315d23>] ath9k_flush+0x103/0x170 [ath9k] [<fb080b29>] __ieee80211_recalc_idle+0x2c9/0x400 [mac80211] [<fb080c8e>] ieee80211_recalc_idle+0x2e/0x60 [mac80211] [<fb07aa73>] ieee80211_mgd_deauth+0x173/0x210 [mac80211] [<fb084559>] ieee80211_deauth+0x19/0x20 [mac80211] [<f99dda53>] __cfg80211_mlme_deauth+0xf3/0x140 [cfg80211] [<c0633d00>] ? __mutex_lock_common+0x1f0/0x380 [<f99e1b5d>] __cfg80211_disconnect+0x18d/0x1f0 [cfg80211] [<f99c8199>] cfg80211_netdev_notifier_call+0x159/0x5c0 [cfg80211] [<c0608a64>] ? packet_notifier+0x174/0x1f0 [<c0639202>] notifier_call_chain+0x82/0xb0 [<c0170d8f>] raw_notifier_call_chain+0x1f/0x30 [<c053b86c>] call_netdevice_notifiers+0x2c/0x60 [<c0182184>] ? trace_hardirqs_on_caller+0xf4/0x180 [<c053b8ec>] __dev_close_many+0x4c/0xd0 [<c053ba2d>] dev_close_many+0x6d/0xc0 [<c053bb53>] rollback_registered_many+0x93/0x1c0 [<c018221b>] ? trace_hardirqs_on+0xb/0x10 [<c053bc95>] unregister_netdevice_many+0x15/0x50 [<fb07f83b>] ieee80211_remove_interfaces+0x7b/0xb0 [mac80211] [<fb06a14b>] ieee80211_unregister_hw+0x4b/0x110 [mac80211] [<fb311a4a>] ath9k_deinit_device+0x3a/0x60 [ath9k] [<fb31eed6>] ath_pci_remove+0x46/0x90 [ath9k] [<c03b4ac4>] pci_device_remove+0x44/0x100 [<c043eb54>] __device_release_driver+0x64/0xb0 [<c043ec67>] device_release_driver+0x27/0x40 [<c043deeb>] bus_remove_device+0x7b/0xa0 [<c043c491>] device_del+0xf1/0x180 [<c043c530>] device_unregister+0x10/0x20 [<c03afafe>] pci_stop_bus_device+0x6e/0x80 [<c03afb72>] pci_remove_bus_device+0x12/0xa0 [<c03c2f29>] pciehp_unconfigure_device+0x89/0x180 [<c0181e54>] ? mark_held_locks+0x64/0x100 [<c063390f>] ? __mutex_unlock_slowpath+0xaf/0x140 [<c03c1f84>] pciehp_disable_slot+0x64/0x1b0 [<c03c2850>] pciehp_power_thread+0xd0/0x100 [<c0164ad0>] ? process_one_work+0x100/0x4d0 [<c0164b4c>] process_one_work+0x17c/0x4d0 [<c0164ad0>] ? process_one_work+0x100/0x4d0 [<c03c2780>] ? queue_interrupt_event+0xa0/0xa0 [<c01662bb>] worker_thread+0x13b/0x320 [<c018221b>] ? trace_hardirqs_on+0xb/0x10 [<c0166180>] ? manage_workers+0x1e0/0x1e0 [<c016a654>] kthread+0x84/0x90 [<c016a5d0>] ? __init_kthread_worker+0x60/0x60 [<c063d106>] kernel_thread_helper+0x6/0x10 Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * ath9k: Fix PS wrappers in ath9k_set_coverage_classMohammed Shafi Shajakhan2011-08-24
| | | | | | | | | | | | | | | | | | | | | | this callback is called during suspend/resume and also via iw command. it configures parameters like sifs, slottime, acktimeout in ath9k_hw_init_global_settings where few REG_READ, REG_RMW are also done and hence the need for PS wrappers Cc: stable@kernel.org Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Reset caldata on radio enableRajkumar Manoharan2011-09-19
| | | | | | | | | | | | | | | | | | | | | | Not doing so, the caldata continues to retain older history values learned on that channel. It is always safer to start noise floor calibration from the defaults after the assoication. So this patch resets the nf history buffer when none of the STA vifs are associated. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: optimize ath9k_ps_restoreFelix Fietkau2011-09-16
| | | | | | | | | | | | | | | | | | ath_hw_cycle_counters_update only needs to be called if the power state changes. Most of the time this does not happen, even when ps_usecount goes down to 0. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: ensure that rx is not enabled during a resetFelix Fietkau2011-09-16
| | | | | | | | | | | | | | | | | | During a reset, rx buffers are flushed after rx has been disabled. To avoid race conditions, rx needs to stay disabled during the reset, so avoid any calls to ath9k_hw_rxena in that case. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: fix enabling interrupts after a hardware error interruptFelix Fietkau2011-09-16
| | | | | | | | | | | | | | | | The interrupt handler increases the interrupt disable refcount, so the tasklet needs to always call ath9k_hw_enable_interrupts. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: implement .get_antenna and .set_antennaFelix Fietkau2011-09-14
| | | | | | | | | | | | | | | | | | | | On MIMO chips this can be used to enable/disable hardware chains, ensuring that the MCS information is updated accordingly. On non-MIMO chips with rx diversity (e.g. 9285), this configures the rx input antenna. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: merge reset related functionsFelix Fietkau2011-09-14
| | | | | | | | | | | | | | | | | | | | reduces unnecessary code duplication. Also takes the sc_pcu_lock within ath_reset instead of callsites, which makes it possible to always cancel all queued work items before the reset, possibly fixing a few race conditions (work items vs reset) along with it. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: always call ath_reset from workqueue contextFelix Fietkau2011-09-14
| | | | | | | | | | | | | | | | | | This makes it much easier to add further rework to avoid race conditions between reset and other work items. Move other functions to make ath_reset static. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: move a few functions aroundFelix Fietkau2011-09-14
| | | | | | | | | | | | | | Helps with making ath_reset static in the next commit Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: eliminate common->{rx,tx}_chainmaskFelix Fietkau2011-09-14
| | | | | | | | | | | | | | we already have ah->{rx,tx}chainmask for the same purpose Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Add debugfs support for mac/baseband samplesRajkumar Manoharan2011-08-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch keep track of number of samples that includes DMA debugs registers, PCU observe, CR, channel noise, cycle conters, noisefloor history buffer and last N number of tx and rx descriptor status. These samples are grouped in table manner which dumping in debgufs. Debugfs file location: <debugfs_mnt>/ieee80211/phy#/ath9k/samples Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Add support for get_stats callbackMohammed Shafi Shajakhan2011-08-24
| | | | | | | | | | | | | | | | this useful for debugging and to keep track of success/failure of frames such as ACK, RTS and FCS error count in a noisy environment Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Fix invalid noisefloor reading due to channel updateRajkumar Manoharan2011-08-24
| | | | | | | | | | | | | | | | | | | | | | While switching b/w HT20/40, the current channel's nf values are updated into history buffer. Since the current channel's channel type, channel flag got updated before reading nf value from hw. This channel type mismatch is causing invalid readings when hw is on ht20 but getnf tries to read on extn chains. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Remove SC_OP_ENABLE_APMRajkumar Manoharan2011-08-24
| | | | | | | | | | Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Fix rx overrun interrupt stormRajkumar Manoharan2011-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Whenever RXEOL is received, both RXORN and RXEOL got cleared to avoid rx overrun interrupt storm. This was handled only for edma chips. The same scenario was also observered with AR9280, doing frequent channel type switch b/w HT20/40 with bidi traffic that is causing failure to stop rx dma. This patch clears the RXEOL & RXORN interrupts for all chips. ath: DMA failed to stop in 10 ms AR_CR=0x00000024 AR_DIAG_SW=0x42000020 DMADBG_7=0x000062c0 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:532 ath_stoprecv+0x110/0x120 [ath9k]() Call Trace: [<ffffffff8104a55a>] warn_slowpath_common+0x7a/0xb0 [<ffffffff8104a5a5>] warn_slowpath_null+0x15/0x20 [<ffffffffa0560380>] ath_stoprecv+0x110/0x120 [ath9k] [<ffffffffa055e6fa>] ath_reset+0x6a/0x200 [ath9k] Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: do btcoex ASPM disabling at initialization timeStanislaw Gruszka2011-08-22
| | | | | | | | | | | | | | | | | | | | | | | | Disable ASPM in pci ->probe on upstream (device) and downstream (PCIe port) component. According to e1000e driver authors this is required. I did not find that requirement in PCIe spec, but it seems to be logical for me. This need to be fixed for CONFIG_PCIEASPM, that will be done later ... Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: remove ->config_pci_powersave() redundant argumentStanislaw Gruszka2011-08-22
| | | | | | | | | | | | | | | | | | We always call ->config_pci_powersave() with both restore and power_off arguments equal to 0 or both equal to 1, so merge them into one argument. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Use atomic reference count for interrupt opsRajkumar Manoharan2011-08-09
| | | | | | | | | | | | | | | | | | | | | | Let us enable/disable interrupts based on reference count. By doing this we can ensure that interrupts are never be enabled in the middle of tasklet processing. Instead of addressing corner cases like "ath9k: avoid enabling interrupts while processing rx", this approach handles it in generic manner. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: do not enable interrupt on set interrupt maskRajkumar Manoharan2011-08-09
| | | | | | | | | | | | | | | | | | | | | | | | At preset set_interrupt also enables interrupt after changing mask. This is not necessary in all cases and also sometime it breaks the assumption that interrupt was disabled. So let us enable the interrupt explicity if it was disabled earlier. This could also avoid unnecessary register ops and also helps the follow up patch to have global ref count for interrupts ops. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: use the new channel noise value for signal strength and survey infoFelix Fietkau2011-08-08
|/ | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix locking issue during tx completionRajkumar Manoharan2011-06-27
| | | | | | | | | | | | | | | | | | | | | | | | The received tx status of aggregated frame without BlockAck may cause deaf state in AR5416 cards. So the driver does a reset to recover. When this happens, we release the pcu_lock before doing a reset as ath_rest acquires pcu_lock. This is ugly and also not atomic. Fixing this addresses the TX DMA failure also. ath_tx_complete_aggr can be called from different paths which takes different variants of spin_lock. This patch also addresses the following warning. WARNING: at kernel/timer.c:1011 del_timer_sync+0x4e/0x50() Call Trace: <IRQ> [<ffffffff8104be3a>] warn_slowpath_common+0x7a/0xb0 [<ffffffff8104be85>] warn_slowpath_null+0x15/0x20 [<ffffffff8105915e>] del_timer_sync+0x4e/0x50 [<ffffffffa03726be>] ath_reset+0x3e/0x210 [ath9k] [<ffffffff8135cdaf>] ? _raw_spin_unlock_bh+0x1f/0x30 [<ffffffffa037760a>] ath_tx_complete_aggr.isra.26+0x54a/0xa40 [ath9k] Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: remove a redundant call to pcipowersaveMohammed Shafi Shajakhan2011-06-17
| | | | | | | | | during suspend/resume ath9k_stop will always call ath_radio_disable which will inturn call ath9k_hw_configpcipowersave, so no need to call it explicitly in ath9k_stop Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add debug messages to track PAPRD failuresMohammed Shafi Shajakhan2011-06-17
| | | | | | | | | | | Add few debug messages for some of the possible scenarios where we can detect PAPRD failures. this will help us to be sure that we had really enabled PAPRD Cc: susinder@qca.qualcomm.com Cc: senthilb@qca.qualcomm.com Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add a debug entry to start/stop ANIMohammed Shafi Shajakhan2011-06-01
| | | | | | | this helps the user to start/stop ANI dynamically. Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: wake up chip before initializing PAPRD tableMohammed Shafi Shajakhan2011-06-01
| | | | | | | | In PAPRD table initialization path we do some register read, so make sure the chip is awake during that. Currently PAPRD is disabled. Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Handle IBSS status changes in BSS_CHANGED_IBSSRajkumar Manoharan2011-06-01
| | | | | | | | | Configure ibss node's bss_changes under BSS_CHANGED_IBSS. And also start/stop ani timer only if the station join/leave the group. Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: mark few functions as staticMohammed Shafi Shajakhan2011-06-01
| | | | | Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: make ath9k_setpower function as staticMohammed Shafi Shajakhan2011-06-01
| | | | | Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: unify edma and non-edma tx code, improve tx fifo handlingFelix Fietkau2011-06-01
| | | | | | | | | | | | | | | | | | | | | | | | EDMA based chips (AR9380+) have 8 Tx FIFO slots, which are used to fix the tx queue start/stop race conditions which have to be worked around for earlier chips by keeping the last descriptor in the queue. The current code stores all frames that do not fit onto the 8 FIFO slots in a separate list. Whenever a FIFO slot is freed up, the next frame (or A-MPDU) from the pending queue gets moved to that slot. This process is not only inefficient, but also unnecessary. The code can be improved visibly by keeping the pending queue fully linked, and moving the contents of the entire queue to a FIFO slot as it becomes available. This patch makes the necessary changes for that and also merges some code that was duplicated for EDMA vs non-EDMA. It changes txq->axq_link to point to the last descriptor instead of the link pointer, so that ath9k_hw_set_desc_link can be used, which works on all chips. With this patch, a small performance increase for non-aggregated traffic was observed on AR9380 based embedded hardware. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: remove redundant if checkMohammed Shafi Shajakhan2011-06-01
| | | | | Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* Merge ↵John W. Linville2011-05-27
|\ | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
| * ath9k: Reset chip on baseband hangRajkumar Manoharan2011-05-26
| | | | | | | | | | | | | | | | | | Resetting hardware helps to recover from baseband hang/panic for AR9003 based chips. Cc: stable@kernel.org Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | Merge ↵John W. Linville2011-05-24
|\| | | | | | | ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
| * ath9k: implement .tx_last_beacon()Felix Fietkau2011-05-19
| | | | | | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * ath9k: Drag the driver to the year 2011Sujith Manoharan2011-05-19
| | | | | | | | | | | | | | The Times They Are a-Changin'. Signed-off-by: Sujith Manoharan <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | Merge branch 'master' of ↵David S. Miller2011-05-17
|\ \ | |/ |/| | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/vmxnet3/vmxnet3_ethtool.c net/core/dev.c
| * ath9k: Fix a warning due to a queued work during S3 stateMohammed Shafi Shajakhan2011-05-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | during suspend/S3 state drv_flush is called from mac80211 irrespective of interface count. In ath9k we queue a work in ath9k_flush which we expect to be cancelled in the drv_stop call back. during suspend process mac80211 calls drv_stop only when the interface count(local->count) is non-zero. unfortunately when the network manager is enabled, drv_flush is called while drv_stop is not called as local->count reaches '0'. So fix this by simply checking for the device presence in the drv_flush call back in the driver before queueing work or anything else. this patch fixes the following WARNING Call Trace: [<c014c6e2>] warn_slowpath_common+0x72/0xa0 [<fc133f99>] ? ieee80211_can_queue_work+0x39/0x50 [mac80211] [<fc133f99>] ? ieee80211_can_queue_work+0x39/0x50 [mac80211] [<c014c75b>] warn_slowpath_fmt+0x2b/0x30 [<fc133f99>] ieee80211_can_queue_work+0x39/0x50 [mac80211] [<fc134ed1>] ieee80211_queue_delayed_work+0x21/0x50 [mac80211] [<fc1e5b22>] ath_tx_complete_poll_work+0xb2/0x100 [ath9k] [<c016399e>] run_workqueue+0x8e/0x150 [<fc1e5a70>] ? ath_tx_complete_poll_work+0x0/0x100 [ath9k] [<c0163ae4>] worker_thread+0x84/0xe0 [<c0167a60>] ? autoremove_wake_function+0x0/0x50 [<c0163a60>] ? worker_thread+0x0/0xe0 [<c01677d4>] kthread+0x74/0x80 [<c0167760>] ? kthread+0x0/0x80 [<c0104087>] kernel_thread_helper+0x7/0x10 ---[ end trace 2aff81010df9215b ]--- Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: make npending frames check as boolMohammed Shafi Shajakhan2011-05-16
| | | | | | | | | | | | | | | | we are not doing anything by tracking the number of pending frames. bail out when we first find a pending frame in any one of the 10 queues. Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: fix a regression in PS frame filter handlingFelix Fietkau2011-05-11
| | | | | | | | | | | | | | | | | | | | Only leave filtering enabled for AP or VLAN interfaces, clear the destination mask for all other interfaces. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Reported-by: Ben Greear <greearb@candelatech.com> Tested-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: fix beaconing for mesh interfacesJavier Cardona2011-05-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mesh beaconing on ath9k was broken by this commit: commit 4801416c76a3a355076d6d371c00270dfe332e1c Author: Ben Greear <greearb@candelatech.com> Date: Sat Jan 15 19:13:48 2011 +0000 This patch assigns the right opmode when the device is used in mesh mode. Reported-by: Fabrice Deyber fabricedeyber@agilemesh.com Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | ath9k: Failed to set default beacon rssi in AP/IBSS modeRajkumar Manoharan2011-05-10
| | | | | | | | | | | | | | This beacon rssi will be used to set noisefloor during ani reset. Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>