pandora-kernel.git
14 years agoiwlwifi: recalculate average tpt if not current
Reinette Chatre [Mon, 3 May 2010 17:55:07 +0000 (10:55 -0700)]
iwlwifi: recalculate average tpt if not current

We currently have this check as a BUG_ON, which is being hit by people.
Previously it was an error with a recalculation if not current, return that
code.

The BUG_ON was introduced by:
commit 3110bef78cb4282c58245bc8fd6d95d9ccb19749
Author: Guy Cohen <guy.cohen@intel.com>
Date:   Tue Sep 9 10:54:54 2008 +0800

    iwlwifi: Added support for 3 antennas

... the portion adding the BUG_ON is reverted since we are encountering the error
and BUG_ON was created with assumption that error is not encountered.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwmc3200wifi: fix busted iwm_debugfs_init definition
John W. Linville [Mon, 3 May 2010 20:12:39 +0000 (16:12 -0400)]
iwmc3200wifi: fix busted iwm_debugfs_init definition

Looks like we missed removing the return statement in the non-CONFIG_IWM_DEBUG
dummy implementation of iwm_debugfs_init...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge branch 'wireless-next-2.6' of git://git.kernel.org/pub/scm/linux/kernel/git...
John W. Linville [Mon, 3 May 2010 18:53:49 +0000 (14:53 -0400)]
Merge branch 'wireless-next-2.6' of git://git./linux/kernel/git/iwlwifi/iwlwifi-2.6

14 years agowireless: rt2x00: rt2800usb: be in sync with latest windows drivers.
Xose Vazquez Perez [Mon, 3 May 2010 11:11:38 +0000 (13:11 +0200)]
wireless: rt2x00: rt2800usb: be in sync with latest windows drivers.

0x07d1,0x3c17 D-Link Wireless N 150 USB Adapter DWA-125
0x1b75,0x3071 Ovislink Airlive WN-301USB
0x1d4d,0x0011 Pegatron Ralink RT3072 802.11b/g/n Wireless Lan USB Device
0x083a,0xf511 Arcadyan 802.11 USB Wireless LAN Card
0x13d3,0x3322 AzureWave 802.11 n/g/b USB Wireless LAN Card

Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211_hwsim: fix double-scan detection
Johannes Berg [Mon, 3 May 2010 07:21:14 +0000 (09:21 +0200)]
mac80211_hwsim: fix double-scan detection

Currently, hwsim will always detect a double scan
after the first one has finished ...

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: improve IBSS scanning
Johannes Berg [Mon, 3 May 2010 06:49:48 +0000 (08:49 +0200)]
mac80211: improve IBSS scanning

When IBSS is fixed to a frequency, it can still
scan to try to find the right BSSID. This makes
sense if the BSSID isn't also fixed, but it need
not scan all channels -- just one is sufficient.
Make it do that by moving the scan setup code to
ieee80211_request_internal_scan() and include
a channel variable setting.

Note that this can be further improved to start
the IBSS right away if both frequency and BSSID
are fixed.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: allow controlling aggregation manually
Johannes Berg [Sat, 1 May 2010 16:53:51 +0000 (18:53 +0200)]
mac80211: allow controlling aggregation manually

This allows enabling TX and disabling both TX and
RX aggregation sessions manually in debugfs. It is
very useful for debugging session initiation and
teardown problems since with this you don't have
to force a lot of traffic to get aggregation and
thus have less data to analyse.

Also, to debug mac80211 code itself, make hwsim
"support" aggregation sessions. It will still just
transfer the frame, but go through the setup and
teardown handshakes.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco_usb: implement fw download
David Kilroy [Sat, 1 May 2010 13:05:43 +0000 (14:05 +0100)]
orinoco_usb: implement fw download

This involves some refactorring of the common fw download code to
substitute ezusb versions of various functions.

Note that WPA-enabled firmwares (9.xx series) will not work fully with
orinoco_usb yet.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco_usb: avoid in_atomic
David Kilroy [Sat, 1 May 2010 13:05:42 +0000 (14:05 +0100)]
orinoco_usb: avoid in_atomic

We expect to be either in process contect or soft interrupt context. So
use in_softirq instead.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco: add orinoco_usb driver
David Kilroy [Sat, 1 May 2010 13:05:41 +0000 (14:05 +0100)]
orinoco: add orinoco_usb driver

This driver uses the core orinoco modules for the bulk of
the functionality. The low level hermes routines (for local bus
cards) are replaced, the driver supplies its own ndo_xmit_start
function, and locking is done with the _bh variant.

Some recent functionality is not available to the USB cards yet
(firmware loading and WPA).

Out-of-tree driver originally written by Manuel Estrada Sainz.

