platform/kernel/linux-starfive.git
10 years agobrcmfmac: Make probe function __init
Jean Delvare [Thu, 13 Mar 2014 22:21:08 +0000 (23:21 +0100)]
brcmfmac: Make probe function __init

One of the benefits of platform_driver_probe() is that you can make
the probe function __init.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Hante Meuleman <meuleman@broadcom.com>
Cc: Arend van Spriel <arend@broadcom.com>
Cc: John W. Linville <linville@tuxdriver.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k: Convert uses of __constant_<foo> to <foo>
Joe Perches [Wed, 12 Mar 2014 17:22:38 +0000 (10:22 -0700)]
ath9k: Convert uses of __constant_<foo> to <foo>

The use of __constant_<foo> has been unnecessary for quite awhile now.

Make these uses consistent with the rest of the kernel.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath5k: add missing dma_map_error call
John Greene [Tue, 11 Mar 2014 18:08:34 +0000 (14:08 -0400)]
ath5k: add missing dma_map_error call

Trivial patch to address this trace. Now calls dma_mapping_error and
return -ENOSPC if a problem found.

WARNING: at lib/dma-debug.c:933 check_unmap+0x47b/0x960()
Hardware name: Aspire 5515
ath5k 0000:02:00.0: DMA-API: device driver failed to check map
error[device address=0x00000000874fcd42] [size=45 bytes] [mapped as
single]
Modules linked in: bnep bluetooth ebtable_filter ebtables
ip6table_filter ip6_tables be2iscsi iscsi_boot_sysfs bnx2i cnic uio
cxgb4i cxgb4 cxgb3i cxgb3 mdio libcxgbi ib_iser rdma_cm ib_addr iw_cm
ib_cm ib_sa ib_mad ib_core iscsi_tcp libiscsi_tcp libiscsi
scsi_transport_iscsi arc4 snd_hda_codec_realtek snd_hda_intel
snd_hda_codec snd_hwdep snd_seq snd_seq_device ath5k ath snd_pcm
sparse_keymap snd_page_alloc mac80211 snd_timer sp5100_tco snd edac_core
k8temp soundcore edac_mce_amd i2c_piix4 cfg80211 rfkill shpchp vhost_net
tun macvtap macvlan kvm_amd kvm uinput dm_crypt ata_generic pata_acpi
radeon i2c_algo_bit pata_atiixp drm_kms_helper ttm drm r8169 mii
i2c_core wmi video sunrpc
Pid: 820, comm: firewalld Not tainted 3.9.0-0.rc3.git1.4.fc19.x86_64 #1
Call Trace:
 <IRQ>  [<ffffffff81068df0>] warn_slowpath_common+0x70/0xa0
 [<ffffffff81068e6c>] warn_slowpath_fmt+0x4c/0x50
 [<ffffffff8137ebeb>] check_unmap+0x47b/0x960
 [<ffffffff81021cf5>] ? native_sched_clock+0x15/0x80
 [<ffffffff81021d69>] ? sched_clock+0x9/0x10
 [<ffffffff8137f12f>] debug_dma_unmap_page+0x5f/0x70
 [<ffffffffa048fa07>] ath5k_tasklet_tx+0x157/0x3f0 [ath5k]
 [<ffffffff810acc0d>] ? sched_clock_local+0x1d/0x80
 [<ffffffff81072aa6>] ? tasklet_action+0x56/0x210
 [<ffffffff81072ae7>] tasklet_action+0x97/0x210
 [<ffffffff8107343f>] __do_softirq+0xff/0x400
 [<ffffffff81073905>] irq_exit+0xb5/0xc0
 [<ffffffff81728916>] do_IRQ+0x56/0xc0
 [<ffffffff8171dc32>] common_interrupt+0x72/0x72
 <EOI>  [<ffffffff811f1f81>] ? dput+0x111/0x310
 [<ffffffff811f1ea7>] ? dput+0x37/0x310
 [<ffffffff811e75e8>] link_path_walk+0x528/0x910
 [<ffffffff811ea624>] path_openat+0x94/0x530
 [<ffffffff811eb148>] do_filp_open+0x38/0x80
 [<ffffffff811e1dda>] open_exec+0x4a/0x130
 [<ffffffff81238be3>] load_elf_binary+0x7f3/0x18e0
 [<ffffffff81021d69>] ? sched_clock+0x9/0x10
 [<ffffffff810acc0d>] ? sched_clock_local+0x1d/0x80
 [<ffffffff810acd98>] ? sched_clock_cpu+0xa8/0x100
 [<ffffffff810d515d>] ? trace_hardirqs_off+0xd/0x10
 [<ffffffff810acedf>] ? local_clock+0x5f/0x70
 [<ffffffff810d5dbf>] ? lock_release_holdtime.part.28+0xf/0x190
 [<ffffffff812383f0>] ? elf_core_dump+0x1980/0x1980
 [<ffffffff811e1151>] search_binary_handler+0x1a1/0x4f0
 [<ffffffff811e1017>] ? search_binary_handler+0x67/0x4f0
 [<ffffffff811e28fc>] do_execve_common.isra.26+0x64c/0x710
 [<ffffffff811e23c2>] ? do_execve_common.isra.26+0x112/0x710
 [<ffffffff811e2cc6>] sys_execve+0x36/0x50
 [<ffffffff81727249>] stub_execve+0x69/0xa0

Signed-off-by: John Greene <jogreene@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_hw: set ANI firstep as absolute values instead of relative
Felix Fietkau [Tue, 11 Mar 2014 15:10:34 +0000 (16:10 +0100)]
ath9k_hw: set ANI firstep as absolute values instead of relative

