linux-stable/net/wireless
Emmanuel Grumbach 3afc2167f6 cfg80211/mac80211: ignore signal if the frame was heard on wrong channel
On 2.4Ghz band, the channels overlap since the delta
between different channels is 5Mhz while the width of the
receiver is 20Mhz (at least).

This means that we can hear beacons or probe responses from
adjacent channels. These frames will have a significant
lower RSSI which will feed all kinds of logic with inaccurate
data. An obvious example is the roaming algorithm that will
think our AP is getting weak and will try to move to another
AP.

In order to avoid this, update the signal only if the frame
has been heard on the same channel as the one advertised by
the AP in its DS / HT IEs.
We refrain from updating the values only if the AP is
already in the BSS list so that we will still have a valid
(but inaccurate) value if the AP was heard on an adjacent
channel only.

To achieve this, stop taking the channel from DS / HT IEs
in mac80211. The DS / HT IEs is taken into account to
discard the frame if it was received on a disabled channel.
This can happen due to the same phenomenon: the frame is
sent on channel 12, but heard on channel 11 while channel
12 can be disabled on certain devices. Since this check
is done in cfg80211, stop even checking this in mac80211.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
[remove unused rx_freq variable]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-03-19 21:29:56 +01:00
..
.gitignore
ap.c cfg80211: send stop AP event only due to internal reason 2014-02-25 17:34:18 +01:00
chan.c cfg80211: DFS get CAC time from regulatory database 2014-02-25 17:32:54 +01:00
core.c cfg80211: send stop AP event only due to internal reason 2014-02-25 17:34:18 +01:00
core.h cfg80211: make __cfg80211_join_ibss() static 2014-03-19 21:29:56 +01:00
db.txt
debugfs.c mac80211: fix some snprintf misuses 2013-10-01 12:16:51 +02:00
debugfs.h
ethtool.c ethtool: fix drvinfo strings set in drivers 2013-01-06 21:06:31 -08:00
ethtool.h
genregdb.awk cfg80211: regulatory: allow getting DFS CAC time from userspace 2014-02-25 17:29:25 +01:00
ibss.c cfg80211: make __cfg80211_join_ibss() static 2014-03-19 21:29:56 +01:00
Kconfig lib80211: hide Kconfig symbol 2012-11-16 14:29:09 -05:00
lib80211.c
lib80211_crypt_ccmp.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
lib80211_crypt_tkip.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
lib80211_crypt_wep.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
Makefile cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
mesh.c cfg80211: remove radar requirements check from cfg80211_can_use_iftype_chan() 2014-02-21 09:33:10 +01:00
mlme.c cfg80211: DFS get CAC time from regulatory database 2014-02-25 17:32:54 +01:00
nl80211.c cfg80211: send stop AP event only due to internal reason 2014-02-25 17:34:18 +01:00
nl80211.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-02-13 14:43:02 -05:00
radiotap.c radiotap: fix bitmap-end-finding buffer overrun 2013-12-16 12:06:43 +01:00
rdev-ops.h cfg80211: Pass TDLS peer capability information in tdls_mgmt 2014-02-20 11:55:25 +01:00
reg.c cfg80211: allow reprocessing of pending requests 2014-03-03 15:07:33 +01:00
reg.h cfg80211: regulatory: simplify uevent sending 2014-02-25 15:44:44 +01:00
regdb.h
scan.c cfg80211/mac80211: ignore signal if the frame was heard on wrong channel 2014-03-19 21:29:56 +01:00
sme.c cfg80211: send scan results from work queue 2014-02-06 09:55:19 +01:00
sysfs.c net: wireless: convert class code to use dev_groups 2013-07-25 16:34:40 -07:00
sysfs.h net: misc: Remove extern from function prototypes 2013-10-19 19:12:11 -04:00
trace.c cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
trace.h cfg80211: Pass TDLS peer capability information in tdls_mgmt 2014-02-20 11:55:25 +01:00
util.c cfg80211: send stop AP event only due to internal reason 2014-02-25 17:34:18 +01:00
wext-compat.c cfg80211: add sanity check for retry limit in wext-compat 2014-01-09 17:05:28 +01:00
wext-compat.h
wext-core.c wext: include wireless event id when it has a size problem 2012-09-05 16:12:44 +02:00
wext-priv.c
wext-proc.c net: proc: change proc_net_remove to remove_proc_entry 2013-02-18 14:53:08 -05:00
wext-sme.c cfg80211: separate internal SME implementation 2013-06-04 13:03:11 +02:00
wext-spy.c wireless: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:19 -04:00