mirror_ubuntu-kernels/drivers/net/wireless/ath/ath10k
Wen Gong e6f1c0d26a ath10k: restore tx sk_buff of htt header for SDIO
ieee80211_report_used_skb of mac80211 use the frame_control of
ieee80211_hdr in sk_buff and indicate it to another function
ieee80211_mgd_conn_tx_status, then it queue work ieee80211_sta_work,
but ieee80211_is_auth(fc) in ieee80211_sta_work check fail when the
authentication has transmitted by ath10k.

When the ath10k report it with HTT_TX_COMPL_STATE_DISCARD, it will be
set without flag IEEE80211_TX_STAT_ACK, then mac80211 should try the
next authentication immeditely, but in fact mac80211 wait 1 second for
it, the reason is ieee80211_is_auth(fc) in ieee80211_sta_work check
fail for the sk_buff which is not restored, the data of sk_buff is not
the begin of ieee80211_hdr, in fact it is the begin of htt_cmd_hdr.

dmesg without this patch, it wait 1 second for the next retry when
ath10k report without IEEE80211_TX_STAT_ACK for authentication:
[ 6973.883116] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 1/3)
[ 6974.705471] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 2/3)
[ 6975.712962] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 3/3)

Restore the sk_buff make mac8011 retry the next authentication
immeditely which meet logic of mac80211.

dmesg with this patch, it retry the next immeditely when ath10k
report without IEEE80211_TX_STAT_ACK for authentication:
[  216.734813] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 1/3)
[  216.739914] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 2/3)
[  216.745874] wlan0: send auth to 5e:6f:2b:0d:fb:d7 (try 3/3)

Tested-on: QCA6174 hw3.2 SDIO WLAN.RMH.4.4.1-00049

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1612839530-2263-1-git-send-email-wgong@codeaurora.org
2021-02-11 08:47:53 +02:00
..
ahb.c ath10k: prevent deinitializing NAPI twice 2020-12-17 08:52:31 +02:00
ahb.h
bmi.c ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
bmi.h ath10k: add large size for BMI download data for SDIO 2019-11-25 13:53:46 +02:00
ce.c ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
ce.h ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
core.c ath10k: allow dynamic SAR power limits via common API 2021-01-28 09:18:17 +02:00
core.h ath10k: allow dynamic SAR power limits via common API 2021-01-28 09:18:17 +02:00
coredump.c ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
coredump.h ath10k: add bus type for each layout of coredump 2020-08-19 20:36:15 +03:00
debug.c ath10k: add atomic protection for device recovery 2020-12-12 06:38:12 +02:00
debug.h ath10k: Add new debug level for sta related logs 2021-02-09 09:25:10 +02:00
debugfs_sta.c ath10k: Add peer param map for tlv and non-tlv 2019-09-23 10:27:56 +03:00
hif.h ath10k: hif: make send_complete_check op optional 2020-04-21 15:04:02 +03:00
htc.c ath10k: sanitity check for ep connectivity 2021-01-18 18:11:32 +02:00
htc.h ath10k: enable alt data of TX path for sdio 2020-04-22 09:43:32 +03:00
htt_rx.c ath10k: remove h from printk format specifier 2021-02-04 09:37:58 +02:00
htt_tx.c ath10k: restore tx sk_buff of htt header for SDIO 2021-02-11 08:47:53 +02:00
htt.c ath10k: add htt TX bundle for sdio 2020-04-22 09:43:29 +03:00
htt.h ath10k: increase rx buffer size to 2048 2021-01-18 18:12:47 +02:00
hw.c ath10k: allow qca988x family to support ack rssi of tx data packets. 2020-03-12 10:20:02 +02:00
hw.h ath10k: allow dynamic SAR power limits via common API 2021-01-28 09:18:17 +02:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
mac.c ath10k: Add new debug level for sta related logs 2021-02-09 09:25:10 +02:00
mac.h ath10k: add support for hardware rfkill 2019-10-02 20:20:33 +03:00
Makefile
p2p.c ath10k: Don't iterate over not-sdata-in-driver interfaces. 2020-11-07 09:57:07 +02:00
p2p.h
pci.c ath10k: prevent deinitializing NAPI twice 2020-12-17 08:52:31 +02:00
pci.h ath10k: fix ath10k_pci struct layout 2020-05-12 10:33:13 +03:00
qmi_wlfw_v01.c ath10k: Fix HOST capability QMI incompatibility 2019-09-17 17:03:13 +03:00
qmi_wlfw_v01.h ath10k: Fix HOST capability QMI incompatibility 2019-09-17 17:03:13 +03:00
qmi.c ath10k: Constify static qmi structs 2020-12-02 20:32:38 +02:00
qmi.h ath10k: Remove ath10k_qmi_register_service_notifier() declaration 2020-05-30 17:18:29 +03:00
rx_desc.h ath10k: remove repeated words in comments 2020-10-28 15:42:15 +02:00
sdio.c ath10k: prevent deinitializing NAPI twice 2020-12-17 08:52:31 +02:00
sdio.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-06-03 16:27:18 -07:00
snoc.c ath10k: prevent deinitializing NAPI twice 2020-12-17 08:52:31 +02:00
snoc.h ath10k: Keep track of which interrupts fired, don't poll them 2020-09-01 15:04:13 +03:00
spectral.c ath10k: make relay callbacks const 2020-12-15 22:46:18 -08:00
spectral.h
swap.c ath10k: remove unnecessary 'out of memory' message 2019-06-28 22:14:06 +03:00
swap.h
targaddrs.h ath10k: sdio: add firmware coredump support 2020-08-19 20:36:19 +03:00
testmode_i.h
testmode.c ath10k: Fix some typo in some warning messages 2019-12-17 16:24:17 +02:00
testmode.h
thermal.c
thermal.h
trace.c
trace.h ath10k: remove h from printk format specifier 2021-02-04 09:37:58 +02:00
txrx.c ath10k: remove h from printk format specifier 2021-02-04 09:37:58 +02:00
txrx.h
usb.c ath10k: Release some resources in an error handling path 2020-12-02 20:31:54 +02:00
usb.h
wmi-ops.h ath10k: Add wmi command support for station specific TID config 2020-08-26 17:52:46 +03:00
wmi-tlv.c ath10k: Fix suspicious RCU usage warning in ath10k_wmi_tlv_parse_peer_stats_info() 2021-02-09 09:17:07 +02:00
wmi-tlv.h ath10k: add wmi service peer stat info for wmi tlv 2020-08-15 10:05:12 +03:00
wmi.c ath10k: Add new debug level for sta related logs 2021-02-09 09:25:10 +02:00
wmi.h ath10k: Fix the parsing error in service available event 2020-12-02 20:28:02 +02:00
wow.c ath10k: Use fallthrough pseudo-keyword 2020-08-17 13:24:41 +03:00
wow.h