9 years agoadm821: remove get_tx_stats() mac80211 op
Kalle Valo [Sun, 7 Feb 2010 08:20:44 +0000]
adm821: remove get_tx_stats() mac80211 op

get_tx_stats() will be removed from mac80211.

Compile-tested only.

Cc: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: Kalle Valo <kalle.valo@iki.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: fix keycache leak in split tkip case
Ming Lei [Sat, 6 Feb 2010 14:38:23 +0000]
ath9k: fix keycache leak in split tkip case

If split tkip key is used, ath_delete_key should delete
rx key and rx mic key. This patch fixes the leak of hw
keycache in the case.

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix deauth race
Johannes Berg [Sat, 6 Feb 2010 14:20:13 +0000]
mac80211: fix deauth race

When userspace requests a deauth while the
authentication work is pending in the auth
(not probe) state, we do not properly abort
the work and then things get confused.

Fix that and also improve the checks here
to include the correct virtual interface,
just in case two virtual interfaces would
ever try to connect to the same BSS.

Also fix a bug -- need to use list_del_rcu
instead of just list_del to free a work
item.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: Send broadcast probe request only when asked to
Samuel Ortiz [Fri, 5 Feb 2010 19:33:48 +0000]
iwlwifi: Send broadcast probe request only when asked to

When running directed active scans we currently end up sending both the SSID
probe requests and an additional broadcast one.
This is due to the fact that we always leave the probe request template SSID IE
length to 0. Instead we should set it to the first SSID to scan, and fill the
direct_scan array with the remaining SSIDs to scan for. This way we only send
what we've been asked to: a broadcast probe request when no directed scan is
requested, and directed probe requests otherwise.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: Add chain_noise support for 6050
Ben Cahill [Fri, 5 Feb 2010 19:33:47 +0000]
iwlwifi: Add chain_noise support for 6050

Existing iwl6050_ops->iwl6050_hcmd_utils structure had no pointers to chain
noise functions (gain_computation and chain_noise_reset).  As it turns out,
by adding chain_noise_scale (see related patch), there is no need for separate
chain noise function, so simply use iwl6000_ops->iwl5000_hcmd_utils, and
remove those for 6050.

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: Add chain noise scaling factor
Ben Cahill [Fri, 5 Feb 2010 19:33:46 +0000]
iwlwifi: Add chain noise scaling factor

6x50 device requires a different scaling factor for Rx gain values sent to
device via PHY_CALIBRATION_CMD (CHAIN_NOISE_GAIN_CMD).  Rather than create
a new iwlXXXX_gain_computation() function, add new chain_noise_scale member
to struct iwl_cfg, and keep using iwl5000_gain_computation().

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix bss_conf.dtim_period
Johannes Berg [Fri, 5 Feb 2010 10:45:06 +0000]
mac80211: fix bss_conf.dtim_period

In AP mode, the only mode where the parameter
is supposed to be valid, we never assign it!
Fix that to allow drivers to avoid parsing
the TIM IE for the value.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: Added a new debugfs file for reading channel_type
Benoit Papillault [Thu, 4 Feb 2010 21:00:20 +0000]
mac80211: Added a new debugfs file for reading channel_type

This file helps debugging HT channels since it displays if we are on
ht20 or ht40+/ht40-

Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agolibertas: don't retry commands
Holger Schurig [Thu, 4 Feb 2010 13:37:45 +0000]
libertas: don't retry commands

Retrying commands seldomly works, most often the firmware is in a
weird state anyway and needs the device to reset. So it's better
to report the broken state back to user-space.

Also rename command_timer_fn() into lbs_cmd_timeout_handler(),
which better reflect it's usage.

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agowl1251: fix txop unit
Kalle Valo [Thu, 4 Feb 2010 13:33:25 +0000]
wl1251: fix txop unit

mac80211 uses unit units of 32 usec with txop but wl1251_acx_ac_cfg()
expects it to be usecs. This fortunately didn't cause any severe problems,
only that firmware was using incorrect WMM settings.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: handle allocation fail in samples generation
Rafał Miłecki [Thu, 4 Feb 2010 12:11:54 +0000]
b43: N-PHY: handle allocation fail in samples generation

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: load generated samples
Rafał Miłecki [Thu, 4 Feb 2010 12:08:08 +0000]
b43: N-PHY: load generated samples

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: partly implement SPUR workaround
Rafał Miłecki [Thu, 4 Feb 2010 11:23:12 +0000]
b43: N-PHY: partly implement SPUR workaround

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: save calibration for further restore
Rafał Miłecki [Thu, 4 Feb 2010 11:23:11 +0000]
b43: N-PHY: save calibration for further restore

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: prepare code for reapplying TX cal coeffs
Rafał Miłecki [Thu, 4 Feb 2010 11:23:10 +0000]
b43: N-PHY: prepare code for reapplying TX cal coeffs

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: implement overriding RF control intc
Rafał Miłecki [Thu, 4 Feb 2010 11:23:08 +0000]
b43: N-PHY: implement overriding RF control intc

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agolibertas/if_spi: needs linux/semaphore.h
Randy Dunlap [Wed, 3 Feb 2010 23:31:07 +0000]
libertas/if_spi: needs linux/semaphore.h

