diff mbox series

[04/15] ath11k: allow only one interface up simultaneously for WCN6855

Message ID 20211026111913.7346-5-quic_wgong@quicinc.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series ath11k: add support for 6 GHz station for various modes : LPI, SP and VLP | expand

Commit Message

Wen Gong Oct. 26, 2021, 11:19 a.m. UTC
Currently ath11k support both station/AP mode for WCN6855, and it is
configured with single_pdev_only, it means it has only one ath11k
and one ieee80211_hw which registered in mac80211 and one wiphy
registered in cfg80211. Now it does not have requirement to start
up both station and AP interface simultaneously for WCN6855, this
is to disable station and AP concurrency mode.

After this patch, when station interface is up, then AP interface
can not start up. AP interface can start up after station interface
down. Also when AP interface is up, station interface can not start
up. station interface can start up after AP interface down.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/core.h |  5 +++++
 drivers/net/wireless/ath/ath11k/mac.c  | 17 ++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

Comments

Kalle Valo Dec. 9, 2021, 5:24 p.m. UTC | #1
Wen Gong <quic_wgong@quicinc.com> writes:

> Currently ath11k support both station/AP mode for WCN6855, and it is
> configured with single_pdev_only, it means it has only one ath11k
> and one ieee80211_hw which registered in mac80211 and one wiphy
> registered in cfg80211. Now it does not have requirement to start
> up both station and AP interface simultaneously for WCN6855, this
> is to disable station and AP concurrency mode.
>
> After this patch, when station interface is up, then AP interface
> can not start up. AP interface can start up after station interface
> down. Also when AP interface is up, station interface can not start
> up. station interface can start up after AP interface down.
>
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
>
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
> ---
>  drivers/net/wireless/ath/ath11k/core.h |  5 +++++
>  drivers/net/wireless/ath/ath11k/mac.c  | 17 ++++++++++++++++-
>  2 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
> index a65f7d00eea2..e6c4963e41ac 100644
> --- a/drivers/net/wireless/ath/ath11k/core.h
> +++ b/drivers/net/wireless/ath/ath11k/core.h
> @@ -972,4 +972,9 @@ static inline bool ath11k_support_cc_ext(struct ath11k_base *ab)
>  	       test_bit(WMI_TLV_SERVICE_REG_CC_EXT_EVENT_SUPPORT, ab->wmi_ab.svc_map);
>  }
>  
> +static inline bool ath11k_support_6G_cc_ext(struct ath11k *ar)
> +{
> +	return ath11k_support_cc_ext(ar->ab) && ar->supports_6ghz;
> +}

All lower case and please move also this to hw.h:

ath11k_hw_supports_6g_cc_ext()
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index a65f7d00eea2..e6c4963e41ac 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -972,4 +972,9 @@  static inline bool ath11k_support_cc_ext(struct ath11k_base *ab)
 	       test_bit(WMI_TLV_SERVICE_REG_CC_EXT_EVENT_SUPPORT, ab->wmi_ab.svc_map);
 }
 
+static inline bool ath11k_support_6G_cc_ext(struct ath11k *ar)
+{
+	return ath11k_support_cc_ext(ar->ab) && ar->supports_6ghz;
+}
+
 #endif /* _CORE_H_ */
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 61e70f3b4a7c..2d96eea9300d 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -6431,7 +6431,22 @@  static int ath11k_mac_setup_iface_combinations(struct ath11k *ar)
 
 	combinations[0].limits = limits;
 	combinations[0].n_limits = n_limits;
-	combinations[0].max_interfaces = 16;
+
+	/* When single pdev is set, there is only one ieee80211_hw/wiphy
+	 * of mac80211/cfg80211, and it has only one reg rules stored
+	 * The reg rules of 6 GHz is different for station and AP, please
+	 * refer WMI_REG_CHAN_LIST_CC_EXT_EVENTID handler.
+	 * When start station/AP simultaneously, there is not more
+	 * struct to store the second reg rules in cfg80211.
+	 * Also it does not have requirement for station/AP concurrency
+	 * for WCN6855, so disable it currently.
+	 */
+	if (ab->hw_params.single_pdev_only &&
+	    ath11k_support_6G_cc_ext(ar))
+		combinations[0].max_interfaces = 1;
+	else
+		combinations[0].max_interfaces = 16;
+
 	combinations[0].num_different_channels = 1;
 	combinations[0].beacon_int_infra_match = true;
 	combinations[0].beacon_int_min_gcd = 100;