]> git.karo-electronics.de Git - linux-beck.git/log
linux-beck.git
8 years agoiwlwifi: mvm: fix RSS key sizing
Sara Sharon [Sun, 7 Feb 2016 10:50:35 +0000 (12:50 +0200)]
iwlwifi: mvm: fix RSS key sizing

The initialization and copying of the RSS secret key
should not use ARRAY_SIZE as we need to initialize a
dword array, and not a byte array.
Fix also the hook maximum write size to allow writing
a longer table - up to full indirection table size.

Fixes: 43413a975d06("iwlwifi: mvm: support rss queues configuration command")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: set the correct descriptor size for tracing
Sara Sharon [Sun, 7 Feb 2016 11:09:59 +0000 (13:09 +0200)]
iwlwifi: mvm: set the correct descriptor size for tracing

The 9000 series uses a diffrent sized descriptor. Update the
relevant tracing field.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add registration to cooling device
Chaya Rachel Ivgi [Tue, 5 Jan 2016 08:34:47 +0000 (10:34 +0200)]
iwlwifi: mvm: add registration to cooling device

Register cooling device in order to have the Thermal
Manager handle the device's power budget according to the sent
notifications.
The interface adds a new thermal cooling device to
/sys/class/thermal/ folder.

Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add registration to thermal zone
Chaya Rachel Ivgi [Tue, 29 Dec 2015 07:54:49 +0000 (09:54 +0200)]
iwlwifi: mvm: add registration to thermal zone

Register to thermal_zone interface and implement the
thermal ops.
The thermal handles the device throttling, and sets the
the temperature thresholds the Thermal Manager would be
notified of crossing.
The thermal interface adds a new thermal zone device sensor
under /sys/class/thermal/ folder.

Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add CT-KILL notification
Chaya Rachel Ivgi [Wed, 16 Dec 2015 14:34:55 +0000 (16:34 +0200)]
iwlwifi: mvm: add CT-KILL notification

Up to today the driver was notified of the temperature from the FW
and decided whether to enter CT-kill or not.
From now on, the FW will decide when to enter CT-kill and will notify
the driver.
Add support for this notification.

Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoMerge tag 'mac80211-next-for-davem-2016-02-26' into next2
Emmanuel Grumbach [Sat, 27 Feb 2016 19:59:03 +0000 (21:59 +0200)]
Merge tag 'mac80211-next-for-davem-2016-02-26' into next2

Here's another round of updates for -next:
 * big A-MSDU RX performance improvement (avoid linearize of paged RX)
 * rfkill changes: cleanups, documentation, platform properties
 * basic PBSS support in cfg80211
 * MU-MIMO action frame processing support
 * BlockAck reordering & duplicate detection offload support
 * various cleanups & little fixes

8 years agorfkill: Add documentation about LED triggers
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:37 +0000 (11:36 -0500)]
rfkill: Add documentation about LED triggers

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Factor rfkill_global_states[].cur assignments
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:36 +0000 (11:36 -0500)]
rfkill: Factor rfkill_global_states[].cur assignments

Factor all assignments to rfkill_global_states[].cur into a single
function rfkill_update_global_state().

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Move "state" sysfs file back to stable
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:35 +0000 (11:36 -0500)]
rfkill: Move "state" sysfs file back to stable

There is still quite a bit of code using this interface, so we can't
just remove it. Hopefully it will be possible in the future, but since
its scheduled removal date is past 2 years already, we are better having
the documentation reflecting the current state of things.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Point to the correct deprecated doc location
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:34 +0000 (11:36 -0500)]
rfkill: Point to the correct deprecated doc location

The "claim" sysfs interface has been removed, so its documentation now
lives in the "removed" folder.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Remove extra blank line
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:33 +0000 (11:36 -0500)]
rfkill: Remove extra blank line

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Improve documentation language
João Paulo Rechi Vita [Mon, 22 Feb 2016 16:36:32 +0000 (11:36 -0500)]
rfkill: Improve documentation language

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agonet: rfkill: gpio: remove rfkill_gpio_platform_data
Heikki Krogerus [Mon, 25 Jan 2016 09:03:49 +0000 (12:03 +0300)]
net: rfkill: gpio: remove rfkill_gpio_platform_data

No more users for it.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agoARM: tegra: use build-in device properties with rfkill_gpio
Heikki Krogerus [Mon, 25 Jan 2016 09:03:48 +0000 (12:03 +0300)]
ARM: tegra: use build-in device properties with rfkill_gpio

Pass the rfkill name and type to the device with properties
instead of driver specific platform data.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
CC: Alexandre Courbot <gnurou@gmail.com>
CC: Thierry Reding <thierry.reding@gmail.com>
CC: Stephen Warren <swarren@wwwdotorg.org>
Acked-by: Thierry Reding <treding@nvidia.com>
Tested-by: Marc Dietrich <marvin24@gmx.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agonet: rfkill: gpio: get the name and type from device property
Heikki Krogerus [Mon, 25 Jan 2016 09:03:47 +0000 (12:03 +0300)]
net: rfkill: gpio: get the name and type from device property

This prepares the driver for removal of platform data.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agonet: rfkill: add rfkill_find_type function
Heikki Krogerus [Mon, 25 Jan 2016 09:03:46 +0000 (12:03 +0300)]
net: rfkill: add rfkill_find_type function

Helper for finding the type based on name. Useful if the
type needs to be determined based on device property.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
[modify rfkill_types array and BUILD_BUG_ON to not cause errors]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: add radiotap VHT info to rtap_namespace_sizes
Lorenzo Bianconi [Fri, 19 Feb 2016 10:43:04 +0000 (11:43 +0100)]
cfg80211: add radiotap VHT info to rtap_namespace_sizes

