GitHub/LineageOS/G12/android_kernel_amlogic_linux-4.9.git
14 years agomac80211: Add new callback set_coverage_class
Lukáš Turek [Mon, 21 Dec 2009 21:50:48 +0000 (22:50 +0100)]
mac80211: Add new callback set_coverage_class

Mac80211 callback to driver set_coverage_class() sets slot time and ACK
timeout for given IEEE 802.11 coverage class. The callback is optional,
but it's essential for long distance links.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agonl80211: Add new WIPHY attribute COVERAGE_CLASS
Lukáš Turek [Mon, 21 Dec 2009 21:50:47 +0000 (22:50 +0100)]
nl80211: Add new WIPHY attribute COVERAGE_CLASS

The new attribute NL80211_ATTR_WIPHY_COVERAGE_CLASS sets IEEE 802.11
Coverage Class, which depends on maximum distance of nodes in a
wireless network. It's required for long distance links (more than a few
hundred meters).

The attribute is now ignored by two non-mac80211 drivers, rndis and
iwmc3200wifi, together with WIPHY_PARAM_RETRY_SHORT and
WIPHY_PARAM_RETRY_LONG. If it turns out to be a problem, we could split
set_wiphy_params callback or add new capability bits.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: re-enable ps by default for new single chip families
Luis R. Rodriguez [Fri, 18 Dec 2009 16:26:04 +0000 (11:26 -0500)]
ath9k: re-enable ps by default for new single chip families

The newer single chip hardware family of chipsets have not been
experiencing issues with power saving set by default with recent
fixes merged (even into stable). The remaining issues are only
reported with AR5416 and since enabling PS by default can increase
power savings considerably best to take advantage of that feature
as this has been tested properly.

For more details on this issue see the bug report:

http://bugzilla.kernel.org/show_bug.cgi?id=14267

We leave AR5416 with PS disabled by default, that seems to require
some more work.

Cc: stable@kernel.org
Cc: Peter Stuge <peter@stuge.se>
Cc: Justin P. Mattock <justinmattock@gmail.com>
Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
John W. Linville [Wed, 6 Jan 2010 22:22:54 +0000 (17:22 -0500)]
Merge git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
net/mac80211/scan.c
net/mac80211/wme.c

14 years agoRevert "mac80211: replace netif_tx_{start,stop,wake}_all_queues"
John W. Linville [Wed, 6 Jan 2010 20:39:39 +0000 (15:39 -0500)]
Revert "mac80211: replace netif_tx_{start,stop,wake}_all_queues"

This reverts commit 53623f1a09c7a7d23b74f0f7d93dba0ebde1006b.

This was inadvertantly missed in "mac80211: fix skb buffering issue",
and is required with that patch to restore proper queue operation.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix-up build breakage in 2.6.33
John W. Linville [Wed, 6 Jan 2010 20:35:49 +0000 (15:35 -0500)]
mac80211: fix-up build breakage in 2.6.33

"mac80211: fix skb buffering issue" is based on what will become 2.6.34,
so it includes an incompatible usage of sta_info_get.  This patch will
need to be effectively reverted when merging for 2.6.34.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowireless: fix build breakage when CONFIG_CFG80211_REG_DEBUG not set
John W. Linville [Tue, 5 Jan 2010 22:57:20 +0000 (17:57 -0500)]
wireless: fix build breakage when CONFIG_CFG80211_REG_DEBUG not set

Bad macro definition in "cfg80211: add a regulatory debug print"...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
John W. Linville [Tue, 5 Jan 2010 22:18:59 +0000 (17:18 -0500)]
Merge git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
net/mac80211/iface.c

14 years agomac80211: fix ampdu_action tx_start ssn
Christian Lamparter [Sun, 3 Jan 2010 23:52:56 +0000 (00:52 +0100)]
mac80211: fix ampdu_action tx_start ssn

The start_seq_num is taken from the station's tid_seq[tid].
This is fine, except tid_seq sequence counter is shifted
by 4 bits to accommodate for frame fragmentation.

Both (iwlagn & ath9k) were unaffected by this minor glitch,
because they don't read the *ssn for the AMPDU_TX_START action.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: pass GET_HW_SPEC capability bitmask up the stack
Lennert Buytenhek [Mon, 4 Jan 2010 20:58:40 +0000 (21:58 +0100)]
mwl8k: pass GET_HW_SPEC capability bitmask up the stack

This enables HT association and AMPDU in the receive direction for
STA firmware images on hardware that supports it.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: trivial rx-only ampdu implementation
Lennert Buytenhek [Mon, 4 Jan 2010 20:58:12 +0000 (21:58 +0100)]
mwl8k: trivial rx-only ampdu implementation

AMPDU receive doesn't need any special handling, so let's enable
this before tackling the transmit side.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: pass in HT capabilities and rates when associating
Lennert Buytenhek [Mon, 4 Jan 2010 20:57:59 +0000 (21:57 +0100)]
mwl8k: pass in HT capabilities and rates when associating

