lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 15 Oct 2020 13:16:16 +0200 From: Marek Vasut <marex@...x.de> To: netdev@...r.kernel.org Cc: Marek Vasut <marex@...x.de>, Angus Ainslie <angus@...ea.ca>, "David S . Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Kalle Valo <kvalo@...eaurora.org>, Lee Jones <lee.jones@...aro.org>, Martin Kepplinger <martink@...teo.de>, Sebastian Krzyszkowiak <sebastian.krzyszkowiak@...i.sm>, Siva Rebbagondla <siva8118@...il.com>, linux-wireless@...r.kernel.org Subject: [PATCH] rsi: Fix TX EAPOL packet handling against iwlwifi AP In case RSI9116 SDIO WiFi operates in STA mode against Intel 9260 in AP mode, the association fails. The former is using wpa_supplicant during association, the later is set up using hostapd: iwl$ cat hostapd.conf interface=wlp1s0 ssid=test country_code=DE hw_mode=g channel=1 wpa=2 wpa_passphrase=test wpa_key_mgmt=WPA-PSK iwl$ hostapd -d hostapd.conf rsi$ wpa_supplicant -i wlan0 -c <(wpa_passphrase test test) The problem is that the TX EAPOL data descriptor RSI_DESC_REQUIRE_CFM_TO_HOST flag and extended descriptor EAPOL4_CONFIRM frame type are not set in case the AP is iwlwifi, because in that case the TX EAPOL packet is 2 bytes shorter. The downstream vendor driver has this change in place already [1], however there is no explanation for it, neither is there any commit history from which such explanation could be obtained. [1] https://github.com/SiliconLabs/RS911X-nLink-OSD/blob/master/rsi/rsi_91x_hal.c#L238 Signed-off-by: Marek Vasut <marex@...x.de> Cc: Angus Ainslie <angus@...ea.ca> Cc: David S. Miller <davem@...emloft.net> Cc: Jakub Kicinski <kuba@...nel.org> Cc: Kalle Valo <kvalo@...eaurora.org> Cc: Lee Jones <lee.jones@...aro.org> Cc: Martin Kepplinger <martink@...teo.de> Cc: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@...i.sm> Cc: Siva Rebbagondla <siva8118@...il.com> Cc: linux-wireless@...r.kernel.org Cc: netdev@...r.kernel.org --- drivers/net/wireless/rsi/rsi_91x_hal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/rsi/rsi_91x_hal.c b/drivers/net/wireless/rsi/rsi_91x_hal.c index 3f7e3cfb6f00..ce9892152f4d 100644 --- a/drivers/net/wireless/rsi/rsi_91x_hal.c +++ b/drivers/net/wireless/rsi/rsi_91x_hal.c @@ -248,7 +248,8 @@ int rsi_prepare_data_desc(struct rsi_common *common, struct sk_buff *skb) rsi_set_len_qno(&data_desc->len_qno, (skb->len - FRAME_DESC_SZ), RSI_WIFI_MGMT_Q); - if ((skb->len - header_size) == EAPOL4_PACKET_LEN) { + if (((skb->len - header_size) == EAPOL4_PACKET_LEN) || + ((skb->len - header_size) == EAPOL4_PACKET_LEN - 2)) { data_desc->misc_flags |= RSI_DESC_REQUIRE_CFM_TO_HOST; xtend_desc->confirm_frame_type = EAPOL4_CONFIRM; -- 2.28.0
Powered by blists - more mailing lists