libertas/if_spi.c needs to #include linux/semaphore.h to fix build errors:

drivers/net/wireless/libertas/if_spi.c:59: error: field 'spi_ready' has incomplete type
drivers/net/wireless/libertas/if_spi.c:60: error: field 'spi_thread_terminated' has incomplete type
drivers/net/wireless/libertas/if_spi.c:785: error: implicit declaration of function 'down_interruptible'
drivers/net/wireless/libertas/if_spi.c:787: error: implicit declaration of function 'up'
drivers/net/wireless/libertas/if_spi.c:834: error: implicit declaration of function 'down'
drivers/net/wireless/libertas/if_spi.c:943: error: implicit declaration of function 'sema_init'

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agossb: fix interrupt assignment
Jochen Friedrich [Wed, 3 Feb 2010 20:28:11 +0000]
ssb: fix interrupt assignment

Explicitely enable shared interrupt 2 for any core that didn't get a dedicated IRQ
anymore (fallthrough case) and for EXTIF cores to make gpio interrupts work.
Also remove a bogus comment.

Signed-off-by: Jochen Friedrich <jochen@scram.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43/b43legacy: Wake queues in wireless_core_start
Larry Finger [Wed, 3 Feb 2010 19:33:44 +0000]
b43/b43legacy: Wake queues in wireless_core_start

If b43 or b43legacy are deauthenticated or disconnected, there is a
possibility that a reconnection is tried with the queues stopped in
mac80211. To prevent this, start the queues before setting
STAT_INITIALIZED.

In b43, a similar change has been in place (twice) in the
wireless_core_init() routine. Remove the duplicate and add similar
code to b43legacy.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@kernel.org> [2.6.32]
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: tear down all agg queues when restart/reconfig hw
Wey-Yi Guy [Wed, 3 Feb 2010 17:28:55 +0000]
mac80211: tear down all agg queues when restart/reconfig hw

When there is a need to restart/reconfig hw, tear down all the
aggregation queues and let the mac80211 and driver get in-sync to have
the opportunity to re-establish the aggregation queues again.

Need to wait until driver re-establish all the station information before tear
down the aggregation queues, driver(at least iwlwifi driver) will reject the
stop aggregation queue request if station is not ready. But also need to make
sure the aggregation queues are tear down before waking up the queues, so
mac80211 will not sending frames with aggregation bit set.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: Enable TIM timer interrupt only when needed.
Senthil Balasubramanian [Wed, 3 Feb 2010 17:21:13 +0000]
ath9k: Enable TIM timer interrupt only when needed.

The TIM timer interrupt is enabled even before the ACK of nullqos
is received which is unnecessary.

Also clean up the CONF_PS part of config callback properly for
better readability.

Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: configure the beacon only if the STA is associated
Senthil Balasubramanian [Wed, 3 Feb 2010 17:20:18 +0000]
ath9k: configure the beacon only if the STA is associated

beacons configuration SHOULD be done only if the STA is associated.

Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: allow station add/remove to sleep
Johannes Berg [Wed, 3 Feb 2010 12:59:58 +0000]
mac80211: allow station add/remove to sleep

Many drivers would like to sleep during station
addition and removal, and currently have a high
complexity there from not being able to.

This introduces two new callbacks sta_add() and
sta_remove() that drivers can implement instead
of using sta_notify() and that can sleep, and
the new sta_add() callback is also allowed to
fail.

The reason we didn't do this previously is that
the IBSS code wants to insert stations from the
RX path, which is a tasklet, so cannot sleep.
This patch will keep the station allocation in
that path, but moves adding the station to the
driver out of line. Since the addition can now
fail, we can have IBSS peer structs the driver
rejected -- in that case we still talk to the
station but never tell the driver about it in
the control.sta pointer. If there will ever be
a driver that has a low limit on the number of
stations and that cannot talk to any stations
that are not known to it, we need to do come up
with a new strategy of handling larger IBSSs,
maybe quicker expiry or rejecting peers.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: don't probe if we have probe response
Johannes Berg [Wed, 3 Feb 2010 12:57:46 +0000]
mac80211: don't probe if we have probe response

We can now easily determine whether we already
have probe response information for the BSS we
are asked to connect to, in which case there's
little point in probing the BSS again.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agowireless: update radiotap parser
Johannes Berg [Wed, 3 Feb 2010 09:24:30 +0000]
wireless: update radiotap parser

Upstream radiotap has adopted the namespace
proposal David Young made and I then took care
of, for which I had adapted the radiotap parser
as a library outside the kernel. This brings
the in-kernel parser up to speed.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211_hwsim: add fake hw scan handler
Johannes Berg [Wed, 3 Feb 2010 09:47:55 +0000]
mac80211_hwsim: add fake hw scan handler

For debugging hardware scan trigger/complete
functionality, it was useful to have code in
hwsim that pretends to do a hardware scan.

This code could be extended to actually do the
scan, but for now it was sufficient for me to
only pretend. Since hwsim was written to ease
debugging, it only makes sense to add it to it
permanently.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
John W. Linville [Mon, 8 Feb 2010 21:38:38 +0000]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
net/mac80211/scan.c

