android_kernel_xiaomi_sm8350/net/mac80211
Felix Fietkau 4bb29f8c39 mac80211: fix rx data handling for non-data frames on multiple vifs
The loop that passes non-data frames to all relevant vifs inside the
__ieee80211_rx_handle_packet keeps a pointer to the previous sdata to
avoid having to make unnecessary copies of the frame it's handling.
This led to a bug that caused it to apply the ieee80211_rx_data state
to the wrong interface, thereby either missing the rx.sta pointer or
having it assigned where it shouldn't be.
This breaks (among other things) aggregation on some vifs, as action
frame exchages are dropped to the cooked monitor interface due to
rx->sta being NULL.
Fix this by restructuring the loop so that it prepares the rx data just
before making the skb copy and calling the rx handlers.

Cc: stable@kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-01-22 16:11:33 -05:00
..
aes_ccm.c
aes_ccm.h
aes_cmac.c
aes_cmac.h
agg-rx.c mac80211: trace interface name 2009-12-21 18:38:54 -05:00
agg-tx.c mac80211: quit addba_resp_timer if Tx BA session is torn down 2010-01-12 13:50:08 -05:00
cfg.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-01-19 15:58:41 -05:00
cfg.h
debugfs_key.c mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
debugfs_key.h
debugfs_netdev.c mac80211: remove unused type argument 2010-01-12 14:20:57 -05:00
debugfs_netdev.h mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
debugfs_sta.c mac80211: only bother printing highest data rate on debugfs if its set 2009-12-22 13:56:02 -05:00
debugfs_sta.h
debugfs.c mac80211: add debugfs interface for U-APSD queue configuration 2010-01-12 14:21:00 -05:00
debugfs.h cfg80211/mac80211: use debugfs_remove_recursive 2009-10-30 16:49:18 -04:00
driver-ops.h mac80211: pass vif and station to update_tkip_key 2010-01-22 16:08:55 -05:00
driver-trace.c
driver-trace.h mac80211: pass vif and station to update_tkip_key 2010-01-22 16:08:55 -05:00
event.c
ht.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2009-12-28 15:09:11 -05:00
ibss.c mac80211: Fixed a bug in IBSS merge 2010-01-19 16:43:10 -05:00
ieee80211_i.h mac80211: add debugfs interface for U-APSD queue configuration 2010-01-12 14:21:00 -05:00
iface.c mac80211: fix WMM AC default for non-QoS data frames 2010-01-19 16:25:07 -05:00
Kconfig mac80211: remove payload alignment warning 2009-12-21 18:56:09 -05:00
key.c mac80211: add ieee80211_sdata_running 2009-12-28 16:54:49 -05:00
key.h mac80211 : fix a race with update_tkip_key 2009-12-22 13:31:14 -05:00
led.c
led.h
main.c mac80211: add debugfs interface for U-APSD queue configuration 2010-01-12 14:21:00 -05:00
Makefile mac80211: Generalize off-channel operation helpers from scan code 2009-12-28 16:55:01 -05:00
mesh_hwmp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2009-12-28 15:09:11 -05:00
mesh_pathtbl.c mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
mesh_plink.c mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
mesh.c mac80211: add ieee80211_sdata_running 2009-12-28 16:54:49 -05:00
mesh.h mac80211: Revert 'Use correct sign for mesh active path refresh' 2009-12-10 16:12:52 -05:00
michael.c
michael.h
mlme.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-01-19 15:58:41 -05:00
offchannel.c mac80211: Fixed netif_tx_wake_all_queues in IBSS mode 2010-01-15 16:58:28 -05:00
pm.c mac80211: remove struct ieee80211_if_init_conf 2009-12-28 16:55:07 -05:00
rate.c cfg80211/mac80211: Use more generic bitrate mask for rate control 2010-01-12 13:50:11 -05:00
rate.h cfg80211/mac80211: Use more generic bitrate mask for rate control 2010-01-12 13:50:11 -05:00
rc80211_minstrel_debugfs.c
rc80211_minstrel.c
rc80211_minstrel.h
rc80211_pid_algo.c mac80211: pid: replace open-coded msecs_to_jiffies 2010-01-19 16:25:15 -05:00
rc80211_pid_debugfs.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
rc80211_pid.h
rx.c mac80211: fix rx data handling for non-data frames on multiple vifs 2010-01-22 16:11:33 -05:00
scan.c mac80211: add U-APSD client support 2010-01-12 14:20:58 -05:00
spectmgmt.c mac80211: reduce reliance on netdev 2009-12-21 18:38:52 -05:00
sta_info.c mac80211: allow station updates on ap interfaces for vlan stations 2010-01-12 14:02:07 -05:00
sta_info.h mac80211: allow station updates on ap interfaces for vlan stations 2010-01-12 14:02:07 -05:00
status.c mac80211: re-enable re-transmission of filtered frames 2010-01-19 16:25:21 -05:00
tkip.c mac80211: pass vif and station to update_tkip_key 2010-01-22 16:08:55 -05:00
tkip.h
tx.c mac80211: re-enable re-transmission of filtered frames 2010-01-19 16:25:21 -05:00
util.c mac80211: fix memory leak in ieee80211_send_probe_req 2010-01-15 17:02:08 -05:00
wep.c mac80211: avoid NULL ptr deref when using WEP 2010-01-22 12:39:14 -05:00
wep.h
wme.c mac80211: fix-up build breakage in 2.6.33 2010-01-06 15:35:49 -05:00
wme.h mac80211: fix skb buffering issue 2010-01-05 16:21:40 -05:00
work.c mac80211: add debugfs interface for U-APSD queue configuration 2010-01-12 14:21:00 -05:00
wpa.c mac80211: move control.hw_key assignment 2010-01-19 16:25:19 -05:00
wpa.h