Thanks to Mark Davis for supplying hardware to test the updates.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco: encapsulate driver locking
David Kilroy [Sat, 1 May 2010 13:05:40 +0000 (14:05 +0100)]
orinoco: encapsulate driver locking

Local bus and USB drivers will need to do locking differently.

The original orinoco_usb patches had a boolean variable controlling
whether spin_lock_bh was used, or irq based locking. This version
provides wrappers for the lock functions and the drivers specify the
functions pointers needed.

This will introduce a performance penalty, but I'm not expecting it to
be noticable.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco: allow driver to specify netdev_ops
David Kilroy [Sat, 1 May 2010 13:05:39 +0000 (14:05 +0100)]
orinoco: allow driver to specify netdev_ops

Allow the main drivers to specify a custom version of the net_device_ops
structure. This is required by orinoco_usb to supply a separate transmit
function.

Export existing net_device_ops callbacks so that the drivers can reuse
some of the existing code.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoorinoco: add hermes_ops
David Kilroy [Sat, 1 May 2010 13:05:38 +0000 (14:05 +0100)]
orinoco: add hermes_ops

Pave the way for introducing USB alternative functions.

Force callers to dereference ops instead of providing wrappers.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix ieee80211_find_sta[_by_hw]
Johannes Berg [Fri, 30 Apr 2010 11:48:36 +0000 (13:48 +0200)]
mac80211: fix ieee80211_find_sta[_by_hw]

Both of these functions can currently return
a station pointer that, to the driver, is
invalid (in IBSS mode only) because adding
the station failed. Check for that, and also
make ieee80211_find_sta() properly use the
per interface station search.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agob43legacy: Added get_survey callback in order to get channel noise
John W. Linville [Thu, 29 Apr 2010 19:56:25 +0000 (15:56 -0400)]
b43legacy: Added get_survey callback in order to get channel noise

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agob43: Added get_survey callback in order to get channel noise
John W. Linville [Thu, 29 Apr 2010 19:56:06 +0000 (15:56 -0400)]
b43: Added get_survey callback in order to get channel noise

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: remove now unused noise field from struct rxdone_entry_desc
John W. Linville [Wed, 28 Apr 2010 21:00:52 +0000 (17:00 -0400)]
rt2x00: remove now unused noise field from struct rxdone_entry_desc

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
14 years agoiwmc3200wifi: cleanup unneeded debugfs error handling
John W. Linville [Mon, 3 May 2010 18:46:05 +0000 (14:46 -0400)]
iwmc3200wifi: cleanup unneeded debugfs error handling

"iwl: cleanup: remove unneeded error handling" missed the one in
if_sdio_debugfs_init().

I don't think we even need to check -ENODEV ourselves because if
DEBUG_FS is not compiled in, all the debugfs utility functions will
become no-op.

Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: greenfield support only true for 11n devices
Wey-Yi Guy [Tue, 20 Apr 2010 03:39:48 +0000 (20:39 -0700)]
iwlwifi: greenfield support only true for 11n devices

Greenfield is a 11n feature, remove it from non-11n devices
configuration parameters list

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: set hw parameters based on device type
Wey-Yi Guy [Tue, 20 Apr 2010 01:49:40 +0000 (18:49 -0700)]
iwlwifi: set hw parameters based on device type

Separate the hw_set_hw_params() function to per device based; different
devices can have different hardware parameters set, when separate the
function based on device type can avoid mistakes, give more flexibilities and
easier to read.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: set AMPDU status variables correctly
Daniel Halperin [Sun, 18 Apr 2010 16:27:58 +0000 (09:27 -0700)]
iwlwifi: set AMPDU status variables correctly

The TX status code is currently abusing the ampdu_ack_map field (a bitmap) to
count the number of successfully received frames.  The comments in mac80211.h
show there are actually three different, relevant variables, of which we are
currently using two, both incorrectly. Fix this by making

- ampdu_ack_len -> the number of ACKed frames (i.e. successes)
- ampdu_ack_map -> the bitmap
- ampdu_len -> the total number of frames sent (i.e., attempts)

