1
linux/net/mac80211
Johannes Berg 15062e6a85 mac80211: fix another race in aggregation start
Emmanuel noticed that when mac80211 stops the queues
for aggregation that can leave a packet pending. This
packet will be given to the driver after the AMPDU
callback, but as a non-aggregated packet which messes
up the sequence number etc.

I also noticed by looking at the code that if packets
are being processed while we clear the WANT_START bit,
they might see it cleared already and queue up on
tid_tx->pending. If the driver then rejects the new
aggregation session we leak the packet.

Fix both of these issues by changing this code to not
stop the queues at all. Instead, let packets queue up
on the tid_tx->pending queue instead of letting them
get to the driver, and add code to recover properly
in case the driver rejects the session.

(The patch looks large because it has to move two
functions to before their new use.)

Cc: stable@vger.kernel.org
Reported-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-12-07 15:09:53 -05:00
..
aes_ccm.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_ccm.h mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.h mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
agg-rx.c Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem 2011-10-11 15:35:42 -04:00
agg-tx.c mac80211: fix another race in aggregation start 2011-12-07 15:09:53 -05:00
cfg.c mac80211: Fix TDLS support validation in add_station handler 2011-11-02 15:23:12 -04:00
cfg.h
chan.c mac80211: fix channel type recalculation with HT and non-HT interfaces 2011-03-14 14:46:58 -04:00
debugfs_key.c mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
debugfs_key.h mac80211: support separate default keys 2010-12-13 15:23:29 -05:00
debugfs_netdev.c mac80211: add ieee80211_vif param to tsf functions 2011-09-27 14:27:48 -04:00
debugfs_netdev.h mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
debugfs_sta.c mac80211: Fix AMSDU rate printout in debugfs. 2011-11-21 14:45:19 -05:00
debugfs_sta.h
debugfs.c mac80211: add ieee80211_vif param to tsf functions 2011-09-27 14:27:48 -04:00
debugfs.h mac80211: refactor debugfs function generation code 2010-11-15 13:24:48 -05:00
driver-ops.h mac80211: pass vif param to conf_tx() callback 2011-10-03 15:22:41 -04:00
driver-trace.c
driver-trace.h mac80211: allow out-of-band EOSP notification 2011-09-30 15:57:23 -04:00
event.c
ht.c mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
ibss.c Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem 2011-10-11 15:35:42 -04:00
ieee80211_i.h mac80211: disable powersave for broken APs 2011-11-02 15:23:13 -04:00
iface.c Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem 2011-10-11 15:35:42 -04:00
Kconfig mac80211: handle TDLS high-level commands and frames 2011-09-30 15:57:07 -04:00
key.c mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
key.h mac80211: allow driver to disconnect after resume 2011-07-13 14:49:43 -04:00
led.c mac80211: remove stray extern 2011-01-05 16:07:12 -05:00
led.h mac80211: selective throughput LED trigger active 2010-12-22 14:33:37 -05:00
main.c mac80211: fill rate filter for internal scan requests 2011-11-30 14:20:19 -05:00
Makefile mac80211: add the minstrel_ht rate control algorithm 2010-06-02 16:12:59 -04:00
mesh_hwmp.c mac80211: Fix regression that allowed mpaths between non-peers. 2011-10-11 16:41:12 -04:00
mesh_pathtbl.c Merge branch 'master' of ssh://infradead/~/public_git/wireless-next into for-davem 2011-09-19 15:00:16 -04:00
mesh_plink.c mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
mesh.c mac80211: standardize adding supported rates IEs 2011-09-30 15:57:06 -04:00
mesh.h mac80211: standardize adding supported rates IEs 2011-09-30 15:57:06 -04:00
michael.c
michael.h
mlme.c mac80211: fix race between connection monitor & suspend 2011-11-09 14:35:56 -05:00
offchannel.c mac80211: Optimize scans on current operating channel. 2011-02-04 16:30:32 -05:00
pm.c mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
rate.c mac80211: Send nullfunc frames at lower rate during connection monitor 2011-10-03 15:22:32 -04:00
rate.h mac80211: add the minstrel_ht rate control algorithm 2010-06-02 16:12:59 -04:00
rc80211_minstrel_debugfs.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
rc80211_minstrel_ht_debugfs.c mac80211: disallow seeks in minstrel debug code 2010-09-16 10:33:17 +02:00
rc80211_minstrel_ht.c mac80211: max_tp_rate2 management of minstrel_ht 2011-09-30 15:16:25 -04:00
rc80211_minstrel_ht.h minstrel_ht: move minstrel_mcs_groups declaration to header file 2010-06-24 15:42:18 -04:00
rc80211_minstrel.c minstrel_ht: fixed rate mode through debugfs 2011-06-01 15:12:29 -04:00
rc80211_minstrel.h minstrel_ht: fixed rate mode through debugfs 2011-06-01 15:12:29 -04:00
rc80211_pid_algo.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rc80211_pid_debugfs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-10-23 11:47:02 -07:00
rc80211_pid.h Fix common misspellings 2011-03-31 11:26:23 -03:00
rx.c mac80211: fix NULL dereference in radiotap code 2011-11-09 14:35:55 -05:00
scan.c Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 2011-10-25 15:18:39 +02:00
spectmgmt.c mac80211: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
sta_info.c mac80211: uAPSD - fix IEEE80211_FCTL_MOREDATA bit setting 2011-11-07 13:19:15 -05:00
sta_info.h mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
status.c mac80211: Fix endian bug in radiotap header generation 2011-11-21 14:45:20 -05:00
tkip.c mac80211: allow driver access to TKIP RX P1K 2011-07-15 13:38:32 -04:00
tkip.h mac80211: fix TKIP races, make API easier to use 2011-07-08 11:11:19 -04:00
tx.c mac80211: reformat TX unauthorised check 2011-10-14 14:48:16 -04:00
util.c Revert "mac80211: clear sta.drv_priv on reconfiguration" 2011-12-01 10:44:17 -05:00
wep.c mac80211: remove the dependency on crypto_blkcipher 2011-04-04 16:20:00 -04:00
wep.h mac80211: remove the dependency on crypto_blkcipher 2011-04-04 16:20:00 -04:00
wme.c mac80211: optimise station flags 2011-09-30 15:57:19 -04:00
wme.h mac80211: Mesh data frames must have the QoS header 2011-09-14 13:56:50 -04:00
work.c mac80211: config hw when going back on-channel 2011-11-02 15:23:11 -04:00
wpa.c mac80211: move fragment flag to info flag as dont-fragment 2011-10-11 16:41:19 -04:00
wpa.h