9 years agomac80211: fix deferred hardware scan requests
Johannes Berg [Wed, 3 Feb 2010 09:22:31 +0000]
mac80211: fix deferred hardware scan requests

Reinette found the reason for the warnings that
happened occasionally when a hw-offloaded scan
finished; her description of the problem:

  mac80211 will defer the handling of scan requests if it is
  busy with management work at the time. The scan requests
  are deferred and run after the work has completed. When
  this occurs there are currently two problems.

  * The scan request for hardware scan is not fully populated
    with the band and channels to scan not initialized.

  * When the scan is queued the state is not correctly updated
    to reflect that a scan is in progress. The problem here is
    that when the driver completes the scan and calls
    ieee80211_scan_completed() a warning will be triggered
    since mac80211 was not aware that a scan was in progress.

The reason is that the queued scan work will start
the hw scan right away when the hw_scan_req struct
has already been allocated. However, in the first
pass it will not have been filled, which happens
at the same time as setting the bits. To fix this,
simply move the allocation after the pending work
test as well, so that the first iteration of the
scan work will call __ieee80211_start_scan() even
in the hardware scan case.

Bug-identified-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: Fix to set correct ht configuration
Wey-Yi Guy [Fri, 5 Feb 2010 19:40:00 +0000]
iwlwifi: Fix to set correct ht configuration

iwl_set_rxon_ht() only get called in iwl_post_associate(); which cause
possible incorrect ht configuration. Adding the call in iwl_mac_config() if
IEEE80211_CONF_CHANGE_CHANNEL flag is set to re-configure and send rxon
command.

Fixes
http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2146

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
CC: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: Fix probe request filtering in IBSS mode
Benoit Papillault [Fri, 5 Feb 2010 00:21:03 +0000]
mac80211: Fix probe request filtering in IBSS mode

We only reply to probe request if either the requested SSID is the
broadcast SSID or if the requested SSID matches our own SSID. This
latter case was not properly handled since we were replying to different
SSID with the same length as our own SSID.

Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agossb: Fix CONFIG_SSB_SDIOHOST typo
Michael Buesch [Wed, 3 Feb 2010 17:24:35 +0000]
ssb: Fix CONFIG_SSB_SDIOHOST typo

This fixes a CONFIG_SSB_SDIOHOST typo.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Reported-by: Christoph Egger <siccegge@stud.informatik.uni-erlangen.de>
Tested-By: Albert Herranz <albert_herranz@yahoo.es>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: Fix throughput regression
Larry Finger [Tue, 2 Feb 2010 16:08:19 +0000]
b43: Fix throughput regression

Commit c7ab5ef9bcd281135c21b4732c9be779585181be entitled "b43: implement
short slot and basic rate handling" reduced the transmit throughput for
my BCM4311 device from 18 Mb/s to 0.7 Mb/s. The basic rate handling
portion is OK, the problem is in the short slot handling.

Prior to this change, the short slot enable/disable routines were never
called. Experimentation showed that the critical part was changing the
value at offset 0x0010 in the shared memory. This is supposed to contain
the 802.11 Slot Time in usec, but if it is changed from its initial value
of zero, performance is destroyed. On the other hand, changing the value
in the MMIO register corresponding to the Interframe Slot Time increased
performance from 18 to 22 Mb/s. A BCM4306/3 also shows dramatic
improvement of the transmit rate from 5.3 to 19.0 Mb/s.

Other changes in the patch include removal of the magic number for the
MMIO register, and allowing the slot time to be set for any PHY operating
in the 2.4 GHz band. Previously, the routine was executed only for G PHYs.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@kernel.org> [Any stable version back through 2.6.28]
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: add support for 802.11n bonded out AR2427
Luis R. Rodriguez [Tue, 2 Feb 2010 16:58:33 +0000]
ath9k: add support for 802.11n bonded out AR2427

Some single chip family devices are sold in the market with
802.11n bonded out, these have no hardware capability for
802.11n but ath9k can still support them. These are called
AR2427.

Cc: stable@kernel.org
Reported-by: Rolf Leggewie <bugzilla.kernel.org@rolf.leggewie.biz>
Tested-by: Bernhard Reiter <ockham@raz.or.at>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoairo: fix setting zero length WEP key
Stanislaw Gruszka [Tue, 2 Feb 2010 14:34:50 +0000]
airo: fix setting zero length WEP key

Patch prevents call set_wep_key() with zero key length. That fix long
standing regression since commit c0380693520b1a1e4f756799a0edc379378b462a
"airo: clean up WEP key operations". Additionally print call trace when
someone will try to use improper parameters, and remove key.len = 0
assignment, because it is in not possible code path.

Reported-by: Chris Siebenmann <cks-rhbugzilla@cs.toronto.edu>
Bisected-by: Chris Siebenmann <cks-rhbugzilla@cs.toronto.edu>
Tested-by: Chris Siebenmann <cks@cs.toronto.edu>
Cc: Dan Williams <dcbw@redhat.com>
Cc: <stable@kernel.org>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agolib80211: Introduce TKIP_HDR_LEN define for code clarity
Andriy Tkachuk [Tue, 2 Feb 2010 14:33:53 +0000]
lib80211: Introduce TKIP_HDR_LEN define for code clarity