Add IEEE80211_RADIOTAP_VHT entry to rtap_namespace_sizes array in order to
define alignment and size of VHT info in tx radiotap

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: Add global RRM capability
Beni Lev [Wed, 17 Feb 2016 18:30:00 +0000 (20:30 +0200)]
cfg80211: Add global RRM capability

Today, the supplicant will add the RRM capabilities
Information Element in the association request only if
Quiet period is supported (NL80211_FEATURE_QUIET).

Quiet is one of many RRM features, and there are other RRM
features that are not related to Quiet (e.g. neighbor
report). Therefore, requiring Quiet to enable RRM is too
restrictive.
Some of the features, like neighbor report, can be
supported by user space without any help from the kernel.
Hence adding the RRM capabilities IE to association request
should be the sole user space's decision.
Removing the RRM dependency on Quiet in the driver solves
this problem, but using an old driver with a user space
tool that would not require Quiet feature would be
problematic: the user space would add NL80211_ATTR_USE_RRM
in the association request even if the kernel doesn't
advertize NL80211_FEATURE_QUIET and the association would
be denied by the kernel.

This solution adds a global RRM capability, that tells user
space that it can request RRM capabilities IE publishment
without any specific feature support in the kernel.

Signed-off-by: Beni Lev <beni.lev@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: move MU_MIMO_OWNER flag to ieee80211_vif
Sara Sharon [Tue, 16 Feb 2016 10:48:18 +0000 (12:48 +0200)]
mac80211: move MU_MIMO_OWNER flag to ieee80211_vif

Drivers may need to track which vif is using VHT MU-MIMO.
Move the flag indicationg the ownership of MU_MIMO to
ieee80211_vif.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: provide interface to driver to set VHT MU-MIMO data
Sara Sharon [Tue, 16 Feb 2016 10:48:17 +0000 (12:48 +0200)]
mac80211: provide interface to driver to set VHT MU-MIMO data

Provide an interface to the lower level driver to set the VHT
MU-MIMO data. This is needed for example when there is an update
of the group data during low power state, where the management
frame will not be passed to the host at all.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: remove ieee80211_get_key_tx_seq/ieee80211_set_key_tx_seq
Eliad Peller [Mon, 15 Feb 2016 10:34:10 +0000 (12:34 +0200)]
mac80211: remove ieee80211_get_key_tx_seq/ieee80211_set_key_tx_seq

Since the PNs of all the tx keys are now tracked in the public
part of the key struct (with atomic counter), we no longer
need these functions.

dvm and vt665{5,6} are currently the only users of these functions,
so update them accordingly.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agoiwlwifi: mvm: move TX PN assignment for TKIP to the driver
Eliad Peller [Sun, 14 Feb 2016 11:56:36 +0000 (13:56 +0200)]
iwlwifi: mvm: move TX PN assignment for TKIP to the driver

If protocol offloading is configured, the fw might generate some
frames (e.g. arp response) on its own during d3/d0i3.

On d3/d0i3 exit the driver queries the updated PN (if relevant),
and updates its keys (for the d0i3 case, this is done by
iwl_mvm_d0i3_exit_work(), which is scheduled on d0i3 exit)

While in d0i3, iwlmvm defers tx frames until d0i3 exit, and
then continues their processing.

This is problematic with TKIP, since the frame's PN has already
been set at this stage (in contrast to CCMP, where the PN is
being set only later on), so both the frame's PN and the upcoming
PN update (from d0i3 exit work) might be wrong.

Fix it by moving the TX PN assignment (for TKIP) to the driver,
similarly to CCMP.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: move TKIP TX IVs to public part of key struct
Eliad Peller [Sun, 14 Feb 2016 11:56:35 +0000 (13:56 +0200)]
mac80211: move TKIP TX IVs to public part of key struct

Some drivers/devices might want to set the IVs by
themselves (and still let mac80211 generate MMIC).

Specifically, this is needed when the device does
offloading at certain times, and the driver has
to make sure that the IVs of new tx frames (from
the host) are synchronized with IVs that were
potentially used during the offloading.

Similarly to CCMP, move the TX IVs of TKIP keys to the
public part of the key struct, and export a function
to add the IV right into the crypto header.

The public tx_pn field is defined as atomic64, so define
TKIP_PN_TO_IV16/32 helper macros to convert it to iv16/32
when needed.

Since the iv32 used for the p1k cache is taken
directly from the frame, we can safely remove
iv16/32 from being protected by tkip.txlock.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix wiphy supported_band access
Lorenzo Bianconi [Fri, 19 Feb 2016 11:18:01 +0000 (12:18 +0100)]
mac80211: fix wiphy supported_band access

Fix wiphy supported_band access in tx radiotap parsing introduced
in commit 5ec3aed9ba4c ("mac80211: Parse legacy and HT rate in
injected frames"). In particular, info->band is always set to 0
(IEEE80211_BAND_2GHZ) since it has not assigned yet.
This cause a kernel crash on 5GHz only devices.
Move ieee80211_parse_tx_radiotap() after info->band assignment

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: reuse existing page fragments in A-MSDU rx
Felix Fietkau [Mon, 8 Feb 2016 13:34:42 +0000 (14:34 +0100)]
cfg80211: reuse existing page fragments in A-MSDU rx

This massively reduces data copying and thus improves rx performance

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: fix faulty variable initialization in ieee80211_amsdu_to_8023s
Felix Fietkau [Mon, 8 Feb 2016 13:25:26 +0000 (14:25 +0100)]
cfg80211: fix faulty variable initialization in ieee80211_amsdu_to_8023s

reuse_skb is set to true if the code decides to use the last segment.
Fixes a memory leak

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix VHT MU-MIMO frame processing
Sara Sharon [Wed, 3 Feb 2016 19:52:23 +0000 (21:52 +0200)]
mac80211: fix VHT MU-MIMO frame processing

The source and destintation addresses in the memcpy arguments
are flipped. Fix that.

Fixes: 23a1f8d44c0b("mac80211: process and save VHT MU-MIMO group frame")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Unify mesh and mpp path removal function
Henning Rogge [Wed, 3 Feb 2016 12:58:38 +0000 (13:58 +0100)]
mac80211: Unify mesh and mpp path removal function

mpp_path_del() and mesh_path_del() are mostly the same function.
Move common code into a new static function.

Acked-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: let unused MPP table entries timeout
Henning Rogge [Wed, 3 Feb 2016 12:58:37 +0000 (13:58 +0100)]
mac80211: let unused MPP table entries timeout

Remember the last time when a mpp table entry is used for
rx or tx and remove them after MESH_PATH_EXPIRE time.

Acked-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Remove MPP table entries with MPath
Henning Rogge [Wed, 3 Feb 2016 12:58:36 +0000 (13:58 +0100)]
mac80211: Remove MPP table entries with MPath

Make the mesh_path_del() function remove all mpp table entries
that are proxied by the removed mesh path.

Acked-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: basic support for PBSS network type
Lior David [Thu, 28 Jan 2016 08:58:25 +0000 (10:58 +0200)]
cfg80211: basic support for PBSS network type

PBSS (Personal Basic Service Set) is a new BSS type for DMG
networks. It is similar to infrastructure BSS, having an AP-like
entity called PCP (PBSS Control Point), but it has few differences.
PBSS support is mandatory for 11ad devices.

Add support for PBSS by introducing a new PBSS flag attribute.
The PBSS flag is used in the START_AP command to request starting
a PCP instead of an AP, and in the CONNECT command to request
connecting to a PCP instead of an AP.

Signed-off-by: Lior David <liord@codeaurora.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: add support for non-linear skbs in ieee80211_amsdu_to_8023s
Felix Fietkau [Tue, 2 Feb 2016 13:39:10 +0000 (14:39 +0100)]
cfg80211: add support for non-linear skbs in ieee80211_amsdu_to_8023s

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: add function for 802.3 conversion with separate output buffer
Felix Fietkau [Tue, 2 Feb 2016 13:39:09 +0000 (14:39 +0100)]
cfg80211: add function for 802.3 conversion with separate output buffer

Use skb_copy_bits in preparation for allowing fragmented skbs

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: move A-MSDU skb_linearize call to ieee80211_amsdu_to_8023s
Felix Fietkau [Tue, 2 Feb 2016 13:39:08 +0000 (14:39 +0100)]
mac80211: move A-MSDU skb_linearize call to ieee80211_amsdu_to_8023s

Prepararation for zero-copy A-MSDU support with page fragment SKBs

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix memory leak
Sudip Mukherjee [Tue, 2 Feb 2016 07:51:14 +0000 (13:21 +0530)]
mac80211: fix memory leak

On error we jumped to the error label and returned the error code but we
missed releasing sinfo.

Fixes: 5fe74014172d ("mac80211: avoid excessive stack usage in sta_info")
Reviewed-by: Julian Calaby <julian.calaby@gmail.com>
Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Interoperability workaround for 80+80 and 160 MHz channels
Jouni Malinen [Mon, 1 Feb 2016 09:40:55 +0000 (11:40 +0200)]
mac80211: Interoperability workaround for 80+80 and 160 MHz channels

Number of deployed 80 MHz capable VHT stations that do not support 80+80
and 160 MHz bandwidths seem to misbehave when trying to connect to an AP
that advertises 80+80 or 160 MHz channel bandwidth in the VHT Operation
element. To avoid such issues with deployed devices, modify the design
based on recently accepted IEEE 802.11 standard changes (*).

This allows poorly implemented VHT 80 MHz stations to connect with the
AP in 80 MHz mode. 80+80 and 160 MHz capable stations need to support
the new workaround mechanism to allow full bandwidth to be used.
However, there are more or less no impacted station with 80+80/160
capability deployed.

The rebased version of this patch is based on the updated version from
Johannes Berg to take the HT/VHT chandef refactoring into account.

(*) Changes in
https://mentor.ieee.org/802.11/dcn/15/11-15-1530-04-000m-vht160-operation-signaling-through-non-zero-ccfs1.docx
were accepted during the IEEE 802.11 January 2016 meeting.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: add API to allow filtering frames in BA sessions
Sara Sharon [Thu, 28 Jan 2016 14:19:25 +0000 (16:19 +0200)]
mac80211: add API to allow filtering frames in BA sessions

If any frames are dropped that are part of a BA session, the reorder
buffer will "indefinitely" (until the timeout) wait for them to come
in (or a BAR moving the window) and won't release frames after them.
This means it isn't possible to filter frames within a BA session in
firmware.

Introduce an API function that allows such filtering. Calling this
function will move the BA window forward to the new SSN, and allows
marking frames after the SSN as having been filtered, so any future
reordering activity will release frames while skipping the holes.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: change ieee80211_rx_reorder_ready() arguments
Johannes Berg [Thu, 28 Jan 2016 14:19:24 +0000 (16:19 +0200)]
mac80211: change ieee80211_rx_reorder_ready() arguments

Clean up ieee80211_rx_reorder_ready() callers by passing the RX
TID struct and the index, instead of the frames list. This will
make it more extensible as well.

While at it, move the inline to rx.c as it's only used there.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: expose txq queue depth and size to drivers
Michal Kazior [Wed, 27 Jan 2016 14:26:12 +0000 (15:26 +0100)]
mac80211: expose txq queue depth and size to drivers

This will allow drivers to make more educated
decisions whether to defer transmission or not.

Relying on wake_tx_queue() call count implicitly
was not possible because it could be called
without queued frame count actually changing on
software tx aggregation start/stop code paths.

It was also not possible to know how long
byte-wise queue was without dequeueing.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Parse legacy and HT rate in injected frames
Sven Eckelmann [Tue, 26 Jan 2016 16:11:13 +0000 (17:11 +0100)]
mac80211: Parse legacy and HT rate in injected frames

Drivers/devices without their own rate control algorithm can get the
information what rates they should use from either the radiotap header of
injected frames or from the rate control algorithm. But the parsing of the
legacy rate information from the radiotap header was removed in commit
e6a9854b05c1 ("mac80211/drivers: rewrite the rate control API").

The removal of this feature heavily reduced the usefulness of frame
injection when wanting to simulate specific transmission behavior. Having
rate parsing together with MCS rates and retry support allows a fine
grained selection of the tx behavior of injected frames for these kind of
tests.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Cc: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: mesh: drop constant field mean_chain_len
Bob Copeland [Sat, 30 Jan 2016 18:17:03 +0000 (13:17 -0500)]
mac80211: mesh: drop constant field mean_chain_len

The mean_chain_len field in struct mesh_table is copied whenever a
new mesh table is allocated, but only ever has the value 2 and is
never otherwise updated, so just remove it and use the related
define instead.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: avoid excessive stack usage in sta_info
Arnd Bergmann [Tue, 26 Jan 2016 22:05:31 +0000 (23:05 +0100)]
mac80211: avoid excessive stack usage in sta_info

When CONFIG_OPTIMIZE_INLINING is set, the sta_info_insert_finish
function consumes more stack than normally, exceeding the
1024 byte limit on ARM:

net/mac80211/sta_info.c: In function 'sta_info_insert_finish':
net/mac80211/sta_info.c:561:1: error: the frame size of 1080 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]

