Search Linux Wireless

Re: [PATCH] ath11k: enable IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS for WCN6855

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday, 29 November 2021 11:13:09 CET Wen Gong wrote:
> Currently mac80211 will send 3 scan request for each scan of WCN6855,
> they are 2.4 GHz/5 GHz/6 GHz band scan. Firmware of WCN6855 will
> cache the RNR IE(Reduced Neighbor Report element) which exist in the
> beacon of 2.4 GHz/5 GHz of the AP which is co-located with 6 GHz,
> and then use the cache to scan in 6 GHz band scan if the 6 GHz scan
> is in the same scan with the 2.4 GHz/5 GHz band, this will helpful to
> search more AP of 6 GHz. Also it will decrease the time cost of scan
> because firmware will use dual-band scan for the 2.4 GHz/5 GHz, it
> means the 2.4 GHz and 5 GHz scans are doing simultaneously.
> 
> Set the flag IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS for WCN6855 since
> it supports 2.4 GHz/5 GHz/6 GHz and it is single pdev which means
> all the 2.4 GHz/5 GHz/6 GHz exist in the same wiphy/ieee80211_hw.
> 
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

I've tested this on ath-next on commit a93789ae541c ("ath11k: Avoid NULL ptr 
access during mgmt tx cleanup") with a WCN6856 card (EmWicon/jjplus WMX7205) 
with firmware WLAN.HSP.1.1-02892.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1. ath-next 
was required for me because 32 MSI vectors are not available on the 
used system.

Without this patch, it works fine. With patch, I just have to connect to an AP 
via wpa_supplicant to crash the system. See the attached x86-64 .config, the 
stacktrace and the decoded stacktrace.

Kind regards,
	Sven
[   51.095079] general protection fault, probably for non-canonical address 0x408210000b231a: 0000 [#1] PREEMPT SMP NOPTI
[   51.105795] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.16.0-rc1+ #1
[   51.112157] Hardware name: PC Engines APU/APU, BIOS 4.0 09/08/2014
[   51.118339] RIP: 0010:skb_release_data (./include/linux/skbuff.h:1549 net/core/skbuff.c:669) 
[ 51.123061] Code: 4d 85 ed 74 4b 41 8b 85 bc 00 00 00 49 03 85 c0 00 00 00 0f b6 10 f6 c2 01 74 35 48 8b 70 28 48 85 f6 74 2c 40 f6 c6 01 75 21 <48> 8b 06 ba 01 00 00 00 4c 89 ef 0f ae e8 ff d0 41 8b 85 bc 00 00
All code
========
   0:	4d 85 ed             	test   %r13,%r13
   3:	74 4b                	je     0x50
   5:	41 8b 85 bc 00 00 00 	mov    0xbc(%r13),%eax
   c:	49 03 85 c0 00 00 00 	add    0xc0(%r13),%rax
  13:	0f b6 10             	movzbl (%rax),%edx
  16:	f6 c2 01             	test   $0x1,%dl
  19:	74 35                	je     0x50
  1b:	48 8b 70 28          	mov    0x28(%rax),%rsi
  1f:	48 85 f6             	test   %rsi,%rsi
  22:	74 2c                	je     0x50
  24:	40 f6 c6 01          	test   $0x1,%sil
  28:	75 21                	jne    0x4b
  2a:*	48 8b 06             	mov    (%rsi),%rax		<-- trapping instruction
  2d:	ba 01 00 00 00       	mov    $0x1,%edx
  32:	4c 89 ef             	mov    %r13,%rdi
  35:	0f ae e8             	lfence 
  38:	ff d0                	callq  *%rax
  3a:	41                   	rex.B
  3b:	8b                   	.byte 0x8b
  3c:	85                   	.byte 0x85
  3d:	bc                   	.byte 0xbc
	...

Code starting with the faulting instruction
===========================================
   0:	48 8b 06             	mov    (%rsi),%rax
   3:	ba 01 00 00 00       	mov    $0x1,%edx
   8:	4c 89 ef             	mov    %r13,%rdi
   b:	0f ae e8             	lfence 
   e:	ff d0                	callq  *%rax
  10:	41                   	rex.B
  11:	8b                   	.byte 0x8b
  12:	85                   	.byte 0x85
  13:	bc                   	.byte 0xbc
	...
[   51.141815] RSP: 0018:ffffbec4c0003e30 EFLAGS: 00010246
[   51.147049] RAX: ffff9a9d11a6c2c0 RBX: ffff9a9d08341a68 RCX: 0000000000000000
[   51.154189] RDX: 0000000000000003 RSI: 00408210000b231a RDI: ffff9a9d01162900
[   51.161323] RBP: ffff9a9d01162900 R08: 0000000000000212 R09: ffffffffb4ed24e8
[   51.168465] R10: 0000000000000000 R11: 00000000dca23000 R12: ffff9a9d11a6c2c0
[   51.175605] R13: ffff9a9d01162900 R14: ffff9a9d083435d8 R15: 0000000000000005
[   51.182740] FS:  0000000000000000(0000) GS:ffff9a9d1ac00000(0000) knlGS:0000000000000000
[   51.190832] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   51.196578] CR2: 000055b14ef3a778 CR3: 0000000108c6e000 CR4: 00000000000006f0
[   51.203713] Call Trace:
[   51.206170]  <IRQ>
[   51.208196] consume_skb (net/core/skbuff.c:757 net/core/skbuff.c:912 net/core/skbuff.c:906) 
[   51.211620] ath11k_ce_tx_process_cb+0x157/0x220 ath11k
[   51.217177] ath11k_ce_per_engine_service (drivers/net/wireless/ath/ath11k/ce.c:437 drivers/net/wireless/ath/ath11k/ce.c:675) ath11k
[   51.223130] ? _raw_spin_lock_irqsave (./arch/x86/include/asm/atomic.h:202 ./include/linux/atomic/atomic-instrumented.h:513 ./include/asm-generic/qspinlock.h:82 ./include/linux/spinlock.h:185 ./include/linux/spinlock_api_smp.h:111 kernel/locking/spinlock.c:162) 
[   51.227680] ath11k_pci_ce_tasklet (drivers/net/wireless/ath/ath11k/pci.c:633) ath11k_pci
[   51.233095] tasklet_action_common.constprop.0 (./arch/x86/include/asm/bitops.h:75 ./include/asm-generic/bitops/instrumented-atomic.h:42 kernel/softirq.c:879 kernel/softirq.c:787) 
[   51.238425] __do_softirq (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:212 ./include/trace/events/irq.h:142 kernel/softirq.c:559) 
[   51.242023] __irq_exit_rcu (kernel/softirq.c:432 kernel/softirq.c:636) 
[   51.245780] common_interrupt (arch/x86/kernel/irq.c:240 (discriminator 14)) 
[   51.249638]  </IRQ>
[   51.251743]  <TASK>
[   51.253850] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:629) 
[   51.258044] RIP: 0010:cpuidle_enter_state (drivers/cpuidle/cpuidle.c:259) 
[ 51.263026] Code: 31 ff e8 d9 c6 9e ff 45 84 ff 74 17 9c 58 0f 1f 44 00 00 f6 c4 02 0f 85 78 02 00 00 31 ff e8 bd 97 a5 ff fb 66 0f 1f 44 00 00 <45> 85 f6 0f 88 11 01 00 00 49 63 c6 4c 2b 2c 24 48 8d 14 40 48 8d
All code
========
   0:	31 ff                	xor    %edi,%edi
   2:	e8 d9 c6 9e ff       	callq  0xffffffffff9ec6e0
   7:	45 84 ff             	test   %r15b,%r15b
   a:	74 17                	je     0x23
   c:	9c                   	pushfq 
   d:	58                   	pop    %rax
   e:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
  13:	f6 c4 02             	test   $0x2,%ah
  16:	0f 85 78 02 00 00    	jne    0x294
  1c:	31 ff                	xor    %edi,%edi
  1e:	e8 bd 97 a5 ff       	callq  0xffffffffffa597e0
  23:	fb                   	sti    
  24:	66 0f 1f 44 00 00    	nopw   0x0(%rax,%rax,1)
  2a:*	45 85 f6             	test   %r14d,%r14d		<-- trapping instruction
  2d:	0f 88 11 01 00 00    	js     0x144
  33:	49 63 c6             	movslq %r14d,%rax
  36:	4c 2b 2c 24          	sub    (%rsp),%r13
  3a:	48 8d 14 40          	lea    (%rax,%rax,2),%rdx
  3e:	48                   	rex.W
  3f:	8d                   	.byte 0x8d