Introduce TKIP_HDR_LEN define for code clarity (in the same way as
CCMP_HDR_LEN).

Also odd len variable (not used) dropped from lib80211_tkip_hdr().

Signed-off-by: Andriy V. Tkachuk <andrit@ukr.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agolib80211: Cosmetics - make room for MIC/CRC near the actual calculation
Andriy Tkachuk [Tue, 2 Feb 2010 13:58:53 +0000]
lib80211: Cosmetics - make room for MIC/CRC near the actual calculation

Signed-off-by: Andriy V. Tkachuk <andrit@ukr.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: fix access to freed data on unload
Pavel Roskin [Sun, 31 Jan 2010 02:37:24 +0000]
ath9k: fix access to freed data on unload

Calling ath_bus_cleanup() after ieee80211_free_hw() resulted in access
to common->bus_ops, which is already freed as part of the device data.

Remove the cleanup field in struct ath_bus_ops, as it was never used
properly.  Remove ath_bus_cleanup().  Merge cleanup functions in place
of the ath_bus_cleanup() calls.  Take care not to use any device data
after ieee80211_free_hw().

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agops3_gelic_wireless: Remove superfluous debug info
Hamish Guthrie [Mon, 1 Feb 2010 16:42:38 +0000]
ps3_gelic_wireless: Remove superfluous debug info

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: Don't call rate control when HW handles it
Vasanthakumar [Mon, 1 Feb 2010 13:19:07 +0000]
mac80211: Don't call rate control when HW handles it

Rate control should not be called to update the tx status
when HW does the RC.

Signed-off-by: Vasanthakumar <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix sta lookup with AP VLAN interfaces and injected frames
Felix Fietkau [Sun, 31 Jan 2010 22:25:24 +0000]
mac80211: fix sta lookup with AP VLAN interfaces and injected frames

When injecting frames, mac80211 currently looks for the first AP
interface that matches the source address of the injected frame.
This breaks when such a frame is directed at a STA that has been moved
to a VLAN. This patch fixes it by using sta_info_get_bss instead of
sta_info_get, which also finds stations belonging to a VLAN interface
of the same BSS as the AP interface.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix monitor mode tx radiotap header handling
Felix Fietkau [Sun, 31 Jan 2010 20:56:25 +0000]
mac80211: fix monitor mode tx radiotap header handling

When an injected frame gets buffered for a powersave STA or filtered
and retransmitted, mac80211 attempts to parse the radiotap header
again, which doesn't work because it's gone at that point.
This patch adds a new flag for checking the availability of a radiotap
header, so that it only attempts to parse it once, reusing the tx info
on the next call to ieee80211_tx().
This fixes severe issues with rekeying in AP mode.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix sta lookup for received action frames on an AP VLAN
Felix Fietkau [Sun, 31 Jan 2010 20:50:12 +0000]
mac80211: fix sta lookup for received action frames on an AP VLAN

When looking for a matching interface, __ieee80211_rx_handle_packet
loops over all active interfaces, looking for matching stations.
Because AP VLAN interfaces are not processed as part of this loop, it
needs to use sta_info_get_bss instead of sta_info_get in order to find
a STA that has been moved to a VLAN.
This fixes issues with aggregation setup/teardown.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: reduce stack usage in sta_agg_status_read()
Pavel Roskin [Sun, 31 Jan 2010 00:55:27 +0000]
mac80211: reduce stack usage in sta_agg_status_read()

Use a more compact and readable format for "agg_status" to reduce the
stack frame to less than 1024 bytes.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: reduce stack usage in sta_ht_capa_read()
Pavel Roskin [Sun, 31 Jan 2010 00:55:09 +0000]
mac80211: reduce stack usage in sta_ht_capa_read()

The maximal size of the "ht_capa" file is 430 bytes.  In most cases,
it's much shorter.  Use a 512 byte long buffer.  1024 bytes is too much
and causes a warning with CONFIG_FRAME_WARN=1024.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: implement setting RF sequence
Rafał Miłecki [Sat, 30 Jan 2010 19:18:07 +0000]
b43: N-PHY: implement setting RF sequence

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: add TX radio setup for newer PHYs
Rafał Miłecki [Sat, 30 Jan 2010 19:18:06 +0000]
b43: N-PHY: add TX radio setup for newer PHYs

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: fix Cal TX IQ LO for newer PHYs
Rafał Miłecki [Sat, 30 Jan 2010 19:18:05 +0000]
b43: N-PHY: fix Cal TX IQ LO for newer PHYs

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: add RSSI selection for newer PHYs
Rafał Miłecki [Sat, 30 Jan 2010 19:18:04 +0000]
b43: N-PHY: add RSSI selection for newer PHYs

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: split RSSI selection into two per-PHY-revision functions
Rafał Miłecki [Sat, 30 Jan 2010 19:18:03 +0000]
b43: N-PHY: split RSSI selection into two per-PHY-revision functions

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agocfg80211: add regulatory hint disconnect support
Luis R. Rodriguez [Sat, 30 Jan 2010 00:58:57 +0000]
cfg80211: add regulatory hint disconnect support