It turns out that there are two functions that put a 'struct station_info'
on the stack: __sta_info_destroy_part2 and sta_info_insert_finish, and
this structure alone requires up to 792 bytes.

Hoping that both are called rarely enough, this replaces the
on-stack structure with a dynamic allocation, which unfortunately
requires some suboptimal error handling for out-of-memory.

The __sta_info_destroy_part2 function is actually affected by the
stack usage twice because it calls cfg80211_del_sta_sinfo(), which
has another instance of struct station_info on its stack.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 98b6218388e3 ("mac80211/cfg80211: add station events")
Fixes: 6f7a8d26e266 ("mac80211: send statistics with delete station event")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: always print a message when disconnecting
Johannes Berg [Mon, 25 Jan 2016 13:46:36 +0000 (15:46 +0200)]
mac80211: always print a message when disconnecting

Make sure there's at least a debug message whenever the
connection to the AP is terminated.

Also change one message from wiphy_debug() to the common
mlme_dbg().

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix ibss scan parameters
Sara Sharon [Mon, 25 Jan 2016 13:46:35 +0000 (15:46 +0200)]
mac80211: fix ibss scan parameters

When joining IBSS a full scan should be initiated in order to search
for existing cell, unless the fixed_channel parameter was set.
A default channel to create the IBSS on if no cell was found is
provided as well.
However - a scan is initiated only on the default channel provided
regardless of whether ifibss->fixed_channel is set or not, with the
obvious result of the cell not joining existing IBSS cell that is
on another channel.

Fixes: 76bed0f43b27 ("mac80211: IBSS fix scan request")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: add RX_FLAG_MACTIME_PLCP_START
Johannes Berg [Mon, 25 Jan 2016 13:46:34 +0000 (15:46 +0200)]
mac80211: add RX_FLAG_MACTIME_PLCP_START

The timestamp given by iwlwifi is at the beginning of the
frame over the air, at (or during) the SYNC field. Allow
such timestamps to be given to mac80211, at least (for now)
for frames with non-HT/VHT preambles.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix unnecessary frame drops in mesh fwding
Michal Kazior [Mon, 25 Jan 2016 13:43:24 +0000 (14:43 +0100)]
mac80211: fix unnecessary frame drops in mesh fwding

The ieee80211_queue_stopped() expects hw queue
number but it was given raw WMM AC number instead.

This could cause frame drops and problems with
traffic in some cases - most notably if driver
doesn't map AC numbers to queue numbers 1:1 and
uses ieee80211_stop_queues() and
ieee80211_wake_queue() only without ever calling
ieee80211_wake_queues().

On ath10k it was possible to hit this problem in
the following case:

  1. wlan0 uses queue 0
     (ath10k maps queues per vif)
  2. offchannel uses queue 15
  3. queues 1-14 are unused
  4. ieee80211_stop_queues()
  5. ieee80211_wake_queue(q=0)
  6. ieee80211_wake_queue(q=15)
     (other queues are not woken up because both
      driver and mac80211 know other queues are
      unused)
  7. ieee80211_rx_h_mesh_fwding()
  8. ieee80211_select_queue_80211() returns 2
  9. ieee80211_queue_stopped(q=2) returns true
 10. frame is dropped (oops!)

Fixes: d3c1597b8d1b ("mac80211: fix forwarded mesh frame queue mapping")
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: fix txq queue related crashes
Michal Kazior [Thu, 21 Jan 2016 13:23:07 +0000 (14:23 +0100)]
mac80211: fix txq queue related crashes

The driver can access the queue simultanously
while mac80211 tears down the interface. Without
spinlock protection this could lead to corrupting
sk_buff_head and subsequently to an invalid
pointer dereference.

