Commit Graph

221787 Commits

Author SHA1 Message Date
Roger Quadros 870c367cf8 wl1271: Add wl1271_load_firmware() and export some functions
For the SDIO testing module we need to load the firmware but not
boot it. wl1271_load_firmware() is meant to do just the firmware loading part.

We also export some functions so they are usable in the testing module.

Signed-off-by: Roger Quadros <roger.quadros@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-12-02 16:17:20 +02:00
Luciano Coelho 43a598d5e4 wl12xx: fix illegal memset if debugfs is not enabled
If we try to reset the debugfs statistics when debugfs is not configured in
the kernel, we're memset an illegal pointer, because it has never been
allocated.  So check whether we have debugfs enabled by looking into the
wl->rootdir before trying to reset the fw_stats struct.

Reported-by: Joerie de Gram <j.de.gram@gmail.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-12-02 16:17:19 +02:00
Eliad Peller d60080ae06 wl1271: move wl12xx debugfs directory to under wiphy's debugfs
Use per-device debugfs path, so multiple devices won't collide.

in order to use wl->hw->wiphy->debugfsdir, we have to move the debugfs
creation from wl1271_debugfs_init() to wl1271_register_hw().

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-12-02 16:17:11 +02:00
Eliad Peller 7cb2cea9f0 wl1271: use debugfs_remove_recursive
Documentation/filesystems/debugfs.txt:
"""
Once upon a time, debugfs users were required to remember the dentry pointer
for every debugfs file they created so that all files could be cleaned up.
We live in more civilized times now, though, and debugfs users can call:

    void debugfs_remove_recursive(struct dentry *dentry);
"""

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-12-02 16:16:52 +02:00
Juuso Oikarinen 2f6724b245 wl1271: Fix setting of the hardware connection monitoring probe-req template
The probe-request template used in the hardware connection monitoring feature
thus far has been an empty one, without the SSID IE and without supported rate
IEs. This causes problems with some AP's.

Additionally, after connected scans, the template for connection maintenance
would remain to be the one last used for scanning - potentially incorrect.

Fix these by getting a pre-filled directed probe-request template for the
associated-to AP from mac80211.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-26 15:33:41 +02:00
Luciano Coelho 573c67cf81 wl12xx: disable 11a channels when regulatory changes if 11a is not supported
Instead of simply not scanning for the 11a channels when not supported by the
hardware, disable the channels in reg_notify.  This centralizes the decision
on whether to scan 5GHz channel in one place and allows userspace to know
exactly which channels are in use.

Based on Juuso Oikarinen's idea.

Cc: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
2010-11-26 15:09:15 +02:00
Juuso Oikarinen 6735329934 wl12xx: Fix kernel crash related to hw recovery and interface shutdown
It is possible that the op_remove_interface function  is invoked exactly at
the same time has hw recovery is started. In this case it is possible for the
interface to be already removed in the op_remove_interface call, which
currently leads to a kernel warning and a subsequent kernel crash.

Fix this by ignoring the op_remove_interface call if the interface is already
down at that point.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Tested-by: Tuomas Katila <ext-tuomas.2.katila@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-23 10:29:29 +02:00
Juuso Oikarinen b84a7d3d9e wl12xx: Unset bssid filter, ssid and bssid from firmware on disassoc
On the disassociation event from the mac80211, the wl12xx driver does not
clear the chipset configuration related to the AP - i.e. it does not perform
a DISCONNECT and then a JOIN with zero SSID and dummy BSSID. Also, it does not
unset the BSSID filter.

Often this is not a problem, as the above is performed upon entering idle
state. But if a scenario arises where a new association is attempted without
cycling through idle state, the new association will fail.

Fix this by resetting the firmware state on disassociation.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:14 +02:00
Arik Nemtsov 68d069c45f wl1271: add support for HW TX fragmentation
Indicate to mac80211 we support HW fragmentation.
Support updates of the fragmentation threshold via the
set_frag_threshold callback.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:13 +02:00
Juuso Oikarinen fa97f46b30 Revert "wl1271: Change supported channel order for a more optimal scan"
This reverts commit fa21c7a9e4.

