1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/wireless/rsi
Marek Vasut b8f6efccbb wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
When using wpa_supplicant v2.10, this driver is no longer able to
associate with any AP and fails in the EAPOL 4-way handshake while
sending the 2/4 message to the AP. The problem is not present in
wpa_supplicant v2.9 or older. The problem stems from HostAP commit
144314eaa ("wpa_supplicant: Send EAPOL frames over nl80211 where available")
which changes the way EAPOL frames are sent, from them being send
at L2 frames to them being sent via nl80211 control port.

An EAPOL frame sent as L2 frame is passed to the WiFi driver with
skb->protocol ETH_P_PAE, while EAPOL frame sent via nl80211 control
port has skb->protocol set to ETH_P_802_3 . The later happens in
ieee80211_tx_control_port(), where the EAPOL frame is encapsulated
into 802.3 frame.

The rsi_91x driver handles ETH_P_PAE EAPOL frames as high-priority
frames and sends them via highest-priority transmit queue, while
the ETH_P_802_3 frames are sent as regular frames. The EAPOL 4-way
handshake frames must be sent as highest-priority, otherwise the
4-way handshake times out.

Therefore, to fix this problem, inspect the skb control flags and
if flag IEEE80211_TX_CTRL_PORT_CTRL_PROTO is set, assume this is
an EAPOL frame and transmit the frame via high-priority queue just
like other ETH_P_PAE frames.

Fixes: 0eb42586cf ("rsi: data packet descriptor enhancements")
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20221104163339.227432-1-marex@denx.de
2022-11-08 09:41:02 +02:00
..
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile rsi: add coex support 2018-03-13 18:36:57 +02:00
rsi_91x_coex.c exit: Rename complete_and_exit to kthread_complete_and_exit 2021-12-13 12:04:45 -06:00
rsi_91x_core.c wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port 2022-11-08 09:41:02 +02:00
rsi_91x_debugfs.c rsi: make array fsm_state static const, makes object smaller 2021-08-29 11:32:01 +03:00
rsi_91x_hal.c wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port 2022-11-08 09:41:02 +02:00
rsi_91x_mac80211.c wifi: mac80211: add wake_tx_queue callback to drivers 2022-10-10 11:00:03 +02:00
rsi_91x_main.c Merge branch 'signal-for-v5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2022-01-17 05:49:30 +02:00
rsi_91x_mgmt.c wifi: mac80211: move interface config to new struct 2022-06-20 12:55:03 +02:00
rsi_91x_ps.c rsi: remove unused including <linux/version.h> 2021-04-13 14:51:41 -07:00
rsi_91x_sdio.c wifi: rsi: fix repeated words in comments 2022-07-18 15:11:53 +03:00
rsi_91x_sdio_ops.c exit: Rename complete_and_exit to kthread_complete_and_exit 2021-12-13 12:04:45 -06:00
rsi_91x_usb.c rsi: Fix out-of-bounds read in rsi_read_pkt() 2021-11-29 12:43:54 +02:00
rsi_91x_usb_ops.c exit: Rename complete_and_exit to kthread_complete_and_exit 2021-12-13 12:04:45 -06:00
rsi_boot_params.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_coex.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_common.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_debugfs.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_hal.h rsi: Fix module dev_oper_mode parameter description 2021-09-21 18:03:48 +03:00
rsi_main.h rsi: fix rate mask set leading to P2P failure 2021-09-21 08:42:37 +03:00
rsi_mgmt.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_ps.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_sdio.h rsi: fix comment syntax in file headers 2021-04-18 09:27:35 +03:00
rsi_usb.h rsi: Fix out-of-bounds read in rsi_read_pkt() 2021-11-29 12:43:54 +02:00