Fixes: ba8c3d6f16a1 ("mac80211: add an intermediate software queue implementation")
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: mesh_plink: remove redundant sta_info check
Sunil Shahu [Thu, 21 Jan 2016 05:36:25 +0000 (11:06 +0530)]
mac80211: mesh_plink: remove redundant sta_info check

Remove unnecessory "if" statement and club it with previos "if" block.

Signed-off-by: Sunil Shahu <shshahu@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Update userspace API documentation
João Paulo Rechi Vita [Tue, 19 Jan 2016 15:42:42 +0000 (10:42 -0500)]
rfkill: Update userspace API documentation

Add a note to userspace on the effect of RFKILL_OP_CHANGE_ALL also
updating the default state for hotplugged devices.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
[reword a bit]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: Remove obsolete "claim" sysfs interface
João Paulo Rechi Vita [Tue, 19 Jan 2016 15:42:39 +0000 (10:42 -0500)]
rfkill: Remove obsolete "claim" sysfs interface

This was scheduled to be removed in 2012 by:

 commit 69c86373c6ea1149aa559e6088362d58d8ec8835
 Author: florian@mickler.org <florian@mickler.org>
 Date:   Wed Feb 24 12:05:16 2010 +0100

     Document the rfkill sysfs ABI

     This moves sysfs ABI info from Documentation/rfkill.txt to the
     ABI subfolder and reformats it.

     This also schedules the deprecated sysfs parts to be removed in
     2012 (claim file) and 2014 (state file).

Signed-off-by: Florian Mickler <florian@mickler.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: remove/inline __rfkill_set_hw_state
João Paulo Rechi Vita [Tue, 19 Jan 2016 15:42:38 +0000 (10:42 -0500)]
rfkill: remove/inline __rfkill_set_hw_state

__rfkill_set_hw_state() is only one used in rfkill_set_hw_state(), and
none of them are long or complicated, so merging the two makes the code
easier to read.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: use variable instead of duplicating the expression
João Paulo Rechi Vita [Tue, 19 Jan 2016 15:42:37 +0000 (10:42 -0500)]
rfkill: use variable instead of duplicating the expression

RFKILL_BLOCK_SW value have just been saved to prev, no need to check it
again in the if expression. This makes code a little bit easier to read.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: Fix some linguistics in Kconfig
Ola Olsson [Sun, 10 Jan 2016 17:41:42 +0000 (18:41 +0100)]
cfg80211: Fix some linguistics in Kconfig

Signed-off-by: Ola Olsson <ola.olsson@sonymobile.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agorfkill: disentangle polling pause and suspend
Johannes Berg [Wed, 20 Jan 2016 09:39:23 +0000 (10:39 +0100)]
rfkill: disentangle polling pause and suspend

When suspended while polling is paused, polling will erroneously
resume at resume time. Fix this by tracking pause and suspend in
separate state variable and adding the necessary checks.

Clarify the documentation on this as well.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211_hwsim: remove shadowing variable
Johannes Berg [Wed, 13 Jan 2016 13:21:01 +0000 (14:21 +0100)]
mac80211_hwsim: remove shadowing variable

The function here already has a variable hdr that even
contains the right thing, so the inner scope's hdr variable
that's shadowing the outer one can just be removed.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Make addr const in SET_IEEE80211_PERM_ADDR()
Bjorn Andersson [Thu, 24 Dec 2015 08:33:26 +0000 (00:33 -0800)]
mac80211: Make addr const in SET_IEEE80211_PERM_ADDR()

Make the addr parameter const in SET_IEEE80211_PERM_ADDR() to save
clients from having to cast away a const qualifier.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: refactor HT/VHT to chandef code
Johannes Berg [Fri, 18 Dec 2015 14:08:34 +0000 (15:08 +0100)]
mac80211: refactor HT/VHT to chandef code

The station MLME and IBSS/mesh ones use entirely different
code for interpreting HT and VHT operation elements. Change
the code that interprets them a bit - it now modifies an
existing chandef - and use it also in the MLME code.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: add more warnings for inconsistent ops
Ola Olsson [Wed, 16 Dec 2015 21:43:35 +0000 (22:43 +0100)]
cfg80211: add more warnings for inconsistent ops

Print a warning whenever an expected callback function
lacks implementation.

Signed-off-by: Ola Olsson <ola.olsson@sonymobile.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: limit the A-MSDU Tx based on peer's capabilities
Emmanuel Grumbach [Sun, 13 Dec 2015 13:41:05 +0000 (15:41 +0200)]
mac80211: limit the A-MSDU Tx based on peer's capabilities

In VHT, the specification allows to limit the number of
MSDUs in an A-MSDU in the Extended Capabilities IE. There
is also a limitation on the byte size in the VHT IE.
In HT, the only limitation is on the byte size.
Parse the capabilities from the peer and make them
available to the driver.

In HT, there is another limitation when a BA agreement
is active: the byte size can't be greater than 4095.
This is not enforced here.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: Recalc min chandef when station is associated
Ilan Peer [Sun, 13 Dec 2015 11:41:43 +0000 (13:41 +0200)]
mac80211: Recalc min chandef when station is associated

The minimum chandef bandwidth calculation was done only in case
a new station was inserted (or when an existing station was removed).
However, it is possible that stations are inserted before they are
associated, e.g., when FULL_AP_CLIENT_STATE is supported and user
space adds stations unassociated.

Fix this by calling ieee80211_recalc_min_chandef() whenever
a station transitions in/out the associated state, and only
consider station marked as associated.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: allow drivers to report (non-)monitor frames
Grzegorz Bajorski [Fri, 11 Dec 2015 13:39:46 +0000 (14:39 +0100)]
mac80211: allow drivers to report (non-)monitor frames