On older chips, the INI value differ in similar ways as cycpwr_thr1, so
convert it to absolute values as well.

Since the ANI algorithm is different here compared to the old
implementation (fewer steps, controlled at a different point in time),
it makes sense to use values similar to what would be applied for newer
chips, just without relying on INI defaults.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_hw: set ANI cycpwr_thr1 as absolute values instead of relative
Felix Fietkau [Tue, 11 Mar 2014 15:10:33 +0000 (16:10 +0100)]
ath9k_hw: set ANI cycpwr_thr1 as absolute values instead of relative

The table was copied from the ANI implementation of AR9300. It assumes
that the INI values contain a baseline value that is usable as reference
from which to increase/decrease based on the noise immunity value.

On older chips, the differences are bigger and especially AR5008/AR9001
are configured to much more sensitive values than what is useful.

Improve ANI behavior by reverting to the absolute values used in the
previous implementation (expressed as a simple formula instead of the
old table).

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_hw: remove ANI function restrictions for AP mode
Felix Fietkau [Mon, 10 Mar 2014 18:56:33 +0000 (19:56 +0100)]
ath9k_hw: remove ANI function restrictions for AP mode

The primary purpose of this piece of code was to selectively disable
OFDM weak signal detection. The checks for this are elsewhere, and an
earlier commit relaxed the restrictions for older chips, which are more
sensitive to interference.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowireless: Kconfig: add missing dependency for airo_cs
Arnd Bergmann [Mon, 10 Mar 2014 14:05:25 +0000 (15:05 +0100)]
wireless: Kconfig: add missing dependency for airo_cs

commit 4c59ff221e070 "wireless: Kconfig: add missing dependency" added a number
of 'depends on CFG80211' statements, but missed the AIRO_CS driver that
also causes the airo.c file to be built. This adds the (hopefully) last
such missing statement

Cc: "Zhao, Gang" <gamerh2o@gmail.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmsmac: update comment to reflect the code
Emil Goode [Sun, 9 Mar 2014 20:06:52 +0000 (21:06 +0100)]
brcmsmac: update comment to reflect the code

The brcms_attach function is defined as static but the comment is
saying that it should not be static or gcc will issue a warning.
I believe we can remove the comment as I don't se a problem with
this function being defined as static.

Signed-off-by: Emil Goode <emilgoode@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmsmac: fix deadlock on missing firmware
Emil Goode [Sun, 9 Mar 2014 20:06:51 +0000 (21:06 +0100)]
brcmsmac: fix deadlock on missing firmware

When brcm80211 firmware is not installed networking hangs.
A deadlock happens because we call ieee80211_unregister_hw()
from the .start callback of struct ieee80211_ops. When .start
is called we are under rtnl lock and ieee80211_unregister_hw()
tries to take it again.

Function call stack:

dev_change_flags()
__dev_change_flags()
__dev_open()
ASSERT_RTNL() <-- Assert rtnl lock
ops->ndo_open()

.ndo_open = ieee80211_open,

ieee80211_open()
ieee80211_do_open()
drv_start()
local->ops->start()

.start = brcms_ops_start,

brcms_ops_start()
brcms_remove()
ieee80211_unregister_hw()
rtnl_lock() <-- Here we deadlock

Introduced by:
commit 25b5632fb35ca61b8ae3eee235edcdc2883f7a5e
("brcmsmac: request firmware in .start() callback")

This patch fixes the bug by removing the call to brcms_remove()
and moves the brcms_request_fw() call to the top of the .start
callback to not initiate anything unless firmware is installed.

Signed-off-by: Emil Goode <emilgoode@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k: clean up and enhance ANI debugfs file
Felix Fietkau [Sun, 9 Mar 2014 10:27:49 +0000 (11:27 +0100)]
ath9k: clean up and enhance ANI debugfs file

Unify scnprintf calls and include the current OFDM/CCK immunity level.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k: fix ready time of the multicast buffer queue
Felix Fietkau [Sun, 9 Mar 2014 10:02:54 +0000 (11:02 +0100)]
ath9k: fix ready time of the multicast buffer queue

qi->tqi_readyTime is written directly to registers that expect
microseconds as unit instead of TU.
When setting the CABQ ready time, cur_conf->beacon_interval is in TU, so
convert it to microseconds before passing it to ath9k_hw.

This should hopefully fix some Tx DMA issues with buffered multicast
frames in AP mode.

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortl8180: prepare to handle more than two chip types
Andrea Merello [Sat, 8 Mar 2014 17:36:37 +0000 (18:36 +0100)]
rtl8180: prepare to handle more than two chip types

Currently a "r8185" integer variable is used as a boolean flag to
indicate whether the card is a rtl8185 or not.
Since now the driver supports only rtl8185 and rtl8180 cards, if
"r8185" variable is zero then the card is implicitly assumed to
be a rtl8180.

Now I'm preparing to add support for a third card type (rtl8187se).

This patch changes the "r8185" flag with an enum variable to
explicitly indicate which card type we have.

I'm submitting this this patch now, even if I still have to submit
other patches that not pertain with rtl8187se support, because
IMHO it's not worth rebasing them on the current code, using r8185
flag, and then changing them back again nearly immediately.
BTW if someone feels I really should do this, please tell me..

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: add AMSDU inside AMPDU support
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:31 +0000 (19:41 -0800)]
mwifiex: add AMSDU inside AMPDU support

Currently AMPDU aggregation is preferred over AMSDU. AMSDU
aggregation is performed only if AMPDU streams in firmware
are full.
This patch adds simultaneous AMSDU and AMPDU aggregation
support. This mechanism helps to improve throughput.
AMSDU is enabled only for 8897 chipsets which supports 4K
transmit buffer. User can disable AMSDU using
'disable_tx_amsdu' module parameter.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: create separate function mwifiex_11n_dispatch_pkt()
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:30 +0000 (19:41 -0800)]
mwifiex: create separate function mwifiex_11n_dispatch_pkt()

Existing mwifiex_11n_dispatch_pkt() function is renamed as
mwifiex_11n_dispatch_pkt_until_start_win() and a new function
mwifiex_11n_dispatch_pkt() is created for a common code which
dispatches single packet based on interface type.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: code rearrangement for better readability
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:29 +0000 (19:41 -0800)]
mwifiex: code rearrangement for better readability

Use negative check for 'status' and return from the function.
This improves readability by avoiding line splits. Also, local
variable is used for start window calculations.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: use VHT MCS mask in set bitrate mask handler
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:28 +0000 (19:41 -0800)]
mwifiex: use VHT MCS mask in set bitrate mask handler

As V15 firmware supports VHT rate configuration, we can use this
information received in set bitrate mask handler.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: add VHT MCS rate configuration support
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:27 +0000 (19:41 -0800)]
mwifiex: add VHT MCS rate configuration support

During Tx rate configuration, newer firmware V15 expects bitmap
for VHT MCS rates as well.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: extract firmware API version number
Amitkumar Karwar [Sat, 8 Mar 2014 03:41:26 +0000 (19:41 -0800)]
mwifiex: extract firmware API version number

The firmware API version number will be used for future patches
to support different firmware API specs.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agop54usb: fix leaks at failure path in p54u_probe()
Alexey Khoroshilov [Fri, 7 Mar 2014 21:11:49 +0000 (01:11 +0400)]
p54usb: fix leaks at failure path in p54u_probe()

If p54u_load_firmware() fails, p54u_probe() does not deallocate
already allocated resources. The patch adds proper failure handling.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoMerge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi...
John W. Linville [Fri, 14 Mar 2014 18:33:19 +0000 (14:33 -0400)]
Merge branch 'for-john' of git://git./linux/kernel/git/iwlwifi/iwlwifi-fixes

10 years agoMerge branch 'for-linville' of git://github.com/kvalo/ath
John W. Linville [Fri, 14 Mar 2014 18:25:53 +0000 (14:25 -0400)]
Merge branch 'for-linville' of git://github.com/kvalo/ath

10 years agortlwifi: rtl8723be: Fix array dimension problems
Larry Finger [Mon, 10 Mar 2014 23:53:10 +0000 (18:53 -0500)]
rtlwifi: rtl8723be: Fix array dimension problems

Commit a619d1abe20c leads to the following static checker warning:

drivers/net/wireless/rtlwifi/rtl8723be/phy.c:667 _rtl8723be_store_tx_power_by_rate()
error: buffer overflow 'rtlphy->tx_power_by_rate_offset[band]' 4 <= 5

This warning arises because the code is testing the indices for the wrong maximum
values. In addition, the tests merely putput a warning, and then procedes to
corrupt memory. With this change, any such invalid memory access is avoided.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowlan-ng: fixup staging driver for removal of ieee80211_dsss_chan_to_freq
John W. Linville [Thu, 13 Mar 2014 17:08:27 +0000 (13:08 -0400)]
wlan-ng: fixup staging driver for removal of ieee80211_dsss_chan_to_freq

Commit 3ebe8e257307 ("ieee80211: remove function
ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan}") removed
ieee80211_dsss_chan_to_freq, but it neglected to account for this
staging driver...

Cc: Zhao, Gang <gamerh2o@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortl8821ae: fixup staging driver for revised ieee80211_is_robust_mgmt_frame
John W. Linville [Thu, 13 Mar 2014 16:53:52 +0000 (12:53 -0400)]
rtl8821ae: fixup staging driver for revised ieee80211_is_robust_mgmt_frame

Commit d8ca16db6bb2 ("mac80211: add length check in
ieee80211_is_robust_mgmt_frame()") changed that API to take an skb,
and added "_ieee80211_is_robust_mgmt_frame" as a direct replacement
for the older API.  This is the same fix that was applied to the other
rtlwifi drivers in that commit.

Cc: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoRevert "Revert "Staging: rtl8812ae: remove modules field of rate_control_ops""
John W. Linville [Thu, 13 Mar 2014 15:11:49 +0000 (11:11 -0400)]
Revert "Revert "Staging: rtl8812ae: remove modules field of rate_control_ops""

This reverts commit 161d7855543520cde5f49df788b0ea0553a9f83a.

Reversal of fortune -- I thought this was going to be resolved by other
means, but that hasn't materialized.  Plus, apparently we now care more
than I realized about not breaking staging drivers...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoiwlwifi: dvm: take mutex when sending SYNC BT config command
Emmanuel Grumbach [Mon, 10 Mar 2014 13:22:03 +0000 (15:22 +0200)]
iwlwifi: dvm: take mutex when sending SYNC BT config command

There is a flow in which we send the host command in SYNC
mode, but we don't take priv->mutex.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1046495

Cc: <stable@vger.kernel.org>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
10 years agoath10k: do not overwrite max_antenna_gain
Marek Puzyniak [Wed, 5 Mar 2014 12:10:33 +0000 (13:10 +0100)]
ath10k: do not overwrite max_antenna_gain

Seems like we have an old bug, where we incidently overwrites
the max_antenna_gain we pass to firmware, with zero value.

End of all we are artifically reducing the output power.

This patch removes the excessive assignment on max_antenna_gain,
which is being provided by regulatory domain, and consequently
improves the tx power.

Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com>
Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
10 years agoath10k: support msdu chaining
Ben Greear [Mon, 3 Mar 2014 22:07:09 +0000 (14:07 -0800)]
ath10k: support msdu chaining

Consolidate the list of msdu skbs into the msdu-head skb, delete the
rest of the skbs, pass the msdu-head skb on up the stack as normal.

Tested with high-speed TCP and UDP traffic on modified firmware that
supports raw-rx.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
10 years agomwl8k: mwl8k_update_survey can be static
Yogesh Ashok Powar [Thu, 6 Mar 2014 15:12:58 +0000 (20:42 +0530)]
mwl8k: mwl8k_update_survey can be static

It fixes following sparse check warning
>#make C=1 CF=-D__CHECK_ENDIAN__ drivers/net/wireless/mwl8k.o
>drivers/net/wireless/mwl8k.c:3089:6: warning: symbol 'mwl8k_update_survey' was not declared. Should it be static?

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwl8k: le32_to_cpu cast to restricted
Yogesh Ashok Powar [Thu, 6 Mar 2014 15:12:43 +0000 (20:42 +0530)]
mwl8k: le32_to_cpu cast to restricted

It fixes couple of sparse check
>#make C=1 CF=-D__CHECK_ENDIAN__ drivers/net/wireless/mwl8k.o
>drivers/net/wireless/mwl8k.c:3104:19: warning: cast to restricted __le32
>drivers/net/wireless/mwl8k.c:3108:18: warning: cast to restricted __le32

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmfmac: Use atomic functions for intstatus update.
Hante Meuleman [Thu, 6 Mar 2014 09:16:12 +0000 (10:16 +0100)]
brcmfmac: Use atomic functions for intstatus update.

The intstatus in sdio code can be updated from different
threads. To protect intstatus access, atomic functions are
used. One of them is set_bit, but this function is not
guaranteed atomic on all platforms. The loop was replaced
with local created OR function.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoRevert "brcmfmac: Use atomic functions for intstatus update."
Arend van Spriel [Thu, 6 Mar 2014 09:16:11 +0000 (10:16 +0100)]
Revert "brcmfmac: Use atomic functions for intstatus update."

This reverts commit c98db0bec72ac7ef127119c1ed962d6f56802b12.

The function atomic_set_mask() is not architecture independent
so it can not be used in the driver as is.

Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723be: Fix smatch warnings
Larry Finger [Wed, 5 Mar 2014 23:26:01 +0000 (17:26 -0600)]
rtlwifi: rtl8723be: Fix smatch warnings

Smatch reports the following:

drivers/net/wireless/rtlwifi/rtl8723be/fw.c:208 _rtl8723be_fill_h2c_command() warn: variable dereferenced before check 'rtlhal' (see line 69)
drivers/net/wireless/rtlwifi/rtl8723be/hw.c:1732 _rtl8723be_read_adapter_info() error: __builtin_memcpy() '&rtlefuse->efuse_map[0][0]' too small (256 vs 512)

The first one is fixed by removing two pointless tests for NULL pointers.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723be: Fix sparse errors
Larry Finger [Wed, 5 Mar 2014 23:26:00 +0000 (17:26 -0600)]
rtlwifi: rtl8723be: Fix sparse errors

Sparse reports the following:

drivers/net/wireless/rtlwifi/rtl8723be/sw.c:374:14: sparse: duplicate const

drivers/net/wireless/rtlwifi/rtl8723be/hw.c:2214:30: sparse: cast to restricted __le32

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8192ce: Handle unused switch case
Larry Finger [Wed, 5 Mar 2014 23:25:59 +0000 (17:25 -0600)]
rtlwifi: rtl8192ce: Handle unused switch case

This patch prevents log spamming by adding a case for a previously
unhandled case.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723ae: Fix too long disable of IRQs
Larry Finger [Tue, 4 Mar 2014 22:53:53 +0000 (16:53 -0600)]
rtlwifi: rtl8723ae: Fix too long disable of IRQs

In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
<olivier@trillion01.com> fixed a problem caused by an extra long disabling
of interrupts. This patch makes the same fix for rtl8723ae.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8188ee: Fix too long disable of IRQs
Larry Finger [Tue, 4 Mar 2014 22:53:52 +0000 (16:53 -0600)]
rtlwifi: rtl8188ee: Fix too long disable of IRQs

In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
<olivier@trillion01.com> fixed a problem caused by an extra long disabling
of interrupts. This patch makes the same fix for rtl8188ee.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8192se: Fix too long disable of IRQs
Larry Finger [Tue, 4 Mar 2014 22:53:51 +0000 (16:53 -0600)]
rtlwifi: rtl8192se: Fix too long disable of IRQs

In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
<olivier@trillion01.com> fixed a problem caused by an extra long disabling
of interrupts. This patch makes the same fix for rtl8192se.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8192cu: Fix too long disable of IRQs
Larry Finger [Tue, 4 Mar 2014 22:53:50 +0000 (16:53 -0600)]
rtlwifi: rtl8192cu: Fix too long disable of IRQs

In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
<olivier@trillion01.com> fixed a problem caused by an extra long disabling
of interrupts. This patch makes the same fix for rtl8192cu.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723be: rtl8723com: Remove unused allow_all_destaddr functions
Larry Finger [Tue, 4 Mar 2014 22:53:49 +0000 (16:53 -0600)]
rtlwifi: rtl8723be: rtl8723com: Remove unused allow_all_destaddr functions

In a previous commit, Peter Wu removed this call as configure_filter takes care
of setting/clearing RCR_AAP. This patch makes the same change for rtl8723be.

In addition, a change is made in the logging level for one debug printout.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: Move common routines to core
Larry Finger [Tue, 4 Mar 2014 22:53:48 +0000 (16:53 -0600)]
rtlwifi: Move common routines to core

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8192ce: rtl8192cu: rtl8192de: rtl8192se: rtl8723ae: rtl8723be: rtl8188eu...
Larry Finger [Tue, 4 Mar 2014 22:53:47 +0000 (16:53 -0600)]
rtlwifi: rtl8192ce: rtl8192cu: rtl8192de: rtl8192se: rtl8723ae: rtl8723be: rtl8188eu: Modify for new API

The addition of a driver for the RTL8821AE requires a new API for the
fill_tx_desc() and set_desc() callback routines. This commit makes the
appropriate modifications in all the other drivers.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoiwl4965: disable 8K A-MSDU by default
Stanislaw Gruszka [Tue, 4 Mar 2014 13:18:42 +0000 (14:18 +0100)]
iwl4965: disable 8K A-MSDU by default

iwlegacy version of this iwlwifi patch:

commit aed7d9ac1836defe033b561f4306e39014ac56fd
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Wed Feb 20 11:33:00 2013 +0200

    iwlwifi: disable 8K A-MSDU by default

    Supporting 8K A-MSDU means that we need to allocate order 1
    pages for every Rx packet. Even when there is no traffic.
    This adds stress on the memory manager. The handling of
    compound pages is also less trivial for the memory manager
    and not using them will make the allocation code run faster
    although I didn't really measure.
    Eric also pointed out that having huge buffers with little
    data in them is not very nice towards the TCP stack since
    the truesize of the skb is huge. This doesn't allow TCP
    to have a big Rx window.
    See https://patchwork.kernel.org/patch/2167711/ for details.

    Note that very few vendors will actually send A-MSDU.
    Disable this feature by default.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoDrivers:net:wireless:ti:wl1251: Fixed Sparse invalid assignment warning
Surendra Patil [Tue, 4 Mar 2014 08:18:52 +0000 (00:18 -0800)]
Drivers:net:wireless:ti:wl1251: Fixed Sparse invalid assignment warning

Sparse warns about invalid assignment in
drivers/net/wireless/ti/wl1251/cmd.c:451:42: warning: invalid assignment: |=
drivers/net/wireless/ti/wl1251/cmd.c:451:42:    left side has type restricted __le16
drivers/net/wireless/ti/wl1251/cmd.c:451:42:    right side has type int
Hence type converted right side to __le16.

Signed-off-by: Surendra Patil <surendra.tux@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723be: Add new driver
Larry Finger [Fri, 28 Feb 2014 21:16:50 +0000 (15:16 -0600)]
rtlwifi: rtl8723be: Add new driver

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723ae: rtl8723-common: Copy common dynamic power management code
Larry Finger [Fri, 28 Feb 2014 21:16:49 +0000 (15:16 -0600)]
rtlwifi: rtl8723ae: rtl8723-common: Copy common dynamic power management code

The drivers for RTL8723AE and RTL8723BE have some code in common.
This commit copies the common power management routines into the shared
code.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723ae: rtl8723-common: Copy common firmware code
Larry Finger [Fri, 28 Feb 2014 21:16:48 +0000 (15:16 -0600)]
rtlwifi: rtl8723ae: rtl8723-common: Copy common firmware code

The drivers for RTL8723AE and RTL8723BE have some code in common.
This commit copies the common firmware routines into the shared
code.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: rtl8723ae: rtl8723-common: Create new driver for common code
Larry Finger [Fri, 28 Feb 2014 21:16:47 +0000 (15:16 -0600)]
rtlwifi: rtl8723ae: rtl8723-common: Create new driver for common code

The drivers for RTL8723AE and RTL8723BE have some code in common.
This commit creates a driver for this code that will be shared, and
copies those common routines from rtl8723ae's phy code.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: Prepare existing drivers for new driver
Larry Finger [Fri, 28 Feb 2014 21:16:46 +0000 (15:16 -0600)]
rtlwifi: Prepare existing drivers for new driver

A driver for the RTL8723BE will soon be added. This patch adds the
necessary parts to the common headers, and modifies the existing
drivers for those changes.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: btcoexist: Add new mini driver
Larry Finger [Fri, 28 Feb 2014 21:16:43 +0000 (15:16 -0600)]
rtlwifi: btcoexist: Add new mini driver

A new driver in the rtlwifi family for the RTL8723BE will soon be added.
The bluetooth coexistence code for this device has been split into a separate
mini driver as it will be shared with other devices.  This commit adds the
the headers and sources, and modifies Kconfig and Makefile to configure and
build this driver.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortl818x: make sure TX descriptor writes are done before kicking DMA
andrea merello [Tue, 18 Feb 2014 01:10:46 +0000 (02:10 +0100)]
rtl818x: make sure TX descriptor writes are done before kicking DMA

The TX descriptors are consumed by the HW using DMA.
Even if in the driver code the TX descriptor writes appears before
the HW "dma kick" register writes, the CPU may reorder them.

If this happens, the TX may not happen at all becase the "valid"
descriptor flag may have not been set yet.

This patch adds a write memory barrier to ensures the TX
descriptor is written before writing to the HW "dma kick" register.

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortl818x: Make sure the TX descriptor "valid" flag is written by last
andrea merello [Tue, 18 Feb 2014 01:10:45 +0000 (02:10 +0100)]
rtl818x: Make sure the TX descriptor "valid" flag is written by last

The TX descriptors are consumed by the HW using DMA.
Even if in the driver code the memory write that sets the "valid"
flag appears after all other writes, the CPU may reorder writes,
causing the HW to consider as valid a not-fully-written yet
descriptor.

This may cause HW incorrect behaviour.

This can happen because (AFAIK) the HW may attempt DMA
asynchronously without waiting to be kicked by the following
register write.

This patch adds a write memory barrier to enforce writes ordering.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
John W. Linville [Tue, 4 Mar 2014 18:05:12 +0000 (13:05 -0500)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless

Conflicts:
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/mwifiex/pcie.c

10 years agoiwlwifi: fix and add 7265 series HW IDs
Oren Givon [Tue, 4 Mar 2014 12:47:39 +0000 (14:47 +0200)]
iwlwifi: fix and add 7265 series HW IDs

Update of the HW IDs for the 7265 series.

Signed-off-by: Oren Givon <oren.givon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
10 years agoiwlwifi: mvm: don't WARN when statistics are handled late
Emmanuel Grumbach [Tue, 4 Mar 2014 08:28:23 +0000 (10:28 +0200)]
iwlwifi: mvm: don't WARN when statistics are handled late

Since the statistics handler is asynchrous, it can very well
be that we will handle the statistics (hence the RSSI
fluctuation) when we already disassociated.
Don't WARN on this case.

This solves: https://bugzilla.redhat.com/show_bug.cgi?id=1071998

Cc: <stable@vger.kernel.org> [3.10+]
Fixes: 2b76ef13086f ("iwlwifi: mvm: implement reduced Tx power")
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
10 years agowil6210: fix smatch warning in wil_cfg80211_get_station()
Vladimir Kondratiev [Sun, 2 Mar 2014 09:20:51 +0000 (11:20 +0200)]
wil6210: fix smatch warning in wil_cfg80211_get_station()

Smatch suggests to propagate error code from wil_find_cid(), and, indeed,
it is a good idea.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: fix buffer overflow in wil_txdesc_debugfs_show()
Vladimir Kondratiev [Sun, 2 Mar 2014 09:20:50 +0000 (11:20 +0200)]
wil6210: fix buffer overflow in wil_txdesc_debugfs_show()

Wrong index comparison logic, found by smatch:

drivers/net/wireless/ath/wil6210/debugfs.c:402 wil_txdesc_debugfs_show() warn: buffer overflow 'wil->vring_tx' 24 <= 24

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowl1251: use skb_trim to make skb shorter
Ivaylo Dimitrov [Sat, 1 Mar 2014 12:52:06 +0000 (14:52 +0200)]
wl1251: use skb_trim to make skb shorter

the current code is directly setting skb->len, which is not correct and
brings problems with HAVE_EFFICIENT_UNALIGNED_ACCESS enabled in config

Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowireless: Kconfig: add missing dependency
Zhao, Gang [Sat, 1 Mar 2014 06:26:29 +0000 (14:26 +0800)]
wireless: Kconfig: add missing dependency

Previous driver changes to airo, atmel, wl3501_cs, and usb_zd1201 need
to include <net/cfg80211.h>, which depends on CFG80211, so add the
missing dependency.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Zhao, Gang <gamerh2o@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_hw: tweak noise immunity thresholds for older chipsets
Felix Fietkau [Fri, 28 Feb 2014 18:02:25 +0000 (19:02 +0100)]
ath9k_hw: tweak noise immunity thresholds for older chipsets

Older chipsets are more sensitive to high PHY error counts, and the
current noise immunity thresholds were based on tests run at QCA with
newer chipsets.

This patch brings back the values from the old ANI implementation for
old chipsets, and it also disables weak signal detection on an earlier
noise immunity level, to improve overall radio stability on affected
devices.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_hw: toggle weak signal detection in AP mode on older chipsets
Felix Fietkau [Fri, 28 Feb 2014 18:02:24 +0000 (19:02 +0100)]
ath9k_hw: toggle weak signal detection in AP mode on older chipsets

The commit 80b4205b "ath9k: Fix OFDM weak signal detection for AP mode"
prevented weak signal detection changes from taking effect in AP mode on
all chipsets, claiming it is "not allowed".

The main reason for not disabling weak signal detection in AP mode is
that typically beacon RSSI is used to track whether it is needed to
boost range, and this is unavailable in AP mode for obvious reasons.

The problem with not disabling weak signal detection is that older
chipsets are very sensitive to high PHY error counts. When faced with
heavy noise, this can lead to an excessive amount of "Failed to stop
TX DMA" errors in the field.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k: fix invalid max frame length
Sylvain Roger Rieunier [Thu, 27 Feb 2014 13:36:06 +0000 (14:36 +0100)]
ath9k: fix invalid max frame length

According to 802.11n-2012 standard in paragraph PPDU Fromat(20.3.2) HT-mixed
format  Hearder PPDU contains : L_STF, L_LTF, L_SIG, HT_SIG, HT_STF, HT_LTF
they are symbols in the preamble, there are in time unit(us) that's for why
it can't be computed in bytes

Signed-off-by: Sylvain ROGER RIEUNIER <sylvain.roger.rieunier@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agonet: Replace min macro with min_t
Silvan Jegen [Tue, 25 Feb 2014 17:12:52 +0000 (18:12 +0100)]
net: Replace min macro with min_t

Instead of an explicit cast, use the min_t macro.

Signed-off-by: Silvan Jegen <s.jegen@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoMerge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot...
John W. Linville [Mon, 3 Mar 2014 19:59:12 +0000 (14:59 -0500)]
Merge branch 'for-upstream' of git://git./linux/kernel/git/bluetooth/bluetooth-next

10 years agoath10k: add vdev-id, return code to error codes
Ben Greear [Thu, 27 Feb 2014 16:50:00 +0000 (18:50 +0200)]
ath10k: add vdev-id, return code to error codes

When using multiple vdevs (stations, aps, etc), it is
nice to be able to associate log messages with specific
interfaces.  So, add vdev-id to most logging messages.
Add return code as well, where it was missing.

kvalo: unify some of the messages to follow the same style

Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
10 years agobrcmfmac: reset suspend flag upon sdio suspend failure
Arend van Spriel [Tue, 25 Feb 2014 19:30:38 +0000 (20:30 +0100)]
brcmfmac: reset suspend flag upon sdio suspend failure

The suspend callback first sets the suspend flag used in the driver
but after that the actual suspend is done, which may fail. Reset the
flag upon suspend failure.

Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: update MCS information as per antenna settings
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:18 +0000 (19:35 -0800)]
mwifiex: update MCS information as per antenna settings

Even if the device is changed to 1X1 mode, data is sent with
higher MCS rates after association.

This patch fixes the problem by updating MCS information field
in HT capability when antenna setting changes so that correct
information will be advertised in association and probe request.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: replace num_cmd_timeout with is_cmd_timedout
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:17 +0000 (19:35 -0800)]
mwifiex: replace num_cmd_timeout with is_cmd_timedout