Code starting with the faulting instruction
===========================================
   0:	45 85 f6             	test   %r14d,%r14d
   3:	0f 88 11 01 00 00    	js     0x11a
   9:	49 63 c6             	movslq %r14d,%rax
   c:	4c 2b 2c 24          	sub    (%rsp),%r13
  10:	48 8d 14 40          	lea    (%rax,%rax,2),%rdx
  14:	48                   	rex.W
  15:	8d                   	.byte 0x8d
[   51.281781] RSP: 0018:ffffffffb4e03e60 EFLAGS: 00000246
[   51.287017] RAX: ffff9a9d1ac00000 RBX: 0000000000000002 RCX: 000000000000001f
[   51.294157] RDX: 0000000000000000 RSI: ffffffffb494bd50 RDI: ffffffffb4927def
[   51.301290] RBP: ffff9a9d0151b000 R08: 0000000be57e1147 R09: 0000000000000018
[   51.308424] R10: 0000000000000ed3 R11: 0000000000002406 R12: ffffffffb4fd05c0
[   51.315565] R13: 0000000be57e1147 R14: 0000000000000002 R15: 0000000000000000
[   51.322716] cpuidle_enter (drivers/cpuidle/cpuidle.c:353) 
[   51.326305] do_idle (kernel/sched/idle.c:158 kernel/sched/idle.c:239 kernel/sched/idle.c:306) 
[   51.329547] cpu_startup_entry (kernel/sched/idle.c:402 (discriminator 1)) 
[   51.333479] start_kernel (init/main.c:1137) 
[   51.337156] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:283) 
[   51.342228]  </TASK>
[   51.344424] Modules linked in: qrtr_mhi qrtr ath11k_pci mhi ath11k qmi_helpers mac80211 btusb btrtl btbcm btintel bluetooth libarc4 kvm_amd ccp cfg80211 jitterentropy_rng rng_core sha512_ssse3 evdev sha512_generic kvm snd_pcm snd_timer ctr leds_apu drbg snd ansi_cprng sg irqbypass ecdh_generic rfkill soundcore ecc pcspkr k10temp sp5100_tco watchdog button acpi_cpufreq drm fuse configfs ip_tables x_tables autofs4 ext4 crc32c_generic crc16 mbcache jbd2 sd_mod t10_pi crc_t10dif crct10dif_generic crct10dif_common uas usb_storage ohci_pci ahci libahci libata ehci_pci ohci_hcd ehci_hcd r8169 realtek mdio_devres usbcore scsi_mod i2c_piix4 usb_common scsi_common libphy
[   51.403181] ---[ end trace 5511b9c3dbb0841e ]---
[   51.407861] RIP: 0010:skb_release_data (./include/linux/skbuff.h:1549 net/core/skbuff.c:669) 
[ 51.412592] Code: 4d 85 ed 74 4b 41 8b 85 bc 00 00 00 49 03 85 c0 00 00 00 0f b6 10 f6 c2 01 74 35 48 8b 70 28 48 85 f6 74 2c 40 f6 c6 01 75 21 <48> 8b 06 ba 01 00 00 00 4c 89 ef 0f ae e8 ff d0 41 8b 85 bc 00 00
All code
========
   0:	4d 85 ed             	test   %r13,%r13
   3:	74 4b                	je     0x50
   5:	41 8b 85 bc 00 00 00 	mov    0xbc(%r13),%eax
   c:	49 03 85 c0 00 00 00 	add    0xc0(%r13),%rax
  13:	0f b6 10             	movzbl (%rax),%edx
  16:	f6 c2 01             	test   $0x1,%dl
  19:	74 35                	je     0x50
  1b:	48 8b 70 28          	mov    0x28(%rax),%rsi
  1f:	48 85 f6             	test   %rsi,%rsi
  22:	74 2c                	je     0x50
  24:	40 f6 c6 01          	test   $0x1,%sil
  28:	75 21                	jne    0x4b
  2a:*	48 8b 06             	mov    (%rsi),%rax		<-- trapping instruction
  2d:	ba 01 00 00 00       	mov    $0x1,%edx
  32:	4c 89 ef             	mov    %r13,%rdi
  35:	0f ae e8             	lfence 
  38:	ff d0                	callq  *%rax
  3a:	41                   	rex.B
  3b:	8b                   	.byte 0x8b
  3c:	85                   	.byte 0x85
  3d:	bc                   	.byte 0xbc
	...