Some drivers offload some frames internally (e.g.
AddBa). Reporting such frames to mac80211 would
only confuse MLME. However it would be useful to
be able to pass such frames to monitor interfaces
for sniffing purposes, e.g. when running AP +
monitor.

To do that allow drivers to tell mac80211 whether
a given frame should be:
 - processed but not delivered to any monitor vif
 - not processed but delievered to monitor vifs
   only

Signed-off-by: Grzegorz Bajorski <grzegorz.bajorski@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: support hw managing reorder logic
Sara Sharon [Tue, 8 Dec 2015 17:09:05 +0000 (19:09 +0200)]
mac80211: support hw managing reorder logic

Enable driver to manage the reordering logic itself.
This is needed for example for the iwlwifi driver that
will support hardware assisted reordering.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agoiwlwifi: mvm: allow to disable beacon filtering for AP/GO interface
Andrei Otcheretianski [Tue, 26 Jan 2016 16:12:28 +0000 (18:12 +0200)]
iwlwifi: mvm: allow to disable beacon filtering for AP/GO interface

When in AP mode we need to filter in beacons from other APs to update HT
operation mode. As a power optimization the beacons are filtered out when
there are no associated stations. As a result, when there are no
associated stations, we will not update the HT operation mode until a
station connects.
Add a debugfs parameter that allows to disable this optimization.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: update iwl_mpdu_desc fields
Sara Sharon [Tue, 26 Jan 2016 10:35:13 +0000 (12:35 +0200)]
iwlwifi: pcie: update iwl_mpdu_desc fields