to match the header file (and verified with ath9k's usage) and updating Intel's
RS code to match.

Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwl3945: add ucode statistics
Abhijeet Kolekar [Fri, 16 Apr 2010 17:03:54 +0000 (10:03 -0700)]
iwl3945: add ucode statistics

Add general, rx and tx uCode statistics to 3945. This will help
in debugging

Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: set correct AC to swq_id for aggregation
Shanyu Zhao [Wed, 14 Apr 2010 22:35:14 +0000 (15:35 -0700)]
iwlwifi: set correct AC to swq_id for aggregation

When starting an aggregation session, the swq_id is generated in function
iwl_virtual_agg_queue_num() where the first parameter is supposed to be
the Access Class, but it used the tx fifo ID instead. This means the AC
value stored in swq_id is incorrect. To test this, look at the tx_queue
file in debugfs while transmitting Best Effort flow (ac=2), it shows:
hwq 10: read=0 write=0 stop=0 swq_id=0xa9 (ac 1/hwq 10)
After this fix, it will show:
hwq 10: read=0 write=0 stop=0 swq_id=0xaa (ac 2/hwq 10)

Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: reset pci retry timeout
Abhijeet Kolekar [Wed, 14 Apr 2010 17:27:00 +0000 (10:27 -0700)]
iwlwifi: reset pci retry timeout

We removed resetting of PCI_RETRY_TIMEOUT register
in merge of suspend resume work.
'Suspend and resume' resets the PCI configuration space, so we
have to disable the RETRY_TIMEOUT register again here.

Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: remove outdated comments
Wey-Yi Guy [Wed, 14 Apr 2010 03:50:16 +0000 (20:50 -0700)]
iwlwifi: remove outdated comments

IEEE80211_CONF_SHORT_SLOT_TIME is no longer a possible setting in
ieee80211_conf->flags

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: remove get_stats callback function
Wey-Yi Guy [Tue, 13 Apr 2010 18:28:52 +0000 (11:28 -0700)]
iwlwifi: remove get_stats callback function

The low level transmission function is performed at uCode layer
for all the "agn" NICs, there is no statistics information available
for mac80211 get_stats() call. Remove the callback function to
avoid misleading information that returned success when indeed it is not
supported. Now return "not supported".

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoMerge branch 'wireless-2.6' into wireless-next-2.6
Reinette Chatre [Fri, 30 Apr 2010 22:13:00 +0000 (15:13 -0700)]
Merge branch 'wireless-2.6' into wireless-next-2.6

Patch "iwlwifi: work around passive scan issue" was merged into
wireless-2.6, but touched a lot of code since modified (and moved)
in wireless-next-2.6. This caused some conflicts.

Conflicts:
drivers/net/wireless/iwlwifi/iwl-scan.c

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agoiwlwifi: work around passive scan issue
Johannes Berg [Fri, 30 Apr 2010 21:42:15 +0000 (14:42 -0700)]
iwlwifi: work around passive scan issue

Some firmware versions don't behave properly when
passive scanning is requested on radar channels
without enabling active scanning on receiving a
good frame. Work around that issue by asking the
firmware to only enable the active scanning after
receiving a huge number of good frames, a number
that can never be reached during our dwell time.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
14 years agomac80211: remove deprecated noise field from ieee80211_rx_status
John W. Linville [Fri, 30 Apr 2010 19:37:00 +0000 (15:37 -0400)]
mac80211: remove deprecated noise field from ieee80211_rx_status

Also remove associated IEEE80211_HW_NOISE_DBM from ieee80211_hw_flags.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: tell driver about IBSS merge
Johannes Berg [Thu, 29 Apr 2010 19:34:01 +0000 (21:34 +0200)]
mac80211: tell driver about IBSS merge

My previous patch "mac80211: notify driver about
IBSS status" left a problem -- when we merge with
a new BSSID, we never tell the driver that we left
the old one. Fix that.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agolibertas_tf: avoid warning about pr_fmt redefinition
John W. Linville [Wed, 28 Apr 2010 20:12:57 +0000 (16:12 -0400)]
libertas_tf: avoid warning about pr_fmt redefinition

Also includes a minor cleanup regarding quotation of a standard kernel
header file...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agortl8180: fix tx status reporting
John W. Linville [Wed, 28 Apr 2010 23:14:42 +0000 (19:14 -0400)]
rtl8180: fix tx status reporting

When reporting Tx status, indicate that only one rate was used.
Otherwise, the rate is frozen at rate index 0 (i.e. 1Mb/s).

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Cc: stable@kernel.org
14 years agomac80211: notify driver about IBSS status
Johannes Berg [Wed, 28 Apr 2010 15:40:43 +0000 (17:40 +0200)]
mac80211: notify driver about IBSS status

Some drivers (e.g. iwlwifi) need to know and try
to figure it out based on other things, but making
it explicit is definitely better.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix supported rates IE if AP doesn't give us it's rates
Stanislaw Gruszka [Wed, 28 Apr 2010 15:03:15 +0000 (17:03 +0200)]
mac80211: fix supported rates IE if AP doesn't give us it's rates

If AP do not provide us supported rates before assiociation, send
all rates we are supporting instead of empty information element.

v1 -> v2: Add comment.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: do not wip out old supported rates
Stanislaw Gruszka [Wed, 28 Apr 2010 13:17:03 +0000 (15:17 +0200)]
mac80211: do not wip out old supported rates

Use old supported rates, if AP do not provide supported rates
information element in a new managment frame.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwl: cleanup: remove unneeded error handling
Dan Carpenter [Wed, 28 Apr 2010 09:01:15 +0000 (11:01 +0200)]
iwl: cleanup: remove unneeded error handling

This is just a cleanup and doesn't change how the code works.

debugfs_create_dir() and debugfs_create_file() return an error pointer
(-ENODEV) if CONFIG_DEBUG_FS is not enabled, otherwise if an error occurs
they return NULL.  This is how they are implemented and what it says in
the DebugFS documentation.  DebugFS can not be compiled as a module.

As a result, we only need to check for error pointers and particularly
-ENODEV one time to know that DebugFS is enabled.  This patch keeps the
first check for error pointers and removes the rest.

The other reason for this patch, is that it silences some Smatch warnings.
Smatch sees the condition "(result != -ENODEV)" and assumes that it's
possible for "result" to equal -ENODEV.  If it were possible it would lead
to an error pointer dereference.  But since it's not, we can just remove
the check.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: rt2800lib: update rfcsr & bbp init code for SoC devices
Helmut Schaa [Wed, 28 Apr 2010 07:58:59 +0000 (09:58 +0200)]
rt2x00: rt2800lib: update rfcsr & bbp init code for SoC devices

Update the rfcsr and bbp init code for SoC devices to match with the
latest Ralink driver.

To have better control over which values are used for the register
initialization create a new function rt2800_is_305x_soc which checks
for SoC interface type, the correct RT chipset and the correct RF
chipset. This is based on the assumption that all rt305x SoC devices
use a rt2872 and rf3020/rf3021/rf3022.

In case an unknown RF chipset is found on a SoC device with a rt2872
don't treat it as rt305x and just print a message.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: fix a bunch of sparse warnings
Luciano Coelho [Wed, 28 Apr 2010 06:50:02 +0000 (09:50 +0300)]
wl1271: fix a bunch of sparse warnings

A couple of sparse warnings in some rate settings (missing cpu_to_le32) were
fixed.  Changed the conf_sg_settings struct from le to native endianess.  The
values are converted to le when copying them to the acx command instead.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: Rewrite hardware keep-alive handling
Juuso Oikarinen [Wed, 28 Apr 2010 06:50:01 +0000 (09:50 +0300)]
wl1271: Rewrite hardware keep-alive handling

The driver had a join command without keep-alive restart procedures in the
channel changing code. After associated scans, the mac80211 does re-set the
current channel, causing the join to occur. This would stop the hardware
keep alive.

To make the joins safer in this respect, this patch adds a join function that
does the hardware-keep-alive magic along the join. This is now invoked in the
above mentioned scenario, and also other scenarios.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: Configure QOS nullfunc template for U-APSD
Saravanan Dhanabal [Wed, 28 Apr 2010 06:50:00 +0000 (09:50 +0300)]
wl1271: Configure QOS nullfunc template for U-APSD

When U-APSD is enabled, device is not sending power save
state notifications to AP using QOS nullfunc frames.

This patch configures nullfunc templates needed for U-APSD.

Signed-off-by: Saravanan Dhanabal <ext-saravanan.dhanabal@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: Improve command polling
Juuso Oikarinen [Wed, 28 Apr 2010 06:49:59 +0000 (09:49 +0300)]
wl1271: Improve command polling

In testing I noticed that the wl1271 commands fall into two categories. In the
first category are "fast" commands, these mostly take only 0 or 1 polls to
complete, but occasionally upto 50 (giving a 0.5ms execution time.) In the
second category, the command completion takes well more than 0.5ms (from
1.5ms upwards.)

This patch fixes command polling such that it is optimal for the fast commands,
but also allows sleep for the longer ones.

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>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Added get_survey callback in order to get channel noise
Benoit Papillault [Tue, 27 Apr 2010 22:08:24 +0000 (00:08 +0200)]
ath9k: Added get_survey callback in order to get channel noise

Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agortl8180: use cached queue mapping for skb in rtl8180_tx
John W. Linville [Tue, 27 Apr 2010 20:57:38 +0000 (16:57 -0400)]
rtl8180: use cached queue mapping for skb in rtl8180_tx

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agolibertas: fix 8686 firmware loading regression
Dan Williams [Wed, 28 Apr 2010 19:37:46 +0000 (12:37 -0700)]
libertas: fix 8686 firmware loading regression

The 'ready' condition was incorrectly evaluated which sometimes lead to
failures loading the second-stage firmware on 8686 devices.

(This was introduced in "libertas: consolidate SDIO firmware wait code".
-- JWL)

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:28 +0000 (16:09 -0400)]
wl1251: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:27 +0000 (16:09 -0400)]
rt2x00: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
14 years agop54: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:26 +0000 (16:09 -0400)]
p54: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agolibertas_tf: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:25 +0000 (16:09 -0400)]
libertas_tf: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agob43legacy: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:23 +0000 (16:09 -0400)]
b43legacy: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agob43: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:22 +0000 (16:09 -0400)]
b43: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:21 +0000 (16:09 -0400)]
ath9k: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath5k: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:19 +0000 (16:09 -0400)]
ath5k: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoar9170: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:18 +0000 (16:09 -0400)]
ar9170: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: remove usage of deprecated noise value
John W. Linville [Mon, 26 Apr 2010 20:09:16 +0000 (16:09 -0400)]
mwl8k: remove usage of deprecated noise value

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix rts threshold check
Shanyu Zhao [Tue, 27 Apr 2010 18:15:12 +0000 (11:15 -0700)]
mac80211: fix rts threshold check

Currently whenever rts thresold is set, every packet will use RTS
protection no matter its size exceeds the threshold or not. This is
due to a bug in the rts threshold check.
if (len > tx->local->hw.wiphy->rts_threshold) {
txrc.rts = rts = true;
}
Basically it is comparing an int (len) and a u32 (rts_threshold),
and the variable len is assigned as:
len = min_t(int, tx->skb->len + FCS_LEN,
 tx->local->hw.wiphy->frag_threshold);
However, when frag_threshold is "-1", len is always "-1", which is
0xffffffff therefore rts is always set to true.

CC: stable@kernel.org
Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: give virtual interface to hw_scan
Johannes Berg [Tue, 27 Apr 2010 09:59:34 +0000 (11:59 +0200)]
mac80211: give virtual interface to hw_scan

When scanning, it is somewhat important to scan
on the correct virtual interface. All drivers
that currently implement hw_scan only support a
single virtual interface, but that may change
and then we'd want to be ready.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: Remove default dynamic PS timeout value
Juuso Oikarinen [Tue, 27 Apr 2010 09:47:41 +0000 (12:47 +0300)]
cfg80211: Remove default dynamic PS timeout value

Now that the mac80211 is choosing dynamic ps timeouts based on the ps-qos
network latency configuration, configure a default value of -1 as the dynamic
ps timeout in cfg80211. This value allows the mac80211 to determine the value
to be used.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: Determine dynamic PS timeout based on ps-qos network latency
Juuso Oikarinen [Tue, 27 Apr 2010 09:47:40 +0000 (12:47 +0300)]
mac80211: Determine dynamic PS timeout based on ps-qos network latency

