Commit Graph

287255 Commits

Author SHA1 Message Date
Eliad Peller
b32b2b0f8e wl12xx: increment session_counter for device role as well
The sesssion_counter has to be incremented each time
the dev is started (similar to sta role).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-03-05 15:45:24 +02:00
Eliad Peller
9fd6f21ba2 wl12xx: set authorized AP on sta_state notification
wl12xx currently looks for AP authorization by registering
a netdev notifier and waiting for the IF_OPER_UP notification,
which is quite cumbersome.

Use the newly introduced sta_state callback (waiting
for assoc -> auth notification) instead, in order to
simplify it.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-03-05 15:45:24 +02:00
Eliad Peller
2d6cf2b51f wl12xx: implement sta_state callback
Implement sta_state callback instead of the
sta_add/remove callbacks.

Update the fw regarding peer state and ht caps
only after the station was authorized. Otherwise,
the fw might try establishing BA session before
the sta is authorized.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-03-05 15:45:24 +02:00
Eliad Peller
8a6a84a471 wl12xx: consider bss_conf->idle instead of hw->conf.flags
On disassociation, check only whether the current vif
is idle, instead of checking whether the device is idle.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-03-05 15:45:24 +02:00
Eliad Peller
349345a4ec wl12xx: don't start dev role on ibss vifs
device role is used for scanning and sending packets
before connection. however, since we don't need to
send packets before ibss creation, there is no need
to start the device on idle-off.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-03-05 15:45:24 +02:00
Arik Nemtsov
d7b63b9fc7 wl12xx: increase dynamic PS timeout to 200ms
This ensures the user won't encounter lag associated with getting in and
out of PSM when the card is in use.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:25:11 +02:00
Arik Nemtsov
b9239b6658 wl12xx: flush Tx during suspend and 802.11h chan switch
Flush our Tx queues before suspending or changing the channel due to a
channel_switch element in the AP beacon.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:25:10 +02:00
Arik Nemtsov
18aa755b84 wl12xx: flush all Tx queues on tx_flush timeout
Ensure our queues are empty at the end of a tx_flush(), in case we
timeout on passively waiting for them. This makes sure no left-overs are
transmitted when we are on the wrong channel.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:25:09 +02:00
Arik Nemtsov
49c9cd2644 wl12xx: avoid starving the system hlid
Re-factor the Tx scheduler so that the system_hlid is taken into account
before restarting an iteration over the wlvifs. Previously this
hlid had a lower priority and would starve if some wlvif had many
packets.
In addition avoid iterating over wlvifs past last_wlvif when performing
the a second pass. If we had packets in those wlvifs they would have
been found earlier.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:25:09 +02:00
Arik Nemtsov
6246ca003f wl12xx: reset link Tx queues when freeing it
Before, the link was first freed (invalidating it in the map), and later
on vif removal, all valid wlvif-related links were reset. Since these
links were already invalid, we failed to reset them.
The bug was made worse by op_stop, which set the tx_queue_count to 0
arbitrarily. This resulted in a negative tx_queue_count in some scenarios.

Fix this by resetting the Tx-queues of a link when freeing it. Add a
WARN_ON and reset all link Tx-queues in op_stop, to avoid a negative
tx_queue_count.

[changed WARN_ON to WARN_ON_ONCE -- Luca]

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:24:45 +02:00
Arik Nemtsov
0b0e32b792 wl12xx: change bits in the link_map under spin lock
These bits are used in op_tx to determine if a packet should be dropped.
As such we should use the spin lock to sync the state.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:19:19 +02:00
Arik Nemtsov
5af70c864a wl12xx: set the ELP entry delay to the FW dyn-ps timeout
With PSM handled in FW, the checks in wl1271_elp_work() are always true.
Thus during active traffic we constantly enter and exit ELP (many times
per second). As each ELP exit takes ~10ms, this can have an adverse
effect on throughput and interactivity.
Set the ELP timeout to the dyn-ps timeout. This period is longer and
avoids the above problem. It also makes sense to stay out of ELP while
we are awake on the network, to minimize delays in Tx/Rx. The same thing
was done by the mac80211 dynamic-ps mechanism before the FW DPS changes.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
2012-02-28 13:19:19 +02:00
Jakub Kicinski
e8b461c377 rt2800pci: Fix 'Error - MCU request failed' during initialization
Bring MCU operations during device initialization to sync
with legacy driver.

