From: "Yu Zhang (Yuriy)" <quic_yuzha@quicinc.com>
To: Baochen Qiang <quic_bqiang@quicinc.com>, <kvalo@kernel.org>
Cc: <quic_jjohnson@quicinc.com>, <ath11k@lists.infradead.org>,
<linux-wireless@vger.kernel.org>, Mihai Moldovan <ionic@ionic.de>
Subject: Re: [PATCH v3] wifi: ath11k: support DBS and DFS compatibility
Date: Mon, 12 May 2025 14:45:58 +0800 [thread overview]
Message-ID: <c071fcd1-4a33-49cf-a605-9e4591ee4378@quicinc.com> (raw)
In-Reply-To: <4c88816a-d3af-426a-8373-922a4a6c5825@quicinc.com>
On 5/12/2025 2:09 PM, Baochen Qiang wrote:
>
>
> On 5/12/2025 1:52 PM, Yu Zhang (Yuriy) wrote:
>>
>>
>> On 5/12/2025 10:56 AM, Baochen Qiang wrote:
>>>
>>>
>>> On 11/27/2024 10:27 AM, Yu Zhang(Yuriy) wrote:
>>>> 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.
>>>> Tested-by: Mihai Moldovan <ionic@ionic.de>
>>>> Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-05266-QCAHSTSWPLZ_V2_TO_X86-1
>>>>
>>>> Signed-off-by: Yu Zhang(Yuriy) <quic_yuzha@quicinc.com>
>>>> ---
>>>> v2:
>>>> - Add tested-on IPQ8074 and IPQ6018.
>>>> v3:
>>>> - Add tested-on QCA6390.
>>>> ---
>>>> 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;
>>>
>>> as this limits array is assigned to combinations[0], don't you need another array that
>>> would be assigned to combinations[1]?
>> This limits array just for AP and STA iftypes that can be shared.
>
> do you mean that combinations[0] and combinations[1] share the same limit configuration?
> which is
>
> limits[0].max = 2;
> limits[0].types |= BIT(NL80211_IFTYPE_STATION);
> limits[1].max = 16;
> limits[1].types |= BIT(NL80211_IFTYPE_AP);
yes, when support_dual_stations limits[0].max = 2, else limits[0].max = 1.
>
>
>>>
>>>> - limits[1].max = 1;
>>>
>>> why is this removed?
>> AP interface shouldn't be limited to only 1.
>> As Jose Ignacio Tornos Martinez <jtornosm@redhat.com> issues "[PATCH] wifi: ath11k: allow
>> APs combination when dual stations are supported" https://lore.kernel.org/
>> all/20241202091858.200773-1-jtornosm@redhat.com/
>>>
>>>> -
>>>> - 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;
>>>> }
>>>
>>
>
next prev parent reply other threads:[~2025-05-12 6:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-27 2:27 [PATCH v3] wifi: ath11k: support DBS and DFS compatibility Yu Zhang(Yuriy)
2025-05-09 15:34 ` Vasanthakumar Thiagarajan
2025-05-12 2:56 ` Baochen Qiang
2025-05-12 5:52 ` Yu Zhang (Yuriy)
2025-05-12 6:09 ` Baochen Qiang
2025-05-12 6:45 ` Yu Zhang (Yuriy) [this message]
2025-05-12 7:22 ` Baochen Qiang
2025-05-16 18:34 ` Jeff Johnson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c071fcd1-4a33-49cf-a605-9e4591ee4378@quicinc.com \
--to=quic_yuzha@quicinc.com \
--cc=ath11k@lists.infradead.org \
--cc=ionic@ionic.de \
--cc=kvalo@kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_bqiang@quicinc.com \
--cc=quic_jjohnson@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox