Message ID | 20240130040303.370590-1-quic_kangyang@quicinc.com |
---|---|
Headers | show |
Series | wifi: ath12k: P2P support for WCN7850 | expand |
On 1/29/2024 8:02 PM, Kang Yang wrote: > Current interface combination doesn't support P2P mode. Change the > combination for P2P mode. > > Also, there is a bug that when mesh is enabled but ap is not enabled. > In this situation, the mesh's max_interface of interface combination > won't be set. > > So assign the max_interfaces for mesh directly. > > Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Kang Yang <quic_kangyang@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
On 1/29/2024 8:02 PM, Kang Yang wrote: > The NoA(Notice of Absence) attribute is used by the P2P Group Owner to > signal its absence due to power save timing, concurrent operation, or > off-channel scanning. It is also used in the P2P Presence Request-Response > mechanism. > > The NoA attribute shall be present in the P2P IE in the beacon frames > transmitted by a P2P Group Owner when a NoA schedule is being advertised, > or when the CTWindow is non-zero. > > So add support to update P2P information after P2P GO is up through > event WMI_P2P_NOA_EVENTID, and always put it in probe resp. > > Create p2p.c and p2p.h for P2P related functions and definitions. > > Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Kang Yang <quic_kangyang@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
On 1/29/2024 8:03 PM, Kang Yang wrote: > Now that all the necessary pieces are implemented we can enable P2P > support for WCN7850. > > Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Kang Yang <quic_kangyang@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Kang Yang <quic_kangyang@quicinc.com> writes: > Add P2P support for WCN7850. > > Kang Yang (11): > wifi: ath12k: fix broken structure wmi_vdev_create_cmd > wifi: ath12k: fix incorrect logic of calculating vdev_stats_id > wifi: ath12k: change interface combination for P2P mode > wifi: ath12k: add P2P IE in beacon template > wifi: ath12k: implement handling of P2P NoA event > wifi: ath12k: implement remain on channel for P2P mode > wifi: ath12k: change WLAN_SCAN_PARAMS_MAX_IE_LEN from 256 to 512 > wifi: ath12k: allow specific mgmt frame tx while vdev is not up > wifi: ath12k: move peer delete after vdev stop of station for WCN7850 > wifi: ath12k: designating channel frequency for ROC scan > wifi: ath12k: advertise P2P dev support for WCN7850 I did some quick tests by running various p2p commands with wpa_cli and noticed the warning below. We might have some issues with our RCU usage, please check. But no need to resend because of this, followup patch fixing this is fine. [ 1108.916980] ============================= [ 1108.917068] WARNING: suspicious RCU usage [ 1108.917151] 6.8.0-rc2-wt-ath+ #1273 Not tainted [ 1108.917235] ----------------------------- [ 1108.917318] drivers/net/wireless/ath/ath12k/mac.c:583 suspicious rcu_dereference_check() usage! [ 1108.917400] #012[ 1108.917400] other info that might help us debug this:#012[ 1108.917400] [ 1108.917484] #012[ 1108.917484] rcu_scheduler_active = 2, debug_locks = 1 [ 1108.917566] no locks held by swapper/3/0. [ 1108.917649] #012[ 1108.917649] stack backtrace: [ 1108.917729] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 6.8.0-rc2-wt-ath+ #1273 [ 1108.917810] Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021 [ 1108.917892] Call Trace: [ 1108.917968] <IRQ> [ 1108.918046] dump_stack_lvl+0x82/0xc0 [ 1108.918132] dump_stack+0x10/0x20 [ 1108.918206] lockdep_rcu_suspicious+0x210/0x3a0 [ 1108.918285] ath12k_mac_get_ar_by_vdev_id+0x18e/0x210 [ath12k] [ 1108.918403] ath12k_wmi_op_rx+0x2bb/0x1a30 [ath12k] [ 1108.918511] ? ath12k_chan_info_event+0x970/0x970 [ath12k] [ 1108.918624] ? __lock_acquire+0xd45/0x1de0 [ 1108.918706] ? __kasan_check_read+0x11/0x20 [ 1108.918789] ? debug_smp_processor_id+0x17/0x20 [ 1108.918863] ? __lock_release.isra.0+0x49d/0xae0 [ 1108.918934] ? debug_smp_processor_id+0x17/0x20 [ 1108.919007] ? reacquire_held_locks+0x4d0/0x4d0 [ 1108.919080] ? ath12k_ce_recv_process_cb+0x4b3/0x960 [ath12k] [ 1108.919195] ath12k_htc_rx_completion_handler+0x361/0x650 [ath12k] [ 1108.919302] ? ath12k_ce_recv_process_cb+0x4b3/0x960 [ath12k] [ 1108.919409] ? trace_hardirqs_on+0x49/0x50 [ 1108.919485] ath12k_ce_recv_process_cb+0x5c6/0x960 [ath12k] [ 1108.919591] ? ath12k_ce_rx_post_pipe+0x990/0x990 [ath12k] [ 1108.919658] ? __wake_up_bit+0x120/0x120 [ 1108.919705] ? handle_irq_event+0x10e/0x1c0 [ 1108.919752] ath12k_ce_per_engine_service+0xda/0x110 [ath12k] [ 1108.919817] ath12k_pci_ce_tasklet+0x65/0x120 [ath12k] [ 1108.919879] ? trace_tasklet_entry+0xe4/0x110 [ 1108.919945] tasklet_action_common.isra.0+0x24c/0x3d0 [ 1108.920007] tasklet_action+0x4f/0x70 [ 1108.920068] __do_softirq+0x1c2/0x868 [ 1108.920116] irq_exit_rcu+0xab/0x110 [ 1108.920159] common_interrupt+0xad/0xd0 [ 1108.920201] </IRQ> [ 1108.920309] <TASK> [ 1108.920355] asm_common_interrupt+0x27/0x40 [ 1108.920399] RIP: 0010:cpuidle_enter_state+0xdc/0x580 [ 1108.920448] Code: ff ff ff ff 49 89 c7 e8 e2 fa 55 ff 31 ff e8 cb 29 54 fd 80 7d d0 00 0f 85 4a 02 00 00 e8 0c f9 55 ff 84 c0 0f 84 32 02 00 00 <45> 85 f6 0f 88 95 01 00 00 49 63 d6 48 83 fa 0a 0f 83 dd 02 00 00 [ 1108.920496] RSP: 0018:ffffc900001afd20 EFLAGS: 00000202 [ 1108.920545] RAX: 000000000065289d RBX: ffff888116413400 RCX: 1ffffffff47726c1 [ 1108.920593] RDX: 0000000000000000 RSI: ffffffffa2278020 RDI: ffffffffa24176e0 [ 1108.920639] RBP: ffffc900001afd70 R08: 0000000000000001 R09: fffffbfff4772c1a [ 1108.920686] R10: ffffffffa3b960d7 R11: 0000000000000000 R12: ffffffffa34c1740 [ 1108.920733] R13: 0000000000000002 R14: 0000000000000002 R15: 000001023093b5a2 [ 1108.920793] cpuidle_enter+0x4a/0xa0 [ 1108.920840] call_cpuidle+0x42/0xb0 [ 1108.920882] ? tick_nohz_idle_retain_tick+0x70/0xa0 [ 1108.920946] cpuidle_idle_call+0x1c9/0x290 [ 1108.921002] ? arch_cpu_idle_exit+0x30/0x30 [ 1108.921045] ? debug_smp_processor_id+0x17/0x20 [ 1108.921092] do_idle+0xfb/0x160 [ 1108.921137] cpu_startup_entry+0x54/0x60 [ 1108.921182] start_secondary+0x201/0x290 [ 1108.921227] ? set_cpu_sibling_map+0x1f20/0x1f20 [ 1108.921273] secondary_startup_64_no_verify+0x15e/0x16b [ 1108.921324] </TASK>
On 2/5/2024 11:40 PM, Kalle Valo wrote: > Kang Yang <quic_kangyang@quicinc.com> writes: > >> Add P2P support for WCN7850. >> >> Kang Yang (11): >> wifi: ath12k: fix broken structure wmi_vdev_create_cmd >> wifi: ath12k: fix incorrect logic of calculating vdev_stats_id >> wifi: ath12k: change interface combination for P2P mode >> wifi: ath12k: add P2P IE in beacon template >> wifi: ath12k: implement handling of P2P NoA event >> wifi: ath12k: implement remain on channel for P2P mode >> wifi: ath12k: change WLAN_SCAN_PARAMS_MAX_IE_LEN from 256 to 512 >> wifi: ath12k: allow specific mgmt frame tx while vdev is not up >> wifi: ath12k: move peer delete after vdev stop of station for WCN7850 >> wifi: ath12k: designating channel frequency for ROC scan >> wifi: ath12k: advertise P2P dev support for WCN7850 > > I did some quick tests by running various p2p commands with wpa_cli and > noticed the warning below. We might have some issues with our RCU usage, > please check. But no need to resend because of this, followup patch > fixing this is fine. > > [ 1108.916980] ============================= > [ 1108.917068] WARNING: suspicious RCU usage > [ 1108.917151] 6.8.0-rc2-wt-ath+ #1273 Not tainted > [ 1108.917235] ----------------------------- > [ 1108.917318] drivers/net/wireless/ath/ath12k/mac.c:583 suspicious rcu_dereference_check() usage! > [ 1108.917400] #012[ 1108.917400] other info that might help us debug this:#012[ 1108.917400] > [ 1108.917484] #012[ 1108.917484] rcu_scheduler_active = 2, debug_locks = 1 > [ 1108.917566] no locks held by swapper/3/0. I conducted a simple test, but cannot reproduce. It seems i need to use rcu_read_lock() and rcu_read_unlock() for rcu_dereference(). Will fix it in a separate patch. > [ 1108.917649] #012[ 1108.917649] stack backtrace: > [ 1108.917729] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 6.8.0-rc2-wt-ath+ #1273 > [ 1108.917810] Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021 > [ 1108.917892] Call Trace: > [ 1108.917968] <IRQ> > [ 1108.918046] dump_stack_lvl+0x82/0xc0 > [ 1108.918132] dump_stack+0x10/0x20 > [ 1108.918206] lockdep_rcu_suspicious+0x210/0x3a0 > [ 1108.918285] ath12k_mac_get_ar_by_vdev_id+0x18e/0x210 [ath12k] > [ 1108.918403] ath12k_wmi_op_rx+0x2bb/0x1a30 [ath12k] > [ 1108.918511] ? ath12k_chan_info_event+0x970/0x970 [ath12k] > [ 1108.918624] ? __lock_acquire+0xd45/0x1de0 > [ 1108.918706] ? __kasan_check_read+0x11/0x20 > [ 1108.918789] ? debug_smp_processor_id+0x17/0x20 > [ 1108.918863] ? __lock_release.isra.0+0x49d/0xae0 > [ 1108.918934] ? debug_smp_processor_id+0x17/0x20 > [ 1108.919007] ? reacquire_held_locks+0x4d0/0x4d0 > [ 1108.919080] ? ath12k_ce_recv_process_cb+0x4b3/0x960 [ath12k] > [ 1108.919195] ath12k_htc_rx_completion_handler+0x361/0x650 [ath12k] > [ 1108.919302] ? ath12k_ce_recv_process_cb+0x4b3/0x960 [ath12k] > [ 1108.919409] ? trace_hardirqs_on+0x49/0x50 > [ 1108.919485] ath12k_ce_recv_process_cb+0x5c6/0x960 [ath12k] > [ 1108.919591] ? ath12k_ce_rx_post_pipe+0x990/0x990 [ath12k] > [ 1108.919658] ? __wake_up_bit+0x120/0x120 > [ 1108.919705] ? handle_irq_event+0x10e/0x1c0 > [ 1108.919752] ath12k_ce_per_engine_service+0xda/0x110 [ath12k] > [ 1108.919817] ath12k_pci_ce_tasklet+0x65/0x120 [ath12k] > [ 1108.919879] ? trace_tasklet_entry+0xe4/0x110 > [ 1108.919945] tasklet_action_common.isra.0+0x24c/0x3d0 > [ 1108.920007] tasklet_action+0x4f/0x70 > [ 1108.920068] __do_softirq+0x1c2/0x868 > [ 1108.920116] irq_exit_rcu+0xab/0x110 > [ 1108.920159] common_interrupt+0xad/0xd0 > [ 1108.920201] </IRQ> > [ 1108.920309] <TASK> > [ 1108.920355] asm_common_interrupt+0x27/0x40 > [ 1108.920399] RIP: 0010:cpuidle_enter_state+0xdc/0x580 > [ 1108.920448] Code: ff ff ff ff 49 89 c7 e8 e2 fa 55 ff 31 ff e8 cb 29 54 fd 80 7d d0 00 0f 85 4a 02 00 00 e8 0c f9 55 ff 84 c0 0f 84 32 02 00 00 <45> 85 f6 0f 88 95 01 00 00 49 63 d6 48 83 fa 0a 0f 83 dd 02 00 00 > [ 1108.920496] RSP: 0018:ffffc900001afd20 EFLAGS: 00000202 > [ 1108.920545] RAX: 000000000065289d RBX: ffff888116413400 RCX: 1ffffffff47726c1 > [ 1108.920593] RDX: 0000000000000000 RSI: ffffffffa2278020 RDI: ffffffffa24176e0 > [ 1108.920639] RBP: ffffc900001afd70 R08: 0000000000000001 R09: fffffbfff4772c1a > [ 1108.920686] R10: ffffffffa3b960d7 R11: 0000000000000000 R12: ffffffffa34c1740 > [ 1108.920733] R13: 0000000000000002 R14: 0000000000000002 R15: 000001023093b5a2 > [ 1108.920793] cpuidle_enter+0x4a/0xa0 > [ 1108.920840] call_cpuidle+0x42/0xb0 > [ 1108.920882] ? tick_nohz_idle_retain_tick+0x70/0xa0 > [ 1108.920946] cpuidle_idle_call+0x1c9/0x290 > [ 1108.921002] ? arch_cpu_idle_exit+0x30/0x30 > [ 1108.921045] ? debug_smp_processor_id+0x17/0x20 > [ 1108.921092] do_idle+0xfb/0x160 > [ 1108.921137] cpu_startup_entry+0x54/0x60 > [ 1108.921182] start_secondary+0x201/0x290 > [ 1108.921227] ? set_cpu_sibling_map+0x1f20/0x1f20 > [ 1108.921273] secondary_startup_64_no_verify+0x15e/0x16b > [ 1108.921324] </TASK> > >