John W. Linville [Tue, 20 May 2014 19:34:37 +0000 (15:34 -0400)]
ath9k: fixup "ath9k_htc: fix build with disabled debug"
Apparently Oleksij's compile testing was no better than mine initially
was... :-(
Cc: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Tue, 20 May 2014 07:27:18 +0000 (09:27 +0200)]
b43: xmit: set 5 GHz bit depending on current band
PHYs other than A may also work in 5 GHz mode.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Mon, 19 May 2014 22:02:03 +0000 (00:02 +0200)]
ath9k_htc: fix build with disabled debug
CC [M] drivers/net/wireless/ath/ath9k/htc_drv_txrx.o
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c: In function ‘ath9k_rx_prepare’:
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:1006:2: warning: passing argument 2 of ‘ath9k_htc_err_stat_rx’ from incompatible pointer type [enabled by default]
ath9k_htc_err_stat_rx(priv, &rx_stats);
^
In file included from drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:17:0:
drivers/net/wireless/ath/ath9k/htc.h:380:20: note: expected ‘struct ath_htc_rx_status *’ but argument is of type ‘struct ath_rx_status *’
static inline void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Mon, 19 May 2014 21:18:55 +0000 (23:18 +0200)]
b43: add more devices to the bands database
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Mon, 19 May 2014 21:18:54 +0000 (23:18 +0200)]
b43: move bands detection to a separated function
This cleans code a bit and allows adding support for more devices.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Julia Lawall [Mon, 19 May 2014 08:29:29 +0000 (10:29 +0200)]
brcmsmac: make return of 0 explicit
Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.
A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@r exists@
local idexpression ret;
expression e;
position p;
@@
-ret = 0;
... when != ret = e
return
- ret
+ 0
;
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
[arend@broadcom.com: make brcms_b_detach() a void function]
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rajkumar Manoharan [Mon, 19 May 2014 06:14:37 +0000 (11:44 +0530)]
ath9k_hw: Abort transmission for sleeping station
The data transmission to the power save station should be aborted
immediately, whenever the station informs sleep state. Right now
the frames queued into into hardware are being transmitted until
the hardware detects the power save station based excessive retries
of the data frames due to unacknowlegdement. Then remaining frames
are returned with filetered status and might be retried later by
driver or mac80211.
Per WFA certification testing, AP should not send out more than two
frames after processing nullfunc with PM bit set from associated
station. To speed up tx filtering, the pending frames in hardware
queues for given station will be aborted immediately via tx filter
registers. This transmit filters can be ignored if the descriptor
is having invalid destination index or clear destination mask set.
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sun, 18 May 2014 11:41:33 +0000 (13:41 +0200)]
b43: make B43_PCMCIA and B43_SDIO depend on B43_SSB
These are extra configs specific to the SSB. Lack of this dependency and
CONFIG_B43=y
CONFIG_B43_BUSES_BCMA=y
CONFIG_SSB=m
would result in:
> drivers/built-in.o: In function `b43_sdio_remove':
> sdio.c:(.text+0x14657f): undefined reference to `ssb_bus_unregister'
> drivers/built-in.o: In function `b43_sdio_probe':
> sdio.c:(.text+0x14672f): undefined reference to `ssb_bus_sdiobus_register'
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 17 May 2014 22:22:38 +0000 (00:22 +0200)]
ssb: sprom: add dev_id field for value overriding standard ID
Some devices may have different features despite sharing the same ID
(e.g. PCI ID). For example 14e4:4331 is usually a dual band, but this
can be "limited". Device with "pci/x/y/devid=0x4332" supports 2.4 GHz
only. Similarly 0x4333 will mean support for 5 GHz only.
Add entry in SPROM so info described above can be extracted and stored.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 17 May 2014 21:24:56 +0000 (23:24 +0200)]
b43: rework band switching
We always operate on one core and simple band switch doesn't require
full core reset. Simply reset the PHY.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 17 May 2014 21:24:55 +0000 (23:24 +0200)]
b43: complete PHY reset
Use separated function for taking PHY out of reset and implement reset
for BCMA.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 17 May 2014 21:24:54 +0000 (23:24 +0200)]
b43: move PHY reset code into PHY specific file
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 17 May 2014 21:24:53 +0000 (23:24 +0200)]
b43: split upload of init values into 2 functions
There are two groups of init values. The first one has to be uploaded
once per wireless core reset but the second one on every band switch.
To implement band switching in an optimal way allow uploading band
init values only (by using a separated function).
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Peter Wu [Thu, 20 Mar 2014 18:52:22 +0000 (19:52 +0100)]
rtlwifi: remove unused allow_all_destaddr functions
Unused as configure_filter takes care of setting/clearing RCR_AAP.
In commit "rtlwifi: rtl8723be: rtl8723com: Remove unused
allow_all_destaddr functions", Larry Finger removed allow_all_destaddr
from the struct. This commit removes the related function too.
Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Joe Perches [Wed, 14 May 2014 19:15:14 +0000 (12:15 -0700)]
wlcore: Remove trailing semicolon from do {...} while (0) macro
These should not have trailing semicolons so remove them.
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Avinash Patil [Wed, 14 May 2014 02:50:13 +0000 (19:50 -0700)]
mwifiex: set valid tx_param during mwifiex_send_null_packet
While sending null packet from driver we are passing NULL
tx_param pointer to indicate there are no more packets in queue.
PCIe send routine assumes caller has done sanity check on
tx_param and may cause crash while dereferencing next_pkt_len
from tx_param.
Avoid this by passing tx_param structure with next_pkt_len as
zero instead of NULL pointer.
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Avinash Patil [Wed, 14 May 2014 02:49:42 +0000 (19:49 -0700)]
mwifiex: restore current SDIO write port in failure cases
During SDIO MP aggregation, we at first acquire current write
port to write data onto and then proceed with using this port
for SDIO write. If error occurs later in mwifiex_write_data_sync
because device is suspended or SDIO write failure, we do not
restore current write port and write bitmap. This results into
leaking one port and hole in SDIO write port bitmap.
Restore current write port and reset bitmap accordingly in
failure cases to avoid this.
Reported-by: James Cameron <quozl@laptop.org>
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Reviewed-by: James Cameron <quozl@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Janusz Dziedzic [Tue, 13 May 2014 10:32:06 +0000 (12:32 +0200)]
ath: add JP DFS pattern detector
Add initial values for JP DFS pattern detector.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Janusz Dziedzic [Tue, 13 May 2014 10:32:05 +0000 (12:32 +0200)]
ath: add DFS FCC pattern detector
Add initial values for DFS FCC pattern detector.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Tested-by: Bartosz Markowski <bartosz.markowski@tieto.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
George Spelvin [Sun, 11 May 2014 10:07:43 +0000 (06:07 -0400)]
drivers/net/wireless/ti/wl*/spi.c: Simplify CRC computation
These devices require commands stored in buffers in an odd order,
different from that in which the CRC is computed.
Rather than make two copies of the commands in two different orders,
form the commands in logical (CRC) order, append the CRC, then byte-swap
in place to the desired order.
The old code worked fine, I'm just scratching an "ugh, that's ugly"
itch.
Signed-off-by: George Spelvin <linux@horizon.com>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
George Spelvin [Sun, 11 May 2014 10:05:02 +0000 (06:05 -0400)]
drivers/mmc/host/mmc_spi.c: Use get/put_unaligned_be32
Very minor source and binary size reduction.
Signed-off-by: George Spelvin <linux@horizon.com>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
George Spelvin [Sat, 10 May 2014 14:32:57 +0000 (10:32 -0400)]
lib/crc7: Shift crc7() output left 1 bit
This eliminates a 1-bit left shift in every single caller,
and makes the inner loop of the CRC computation more efficient.
Renamed crc7 to crc7_be (big-endian) since the interface changed.
Also purged #include <linux/crc7.h> from files that don't use it at all.
Signed-off-by: George Spelvin <linux@horizon.com>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
John W. Linville [Fri, 16 May 2014 18:16:17 +0000 (14:16 -0400)]
Merge branch 'master' of git://git./linux/kernel/git/iwlwifi/iwlwifi-next
John W. Linville [Fri, 16 May 2014 18:15:28 +0000 (14:15 -0400)]
Merge branch 'for-linville' of git://github.com/kvalo/ath
Johannes Berg [Tue, 13 May 2014 13:25:28 +0000 (15:25 +0200)]
iwlwifi: fix LED support Kconfig dependencies
If DVM or MVM are built-in but LEDS_CLASS isn't then the current
Kconfig will enable LED support and fail the build. Fix this by
making the LED support depend on LEDS_CLASS being built-in or,
if it is modular, only enabling it if iwlwifi also is.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Liad Kaufman [Sun, 27 Apr 2014 13:46:09 +0000 (16:46 +0300)]
iwlwifi: update nmi register
In the 8000 HW family the register for forcing an NMI has
changed, so this allows to still be able to force an NMI
while taking into account the HW in order to write to the
correct register.
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Luciano Coelho [Tue, 13 May 2014 13:52:54 +0000 (16:52 +0300)]
iwlwifi: mvm: combine p2p and station mac context functions
Instead of having two nearly identical functions to send the mac
context commands, use a single way that can handle both the p2p and
!p2p cases.
Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Wed, 30 Apr 2014 15:09:59 +0000 (18:09 +0300)]
iwlwifi: mvm: BT Coex - send channel inhibition before association
The firmware needs to know on what channel we run before we
set the association bit in the MAC context. Change a bit the
flow to achieve this.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Matt Chen [Thu, 24 Apr 2014 10:43:18 +0000 (18:43 +0800)]
iwlwifi: mvm: add uapsd_disable module parameter
Some APs (e.g. TP-LINK TL-WA801N) are disabling aggregation (downlink
to station) when U-APSD is enabled, resulting in low throughput.
Add a module parameter to allow disabling U-APSD support in the driver.
Also re-enable U-APSD for -9 firmware since the firmare issues were
fixed in this release.
There are devices that won't support U-APSD even with newer
firmware, so bring the TLV flag back to detect those.
Signed-off-by: Matt Chen <matt.chen@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eran Harary [Sun, 11 May 2014 05:11:34 +0000 (08:11 +0300)]
iwlwifi: allow dynamic configuration of internal memory
New transport need to configure internal memory based on
the data in the (enlarged) alive notification from the
firmware. Add a transport API for this.
Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Jahnavi Meher [Mon, 12 May 2014 10:17:40 +0000 (15:47 +0530)]
rsi: Changed the return value to enable BA set-up
Signed-off-by: Jahnavi Meher <jahnavi.meher@redpinesignals.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Arend van Spriel [Mon, 12 May 2014 08:47:39 +0000 (10:47 +0200)]
brcmfmac: determine chanspec from struct cfg80211_chan_def info
The struct cfg80211_chan_def contains additional info to derive the
bandwidth and side-band information of the chanspec. This patch adds
chandef_to_chanspec() function used in IBSS join and starting AP
operation.
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Arend van Spriel [Mon, 12 May 2014 08:47:38 +0000 (10:47 +0200)]
brcmfmac: handle 80MHz chanspecs in construct_reg_info() function
The device is queried about the usability of channels, but it did not
take 80MHz channels into consideration. This patch adds processing those
chanspecs and clear the NO_80MHZ flag for those control/primary channels.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:37 +0000 (10:47 +0200)]
brcmfmac: get rid of brcmf_cfg80211_set_channel() function
The function does not provide any additional functionality and is
used only once so just get rid of it.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:36 +0000 (10:47 +0200)]
brcmfmac: enable 80Mhz in 5G custom regulatory rules
By default allow 80Mhz in custom regulatory rules of the 5G band so
the channels will not be flagged with N0_80MHZ.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:35 +0000 (10:47 +0200)]
brcmfmac: provide VHT capability information to user-space
Although brcmfmac support several 11ac devices it did not advertise
VHT related information to cfg80211.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:34 +0000 (10:47 +0200)]
brcm80211: extend channel conversion functions for 80MHz support
The channel values used by firmware is handled using conversion functions
depending on the type of chip. These functions were already in place but
lacked proper support for 80MHz channel definitions. This patch adds the
support for that.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:33 +0000 (10:47 +0200)]
brcmfmac: remove usage of cfg80211_get_chandef_type()
In the .start_ap callback cfg80211_get_chandef_type() was used to
provide debug log info. However, this causes a warning when the
chandef contains VHT channel with 80MHz bandwidth. Avoid the warning
by just printing the channel and bandwidth instead.
Reviewed-by: Hante Meuleman <meuleman@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>
Daniel Kim [Mon, 12 May 2014 08:47:32 +0000 (10:47 +0200)]
brcmfmac: Fix reconnect failure after beacon timeout
The DISASSOC command needs to be sent to firmware when a connection
loss is detected by firmware (e.g., beacon timeout). Otherwise the
next connect request fails due to a lingering LINK(down) event from
firmware. This patch resolves the issue by using brcmf_link_down()
handler, instead of the incomplete duplicated codes.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Arend van Spriel [Mon, 12 May 2014 08:47:31 +0000 (10:47 +0200)]
brcmfmac: enhance nvram processing
The driver serializes the nvram firmware file before sending it
to the device. This patch enhances this to assure serialized data
is properly formatted and provide warnings on syntax failures.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@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>
Hante Meuleman [Mon, 12 May 2014 08:47:30 +0000 (10:47 +0200)]
brcmfmac: Make FWS queueing configurable.
FWS is always queuing frames and using a worker for de-queueing,
this is not always efficient for all bus layer. For example SDIO
has an internal queue and worker making the queueing of FWS
unnecessary. Make it possible to bypass the worker if fws mode
is none using a bus interface configuration. For USB bus layer
this configuration is set true to have fws provide queueing
regardless the fws mode.
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>
Hante Meuleman [Mon, 12 May 2014 08:47:29 +0000 (10:47 +0200)]
brcmfmac: Move handling 802.1x frames to dhd_linux.
Tracking and handling of 802.1x frames is done in two modules, it
is more logical and clear to move this to dhd_linux module.
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>
Hante Meuleman [Mon, 12 May 2014 08:47:28 +0000 (10:47 +0200)]
brcmfmac: Move out hdrpull from tx_finalize.
In tx_finalize the hdrpull is performed. For the new protocol
msgbuf this is complex, because it does not use protocol headers
in front of payload anymore and therefor can not determine interface
index in the hdr pulll operation. Move out the hdrpull operation
from tx_finalize to make msgbuf implementation easier.
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>
Daniel Kim [Mon, 12 May 2014 08:47:27 +0000 (10:47 +0200)]
brcmfmac: Report the support of firmware roaming
Currently firmware roaming support is not reported to cfg80211.
This patch reports the support of firmware based roaming when
it is enabled.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
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>
Daniel Kim [Mon, 12 May 2014 08:47:26 +0000 (10:47 +0200)]
brcmfmac: Give priority to 5GHz band in selecting target BSS
When a BSS provides both 2.4GHz and 5GHz bands, in many cases it
makes sense to choose 5GHz. Typically a 5GHz channel is less crowded
and has less interference and therefore its performance will be
better than a crowded 2.4 GHz channel. This patch configures
'join_pref' to induce firmware to preferably select 5GHz BSS.
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>
Oleksij Rempel [Sun, 11 May 2014 08:04:40 +0000 (10:04 +0200)]
ath9k_htc: use ath9k_cmn_debug_phy_err
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:39 +0000 (10:04 +0200)]
ath9k: move phy_err to ath9k_cmn_debug_phy_err
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:38 +0000 (10:04 +0200)]
ath9k_htc: use ath9k_cmn_debug_recv
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:37 +0000 (10:04 +0200)]
ath9k: move recv to ath9k_cmn_debug_recv
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:36 +0000 (10:04 +0200)]
ath9k & ath9k_htc: move ath_rx_stats to cmn
and use it. This move need changes in both drivers.
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:35 +0000 (10:04 +0200)]
ath9k: reorder or remove some includes
to fix compile errors
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:34 +0000 (10:04 +0200)]
ath9k_htc: use ath9k_cmn_debug_base_eeprom
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:33 +0000 (10:04 +0200)]
ath9k: move base_eeprom debug code to ath9k_cmn_debug_base_eeprom
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:32 +0000 (10:04 +0200)]
ath9k_htc: use ath9k_cmn_debug_modal_eeprom
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Oleksij Rempel [Sun, 11 May 2014 08:04:31 +0000 (10:04 +0200)]
ath9k-common: create common-debug and move modal_eeprom to cmn
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 10 May 2014 17:14:09 +0000 (19:14 +0200)]
b43: drop SSB dependency
This adds choice submenu "Supported bus types" as two simple bool
configs would allow user to compile b43 without any bus support
(prety useless).
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki [Sat, 10 May 2014 17:52:18 +0000 (19:52 +0200)]
b43: adjust code to compile without SSB
Users of new (BCMA based) wireless chipsets may not want to enable SSB.
This is hopefully the last code patch for dropping SSB dependency.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Ondrej Zary [Fri, 9 May 2014 16:10:34 +0000 (18:10 +0200)]
orinoco_usb: Fix broken firmware load error checking
The check of ezusb_firmware_download() return value (added by commit
488ec878034eccb852267b0e27ce9d511f75c587) is broken because
ezusb_firmware_download() returns 1 on success.
This causes the driver not to work with the following error:
orinoco_usb: probe of 3-3:1.0 failed with error -14
Check the return value only for negative values.
This fix should be applied to -stable kernels too.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Zefir Kurtisi [Fri, 9 May 2014 13:19:42 +0000 (15:19 +0200)]
ath9k: non-functional: calculate DFS pulse interval per-wiphy
Systems with multiple DFS channel detectors need to track
timestamp of previous pulse per instance to display the
correct pulse interval.
Since the interval value is used for debug printing only,
this is a non-functional modification.
Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Helmut Schaa [Thu, 8 May 2014 11:48:38 +0000 (13:48 +0200)]
amend "ath9k: Allow platform override without EEPROM override"
Originally Helmut posted a v2 of the "ath9k: Allow platform override
without EEPROM override", but I had prematurely commited the original
as commit
552a515707a. This commit restores the tree to what Helmut
intended with his v2 submission. -- JWL
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Adam Lee [Mon, 5 May 2014 08:33:38 +0000 (16:33 +0800)]
rtlwifi: rtl8723be: add msi module parameter
The msi module parameter offers an option to enable or disable MSI
interrupts mode, for debugging and workaround(in case) convenience.
Signed-off-by: Adam Lee <adam.lee@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Adam Lee [Mon, 5 May 2014 08:33:37 +0000 (16:33 +0800)]
rtlwifi: rtl8188ee: add msi module parameter
The msi module parameter offers an option to enable or disable MSI
interrupts mode. For now, some users report RTL8188EE works only with
MSI on their certain platforms, some others report it works only without
MSI, this parameter will help.
Signed-off-by: Adam Lee <adam.lee@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Adam Lee [Mon, 5 May 2014 08:33:36 +0000 (16:33 +0800)]
rtlwifi: make MSI support a module parameter
This makes MSI support a module parameter, for debugging and workaround
convenience.
Signed-off-by: Adam Lee <adam.lee@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Grazvydas Ignotas [Tue, 22 Apr 2014 00:09:55 +0000 (03:09 +0300)]
wl1251: only call ieee80211_beacon_loss in managed mode
ieee80211_beacon_loss() is only to be called in managed mode,
but the firmware may send the sync timeout event at any time,
so do a check before calling.
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Grazvydas Ignotas [Tue, 22 Apr 2014 00:09:54 +0000 (03:09 +0300)]
wl1251: fix mixed up args for join
The join arguments are mixed up, passing beacon_interval instead of
channel and channel instead of beacon_interval. Fix them.
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Grazvydas Ignotas [Tue, 22 Apr 2014 00:09:53 +0000 (03:09 +0300)]
wl1251: fix null data for IBSS
Fix the WARN below by not calling ieee80211_nullfunc_get() in IBSS mode,
but setting up empty template the same way wl12xx driver does.
WARNING: CPU: 0 PID: 914 at net/mac80211/tx.c:2750 ieee80211_nullfunc_get+0xc0/0xd0 [mac80211]()
Modules linked in: wl1251_sdio wl1251 mac80211 cfg80211
...
[<
c00439c0>] (warn_slowpath_null)
[<
bf0bdfdc>] (ieee80211_nullfunc_get [mac80211])
[<
bf134774>] (wl1251_op_bss_info_changed [wl1251])
[<
bf099e14>] (ieee80211_bss_info_change_notify [mac80211])
...
Also perform join command regardless of bss_type as that seems to be
required for proper operation.
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Grazvydas Ignotas [Tue, 22 Apr 2014 00:09:52 +0000 (03:09 +0300)]
Revert "wl1251: enforce changed hw encryption support on monitor state change"
This reverts commit
b90a1165a72fabdc260abaa9eeadcbfd29e267eb.
That commit (or rather, hack) triggers a scary WARN in IBSS (ad-hoc) mode.
Steps to reproduce:
ifconfig wlan0 down
iwconfig wlan0 mode ad-hoc
ifconfig wlan0 up
------------[ cut here ]------------
WARNING: CPU: 0 PID: 905 at kernel/workqueue.c:1400 __queue_work+0x21c/0x2f4()
Modules linked in: wl1251_sdio wl1251 mac80211 cfg80211
CPU: 0 PID: 905 Comm: ifconfig Not tainted 3.15.0-rc2#233
[<
c0015f38>] (unwind_backtrace) from [<
c0012938>]
[<
c0012938>] (show_stack) from [<
c05d4034>]
[<
c05d4034>] (dump_stack) from [<
c0043984>]
[<
c0043984>] (warn_slowpath_common) from [<
c00439c0>]
[<
c00439c0>] (warn_slowpath_null) from [<
c005b6c8>]
[<
c005b6c8>] (__queue_work) from [<
c005b820>]
[<
c005b820>] (queue_work_on) from [<
bf134ac0>]
[<
bf134ac0>] (wl1251_op_config [wl1251])
[<
bf099a70>] (ieee80211_hw_config [mac80211])
...
This happens because ieee80211_connection_loss() is not expected to be
called in IBSS mode (mac80211 ends up queuing uninitialized work
in that case).
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
John W. Linville [Tue, 13 May 2014 19:27:44 +0000 (15:27 -0400)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless
John W. Linville [Tue, 13 May 2014 18:52:34 +0000 (14:52 -0400)]
Merge branch 'for-john' of git://git./linux/kernel/git/iwlwifi/iwlwifi-fixes
Johannes Berg [Mon, 12 May 2014 09:14:51 +0000 (11:14 +0200)]
iwlwifi: mvm: enable RX chain diversity if needed
In some situations (see comment) it makes sense to enable both
chains (if available) to get better throughput by having chain
diversity available.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
David Spinadel [Tue, 13 May 2014 11:29:36 +0000 (14:29 +0300)]
iwlwifi: mvm: prevent sched scan while not idle
Prevent sched scan while not idle (including during association or in AP
mode) instead of while associated only.
This fixes my previous commit which was incomplete:
commit
bd5e4744a6ca64299b57a2682c720d00a475a734
Author: David Spinadel <david.spinadel@intel.com>
Date: Thu Apr 24 13:15:29 2014 +0300
iwlwifi: mvm: do no sched scan while associated
Currently the FW doesn't support sched scan while associated,
Prevent it.
Signed-off-by: David Spinadel <david.spinadel@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eliad Peller [Sun, 11 May 2014 16:59:43 +0000 (19:59 +0300)]
iwlwifi: mvm: fix off-by-one in scan channels configuration
tail should be equal to the last valid index, so
decrease it by one.
This error causes in "a gap" in some cases (as well as
some possible out-of-bound write), finally resulting in
ucode assertion.
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eran Harary [Sun, 11 May 2014 06:44:17 +0000 (09:44 +0300)]
iwlwifi: mvm: revisit the NVM handling code
Fix a bug in nvm_read_section function if size of the section
is a multiple of 2K:
- if the size of the section is *not* multiple of 2K,
then we will have: read(2K) - return 2K ... read(2K) - return 2K
read(2K) - return the rest (in bytes) and exit the while loop.
- else, if the size of the section is a multiple of 2K,
then we have: read(2K) - return 2K read(2K) - return 2K read(2K) -
return 2K read(2K) - return 0 and exit the while with an error.
We should not return an error in the latter case, because it
might well be that the section was completely read.
Also, we try now to read all the sections as this is needed
for new devices.
Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Sun, 11 May 2014 14:28:05 +0000 (17:28 +0300)]
iwlwifi: mvm: BT Coex - fix boost register / LUT values
These values are used to give preference to WiFi according
to a certain pattern.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eliad Peller [Mon, 12 May 2014 11:22:20 +0000 (14:22 +0300)]
iwlwifi: mvm: set SKIP_OVER_DTIM flag only if needed
setting SKIP_OVER_DTIM when skip_dtim_periods is 0
causes a ucode assert. set the flag only if needed.
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Tue, 13 May 2014 05:10:51 +0000 (08:10 +0300)]
iwlwifi: pcie: disable BHs in iwl_pcie_txq_check_wrptrs
This fixes:
=================================
[ INFO: inconsistent lock state ]
3.14.3+ #5 Tainted: G O
---------------------------------
inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
swapper/3/0 [HC0[0]:SC1[3]:HE1:SE0] takes:
(&(&txq->lock)->rlock){+.?...}, at: [<
ffffffffa059803c>] iwl_pcie_enqueue_hcmd+0x12c/0x1000 [iwlwifi]
{SOFTIRQ-ON-W} state was registered at:
[<
ffffffff810d9071>] __lock_acquire+0x5f1/0x13b0
[<
ffffffff810d9ee0>] lock_acquire+0xb0/0x1f0
[<
ffffffff817ef80e>] _raw_spin_lock+0x3e/0x80
[<
ffffffffa0598f7a>] iwl_pcie_txq_check_wrptrs+0x6a/0xb0 [iwlwifi]
[<
ffffffffa0594b5a>] iwl_pcie_irq_handler+0xdba/0x2670 [iwlwifi]
[<
ffffffff810ef1e0>] irq_thread_fn+0x20/0x50
[<
ffffffff810ef77f>] irq_thread+0x11f/0x150
[<
ffffffff810a04f0>] kthread+0xf0/0x110
[<
ffffffff817fa4bc>] ret_from_fork+0x7c/0xb0
irq event stamp:
1142192
hardirqs last enabled at (
1142192): [<
ffffffff817efb6c>] _raw_spin_unlock_irq+0x2c/0x40
hardirqs last disabled at (
1142191): [<
ffffffff817ef9ef>] _raw_spin_lock_irq+0x1f/0x80
softirqs last enabled at (
1142188): [<
ffffffff81079082>] _local_bh_enable+0x22/0x50
softirqs last disabled at (
1142189): [<
ffffffff8107ad35>] irq_exit+0xe5/0xf0
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(&(&txq->lock)->rlock);
<Interrupt>
lock(&(&txq->lock)->rlock);
Fixes:
ea68f46070c7 ("iwlwifi: pcie: clarify TX queue need_update handling")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Liad Kaufman [Thu, 8 May 2014 12:24:54 +0000 (15:24 +0300)]
iwlwifi: use dev_printk instead of dev_dbg for debug logs
When calling IWL_DEBUG_*() dev_dbg() is currently used, and this
could result in the log being ignored no matter the internal
loglevel, since dev_dbg() may get turned on or off based on the
dynamic debug mechanism.
Replace the dev_dbg() with dev_printk() since dynamic printing
is pointless as we use our own debug level mechanism and there
is just a single dev_dbg() call in the code.
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
[rephrase commit message a bit]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Mon, 12 May 2014 08:36:41 +0000 (11:36 +0300)]
iwlwifi: remove CMD_SYNC
CMD_SYNC is really 0 which is confusing:
if (cmd.flags & CMD_SYNC) is always false.
Fix this by simply removing its definition.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Tue, 13 May 2014 10:51:53 +0000 (13:51 +0300)]
Merge remote-tracking branch 'iwlwifi-fixes/master' into HEAD
Daniel Kim [Fri, 9 May 2014 10:37:05 +0000 (12:37 +0200)]
brcmfmac: Fix iovar 'bw_cap' set command failure
Fix iovar 'bw_cap' set command failure introduced by
commit
ff3b0fba6f25555ef59c55d138a467d0f81d82d7
Author: Arend van Spriel <arend@broadcom.com>
Date: Sat Mar 15 12:00:57 2014 +0100
brcmfmac: fallback to mimo_bw_cap for older firmwares
This resulted in disabling 20MHz operation in the firmware.
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>
John W. Linville [Mon, 12 May 2014 18:12:19 +0000 (14:12 -0400)]
Merge git://git./linux/kernel/git/jberg/mac80211
Johannes Berg [Fri, 9 May 2014 12:59:16 +0000 (14:59 +0200)]
iwlwifi: remove spurious newline in Kconfig
There's an extra newline that shouldn't be there - remove it.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Johannes Berg [Wed, 7 May 2014 09:55:21 +0000 (11:55 +0200)]
iwlwifi: cause build error on missing newline
If a (debug) message is missing a newline, cause build error
so we don't keep reintroducing this problem.
This also prevents using a non-constant argument as the format
string which is a good idea anyway (e.g. for security reasons.)
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Avri Altman [Thu, 8 May 2014 07:06:01 +0000 (10:06 +0300)]
iwlwifi: mvm: Disable uAPSD for a DCM client
A binding object associates virtual MACs to a Phy.
Binding object can ask (and get) air time, thus
allowing several MACs to share the medium.
A binding object can be in either one of 3 states:
1) standalone - A single active MAC
2) Different Channel Mode (DCM) - There are 2 active
MACs or more (not necessarily just clients), but each
has its own channel.
3) Same Channel Mode (SCM) - There are 2 active
MACs or more (not necessarily just clients), that
share the same channel.
This patch introduces an additional condition for enabling uAPSD:
uAPSD should be disabled for a client in DCM.
The reason for that is a low latency issue in Miracast.
Signed-off-by: Avri Altman <avri.altman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Avri Altman [Wed, 2 Apr 2014 04:54:07 +0000 (07:54 +0300)]
iwlwifi: mvm: Add power management support for P2P DCM
If two clients are active while each one is alone on its channel,
and the applicable flags are set, power management should be enabled.
This condition is referred to as Different Channel Mode (DCM).
Up to now, in DCM power management was supported only on BSS.
This patch adds support for P2P power management in DCM as well.
Signed-off-by: Avri Altman <avri.altman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Thu, 8 May 2014 06:48:10 +0000 (09:48 +0300)]
iwlwifi: mvm: fix setting channel in monitor mode
There was a deadlock in monitor mode when we were setting the
channel if the channel was not 1.
======================================================
[ INFO: possible circular locking dependency detected ]
3.14.3 #4 Not tainted
-------------------------------------------------------
iw/3323 is trying to acquire lock:
(&local->chanctx_mtx){+.+.+.}, at: [<
ffffffffa062e2f2>] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]
but task is already holding lock:
(&local->iflist_mtx){+.+...}, at: [<
ffffffffa0609e0a>] ieee80211_set_monitor_channel+0x5a/0x1b0 [mac80211]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #2 (&local->iflist_mtx){+.+...}:
[<
ffffffff810d95bb>] __lock_acquire+0xb3b/0x13b0
[<
ffffffff810d9ee0>] lock_acquire+0xb0/0x1f0
[<
ffffffff817eb9c8>] mutex_lock_nested+0x78/0x4f0
[<
ffffffffa06225cf>] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
[<
ffffffffa0518189>] iwl_mvm_recalc_multicast+0x49/0xa0 [iwlmvm]
[<
ffffffffa051822e>] iwl_mvm_configure_filter+0x4e/0x70 [iwlmvm]
[<
ffffffffa05e6d43>] ieee80211_configure_filter+0x153/0x5f0 [mac80211]
[<
ffffffffa05e71f5>] ieee80211_reconfig_filter+0x15/0x20 [mac80211]
[snip]
-> #1 (&mvm->mutex){+.+.+.}:
[<
ffffffff810d95bb>] __lock_acquire+0xb3b/0x13b0
[<
ffffffff810d9ee0>] lock_acquire+0xb0/0x1f0
[<
ffffffff817eb9c8>] mutex_lock_nested+0x78/0x4f0
[<
ffffffffa0517246>] iwl_mvm_add_chanctx+0x56/0xe0 [iwlmvm]
[<
ffffffffa062ca1e>] ieee80211_new_chanctx+0x13e/0x410 [mac80211]
[<
ffffffffa062d953>] ieee80211_vif_use_channel+0x1c3/0x5a0 [mac80211]
[<
ffffffffa06035ab>] ieee80211_add_virtual_monitor+0x1ab/0x6b0 [mac80211]
[<
ffffffffa06052ea>] ieee80211_do_open+0xe6a/0x15a0 [mac80211]
[<
ffffffffa0605a79>] ieee80211_open+0x59/0x60 [mac80211]
[snip]
-> #0 (&local->chanctx_mtx){+.+.+.}:
[<
ffffffff810d6cb7>] check_prevs_add+0x977/0x980
[<
ffffffff810d95bb>] __lock_acquire+0xb3b/0x13b0
[<
ffffffff810d9ee0>] lock_acquire+0xb0/0x1f0
[<
ffffffff817eb9c8>] mutex_lock_nested+0x78/0x4f0
[<
ffffffffa062e2f2>] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]
[<
ffffffffa0609ec3>] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
[<
ffffffffa058fb37>] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
[<
ffffffffa056e0b2>] __nl80211_set_channel+0x122/0x140 [cfg80211]
[<
ffffffffa0581374>] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]
[snip]
other info that might help us debug this:
Chain exists of:
&local->chanctx_mtx --> &mvm->mutex --> &local->iflist_mtx
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&local->iflist_mtx);
lock(&mvm->mutex);
lock(&local->iflist_mtx);
lock(&local->chanctx_mtx);
*** DEADLOCK ***
This deadlock actually occurs:
INFO: task iw:3323 blocked for more than 120 seconds.
Not tainted 3.14.3 #4
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
iw D
ffff8800c8afcd80 4192 3323 3322 0x00000000
ffff880078fdb7e0 0000000000000046 ffff8800c8afcd80 ffff880078fdbfd8
00000000001d5540 00000000001d5540 ffff8801141b0000 ffff8800c8afcd80
ffff880078ff9e38 ffff880078ff9e38 ffff880078ff9e40 0000000000000246
Call Trace:
[<
ffffffff817ea841>] schedule_preempt_disabled+0x31/0x80
[<
ffffffff817ebaed>] mutex_lock_nested+0x19d/0x4f0
[<
ffffffffa06225cf>] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
[<
ffffffffa06225cf>] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
[<
ffffffffa052a680>] ? iwl_mvm_power_mac_update_mode+0xc0/0xc0 [iwlmvm]
[<
ffffffffa06225cf>] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
[<
ffffffffa0529357>] _iwl_mvm_power_update_binding+0x27/0x80 [iwlmvm]
[<
ffffffffa0516eb1>] iwl_mvm_unassign_vif_chanctx+0x81/0xc0 [iwlmvm]
[<
ffffffffa062d3ff>] __ieee80211_vif_release_channel+0xdf/0x470 [mac80211]
[<
ffffffffa062e2fa>] ieee80211_vif_release_channel+0x4a/0xb0 [mac80211]
[<
ffffffffa0609ec3>] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
[<
ffffffffa058fb37>] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
[<
ffffffffa056e0b2>] __nl80211_set_channel+0x122/0x140 [cfg80211]
[<
ffffffffa0581374>] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]
This fixes https://bugzilla.kernel.org/show_bug.cgi?id=75541
Cc: <stable@vger.kernel.org> [3.13+]
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
David Spinadel [Sun, 27 Apr 2014 06:54:54 +0000 (09:54 +0300)]
iwlwifi: mvm: stop sched scan before association
Stop sched scan on bss_info_changed if !idle to avoid sched scan
during association.
Signed-off-by: David Spinadel <david.spinadel@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
David Spinadel [Thu, 1 May 2014 12:57:22 +0000 (15:57 +0300)]
iwlwifi: mvm: notify sched scan complete from stop routine
Add an option to notify mac80211 about sched scan complete from
iwl_mvm_stop_sched_scan(), to enable this notification when the
stop was called from within the driver.
Signed-off-by: David Spinadel <david.spinadel@intel.com>
Reviewed-by: Alexander Bondar <alexander.bondar@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eran Harary [Wed, 7 May 2014 05:22:41 +0000 (08:22 +0300)]
iwlwifi: mvm: add channel 14 to the low band list
in family 8000: additional channel 14 added to the low
band list. now the number of channels in the low band
is 15.
Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Dor Shaish <dor.shaish@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Thu, 8 May 2014 09:15:22 +0000 (12:15 +0300)]
iwlwifi: pcie: try to get ownership several times
Some races with the hardware can happen when we take
ownership of the device. Don't give up after the first try.
Cc: <stable@vger.kernel.org>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eran Harary [Wed, 7 May 2014 09:27:10 +0000 (12:27 +0300)]
iwlwifi: 8000: add default NVM file name in family 8000
The 8000 family products need a file on the file system
which is used as NVM. This file is a must, if no filename
is supplied as module parameter, use a default filename.
Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Dor Shaish <dor.shaish@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Emmanuel Grumbach [Sun, 11 May 2014 09:58:00 +0000 (12:58 +0300)]
iwlwifi: dvm: don't use _ni mac80211's callbacks
This is not needed since the PCIe layer disables the
bottom halves before it calls the op_mode.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Johannes Berg [Wed, 7 May 2014 09:47:53 +0000 (11:47 +0200)]
iwlwifi: add missing trailing newlines to debug messages
All messages should have a trailing newline, add all the
missing ones. Also make all messages constants, replacing
the single one that pointlessly used a variable.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eliad Peller [Wed, 26 Feb 2014 12:46:35 +0000 (14:46 +0200)]
mac80211: fix vif name tracing
If sdata doesn't have a valid dev (e.g. in case of monitor
vif), the vif_name field was initialized with (a length of)
some short string, but later was set to a different,
potentially larger one.
This resulted in out-of-bounds write, which usually
appeared as garbage in the trace log.
Simply trace sdata->name, as it should always have the
correct name for both cases.
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Johannes Berg [Fri, 9 May 2014 07:56:53 +0000 (09:56 +0200)]
mac80211: allow VHT with peers not capable of 40MHz
There are two (related) issues with this.
One case, reported by Michal, is related to hostap: it unsets the
20/40 capability bit for stations that associate when it's in 20
MHz mode.
The other case, reported by Eyal, is that some APs like Netgear
R6300v2 and probably others based on the BCM4360 chipset can be
configured for doing VHT at 20Mhz. In this case the beacon has
a VHT IE but the HT cap indicates transmitter only support 20Mhz.
In both of these cases, we currently avoid VHT and use only HT
this means we can't use the highest rates (MCS8), so fixing this
leads to throughput improvements.
Reported-by: Michal Kazior <michal.kazior@tieto.com>
Reported-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
John W. Linville [Thu, 8 May 2014 15:36:40 +0000 (11:36 -0400)]
Merge branch 'for-john' of git://git./linux/kernel/git/iwlwifi/iwlwifi-next
John W. Linville [Thu, 8 May 2014 15:28:35 +0000 (11:28 -0400)]
Merge branch 'master' of git://git./linux/kernel/git/iwlwifi/iwlwifi-fixes
Andrea Merello [Wed, 7 May 2014 15:54:46 +0000 (17:54 +0200)]
rtl8187: make CTS-to-self protection work
CTS protection was not working properly because the HW needs
RTS flag to be asserted, and it need also RTS duration field to be
filled with CTS-to-self duration.
This patch makes the driver to do this.
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Andrea Merello [Wed, 7 May 2014 15:53:17 +0000 (17:53 +0200)]
rtl8180: make CTS-to-self protection work
CTS protection was not working properly because the HW still need
RTS flag to be asserted, and it need also RTS rate field to be
set with CTS-to-self rate and RTS duration field to be filled with
CTS-to-self duration.
This patch makes the driver to do this.
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Andrea Merello [Wed, 7 May 2014 15:52:16 +0000 (17:52 +0200)]
rtl8180: report mac80211 short preamble RX flag
This patch make it possible to mac80211 to know whether a frame
has been received with short preamble.
It simply checks for the "splcp" flag in the RX status
descriptor, and eventually set RX_FLAG_SHORTPRE in mac80211
rx status structure.
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>