Pass the AP's MCS rate mask to SET_RATE when associating, and make
UPDATE_STADB pass in the peer's HT caps and rates when adding a new
hardware station database entry.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: allow setting HT channels
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:46 +0000 (21:56 +0100)]
mwl8k: allow setting HT channels

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: add support for 88w8363 in STA mode
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:19 +0000 (21:56 +0100)]
mwl8k: add support for 88w8363 in STA mode

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: fix changed flags handling in mwl8k_bss_info_changed()
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:07 +0000 (21:56 +0100)]
mwl8k: fix changed flags handling in mwl8k_bss_info_changed()

Previously, mwl8k_bss_info_changed() would refuse to do anything if
the 'changed' argument indicated that the association status hadn't
changed.  Fix this up so that it will allow changing things like the
preamble type, the slot time and the CTS-to-self protection method
without having to reassociate.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: honor peer rate set
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:52 +0000 (21:55 +0100)]
mwl8k: honor peer rate set

When calling SET_RATE, SET_AID, or when creating a station database
entry for our AP, pass in the AP's rate set instead of just blindly
enabling all legacy rates, so as to end up doing the right thing when
talking to 11b-only APs.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: move ->peer_id from mwl8k_vif to mwl8k_sta
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:42 +0000 (21:55 +0100)]
mwl8k: move ->peer_id from mwl8k_vif to mwl8k_sta

For STA firmware, move the per-peer hardware station ID to the
driver-private part of struct ieee80211_sta, where it belongs.

(Since issuing a hardware station database maintenance command sleeps,
we can't hold a reference to the ieee80211_sta * across the command,
and since we won't know the station ID until after the command
completes, we need to re-lookup the sta when the command is done to
write the returned station ID back to its driver-private part.)

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: remove mwl8k_vif::bssid, which is now useless
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:21 +0000 (21:55 +0100)]
mwl8k: remove mwl8k_vif::bssid, which is now useless

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: handle station database update for AP's sta entry via ->sta_notify()
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:12 +0000 (21:55 +0100)]
mwl8k: handle station database update for AP's sta entry via ->sta_notify()

Inserting and removing a hardware station database entry for the AP
when we are in managed mode is currently done in ->bss_info_changed().

To prepare for adding AP mode support, implement the ->sta_notify()
driver method, and let that handle inserting and removing the hardware
station database entry for our AP instead.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: move struct peer_capability_info to its only user
Lennert Buytenhek [Mon, 4 Jan 2010 20:54:41 +0000 (21:54 +0100)]
mwl8k: move struct peer_capability_info to its only user

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: make the tx ring drain status messages somewhat more friendly
Lennert Buytenhek [Mon, 4 Jan 2010 20:54:25 +0000 (21:54 +0100)]
mwl8k: make the tx ring drain status messages somewhat more friendly

Old:
> phy0: timeout waiting for tx rings to drain (9 -> 5 pkts), retrying
> phy0: timeout waiting for tx rings to drain (5 -> 2 pkts), retrying
> phy0: tx rings drained

New:
> phy0: waiting for tx rings to drain (9 -> 5 pkts)
> phy0: waiting for tx rings to drain (5 -> 2 pkts)
> phy0: tx rings drained

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: prevent freeing free IRQ if ieee80211_register_hw() fails
Lennert Buytenhek [Mon, 4 Jan 2010 20:54:08 +0000 (21:54 +0100)]
mwl8k: prevent freeing free IRQ if ieee80211_register_hw() fails

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: bail out if there is no AP firmware image support for this chip
Lennert Buytenhek [Mon, 4 Jan 2010 20:53:54 +0000 (21:53 +0100)]
mwl8k: bail out if there is no AP firmware image support for this chip

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: add a regulatory debug print
Luis R. Rodriguez [Mon, 4 Jan 2010 16:50:11 +0000 (11:50 -0500)]
cfg80211: add a regulatory debug print

Instead of sprinkling code with ifdef's define REG_DBG_PRINT() instead.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: update version number to 0.11
Lennert Buytenhek [Sat, 2 Jan 2010 09:31:50 +0000 (10:31 +0100)]
mwl8k: update version number to 0.11

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix ieee80211_change_mac() to use struct sockaddr
Kalle Valo [Wed, 30 Dec 2009 13:54:03 +0000 (15:54 +0200)]
mac80211: fix ieee80211_change_mac() to use struct sockaddr

Setting the mac address from user space was buggy. For example, when
executing this command:

ip link set wlan0 address 00:1f:df:88:cd:55

mac80211 used the address 01:00:00:1f:df:88 instead. It was shifted two
bytes.

The reason was that the addr (type of void *) provided to
ieee80211_change_mac() is actually of type struct sockaddr, not just the
mac address array. Also the call to eth_mac_addr() expects the address to
be struct sockaddr.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix a warning related to pointer conversion to u64 cookie
Kalle Valo [Wed, 30 Dec 2009 12:42:20 +0000 (14:42 +0200)]
mac80211: fix a warning related to pointer conversion to u64 cookie

On a 32 bit system (in this case an omap 3430 system) gcc warned about
pointer conversion:

net/mac80211/work.c: In function 'ieee80211_remain_on_channel_timeout':
net/mac80211/work.c:534: warning: cast from pointer to integer of different size
net/mac80211/work.c: In function 'ieee80211_remain_done':
net/mac80211/work.c:1030: warning: cast from pointer to integer of different size
net/mac80211/work.c: In function 'ieee80211_wk_remain_on_channel':
net/mac80211/work.c:1056: warning: cast from pointer to integer of different size
net/mac80211/work.c: In function 'ieee80211_wk_cancel_remain_on_channel':
net/mac80211/work.c:1072: warning: cast from pointer to integer of different size