Command timeout happens when firmware goes into bad state.
There is no chance that next command will be successful after
this. Hence we will maintain a flag instead of count.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: get rid of extra num_cmd_timeout variable
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:16 +0000 (19:35 -0800)]
mwifiex: get rid of extra num_cmd_timeout variable

We already have one in mwifiex_adapter structure.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: block further commands after timeout
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:15 +0000 (19:35 -0800)]
mwifiex: block further commands after timeout

This patch adds a check in command preparation routine.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmfmac: use pre-allocated scatter-gather table for txglomming
Arend van Spriel [Thu, 27 Feb 2014 18:25:00 +0000 (19:25 +0100)]
brcmfmac: use pre-allocated scatter-gather table for txglomming

Instead of allocating a scatter-gather table for every transmit
reuse a pre-allocated table. The transmit path will be faster by
taking out this allocation.

Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmfmac: Correct mcs index report
Daniel Kim [Tue, 25 Feb 2014 19:30:36 +0000 (20:30 +0100)]
brcmfmac: Correct mcs index report

There is a mismatch between the mcs index(0-7) reported to cfg80211
and the actual mcs index(0-15) in use. This patch resolves the mismatch
by setting mcs info with the number of chains read from FW.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Daniel Kim <dekim@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmfmac: Put frame sdio tx error handling in sub function.
Hante Meuleman [Tue, 25 Feb 2014 19:30:35 +0000 (20:30 +0100)]
brcmfmac: Put frame sdio tx error handling in sub function.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: stop AP at shutdown time
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:17 +0000 (19:35 -0800)]
mwifiex: stop AP at shutdown time

