Karthikeyan Periyasamy <quic_periyasa@xxxxxxxxxxx> 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@xxxxxxxxxxx> 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