kernel_samsung_a53x/drivers/net/wireless/ath/ath11k
Baochen Qiang e92274ba92 wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers
[ Upstream commit d2b0ca38d362ebf16ca79cd7f309d5bb8b581deb ]

Currently for CCMP256, GCMP128 and GCMP256 ciphers, in ath11k_install_key()
IEEE80211_KEY_FLAG_GENERATE_IV_MGMT is not set. And in ath11k_mac_mgmt_tx_wmi()
a length of IEEE80211_CCMP_MIC_LEN is reserved for all ciphers.

This results in unexpected management frame drop in case either of above 3 ciphers
is used. The reason is, without IEEE80211_KEY_FLAG_GENERATE_IV_MGMT set, mac80211
will not generate CCMP/GCMP headers in frame for ath11k. Also MIC length reserved
is wrong. Such frame is dropped later by hardware:

ath11k_pci 0000:5a:00.0: mac tx mgmt frame, buf id 0
ath11k_pci 0000:5a:00.0: mgmt tx compl ev pdev_id 1, desc_id 0, status 1

From user point of view, we have observed very low throughput due to this issue:
action frames are all dropped so ADDBA response from DUT never reaches AP. AP
can not use aggregation thus throughput is low.

Fix this by setting IEEE80211_KEY_FLAG_GENERATE_IV_MGMT flag and by reserving proper
MIC length for those ciphers.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Reported-by: Yaroslav Isakov <yaroslav.isakov@gmail.com>
Tested-by: Yaroslav Isakov <yaroslav.isakov@gmail.com>
Closes: https://lore.kernel.org/all/CADS+iDX5=JtJr0apAtAQ02WWBxgOFEv8G063vuGYwDTC8AVZaw@mail.gmail.com
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240605014826.22498-1-quic_bqiang@quicinc.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:20:07 +01:00
..
ahb.c wifi: ath11k: Defer on rproc_get failure 2024-11-18 12:12:28 +01:00
ahb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ce.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ce.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dbring.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dbring.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs_htt_stats.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs_htt_stats.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs_sta.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs_sta.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dp.h ath11k: dp: stop rx pktlog before suspend 2024-11-23 23:20:07 +01:00
dp_rx.c wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers 2024-11-23 23:20:07 +01:00
dp_rx.h wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers 2024-11-23 23:20:07 +01:00
dp_tx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dp_tx.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal_desc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal_rx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal_rx.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal_tx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hal_tx.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hif.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
htc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
htc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mac.c wifi: ath11k: fix wrong handling of CCMP256 and GCMP ciphers 2024-11-23 23:20:07 +01:00
mac.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mhi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mhi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
peer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
peer.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qmi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qmi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reg.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reg.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rx_desc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spectral.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spectral.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
testmode.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
testmode.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
testmode_i.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
thermal.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
thermal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
wmi.c wifi: ath11k: fix dfs radar event locking 2024-11-18 11:43:25 +01:00
wmi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00