This adds a new regulatory hint to be used when we know all
devices have been disconnected and idle. This can happen
when we suspend, for instance. When we disconnect we can
no longer assume the same regulatory rules learned from
a country IE or beacon hints are applicable so restore
regulatory settings to an initial state.

Since driver hints are cached on the wiphy that called
the hint, those hints are not reproduced onto cfg80211
as the wiphy will respect its own wiphy->regd regardless.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agocfg80211: avoid flushing the global workqueue for core reg hints
Luis R. Rodriguez [Sat, 30 Jan 2010 00:58:56 +0000]
cfg80211: avoid flushing the global workqueue for core reg hints

When cfg80211 starts it will send a core regulatory hint. This is
sent to the global workqueue but we force processing of it by
flushing the global workqueue. The flushing was done since
cfg80211 needs last_request to always be populated.

Avoid flushing the global workqueue by processing the work
required immediately instead of putting it into a linked
list and processing it after the flush.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: add workarounds for gain control
Rafał Miłecki [Fri, 29 Jan 2010 23:12:20 +0000]
b43: N-PHY: add workarounds for gain control

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: update general workarounds
Rafał Miłecki [Fri, 29 Jan 2010 23:12:19 +0000]
b43: N-PHY: update general workarounds

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: allocate string buffer in read_file_dma() by kmalloc()
Pavel Roskin [Fri, 29 Jan 2010 22:22:26 +0000]
ath9k: allocate string buffer in read_file_dma() by kmalloc()

Using stack for that causes warnings with CONFIG_FRAME_WARN=1024

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath: make gcc check format arguments of ath_print(), fix all misuses
Pavel Roskin [Fri, 29 Jan 2010 22:22:12 +0000]
ath: make gcc check format arguments of ath_print(), fix all misuses

Numeric channel is hard to get, so it won't be printed.  Replace Mhz
with MHz on the affected lines and add commas as needed.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agops3_gelic_wireless: fix format warning
John W. Linville [Mon, 1 Feb 2010 14:55:56 +0000]
ps3_gelic_wireless: fix format warning

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: iwl_power_update_mode always hold mutex
Reinette Chatre [Thu, 21 Jan 2010 19:52:28 +0000]
iwlwifi: iwl_power_update_mode always hold mutex

iwl_power_update_mode expects to be called with mutex held, for example to
protect priv->vif. Only one caller currently does not do this, fix this.
Also, add a comment to iwl_power_update_mode to indicate this requirement.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: fix typo in IWL_CCK_RATES_MASK
Johannes Berg [Thu, 21 Jan 2010 19:47:59 +0000]
iwlwifi: fix typo in IWL_CCK_RATES_MASK

Due to a typo, the variable contains OFDM
rates as well. The only user doesn't care,
so this change doesn't really do anything
but fix up my confusion.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>

9 years agoiwlwifi: remove unused work structs
Johannes Berg [Thu, 21 Jan 2010 14:08:19 +0000]
iwlwifi: remove unused work structs

auth_work, calibrated_work, update_link_led
and report_work are never used, so remove them.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: remove bg_up work
Johannes Berg [Thu, 21 Jan 2010 14:07:17 +0000]
iwlwifi: remove bg_up work

There's no need to queue a work struct from
within a work struct, just move the code to
execute directly.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlagn: simplify ucode loading
Johannes Berg [Thu, 21 Jan 2010 13:28:40 +0000]
iwlagn: simplify ucode loading

Move the waiting into iwl5000_load_section instead
of duplicating it in the caller.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: no need to test iw_mode in power saving
Johannes Berg [Thu, 21 Jan 2010 13:24:04 +0000]
iwlwifi: no need to test iw_mode in power saving

mac80211 will only enable powersaving for station mode.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: update sensitivity calibration data for 1000 series
Wey-Yi Guy [Wed, 20 Jan 2010 20:22:54 +0000]
iwlwifi: update sensitivity calibration data for 1000 series

Update sensitivity range values for 1000 series

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: update sensitivity calibration data for 5x00 series
Wey-Yi Guy [Wed, 20 Jan 2010 20:22:53 +0000]
iwlwifi: update sensitivity calibration data for 5x00 series

Update sensitivity range values for 5x00 series

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: update sensitivity calibration data for 6x00 series
Wey-Yi Guy [Wed, 20 Jan 2010 20:22:52 +0000]
iwlwifi: update sensitivity calibration data for 6x00 series

Update sensitivity range values for 6000 & 6x50 series

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: fix locking in iwl_mac_add_interface
Johannes Berg [Wed, 20 Jan 2010 19:21:06 +0000]
iwlwifi: fix locking in iwl_mac_add_interface

The corresponding iwl_mac_remove_interface only
acquires the mutex, leading me to believe that
the spinlock is not necessary. However, this
doesn't actually acquire the mutex around the
vif pointer check and assignment, fix that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: sysassert identifier change
Wey-Yi Guy [Wed, 20 Jan 2010 00:51:50 +0000]
iwlwifi: sysassert identifier change

Change in uCode to include a unique identifier as part of sysassert,
in order to tell the difference, add the "ADVANCED SYSASSERT" description
when dump nic error to indicate the difference.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoiwlwifi: optimize power saving
Daniel Halperin [Tue, 19 Jan 2010 18:22:19 +0000]
iwlwifi: optimize power saving

In hostap AP mode, every time the client sends the AP
a packet the STA_NOTIFY_AWAKE code is sent from mac80211.
This results in a command being sent to the uCode even if
the client was not asleep.

The following simple patch has fixed the issue for me without any
degradation that I can find.

Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

9 years agoath9k: Handle full sleep in ps_restore.
Vivek Natarajan [Fri, 29 Jan 2010 11:26:51 +0000]
ath9k: Handle full sleep in ps_restore.

IDLE PS (Full Sleep) doesn't work when ifconfig up
is done during Idle unassociated state.
Fix this by restoring FULL SLEEP in ps_restore if CONF_IDLE
is set.

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agops3_gelic_wireless: fix directed ssid scan
Hamish Guthrie [Thu, 28 Jan 2010 11:54:10 +0000]
ps3_gelic_wireless: fix directed ssid scan

If the association worker requests a directed ssid scan and a bss list
already exists, the directed scan is not done. This patch corrects this
and cleans up a few typos and debug messages.

Signed-off-by: Hamish Guthrie <hamish.guthrie@sonycom.com>
Acked-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agops3_gelic_wireless: Remove PS3 gelic legacy wpa support
Hamish Guthrie [Thu, 28 Jan 2010 11:54:09 +0000]
ps3_gelic_wireless: Remove PS3 gelic legacy wpa support

The current PS3 gelic wireless driver has support for wireless
extensions. The original PS3 gelic wireless driver exposed a
dedicated API for a dedicated wpa_supplicant driver. This old
API could be enabled with CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE,
however, as this is not being used by any distros, and it is being
removed from the driver and from wpa_supplicant.

Signed-off-by: Hamish Guthrie <hamish.guthrie@sonycom.com>
Acked-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agocfg80211: fix wext-compat for setting rate to 'auto'
John W. Linville [Wed, 27 Jan 2010 14:44:48 +0000]
cfg80211: fix wext-compat for setting rate to 'auto'

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agortl8187: Add callback for get_tsf
Larry Finger [Tue, 26 Jan 2010 23:45:28 +0000]
rtl8187: Add callback for get_tsf

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N PHY: Fix compilation after removal of typdef b43_c32
Larry Finger [Tue, 26 Jan 2010 22:42:02 +0000]
b43: N PHY: Fix compilation after removal of typdef b43_c32

In the conversion between typedef and struct, two places that needed a "struct"
were missed.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agortl8180: implement get_tsf op for mac80211
John W. Linville [Tue, 26 Jan 2010 21:22:20 +0000]
rtl8180: implement get_tsf op for mac80211

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agolibertas: add comment re: v10 firmware key handling
John W. Linville [Wed, 27 Jan 2010 19:23:17 +0000]
libertas: add comment re: v10 firmware key handling

Comment text suggested by Dan Williams <dcbw@redhat.com> in
<1263952092.4481.2.camel@localhost.localdomain>.

Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath5k: adding LED support for AR5BXB63 cards
Luca Verdesca [Tue, 22 Dec 2009 17:10:01 +0000]
ath5k: adding LED support for AR5BXB63 cards

With following patch, LED should now work with LiteOn AR5BXB63 mini
pci-e cards.