Determine the dynamic PS timeout based on the configured ps-qos network
latency. For backwards wext compatibility, allow the dynamic PS timeout
configured by the cfg80211 to overrule the automatically determined value.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Avoid corrupt frames being forwarded to mac80211.
Vivek Natarajan [Tue, 27 Apr 2010 07:35:38 +0000 (13:05 +0530)]
ath9k: Avoid corrupt frames being forwarded to mac80211.

If bit 29 is set, MAC H/W can attempt to decrypt the received aggregate
with WEP or TKIP, eventhough the received frame may be a CRC failed
corrupted frame. If this bit is set, H/W obeys key type in keycache.
If it is not set and if the key type in keycache is neither open nor
AES, H/W forces key type to be open.  But bit 29 should be set to 1
for AsyncFIFO feature to encrypt/decrypt the aggregate with WEP or TKIP.

Cc: stable@kernel.org
Reported-by: Johan Hovold <johan.hovold@lundinova.se>
Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: Ranga Rao Ravuri <ranga.ravuri@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Handle CONF_IDLE during unassociated state to save power.
Vivek Natarajan [Tue, 27 Apr 2010 07:35:37 +0000 (13:05 +0530)]
ath9k_htc: Handle CONF_IDLE during unassociated state to save power.

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: implement ap isolation support
Felix Fietkau [Mon, 26 Apr 2010 23:23:36 +0000 (01:23 +0200)]
mac80211: implement ap isolation support

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: add ap isolation support
Felix Fietkau [Mon, 26 Apr 2010 23:23:35 +0000 (01:23 +0200)]
cfg80211: add ap isolation support

This is used to configure APs to not bridge traffic between connected stations.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMAINTAINERS: add entry for include/linux/iw_handler.h
John W. Linville [Mon, 26 Apr 2010 20:08:57 +0000 (16:08 -0400)]
MAINTAINERS: add entry for include/linux/iw_handler.h

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: Fix TX interrupt mitigation settings
Luis R. Rodriguez [Mon, 26 Apr 2010 19:04:41 +0000 (15:04 -0400)]
ath9k_hw: Fix TX interrupt mitigation settings

TX interrupt mitigation reduces the number of interrupts
by addressing several interrupt actions (AR_IMR_TXOK,
AR_IMR_TXDESC) all in one interrupt so when enabling
it discard setting the other interrupts.

Without this TX interrupt mitigation would actually
increase the number of interrupts two-fold. We still
leave TX interrupt mitigation disabled as it is still
being tested.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: fix noisefloor timeout handling on AR9003
Felix Fietkau [Mon, 26 Apr 2010 19:04:40 +0000 (15:04 -0400)]
ath9k_hw: fix noisefloor timeout handling on AR9003

When the noisefloor calibration times out, do not load -50 into
the registers, since this might cause rx issues. Instead, leave
enough time for the noise floor calibration to complete until
the next check.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: Fix endian bug in an AR9003 EEPROM field
Felix Fietkau [Mon, 26 Apr 2010 19:04:39 +0000 (15:04 -0400)]
ath9k_hw: Fix endian bug in an AR9003 EEPROM field

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: Fix typos in tx rate power level parsing for AR9003
Felix Fietkau [Mon, 26 Apr 2010 19:04:38 +0000 (15:04 -0400)]
ath9k_hw: Fix typos in tx rate power level parsing for AR9003

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: use the configured power limit for AR9003
Felix Fietkau [Mon, 26 Apr 2010 19:04:37 +0000 (15:04 -0400)]
ath9k_hw: use the configured power limit for AR9003

Since the new AR9003 EEPROM code does tune the card for the configured
tx power level, we need to fill in the correct power limits in the TPC
part of the DMA descriptor.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: wake queue after processing edma rx frames
Felix Fietkau [Mon, 26 Apr 2010 19:04:36 +0000 (15:04 -0400)]
ath9k: wake queue after processing edma rx frames

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: fix fast clock handling for 5GHz channels
Felix Fietkau [Mon, 26 Apr 2010 19:04:35 +0000 (15:04 -0400)]
ath9k_hw: fix fast clock handling for 5GHz channels

Combine multiple checks that were supposed to check for the same
conditions, but didn't. Always enable fast PLL clock on AR9280 2.0

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: update EEPROM data structure for AR9280
Felix Fietkau [Mon, 26 Apr 2010 19:04:34 +0000 (15:04 -0400)]
ath9k_hw: update EEPROM data structure for AR9280

Adds read access for the 5 GHz fast clock flag

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: Fix usec to hw clock conversion in 5Ghz for ar9003
Vasanthakumar Thiagarajan [Mon, 26 Apr 2010 19:04:33 +0000 (15:04 -0400)]
ath9k_hw: Fix usec to hw clock conversion in 5Ghz for ar9003

Fast clock operation (44Mhz) is enabled for 5Ghz in ar9003, so
take care of the conversion from usec to hw clock.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: disable TX IQ calibration for AR9003
Luis R. Rodriguez [Mon, 26 Apr 2010 19:04:32 +0000 (15:04 -0400)]
ath9k_hw: disable TX IQ calibration for AR9003

Disable TX IQ calibration, it was prematurely enabled in
previous versions.

Cc: Paul Shaw <Paul.Shaw@Atheros.com>
Cc: Thomas Hammel <Thomas.Hammel@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: fix typo in the AR9003 EEPROM data structure definition
Felix Fietkau [Mon, 26 Apr 2010 19:04:31 +0000 (15:04 -0400)]
ath9k_hw: fix typo in the AR9003 EEPROM data structure definition

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: fix pll clock setting for 5ghz on AR9003
Felix Fietkau [Mon, 26 Apr 2010 19:04:30 +0000 (15:04 -0400)]
ath9k_hw: fix pll clock setting for 5ghz on AR9003

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: update initvals for AR9003
Felix Fietkau [Mon, 26 Apr 2010 19:04:29 +0000 (15:04 -0400)]
ath9k_hw: update initvals for AR9003

This synchs up the initvals to the values used on the
Atheros HAL for AR9003. This specific change adds support
for a new high power module.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix handling of 4-address-mode in ieee80211_change_iface
Felix Fietkau [Mon, 26 Apr 2010 22:26:34 +0000 (00:26 +0200)]
mac80211: fix handling of 4-address-mode in ieee80211_change_iface

A misplaced interface type check bails out too early if the interface
is not in monitor mode. This patch moves it to the right place, so that
it only covers changes to the monitor flags.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Simplify RX IRQ handler
Sujith [Mon, 26 Apr 2010 09:39:42 +0000 (15:09 +0530)]
ath9k_htc: Simplify RX IRQ handler

A bunch of validation and processing in the RX IRQ handler
can be moved to the RX tasklet. The IRQ handler is
already heavy, with the memory allocation for handling
stream mode. Also, a memcpy of 40 bytes for every packet
can be avoided in the handler.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Validate TX Endpoint ID
Sujith [Mon, 26 Apr 2010 09:39:39 +0000 (15:09 +0530)]
ath9k_htc: Validate TX Endpoint ID