Final API of iwl_mpdu_desc has a change in the order of
the fields and does not include energy from the third
antenna (which is perfectly fine, since we don't have one).
Update the structure accordingly.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: enable multi-queue rx path
Sara Sharon [Mon, 25 Jan 2016 16:14:49 +0000 (18:14 +0200)]
iwlwifi: pcie: enable multi-queue rx path

Previous patches enabled new 9000 hardware DMA for one queue
only.
Enable the actual multi-queue path and configuration now.
This requires also per-queue NAPI struct.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: support rss queues configuration command
Sara Sharon [Thu, 31 Dec 2015 09:49:18 +0000 (11:49 +0200)]
iwlwifi: mvm: support rss queues configuration command

9000 series supports multi-queue rx. The hardware needs
to be configured with the hash functions to perform and
indirection table that maps hash results to the relevant
CPUs\queues.
Support this configuration.
Add debugfs hook to configure the indirection table in
order to enable performance analysis. The configuration
is stateless, receives a partial or full pattern and sends
the command to the firmware.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: rs: fix TPC action decision algorithm
Gregory Greenman [Tue, 26 Jan 2016 22:10:15 +0000 (00:10 +0200)]
iwlwifi: mvm: rs: fix TPC action decision algorithm

Decreasing Tx power is allowed only when success ratio is
above the threshold defined in the algorithm. Add this condition.

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add new ADD_STA command version
Sara Sharon [Tue, 26 Jan 2016 11:17:47 +0000 (13:17 +0200)]
iwlwifi: mvm: add new ADD_STA command version

The 9000 hardware introduces the frame releaser, which
keeps track of the aggregation window and notifies host
of the window status. This requires in turn updating
the hardware with the RX BA session window size.
Firmware API was changed to enable that, update the driver
accordingly.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: Remove iwl_mvm_update_beacon_abort
Avri Altman [Sun, 24 Jan 2016 13:56:11 +0000 (15:56 +0200)]
iwlwifi: mvm: Remove iwl_mvm_update_beacon_abort

It is only called from iwl_mvm_power_set_ba() so simplify things
by removing it.

Signed-off-by: Avri Altman <avri.altman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: Remove bf_vif from iwl_power_vifs
Avri Altman [Sun, 24 Jan 2016 13:18:59 +0000 (15:18 +0200)]
iwlwifi: mvm: Remove bf_vif from iwl_power_vifs

This member is actually not needed as beacon abort
is only allowed for a bss station.

Signed-off-by: Avri Altman <avri.altman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: treat iwl_parse_nvm_data() MAC addr as little endian
Johannes Berg [Sun, 24 Jan 2016 14:28:43 +0000 (15:28 +0100)]
iwlwifi: treat iwl_parse_nvm_data() MAC addr as little endian

The MAC address parameters passed to iwl_parse_nvm_data() are passed on
to iwl_set_hw_address_family_8000() which treats them as little endian.
Annotate them as such, and add the missing byte-swapping in mvm.

While at it, add the MAC address to the error to make debugging issues
with it easier.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add tlv for multi queue rx support
Sara Sharon [Wed, 30 Dec 2015 21:58:29 +0000 (23:58 +0200)]
iwlwifi: mvm: add tlv for multi queue rx support

Previous patches enabled the multi-queue rx path based on
iwl_mvm_has_new_rx_api() which returned false by default.
Change it to return the actual value based on the firmware
TLV which is now defined.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: change the check for ADD_STA status
Sara Sharon [Thu, 7 Jan 2016 14:50:45 +0000 (16:50 +0200)]
iwlwifi: mvm: change the check for ADD_STA status

The firmware will return the baid for BA session in the
ADD_STA command response.
This requires masking the check of the status, which is
actually only 8 bits, and not the whole 32 bits.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add debug print if scan config is ignored
Max Stepanov [Mon, 4 Jan 2016 09:09:14 +0000 (11:09 +0200)]
iwlwifi: mvm: add debug print if scan config is ignored

Print a debug message in iwl_mvm_config_scan() if a scan configuration
data is decided not to be sent to FW.

Signed-off-by: Max Stepanov <Max.Stepanov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: change access to ieee80211_hdr
Sara Sharon [Wed, 16 Dec 2015 19:17:06 +0000 (21:17 +0200)]
iwlwifi: mvm: change access to ieee80211_hdr

Make the code clearer.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: support setting minimum quota from debugfs
Johannes Berg [Wed, 13 Jan 2016 14:01:00 +0000 (15:01 +0100)]
iwlwifi: mvm: support setting minimum quota from debugfs

For debug purposes, allow setting minimum quota (for a single
virtual interface) from debugfs. This is an absolute minimum,
so it can only be set up to 95%.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: track low-latency sources separately
Johannes Berg [Wed, 6 Jan 2016 09:01:41 +0000 (10:01 +0100)]
iwlwifi: mvm: track low-latency sources separately

To be able to test low-latency behaviour properly, split the
different low-latency sources so that setting any one of them,
for example from debugfs, is sufficient; this avoids getting
the debug setting overwritten by other sources.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: support beacon storing
Sara Sharon [Tue, 29 Dec 2015 09:07:15 +0000 (11:07 +0200)]
iwlwifi: mvm: support beacon storing

Currently firmware is configured to filter out beacons. In case
a beacon was changed - it is waking the host.
However, some vendors change their IEs frequently without any
significant change, and redundant wakeups are triggered as a
result.
As a solution disable beacon filtering when entering d0i3.
Instead, firmware will store the latest beacon and upon exiting
d0i3 it will send it up to the host, so the host can act upon
changes (if there were any).
This beacon will arrive as a dedicated notification - support it
as well.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add support for negative temperatures
Chaya Rachel Ivgi [Sun, 27 Dec 2015 11:45:42 +0000 (13:45 +0200)]
iwlwifi: mvm: add support for negative temperatures

The driver should support also negative temperatures.
So there is a need to separate between the return value and
temperature in order to be able to distinguish between
a negative temperature and error value.

Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: fix debugfs signedness warning
Johannes Berg [Thu, 14 Jan 2016 09:55:22 +0000 (10:55 +0100)]
iwlwifi: mvm: fix debugfs signedness warning

Using kstrtouint() with a signed int isn't really right,
use kstrotoint() instead.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: remove shadowing variable
Johannes Berg [Thu, 14 Jan 2016 09:46:38 +0000 (10:46 +0100)]
iwlwifi: mvm: remove shadowing variable

The outer scope has a perfectly suitable 'i' variable,
use it instead of adding a shadowing one in the inner
scope.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: make collecting fw debug data optional
Golan Ben-Ami [Wed, 23 Dec 2015 15:53:27 +0000 (17:53 +0200)]
iwlwifi: mvm: make collecting fw debug data optional

Slow platforms may have issues with dumping data upon
firmware assert. Make it easier to disable it for those
platform.

Signed-off-by: Golan Ben-Ami <golan.ben.ami@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: Add P2P client snoozing
Avri Altman [Wed, 25 Nov 2015 11:17:10 +0000 (13:17 +0200)]
iwlwifi: mvm: Add P2P client snoozing

Enable snoozing and U-APSD on P2P client. The firwmare will
support this only if the BSS vif is not associated.
Make this configurable by a constant variable and disable
it by default.

Signed-off-by: Avri Altman <avri.altman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: add trigger for firmware dump upon TX response status
Golan Ben-Ami [Wed, 2 Sep 2015 09:34:23 +0000 (12:34 +0300)]
iwlwifi: mvm: add trigger for firmware dump upon TX response status

This will allow to collect the data when the firmware
sends a specific tx response status.

Signed-off-by: Golan Ben-Ami <golan.ben.ami@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: Document missing module options
Rodrigo Freire [Wed, 6 Jan 2016 22:24:01 +0000 (20:24 -0200)]
iwlwifi: Document missing module options

This patch documents two missing module options in the internal
code comment block.

Signed-off-by: Rodrigo Freire <rfreire@redhat.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: dvm: handle zero brightness for wifi LED
Hubert Tarasiuk [Sun, 24 Jan 2016 12:35:06 +0000 (13:35 +0100)]
iwlwifi: dvm: handle zero brightness for wifi LED

In order to have the LED being OFF constantly when the
brightness is set to 0, we need to pass IWL_LED_SOLID to
iwl_led_cmd as the off parameter, otherwise the led will
stay on constantly.

This fixes
https://bugzilla.kernel.org/show_bug.cgi?id=110551

Signed-off-by: Hubert Tarasiuk <hubert.tarasiuk@gmail.com>
[reworked the commit message]
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: various comments and code cleanups
Emmanuel Grumbach [Sun, 24 Jan 2016 21:04:22 +0000 (23:04 +0200)]
iwlwifi: various comments and code cleanups

No need to include net/ip6_checksum.h twice.
Remove TODOs.
Remove trailing space.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: mvm: Do not switch to D3 image on suspend
Matti Gottlieb [Thu, 31 Dec 2015 16:18:02 +0000 (18:18 +0200)]
iwlwifi: mvm: Do not switch to D3 image on suspend

Currently when the driver is configured with wowlan parameters, and enters
D3 mode, the driver switches the FW image to D3, and when it exists
suspend, it reloads the D0 image.

If the firmware supports the consolidation of the D0 & D3 images there is
no need to load the D3 image on suspend, and no need to reload the D0
image on resume.

Do not switch images on suspend / resume, for firmwares that support
consolidated images.

Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: add RTPM support when wifi is enabled
Luciano Coelho [Tue, 18 Aug 2015 13:02:38 +0000 (16:02 +0300)]
iwlwifi: pcie: add RTPM support when wifi is enabled

Enable runtime power management (RTPM) for PCIe devices and implement
the corresponding functions to enable D0i3 mode when the device is
idle.

Additionally, remove some unnecessary #ifdef's because the RTPM code
will not be called if runtime PM is not configured.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: add initial RTPM support for PCI
Luca Coelho [Wed, 6 Jan 2016 20:40:38 +0000 (18:40 -0200)]
iwlwifi: pcie: add initial RTPM support for PCI

Add an initial implementation of runtime power management (RTPM) for
PCI devices.  With this patch, RTPM is only used when wifi is off
(i.e. the wifi interface is down).  This implementation is behind a
new Kconfig flag, IWLWIFI_PCIE_RTPM.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: add 9000 series multi queue rx DMA support
Sara Sharon [Wed, 23 Dec 2015 13:10:03 +0000 (15:10 +0200)]
iwlwifi: pcie: add 9000 series multi queue rx DMA support

The 9000 series introduces several changes in the device
DMA operation.
As the device now supports multi-queue rx, several DMA channels
should be configured.
The flows of providing the device with the allocated RBDs now
changes as well - the device maintains a separate table of used
and free table.

The hardware may use the free table to feed RBDs to any queue.
This requires maintaing a shared table to map returned RBDs to
the original RXB - for that purpose the VID is introduced - an
internal identifier of the RB placed in the lower 12 bits and
returned by HW in the used data.

Another change is the support of 64 bit DMA address.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: add infrastructure for multi-queue rx
Sara Sharon [Mon, 14 Dec 2015 15:44:11 +0000 (17:44 +0200)]
iwlwifi: pcie: add infrastructure for multi-queue rx

The 9000 series devices will support multi rx queues.
Current code has one static rx queue - change it to allocate
a number of queues per the device capability (pre-9000 devices
have the number of rx queues set to one).

Subsequent generalizations are:

Change the code to access an explicit numbered rx queue only
when the queue number is known - when handling interrupt, when
accessing the default queue and when iterating the queues.
The rest of the functions will receive the rx queue as a pointer.

Generalize the warning in allocation failure to consider the
allocator status instead of a single rx queue status.

Move the rx initial pool of memory buffers to be shared among
all the queues and allocated to the default queue on init.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agoiwlwifi: pcie: buffer packets to avoid overflowing Tx queues
Emmanuel Grumbach [Thu, 14 Jan 2016 07:39:21 +0000 (09:39 +0200)]
iwlwifi: pcie: buffer packets to avoid overflowing Tx queues

When the Tx queues are full above a threshold, we
immediately stop the mac80211's queue to stop getting new
packets. This worked until TSO was enabled.
With TSO, one single packet from mac80211 can use many
descriptors since a large send needs to be split into
several segments.
This means that stopping mac80211's queues is not enough
and we also need to ensure that we don't overflow the Tx
queues with one single packet from mac80211.
Add code to transport layer to do just that. Stop
mac80211's queue as soon as the queue is full above the
same threshold as before, and keep pushing the current
packet along with its segments on the queue, but check
that we don't overflow. If that would happen, buffer the
segments, and send them when there is room in the Tx queue
again. Of course, we first need to send the buffered
segments and only then, wake up mac80211's queues.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8 years agomac80211: pass block ack session timeout to to driver
Sara Sharon [Wed, 30 Dec 2015 14:06:04 +0000 (16:06 +0200)]
mac80211: pass block ack session timeout to to driver

Currently mac80211 does not inform the driver of the session
block ack timeout when starting a rx aggregation session.
Drivers that manage the reorder buffer need to know this
parameter.
Seeing that there are now too many arguments for the
drv_ampdu_action() function, wrap them inside a structure.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211/mac80211: use to_delayed_work
Geliang Tang [Fri, 1 Jan 2016 15:48:52 +0000 (23:48 +0800)]
cfg80211/mac80211: use to_delayed_work

Use to_delayed_work() instead of open-coding it.

Signed-off-by: Geliang Tang <geliangtang@163.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: document status.freq restrictions
Johannes Berg [Tue, 8 Dec 2015 14:04:35 +0000 (16:04 +0200)]
mac80211: document status.freq restrictions

It's not always necessary to set the status.freq field, for example
when this would be an expensive calculation. It must be set for all
management frames (as they might be reported to userspace), but for
data frames it's not really required. Document this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: pass RX aggregation window size to driver
Sara Sharon [Tue, 8 Dec 2015 14:04:34 +0000 (16:04 +0200)]
mac80211: pass RX aggregation window size to driver

Currently mac80211 does not inform the driver of the window
size when starting an RX aggregation session.
To enable managing the reorder buffer in the driver or hardware
the window size is needed.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: add flag for duplication check
Sara Sharon [Tue, 8 Dec 2015 14:04:33 +0000 (16:04 +0200)]
mac80211: add flag for duplication check

Add an option for driver to check for packet duplication
by itself.
This is needed for example by the iwlwifi driver which
parallelizes the RX path and does the duplication check
per queue.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agomac80211: process and save VHT MU-MIMO group frame
Sara Sharon [Tue, 8 Dec 2015 14:04:31 +0000 (16:04 +0200)]
mac80211: process and save VHT MU-MIMO group frame

The Group ID Management frame is an Action frame of
category VHT. It is transmitted by the AP to assign
or change the user position of a STA for one or more
group IDs.
Process and save the group membership data. Notify
underlying driver of changes.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agocfg80211: remove CFG80211_REG_DEBUG
Johannes Berg [Fri, 11 Dec 2015 14:31:10 +0000 (15:31 +0100)]
cfg80211: remove CFG80211_REG_DEBUG

Instead of having this Kconfig option, which just *floods* the
kernel log,
 * remove the per-channel prints that are fairly useless anyway
 * convert the conditional printing to pr_debug()

Signed-off-by: Johannes Berg <johannes.berg@intel.com>