mirror_ubuntu-kernels/drivers/net/wireless/ath/ath9k
Jonas Jelonek 7f3a6f5dd2 ath9k: switch to rate table based lookup
This patch changes mac80211 rate control for the ath9k driver.  The rate lookup
per packet is changed from legacy usage of ieee80211_get_tx_rates() to the new
rate table based lookup in struct ieee80211_sta->rates.

The most recent rate control API, introduced with commit 0d528d85c5
("mac80211: improve the rate control API"), allows drivers to directly get
rates from ieee80211_sta->rates. This is not used by every driver yet, the
translation/merge is currently performed in ieee80211_get_tx_rates.  This patch
changes the behaviour and avoids the call to ieee80211_get_tx_rates and
subsequent calls. ath9k now directly reads rates from sta->rates into its rate
table. Cause ath9k does not expect rate selection in SKB->CB, the table merge
does not consider rate array in SKB->CB except for the first entry (used for
probing).

Tested with a 8devices Rambutan with QCA9558 SoC by performing two runs, one
without the patch and one with. Generated traffic between AP and multiple STAs
in each run, measured throughput and captured rc_stats.  Comparison of both
runs resulted in same rate selection and no performance loss or other negative
effects.

Co-developed-by: Thomas Huehn <thomas.huehn@hs-nordhausen.de>
Signed-off-by: Thomas Huehn <thomas.huehn@hs-nordhausen.de>
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20211128090753.958-1-jelonek.jonas@gmail.com
2021-12-07 17:16:16 +02:00
..
ahb.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
ani.c ath9k: Replace HTTP links with HTTPS ones 2020-08-14 17:44:14 +03:00
ani.h
antenna.c
ar953x_initvals.h
ar955x_1p0_initvals.h
ar956x_initvals.h
ar5008_initvals.h ath9k: ar5008_initvals: Move ar5416Bank{0,1,2,3,7} to where they are used 2020-08-27 13:17:40 +03:00
ar5008_phy.c ath9k: ar5008_phy: Demote half completed function headers 2020-11-07 10:07:51 +02:00
ar9001_initvals.h ath9k: ar9001_initvals: Remove unused array 'ar5416Bank6_9100' 2020-08-27 13:17:35 +03:00
ar9002_calib.c ath9k: add calibration timeout for AR9002 2020-04-28 12:07:21 +03:00
ar9002_hw.c
ar9002_initvals.h ath9k: ar9002_initvals: Remove unused array 'ar9280PciePhy_clkreq_off_L1_9280' 2020-08-27 13:17:32 +03:00
ar9002_mac.c ath9k: fix intr_txqs setting 2021-11-19 10:07:38 +02:00
ar9002_phy.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
ar9002_phy.h
ar9003_2p2_initvals.h ath9k: ar9003_2p2_initvals: Remove unused const variables 2020-11-07 10:07:48 +02:00
ar9003_aic.c ath9k: use true,false for bool variable 2020-01-26 12:19:02 +02:00
ar9003_aic.h
ar9003_buffalo_initvals.h
ar9003_calib.c ath9k: use swap() to make code cleaner 2021-11-01 16:20:03 +02:00
ar9003_eeprom.c ath9k: fix OOB read ar9300_eeprom_restore_internal 2021-08-29 10:12:09 +03:00
ar9003_eeprom.h
ar9003_hw.c net: Fix misspellings of "configure" and "configuration" 2019-10-28 13:41:01 -07:00
ar9003_mac.c ath9k: ar9003_mac: read STBC indicator from rx descriptor 2021-05-30 12:04:19 +03:00
ar9003_mac.h
ar9003_mci.c
ar9003_mci.h
ar9003_paprd.c
ar9003_phy.c
ar9003_phy.h
ar9003_rtt.c
ar9003_rtt.h
ar9003_wow.c
ar9330_1p1_initvals.h ath9k: ar9330_1p1_initvals: Remove unused const variable 'ar9331_common_tx_gain_offset1_1' 2020-11-07 10:07:39 +02:00
ar9330_1p2_initvals.h
ar9340_initvals.h ath9k: ar9340_initvals: Remove unused const variable 'ar9340Modes_ub124_tx_gain_table_1p0' 2020-11-07 10:07:42 +02:00
ar9462_2p0_initvals.h
ar9462_2p1_initvals.h
ar9485_initvals.h ath9k: ar9485_initvals: Remove unused const variable 'ar9485_fast_clock_1_1_baseband_postamble' 2020-11-07 10:07:45 +02:00
ar9565_1p0_initvals.h
ar9565_1p1_initvals.h
ar9580_1p0_initvals.h ath9k: Remove set but not used variable 2020-09-29 11:29:20 +03:00
ath9k_pci_owl_loader.c ath9k: owl-loader: fetch pci init values through nvmem 2021-09-16 11:07:41 +03:00
ath9k.h ath9k: fix transmitting to stations in dynamic SMPS mode 2021-02-18 08:07:25 +02:00
beacon.c ath9k: Use tasklet_disable_in_atomic() 2021-03-17 16:34:02 +01:00
btcoex.c
btcoex.h
calib.c ath9k: add calibration timeout for AR9002 2020-04-28 12:07:21 +03:00
calib.h
channel.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
common-beacon.c
common-beacon.h
common-debug.c ath9k: remove trailing semicolon in macro definition 2020-12-07 18:13:18 +02:00
common-debug.h
common-init.c
common-init.h
common-spectral.c ath9k: make relay callbacks const 2020-12-15 22:46:18 -08:00
common-spectral.h
common.c
common.h
debug_sta.c
debug.c ath9k: add option to reset the wifi chip via debugfs 2021-10-05 17:27:31 +03:00
debug.h ath9k: add option to reset the wifi chip via debugfs 2021-10-05 17:27:31 +03:00
dfs_debug.c ath9k: remove trailing semicolon in macro definition 2020-12-07 18:13:18 +02:00
dfs_debug.h
dfs.c
dfs.h
dynack.c ath9k: work around false-positive gcc warning 2020-11-10 20:12:42 +02:00
dynack.h
eeprom_4k.c
eeprom_9287.c
eeprom_def.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
eeprom.c ath9k: fetch calibration data via nvmem subsystem 2021-09-16 11:07:41 +03:00
eeprom.h
gpio.c
hif_usb.c ath9k: hif_usb: fix race condition between usb_get_urb() and usb_kill_anchored_urbs() 2020-09-21 16:05:43 +03:00
hif_usb.h ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb 2020-04-07 07:57:26 +03:00
htc_drv_beacon.c mac80211: rename csa counters to countdown counters 2020-08-27 14:12:15 +02:00
htc_drv_debug.c
htc_drv_gpio.c
htc_drv_init.c ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices 2021-04-22 16:37:54 +03:00
htc_drv_main.c ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
htc_drv_txrx.c ath9k_htc: adhere to the DONT_REORDER transmit flag 2020-12-09 09:05:20 +02:00
htc_hst.c ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb() 2020-08-17 13:24:01 +03:00
htc_hst.h
htc.h ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
hw-ops.h
hw.c ath9k: fix sleeping in atomic context 2021-08-29 10:12:33 +03:00
hw.h ath9k: fetch calibration data via nvmem subsystem 2021-09-16 11:07:41 +03:00
init.c ath9k: fix an IS_ERR() vs NULL check 2021-10-13 08:48:14 +03:00
Kconfig ath9k: fix build error with LEDS_CLASS=m 2021-01-28 09:29:34 +02:00
link.c
mac.c
mac.h
main.c ath9k: Fix potential interrupt storm on queue reset 2021-10-05 17:27:31 +03:00
Makefile ath9k: add loader for AR92XX (and older) pci(e) 2019-09-04 09:12:35 +03:00
mci.c
mci.h
pci.c ath: switch from 'pci_' to 'dma_' API 2021-07-02 14:39:59 +03:00
phy.h
recv.c ath9k: Set RX filter based to allow broadcast Action frame RX 2020-05-30 17:17:20 +03:00
reg_aic.h
reg_mci.h
reg_wow.h
reg.h
rng.c
tx99.c
wmi.c ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
wmi.h ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
wow.c
xmit.c ath9k: switch to rate table based lookup 2021-12-07 17:16:16 +02:00