The reverted patch caused more harm than benefit.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
Tested-by: Tuomas Katila <ext-tuomas.2.katila@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:12 +02:00
Juuso Oikarinen b7417d930a wl1271: Prevent ad-hoc and active scanning on 11a DFS frequencies
The wl1271 does not support radar detection. Hence, prevent ad-hoc and
active scanning on frequencies requiring DFS.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Tested-by: Tuomas Katila <ext-tuomas.2.katila@nokia.com>
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:11 +02:00
Gery Kahn 91433029e4 wl1271: cleanup unused code of calibration structures
The cleanup unused code for calibration procedures.

Signed-off-by: Gery Kahn <geryk@ti.com>
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:10 +02:00
Shahar Levi 00d201001b wl1271: Change wl12xx Files Names
All files name prefix removed due to the fact that wl12xx driver supports
wl1271 and wl1273.
Also the definition in Kconfig and header files changed respectively.

Signed-off-by: Shahar Levi <shahar_levi@ti.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
2010-11-22 16:45:09 +02:00
Rafał Miłecki a76a574ca9 ssb: drop BCM4328 hack for SPROM revision
This hacks leads to incorrect SPROM parsing for me and reading for example MAC
as: 00:00:00:54:00:00. Michael G. who introduced this confirmed it is not
needed anymore.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Tested-by: Michael Gerdau <mgd@qata.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:22:25 -05:00
Felix Fietkau aaa13ca242 ath9k_hw: support reading calibration data from flash on AR9003
Embedded boards do not have compressed EEPROM data, they use the
struct ar9003_eeprom layout, with little endian fields, so copying
the raw data to the eeprom buffer is enough.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:22:24 -05:00
Felix Fietkau a05b5d4504 ath9k: add support for reading eeprom from platform data on PCI devices
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>
2010-11-18 14:22:23 -05:00
John W. Linville 458fafdd57 rndis_wlan: avoid uninitialized var warning in rndis_wlan_craft_connected_bss
CC [M]  drivers/net/wireless/rndis_wlan.o
drivers/net/wireless/rndis_wlan.c: In function ‘rndis_wlan_craft_connected_bss’:
drivers/net/wireless/rndis_wlan.c:2542:2: warning: ‘ret’ may be used uninitialized in this function

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
2010-11-18 14:22:22 -05:00
John W. Linville 8befba6f22 iwmc3200wifi: clarify potentially undefined operation in iwm_scan_ssids
CC [M]  drivers/net/wireless/iwmc3200wifi/commands.o
drivers/net/wireless/iwmc3200wifi/commands.c: In function ‘iwm_scan_ssids’:
drivers/net/wireless/iwmc3200wifi/commands.c:911:15: warning: operation on ‘iwm->scan_id’ may be undefined

Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:22:21 -05:00
Bruno Randolf 86107fd170 nl80211/mac80211: Report signal average
Extend nl80211 to report an exponential weighted moving average (EWMA) of the
signal value. Since the signal value usually fluctuates between different
packets, an average can be more useful than the value of the last packet.

This uses the recently added generic EWMA library function.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:22:20 -05:00
Bruno Randolf eef39befaa ath5k: Use generic EWMA library
Remove ath5k's private moving average implementation in favour of the generic
library version.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:22:19 -05:00
Bruno Randolf c5485a7e75 lib: Add generic exponentially weighted moving average (EWMA) function
This adds generic functions for calculating Exponentially Weighted Moving
Averages (EWMA). This implementation makes use of a structure which keeps the
EWMA parameters and a scaled up internal representation to reduce rounding
errors.

The original idea for this implementation came from the rt2x00 driver
(rt2x00link.c). I would like to use it in several places in the mac80211 and
ath5k code and I hope it can be useful in many other places in the kernel code.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-18 14:21:52 -05:00
Johannes Berg 50a9432dae mac80211: fix powersaving clients races
The code to handle powersaving stations has a race:
when the powersave flag is lifted from a station,
we could transmit a packet that is being processed
for TX at the same time right away, even if there
are other frames queued for it. This would cause
frame reordering. To fix this, lift the flag only
under the appropriate lock that blocks TX.

Additionally, the code to allow drivers to block a
station while frames for it are on the HW queue is
never re-enabled the station, so traffic would get
stuck indefinitely. Fix this by clearing the flag
for this appropriately.

Finally, as an optimisation, don't do anything if
the driver unblocks an already unblocked station.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:33 -05:00
Johannes Berg 4bce22b9b8 mac80211: defines for AC numbers
In many places we've just hardcoded the
AC numbers -- which is a relic from the
original mac80211 (d80211). Add constants
for them so we know what we're talking
about.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:31 -05:00
Felix Fietkau 488f6ba75b ath9k_hw: add support for reading EEPROM data from the internal OTP ROM
Some of the new AR9003 cards do not come with an external EEPROM chip
anymore. Calibration data on these cards is stored in the OTP ROM on
the chip.
This patch adds support for reading this data, and also adds support
for different EEPROM chip sizes (512 bytes instead of 1K).

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:30 -05:00
Felix Fietkau 2d42efc44e ath9k: store frame information used by aggregation inside the skb tx info
Since the pointers after the rates in the tx info cannot be used anymore
after frames have been queued, this area can be used to store information
that was previously stored in the ath_buf. With these changes, we can delay
the ath_buf assignment in the aggregation code until aggregates are formed.

That will not only make it possible to simplify DMA descriptor setup to
do less rewriting of uncached memory, but will also make it easier to
move aggregation out of the core of the ath9k tx path.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:29 -05:00
Felix Fietkau 04caf86375 ath9k: more tx setup cleanups
- remove the BUF_HT flag, and instead check for IEEE80211_TX_CTL_AMPDU
  before calling ath_tx_send_ampdu.
- remove a few unused variables
- calculate frame length before adding the frame padding
- merge the misnamed ath_tx_start_dma function into ath_tx_start
- remove an unused argument for assign_aggr_tid_seqno

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:27 -05:00
Felix Fietkau 71a3bf3e94 ath9k: block new AMPDU sessions if SC_OP_TXAGGR is not set
This makes further tx path cleanups easier

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:25 -05:00
Felix Fietkau 28d1670862 ath9k: clean up code duplication around ath_tx_start
Merge initial processing for the CAB queue and regular tx.
Also move ath_tx_cabq() to beacon.c and make it static.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:23 -05:00
Felix Fietkau c599261825 ath9k: remove bf_tx_aborted from struct ath_buf
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:21 -05:00
Felix Fietkau 76e4522177 ath9k: remove bfs_frmlen from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:19 -05:00
Felix Fietkau b572d0335f ath9k: remove bfs_nframes from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:18 -05:00
Felix Fietkau 269c44bc84 ath9k: remove bfs_al from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:16 -05:00
Felix Fietkau 3017047f56 ath9k: remove bfs_keyix from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:14 -05:00
Felix Fietkau 82259b77f6 ath9k: remove bfs_paprd_timestamp from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:12 -05:00
Felix Fietkau 952cd69371 ath9k: remove bfs_keytype from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:09 -05:00
Felix Fietkau 5daefbd061 ath9k: remove bfs_tidno from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:07 -05:00
Felix Fietkau 2d3bcba082 ath9k: remove bfs_seqno from struct ath_buf_state
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:05 -05:00
Felix Fietkau 9a6b827063 ath9k: fix PA predistortion training frame setup
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:03 -05:00
Felix Fietkau c5d0855acf ath9k_hw: set default values for radar pulse detection
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:19:01 -05:00
RA-Jay Hung 387e688464 rt2x00: Modify rt2x00queue_remove_l2pad to make skb->data two-byte alignment
When send out skb data to mac80211, orignal code will cause mac80211
unaligned access, so modify code to make mac80211 can natural access.

