[PATCH v2] ath11k: Add peer rhash table support
Kalle Valo
kvalo at kernel.org
Mon Jan 31 05:43:34 PST 2022
Karthikeyan Periyasamy <quic_periyasa at quicinc.com> writes:
> When more clients (128) are connected, the UL data traffic
> KPI measurement is low compared to single client. This issue
> is due to more CPU cycles spent on the peer lookup operation
> with more clients. So reduce the peer lookup operation by
> modifying the linear based lookup operation into the rhash
> based lookup operation. This improve the peak throughput
> measurement. Since this is a software algorithm change, it is
> applicable for all the platforms.
>
> TCP UL 128 Clients test case Observation (64bit system):
> Previous: ~550 Mbps
> Now : ~860 Mbps
>
> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01067-QCAHKSWPL_SILICONZ-1
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa at quicinc.com>
I didn't review this yet, but while testing I saw a new warning with
QCA6390:
[ 292.395491] BUG: sleeping function called from invalid context at kernel/workqueue.c:3028
[ 292.395719] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2142, name: rmmod
[ 292.395779] preempt_count: 201, expected: 0
[ 292.395851] RCU nest depth: 0, expected: 0
[ 292.395908] 3 locks held by rmmod/2142:
[ 292.395972] #0: ffff88810e849260 (&dev->mutex){....}-{3:3}, at: driver_detach+0x1b8/0x2c0
[ 292.396037] #1: ffff88814c50c588 (&ab->core_lock){+.+.}-{3:3}, at: ath11k_core_deinit+0x21/0x150 [ath11k]
[ 292.396112] #2: ffff88814c50c5d0 (&ab->base_lock){+.-.}-{2:2}, at: ath11k_peer_rhash_tbl_destroy+0x1d/0x160 [ath11k]
[ 292.396187] Preemption disabled at:
[ 292.396190] [<0000000000000000>] 0x0
[ 292.396290] CPU: 2 PID: 2142 Comm: rmmod Kdump: loaded Not tainted 5.17.0-rc1-wt-ath+ #569
[ 292.396342] Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021
[ 292.396391] Call Trace:
[ 292.396441] <TASK>
[ 292.396493] dump_stack_lvl+0x57/0x7d
[ 292.396546] __might_resched.cold+0x222/0x26b
[ 292.396598] start_flush_work+0x2c/0x8c0
[ 292.396684] __flush_work+0xcd/0x1a0
[ 292.396750] ? start_flush_work+0x8c0/0x8c0
[ 292.396801] ? validate_chain+0xac3/0x1b30
[ 292.396854] ? mark_lock+0xd0/0x14a0
[ 292.396907] ? mark_lock_irq+0x1c30/0x1c30
[ 292.396958] ? check_prev_add+0x20f0/0x20f0
[ 292.397008] ? mark_lock_irq+0x1c30/0x1c30
[ 292.397063] ? mark_held_locks+0xa5/0xe0
[ 292.397124] ? lockdep_hardirqs_on_prepare.part.0+0x18c/0x370
[ 292.397212] __cancel_work_timer+0x315/0x460
[ 292.397294] ? try_to_grab_pending+0x80/0x80
[ 292.397352] ? lock_acquire.part.0+0x117/0x340
[ 292.397404] ? find_held_lock+0x33/0x110
[ 292.397465] rhashtable_free_and_destroy+0x22/0x700
[ 292.397527] ? ath11k_peer_rhash_tbl_destroy+0x1d/0x160 [ath11k]
[ 292.397598] ath11k_peer_rhash_tbl_destroy+0x49/0x160 [ath11k]
[ 292.397693] ath11k_core_deinit+0x39/0x150 [ath11k]
[ 292.397773] ath11k_pci_remove+0xd2/0x260 [ath11k_pci]
[ 292.397827] pci_device_remove+0x9a/0x1c0
[ 292.397884] __device_release_driver+0x332/0x660
[ 292.397940] driver_detach+0x1e7/0x2c0
[ 292.397996] bus_remove_driver+0xe2/0x2d0
[ 292.398048] pci_unregister_driver+0x21/0x250
[ 292.398109] __do_sys_delete_module+0x30a/0x4b0
[ 292.398163] ? free_module+0xac0/0xac0
[ 292.398220] ? lockdep_hardirqs_on_prepare.part.0+0x18c/0x370
[ 292.398273] ? syscall_enter_from_user_mode+0x1d/0x50
[ 292.398324] ? lockdep_hardirqs_on+0x79/0x100
[ 292.398376] do_syscall_64+0x3b/0x90
[ 292.398430] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 292.398478] RIP: 0033:0x7f9d82378bcb
[ 292.398531] Code: 73 01 c3 48 8b 0d c5 82 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 95 82 0c 00 f7 d8 64 89 01 48
[ 292.398591] RSP: 002b:00007ffd450a9928 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
[ 292.398672] RAX: ffffffffffffffda RBX: 00007f9d82b5d7a0 RCX: 00007f9d82378bcb
[ 292.398752] RDX: 000000000000000a RSI: 0000000000000800 RDI: 00007f9d82b5d808
[ 292.398806] RBP: 00007ffd450a9988 R08: 0000000000000000 R09: 0000000000000000
[ 292.398858] R10: 00007f9d823f4ac0 R11: 0000000000000206 R12: 00007ffd450a9b60
[ 292.398911] R13: 00007ffd450aaeb7 R14: 00007f9d82b5c2a0 R15: 00007f9d82b5d7a0
[ 292.398974] </TASK>
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
More information about the ath11k
mailing list