Deauth is sent to AP when the device is acting as station at
shutdown time. Similarly we should stop AP operation also.
mwifiex_deauthenticate() takes care closing the connection
based on provided interface type.

Add a new function to simplify the code.

Reported-by: Avery Pennarun <apenwarr@gmail.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: skipping pending commands after unload
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:16 +0000 (19:35 -0800)]
mwifiex: skipping pending commands after unload

We skip downloading other commands after FUNC_SHUTDOWN is queued
during driver unload. Main thread should be woken up each time
after freeing skipped command so that FUNC_SHUTDOWN gets served
in case if there are other pending commands before FUNC_SHUTDOWN.
Also, call mwifiex_complete_cmd() only for synchronous commands.

Reported-by: Avery Pennarun <apenwarr@gmail.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Maithili Hinge <maithili@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: abort scan while cancelling pending command
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:15 +0000 (19:35 -0800)]
mwifiex: abort scan while cancelling pending command

mwifiex_cancel_pending_ioctl() and
mwifiex_cancel_all_pending_cmd() are called in command timeout
and driver unload paths respectively.
If scan operation is in progress, we should abort it smoothly.

Reported-by: Tim Shepard <shep@alum.mit.edu>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: change transmit buffer size for 8897
Amitkumar Karwar [Fri, 28 Feb 2014 03:35:13 +0000 (19:35 -0800)]
mwifiex: change transmit buffer size for 8897

Currently default Tx buffer size configured to firmware is 2K
for all chipsets. This patch changes it to 4K for SD/PCIe/USB
8897 chipsets as per firmware requirements.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: remove global variable cmd_wait_q_required
Bing Zhao [Fri, 28 Feb 2014 03:35:12 +0000 (19:35 -0800)]
mwifiex: remove global variable cmd_wait_q_required

There is a race condition while queuing synchronous command and
asynchronous command requested from different threads, because
the wait_q_enabled flag is set based on a global variable
cmd_wait_q_required.

The issue is fixed by removing this global variable and using a
unified function with an argument 'sync' passed into the
function.

Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agortlwifi: Remove redundant if clause
Heinrich Schuchardt [Thu, 27 Feb 2014 16:06:58 +0000 (17:06 +0100)]
rtlwifi: Remove redundant if clause

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: do not reorder groupcast Rx
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:55 +0000 (16:20 +0200)]
wil6210: do not reorder groupcast Rx

Groupcast frames are not subject for BACK reordering because they are not
ACK'ed and one can't request re-transmitt

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: single station disconnect
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:54 +0000 (16:20 +0200)]
wil6210: single station disconnect

implement del_station() method in the struct cfg80211_ops
It allows to disconnect single peer from the AP

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: use ether_addr_equal
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:53 +0000 (16:20 +0200)]
wil6210: use ether_addr_equal

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: Provide signal strength indication
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:52 +0000 (16:20 +0200)]
wil6210: Provide signal strength indication

When notifying about Rx mgmt (ex: during scan), extract
signal strength reported by the hardware.
signal is not MBM, it is arbitrary units 0..100

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: Fill vring2cid_tid table early
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:51 +0000 (16:20 +0200)]
wil6210: Fill vring2cid_tid table early

Need to fill translation table before calling WMI with WMI_VRING_CFG_CMDID
since firmware may generate events during this call; and events need translation
table filled to be properly dispatched

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: disconnect only requested peer
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:50 +0000 (16:20 +0200)]
wil6210: disconnect only requested peer

Disconnect event reported by the FW, should lead to disconnection
of only requested peer. Find for the appropriate CID and disconnect
only it

For AP-like interface, notify cfg80211 with del_sta(),
for the client type interface, disconnect and turn link off.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: per-connection statistics
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:49 +0000 (16:20 +0200)]
wil6210: per-connection statistics

Calculate statistics per connection, report with "iw station dump"

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: dump_station initial support
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:48 +0000 (16:20 +0200)]
wil6210: dump_station initial support

Rx stats is not calculated per STA - just give some number

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: fix BACK status processing
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:47 +0000 (16:20 +0200)]
wil6210: fix BACK status processing

When FW notifies about BACK status change, it provides ring ID.
Process BA status for requested connection only. As for now, FW
don't report Rx BACK status, it reports Tx one instead.
As per current algorithm used in the firmware, imply Rx BACK
state is in sync with Tx one

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: broadcast Tx
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:46 +0000 (16:20 +0200)]
wil6210: broadcast Tx

Hardware do not support "real" broadcast on the air.
Use method similar to the Directed Multicast Service (DMS) as
described in the 10.23.15.2 "DMS procedures"

This service copies frame and delivers unicast for each associated peer

Do the following: send original frame to 1-st Tx vring, and send copies
to all other active vrings.

As currently hardware/firmware don't support A-MSDU, convert broadcast
frame to unicast instead of wrapping it in A-MSDU

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: Find free vring for Tx
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:45 +0000 (16:20 +0200)]
wil6210: Find free vring for Tx

There are 24 possible Tx vrings; when doind multiple connections, more then
one vring has to be used. Search for free one and select it.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: Block ACK
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:44 +0000 (16:20 +0200)]
wil6210: Block ACK

When running multiple connections, hardware can't do BACK reordering
and it should be done on the host.

Model after mac80211's implementation. Drop RCU for now;
to be re-added when BACK will be stabilized

BACK handshaking is not implemented yet in the hardware,
pretend it was done to support the way FW operating

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: multiple connect - initial support
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:43 +0000 (16:20 +0200)]
wil6210: multiple connect - initial support

Enable multiple (up to 8 - HW/FW limitation) simultaneous connections.
Each connection has its own CID (connection ID) that describes chip's
beam-forming entity. Tx Vring should refer to correct CID for frame to reach
its destination.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: [DEBUG] Improve Vring printing
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:42 +0000 (16:20 +0200)]
wil6210: [DEBUG] Improve Vring printing

Print '_' for the 'idle' descriptors - this makes vring representation more visible.
Also, for the Tx side, differentiate descriptors having associated skb's - print ones
with skb as 'H' and without as 'h'. Good to represent scattered frames.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: [DEBUG] allow to query Rx and all Tx VRING descriptors
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:41 +0000 (16:20 +0200)]
wil6210: [DEBUG] allow to query Rx and all Tx VRING descriptors

Expand debug capabilities to query all Tx/Rx descriptors. Usefull to analyse
various hardware/software stall situations. Printed is whole descriptor content
and the frame itself.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agowil6210: Tx management frame
Vladimir Kondratiev [Thu, 27 Feb 2014 14:20:40 +0000 (16:20 +0200)]
wil6210: Tx management frame

Implement management frame passing. In order to receive frame on the other
side, remain_on_channel() should be implemented as well

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agobrcmfmac: Use atomic functions for intstatus update.
Hante Meuleman [Wed, 26 Feb 2014 12:32:32 +0000 (13:32 +0100)]
brcmfmac: Use atomic functions for intstatus update.

The intstatus in sdio code can be updated from different
threads. To protect intstatus access, atomic functions are
used. The loop was replaced using atomic_set_mask().

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_htc: add function ath9k_regwrite_multi
Oleksij Rempel [Wed, 26 Feb 2014 09:04:44 +0000 (10:04 +0100)]
ath9k_htc: add function ath9k_regwrite_multi

... to remove duplicate code

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k_htc: remove unused variable sleepduration
Oleksij Rempel [Wed, 26 Feb 2014 09:03:44 +0000 (10:03 +0100)]
ath9k_htc: remove unused variable sleepduration

sleepduration is always = intval.

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agoath9k: remove unused listen_interval and sleepduration.
Oleksij Rempel [Wed, 26 Feb 2014 09:03:43 +0000 (10:03 +0100)]
ath9k: remove unused listen_interval and sleepduration.

this variable never changed.

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
10 years agomwifiex: Track BA sequence number reset
Paul Stewart [Wed, 26 Feb 2014 00:31:37 +0000 (16:31 -0800)]
mwifiex: Track BA sequence number reset

Some stations reset the sequence number for traffic-ids (TIDs)
as they initiate a block-ACK session.  In order to detect such
behavior, mwifiex must note the starting sequence number given
during the ADDBA request.  If the first received sequence number
after the ADDBA falls outside the receive window for this TID but
after the the ADDBA starting sequence number, we can assume that
this AP has reset its sequence number during the ADDBA.  In this
case we must adjust the input window backward to incorporate this
received sequence number instead of ignoring it.  Otherwise, we
could fail to successfully retrieve an arbitrarily large number
of downstream frames at the beginning of the block-ACK session.

Signed-off-by: Paul Stewart <pstew@chromium.org>
Acked-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>