summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k
Commit message (Collapse)AuthorAgeFilesLines
* ath9k: Add a debugfs interface for controlling virtual wiphysJouni Malinen2009-03-052-0/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | debugfs ath9k/phy#/wiphy can be used to show the current list of virtual wiphys and to add/remove virtual wiphys. Eventually, this interface could be replaced with a cfg80211/nl80211 command that is passed through mac80211. For example: # cat /debug/ath9k/phy0/wiphy primary: phy0 # echo add > /debug/ath9k/phy0/wiphy # cat /debug/ath9k/phy0/wiphy primary: phy0 secondary: phy1 # echo del=phy1 > /debug/ath9k/phy0/wiphy # cat /debug/ath9k/phy0/wiphy primary: phy0 In addition, following commands can be used to test pausing and unpausing of the virtual wiphys: pause=phy1 unpause=phy1 select=phy1 (select pauses and unpauses wiphys automatically based on channel) schedule=500 (set wiphy scheduling interval in msec; 0 = disable; default value: 500) Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add a simple virtual wiphy schedulerJouni Malinen2009-03-053-0/+72
| | | | | | | | | | This is a very simple scheduler that goes through the wiphys and schedules one at a time every N milliseconds (current default value: 500 ms). This is enough for initial testing, but there are number of areas where a more complex scheduler can improve operations greatly. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Special processing for channel changes during scanJouni Malinen2009-03-053-10/+68
| | | | | | | | | | | | Allow mac80211-controlled channel changes on an active wiphy and especially during a scan. We need this as long as the scan is controlled by mac80211. Moving this control into the driver could allow some optimizations on scanning while using multiple virtual interfaces, but for now, try to work as well as possible with the current scan mechanism. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add workaround to recover from failed channel changesJouni Malinen2009-03-053-2/+43
| | | | | | | | | | It looks like channel change may fail in some cases and end up leaving the hardware in state where it cannot transmit any frames. Add a workaround to recover from this state if we detect that wiphy selection is failing due to wiphys not leaving PAUSING state. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Check virtual wiphy state on tx()Jouni Malinen2009-03-051-0/+6
| | | | | | | | | mac80211 should not be requesting us to transmit frames on paused wiphys since we stop the TX queues. Just in case, add debug code to make sure we catch if this were to happen. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Pause other virtual wiphys on channel changeJouni Malinen2009-03-053-1/+33
| | | | | | | | | For now, allow channel changes immediately and just force the other virtual wiphys to paused state. This is needed to allow mac80211-controlled scan to control channel changes. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Register larger listen intervalJouni Malinen2009-03-051-0/+1
| | | | | | | | | Notify the AP that we may be sleeping longer to allow the AP power save code to buffer larger number of frames for us when using virtual wiphys. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Make start/stop operations aware of virtual wiphysJouni Malinen2009-03-053-0/+49
| | | | | | | | Instead of always going through initialization/deinitialization steps, do this only for the first/last wiphy to not break the other wiphys. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add routines for switching between active virtual wiphysJouni Malinen2009-03-053-12/+176
| | | | | | | | | | ath9k_wiphy_select() can be used to select a virtual wiphy to be activated. Other virtual wiphys will be paused and once that is done, the operational channel is changed and the wiphys that are on the selected channel will be unpaused. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Virtual wiphy pause/unpause functionalityJouni Malinen2009-03-056-2/+191
| | | | | | | | | | Allow virtual wiphys to be paused/unpaused to allow off-channel operations. Pause will stop all TX queues for the wiphy and move the STA into power save mode if in managed mode. Unpause wakes up the TX queues and notifies the AP that the STA woke up if in managed mode. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Configure RX filter for multi-BSSID broadcastJouni Malinen2009-03-052-0/+9
| | | | | | | | | | Allow RX filter to pass through all broadcast/multicast frames (i.e., no BSSID filtering) if virtual interfaces are used. Software filtering will be used in this case to drop broadcast/multicast frames for foreign BSSIDs. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add support for multiple secondary virtual wiphysJouni Malinen2009-03-057-41/+212
| | | | | | | | | | The new struct ath_softc::sec_wiphy array is used to store information about virtual wiphys and select which wiphy is used in calls to mac80211. Each virtual wiphy will be assigned a different MAC address based on the virtual wiphy index. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add data structure for supporting virtual radio/wiphy operationJouni Malinen2009-03-058-36/+88
| | | | | | | | | | | | | | | | | | | | | | | This is the initial step in allowing ath9k to register multiple virtual radios (wiphys). The goal of virtual radios is to allow the same radio to be shared for multiple virtual interfaces that may operate on different channels. The mac80211 virtual interface support is designed only for single channel operation and as such, it is not suitable for this type of use. Anyway, it can be used on top of the virtual radio concept, if desired (e.g., use two virtual radios to handle two channels and then add multiple mac80211 virtual interfaces on top of each virtual radio). The new struct ath_wiphy is now registered as the driver data structure for wiphy. This structure has a pointer to the shared (among virtual wiphys of the same physical radio) struct ath_softc data. The primary wiphy maintains the allocated memory for ath_softc. Secondary (virtual) wiphys will only allocate the new ath_wiphy structure. Registration of secondary wiphys is added in a separate patch. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Set BSSID mask based on configured interfacesJouni Malinen2009-03-054-15/+103
| | | | | | | | | Instead of using a hardcoded BSSID mask (mask for own addresses), iterate through all active interfaces and determine the minimal mask that covers all local addresses. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Cleanup multiple VIF processingJouni Malinen2009-03-053-57/+59
| | | | | | | | | | | Replace the internal sc_vaps array and index values by using vif pointer from mac80211. Allow multiple VIPs to be registered. Though, number of beaconing VIFs is still limited by ATH_BCBUF (currently 1). Multiple virtual STAs support is not yet complete, but at least the data structures should now be able to handle this. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Clean up setkey operationsJouni Malinen2009-03-051-26/+16
| | | | | | | | | There is no need to use ath_keyset() wrapper for ath9k_hw_set_keycache_entry() calls. In addition, improve the comments describing the key setting operations. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix AR_TXCFG_DMASZ_MASK valueGabor Juhos2009-03-051-1/+1
| | | | | | | | The current bitmask is invalid, because the tx dma size is a 3 bit wide value. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove unused variables in struct ath_beacon_configSujith2009-03-051-5/+0
| | | | | | | | We don't store the beacon timestamp internally, nor do we do any TIM handling in ath9k. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Lock config_interface() callback with a mutexSujith2009-03-051-1/+7
| | | | | Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Handle TSF properly for AP modeSujith2009-03-053-17/+40
| | | | | | | | | | | | The TSF has to be reset only once, upon bringing the interface up in AP mode. For any beacon reconfigure calls after that, resetting the TSF results in incorrect beacon generation. The only exception is a change in the beacon interval, which is indicated to the driver by mac80211 through IEEE80211_CONF_CHANGE_BEACON_INTERVAL, handle this properly. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Split beacon configuration into mode specific routinesSujith2009-03-053-207/+203
| | | | | | | This makes the code easier to understand. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Cleanup beacon stuck processingSujith2009-03-052-80/+24
| | | | | | | | | We never use SC_OP_NO_RESET, it is not configurable at all. Remove all code that deals with this flag and make beacon stuck processing simple. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Scrub beacon.cSujith2009-03-053-126/+55
| | | | | | | | Remove useless comments, fix indentation. Also, remove all occurrences of ASSERT(vif) which are not needed. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Use new scan notifiers from mac80211Sujith2009-03-052-1/+23
| | | | | | | | The only use case for this right now is ANI calibration, but more might come up in the future. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Set TSF fixAlina Friedrichsen2009-03-051-2/+1
| | | | | | | The old code doesn't work correctly e.g. on newer chipsets like AR5418+AR2122 and AR5416+AR2133. Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix FIF_BCN_PRBRESP_PROMISC handlingAlina Friedrichsen2009-03-051-8/+0
| | | | | | | | | | | | | So that a new created IBSS network doesn't break on the first scan. It seems to Sujith and me that this stupid code unnecessary, too. So remove it... Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Handle power modes in isr for power save.Vivek Natarajan2009-03-052-1/+4
| | | | | | | Restore network sleep mode in isr if power save is enabled. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fill in rate_update mac80211 callbackSujith2009-03-051-29/+92
| | | | | | | | This callback can be used to handle dynamic 20/40, and changes in the operating channel's HT parameters. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove unused key xoringJouni Malinen2009-03-054-13/+8
| | | | | | | | This is not used anywhere in ath9k and is just making the code more confusing. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Document keycache operationsJouni Malinen2009-03-052-6/+78
| | | | | | | | | | There are number of small details about the keycache operations that are very easy to miss (and forget), so better include detailed comments in ath9k_hw_set_keycache_entry() to avoid having to figure out this every time when having to touch this area. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix hw crypto configuration for TKIP in AP modeJouni Malinen2009-03-051-5/+13
| | | | | | | | | | | | Incorrect Michael MIC key (RX, should have been TX) was set for the group key in AP mode. This resulted in all broadcast frames triggering Michael MIC errors and eventual TKIP countermeasures. The change here sets the correct Michael MIC key based on whether the local end is the authenticator (well, AP for now). Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Tested-by: Pat Erley <pat-lkml@erley.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove ununsed ack duration stuff with long/short preambleVasanthakumar Thiagarajan2009-03-052-29/+0
| | | | | Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Configure Power control register appropriately for h/w with 4k eepromVasanthakumar Thiagarajan2009-03-051-2/+1
| | | | | Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add module parameter to disable hardware cryptoJouni Malinen2009-03-051-1/+8
| | | | | | | | | | | | | nohwcrypt=1 module parameter can now be used to disable hardware crypto in ath9k. While the hardware acceleration handles most cases, it may be useful to be able to force mac80211 software implementation to be used for some tests, e.g., with virtual interface combinations that may not yet be supported in the key cache configuration. In addition, this allows management frame protection to be tested with older hardware revisions. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Unlock sc->mutex on error pathJouni Malinen2009-02-271-0/+1
| | | | | | | | An error path in ath9k_add_interface() did not unlock the sc->mutex and could leave the driver in quite unresponsive state. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: fix 802.11g conformance test limit typoBob Copeland2009-02-271-1/+1
| | | | | | | | 802.11g is in 2 ghz band, not 5 ghz. Signed-off-by: Bob Copeland <me@bobcopeland.com> Acked-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: follow beacon hints on reg_notifier when world roamingLuis R. Rodriguez2009-02-271-32/+61
| | | | | | | If we are roaming we allow to follow beacon hints. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* cfg80211: move all regulatory hints to workqueueLuis R. Rodriguez2009-02-271-2/+6
| | | | | | | | All regulatory hints (core, driver, userspace and 11d) are now processed in a workqueue. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add appropriate ANI values for AP modeSujith2009-02-272-22/+17
| | | | | | | | | The short calibration interval is different for AP mode, fix this. Also, the timer should be rearmed in the calibration routine during scanning. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix PCI shutdown sequenceSujith2009-02-271-2/+2
| | | | | | | | pci_release_region() has to be called after the device has been disabled. Also remove a stray __init attribute. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix bug in EEPROM chainmask retrievalSujith2009-02-271-8/+5
| | | | | | | | Using wrong chainmasks would have an adverse impact on performance. This patch fixes chainmask retrieval for non-PCIE cards. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Add PER to RC debug statisticsSujith2009-02-273-10/+14
| | | | | Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove multiple macro occurrencesSujith2009-02-274-6/+3
| | | | | | | | OLC_FOR_AR9280_20_LATER is defined in multiple places, move it to a common location. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Don't reset TSF after scanning automaticallyAlina Friedrichsen2009-02-271-2/+3
| | | | | | | | | | | | | Reset automatically the TSF on re-enabling beaconing after scanning in IBSS mode causes several problems. For example a new created IBSS network can't age before an other node has joined, because scans are done automatically in that case. And several other strange bugs more... The TSF reset is done manually in the higher level mac80211 code in the cases were it's needed, so we don't need to do it here. Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Filter out beacons from other BSS in STA modeVasanthakumar Thiagarajan2009-02-272-6/+8
| | | | | | | | | Passing beacons received from other BSS to s/w in non-scanning state is unnecessary in STA mode. This patch filters them out in h/w. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix PTK/GTK handshake timeoutVasanthakumar Thiagarajan2009-02-271-1/+2
| | | | | | | | | | Some APs don't start BA negotiation with the client before it is done with the key handshake in WPA/RSN. With those APs, key handshake times out if EAPOL frames are sent after addba request. So defer the BA negotiation until we are done with tx/rx of all EAPOL frames. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Use beacon interval directlySujith2009-02-271-17/+2
| | | | | | | | Setting up the CAB queue requires only the beacon interval, remove the function ath_get_beaconconfig() which is redundant. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove ath_txq_depth and get the queue depth directlySujith2009-02-271-7/+2
| | | | | Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove a few unused capability macrosSujith2009-02-272-33/+0
| | | | | Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Initialize channel change timeSujith2009-02-271-0/+1
| | | | | | | Set channel change time to 5ms, this will improve scan results. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
OpenPOWER on IntegriCloud