2023-11-21 02:25:32

by Kang Yang

[permalink] [raw]
Subject: [PATCH v2] wifi: ath12k: fix and enable AP mode for WCN7850

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 <[email protected]>
---

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(-)

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;

base-commit: 9a36440d929d134c56030a8492405708a143f580
--
2.34.1


2023-11-21 16:10:14

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH v2] wifi: ath12k: fix and enable AP mode for WCN7850

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 <[email protected]>
Acked-by: Jeff Johnson <[email protected]>

2023-12-05 15:10:08

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH v2] wifi: ath12k: fix and enable AP mode for WCN7850

Kang Yang <[email protected]> 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 <[email protected]>
> Acked-by: Jeff Johnson <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

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

ed7e818a7b50 wifi: ath12k: fix and enable AP mode for WCN7850

--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches