GitHub/exynos8895/android_kernel_samsung_universal8895.git
13 years agowl12xx: add support for multiple SSIDs in sched_scan
Luciano Coelho [Tue, 23 Aug 2011 15:34:44 +0000 (18:34 +0300)]
wl12xx: add support for multiple SSIDs in sched_scan

The wl12xx firmwares support multiple SSIDs in a single sched_scan
run.  This patch implements support for it.

We use three different types os sched_scan: FILTER_ANY (ie. not
filtering, only wildcard SSID in the probe_reqs); FILTER_LIST (ie. send out
probe_reqs with the specified SSIDs and only report if they are
found); and FILTER_DISABLED (ie. send out probe_reqs with the
specified SSIDs, but report anything found).

Since we still don't have proper filter support in nl80211/cfg80211
yet, we cannot use filters when the wildcard SSID is used.  Thus, we
will not filter anything if the wildcard SSID is specified.

Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: enter psm only after station role was started
Eliad Peller [Tue, 23 Aug 2011 13:37:01 +0000 (16:37 +0300)]
wl12xx: enter psm only after station role was started

The station didn't get into psm after recovery, because
psm was configured before sta role was started.

Move wl1271_ps_set_mode() to be executed only after
the role was started.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: increase psm_entry_retries
Eliad Peller [Tue, 23 Aug 2011 13:37:02 +0000 (16:37 +0300)]
wl12xx: increase psm_entry_retries

In congested env, sometimes 5 psm entry retries are not enough.
Increase the retries count to 8.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: initialize rate_set on band rates initialization
Eliad Peller [Tue, 23 Aug 2011 12:56:23 +0000 (15:56 +0300)]
wl12xx: initialize rate_set on band rates initialization

In some corner cases, (invalid) 11g rates were used while
working on 11a band.

Take care of it by initializing rate_set according to the
configured band.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: allow 11a AP-mode for wl127x devices
Arik Nemtsov [Tue, 23 Aug 2011 12:56:22 +0000 (15:56 +0300)]
wl12xx: allow 11a AP-mode for wl127x devices

There was a check preventing 127x devices from using the 11a band when
operating as AP. Since we now support this functionality, remove the
check.

With this patch, a 11a AP starts ok on 127x cards.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: use 2 spare TX blocks for GEM cipher
Guy Eilam [Tue, 16 Aug 2011 16:49:12 +0000 (19:49 +0300)]
wl12xx: use 2 spare TX blocks for GEM cipher

Add tx_spare_blocks member to the wl1271 struct
for more generic configuration of the amount
of spare TX blocks that should be used.
The default value is 1.
In case GEM cipher is used by the STA, we need
2 spare TX blocks instead of just 1.

Signed-off-by: Guy Eilam <guy@wizery.com>
Acked-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: fix tx_queue_count spurious increment
Arik Nemtsov [Sun, 14 Aug 2011 10:17:39 +0000 (13:17 +0300)]
wl12xx: fix tx_queue_count spurious increment

Only increment the queue count after actually queuing the skb. This
avoids a spurious increment is case of dropped packets.

Also move the Tx-watermark checking code after the packet is enqueued.
This makes the count more accurate - it includes the just-queued
packet.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: AP-mode - prevent Tx to stale/invalid stations
Arik Nemtsov [Sun, 14 Aug 2011 10:17:38 +0000 (13:17 +0300)]
wl12xx: AP-mode - prevent Tx to stale/invalid stations

Don't pollute the queues with Tx directed to invalid stations. This
can happen during recovery.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: set the AP-started flag only after setting keys
Arik Nemtsov [Sun, 14 Aug 2011 10:17:37 +0000 (13:17 +0300)]
wl12xx: set the AP-started flag only after setting keys

This fix eliminates a potential race between starting the AP role
and setting encryption keys.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: enable AP advanced functionality
Arik Nemtsov [Sun, 14 Aug 2011 10:17:35 +0000 (13:17 +0300)]
wl12xx: enable AP advanced functionality

This adjusts FW TX block allocation for connected stations in PS.
Firmware congestion is measured in allocated packets instead of blocks.

Allow a link in PS to queue up to 2 packets to the FW.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: don't wait for disconnection event
Eliad Peller [Sun, 14 Aug 2011 10:17:36 +0000 (13:17 +0300)]
wl12xx: don't wait for disconnection event

Sometimes the fw doesn't send the DISCONNECT_EVENT_COMPLETE_ID
on station role stop, so don't wait for it.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: handle wrap-around overflow in released Tx blocks FW counter
Arik Nemtsov [Sun, 14 Aug 2011 10:17:34 +0000 (13:17 +0300)]
wl12xx: handle wrap-around overflow in released Tx blocks FW counter

When the FW Tx released blocks counter wraps around, we should correct
our calculation of released blocks. Otherwise we add a large negative
figure to our driver freed blocks counter

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: schedule TX packets according to FW packet occupancy
Arik Nemtsov [Sun, 14 Aug 2011 10:17:33 +0000 (13:17 +0300)]
wl12xx: schedule TX packets according to FW packet occupancy

