linux/net/mac80211
Johannes Berg 96aa2e7cf1 mac80211: calculate min channel width correctly
In the current minimum chandef code there's an issue in that the
recalculation can happen after rate control is initialized for a
station that has a wider bandwidth than the current chanctx, and
then rate control can immediately start using those higher rates
which could cause problems.

Observe that first of all that this problem is because we don't
take non-associated and non-uploaded stations into account. The
restriction to non-associated is quite pointless and is one of
the causes for the problem described above, since the rate init
will happen before the station is set to associated; no frames
could actually be sent until associated, but the rate table can
already contain higher rates and that might cause problems.

Also, rejecting non-uploaded stations is wrong, since the rate
control can select higher rates for those as well.

Secondly, it's then necessary to recalculate the minimal config
before initializing rate control, so that when rate control is
initialized, the higher rates are already available. This can be
done easily by adding the necessary function call in rate init.

Change-Id: Ib9bc02d34797078db55459d196993f39dcd43070
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2017-01-11 16:34:51 +01:00
..
aes_ccm.c mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
aes_ccm.h mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
aes_cmac.c mac80211: FILS AEAD protection for station mode association frames 2016-10-27 16:03:25 +02:00
aes_cmac.h mac80211: FILS AEAD protection for station mode association frames 2016-10-27 16:03:25 +02:00
aes_gcm.c mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
aes_gcm.h mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
aes_gmac.c mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
aes_gmac.h mac80211: move struct aead_req off the stack 2016-10-17 16:14:04 +02:00
agg-rx.c mac80211: fix tid_agg_rx NULL dereference 2016-10-19 12:11:49 +02:00
agg-tx.c mac80211: reject TSPEC TIDs (TSIDs) for aggregation 2016-09-15 10:08:52 +02:00
cfg.c mac80211: validate new interface's beacon intervals 2016-10-27 09:18:07 +02:00
chan.c mac80211: calculate min channel width correctly 2017-01-11 16:34:51 +01:00
debug.h mac80211: 802.11p OCB mode support 2014-11-04 13:18:21 +01:00
debugfs_key.c mac80211: move TKIP TX IVs to public part of key struct 2016-02-24 09:04:38 +01:00
debugfs_key.h
debugfs_netdev.c mac80211: filter multicast data packets on AP / AP_VLAN 2016-10-12 11:33:29 +02:00
debugfs_netdev.h mac80211: fix some missing includes 2014-04-09 14:49:43 +02:00
debugfs_sta.c mac80211: improve RX aggregation data in debugfs 2016-10-19 12:12:11 +02:00
debugfs_sta.h
debugfs.c mac80211: add a HW flag for supporting HW TX fragmentation 2016-10-19 12:12:44 +02:00
debugfs.h mac80211: fix some missing includes 2014-04-09 14:49:43 +02:00
driver-ops.c mac80211: add offset_tsf driver op and use it for mesh 2016-09-30 13:45:44 +02:00
driver-ops.h mac80211: add offset_tsf driver op and use it for mesh 2016-09-30 13:45:44 +02:00
ethtool.c mac80211: move station statistics into sub-structs 2015-10-21 10:08:22 +02:00
fils_aead.c mac80211: fils_aead: fix encrypt error handling 2016-10-28 12:59:12 +02:00
fils_aead.h mac80211: FILS AEAD protection for station mode association frames 2016-10-27 16:03:25 +02:00
ht.c mac80211: limit the A-MSDU Tx based on peer's capabilities 2016-02-24 09:04:20 +01:00
ibss.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
ieee80211_i.h linux: drop __bitwise__ everywhere 2016-12-16 00:13:41 +02:00
iface.c Among various cleanups and improvements, we have the following: 2016-10-29 17:28:45 -04:00
Kconfig mac80211: use DECLARE_EWMA 2015-08-14 17:49:53 +02:00
key.c mac80211: don't call drv_set_default_unicast_key() for VLANs 2016-12-13 15:57:59 +01:00
key.h mac80211: move TKIP TX IVs to public part of key struct 2016-02-24 09:04:38 +01:00
led.c mac80211: fix throughput LED trigger 2015-05-11 19:16:04 +02:00
led.h mac80211: make LED triggering depend on activation 2015-05-05 14:21:56 +02:00
main.c mac80211: Claim Fast Initial Link Setup (FILS) STA support 2016-10-27 16:03:26 +02:00
Makefile Makefile: drop -D__CHECK_ENDIAN__ from cflags 2016-12-16 00:13:43 +02:00
mesh_hwmp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-09-23 06:46:57 -04:00
mesh_pathtbl.c mac80211: make mpath path fixing more robust 2016-09-12 12:27:14 +02:00
mesh_plink.c mac80211: use common cleanup for user/!user_mpm 2016-06-30 12:06:41 +02:00
mesh_ps.c mac80211: mesh: separate plid and aid concepts 2015-07-17 15:47:11 +02:00
mesh_sync.c mac80211: mesh: decrease max drift 2016-09-30 13:47:00 +02:00
mesh.c mac80211: mesh: flush stations before beacons are stopped 2016-08-03 08:45:15 +02:00
mesh.h mac80211: mesh: fix cleanup for mesh pathtable 2016-04-05 21:34:53 +02:00
michael.c
michael.h mac80211: fix some missing includes 2014-04-09 14:49:43 +02:00
mlme.c cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts 2016-12-09 12:57:49 +01:00
ocb.c mac80211: remove rx_stats.last_rx update after sta alloc 2016-04-06 13:18:15 +02:00
offchannel.c mac80211: fix CMD_FRAME for AP_VLAN 2016-10-12 09:19:12 +02:00
pm.c mac80211: remove useless open_count check 2016-09-13 15:39:29 +02:00
rate.c mac80211: calculate min channel width correctly 2017-01-11 16:34:51 +01:00
rate.h mac80211: remove sta_info debugfs sub-struct 2016-04-05 11:59:05 +02:00
rc80211_minstrel_debugfs.c mac80211: minstrel[_ht]: remove non-ascii debugfs characters 2015-09-29 15:56:47 +02:00
rc80211_minstrel_ht_debugfs.c mac80211: minstrel[_ht]: remove non-ascii debugfs characters 2015-09-29 15:56:47 +02:00
rc80211_minstrel_ht.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
rc80211_minstrel_ht.h mac80211: add max lossless throughput per rate 2015-04-01 20:44:32 +02:00
rc80211_minstrel.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
rc80211_minstrel.h mac80211: add standard deviation to Minstrel stats 2015-04-01 20:44:33 +02:00
rx.c mac80211: Fix headroom allocation when forwarding mesh pkt 2017-01-11 16:07:29 +01:00
scan.c mac80211: fix scan completed tracing 2016-09-15 16:46:16 +02:00
spectmgmt.c mac80211: parse wide bandwidth channel switch IE with workaround 2016-07-06 14:55:04 +02:00
sta_info.c mac80211: fix the TID on NDPs sent as EOSP carrier 2017-01-11 16:32:58 +01:00
sta_info.h mac80211: fix tid_agg_rx NULL dereference 2016-10-19 12:11:49 +02:00
status.c mac80211: Use rhltable instead of rhashtable 2016-09-20 04:43:36 -04:00
tdls.c mac80211: TDLS: don't require beaconing for AP BW 2016-08-30 08:03:41 +02:00
tkip.c mac80211: move TKIP TX IVs to public part of key struct 2016-02-24 09:04:38 +01:00
tkip.h mac80211: move TKIP TX IVs to public part of key struct 2016-02-24 09:04:38 +01:00
trace_msg.h mac80211: Move message tracepoints to their own header 2015-04-07 12:32:09 -04:00
trace.c mac80211: Move message tracepoints to their own header 2015-04-07 12:32:09 -04:00
trace.h mac80211: add offset_tsf driver op and use it for mesh 2016-09-30 13:45:44 +02:00
tx.c mac80211: initialize fast-xmit 'info' later 2017-01-02 11:28:25 +01:00
util.c mac80211: validate new interface's beacon intervals 2016-10-27 09:18:07 +02:00
vht.c mac80211: Ignore VHT IE from peer with wrong rx_mcs_map 2016-11-15 14:18:43 +01:00
wep.c mac80211: move WEP tailroom size check 2015-05-11 14:51:29 +02:00
wep.h
wme.c mac80211: preserve more bits when building QoS header 2016-10-12 14:17:13 +02:00
wme.h mac80211: add WMM admission control support 2014-10-22 10:42:09 +02:00
wpa.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
wpa.h mac80111: Add BIP-GMAC-128 and BIP-GMAC-256 ciphers 2015-01-27 11:10:13 +01:00