Fix it by casting the pointers to unsigned long instead. This makes the
compiler happy again.

Compile-tested only.

Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: No need to include WEXT headers here
Jouni Malinen [Tue, 29 Dec 2009 10:43:58 +0000 (12:43 +0200)]
mac80211: No need to include WEXT headers here

Remove the forgotten linux/wireless.h inclusion from mac80211.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: remove linux/utsrelease.h dependency
Zhu Yi [Thu, 24 Dec 2009 07:31:10 +0000 (15:31 +0800)]
iwlwifi: remove linux/utsrelease.h dependency

Commit 250cce26d5d03337aec4ff8405121f026adb4a89 uses UTS_RELEASE
as the the in-tree iwlwifi driver version. However the inclusion
of generated/utsrelease.h makes it a unpleasant behaviour to
recompile the driver everytime when utsrelease.h is updated. In
fact, the driver module is already built with the UTS_RELEASE
information via vermagic of modinfo. Mark the in-tree driver
with the version string "in-tree" to distinguish with those old
out-of-tree drivers.

Reported-by: David Miller <davem@davemloft.net>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: Properly request tx headroom for alignment operations.
Gertjan van Wingerde [Wed, 30 Dec 2009 10:36:30 +0000 (11:36 +0100)]
rt2x00: Properly request tx headroom for alignment operations.

Current rt2x00 drivers may result in a "ieee80211_tx_status: headroom too
small" error message when a frame needs to be properly aligned before
transmitting it.
This is because the space needed to ensure proper alignment isn't
requested from mac80211.
Fix this by adding sufficient amount of alignment space to the amount
of headroom requested for TX frames.

Reported-by: David Ellingsworth <david@identd.dyndns.org>
Signed-off-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 agomac80211: fix skb buffering issue
Johannes Berg [Tue, 5 Jan 2010 17:00:58 +0000 (18:00 +0100)]
mac80211: fix skb buffering issue

Since I removed the master netdev, we've been
keeping internal queues only, and even before
that we never told the networking stack above
the virtual interfaces about congestion. This
means that packets are queued in mac80211 and
the upper layers never know, possibly leading
to memory exhaustion and other problems.

This patch makes all interfaces multiqueue and
uses ndo_select_queue to put the packets into
queues per AC. Additionally, when the driver
stops a queue, we now stop all corresponding
queues for the virtual interfaces as well.

The injection case will use VO by default for
non-data frames, and BE for data frames, but
downgrade any data frames according to ACM. It
needs to be fleshed out in the future to allow
chosing the queue/AC in radiotap.

Reported-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: stable@kernel.org [2.6.32]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: Fix LED configuration setting for rt2800.
Gertjan van Wingerde [Wed, 30 Dec 2009 10:36:33 +0000 (11:36 +0100)]
rt2x00: Fix LED configuration setting for rt2800.

rt2800_blink_set uses an illegal value to set the LED_CFG_G_LED_MODE
field of the LED_CFG register. This field is only 2 bits large, so
should be initialized with value that fits. Use default value from
the vendor driver.

Signed-off-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: use correct headroom for transmission
Pavel Roskin [Wed, 30 Dec 2009 10:36:29 +0000 (11:36 +0100)]
rt2x00: use correct headroom for transmission

Use rt2x00dev->ops->extra_tx_headroom, not rt2x00dev->hw->extra_tx_headroom
in the tx code, as the later may include other headroom not to be used in
the chipset driver.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-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 agocfg80211: fix syntax error on user regulatory hints
Luis R. Rodriguez [Mon, 4 Jan 2010 16:37:39 +0000 (11:37 -0500)]
cfg80211: fix syntax error on user regulatory hints

This fixes a syntax error when setting up the user regulatory
hint. This change yields the same exact binary object though
so it ends up just being a syntax typo fix, fortunately.

Cc: stable@kernel.org
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath5k: Fix eeprom checksum check for custom sized eeproms
Luis R. Rodriguez [Mon, 4 Jan 2010 15:40:39 +0000 (10:40 -0500)]
ath5k: Fix eeprom checksum check for custom sized eeproms

Commit 8bf3d79bc401ca417ccf9fc076d3295d1a71dbf5 enabled EEPROM
checksum checks to avoid bogus bug reports but failed to address
updating the code to consider devices with custom EEPROM sizes.
Devices with custom sized EEPROMs have the upper limit size stuffed
in the EEPROM. Use this as the upper limit instead of the static
default size. In case of a checksum error also provide back the
max size and whether or not this was the default size or a custom
one. If the EEPROM is busted we add a failsafe check to ensure
we don't loop forever or try to read bogus areas of hardware.

This closes bug 14874

http://bugzilla.kernel.org/show_bug.cgi?id=14874

Cc: stable@kernel.org
Cc: David Quan <david.quan@atheros.com>
Cc: Stephen Beahm <stephenbeahm@comcast.net>
Reported-by: Joshua Covington <joshuacov@googlemail.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agozd1211rw: Fix multicast filtering.
Benoit Papillault [Sun, 3 Jan 2010 09:20:01 +0000 (10:20 +0100)]
zd1211rw: Fix multicast filtering.

If multicast parameter (as returned by zd_op_prepare_multicast) has
changed, no bit in changed_flags is set. To handle this situation, we do
not return if changed_flags is 0. If we do so, we will have some issue
with IPv6 which uses multicast for link layer address resolution.

Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwl: off by one bug
Dan Carpenter [Sun, 3 Jan 2010 09:19:35 +0000 (11:19 +0200)]
iwl: off by one bug

tid is used as an array offset.
agg = &priv->stations[sta_id].tid[tid].agg;
iwl4965_tx_status_reply_tx(priv, agg, tx_resp, txq_id, index);

It should be limitted to MAX_TID_COUNT - 1;
        struct iwl_tid_data tid[MAX_TID_COUNT];

regards,
dan carpenter

Signed-off-by: Dan Carpenter <error27@gmail.com>
CC: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: fix configure_filter() memory leak on error
Lennert Buytenhek [Sat, 2 Jan 2010 09:31:42 +0000 (10:31 +0100)]
mwl8k: fix configure_filter() memory leak on error

If there was an error acquiring the firmware lock in
mwl8k_configure_filter(), we would end up leaking the multicast
command packet prepared by mwl8k_prepare_multicast().

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: fix ito64
Ming Lei [Tue, 29 Dec 2009 14:57:28 +0000 (22:57 +0800)]
ath9k: fix ito64

The unit of sizeof() is byte instead of bit, so fix it.
The patch can fix debug output of some dma_addr_t variables.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Fix Kconfig depends for ATH9K_DEBUGFS
Dominik Geyer [Tue, 29 Dec 2009 07:27:57 +0000 (08:27 +0100)]
ath9k: Fix Kconfig depends for ATH9K_DEBUGFS

Add missing DEBUG_FS dependency for ATH9K_DEBUGFS in ath9k's Kconfig.

Signed-off-by: Dominik D. Geyer <dominik.geyer@gmx.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix typo added by "mac80211: fix propagation of failed..."
John W. Linville [Mon, 4 Jan 2010 20:58:03 +0000 (15:58 -0500)]
mac80211: fix typo added by "mac80211: fix propagation of failed..."

'Typo: it's "Hardware", not "Harware". Hmm, sometimes it's hairware :-)"'
-- Holger Schurig

Reported-by: Holger Schurig <holgerschurig@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: fix timeout in wl1271_top_reg_read
Juha Leppanen [Mon, 4 Jan 2010 20:52:50 +0000 (15:52 -0500)]
wl1271: fix timeout in wl1271_top_reg_read

I noticed a timeout bug in

/drivers/net/wireless/wl12xx/wl1271_spi.c

In the current code you cannot tell why you exited
the "poll for data ready" do-while loop if exiting
was done after the last possible loop.

Then timeout==0 regardless of (val & OCP_READY_MASK) or
!(val & OCP_READY_MASK), leading to possible false timeout...

Simple correction could be decreasing timeout after checking
for !(val & OCP_READY_MASK), not before

(Manually converted from email to an actual patch by me. -- JWL)

Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
Signed-off-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
John W. Linville [Wed, 30 Dec 2009 20:25:08 +0000 (15:25 -0500)]
Merge git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
drivers/net/wireless/libertas/scan.c

14 years agoRevert "b43: Enforce DMA descriptor memory constraints"
John W. Linville [Tue, 29 Dec 2009 19:07:42 +0000 (14:07 -0500)]
Revert "b43: Enforce DMA descriptor memory constraints"

This reverts commit 9bd568a50c446433038dec2a5186c5c57c3dbd23.

That commit is shown to cause allocation failures during initialization
on some machines.

http://bugzilla.kernel.org/show_bug.cgi?id=14844

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: annotate sleeping driver ops
Kalle Valo [Wed, 23 Dec 2009 12:15:47 +0000 (13:15 +0100)]
mac80211: annotate sleeping driver ops

To make it easier to notice cases of calling sleeping ops in atomic context,
annotate driver-ops.h with appropiate might_sleep() calls. At the same time,
also document in mac80211.h the op functions with missing contexts.

mac80211 doesn't seem to use get_tx_stats anywhere currently. Just to be on
the safe side, I documented it to be atomic, but hopefully the op can be
removed in the future.

Compile-tested only.

Signed-off-by: Kalle Valo <kalle.valo@iki.fi>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: remove requeue from work
Johannes Berg [Wed, 23 Dec 2009 12:15:46 +0000 (13:15 +0100)]
mac80211: remove requeue from work

There's no need to be requeueing the work struct
since we check for the scan after removing items
due to possible timeouts.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: remove struct ieee80211_if_init_conf
Johannes Berg [Wed, 23 Dec 2009 12:15:45 +0000 (13:15 +0100)]
mac80211: remove struct ieee80211_if_init_conf

All its members (vif, mac_addr, type) are now available
in the vif struct directly, so we can pass that instead
of the conf struct. I generated this patch (except the
mac80211 and header file changes) with this semantic
patch:

@@
identifier conf, fn, hw;
type tp;
@@
tp fn(struct ieee80211_hw *hw,
-struct ieee80211_if_init_conf *conf)
+struct ieee80211_vif *vif)
{
<...
(
-conf->type
+vif->type
|
-conf->mac_addr
+vif->addr
|
-conf->vif
+vif
)
...>
}

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211/cfg80211: add station events
Johannes Berg [Wed, 23 Dec 2009 12:15:44 +0000 (13:15 +0100)]
mac80211/cfg80211: add station events

When, for instance, a new IBSS peer is found, userspace
wants to be notified. Add events for all new stations
that mac80211 learns about.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: make off-channel work generic
Johannes Berg [Wed, 23 Dec 2009 12:15:43 +0000 (13:15 +0100)]
mac80211: make off-channel work generic

This changes mac80211 to allow being off-channel for
any type of work, not just the 'remain-on-channel'
work. This also helps fast transition to a BSS on a
different channel.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: support remain-on-channel command
Johannes Berg [Wed, 23 Dec 2009 12:15:42 +0000 (13:15 +0100)]
mac80211: support remain-on-channel command

This implements the new remain-on-channel cfg80211
command in mac80211, extending the work interface.

Also change the work purge code to be able to clean
up events properly (pretending they timed out.)

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: add remain-on-channel command
Jouni Malinen [Wed, 23 Dec 2009 12:15:41 +0000 (13:15 +0100)]
cfg80211: add remain-on-channel command

Add new commands for requesting the driver to remain awake
on a specified channel for the specified amount of time
(and another command to cancel such an operation). This
can be used to implement userspace-controlled off-channel
operations, like Public Action frame exchange on another
channel than the operation channel.

The off-channel operation should behave similarly to scan,
i.e. the local station (if associated) moves into power
save mode to request the AP to buffer frames for it and
then moves to the other channel to allow the off-channel
operation to be completed. The duration parameter can be
used to request enough time to receive a response from
the target station.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: Generalize off-channel operation helpers from scan code
Jouni Malinen [Wed, 23 Dec 2009 12:15:40 +0000 (13:15 +0100)]
mac80211: Generalize off-channel operation helpers from scan code

The off-channel operations for going into power save mode (station
mode) or stop beaconing (AP/IBSS) are not limited to scanning. Move
these into a separate file and allow them to be used for other
purposes, too.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: proper bss private data handling
Johannes Berg [Wed, 23 Dec 2009 12:15:39 +0000 (13:15 +0100)]
mac80211: proper bss private data handling

cfg80211 offers private data for each BSS struct,
which mac80211 uses. However, mac80211 uses internal
and external (cfg80211) BSS pointers interchangeably
and has a hack to put the cfg80211 bss struct into
the private struct.

Remove this hack, properly converting between the
pointers wherever necessary.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: split up and insert custom IEs correctly
Johannes Berg [Wed, 23 Dec 2009 12:15:38 +0000 (13:15 +0100)]
mac80211: split up and insert custom IEs correctly

Currently, we insert all user-specified IEs before the HT
IE for association, and after the HT IE for probe requests.
For association, that's correct only if the user-specified
IEs are RSN only, incorrect in all other cases including
WPA. Change this to split apart the user-specified IEs in
two places for association: before the HT IE (e.g. RSN),
after the HT IE (generally empty right now I think?) and
after WMM (all other vendor-specific IEs). For probes,
split the IEs in different places to be correct according
to the spec.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: refactor association
Johannes Berg [Wed, 23 Dec 2009 12:15:37 +0000 (13:15 +0100)]
mac80211: refactor association

Refactor the code to reserve an skb of the right size
(instead of hoping 200 bytes are enough forever), and
also put HT IE generation into an own function.

Additionally, put the HT IE before the vendor-specific
WMM IE. This still leaves things not quite ordered
correctly, due to user-specified IEs, add a note about
that for now.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: rewrite a few work messages
Johannes Berg [Wed, 23 Dec 2009 12:15:36 +0000 (13:15 +0100)]
mac80211: rewrite a few work messages

The station we're authenticating/associating with
may not always be an AP in the sense that word is
mostly understood, so print only the MAC address
of the peer instead.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: generalise work handling
Johannes Berg [Wed, 23 Dec 2009 12:15:35 +0000 (13:15 +0100)]
mac80211: generalise work handling

In order to use auth/assoc for different purposes
other than MLME, it needs to be split up. For other
purposes, a generic work handling (potentially on
another channel) will be useful.

To achieve that, this patch moves much of the MLME
work handling out of mlme into a new work API. The
API can currently handle probing a specific AP,
authentication and association. The MLME previously
handled probe/authentication as one step and will
continue to do so, but they are separate in the new
work handling.

Work items are RCU-managed to be able to check for
existence of an item for a specific frame in the RX
path, but they can be re-used which the MLME right
now will do for its combined probe/auth step.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: generalise management work a bit
Johannes Berg [Wed, 23 Dec 2009 12:15:34 +0000 (13:15 +0100)]
mac80211: generalise management work a bit

As a first step of generalising management work,
this renames a few things and puts more information
directly into the struct so that auth/assoc need
not access the BSS pointer as often -- in fact it
can be removed from auth completely. Also since the
previous patch made sure a new work item is used
for association, we can make the different data a
union.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: let cfg80211 manage auth state
Johannes Berg [Wed, 23 Dec 2009 12:15:33 +0000 (13:15 +0100)]
mac80211: let cfg80211 manage auth state