Code starting with the faulting instruction
===========================================
   0:	48 8b 06             	mov    (%rsi),%rax
   3:	ba 01 00 00 00       	mov    $0x1,%edx
   8:	4c 89 ef             	mov    %r13,%rdi
   b:	0f ae e8             	lfence 
   e:	ff d0                	callq  *%rax
  10:	41                   	rex.B
  11:	8b                   	.byte 0x8b
  12:	85                   	.byte 0x85
  13:	bc                   	.byte 0xbc
	...
[   51.431366] RSP: 0018:ffffbec4c0003e30 EFLAGS: 00010246
[   51.436623] RAX: ffff9a9d11a6c2c0 RBX: ffff9a9d08341a68 RCX: 0000000000000000
[   51.443782] RDX: 0000000000000003 RSI: 00408210000b231a RDI: ffff9a9d01162900
[   51.450939] RBP: ffff9a9d01162900 R08: 0000000000000212 R09: ffffffffb4ed24e8
[   51.458099] R10: 0000000000000000 R11: 00000000dca23000 R12: ffff9a9d11a6c2c0
[   51.465256] R13: ffff9a9d01162900 R14: ffff9a9d083435d8 R15: 0000000000000005
[   51.472416] FS:  0000000000000000(0000) GS:ffff9a9d1ac00000(0000) knlGS:0000000000000000
[   51.480528] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   51.486299] CR2: 000055b14ef3a778 CR3: 0000000108c6e000 CR4: 00000000000006f0
[   51.493459] Kernel panic - not syncing: Fatal exception in interrupt
[   51.499831] Kernel Offset: 0x32800000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[   51.510610] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
[   51.095079] general protection fault, probably for non-canonical address 0x408210000b231a: 0000 [#1] PREEMPT SMP NOPTI
[   51.105795] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.16.0-rc1+ #1
[   51.112157] Hardware name: PC Engines APU/APU, BIOS 4.0 09/08/2014
[   51.118339] RIP: 0010:skb_release_data+0x81/0x170
[   51.123061] Code: 4d 85 ed 74 4b 41 8b 85 bc 00 00 00 49 03 85 c0 00 00 00 0f b6 10 f6 c2 01 74 35 48 8b 70 28 48 85 f6 74 2c 40 f6 c6 01 75 21 <48> 8b 06 ba 01 00 00 00 4c 89 ef 0f ae e8 ff d0 41 8b 85 bc 00 00
[   51.141815] RSP: 0018:ffffbec4c0003e30 EFLAGS: 00010246
[   51.147049] RAX: ffff9a9d11a6c2c0 RBX: ffff9a9d08341a68 RCX: 0000000000000000
[   51.154189] RDX: 0000000000000003 RSI: 00408210000b231a RDI: ffff9a9d01162900
[   51.161323] RBP: ffff9a9d01162900 R08: 0000000000000212 R09: ffffffffb4ed24e8
[   51.168465] R10: 0000000000000000 R11: 00000000dca23000 R12: ffff9a9d11a6c2c0
[   51.175605] R13: ffff9a9d01162900 R14: ffff9a9d083435d8 R15: 0000000000000005
[   51.182740] FS:  0000000000000000(0000) GS:ffff9a9d1ac00000(0000) knlGS:0000000000000000
[   51.190832] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   51.196578] CR2: 000055b14ef3a778 CR3: 0000000108c6e000 CR4: 00000000000006f0
[   51.203713] Call Trace:
[   51.206170]  <IRQ>
[   51.208196]  consume_skb+0x39/0xb0
[   51.211620]  ath11k_ce_tx_process_cb+0x157/0x220 [ath11k]
[   51.217177]  ath11k_ce_per_engine_service+0x3c0/0x3d0 [ath11k]
[   51.223130]  ? _raw_spin_lock_irqsave+0x26/0x50
[   51.227680]  ath11k_pci_ce_tasklet+0x1c/0x40 [ath11k_pci]
[   51.233095]  tasklet_action_common.constprop.0+0xaf/0xe0
[   51.238425]  __do_softirq+0xec/0x2e9
[   51.242023]  __irq_exit_rcu+0xbc/0x110
[   51.245780]  common_interrupt+0xb8/0xd0
[   51.249638]  </IRQ>
[   51.251743]  <TASK>
[   51.253850]  asm_common_interrupt+0x1e/0x40
[   51.258044] RIP: 0010:cpuidle_enter_state+0xda/0x370
[   51.263026] Code: 31 ff e8 d9 c6 9e ff 45 84 ff 74 17 9c 58 0f 1f 44 00 00 f6 c4 02 0f 85 78 02 00 00 31 ff e8 bd 97 a5 ff fb 66 0f 1f 44 00 00 <45> 85 f6 0f 88 11 01 00 00 49 63 c6 4c 2b 2c 24 48 8d 14 40 48 8d
[   51.281781] RSP: 0018:ffffffffb4e03e60 EFLAGS: 00000246
[   51.287017] RAX: ffff9a9d1ac00000 RBX: 0000000000000002 RCX: 000000000000001f
[   51.294157] RDX: 0000000000000000 RSI: ffffffffb494bd50 RDI: ffffffffb4927def
[   51.301290] RBP: ffff9a9d0151b000 R08: 0000000be57e1147 R09: 0000000000000018
[   51.308424] R10: 0000000000000ed3 R11: 0000000000002406 R12: ffffffffb4fd05c0
[   51.315565] R13: 0000000be57e1147 R14: 0000000000000002 R15: 0000000000000000
[   51.322716]  cpuidle_enter+0x29/0x40
[   51.326305]  do_idle+0x200/0x2b0
[   51.329547]  cpu_startup_entry+0x19/0x20
[   51.333479]  start_kernel+0x6b7/0x6dc
[   51.337156]  secondary_startup_64_no_verify+0xb0/0xbb
[   51.342228]  </TASK>
[   51.344424] Modules linked in: qrtr_mhi qrtr ath11k_pci mhi ath11k qmi_helpers mac80211 btusb btrtl btbcm btintel bluetooth libarc4 kvm_amd ccp cfg80211 jitterentropy_rng rng_core sha512_ssse3 evdev sha512_generic kvm snd_pcm snd_timer ctr leds_apu drbg snd ansi_cprng sg irqbypass ecdh_generic rfkill soundcore ecc pcspkr k10temp sp5100_tco watchdog button acpi_cpufreq drm fuse configfs ip_tables x_tables autofs4 ext4 crc32c_generic crc16 mbcache jbd2 sd_mod t10_pi crc_t10dif crct10dif_generic crct10dif_common uas usb_storage ohci_pci ahci libahci libata ehci_pci ohci_hcd ehci_hcd r8169 realtek mdio_devres usbcore scsi_mod i2c_piix4 usb_common scsi_common libphy
[   51.403181] ---[ end trace 5511b9c3dbb0841e ]---
[   51.407861] RIP: 0010:skb_release_data+0x81/0x170
[   51.412592] Code: 4d 85 ed 74 4b 41 8b 85 bc 00 00 00 49 03 85 c0 00 00 00 0f b6 10 f6 c2 01 74 35 48 8b 70 28 48 85 f6 74 2c 40 f6 c6 01 75 21 <48> 8b 06 ba 01 00 00 00 4c 89 ef 0f ae e8 ff d0 41 8b 85 bc 00 00
[   51.431366] RSP: 0018:ffffbec4c0003e30 EFLAGS: 00010246
[   51.436623] RAX: ffff9a9d11a6c2c0 RBX: ffff9a9d08341a68 RCX: 0000000000000000
[   51.443782] RDX: 0000000000000003 RSI: 00408210000b231a RDI: ffff9a9d01162900
[   51.450939] RBP: ffff9a9d01162900 R08: 0000000000000212 R09: ffffffffb4ed24e8
[   51.458099] R10: 0000000000000000 R11: 00000000dca23000 R12: ffff9a9d11a6c2c0
[   51.465256] R13: ffff9a9d01162900 R14: ffff9a9d083435d8 R15: 0000000000000005
[   51.472416] FS:  0000000000000000(0000) GS:ffff9a9d1ac00000(0000) knlGS:0000000000000000
[   51.480528] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   51.486299] CR2: 000055b14ef3a778 CR3: 0000000108c6e000 CR4: 00000000000006f0
[   51.493459] Kernel panic - not syncing: Fatal exception in interrupt
[   51.499831] Kernel Offset: 0x32800000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[   51.510610] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---

Attachment: .config.xz
Description: application/xz


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux