Commit Graph

204820 Commits

Author SHA1 Message Date
Stanislaw Gruszka 6bd1758d97 iwlwifi: assure we complete scan in scan_abort and scan_check works
Assure we complete scan in mac80211 when we abort scanning (scan_abort
work) or scan timeout occurs (scan_check work). Currently
iwl_scan_cancel_timeout() procedure force scan finish in mac80211
at the end of timeout loop, so we can use it in proper work functions.

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-09-14 16:13:26 -04:00
Stanislaw Gruszka f5354c17dc iwlwifi: force scan complete after timeout
If we do not get notification from hardware about scan complete, after
timeout do mac80211 scan completion anyway. This assure we end scan
in case of firmware hung.

Patch fix one of the causes of wdev_cleanup_work warning reported at
https://bugzilla.redhat.com/show_bug.cgi?id=593566

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:13:26 -04:00
Stanislaw Gruszka 02d8c14b59 iwlwifi: rewrite scan completion
Assure (partially) we call ieee80211_scan_completed() only once when
scan was requested from mac80211.

Code path that first clear STATUS_SCANNING bit is responsible to call
ieee80211_scan_completed(). Before the call, we check if mac80211
really request the scan.

Still persist some cases when we behave wrong, that will be addressed
in the next patches.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:04 -04:00
Stanislaw Gruszka e693a802f0 iwlwifi: rework iwl_scan_cancel_timeout
Since on timeout version of iwl_scan_cancel procedure we can sleep,
do not have to schedule abort_scan work to begin and perform scanning,
can do this directly. Also now, as we do not queue abort_scan from
restart work anymore, we can queue abort_scan to priv->workqueue.

Don't drop mutex when waiting for scan complete. Use STATUS_HW_SCAN bit
to check if scanning is currently pending, because STATUS_SCANNING will
be cleared only with priv->mutex taken.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:04 -04:00
Stanislaw Gruszka cd44600fdd iwlwifi: report scan completion when abort fail
When we are not able to send abort command to firmware, notify mac80211
that we complete scan, as we will newer do it lately. Check for all
possible errors that low level sending command procedure does not check,
to assure we catch all failures cases.

Patch fix one of the causes of wdev_cleanup_work warning reported at
https://bugzilla.redhat.com/show_bug.cgi?id=593566

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:04 -04:00
Stanislaw Gruszka d745d472af iwlwifi: cancel scan when down the device
Always cancel scan when stooping device and scan is currently pending,
we should newer have scan running after down device.

To assure we start scan cancel from restart work we have to schedule
abort_scan to different workqueue than priv->workqueue.