mac80211 currently hangs on to the auth state by
keeping it on the work list. That can lead to
confusing behaviour like rejecting scans while
authenticated to any AP (but not yet associated.)
It also means that it needs to keep track of the
work struct while associated for when it gets
disassociated (or disassociates.)

Change this to free the work struct after the
authentication completed successfully and
allocate a new one for associating, thereby
letting cfg80211 manage the auth state. Another
change necessary for this is to tell cfg80211
about all unicast deauth frames sent to mac80211
since now it can no longer check the auth state,
but that check was racy anyway.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: introduce flush operation
Johannes Berg [Wed, 23 Dec 2009 12:15:32 +0000 (13:15 +0100)]
mac80211: introduce flush operation

We've long lacked a good confirmation that frames
have really gone out, e.g. before going off-channel
for a scan. Add a flush() operation that drivers
can implement to provide that confirmation, and use
it in a few places:
 * before scanning sends the nullfunc frames
 * after scanning sends the nullfunc frames, if any
 * when going idle, to send any pending frames

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: add ieee80211_sdata_running
Johannes Berg [Wed, 23 Dec 2009 12:15:31 +0000 (13:15 +0100)]
mac80211: add ieee80211_sdata_running

Instead of always using netif_running(sdata->dev)
use ieee80211_sdata_running(sdata) now which is
just an inline containing netif_running() for now.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agortl8187: remove priv->mode
John W. Linville [Tue, 22 Dec 2009 23:13:05 +0000 (18:13 -0500)]
rtl8187: remove priv->mode

It is checked in add_interface, but there it is easily replaced with
a check of priv->vif.  If that information should become necessary,
it is available in vif->type anyway.

It is also checked in led_turn_on and led_turn_off, where I made the
substitutions as described above.  Of course, these checks seem to
have been incorrect since the driver was using NL80211_IFTYPE_MONITOR
to indicate no interface rather than NL80211_IFTYPE_UNSPECIFIED.
Anyway, I think these checks may be extraneous...?

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agortl8180: remove priv->mode
John W. Linville [Tue, 22 Dec 2009 23:13:04 +0000 (18:13 -0500)]
rtl8180: remove priv->mode

It is only checked in add_interface, and there it is easily replaced
with a check of priv->vif.  If that information should become necessary,
it is available in vif->type anyway.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: Cleanup chip handling helper functions.
Gertjan van Wingerde [Tue, 22 Dec 2009 23:03:25 +0000 (00:03 +0100)]
rt2x00: Cleanup chip handling helper functions.

Let each of them take a struct rt2x00_dev pointer as argument instead of
a mixture of struct rt2x00_chip and struct rt2x00_dev pointers.
Preparation for further clean ups in the rt2x00 chip handling, especially
for rt2800 devices.

Signed-off-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: convert RT2800PCI_PCI and RT2800PCI_SOC Kconfig symbols to booleans.
Gertjan van Wingerde [Tue, 22 Dec 2009 23:03:24 +0000 (00:03 +0100)]
rt2x00: convert RT2800PCI_PCI and RT2800PCI_SOC Kconfig symbols to booleans.

There is no need for Kconfig symbols RT2800PCI_PCI and RT2800PCI_SOC to be
tristates, as they are only used to check whether RT2800 PCI or SOC support
is to be compiled in.

Signed-off-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: Let rt2800lib check CONFIG_RT2X00_LIB_USB instead of CONFIG_RT2800USB
Gertjan van Wingerde [Tue, 22 Dec 2009 23:03:23 +0000 (00:03 +0100)]
rt2x00: Let rt2800lib check CONFIG_RT2X00_LIB_USB instead of CONFIG_RT2800USB

rt2800lib currently checks whether RT2800USB is enabled in the configuration.
Strictly speaking this is not necessary, it only needs to know whether the
generic rt2x00usb library functions are available. Therefore check for
RT2X00_LIB_USB instead.

Signed-off-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: Fix checks for rt2800 SOC support.
Gertjan van Wingerde [Tue, 22 Dec 2009 23:03:22 +0000 (00:03 +0100)]
rt2x00: Fix checks for rt2800 SOC support.

Fix checking for SOC support in rt2800pci. The wrong config (an unexisting
one) was checked.

Signed-off-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 agowireless: remove CONFIG_WIRELESS_OLD_REGULATORY
John W. Linville [Fri, 18 Dec 2009 22:59:02 +0000 (17:59 -0500)]
wireless: remove CONFIG_WIRELESS_OLD_REGULATORY

This is no longer needed with the availability of
CONFIG_CFG80211_INTERNAL_REGDB.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: Prevent performing "join" before association
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:10 +0000 (15:41 +0200)]
wl1271: Prevent performing "join" before association

There is a minor bug in the code causing a "join" to be performed before
there is an intention to associate. Fix this.

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 agowl1271: Check vif for NULL when indicating beacon-loss
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:09 +0000 (15:41 +0200)]
wl1271: Check vif for NULL when indicating beacon-loss

Because the interface is started and the vif are created and destroyed
separately, there is a slim possibility beacon-loss indications occur while
there is no vif - causing a kernel-oops unless checked.

Add checking for the vif.

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 agowl1271: Add support for acx_pm_config
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:08 +0000 (15:41 +0200)]
wl1271: Add support for acx_pm_config

This acx configures host clock parameters in correspondence with the clock
request line - the settling time of the clock, and whether fast wake-up is
supported.

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 agowl1271: Change booleans in struct wl1271 into a flags bitmask
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:07 +0000 (15:41 +0200)]
wl1271: Change booleans in struct wl1271 into a flags bitmask

For cleaner implementation, change the bunch of booleans in the struct wl1271
structure into a flags bitmask.

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 agowl1271: Fix supported rate management
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:06 +0000 (15:41 +0200)]
wl1271: Fix supported rate management

Previously, only basic rates were used for data transmission - resulting in
reduced transfer rates. This patch takes enables the firmware to take advantage
of the full set of data rates supported by the AP.

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 agowl1271: Change rates configured for templates
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:05 +0000 (15:41 +0200)]
wl1271: Change rates configured for templates

Previously a "firmware chooses" value was used for the rates of all control
message templates set to the firmware. This resulted in a too high rate to be
chosen to transmit those messages. Change this by configuring a fixed low rate
for the templates.

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 agowl1271: Add rudimentary ad-hoc support
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:04 +0000 (15:41 +0200)]
wl1271: Add rudimentary ad-hoc support

This patch adds rudimentary a-hoc support for the driver. It will allow
setting up ad-hoc, and for other devices to scan and join. The beacon and probe
response template setting is slightly dirty, and need to be properly
implemented with support from mac80211. Also, the SSID is not configured to the
firmware - the FW will not be able to respond to probe requests autonomously.

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 agowl1271: Remove beacon-loss-ind from PSM entry failure handling
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:03 +0000 (15:41 +0200)]
wl1271: Remove beacon-loss-ind from PSM entry failure handling

Remove the beacon-loss indication to stack from PSM entry failure handling -
this will cause more problems than it will solve due to the design of the
mac80211.

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 agowl1271: Add pre-power-on sleep
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:02 +0000 (15:41 +0200)]
wl1271: Add pre-power-on sleep

This patch adds a short delay before powering on the wl1271. Normally, it is
not needed, but if the wl1271 has been powered off shortly before, for reliable
firmware-booting this small stabilization delay is required.

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 agowl1271: Implement chipset boot retry
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:01 +0000 (15:41 +0200)]
wl1271: Implement chipset boot retry

The wl1271 has a hardware bug which causes it to randomly (very infrequently)
to fail powering up properly. This patch implements retry for the chipset boot
sequence, to work around the hardware problem.

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 agowl1271: prevent power save entry while not associated
Juuso Oikarinen [Fri, 11 Dec 2009 13:41:00 +0000 (15:41 +0200)]
wl1271: prevent power save entry while not associated

The mac80211 sometimes requests power save entry while not associated - this
will cause problems, so prevent it if not associated. Go to powersave once
association is complete.

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 agowl1271: Fix event acknowledging functionality
Juuso Oikarinen [Fri, 11 Dec 2009 13:40:59 +0000 (15:40 +0200)]
wl1271: Fix event acknowledging functionality

In reference source, events are acknowledged separately - fix the driver to
do the same.

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 agowl1271: Use slow rates for association messages
Juuso Oikarinen [Fri, 11 Dec 2009 13:40:58 +0000 (15:40 +0200)]
wl1271: Use slow rates for association messages

While not associated, default the data rates to 1 and 2mbps, so that only
those rates will be used for association related message transfer. Once
associated, configure the full rate-set supported by the AP.

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 agowl1271: Remove smart reflex ACX
Juuso Oikarinen [Fri, 11 Dec 2009 13:40:57 +0000 (15:40 +0200)]
wl1271: Remove smart reflex ACX

Remove the smart-reflex ACX - the associated parameters are now configured
in the radio parameters config.

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 agowl1271: Configure smart-reflex paramter values.
Juuso Oikarinen [Fri, 11 Dec 2009 13:40:56 +0000 (15:40 +0200)]
wl1271: Configure smart-reflex paramter values.

Configure correct values to be used with the smart-reflex configuration of the
firmware.

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 agowl1271: use channel 1 when configuring the data path
Luciano Coelho [Fri, 11 Dec 2009 13:40:55 +0000 (15:40 +0200)]
wl1271: use channel 1 when configuring the data path

In the data path configuration, one of the parameters is the channel.  We
have been setting it to wl->channel, which is not correct in this case.  This
channel has nothing to do with the channel we're currently tuned to, since it
is only used for calibration during this phase.  Hardcoded the channel to 1,
according to the reference driver.

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: some new configuration values according to new reference
Luciano Coelho [Fri, 11 Dec 2009 13:40:54 +0000 (15:40 +0200)]
wl1271: some new configuration values according to new reference

In the new reference driver, some of the firmware configuration values have
been changed.  This patch changes them in the wl1271 driver accordingly.

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: upload only the first 468 bytes from the NVS file
Luciano Coelho [Fri, 11 Dec 2009 13:40:53 +0000 (15:40 +0200)]
wl1271: upload only the first 468 bytes from the NVS file

We were uploading the whole NVS file, but that is wrong, because the same
file also contains the initialization values.  For the latest firmwares, we
should upload only the initial 468 bytes from the file.

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: add gpio_power file in debugfs to power the chip on and off
Luciano Coelho [Fri, 11 Dec 2009 13:40:52 +0000 (15:40 +0200)]
wl1271: add gpio_power file in debugfs to power the chip on and off

