linux/drivers/net/wireless
Ping-Ke Shih 7a242fb698 rtw88: fix EAPOL 4-way failure by finish IQK earlier
Connecting to an AP with WPA2 security may fail. The IQK
and the EAPOL 4-way handshake may overlap because the
driver does IQK right after assoc success.

For 802.11n devices, the IQK is done in the driver and it
could require more than 100ms to complete. During IQK, any
TX/RX events are paused. So if the EAPOL 4-way handshake
started before IQK finished, then the 1/4 and 2/4 part of
the handshake could be dropped. The AP will then issue
deauth with reason IEEE8021X_FAILED (23).

To resolve this, move IQK routine into managed TX prepare
(ieee80211_ops::mgd_prepare_tx()). The callback is called
before the managed frames (auth/assoc) are sent. This will
make sure that the IQK is completed before the handshake
starts. But don't do IQK during scanning because doing it
on each channel will take too long.

For 802.11ac devices, the IQK is done in firmware and it
takes less time to complete. Therefore we don't see a
failure during the EAPOL 4-way handshake. But it is still
worth moving the IQK into ieee80211_ops::mgd_prepare_tx().

Fixes: f5df1a8b43 ("rtw88: 8723d: Add 8723DE to Kconfig and Makefile")
Tested-by: You-Sheng Yang <vicamo.yang@canonical.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200529025009.2468-4-yhchuang@realtek.com
2020-05-29 20:36:05 +03:00
..
admtek adm80211: Replace zero-length array with flexible-array member 2020-03-23 19:16:11 +02:00
ath Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2020-05-29 17:37:25 +03:00
atmel atmel: Use shared constant for rfc1042 header 2020-05-29 20:16:24 +03:00
broadcom b43_legacy: Fix connection problem with WPA3 2020-05-29 20:13:38 +03:00
cisco proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
intel One batch of changes, containing: 2020-05-26 20:17:35 -07:00
intersil prism54: Replace zero-length array with flexible-array 2020-05-12 11:55:48 +03:00
marvell libertas: Use shared constant for rfc1042 header 2020-05-29 20:16:00 +03:00
mediatek mt76: mt7915: Fix build error 2020-05-22 15:39:40 +03:00
quantenna One batch of changes, containing: 2020-05-26 20:17:35 -07:00
ralink rt2800: enable MFP support unconditionally 2020-05-29 18:42:28 +03:00
realtek rtw88: fix EAPOL 4-way failure by finish IQK earlier 2020-05-29 20:36:05 +03:00
rsi rsi: fix a typo "throld" -> "threshold" 2020-04-14 18:04:15 +03:00
st cw1200: Remove local sdio VENDOR and DEVICE id definitions 2020-05-29 20:15:24 +03:00
ti wlcore: fix runtime pm imbalance in __wl1271_op_remove_interface 2020-05-29 20:34:47 +03:00
zydas zd1211rw: Replace zero-length array with flexible-array member 2020-03-23 19:13:28 +02:00
Kconfig docs: networking: convert ray_cs.txt to ReST 2020-04-30 12:56:37 -07:00
mac80211_hwsim.c One batch of changes, containing: 2020-05-26 20:17:35 -07:00
mac80211_hwsim.h mac80211_hwsim: notify wmediumd of used MAC addresses 2020-04-24 11:45:47 +02:00
Makefile
ray_cs.c ray_cs: use true,false for bool variable 2020-05-06 11:33:23 +03:00
ray_cs.h
rayctl.h ray_cs: Replace zero-length array with flexible-array member 2020-03-23 19:18:27 +02:00
rndis_wlan.c rndis_wlan: Replace zero-length array with flexible-array 2020-05-12 11:56:55 +03:00
virt_wifi.c virt_wifi: implement ndo_get_iflink 2020-03-20 14:42:20 +01:00
wl3501.h wl3501_cs: Replace zero-length array with flexible-array member 2020-03-23 19:21:21 +02:00
wl3501_cs.c netdev: pass the stuck queue to the timeout handler 2019-12-12 21:38:57 -08:00