Signed-off-by: RA-Jay Hung <jay_hung@ralinktech.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:59 -05:00
RA-Jay Hung f8eaec659f rt2x00: Fix header_length in rt2x00lib_txdone
Put the assignment of header_length after pull out extra tx headroom

Signed-off-by: RA-Jay Hung <jay_hung@ralinktech.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:57 -05:00
RA-Jay Hung b43d63bd69 rt2x00: Fix rt2800 USB TX Path DMA issue
rt2800usb chips need to add 1~3 bytes zero padding after each 802.11 header & payload,
and at the end need to add 4 bytes zero padding whether doing TX bulk aggregation or not,

TXINFO_W0_USB_DMA_TX_PKT_LEN in TXINFO must include 1-3 bytes padding after 802.11 header & payload
but do not include 4 bytes end zero padding.

In rt2800usb_get_tx_data_len do not consider multiple of the USB packet size case, sometimes this will
cause USB DMA problem.

Signed-off-by: RA-Jay Hung <jay_hung@ralinktech.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:55 -05:00
Gertjan van Wingerde ef8397cfb3 rt2x00: Use ioremap for SoC devices instead of KSEG1ADDR.
Make the code a bit more portable to architectures that do not support
KSEG1ADDR.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Tested-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:54 -05:00
Gertjan van Wingerde 72c7296e03 rt2x00: Remove unneccessary internal Kconfig symbols.
CONFIG_RT2800PCI_PCI and CONFIG_RT2800PCI_SOC are strictly not needed
as we can check the dependent symbols directly in the rest of Kconfig
and the code, so clean up the Kconfig namespace a bit.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:51 -05:00
Gertjan van Wingerde a6a8d66eba rt2x00: Remove RT30XX Kconfig variables.
Enabling of RT30xx devices via Kconfig variables was introduced when these
devices weren't properly supported yet.
Now that that they are properly supported and functional, we can remove these
Kconfig variables for RT30xx devices and simply enable them whenever rt2800pci
and/or rt2800usb is enabled.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:50 -05:00
Gertjan van Wingerde 46af584d2e rt2x00: Clean up Kconfig for RT2800 devices.
General clean up of the Kconfig part for RT28XX devices.
Also remove the indications of non functional support for rt27xx/rt28xx/rt30xx
devices, as this is no longer true. They just work fine.
Finally, remove the experimental indications for rt27xx/rt28xx/rt30xx devices
as that is no longer true. Keep the experimental indications for rt33xx/rt35xx
devices, though.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:48 -05:00
Gertjan van Wingerde f93bc9b3ce rt2x00: Add initial support for RT3370/RT3390 devices.
Modified from Eddy's patch by adding the RT3370 USB support as well.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Cc: Eddy Tsai <Eddy_Tsai@ralinktech.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:47 -05:00
Ivo van Doorn ae4ecb9f8f rt2x00: Increase REGISTER_BUSY_COUNT
For some hardware the REGISTER_BUSY_COUNT isn't sufficient,
increase the REGISTER_BUSY_COUNT to 100 to catch most
devices which have more problems with accessing the registers.

For normal operating devices nothing would change as they will
exit the loop early anyway.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-17 16:18:45 -05:00
Mohammed Shafi Shajakhan 28d9cc7f21 ath9k_htc: Use macro for caldata array size
The calibration data variable size is based on the number of
channels available in the ath9k driver.

Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-16 16:39:09 -05:00
Stanislaw Gruszka ef1b21f7eb iwlwifi: kill elapsed_jiffies
Subtract of jiffies is fine even if one variable overwrap.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-11-16 16:39:09 -05:00