Some debugging tools require the chip to be powered on before they can work.
With these tools, we shouldn't upload the firmware nor boot the firmware
ourselves, so this debufs file is provided.  It always contains the gpio
power setting (0 = off, 1 = on).  To change the power setting, just write 0
or 1 to the file.

Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1271: fix one typo in the rx_rssi_and_proc_compens values
Luciano Coelho [Fri, 11 Dec 2009 13:40:51 +0000 (15:40 +0200)]
wl1271: fix one typo in the rx_rssi_and_proc_compens values

There was a typo in one of the values in the rx_rssi_and_proc_compens elemt
of the Radio Parameters struct.

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: implement dco itrim parameters setting
Luciano Coelho [Fri, 11 Dec 2009 13:40:50 +0000 (15:40 +0200)]
wl1271: implement dco itrim parameters setting

Newer firmwares require the dco itrim parameters to be set during
initialization.  This patch implements the new ACX function and calls it.

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: use the correct macro when setting the basic rates
Luciano Coelho [Fri, 11 Dec 2009 13:40:49 +0000 (15:40 +0200)]
wl1271: use the correct macro when setting the basic rates

We were using CONF_TX_RATE_MASK_ALL when calling wl1271_acx_rate_policies()
during init.  We should use WL1271_DEFAULT_BASIC_RATE_SET instead.  The
values are the same, but the latter is just the correct macro to use.

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: set null data template when BSSID is known
Luciano Coelho [Fri, 11 Dec 2009 13:40:48 +0000 (15:40 +0200)]
wl1271: set null data template when BSSID is known

The call to wl1271_cmd_build_null_data() was missing when we got associated,
this was causing PS to fail.  This patch adds the call and now PS seems to
work.

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: check result code from the join command
Luciano Coelho [Fri, 11 Dec 2009 13:40:47 +0000 (15:40 +0200)]
wl1271: check result code from the join command

We were not checking the return value from the call to wl1271_cmd_join().
Added a check to make things more reliable.

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: limit TX power to 25dBm for every channel
Luciano Coelho [Fri, 11 Dec 2009 13:40:46 +0000 (15:40 +0200)]
wl1271: limit TX power to 25dBm for every channel

The wl1271 firmware supports maximun 25.5dBm, so the driver was returning
-EINVALID to anything above that.  This patch uses the channel max_power
option to limit the TX power to 25dBm.

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: remove workaround for disconnection
Luciano Coelho [Fri, 11 Dec 2009 13:40:45 +0000 (15:40 +0200)]
wl1271: remove workaround for disconnection

Now we're using a the idle information coming from mac80211 to decide when to
disconnect.  If we have joined (ie. we're listening to a channel), whenever
the interface goes to idle, we will issue a disconnect command.  So the
workaround to send a disconnect command before joining is not needed anymore.

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: use join command with dummy BSSID
Luciano Coelho [Fri, 11 Dec 2009 13:40:44 +0000 (15:40 +0200)]
wl1271: use join command with dummy BSSID

When we need to change the channel before association, we have to send a join
command with a valid BSSID.  With this patch we use 0baddeadbeef as the
BSSID.  There are ongoing discussions with TI to get this done in a cleaner
way.

When we go back to idle, we issue a CMD_DISCONNECT to make sure the firmware
stops listening to the channel and cleans things up internally.

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: added radio parameters configuration values newer firmwares
Luciano Coelho [Fri, 11 Dec 2009 13:40:43 +0000 (15:40 +0200)]
wl1271: added radio parameters configuration values newer firmwares

Add new radio parameters for new structures based on firmware revision
6.1.0.0.288.

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: update radio and general parameters values
Luciano Coelho [Fri, 11 Dec 2009 13:40:42 +0000 (15:40 +0200)]
wl1271: update radio and general parameters values

There were some changes in the values we have to use for these settings.  This
patches updates them.

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: updated general parameters structure for newer firmwares
Luciano Coelho [Fri, 11 Dec 2009 13:40:41 +0000 (15:40 +0200)]
wl1271: updated general parameters structure for newer firmwares

In revision 6.1.0.0.288 the general parameters structure has changed.  This
patch updates the driver code accordingly.

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: updated radio parameters structure for newer firmwares
Luciano Coelho [Fri, 11 Dec 2009 13:40:40 +0000 (15:40 +0200)]
wl1271: updated radio parameters structure for newer firmwares

In revision 6.1.0.0.288 the radio parameters structure has changed.  This
patch updates the driver code accordingly.

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 agob43: Allow PIO mode to be selected at module load
Larry Finger [Thu, 10 Dec 2009 23:35:01 +0000 (17:35 -0600)]
b43: Allow PIO mode to be selected at module load

If userencounter the "Fatal DMA Problem" with a BCM43XX device, and
still wish to use b43 as the driver, their only option is to rebuild
the kernel with CONFIG_B43_FORCE_PIO. This patch removes this option and
allows PIO mode to be selected with a load-time parameter for the module.
Note that the configuration variable CONFIG_B43_PIO is also removed.

Once the DMA problem with the BCM4312 devices is solved, this patch will
likely be reverted.

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