This should fix following error:
phy0 -> rt2800pci_mcu_status: Error - MCU request failed,
no response from hardware

Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:44 -05:00
Jakub Kicinski
09a3311c1a rt2800: Add documentation on MCU requests
Add documentation on MCU communication, some of known commands and
their arguments. Supplement command ids.

Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:44 -05:00
Danny Kukawka
2530c55ea9 iwlwifi: iwl-agn.h included twice
drivers/net/wireless/iwlwifi/iwl-core.c included 'iwl-agn.h' twice,
remove the duplicate.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:43 -05:00
Antonio Quartulli
c143189ada mac80211_hwsim: correctly line up a multiline printk
The second line of a printk statement must line up to the opening bracket.

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:43 -05:00
Johannes Berg
005e472b45 mac80211: remove local_to_hw
That's a lot longer than open-coding it and
doesn't really add value, so just remove it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:42 -05:00
Johannes Berg
3431683759 mac80211: fix sta_info_flush() return value
The comment for sta_info_flush() states
"Returns the number of removed STA entries"
but that isn't actually true. Consequently,
the warning when a station is still around
on interface removal can never trigger and
this delayed finding the timer issue the
previous patch fixed. Fix the return value
here to make that warning useful again.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:42 -05:00
Johannes Berg
54e4ffb2ab mac80211: fix auth/assoc data & timer leak
When removing an interface while it is in the
process of authenticating or associating, we
leak the auth_data or assoc_data, and leave
the timer pending. The timer then crashes the
system when it fires as its data is gone.

Fix this by explicitly deleting all the data
when the interface is removed. This uncovered
another bug -- this problem should have been
detected by the sta_info_flush() warning but
that function doesn't ever return non-zero,
I'll fix that in a separate patch.

Reported-by: Hieu Nguyen <hieux.c.nguyen@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:42 -05:00
Rafał Miłecki
fda8241788 brcm80211: fmac: use correct firmware filename
Also don't use so generic BRCMF_USB_FW_NAME as we may need different
firmwares in the future.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:42 -05:00
Dan Carpenter
d4ca00992c brcm80211: fmac: fix a couple checking after dereference bugs
There were two dereferencing before checking for NULL static checker
complaints in this new file.  The list cursor is never NULL so that
check can be removed.  I moved the other dereference after the check.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:41 -05:00
Stanislav Yakovlev
06d9b6ac75 net/wireless: ipw2x00: Use IW_HANDLER macro from linux/wireless.h
Use IW_HANDLER macro in ipw2100.c to declare wireless handlers.

Note: ipw2200.c already uses it.

Signed-off-by: Stanislav Yakovlev <stas.yakovlev@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:41 -05:00
Jakub Kicinski
9d88c7f670 mac80211: use proper sub_if_data on suspend path
Use interface data from sta instead of invalid pointer
to list head in calls to drv_sta_state.

Signed-off-by: Jakub Kicinski <kubakici@wp.pl>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:40 -05:00
Sujith Manoharan
682dd04b37 ath9k: Cleanup mci.c
Cleanup whitespace, fix indentation and coding style.
Also remove debug messages that were flooding the log.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:40 -05:00
Sujith Manoharan
37cd9d78d1 ath9k_hw: MCI whitespace/debug cleanup
This patch fixes indentation and the general coding style
in ar9003_mci.c. Also, minimize the amount of debug log
output generated by MCI.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:40 -05:00
Sujith Manoharan
0cc4cdebb7 ath9k_hw: Remove HW revision checks
They are not needed since MCI will be enabled only for
AR9462 v2.0

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:39 -05:00
Sujith Manoharan
4f851df78a ath9k_hw: Cleanup MCI reset routine
* Use a separate function to enable/disable
  OneStepLookAhead.