(Broken patch fixed-up by me...let's hope I did it right! -- JWL)

Signed-off-by: Luca Verdesca <magooz@salug.it>
Acked-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: wait for beacon before enabling powersave
Johannes Berg [Tue, 26 Jan 2010 13:19:52 +0000]
mac80211: wait for beacon before enabling powersave

Because DTIM information is required for powersave
but is only conveyed in beacons, wait for a beacon
before enabling powersave, and change the way the
information is conveyed to the driver accordingly.

mwl8k doesn't currently seem to implement PS but
requires the DTIM period in a different way; after
talking to Lennert we agreed to just have mwl8k do
the parsing itself in the finalize_join work.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agocfg80211: export cfg80211_find_ie
Johannes Berg [Tue, 26 Jan 2010 13:15:46 +0000]
cfg80211: export cfg80211_find_ie

This new function (previously a static function
called just "find_ie" can be used to find a
specific IE in a buffer of IEs.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix NULL pointer dereference when ftrace is enabled
Zhu Yi [Tue, 26 Jan 2010 07:58:57 +0000]
mac80211: fix NULL pointer dereference when ftrace is enabled

I got below kernel oops when I try to bring down the network interface if
ftrace is enabled. The root cause is drv_ampdu_action() is passed with a
NULL ssn pointer in the BA session tear down case. We need to check and
avoid dereferencing it in trace entry assignment.

BUG: unable to handle kernel NULL pointer dereference
Modules linked in: at (null)
IP: [<f98fe02a>] ftrace_raw_event_drv_ampdu_action+0x10a/0x160 [mac80211]
*pde = 00000000
Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[...]
Call Trace:
 [<f98fdf20>] ? ftrace_raw_event_drv_ampdu_action+0x0/0x160 [mac80211]
 [<f98dac4c>] ? __ieee80211_stop_rx_ba_session+0xfc/0x220 [mac80211]
 [<f98d97fb>] ? ieee80211_sta_tear_down_BA_sessions+0x3b/0x50 [mac80211]
 [<f98dc6f6>] ? ieee80211_set_disassoc+0xe6/0x230 [mac80211]
 [<f98dc6ac>] ? ieee80211_set_disassoc+0x9c/0x230 [mac80211]
 [<f98dcbb8>] ? ieee80211_mgd_deauth+0x158/0x170 [mac80211]
 [<f98e4bdb>] ? ieee80211_deauth+0x1b/0x20 [mac80211]
 [<f8987f49>] ? __cfg80211_mlme_deauth+0xe9/0x120 [cfg80211]
 [<f898b870>] ? __cfg80211_disconnect+0x170/0x1d0 [cfg80211]

Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: stable@kernel.org
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fill jiffies/vif on filtered frames
Johannes Berg [Mon, 25 Jan 2010 18:07:39 +0000]
mac80211: fill jiffies/vif on filtered frames

Filtered frames not only need their control information
cleared to avoid wrong checks, but also need to have
jiffies and vif assigned so they can be processed or
expired.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: use cordic to generate samples
Rafał Miłecki [Mon, 25 Jan 2010 18:00:01 +0000]
b43: N-PHY: use cordic to generate samples

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: update cordic code to match current specs
Rafał Miłecki [Mon, 25 Jan 2010 18:00:00 +0000]
b43: update cordic code to match current specs

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: make cordic common (LP-PHY and N-PHY need it)
Rafał Miłecki [Mon, 25 Jan 2010 17:59:59 +0000]
b43: make cordic common (LP-PHY and N-PHY need it)

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: N-PHY: fix one bit off in parsing RF Ctrl Override arguments
Rafał Miłecki [Mon, 25 Jan 2010 17:59:58 +0000]
b43: N-PHY: fix one bit off in parsing RF Ctrl Override arguments

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: track work started through callbacks
Johannes Berg [Mon, 25 Jan 2010 12:36:36 +0000]
mac80211: track work started through callbacks

Currently, the remain_on_channel work callback needs
to track in its own data structure whether the work
was just started or not. By reordering some code this
becomes unnecessary, the generic wk->started variable
can still be 'false' on the first invocation and only
be 'true' on actual timeout invocations, so that the
extra variable can be removed.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix sw crypto
Johannes Berg [Mon, 25 Jan 2010 10:36:16 +0000]
mac80211: fix sw crypto

What a stupid mistake. In

    commit 813d76694043d00b59475baa1fbfaf54a2eb7fad
    Author: Johannes Berg <johannes@sipsolutions.net>
    Date:   Sun Jan 17 01:47:58 2010 +0100

        mac80211: move control.hw_key assignment

I inserted code testing the wrong flags field,
which means that the test is almost always true
(it's really testing for the peer's WMM support)
and thus the later parts of the stack assume hw
crypto will be done even if that's not true.

Obviously, that broke software crypto. Maxim
said so specifically, and Jochen probably uses
some cipher that iwl3945 doesn't support in
hardware, which might also explain that Maxim
reports that even hw crypto is broken.

Fix this to test the right flags field.

Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
Reported-by: Jochen Friedrich <jochen@scram.de>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix WARN_ON in the new work code
Felix Fietkau [Sun, 24 Jan 2010 19:44:35 +0000]
mac80211: fix WARN_ON in the new work code

ieee80211_work_rx_mgmt currently enqueues various management frames,
including deauth and disassoc frames, however the function
ieee80211_work_rx_queued_mgmt does not handle these, as they should
only occur if the AP is buggy. It does emit a WARN_ON when this happens
though, and several users have reported such instances.
Fix the WARN_ON by not queueing such frames in the first place.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agomac80211: fix update_tkip_key() documentation about the context
Kalle Valo [Sun, 24 Jan 2010 12:55:12 +0000]
mac80211: fix update_tkip_key() documentation about the context

Johannes noticed that I had incorrectly documented the context of
update_tkip_key() driver operation. It must be atomic because all
RX code is run inside rcu critical section.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Kalle Valo <kalle.valo@iki.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agob43: Workaround circular locking in hw-tkip key update callback
Michael Buesch [Sun, 24 Jan 2010 12:13:32 +0000]
b43: Workaround circular locking in hw-tkip key update callback

The TKIP key update callback is called from the RX path, where the driver
mutex is already locked. This results in a circular locking bug.
Avoid this by removing the lock.

Johannes noted that there is a separate bug: The callback still breaks on SDIO
hardware, because SDIO hardware access needs to sleep, but we are not allowed
to sleep in the callback due to mac80211's RCU locking.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Reported-by: kecsa@kutfo.hit.bme.hu
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: stable <stable@kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoath9k: improve max rate retry handling
Felix Fietkau [Sun, 24 Jan 2010 02:26:11 +0000]
ath9k: improve max rate retry handling

ath9k currently forces hw->max_rate_tries to 4 to work around rate
control inefficiencies. This has some negative side effects, such as
rate_control_send_low also using a maximum of 4 tries, which could
negatively affect reliability of unicast management frames.
This patch pushes the retry limit to the rate control instead, and
allows it to use more tries on the last stage to prevent unnecessary
packet loss.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: fix throughput degradation in aggregation mode
Daniel Halperin [Fri, 22 Jan 2010 22:22:58 +0000]
iwlwifi: fix throughput degradation in aggregation mode

The following commit

commit e4da8c37af626001ff704fb29ea14eb58f5f7208
Author: Johannes Berg <johannes@sipsolutions.net>
Date:   Wed Dec 23 13:15:43 2009 +0100

   mac80211: make off-channel work generic

triggered a bug in iwlwifi where HT parameters would not be correctly set in
some mac80211 pathways. The aggregation (and possibly other) station flags were
not being set, which limited the size of aggregation blocks and reduced
throughput at high rates.

>From Johannes:
"""
Due to Wey-Yi's patch to use the set-channel command when the channel changes
while associated, we don't get a full new RXON. Therefore, we don't re-set the
rxon-station either. However, under some circumstances that apparently have
gotten more likely mac80211 will first set up the BSS info, then add the
station and then switch to an HT channel type.

Therefore, the check for "priv->current_ht_config.is_ht" in
iwl_rxon_add_station() will hit false and not fill in the HT information.

However, that check can just be removed, which is the easiest fix for all this,
because the HT capa struct is always there, just could possibly have the
ht_supported member set to false.
"""

A sample good link in my 3x3 network improves by approximately 25% TCP
throughput. This fixes Bug 2144
(http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2144).

Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: cleanup spectrum measurement command support
Reinette Chatre [Fri, 22 Jan 2010 22:22:57 +0000]
iwlwifi: cleanup spectrum measurement command support

In iwlagn the support for spectrum measurement command has been
disabled since v2.6.29 without any requests for it. In addition to this
when this command is indeed enabled it has been found to trigger firmware
SYSASSERT on at least 4965 and 5100 hardware (see
http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=1952 ). Since then
this code has been bitrotting and cannot just be enabled without porting.

Remove support for spectrum measurement command from iwlagn. It can be
added back if there is a future need and the firmware problem it triggers
has been fixed. Support for the spectrim measurement notification remains
as it has been enabled all the time.

In addition to this remove the 3945 spectrum measurement command Kconfig
option and make this command always supported. The code added by this
enabling is minimal and only run when user triggers a spectrum measurement
request via sysfs.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: check endianness annotations by default
Johannes Berg [Fri, 22 Jan 2010 22:22:56 +0000]
iwlwifi: check endianness annotations by default

sparse won't check endianness annotations by
default, but iwlwifi is and should be clean
so we can make sparse check them on it.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: fix sparse warning
Johannes Berg [Fri, 22 Jan 2010 22:22:55 +0000]
iwlwifi: fix sparse warning

sparse correctly warns about symbol not
being static, make static to shut it up.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: clean up debugfs code
Johannes Berg [Fri, 22 Jan 2010 22:22:54 +0000]
iwlwifi: clean up debugfs code

The debugfs code can be made a whole lot more
efficient by using debugfs_remove_recursive(),
the large chunk of variables can completely go
away and by moving two variables we no longer
need to allocate an extra chunk of memory.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: reorder device setup
Johannes Berg [Fri, 22 Jan 2010 22:22:53 +0000]
iwlwifi: reorder device setup

It is better to first notify cfg80211 about the hw
rfkill state (so the rfkill device that will be
registered won't have the wrong state while being
registered), and the power/tt variable init can
(and probably should) also be done first.

Also rename iwl_setup_mac to
iwl_mac_setup_register to better describe what it
really does.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: is no longer experimental
Johannes Berg [Fri, 22 Jan 2010 22:22:52 +0000]
iwlwifi: is no longer experimental

It really hasn't been for a long time, not sure
why this stuck around.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: module parameter to enable/disable bt co-exist
Wey-Yi Guy [Fri, 22 Jan 2010 22:22:51 +0000]
iwlwifi: module parameter to enable/disable bt co-exist

Adding "bt_coex_active" module parameter for iwlcore to enable/disable
BT coexist; if bt_coex_active is true (default), uCode will do kill/defer
every time the priority line is asserted (BT is sending signals on the
priority line in the PCIx). By disable the bt_coex_active, uCode will
ignore the BT activity and perform the normal operation.

Users might experience transmit issue on some platform due to this
WiFi/BT co-exist problem. The possible symptoms are: NetworkManager and
other similar programs can scan and find all the available APs, but will
timeout and unable to associate with any of the APs; no out-going frames
can be found with wireless sniffer tools.

On those platforms, WiFi communication can be restored by set "bt_coex_active"
module parameter to "false"

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

9 years agoiwlwifi: bit field description for BT Config command
Wey-Yi Guy [Fri, 22 Jan 2010 22:22:50 +0000]
iwlwifi: bit field description for BT Config command

Give better bit filed define and description for flag parameter
in REPLY_BT_CONFIG command:

flags:
 bit 0 - 1: BT channel announcement enabled
         0: disable
 bit 1 - 1: priority of BT device enabled
         0: disable
 bit 2 - 1: BT 2 wire support enabled
         0: disable

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>