diff mbox series

[v2] wifi: ath12k: fix and enable AP mode for WCN7850

Message ID 20231121022459.17209-1-quic_kangyang@quicinc.com
State New
Headers show
Series [v2] wifi: ath12k: fix and enable AP mode for WCN7850 | expand

Commit Message

kangyang Nov. 21, 2023, 2:24 a.m. UTC
For AP mode, the peer is created earlier in ath12k_mac_op_add_interface().
But ath12k_mac_op_assign_vif_chanctx() will try to create peer again.
Then an error will return which make startup of AP mode fail.

Kernel log:
[ 5017.665006] ath12k_pci 0000:04:00.0: failed to create peer after vdev start delay: -22

wpa_supplicant log:
Failed to set beacon parameters
Interface initialization failed
wls1: interface state UNINITIALIZED->DISABLED
wls1: AP-DISABLED
wls1: Unable to setup interface.
Failed to initialize AP interface
wls1: interface state DISABLED->DISABLED
wls1: AP-DISABLED

So change this check and enable AP mode for WCN7850, then soft AP can
work normally.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
---

v2: fix Subject content.

--
 drivers/net/wireless/ath/ath12k/hw.c  | 3 ++-
 drivers/net/wireless/ath/ath12k/mac.c | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)


base-commit: 9a36440d929d134c56030a8492405708a143f580

Comments

Jeff Johnson Nov. 21, 2023, 4:05 p.m. UTC | #1
On 11/20/2023 6:24 PM, Kang Yang wrote:
> For AP mode, the peer is created earlier in ath12k_mac_op_add_interface().
> But ath12k_mac_op_assign_vif_chanctx() will try to create peer again.
> Then an error will return which make startup of AP mode fail.
> 
> Kernel log:
> [ 5017.665006] ath12k_pci 0000:04:00.0: failed to create peer after vdev start delay: -22
> 
> wpa_supplicant log:
> Failed to set beacon parameters
> Interface initialization failed
> wls1: interface state UNINITIALIZED->DISABLED
> wls1: AP-DISABLED
> wls1: Unable to setup interface.
> Failed to initialize AP interface
> wls1: interface state DISABLED->DISABLED
> wls1: AP-DISABLED
> 
> So change this check and enable AP mode for WCN7850, then soft AP can
> work normally.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Kalle Valo Dec. 5, 2023, 3:09 p.m. UTC | #2
Kang Yang <quic_kangyang@quicinc.com> wrote:

> For AP mode, the peer is created earlier in ath12k_mac_op_add_interface() but
> ath12k_mac_op_assign_vif_chanctx() will try to create peer again.  Then an
> error will return which makes AP mode startup fail.
> 
> Kernel log:
> 
> [ 5017.665006] ath12k_pci 0000:04:00.0: failed to create peer after vdev start delay: -22
> 
> wpa_supplicant log:
> 
> Failed to set beacon parameters
> Interface initialization failed
> wls1: interface state UNINITIALIZED->DISABLED
> wls1: AP-DISABLED
> wls1: Unable to setup interface.
> Failed to initialize AP interface
> wls1: interface state DISABLED->DISABLED
> wls1: AP-DISABLED
> 
> So fix this check and enable AP mode for WCN7850, as now AP mode works normally.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

ed7e818a7b50 wifi: ath12k: fix and enable AP mode for WCN7850
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
index 2245fb510ba2..b55cf33e37bd 100644
--- a/drivers/net/wireless/ath/ath12k/hw.c
+++ b/drivers/net/wireless/ath/ath12k/hw.c
@@ -949,7 +949,8 @@  static const struct ath12k_hw_params ath12k_hw_params[] = {
 		.rx_mac_buf_ring = true,
 		.vdev_start_delay = true,
 
-		.interface_modes = BIT(NL80211_IFTYPE_STATION),
+		.interface_modes = BIT(NL80211_IFTYPE_STATION) |
+				   BIT(NL80211_IFTYPE_AP),
 		.supports_monitor = false,
 
 		.idle_ps = true,
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index fc0d14ea328e..b698e55a5b7b 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -6380,8 +6380,8 @@  ath12k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
 	}
 
 	if (ab->hw_params->vdev_start_delay &&
-	    (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
-	    arvif->vdev_type == WMI_VDEV_TYPE_MONITOR)) {
+	    arvif->vdev_type != WMI_VDEV_TYPE_AP &&
+	    arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) {
 		param.vdev_id = arvif->vdev_id;
 		param.peer_type = WMI_PEER_TYPE_DEFAULT;
 		param.peer_addr = ar->mac_addr;