Check for the endpoint IDs when processing
TX completions and drop the unsupported EPIDs.

We can add other endpoints (UAPSD,..) when support
is added.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Remove unnecessary powersave restore
Sujith [Mon, 26 Apr 2010 09:39:36 +0000 (15:09 +0530)]
ath9k_htc: Remove unnecessary powersave restore

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agolibertastf: add configurable debug messages
Steve deRosier [Sun, 25 Apr 2010 21:40:46 +0000 (14:40 -0700)]
libertastf: add configurable debug messages

Add the same type of configurable debug messages to libertas_tf as
already exist in the libertas driver.  This has facilitated creation
of a interface specification and will facilitate future development
of this driver.

Signed-off-by: Steve deRosier <steve@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: rt2800lib: Remove redundant check for RT2872
Helmut Schaa [Mon, 26 Apr 2010 11:50:27 +0000 (13:50 +0200)]
rt2x00: rt2800lib: Remove redundant check for RT2872

Remove redundant check for RT2872.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: rt2800lib: Fix rx path on SoC devices
Helmut Schaa [Mon, 26 Apr 2010 11:48:45 +0000 (13:48 +0200)]
rt2x00: rt2800lib: Fix rx path on SoC devices

Restore the rfcsr initialization for RT305x SoC devices which was removed
by "rt2x00: Finish rt3070 support in rt2800 register initialization.".

This fixes the rx path on SoC devices.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: fix typo in rt2800.h
Helmut Schaa [Mon, 26 Apr 2010 08:18:08 +0000 (10:18 +0200)]
rt2x00: fix typo in rt2800.h

Fix a typo in a comment in rt2800.h. Instead of replacing the wrong
hexvalue (0x171c) with the correct one (0x1718) just use the appropriate
readable define.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agossb: Make bus registration failure not be silent
Larry Finger [Fri, 23 Apr 2010 18:17:21 +0000 (13:17 -0500)]
ssb: Make bus registration failure not be silent

In kernel Bugzilla #15825, a case where routine ssb_bus_pcibus_register()
fails silently is reported. The cause for the failure is still being
investigated; however, the diagnosis would be easier if the failure
had been reported.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: rt2800: use tx_power2 in rt2800_config_channel_rf3xxx
Helmut Schaa [Fri, 23 Apr 2010 13:54:43 +0000 (15:54 +0200)]
rt2x00: rt2800: use tx_power2 in rt2800_config_channel_rf3xxx

Get closer to what the ralink driver does by setting the rf register 13
to tx_power2 during channel switch.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: rt2800lib: disable HT40 for now as it causes reception problems
Helmut Schaa [Fri, 23 Apr 2010 13:05:29 +0000 (15:05 +0200)]
rt2x00: rt2800lib: disable HT40 for now as it causes reception problems

Disable HT40 support for now as it causes rx problems with HT40 capable
11n APs (when mac80211 enables HT40, rx is completely disfunctional).

Once the rt2800 HT code is capable of using HT40 we should enable the
flag again.

I only tested this patch with a rt305x SoC device, nevertheless the
patch disables HT40 also on PCI and USB rt2800 devices.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Really fix device hotunplug
Sujith [Fri, 23 Apr 2010 04:58:20 +0000 (10:28 +0530)]
ath9k_htc: Really fix device hotunplug

All commands to the target are disabled when the device
is unplugged, but a normal module unload has to be
differentiated from this case, as we could still receive
data in the RX endpoint. Fix this by checking if the
device is attached or not.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Fix WMI command race
Sujith [Fri, 23 Apr 2010 04:58:19 +0000 (10:28 +0530)]
ath9k_htc: Fix WMI command race

My patch "ath9k_htc: Handle WMI timeouts properly" introduced
a race condition in WMI command processing. The last issued command
should be stored _before_ issuing a WMI command. Not doing this
would result in the WMI event IRQ dropping correct command responses
as invalid.

Fix this race by storing the command id correctly.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Increase WMI timeout value
Sujith [Fri, 23 Apr 2010 04:58:18 +0000 (10:28 +0530)]
ath9k_htc: Increase WMI timeout value

Completion of WMI commands take a longer time
on some platforms. Increase the timeout value
to handle this.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Process command data properly
Sujith [Fri, 23 Apr 2010 04:58:17 +0000 (10:28 +0530)]
ath9k_htc: Process command data properly

When handling the REGIN callback, processing
the incoming data first should be the preferred
mode of operation. Allocation of a new SKB may fail,
in which case, the URB will not be resubmitted.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Use USB reboot
Sujith [Fri, 23 Apr 2010 04:58:16 +0000 (10:28 +0530)]
ath9k_htc: Use USB reboot