* Remove unnecessary hardware SREV checks.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:39 -05:00
Sujith Manoharan
70982b720f ath9k: Modify ATH9K_BTCOEX_SUPPORT
ATH9K_BTCOEX_SUPPORT is now used by both ath9k and ath9k_htc
to enable BT coexistence. Fix Kbuild to allow this.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:39 -05:00
Sujith Manoharan
9a15858f0c ath9k: Remove ATH9K_HW_CAP_MCI checks
With the ability to remove BTCOEX support at compile time,
these checks are no longer needed.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:39 -05:00
Sujith Manoharan
64ab38df6e ath9k: Remove ATH_BTCOEX_CFG_NONE checks
Since BTCOEX code can be compiled out cleanly now,
remove these checks.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:38 -05:00
Sujith Manoharan
9d5b80fd36 ath9k_htc: Use CONFIG_ATH9K_BTCOEX_SUPPORT
ath9k_htc can also make use of CONFIG_ATH9K_BTCOEX_SUPPORT
to be compiled without BTCOEX support.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:38 -05:00
Sujith Manoharan
cee5341d47 ath9k_htc: Init BTCOEX inside htc_drv_gpio.c
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:38 -05:00
Sujith Manoharan
bf047fcdac ath9k_htc: Start/stop btcoex using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:37 -05:00
Sujith Manoharan
dbccdd1d32 ath9k_hw: Use CONFIG_ATH9K_BTCOEX_SUPPORT
Make use of CONFIG_ATH9K_BTCOEX_SUPPORT in ath9k_hw
to provide a clean way of compilation without BTCOEX
support.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:37 -05:00
Sujith Manoharan
a3f846f12c ath9k_hw: Cleanup MCI function declarations
This patch converts a few functions to static variants
and removes extraneous declarations.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:37 -05:00
Sujith Manoharan
f4701b5a0d ath9k_hw: Cleanup MCI bits from hw.h
This patch moves all the MCI-specific declarations that have been
dumped unceremoniously in hw.h to ar9003_mci.h

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:36 -05:00
Sujith Manoharan
528e5d3605 ath9k_hw: Cleanup MCI bits from ath9k_hw_reset()
This patch moves all the MCI-specific code in the main reset
function to helper functions.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:36 -05:00
Sujith Manoharan
f2f408eff7 ath9k_hw: Setup MCI calibration using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:36 -05:00
Sujith Manoharan
d1ca8b8ecd ath9k_hw: Handle MCI power state using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:36 -05:00
Sujith Manoharan
5a1e273573 ath9k_hw: Use a helper function to get MCI ISR
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:35 -05:00
Sujith Manoharan
d68475de96 ath9k: Initialize BTCOEX scheme using a helper
Setting up the required scheme can be done as part of the
BTCOEX initialization path and it doesn't belong in
ath9k_hw_fill_cap_info() anyway.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:35 -05:00
Sujith Manoharan
4daa7760e2 ath9k: Use CONFIG_ATH9K_BTCOEX_SUPPORT
This patch uses CONFIG_ATH9K_BTCOEX_SUPPORT to conditionally
compile btcoex-related code in the driver core.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:35 -05:00
Sujith Manoharan
c0ac53fa57 ath9k: Calculate ampdu limit using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:34 -05:00
Sujith Manoharan
56ca0dba9d ath9k: Process BTCOEX interrupts using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:34 -05:00
Sujith Manoharan
df198b172f ath9k: Use proper start/stop routines for BTCOEX
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:34 -05:00
Sujith Manoharan
5908120fdc ath9k: Move BTCOEX init/deinit functions to gpio.c
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:33 -05:00
Sujith Manoharan
d3c83ac123 ath9k: Initialize MCI params using a helper
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:33 -05:00
Sujith Manoharan
ea510e4bdd ath9k: Cleanup MCI init/deinit routines
This patch simplifies the buffer allocation functions
for MCI and removes unneeded memset calls. Also, a couple
of unused variables are removed and a memory leak in DMA
allocation is fixed.

[ 1263.788267] WARNING: at /home/sujith/dev/wireless-testing/lib/dma-debug.c:875 check_unmap+0x173/0x7e0()
[ 1263.788273] ath9k 0000:06:00.0: DMA-API: device driver frees DMA memory with different size
               [device address=0x0000000071908000] [map size=512 bytes] [unmap size=256 bytes]
[ 1263.788345] Pid: 774, comm: rmmod Tainted: G        W  O 3.3.0-rc3-wl #18
[ 1263.788348] Call Trace:
[ 1263.788355]  [<ffffffff8105110f>] warn_slowpath_common+0x7f/0xc0
[ 1263.788359]  [<ffffffff81051206>] warn_slowpath_fmt+0x46/0x50
[ 1263.788363]  [<ffffffff8125a713>] check_unmap+0x173/0x7e0
[ 1263.788368]  [<ffffffff8123fc22>] ? prio_tree_left+0x32/0xc0
[ 1263.788373]  [<ffffffff8125aded>] debug_dma_free_coherent+0x6d/0x80
[ 1263.788381]  [<ffffffffa0701c3c>] ath_mci_cleanup+0x7c/0x110 [ath9k]
[ 1263.788387]  [<ffffffffa06f4033>] ath9k_deinit_softc+0x113/0x120 [ath9k]
[ 1263.788392]  [<ffffffffa06f55cc>] ath9k_deinit_device+0x5c/0x70 [ath9k]
[ 1263.788397]  [<ffffffffa0704934>] ath_pci_remove+0x54/0xa0 [ath9k]
[ 1263.788401]  [<ffffffff81267d06>] pci_device_remove+0x46/0x110
[ 1263.788406]  [<ffffffff813102bc>] __device_release_driver+0x7c/0xe0
[ 1263.788410]  [<ffffffff81310a00>] driver_detach+0xd0/0xe0
[ 1263.788414]  [<ffffffff81310118>] bus_remove_driver+0x88/0xe0
[ 1263.788418]  [<ffffffff813111c2>] driver_unregister+0x62/0xa0
[ 1263.788421]  [<ffffffff812680c4>] pci_unregister_driver+0x44/0xc0
[ 1263.788427]  [<ffffffffa0705015>] ath_pci_exit+0x15/0x20 [ath9k]
[ 1263.788432]  [<ffffffffa070a92d>] ath9k_exit+0x15/0x31 [ath9k]
[ 1263.788436]  [<ffffffff810b971c>] sys_delete_module+0x18c/0x270
[ 1263.788441]  [<ffffffff81436edd>] ? retint_swapgs+0x13/0x1b
[ 1263.788446]  [<ffffffff812483be>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[ 1263.788450]  [<ffffffff814378e9>] system_call_fastpath+0x16/0x1b
[ 1263.788453] ---[ end trace 3ab4d030ffde40d4 ]---

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:33 -05:00
Sujith Manoharan
c91ec465ca ath9k: Remove AR9462 v1.0 support
v1.0 chips are not available in the market.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:33 -05:00
Johannes Berg
79ebfb85d4 mac80211: fix associated vs. idle race
Eliad reports that if a scan finishes in the
middle of processing associated (however it
happens), the interface can go idle. This is
because we set assoc_data to NULL before we
set associated. Change the order so any idle
check will find either one of them.

Doing this requires duplicating the TX sync
processing, but I already have a patch to
delete that completely and will submit that
as soon as my driver changes to no longer
require it are submitted.

Reported-by: Eliad Peller <eliad@wizery.com>
Tested-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-02-27 14:06:32 -05:00