summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ssb: fix DMA translation for some specific boardsRafał Miłecki2011-08-241-3/+21
| | | | | | Signed-off-by: Michael Buesch <m@bues.ch> Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: remove a bogus WARN_ONFelix Fietkau2011-08-241-2/+2
| | | | | | | | | | On embedded hardware it's normal to not have a PCI device for the PCI bridge that the wifi card is attached to. pdev->bus->self will be NULL in that case. In that case, simply return without emitting an useless kernel stack trace. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Dump modal noisefloor calibration historyRajkumar Manoharan2011-08-241-0/+55
| | | | | | | | Debugfs file location: <debugfs_mnt>/ieee80211/phy#/ath9k/dump_nfcal Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Fix invalid noisefloor reading due to channel updateRajkumar Manoharan2011-08-241-3/+14
| | | | | | | | | | | 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: Fix noisefloor history update for extn chainsRajkumar Manoharan2011-08-241-2/+1
| | | | | | | | | | | | Before doing hw reset the current channel's noisefloor readings are updated into history buffer. The extension chain's readings are considered only if the current channel was configured in HT40. While moving from HT40 to HT20, the extn chain's readings are skipped though the current channel is in ht40. This patch updates extn chain reading based on channel flag. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Move ath9k_init_crypto to commonRajkumar Manoharan2011-08-246-48/+30
| | | | | 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-243-9/+4
| | | | | Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k_hw: Remove unnecessary chainmask configurationRajkumar Manoharan2011-08-243-18/+1
| | | | | | | | The chainmasks were already configured at process_ini before doing init calibration. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: qinfo never be NULL in setuptxqueueRajkumar Manoharan2011-08-241-15/+2
| | | | | Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Remove unused argument tsf from ath9k_hw_rxprocdescRajkumar Manoharan2011-08-243-4/+4
| | | | | Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: Re-enable RXOEL interrupt after processing rx buffersRajkumar Manoharan2011-08-241-0/+5
| | | | | | | | Once RXEOL was disabled, it never be enabled again. This patch re-enables rxeol at the end of rx tasklet. 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-241-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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_hw: Fix exceed transmission burst-time of 5GHzRajkumar Manoharan2011-08-242-29/+15
| | | | | | | | | | | | The WAR which adds extra delimiters when using RTS/CTS with aggregation and non-enterprise AR9003 chips. This extra padding is done after doing all the 4ms limit checks and hence the total aggregate sizes are exceeding the allowed duration. This patch limits the aggregate sizes appropriately after including these extra delimiters. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* {nl,cfg,mac}80211: let userspace make meshif mesh gateJavier Cardona2011-08-247-1/+29
| | | | | | | | | Allow userspace to set NL80211_MESHCONF_GATE_ANNOUNCEMENTS attribute, which will advertise this mesh node as being a mesh gate. NL80211_HWMP_ROOTMODE must be set or this will do nothing. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* {nl,cfg,mac}80211: let userspace set RANN intervalJavier Cardona2011-08-249-6/+27
| | | | | | | | Allow userspace to set Root Announcement Interval for our mesh interface. Also, RANN interval is now in proper units of TUs. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* {nl,mac}80211: add missing root mode meshconf entriesJavier Cardona2011-08-242-1/+2
| | | | | | | This fix allows userspace to mark a meshif as a root node. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: mesh gate implementationJavier Cardona2011-08-246-9/+335
| | | | | | | | | | | In this implementation, a mesh gate is a root node with a certain bit set in its RANN flags. The mpath to this root node is marked as a path to a gate, and added to our list of known gates for this if_mesh. Once a path discovery process fails, we forward the unresolved frames to a known gate. Thanks to Luis Rodriguez for refactoring and bug fix help. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: fix mesh path flushingJavier Cardona2011-08-241-2/+1
| | | | | | | | Previously, mpaths were never flushed since the mpath is not active once we call this function. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: mesh locking fixesJavier Cardona2011-08-241-2/+2
| | | | | | | | | mesh_queue_preq is invoked invoked from both user (work queue) and softirq (timer) context, so the _bh version of spinlock needs to be used. Also, the mpath->state_lock should be softirq safe as well. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: fix mpath timer NULL functionJavier Cardona2011-08-241-2/+4
| | | | | | | | If we have an mpath whose timer has not been initialized, don't try to delete it. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: improve mpath debuggingJavier Cardona2011-08-243-11/+31
| | | | | | | | | make hwmp_dbg print the relevant sdata->name by default and improve formatting. Also add mpath_dbg macro for debugging of mesh path operations. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: allow writing longer tables with a single callRafał Miłecki2011-08-232-0/+46
| | | | | | | | Sometimes we need to write table which is 2-10 elements long. It's easier to create such a function instead of defining array every time. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: add missing small-tables writesRafał Miłecki2011-08-221-3/+30
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* rtlwifi: add module parameter to set global debug levelStefan Assmann2011-08-221-1/+5
| | | | | | | | No need to recompile the module anymore to set the debug level. Signed-off-by: Stefan Assmann <sassmann@kpanic.de> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: add some AFE (Analog Frontend) operationRafał Miłecki2011-08-221-0/+26
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: add missing PHY mask/set opsRafał Miłecki2011-08-221-5/+41
| | | | | | | | | | | | | MMIO hacks were used to trick ndis&wl. For example following: phy_read(0x0280) -> 0xffff phy_write(0x0280) <- 0xff3e *** phy_read(0x0280) -> 0x0000 phy_write(0x0280) <- 0x003e was translated to mask 0xff00 and set 0x3e. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: init BPHY and upload 0x1a tableRafał Miłecki2011-08-223-0/+68
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: copy tables and reset CCARafał Miłecki2011-08-222-0/+25
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: implement few simple PHY writesRafał Miłecki2011-08-221-0/+22
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: HT-PHY: init: zero EXTG registersRafał Miłecki2011-08-221-0/+22
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mwl8k: Traffic to clients gets affected when one client leaves a cyrpto bssNishant Sarmukadam2011-08-221-3/+0
| | | | | | | | | | | | | | | When a client disassociates from a crypto enabled bss, data traffic to other clients connected to the bss is stalled. This was due to a boolean variable used to keep track if HW crypto is enabled i.e. if set key has been called to add a key. This flag was being reset every time delete key was called e.g when a station leaves the bss. Once the flag is reset, rx status flags were not being set for connected clients which disrupts traffic to these clients. Fix this issue by not resetting the flag since we do not need to reset this flag during the life time of the bss. Signed-off-by: Nishant Sarmukadam <nishants@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: update mesh path selection frame formatThomas Pedersen2011-08-226-48/+62
| | | | | | | | | | Make mesh path selection frames Mesh Action category, remove outdated Mesh Path Selection category and defines, use updated reason codes, add mesh_action_is_path_sel for readability, and update/correct path selection IEs. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ieee80211: add mesh action codesThomas Pedersen2011-08-221-0/+15
| | | | | Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: update mesh peering frame formatThomas Pedersen2011-08-226-66/+79
| | | | | | | | | | | | | | | | | This patch updates the mesh peering frames to the format specified in the recently ratified 802.11s standard. Several changes took place to make this happen: - Change RX path to handle new self-protected frames - Add new Peering management IE - Remove old Peer Link IE - Remove old plink_action field in ieee80211_mgmt header These changes by themselves would either break peering, or work by coincidence, so squash them all into this patch. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: update mesh peering frame codesThomas Pedersen2011-08-221-81/+76
| | | | | | | | Have the mesh peering frames use the self-protected action and reason codes specified in 802.11s and defined in ieee80211.h. Remove the local enums. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ieee80211: introduce Self Protected Action codesThomas Pedersen2011-08-221-0/+14
| | | | | | | | 802.11s introduces a new action frame category, add action codes as well as an entry in ieee80211_mgmt. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: fix mesh beacon formatThomas Pedersen2011-08-224-62/+196
| | | | | | | | | | Correct ordering of IEs in the mesh beacon while removing unneeded IEs from mesh peering frames. Set privacy bit in capability info if security is enabled. Add utility functions to aid in construction of IEs and reduce code duplication. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: make forcing clock common (HT-PHY also uses that)Rafał Miłecki2011-08-223-36/+38
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: include HT-PHY in some common codeRafał Miłecki2011-08-222-0/+2
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* bcma: implement BCM4331 workaround for external PA linesRafał Miłecki2011-08-223-1/+43
| | | | | | | | | | We need to disable ext. PA lines for reading SPROM. It's disabled by default, but this patch allows using bcma after loading wl, which leaves workaround enabled. Cc: Arend van Spriel <arend@broadcom.com> Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: support new RX header, noticed to be used in 598.314+ fwRafał Miłecki2011-08-225-13/+58
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: support new TX header, noticed to be used by 598.314+ fwRafał Miłecki2011-08-224-2/+46
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: use enum for firmware header formatRafał Miłecki2011-08-224-26/+55
| | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: rename TX header formatsRafał Miłecki2011-08-222-16/+16
| | | | | | | | Replace "old" and "new" with number of the first firmware known to use the given format. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: Tear down BA session on BAR tx failureHelmut Schaa2011-08-221-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As described at [1] some STAs (i.e. Intel 5100 Windows) can end up correctly BlockAcking incoming frames without delivering them to user space if a AMPDU subframe got lost and we don't flush the receipients reorder buffer with a BlockAckReq. This in turn results in stuck connections. According to 802.11n-2009 it is not necessary to send a BAR to flush the recepients RX reorder buffer but we still do that to be polite. However, assume the following frame exchange: AP -> STA, AMPDU (failed) AP -> STA, BAR (failed) The client in question then ends up in the same situation and won't deliver frames to userspace anymore since we weren't able to flush its reorder buffer. This is not a hypothetical situation but I was able to observe this exact behavior during a stress test between a rt2800pci AP and a Intel 5100 Windows client. In order to work around this issue just tear down the BA session as soon as a BAR failed to be TX'ed. [1] http://comments.gmane.org/gmane.linux.kernel.wireless.general/66867 Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* wireless: Introduce defines for BAR TID_INFO & MULTI_TID fieldsHelmut Schaa2011-08-222-4/+6
| | | | | | | While at it also fix the indention of the other IEEE80211_BAR_CTRL_ defines. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* b43: reload phy and bss settings after core restartsFelix Fietkau2011-08-221-5/+37
| | | | | | | | | | | b43_op_config and b43_op_bss_info_changed apply many settings by directly writing to hardware registers. These settings are lost as soon as the core is restarted and the initvals are reloaded. This was discovered because restarting hostapd led to the beacon interval getting set to ~33s (see https://dev.openwrt.org/ticket/8033 for more information). Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* ath9k: do btcoex ASPM disabling at initialization timeStanislaw Gruszka2011-08-224-29/+29
| | | | | | | | | | | | 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: merge common ->config_pci_powersave() checksStanislaw Gruszka2011-08-223-6/+3
| | | | | | | | Move common checks into wrapper function. Since ASPM can be only enabled on PCIe devices ->is_pciexpress check is unneeded. 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-226-15/+12
| | | | | | | | | 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>