When selecting packets for transmission, prefer the ACs that are least
occupied in the FW. When packets for multiple ACs are present in the FW,
it decides which to transmit according to WMM QoS parameters.

With these changes, lower priority ACs should not be starved when higher
priority traffic is present.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: track freed packets in FW by AC
Arik Nemtsov [Sun, 14 Aug 2011 10:17:32 +0000 (13:17 +0300)]
wl12xx: track freed packets in FW by AC

Track the number of freed packets in each AC when receiving an interrupt
from the FW. This paves the way for tracking allocated packets per AC.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: don't remove key if hlid was already deleted
Eliad Peller [Sun, 14 Aug 2011 10:17:31 +0000 (13:17 +0300)]
wl12xx: don't remove key if hlid was already deleted

When wep key was removed after disconnection, sta_hlid was invalid,
and it resulted in a fw crash.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: use ap_bcast_hlid for recorded keys
Eliad Peller [Sun, 14 Aug 2011 10:17:30 +0000 (13:17 +0300)]
wl12xx: use ap_bcast_hlid for recorded keys

when the key was recorded, wl->ap_bcast_hlid was invalid
(since the role wasn't started), so when configuring the
key we need to use the current ap_bcast_hlid.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: AP-mode - configure HT rate support to the FW
Arik Nemtsov [Sun, 14 Aug 2011 10:17:29 +0000 (13:17 +0300)]
wl12xx: AP-mode - configure HT rate support to the FW

Unconditionally configure HT rate support to the FW on all ACs
when starting the AP.

When 11n support is disabled by usermode (hostapd), each STA joining
the AP will appear as a non-HT STA. This will stop us from accidentally
transmitting using MCS rates.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: AP-mode - configure STA HT rates on join
Arik Nemtsov [Sun, 14 Aug 2011 10:17:28 +0000 (13:17 +0300)]
wl12xx: AP-mode - configure STA HT rates on join

When a new STA joins the BSS, configure the HT rates it supports to the
FW.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: AP-mode - set STA HT capabilities when adding a STA
Arik Nemtsov [Sun, 14 Aug 2011 10:17:27 +0000 (13:17 +0300)]
wl12xx: AP-mode - set STA HT capabilities when adding a STA

In addition, set global HT operation mode via ACX_HT_BSS_OPERATION when
a change is detected by usermode

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: support IBSS vif type
Eliad Peller [Sun, 14 Aug 2011 10:17:26 +0000 (13:17 +0300)]
wl12xx: support IBSS vif type

Start IBSS role when the interface type is IBSS.
As with sta role, use the dev role until the role
is started.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: add wl12xx_cmd_role_start_ibss()
Eliad Peller [Sun, 14 Aug 2011 10:17:25 +0000 (13:17 +0300)]
wl12xx: add wl12xx_cmd_role_start_ibss()

Add wl12xx_cmd_role_start_ibss() implementation and defintion.
This function is used in order to start the IBSS role.

Stopping the IBSS is done by using the same api as stop STA,
so there is no need for a separate function.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: don't remove key if hlid was already deleted
Eliad Peller [Sun, 14 Aug 2011 10:17:24 +0000 (13:17 +0300)]
wl12xx: don't remove key if hlid was already deleted

If hlid was already removed, there is no need to remove
its key (it might cause a fw crash, as the key is invalid).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: call wl12xx_cmd_set_peer_state() in AP mode
Eliad Peller [Sun, 14 Aug 2011 10:17:23 +0000 (13:17 +0300)]
wl12xx: call wl12xx_cmd_set_peer_state() in AP mode

After adding a station, call wl12xx_cmd_set_peer_state().
This is required for 11n support.

Change wl12xx_cmd_set_peer_state() prototype to get hlid
as param.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: re-enable block ack session support
Arik Nemtsov [Wed, 17 Aug 2011 07:45:49 +0000 (10:45 +0300)]
wl12xx: re-enable block ack session support

Incorporate interface changes for HT support.

Add ba_bitmap field to the wl1271_link struct, to indicate
activate RX BA sessions (for AP mode).

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: use dynamic hlids for AP-mode
Arik Nemtsov [Sun, 14 Aug 2011 10:17:21 +0000 (13:17 +0300)]
wl12xx: use dynamic hlids for AP-mode

Using hlid=0 in AP mode is a bug. Dynamically allocate HLIDs.

Set the "first sta hlid" as 3. This will have to be changed
when multiple vifs will be supported.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: fix session counter
Arik Nemtsov [Sun, 14 Aug 2011 10:17:20 +0000 (13:17 +0300)]
wl12xx: fix session counter

Increment the session counter on every
wl12xx_cmd_role_start_sta() command.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update BT coex configuration params
Eliad Peller [Sun, 14 Aug 2011 10:17:19 +0000 (13:17 +0300)]
wl12xx: update BT coex configuration params

The BT coex params api have been changed.
Update it, and init coex for both sta and ap.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: replace dummy_join with ROC/CROC commands
Eliad Peller [Sun, 14 Aug 2011 10:17:17 +0000 (13:17 +0300)]
wl12xx: replace dummy_join with ROC/CROC commands

The ROC command asks the fw stay on the channel of the given
hlid. it currently has 2 primary functions:

1. Allow tx/rx from the device role.

In order to tx/rx packets while the stations is not associated
(e.g. auth req/resp), the device role has to be used, along
with ROC on its link.

Keep the logic similiar to the one used in dummy_join. However,
since we can't scan while we ROC, we add CROC before starting
a scan, and ROC again (if needed) on scan complete.

2. Keeping the antenna for a specific link.

We ROC until the connection was completed (after EAPOLs exchange)
in order to prevent BT coex operations from taking the antenna
and failing the connection (after this stage, psm can be used).

During association, we ROC on the station role, and then CROC
the device role, thus assuring being ROC during all the connection
process.

Delete the WL1271_FLAG_JOINED flag, and use a roc bitmap
to indicate what roles are currently ROCed.

Add wl12xx_roc/croc functions in order to wrap the roc/croc
commands while taking care of the roc bitmap.

The current ROC/CROC state-machine is a bit complicated. In
the future we'll probably want to use wpa_supplicant to control
the ROC during connection.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: handle dummy packet event also in ap mode
Arik Nemtsov [Sun, 14 Aug 2011 10:17:18 +0000 (13:17 +0300)]
wl12xx: handle dummy packet event also in ap mode

Allow handling of DUMMY_PACKET_EVENT_ID also in ap mode.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: add ROC/CROC commands
Eliad Peller [Sun, 14 Aug 2011 10:17:16 +0000 (13:17 +0300)]
wl12xx: add ROC/CROC commands

Add structs and functions to support the ROC/CROC commands.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: add system_hlid
Eliad Peller [Sun, 14 Aug 2011 10:17:15 +0000 (13:17 +0300)]
wl12xx: add system_hlid

system_hlid is a const hlid (always 0), used by the fw and driver
for packets which are not bound to specific role (e.g. dynamic
memory packets).
indicate it as always allocated.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: add set_rate_mgmt_params acx
Eliad Peller [Sun, 14 Aug 2011 10:17:14 +0000 (13:17 +0300)]
wl12xx: add set_rate_mgmt_params acx

Configure rate management parameters on hw init

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: use wl1271_acx_beacon_filter_opt for both sta and ap
Eliad Peller [Sun, 14 Aug 2011 10:17:13 +0000 (13:17 +0300)]
wl12xx: use wl1271_acx_beacon_filter_opt for both sta and ap

Use ACX_BEACON_FILTER_OPT for both station and ap roles
(use the generic wl1271_acx_beacon_filter_opt()
instead of wl1271_acx_set_ap_beacon_filter() ).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: change max/default template size
Eliad Peller [Sun, 14 Aug 2011 10:17:12 +0000 (13:17 +0300)]
wl12xx: change max/default template size

The max template size was increased in the new fw.
However, we should use the max size only when needed, as it
consumes some of the chip's memory.

Thus, by default initialize the templates to the default size.
Initialize to the maximum size only when required.

Use WL1271_CMD_TEMPL_DFLT_SIZE instead of some of the
predefined structs, as some of them didn't account
for additional IEs that might be added to the template.

Delete structs defintions not used after these changes.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update rx/tx
Eliad Peller [Sun, 14 Aug 2011 10:17:11 +0000 (13:17 +0300)]
wl12xx: update rx/tx

Update the rx/tx descriptors according to the new fw api
(fw >= 6/7.3.0.0.75)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update scan cmd api
Eliad Peller [Sun, 14 Aug 2011 10:17:10 +0000 (13:17 +0300)]
wl12xx: update scan cmd api

Update the scan command to use the new fw api
(fw 6/7.3.0.0.75).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: add device role commands
Eliad Peller [Sun, 14 Aug 2011 10:17:09 +0000 (13:17 +0300)]
wl12xx: add device role commands

The device role is a special role used for rx and tx frames
prior to association (as the STA role can get packets only
from its associated bssid)

Since this role is required for the sta association process,
we enable it when a new sta interface is created.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: enable/disable role on interface add/remove
Eliad Peller [Sun, 14 Aug 2011 10:17:08 +0000 (13:17 +0300)]
wl12xx: enable/disable role on interface add/remove

According to the new multi-role flow, we have to enable the
role before using (starting) it, and disable it on cleanup
(after it's no longer needed).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update commands & events
Eliad Peller [Sun, 14 Aug 2011 10:17:07 +0000 (13:17 +0300)]
wl12xx: update commands & events

Change the commands and events according to the new fw api
(fw >= 6/7.3.0.0.75).

The main change is the replacement of JOIN/DISCONNECT commands,
with ROLE_START/ROLE_STOP commands.

The use of these commands should be preceded by the ROLE_ENABLE
command (allocating role resources), and followed by the
ROLE_DISABLE command (freeing role resources).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update acx commands
Eliad Peller [Sun, 14 Aug 2011 10:17:06 +0000 (13:17 +0300)]
wl12xx: update acx commands

Update the acx commands according to the new fw api
(fw >= 6/7.3.0.0.75).

The main change in most of the ACXs is the addition
of a new role_id/link_id field, which is required
for multi-role operation.

Currently, we don't really support multi-role, as
most of our data (inside wl) is global.
As the current fw doesn't support concurrent roles
yet, keep it this way and add wl->role_id and
wl->sta_hlid to save the active role/link.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: update fw status struct
Eliad Peller [Sun, 14 Aug 2011 10:17:05 +0000 (13:17 +0300)]
wl12xx: update fw status struct

Update the fw status struct according to the new fw api
(fw >= 6/7.0.0.35).
All the roles use the same struct now.

The memory accounting was changed a bit according to
the struct changes.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: remove rx filtering stuff
Eliad Peller [Sun, 14 Aug 2011 10:17:04 +0000 (13:17 +0300)]
wl12xx: remove rx filtering stuff

The new fw doesn't support rx_filtering configuration (as a
stand-alone command. the rx filtering is done automatically
according to the active role).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: temporarily disable advanced ap functions
Eliad Peller [Sun, 14 Aug 2011 10:17:03 +0000 (13:17 +0300)]
wl12xx: temporarily disable advanced ap functions

In order to keep to driver compiling during the patchset,
while avoiding one-huge-patch, temporarily disable some
advanced ap functions.

These changes will be reverted later in the patchset, as
part of the patches for advanced ap functions support.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: use 1 spare block in all cases
Arik Nemtsov [Sun, 14 Aug 2011 10:17:02 +0000 (13:17 +0300)]
wl12xx: use 1 spare block in all cases

Remove support for firmwares that require 2 spare blocks for packet TX
(and delete the WL12XX_QUIRK_USE_2_SPARE_BLOCKS quirk definition)

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: Use a single fw for both STA and AP roles
Arik Nemtsov [Wed, 17 Aug 2011 07:45:48 +0000 (10:45 +0300)]
wl12xx: Use a single fw for both STA and AP roles

Firmware >= 6/7.3.0.0.75 (wl127x/wl128x) supports both
STA and AP roles.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: Revert "wl12xx: schedule TX packets according to FW occupancy"
Arik Nemtsov [Sun, 14 Aug 2011 10:17:00 +0000 (13:17 +0300)]
wl12xx: Revert "wl12xx: schedule TX packets according to FW occupancy"

This does not make sense in fw >= 6/7.3.0.0.75 (wl127x/wl128x) -
we don't use Tx blocks to measure FW occupancy anymore.

This reverts commit 9e374a37b6fa2310b71d3c5657cd0c1e693120c6.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: fixes for hw_pg_ver and chip id reporting
Gery Kahn [Mon, 18 Jul 2011 11:21:49 +0000 (14:21 +0300)]
wl12xx: fixes for hw_pg_ver and chip id reporting

Fix the value of PG version for 128x at sysfs, remove write permissions
from PG version (hw_pg_ver) in sysfs and add remove files
(hw_pg_ver,bt_coex_state) from sysfs while freeing hardware.
New macro names for register Fuse_data_2_1 depend on architecture.
Propagate chip id through wiphy in PLT mode which still not work of
a bug in ethtool.

Signed-off-by: Gery Kahn <geryk@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agowl12xx: Add support to RX packets payload alignment
Shahar Levi [Thu, 14 Jul 2011 08:50:27 +0000 (11:50 +0300)]
wl12xx: Add support to RX packets payload alignment

In case of QoS packets the packet payload isn't aligned to
4 bytes. In that case the mac80211 layer take care of that
via memmove() in ieee80211_deliver_skb().
Add support of copy packets from aggregation buffer to the
skbs with packet payload aligned care. In case of QoS packets
copy the packets in offset of 2 bytes guarantee payload aligned
to 4 bytes.

Signed-off-by: Shahar Levi <shahar_levi@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
13 years agonl80211/cfg80211: Make addition of new sinfo fields safer
Jouni Malinen [Thu, 11 Aug 2011 08:46:22 +0000 (11:46 +0300)]
nl80211/cfg80211: Make addition of new sinfo fields safer

Add a comment pointing out the use of enum station_info_flags for
all new struct station_info fields. In addition, memset the sinfo
buffer to zero before use on all paths in the current tree to avoid
leaving uninitialized pointers in the data.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agocfg80211: fix a crash in nl80211_send_station
Felix Fietkau [Thu, 11 Aug 2011 01:00:33 +0000 (19:00 -0600)]
cfg80211: fix a crash in nl80211_send_station

mac80211 leaves sinfo->assoc_req_ies uninitialized, causing a random
pointer memory access in nl80211_send_station.
Instead of checking if the pointer is null, use sinfo->filled, like
the rest of the fields.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: remove obselete comments
Mohammed Shafi Shajakhan [Wed, 10 Aug 2011 10:54:57 +0000 (16:24 +0530)]
ath9k: remove obselete comments

the comments are obselete as the virtual wiphy support was removed from
the driver

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: optimize rate control statistics
Mohammed Shafi Shajakhan [Tue, 9 Aug 2011 16:03:43 +0000 (21:33 +0530)]
ath9k: optimize rate control statistics

for the ease of debugging, we display only the rate control statistics
for currently operating mode and bandwidth

Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Cc: "Balasubramanian, senthilkumar" <senthilb@qca.qualcomm.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: fix erroneous clearing of MESH_PATH_SN_VALID flag
Javier Cardona [Mon, 8 Aug 2011 23:30:50 +0000 (16:30 -0700)]
mac80211: fix erroneous clearing of MESH_PATH_SN_VALID flag

When a PREQ or PREP is received from an intermediate node, it contains
useful information for path selection but it doesn't include the
originator's sequence number.   Therefore, when updating the mesh path
to that intermediate node, we should not set the MESH_PATH_SN_VALID
flag.  BUT, if the flag is set, it should not be unset as we might have
received a valid sequence number for that intermediate node in the past.

This issue was reported, fixed and tested by Ya Bo (游波) and Pedro
Larbig (ASPj).

Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_htc: minor clean-up
Mohammed Shafi Shajakhan [Mon, 8 Aug 2011 15:48:49 +0000 (21:18 +0530)]
ath9k_htc: minor clean-up

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: clear sta.drv_priv on reconfiguration
Eliad Peller [Mon, 8 Aug 2011 13:50:22 +0000 (16:50 +0300)]
mac80211: clear sta.drv_priv on reconfiguration

drivers might assume sta.drv_priv is clear while
the sta is added, so clear it on reconfinguration.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agocfg80211/nl80211: Send AssocReq IEs to user space in AP mode
Jouni Malinen [Mon, 8 Aug 2011 09:11:52 +0000 (12:11 +0300)]
cfg80211/nl80211: Send AssocReq IEs to user space in AP mode

When user space SME/MLME (e.g., hostapd) is not used in AP mode, the
IEs from the (Re)Association Request frame that was processed in
firmware need to be made available for user space (e.g., RSN IE for
hostapd). Allow this to be done with cfg80211_new_sta().

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agonl80211: Indicate driver-based offchannel TX on mgmt_tx_cancel_wait
Jouni Malinen [Mon, 8 Aug 2011 09:10:30 +0000 (12:10 +0300)]
nl80211: Indicate driver-based offchannel TX on mgmt_tx_cancel_wait

Drivers that support frame transmission with mgmt_tx() may not support
driver-based offchannel TX. Use mgmt_tx_cancel_wait instead of mgmt_tx
when figuring out whether to indicate support for this with
NL80211_ATTR_OFFCHANNEL_TX_OK.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211_hwsim: Fix RX status reporting for HT
Jouni Malinen [Sat, 6 Aug 2011 20:07:00 +0000 (23:07 +0300)]
mac80211_hwsim: Fix RX status reporting for HT

RX_FLAG_HT must be included when reporting MCS rates. Without
this, mac80211 ended up dropping any frame sent at MCS index 12
or higher and that resulted in oddly random looking errors in
mac80211_hwsim tests.

Signed-off-by: Jouni Malinen <j@w1.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoMerge branch 'for-linville' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo...
John W. Linville [Wed, 10 Aug 2011 17:51:19 +0000 (13:51 -0400)]
Merge branch 'for-linville' of git://git./linux/kernel/git/kvalo/ath6kl

13 years agoath6kl: fix function name conflicts with ath9k
Kalle Valo [Wed, 10 Aug 2011 06:49:12 +0000 (09:49 +0300)]
ath6kl: fix function name conflicts with ath9k

Stephen reported that compilation fails if both ath6kl and ath9k are
compiled in:

drivers/net/wireless/ath/ath6kl/built-in.o: In function `htc_start':
(.opd+0x600): multiple definition of `htc_start'
drivers/net/wireless/ath/ath9k/built-in.o:(.opd+0x3e40): first defined here
drivers/net/wireless/ath/ath6kl/built-in.o: In function `.htc_stop':
(.text+0x7b40): multiple definition of `.htc_stop'
drivers/net/wireless/ath/ath9k/built-in.o:(.text+0x67b34): first defined he=
re
drivers/net/wireless/ath/ath6kl/built-in.o: In function `.htc_start':
(.text+0x7d18): multiple definition of `.htc_start'
drivers/net/wireless/ath/ath9k/built-in.o:(.text+0x67ba0): first defined he=
re
drivers/net/wireless/ath/ath6kl/built-in.o: In function `htc_stop':
(.opd+0x5e8): multiple definition of `htc_stop'
drivers/net/wireless/ath/ath9k/built-in.o:(.opd+0x3e28): first defined here

To fix this add ath6kl prefix to all public functions in htc.c.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoMerge branch 'ath6kl-next' of master.kernel.org:/pub/scm/linux/kernel/git/kvalo/ath6kl
John W. Linville [Tue, 9 Aug 2011 20:02:26 +0000 (16:02 -0400)]
Merge branch 'ath6kl-next' of /linux/kernel/git/kvalo/ath6kl

13 years agob43: Remove EXPERIMENTAL designation from LP PHY selection
Larry Finger [Sat, 30 Jul 2011 16:30:27 +0000 (11:30 -0500)]
b43: Remove EXPERIMENTAL designation from LP PHY selection

Since kernel 3.0, the problems with controlling b43 devices that have
low-power (LP) PHYs have been fixed and the EXPERIMENTAL designation
can be fixed.

This patch also fixes a typo as the device supports 802.11b communications.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Acked-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agolibertas: remove some dead code in if_spi_prog_helper_firmware()
Dan Carpenter [Sat, 6 Aug 2011 14:23:44 +0000 (07:23 -0700)]
libertas: remove some dead code in if_spi_prog_helper_firmware()

We always hit the goto and skip the printk().  The original code does
the right thing even though it looks messy.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agort2x00: Fix PCI interrupt processing race on SMP systems
Helmut Schaa [Sat, 6 Aug 2011 11:13:48 +0000 (13:13 +0200)]
rt2x00: Fix PCI interrupt processing race on SMP systems

When toggle_irq is called for PCI devices to disable device interrupts
it used tasklet_disable to wait for a possibly running tasklet to finish.
However, on SMP systems the tasklet might still be scheduled on another CPU.
Instead, use tasklet_kill to ensure that all scheduled tasklets are finished
before returning from toggle_irq.

Furthermore, it was possible that a tasklet reenabled its interrupt even
though interrupts have been disabled already. Fix this by checking the
DEVICE_STATE_ENABLED_RADIO flag before reenabling single interrupts
during tasklet processing.

While at it also enable/kill the TBTT and PRETBTT tasklets in the
toggle_irq callback and only use tasklet_kill in stop_queue to wait
for a currently scheduled beacon update before returning.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agortlwifi: Remove raw read/write routines from header
Larry Finger [Sat, 6 Aug 2011 10:55:19 +0000 (05:55 -0500)]
rtlwifi: Remove raw read/write routines from header

Now that the driver no longer uses the raw r/w routines, remove their definitions.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agortlwifi: Eliminate raw reads and writes from PCIe portion
Larry Finger [Sat, 6 Aug 2011 10:55:18 +0000 (05:55 -0500)]
rtlwifi: Eliminate raw reads and writes from PCIe portion

The PCIe driver used raw reads and writes on the PCIe hardware.
As all of these are only affecting the configuration space, all of
then can be converted to pci_{read,write}_config_XX calls.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: Use atomic reference count for interrupt ops
Rajkumar Manoharan [Fri, 5 Aug 2011 13:29:41 +0000 (18:59 +0530)]
ath9k: Use atomic reference count for interrupt ops

Let us enable/disable interrupts based on reference count.
By doing this we can ensure that interrupts are never be
enabled in the middle of tasklet processing. Instead of
addressing corner cases like "ath9k: avoid enabling interrupts
while processing rx", this approach handles it in generic manner.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Fix incorrect spur_freq_sd for AR9003
Rajkumar Manoharan [Fri, 5 Aug 2011 13:29:42 +0000 (18:59 +0530)]
ath9k_hw: Fix incorrect spur_freq_sd for AR9003

Spur frequency was incorrectly computed with 10Mhz offset
which could cause the filter would not notch out the spur
and also this could improve rx sensitivity in HT40.

Cc: Madhan Jaganathan <madhanj@qca.qualcomm.com>
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: do not enable interrupt on set interrupt mask
Rajkumar Manoharan [Fri, 5 Aug 2011 13:29:40 +0000 (18:59 +0530)]
ath9k: do not enable interrupt on set interrupt mask

At preset set_interrupt also enables interrupt after changing
mask. This is not necessary in all cases and also sometime it
breaks the assumption that interrupt was disabled. So let us
enable the interrupt explicity if it was disabled earlier.
This could also avoid unnecessary register ops and also helps
the follow up patch to have global ref count for interrupts ops.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: use register name in place of magic value
Alex Hacker [Wed, 3 Aug 2011 11:41:54 +0000 (17:41 +0600)]
ath9k_hw: use register name in place of magic value

Signed-off-by: Alex Hacker <hacker@epn.ru>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomwifiex: print driver version information
Amitkumar Karwar [Wed, 3 Aug 2011 01:42:23 +0000 (18:42 -0700)]
mwifiex: print driver version information

Add code to display driver version information in dmesg after
loading the driver successfully.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agolibertas: implement if_sdio runtime power management
Daniel Drake [Mon, 1 Aug 2011 15:43:27 +0000 (16:43 +0100)]
libertas: implement if_sdio runtime power management

The SDIO card is now fully powered down when the network interface is
brought down.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agolibertas: disable functionality when interface is down
Daniel Drake [Mon, 1 Aug 2011 15:43:13 +0000 (16:43 +0100)]
libertas: disable functionality when interface is down

Modify the driver so that it does not function when the interface is
down, in preparation for runtime power management.

No commands can be run while the interface is down, so the ndo_dev_stop
routine now directly does all necessary work (including asking the device
to disconnect from the network and disabling multicast functionality)
directly.

power_save and power_restore hooks are added meaning that card drivers
can take steps to turn the device off when the interface is down.

The MAC address can now only be changed when all interfaces are down;
the new address will be programmed when an interface gets brought up.
This matches mac80211 behaviour.

Also, some small cleanups/simplifications were made in the surrounding
device handling logic.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: Don't use EAPOL frames for rate sampling
Helmut Schaa [Mon, 1 Aug 2011 09:32:53 +0000 (11:32 +0200)]
mac80211: Don't use EAPOL frames for rate sampling

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: Fill in skb->protocol information for injected frames
Helmut Schaa [Mon, 1 Aug 2011 09:32:52 +0000 (11:32 +0200)]
mac80211: Fill in skb->protocol information for injected frames

Some drivers (ath9k for example) are using skb->protocol to treat EAPOL
frames somehow special (disallow aggregation for example).

When running in AP mode hostapd injects the EAPOL frames through a
monitor interface and thus skb->protocol isn't set at all. Hence, if the
injected frame is a data frame and carries a rfc1042 headaer update the
skb->protocol field accordingly.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agocfg80211: Update REG_DBG_PRINT macro and uses
Joe Perches [Fri, 29 Jul 2011 21:51:25 +0000 (14:51 -0700)]
cfg80211: Update REG_DBG_PRINT macro and uses

Several uses were missing terminating newlines.
Typo fix and macro neatening.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Update AR9003 high_power tx gain table
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:20 +0000 (17:38 +0530)]
ath9k_hw: Update AR9003 high_power tx gain table

The high_power tx gain table is changed to match the low_ob_db tx gain
table for both 5G and 2G.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Update the radio parameters related to high_power
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:19 +0000 (17:38 +0530)]
ath9k_hw: Update the radio parameters related to high_power

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Optimize rx descriptor processing for AR9003
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:16 +0000 (17:38 +0530)]
ath9k_hw: Optimize rx descriptor processing for AR9003

No need to process RxDone and ds_info status again in case
valid rx status is given.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: Remove virtual wiphy specific frame type
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:14 +0000 (17:38 +0530)]
ath9k: Remove virtual wiphy specific frame type

This patch cleanups virtual wiphy specific frametype structure

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: Dump modal eeprom header
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:13 +0000 (17:38 +0530)]
ath9k: Dump modal eeprom header

Debugfs file location:
<debugfs_mnt>/ieee80211/phy#/ath9k/modal_eeprom

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: Dump base eeprom header
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:12 +0000 (17:38 +0530)]
ath9k: Dump base eeprom header

Debugfs file location:
<debugfs_mnt>/ieee80211/phy#/ath9k/base_eeprom

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Add dump_eeprom support for eeprom_def
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:11 +0000 (17:38 +0530)]
ath9k_hw: Add dump_eeprom support for eeprom_def

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Add dump_eeprom support for AR9287
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:10 +0000 (17:38 +0530)]
ath9k_hw: Add dump_eeprom support for AR9287

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Add dump_eeprom support for eeprom_4k
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:09 +0000 (17:38 +0530)]
ath9k_hw: Add dump_eeprom support for eeprom_4k

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: Add dump_eeprom support for AR9003
Rajkumar Manoharan [Fri, 29 Jul 2011 12:08:08 +0000 (17:38 +0530)]
ath9k_hw: Add dump_eeprom support for AR9003

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agolib80211: remove exports for functions not called by other modules
Pavel Roskin [Fri, 29 Jul 2011 02:50:44 +0000 (22:50 -0400)]
lib80211: remove exports for functions not called by other modules

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: add core rev 17 used on bcma SoC.
Hauke Mehrtens [Sat, 23 Jul 2011 11:57:34 +0000 (13:57 +0200)]
b43: add core rev 17 used on bcma SoC.

This ieee80211 core was found on a Netgear wndr3400.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobcma: use boardflags define from ssb code
Rafał Miłecki [Sat, 23 Jul 2011 09:10:12 +0000 (11:10 +0200)]
bcma: use boardflags define from ssb code

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agossb: define boardflags
Rafał Miłecki [Sat, 23 Jul 2011 09:10:11 +0000 (11:10 +0200)]
ssb: define boardflags

They are SPROM specific, so all should be defined in ssb code.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath6kl: Release the memory allocated for the firmware
Raja Mani [Thu, 4 Aug 2011 13:56:30 +0000 (19:26 +0530)]
ath6kl: Release the memory allocated for the firmware

Nowhere the firmware memory is freed, free it during
the device destroy process.

Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Fix crash during the connection process
Raja Mani [Thu, 4 Aug 2011 13:56:29 +0000 (19:26 +0530)]
ath6kl: Fix crash during the connection process

Sometimes, the network manager is failing to connect to the AP due
to the below kernel crash message. The reason behind this,
after issuing the connect command to the chip, the chip is sending
disconnect event and then immediately one connect event to the host
in some random cases.

The host driver resets all states (including cfg80211 state machine)
when it receives disconnect event from the chip. But, still the host
driver reports the next received connect event to cfg80211, at that time
cfg80211 SME state would have been in IDLE state, which was causing
the below kernel crash.

Now, host driver's sme state machine is checked every time before
delivering connect event to cfg80211

  WARNING: at net/wireless/sme.c:517 cfg80211_connect_result+0x10d/0x120()
  [..]
  Call Trace:
  [<c0145732>] warn_slowpath_common+0x72/0xa0
  [<c05d676d>] ? cfg80211_connect_result+0x10d/0x120
  [<c05d676d>] ? cfg80211_connect_result+0x10d/0x120
  [<c0145782>] warn_slowpath_null+0x22/0x30
  [<c05d676d>] cfg80211_connect_result+0x10d/0x120
  [<f83ff497>] ath6kl_cfg80211_connect_event+0x427/0x4f0 [ath6kl]
  [<c035d26a>] ? put_dec+0x2a/0xa0
  [<c035d645>] ? number+0x365/0x380
  [<c0154675>] ? mod_timer+0x135/0x260
  [<c035e00e>] ? format_decode+0x2fe/0x370
  [<c01263c8>] ? default_spin_lock_flags+0x8/0x10
  [<c05fd91f>] ? _raw_spin_lock_irqsave+0x2f/0x50
  [<c0146032>] ? console_unlock+0x172/0x1c0
  [<f8402659>] ath6kl_connect_event+0x89/0x400 [ath6kl]
  [<f840826e>] ath6kl_wmi_control_rx+0x98e/0x1d60 [ath6kl]
  [<c01335b5>] ? __wake_up+0x45/0x60
  [<f84053aa>] ath6kl_rx+0x56a/0x770 [ath6kl]
  [<c04d0242>] ? mmc_release_host+0x22/0x40
  [<c04d9329>] ? sdio_release_host+0x19/0x30
  [<f840a27a>] ? ath6kl_sdio_read_write_sync+0x7a/0xc0 [ath6kl]
  [<f83f82b1>] do_rx_completion+0x41/0x50 [ath6kl]
  [<f83faa6a>] htc_rxmsg_pending_handler+0x6ba/0xbd0 [ath6kl]
  [<f8404bb0>] ? ath6kl_tx_data_cleanup+0x30/0x30 [ath6kl]
  [<f840a1c0>] ? ath6kl_sdio_irq_handler+0x30/0x70 [ath6kl]
  [<f83f7cd5>] ath6kldev_intr_bh_handler+0x2a5/0x630 [ath6kl]
  [<f840a1c0>] ath6kl_sdio_irq_handler+0x30/0x70 [ath6kl]
  [<c04d97c7>] sdio_irq_thread+0xc7/0x2d0
  [<c013aeb0>] ? default_wake_function+0x10/0x20
  [<c012fc98>] ? __wake_up_common+0x48/0x70
  [<c04d9700>] ? sdio_claim_irq+0x200/0x200
  [<c0163854>] kthread+0x74/0x80
  [<c01637e0>] ? kthread_worker_fn+0x160/0x160
  [<c0604c06>] kernel_thread_helper+0x6/0x10

Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Cleanup void * in ath6kl_cfg80211_scan_node()
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 12:42:15 +0000 (18:12 +0530)]
ath6kl: Cleanup void * in ath6kl_cfg80211_scan_node()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Use ath6kl_cfg80211_scan_node() directly instead of function pointer
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 09:12:52 +0000 (14:42 +0530)]
ath6kl: Use ath6kl_cfg80211_scan_node() directly instead of function pointer

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Remove ath6kl_wmi_iterate_nodes()
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 09:06:55 +0000 (14:36 +0530)]
ath6kl: Remove ath6kl_wmi_iterate_nodes()

Use wlan_iterate_nodes() directly.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Pass only the needed scan_table to ath6kl_wmi_iterate_nodes()
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 09:02:43 +0000 (14:32 +0530)]
ath6kl: Pass only the needed scan_table to ath6kl_wmi_iterate_nodes()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Move initialization/deinitialization of scan_table to appropriate functions
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 08:54:54 +0000 (14:24 +0530)]
ath6kl: Move initialization/deinitialization of scan_table to appropriate functions

By having scan_table in struct ath6kl, it makes sense to move initialization
to ath6kl_init() and deinitialization to ath6kl_destroy().

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Cleanup parameters of wlan_node_table_init()
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 08:46:57 +0000 (14:16 +0530)]
ath6kl: Cleanup parameters of wlan_node_table_init()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Remove ath6kl_wmi_get_current_bssid()
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 08:43:53 +0000 (14:13 +0530)]
ath6kl: Remove ath6kl_wmi_get_current_bssid()

Use the bssid from ath6kl directly.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
13 years agoath6kl: Remove bssid from struct wmi
Vasanthakumar Thiagarajan [Thu, 21 Jul 2011 08:39:07 +0000 (14:09 +0530)]
ath6kl: Remove bssid from struct wmi

This is nothing but bssid of struct ath6kl.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>