All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] wifi: ath11k: support DBS and DFS compatibility
@ 2024-11-25 10:05 Yu Zhang(Yuriy)
  2024-11-26  6:09 ` Mihai Moldovan
  0 siblings, 1 reply; 3+ messages in thread
From: Yu Zhang(Yuriy) @ 2024-11-25 10:05 UTC (permalink / raw)
  To: kvalo; +Cc: quic_jjohnson, ath11k, linux-wireless

Now some chips which support 'support_dual_stations' will enable DBS,
but will disable DFS. Restructure the ath11k_mac_setup_iface_combinations
function to support DBS and DFS compatibility.

About 'support_dual_station' feature can refer:
https://msgid.link/20230714023801.2621802-2-quic_cjhuang@quicinc.com

Add a ieee80211_iface_combination to support DBS and DFS compatibility,
one combination can support DFS(same with non dual sta), another
combination can support DBS. When running different scenarios that will
use different ieee80211_iface_combination due to mac80211 will go through
all of possible interface combinations.

In addition, maximum number of interfaces of these types should be total
allowed in this group.

The chips affected are:

 QCA6390 hw2.0
 WCN6855 hw2.0
 WCN6855 hw2.1

Other chips are not affected.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.1.0.1-00410-QCAHKSWPL_SILICONZ-2
Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.1.0.1-01161-QCAHKSWPL_SILICONZ-1
Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-04402-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1.

Signed-off-by: Yu Zhang(Yuriy) <quic_yuzha@quicinc.com>
---
v2:

  - Add tested-on IPQ8074 and IPQ6018.
---
---
 drivers/net/wireless/ath/ath11k/mac.c | 42 +++++++++++++++------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 31ae9b384a29..aa63f5e20f2b 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -9911,12 +9911,17 @@ static int ath11k_mac_setup_iface_combinations(struct ath11k *ar)
 	struct ath11k_base *ab = ar->ab;
 	struct ieee80211_iface_combination *combinations;
 	struct ieee80211_iface_limit *limits;
-	int n_limits;
+	int n_limits, n_combos;
 	bool p2p;
 
 	p2p = ab->hw_params.interface_modes & BIT(NL80211_IFTYPE_P2P_DEVICE);
 
-	combinations = kzalloc(sizeof(*combinations), GFP_KERNEL);
+	if (ab->hw_params.support_dual_stations)
+		n_combos = 2;
+	else
+		n_combos = 1;
+
+	combinations = kcalloc(n_combos, sizeof(*combinations), GFP_KERNEL);
 	if (!combinations)
 		return -ENOMEM;
 
@@ -9931,7 +9936,9 @@ static int ath11k_mac_setup_iface_combinations(struct ath11k *ar)
 		return -ENOMEM;
 	}
 
+	limits[0].max = 1;
 	limits[0].types |= BIT(NL80211_IFTYPE_STATION);
+	limits[1].max = 16;
 	limits[1].types |= BIT(NL80211_IFTYPE_AP);
 	if (IS_ENABLED(CONFIG_MAC80211_MESH) &&
 	    ab->hw_params.interface_modes & BIT(NL80211_IFTYPE_MESH_POINT))
@@ -9941,25 +9948,24 @@ static int ath11k_mac_setup_iface_combinations(struct ath11k *ar)
 	combinations[0].n_limits = n_limits;
 	combinations[0].beacon_int_infra_match = true;
 	combinations[0].beacon_int_min_gcd = 100;
+	combinations[0].max_interfaces = 16;
+	combinations[0].num_different_channels = 1;
+	combinations[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
+						BIT(NL80211_CHAN_WIDTH_20) |
+						BIT(NL80211_CHAN_WIDTH_40) |
+						BIT(NL80211_CHAN_WIDTH_80) |
+						BIT(NL80211_CHAN_WIDTH_80P80) |
+						BIT(NL80211_CHAN_WIDTH_160);
 
 	if (ab->hw_params.support_dual_stations) {
 		limits[0].max = 2;
-		limits[1].max = 1;
-
-		combinations[0].max_interfaces = ab->hw_params.num_vdevs;
-		combinations[0].num_different_channels = 2;
-	} else {
-		limits[0].max = 1;
-		limits[1].max = 16;
 
-		combinations[0].max_interfaces = 16;
-		combinations[0].num_different_channels = 1;
-		combinations[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
-							BIT(NL80211_CHAN_WIDTH_20) |
-							BIT(NL80211_CHAN_WIDTH_40) |
-							BIT(NL80211_CHAN_WIDTH_80) |
-							BIT(NL80211_CHAN_WIDTH_80P80) |
-							BIT(NL80211_CHAN_WIDTH_160);
+		combinations[1].limits = limits;
+		combinations[1].n_limits = n_limits;
+		combinations[1].beacon_int_infra_match = true;
+		combinations[1].beacon_int_min_gcd = 100;
+		combinations[1].max_interfaces = ab->hw_params.num_vdevs;
+		combinations[1].num_different_channels = 2;
 	}
 
 	if (p2p) {
@@ -9970,7 +9976,7 @@ static int ath11k_mac_setup_iface_combinations(struct ath11k *ar)
 	}
 
 	ar->hw->wiphy->iface_combinations = combinations;
-	ar->hw->wiphy->n_iface_combinations = 1;
+	ar->hw->wiphy->n_iface_combinations = n_combos;
 
 	return 0;
 }
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] wifi: ath11k: support DBS and DFS compatibility
  2024-11-25 10:05 [PATCH v2] wifi: ath11k: support DBS and DFS compatibility Yu Zhang(Yuriy)
@ 2024-11-26  6:09 ` Mihai Moldovan
  2024-11-26  8:14   ` Yu Zhang (Yuriy)
  0 siblings, 1 reply; 3+ messages in thread
From: Mihai Moldovan @ 2024-11-26  6:09 UTC (permalink / raw)
  To: ath11k


[-- Attachment #1.1: Type: text/plain, Size: 2541 bytes --]

* On 11/25/24 11:05, Yu Zhang(Yuriy) wrote:
> Add a ieee80211_iface_combination to support DBS and DFS compatibility,
> one combination can support DFS(same with non dual sta), another
> combination can support DBS. When running different scenarios that will
> use different ieee80211_iface_combination due to mac80211 will go through
> all of possible interface combinations.

Are DFS and DBS mutually exclusive features? I can imagine that ISM clashes with 
DBS, but wonder if this is a hardware limitation, a firmware limitation or 
merely an implementation limitation so far that might eventually be lifted.


> The chips affected are:
> 
>   QCA6390 hw2.0

Tested-by: Mihai Moldovan <ionic@ionic.de>
Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-05266-QCAHSTSWPLZ_V2_TO_X86-1


These were the tested configurations:

   - 5 GHz on DFS channel:

         Interface wifiax
                 ifindex 6
                 wdev 0x1
                 addr 20:57:9e:2d:04:1e
                 ssid WRTKA05
                 type AP
                 channel 100 (5500 MHz), width: 80 MHz, center1: 5530 MHz
                 txpower 20.00 dBm
                 multicast TXQ:
                         qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol 
tx-bytes        tx-packets
                         0       0       454     0       0       0       0 
61456           454

   - 5 GHz on non-DFS channel + 2.4 GHz (DBS):

         Interface wifiax24
                 ifindex 7
                 wdev 0x2
                 addr 22:57:9e:2d:04:1e
                 ssid WRTKA06-Tasmota
                 type AP
                 channel 7 (2442 MHz), width: 40 MHz, center1: 2452 MHz
                 txpower 20.00 dBm
                 multicast TXQ:
                         qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol 
tx-bytes        tx-packets
                         0       0       61      0       0       0       0 
8562            61
         Interface wifiax
                 ifindex 6
                 wdev 0x1
                 addr 20:57:9e:2d:04:1e
                 ssid WRTKA05
                 type AP
                 channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz
                 txpower 20.00 dBm
                 multicast TXQ:
                         qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol 
tx-bytes        tx-packets
                         0       0       69      0       0       0       0 
10032           69



Mihai

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] wifi: ath11k: support DBS and DFS compatibility
  2024-11-26  6:09 ` Mihai Moldovan
@ 2024-11-26  8:14   ` Yu Zhang (Yuriy)
  0 siblings, 0 replies; 3+ messages in thread
From: Yu Zhang (Yuriy) @ 2024-11-26  8:14 UTC (permalink / raw)
  To: Mihai Moldovan, ath11k



On 11/26/2024 2:09 PM, Mihai Moldovan wrote:
> * On 11/25/24 11:05, Yu Zhang(Yuriy) wrote:
>> Add a ieee80211_iface_combination to support DBS and DFS compatibility,
>> one combination can support DFS(same with non dual sta), another
>> combination can support DBS. When running different scenarios that will
>> use different ieee80211_iface_combination due to mac80211 will go through
>> all of possible interface combinations.
> 
> Are DFS and DBS mutually exclusive features? I can imagine that ISM 
> clashes with DBS, but wonder if this is a hardware limitation, a 
> firmware limitation or merely an implementation limitation so far that 
> might eventually be lifted.
> 
You mean when run dfs channel why only support one interface, right? 
Your can refer to wiphy_verify_combinations().
> 
>> The chips affected are:
>>
>>   QCA6390 hw2.0
> 
> Tested-by: Mihai Moldovan <ionic@ionic.de>
> Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-05266-QCAHSTSWPLZ_V2_TO_X86-1
> 
Thanks your tested-on QCA6390. I will update with adding this.
> 
> These were the tested configurations:
> 
>    - 5 GHz on DFS channel:
> 
>          Interface wifiax
>                  ifindex 6
>                  wdev 0x1
>                  addr 20:57:9e:2d:04:1e
>                  ssid WRTKA05
>                  type AP
>                  channel 100 (5500 MHz), width: 80 MHz, center1: 5530 MHz
>                  txpower 20.00 dBm
>                  multicast TXQ:
>                          qsz-byt qsz-pkt flows   drops   marks   overlmt 
> hashcol tx-bytes        tx-packets
>                          0       0       454     0       0       0       
> 0 61456           454
> 
>    - 5 GHz on non-DFS channel + 2.4 GHz (DBS):
> 
>          Interface wifiax24
>                  ifindex 7
>                  wdev 0x2
>                  addr 22:57:9e:2d:04:1e
>                  ssid WRTKA06-Tasmota
>                  type AP
>                  channel 7 (2442 MHz), width: 40 MHz, center1: 2452 MHz
>                  txpower 20.00 dBm
>                  multicast TXQ:
>                          qsz-byt qsz-pkt flows   drops   marks   overlmt 
> hashcol tx-bytes        tx-packets
>                          0       0       61      0       0       0       
> 0 8562            61
>          Interface wifiax
>                  ifindex 6
>                  wdev 0x1
>                  addr 20:57:9e:2d:04:1e
>                  ssid WRTKA05
>                  type AP
>                  channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz
>                  txpower 20.00 dBm
>                  multicast TXQ:
>                          qsz-byt qsz-pkt flows   drops   marks   overlmt 
> hashcol tx-bytes        tx-packets
>                          0       0       69      0       0       0       
> 0 10032           69
> 
> 
> 
> Mihai



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-26  8:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-25 10:05 [PATCH v2] wifi: ath11k: support DBS and DFS compatibility Yu Zhang(Yuriy)
2024-11-26  6:09 ` Mihai Moldovan
2024-11-26  8:14   ` Yu Zhang (Yuriy)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.