Patch fix not cancel scanning when restarting firmware, what is
one of the causes of wdev_cleanup_work warning (together with permanent
network connection lost) reported at
https://bugzilla.redhat.com/show_bug.cgi?id=593566

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:04 -04:00
Johannes Berg d5926d9d6a iwlwifi: move scan completed flags handling
Move the scan completed flags handling so that we
can notify mac80211 about aborted scans with the
correct status. Also queue the scan_completed work
before the BT status update so that it won't see
the bits still set (unless a new scan was started
in which case that's fine.)

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:03 -04:00
Johannes Berg 3eecce527c iwlwifi: unify scan start checks
Rather than duplicating all the checks and even
in case of errors accepting the scan request
from mac80211, we can push the checks to the
caller and in all error cases reject the scan
request right away (rather than accepting and
then saying it was aborted).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:03 -04:00
Johannes Berg b5be3efc34 iwlwifi: remove unused conf variables
There are a number of conf variables that are
unused, remove them.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:03 -04:00
Steve deRosier 740c1aa3b0 mac80211: Fix dangling pointer in ieee80211_xmit
hdr pointer is left dangling after call to ieee80211_skb_resize. This
can cause guards around mesh path selection to fail.

Signed-off-by: Steve deRosier <steve@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:03 -04:00
Bill Jordan a1e567c83f nl80211: Uninitialized variable
There is a path in nl80211_set_wiphy where result is tested but
uninitialized.

I am hitting this path when I attempt:

sh# iw dev wlan0 set channel 10
command failed: Unknown error 1069727332 (-1069727332)

Signed-off-by: William Jordan <bjordan@rajant.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:08:03 -04:00
Nikitas Angelinas 942623166d net/wireless: use ARRAY_SIZE macro in radiotap.c
Replace sizeof(rtap_namespace_sizes) / sizeof(rtap_namespace_sizes[0])
with ARRAY_SIZE(rtap_namespace_sizes) in net/wireless/radiotap.c

Signed-off-by: Nikitas Angelinas <nikitasangelinas@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:05:57 -04:00
Nikitas Angelinas bbce80e110 drivers/net/wireless/ath/ath9k: use ARRAY_SIZE macro in ani.c
Replace (sizeof(ofdm_level_table)/sizeof(ofdm_level_table[0]) with
ARRAY_SIZE(ofdm_level_table), and (sizeof(cck_level_table)/
sizeof(cck_level_table[0]) with ARRAY_SIZE(cck_level_table) in
drivers/net/wireless/ath/ath9k/ani.c

Signed-off-by: Nikitas Angelinas <nikitasangelinas@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:05:57 -04:00
Fabio Rossi 516c6e1f52 ath5k: avoid unneeded calibration error messages
Don't generate calibration errors messages when not needed.

Signed-off-by: Fabio Rossi <rossi.f@inwind.it>
Acked-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:05:56 -04:00
Helmut Schaa 65b7fc9747 rt2x00: fix oops in rt2x00lib_txdone with rt61pci
Fix a typo introduced in "rt2x00: Add helper function for reporting tx
status" that results in an oops in rt2x00lib_txdone.

Reported-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-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-09-14 16:03:44 -04:00
Helmut Schaa 6646505de0 rt2x00: Enable missing interrupts in rt61pci
We're handling both, the CSR_BEACON_DONE and the CSR_TWAKEUP interrupts
in rt61pci. However, these interrupts are masked out by default. Fix
this.

Found via pure code inspection.

Signed-off-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-09-14 16:03:44 -04:00
Helmut Schaa 93149cf87b rt2x00: Mask out unused interrupts in rt2800pci
We don't use all available interrupts in rt2800pci. Mask out all unused
interrupts to avoid waking up without having anything to do.

Signed-off-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-09-14 16:03:44 -04:00
Helmut Schaa 0204464329 rt2x00: Check for specific changed flags when updating the erp config
Previously rt2x00 was always updating all erp related config variables
even though mac80211 might only have changed one. Hence, pass the
changed flags to the config_erp driver callback so that the driver
can limit the changes to the correct values.

This fixes an issue in AP mode where the beacon interval is not
initialized (and thus zero) but still sent to the hardware causing an
interrupt storm on rt2800pci hanging the system.

Signed-off-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-09-14 16:03:43 -04:00
Helmut Schaa 47ee3eb135 rt2x00: Initialize AMPDU_BA_WINSIZE register
Since we're not using the AMPDU_BA_WINSIZE register to force the BlockAck
window size (we specify it in every TXWI) we should initialize it to 0.

Signed-off-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-09-14 16:03:43 -04:00
Lars Ericsson 85f4d6488c rt2x00: Antenna diversity does not work in 2.6.35
The test if antenna diversity is at all enabled uses a local variable
'flags' to prepare the test condition, but uses 'ant->flags' when the test
is evaluated. The effect is that the diversity evaluation will never start.
I can see two solutions, use the 'flag' in the test condition or revert the
local flag change. My attached patch took alternative two.

Then the evaluation start but it will still not switch antenna. The problem
is a code section in rt2x00lib_config_antenna (). The effect of that code
section is that any change the diversity function perform will be
effectively shorten and no antenna selection command issued. The attached
patch will filter out any ANTENNA_SW_DIVERSITY setting but forward all
other

Signed-off-by: Lars Ericsson <lars_ericsson@telia.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:43 -04:00
Rajkumar Manoharan 58d7e0f37c ath9k_hw: Support fastcc for AR7010
To reduce scan time, enable fastcc for AR7010

(fastcc == fast channel change -- JWL)

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:43 -04:00
Ohad Ben-Cohen 49063a0d0b wl1271: sdio: claim host only when doing IO
Do not maintain a persistent sdio_claim_host state. Instead,
claim host before doing IO and release host soon after.

This fixes several mmc deadlock scenarios, e.g. during
suspend/resume.

Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Acked-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:42 -04:00
Christian Lamparter 1d7e1e6b1b carl9170: Makefile, Kconfig files and MAINTAINERS
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:42 -04:00
Christian Lamparter 00c4da27a4 carl9170: firmware parser and debugfs code
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:42 -04:00
Christian Lamparter a84fab3cbf carl9170: 802.11 rx/tx processing and usb backend
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:42 -04:00
Christian Lamparter 319da621d5 carl9170: PHY/RF and MAC routines
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:42 -04:00
Christian Lamparter aae9af605a carl9170: Register maps, tx/rx descriptor formats and eeprom layout
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:41 -04:00
Christian Lamparter fe8ee9ad80 carl9170: mac80211 glue and command interface
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-14 16:03:41 -04:00
Wey-Yi Guy 743e015dcb iwlwifi: remove code repetition
Move the duplicated code into single static function.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:52:23 -07:00
Wey-Yi Guy 8f1d968721 iwlwifi: make sure runtime calibration is enabled after association
Clear the "start calib" flag only for new association,
The flag will be set in post_associate function to trigger
the runtime calibration. Set this flag to "0" will stop the
runtime sensitivity calibration

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:52:11 -07:00
Johannes Berg ea196fdbb9 iwlwifi: fix and describe iwl_adjust_beacon_interval
The iwl_adjust_beacon_interval function is a bit
of black magic, so add comments to it describing
what it does. Also, in the case when there's no
beacon interval set, program the default into
the device (instead of adjusting, which results
in the max) since using the max in that case
interacts badly with dual-mode/PAN parameters.

Also update the PAN parameters accordingly and
use the same constant as here.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:52:01 -07:00
Johannes Berg f1f270b25c iwlwifi: improve timing handling with dual-mode
In dual-mode, a number of scenarios need to be
considered, and the firmware can be very picky
about them. Adjust the timing (most importantly
the beacon interval) according to the different
modes.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:51:48 -07:00
Johannes Berg 763cc3bf5c iwlwifi: avoid sending too many commands
When the PAN context is unused, there's no
need to continually update it in the device.
So track which contexts are active (with the
special case that the WLAN context is always
active ...) and only send their commands to
the device when needed.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:51:39 -07:00
Wey-Yi Guy c6abdc0dc3 iwlwifi: allow configure protection mode
Even driver use rts/cts protection mode for aggregation packets by default.
Allow the protection mode to be configure through debugfs

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:51:31 -07:00
Johannes Berg 2a3aeb44f5 iwlwifi: implement beacon interval change
When the beacon interval needs to be changed,
all we need to do is send updated timing to
the device.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:51:21 -07:00
Johannes Berg 27eafdda77 iwlwifi: fix PAN parameters while scanning
When only the PAN side was active, we gave no
time to the WLAN context, which is OK unless
we are scanning, which always happens on the
WLAN context. Fix this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:51:10 -07:00
Wey-Yi Guy 6e6ebf4bef iwlwifi: remember the last uCode sysassert error code
When sysassert happen, uCode will report the error code,
driver dump the information to dmesg. Here also remember
the last error code for future reference.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:50:59 -07:00
Tomas Winkler cf6da94acb iwlwifi: fix default LQ table in 5.2 band
The default LQ is filled decreasingly using
iwl_get_prev_ieee_rate from a starting rate.
Since the starting rate is already the lowest one for
a specific band it should be actually filled evenly with
the starting rate: 1M and 6M for 5.2GHZ and 2.4GH respectively.
The bug is that for for A or G-only it decreases to
CCK rates which are not supported.
iwl_get_prev_ieee_rate function is just not band aware.
This affects broadcast station which lq table
is not updated by rs algorithm

G-only scenario is not treated by this patch

iwl_get_prev_ieee_rate is removed completely as it
is not used in other contexts

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-11 08:50:44 -07:00
Julia Lawall 950094cb06 drivers/net/wireless/iwlwifi/iwl-agn.c: Fix return value from an unsigned function
The function has an unsigned return type, but returns a negative constant
to indicate an error condition.  Another error condition in the same
function is indicated by returning 0, and indeed the only call to the
function checks for 0 to detect errors, so the return of a negative value
it converted to a return of 0.

A sematic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@exists@
identifier f;
constant C;
@@

 unsigned f(...)
 { <+...
*  return -C;
 ...+> }
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:34 -04:00
Michael Büsch f4bbf922f3 p54spi: Add error message for eeprom failure
This adds an error message for the eeprom request failure
case. This way it's easier for the user to figure out
what went wrong.

Signed-off-by: Michael Büsch <mb@bu3sch.de>
Acked-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:34 -04:00
Rajkumar Manoharan c2ba334246 ath9k_hw: Restore ANI registers to default during partial reset for AR9271
For AR9271 chips, if partial reset is done while scanning, the cycpwrThr1
will be set to maximum. This causes the degrade in DL throughput.
So restore the ANI registers to default during the partial reset.

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:34 -04:00
Rajkumar Manoharan 7cf1f2dd7d ath9k_htc: Enable fastcc for HTC devices.
By enabling fastcc, the scan time reduced to half.

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:34 -04:00
Vasanthakumar Thiagarajan 102885a5d1 ath9k: Implement an algorithm for Antenna diversity and combining
This algorithm chooses the best main and alt lna out of
LNA1, LNA2, LNA1+LNA2 and LNA1-LNA2 to improve rx for single
chain chips(AR9285). This would greatly improve rx when there
is only one antenna is connected with AR9285.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:33 -04:00
Vasanthakumar Thiagarajan 21cc630f47 ath9k_hw: Add functions to get/set antenna diversity configuration
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:33 -04:00
Vasanthakumar Thiagarajan 754dc53641 ath9k_hw: Add capability flag for Antenna diversity and combining feature
This is enabled only for ar9285.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:33 -04:00
Stephen Hemminger 7a374d8eeb airo: make strings const
Make read/only data structures const. Compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:33 -04:00
Stephen Hemminger b6f45c2c03 ray_cs: make data const
Make the startup and other data parameters that are read/only
const. Compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-07 13:54:32 -04:00
Wey-Yi Guy f7322f8f05 iwlagn: open/close envlope to force move BT state machine
In uCode, BT state machine need to receive open envlope
command before perform calibration; followed by close envlope
command to move to next stage.

Since Linux has two separated uCode, one for init and the second
one for runtime; we use open envlope commands for init uCode to
indicate we are ready to perform calibration operation.
But for runtime uCode, we are not doing any init calibration,
so we issue open/close envlope commands to force uCode move to
"BT COEX ON" state.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
2010-09-03 12:31:35 -07:00
John W. Linville 85f72bc839 mac80211: only cancel software-based scans on suspend
Otherwise the hardware scan handler could access an invalid scan request
structure.  The driver should cancel any pending hardware scans during
the suspend process anyway, so also add a warning if the hardware scan
is still pending when the device resumes.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-01 16:12:28 -04:00
John W. Linville 18145c6934 mac80211: cancel scan in ieee80211_restart_hw if software scan pending
This function exists to clean-up after a hardware error or something
similar.  The restart is accomplished using the same infrastructure used
to resume after a suspend.  The suspend path cancels running scans, so
it seems appropriate to do that here as well for software-based scans.
If a hardware-based scan is pending, issue a warning message since this
indicates that the drivers has failed to clean-up after itself.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-08-31 15:20:45 -04:00