So, apparently there is a USB reboot command
that the target accepts. Using this instead of
usb_reset_device() fixes the issue of "descriptor read error"
that pops up on repeated load/unload.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Pass correct private pointer
Sujith [Fri, 23 Apr 2010 04:58:15 +0000 (10:28 +0530)]
ath9k_htc: Pass correct private pointer

In the TX callback, the HTC layer has to pass the
priv pointer that was registered during service initialization.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_hw: Remove pointless ANI deinit
Sujith [Fri, 23 Apr 2010 04:58:14 +0000 (10:28 +0530)]
ath9k_hw: Remove pointless ANI deinit

There is no reason to disable the PHY Error / MIB counters
when the module is being unloaded.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Cancel running timers before disabling HW
Sujith [Fri, 23 Apr 2010 04:58:13 +0000 (10:28 +0530)]
ath9k_htc: Cancel running timers before disabling HW

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Use multiple register writes
Sujith [Fri, 23 Apr 2010 04:58:11 +0000 (10:28 +0530)]
ath9k_htc: Use multiple register writes

This patch fixes a code segment in configpciepowersave()
to make use of multiple register writes.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Handle device unplug properly
Sujith [Fri, 23 Apr 2010 04:58:10 +0000 (10:28 +0530)]
ath9k_htc: Handle device unplug properly

When the USB device has been unplugged, there is
no point in trying to send commands to the target.
Fix this by denying all WMI commands in such a case.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k_htc: Simplify TX URB management
Sujith [Fri, 23 Apr 2010 04:58:09 +0000 (10:28 +0530)]
ath9k_htc: Simplify TX URB management

This patch simplifies URB management for transmission,
by removing the 'FLUSH' variable (which is not needed,
since we can determine if the URB has been killed by
looking at the URB status), and also handling the STOP
case properly.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agop54pci: fix regression from prevent stuck rx-ring on slow system
Hans de Goede [Thu, 22 Apr 2010 17:52:43 +0000 (19:52 +0200)]
p54pci: fix regression from prevent stuck rx-ring on slow system

This patch fixes a recently introduced use-after-free regression
from "p54pci: prevent stuck rx-ring on slow system".

Hans de Goede reported a use-after-free regression:
>BUG: unable to handle kernel paging request at 6b6b6b6b
>IP: [<e122284a>] p54p_check_tx_ring+0x84/0xb1 [p54pci]
>*pde = 00000000
>Oops: 0000 [#1] SMP
>EIP: 0060:[<e122284a>] EFLAGS: 00010286 CPU: 0
>EIP is at p54p_check_tx_ring+0x84/0xb1 [p54pci]
>EAX: 6b6b6b6b EBX: df10b170 ECX: 00000003 EDX: 00000001
>ESI: dc471500 EDI: d8acaeb0 EBP: c098be9c ESP: c098be84
> DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
>Process swapper (pid: 0, ti=c098a000 task=c09ccfe0 task.ti=c098a000)
>Call Trace:
> [<e1222b02>] ? p54p_tasklet+0xaa/0xb5 [p54pci]
> [<c0440568>] ? tasklet_action+0x78/0xcb
> [<c0440ed3>] ? __do_softirq+0xbc/0x173

Quote from comment #17:
"The problem is the innocent looking moving of the tx processing to
 after the rx processing in the tasklet. Quoting from the changelog:
  This patch does it the same way, except that it also prioritize
  rx data processing, simply because tx routines *can* wait.

 This is causing an issue with us referencing already freed memory,
 because some skb's we transmit, we immediately receive back, such
 as those for reading the eeprom (*) and getting stats.

 What can happen because of the moving of the tx processing to after
 the rx processing is that when the tasklet first runs after doing a
 special skb tx (such as eeprom) we've already received the answer
 to it.

 Then the rx processing ends up calling p54_find_and_unlink_skb to
 find the matching tx skb for the just received special rx skb and
 frees the tx skb.

 Then after the processing of the rx skb answer, and thus freeing
 the tx skb, we go process the completed tx ring entires, and then
 dereference the free-ed skb, to see if it should free free-ed by
 p54p_check_tx_ring()."

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=583623
Bug-Identified-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agop54pci: fix bugs in p54p_check_tx_ring
Hans de Goede [Thu, 22 Apr 2010 17:52:16 +0000 (19:52 +0200)]
p54pci: fix bugs in p54p_check_tx_ring

Hans de Goede identified a bug in p54p_check_tx_ring:

there are two ring indices. 1 => tx data and 3 => tx management.
But the old code had a constant "1" and this resulted in spurious
dma unmapping failures.

Cc: stable@kernel.org
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=583623
Bug-Identified-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>