Message ID | 20240829064420.3074140-1-quic_yuzha@quicinc.com |
---|---|
State | New |
Headers | show |
Series | wifi: ath11k: support DBS and DFS compatibility | expand |
On 8/28/2024 11:44 PM, 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: WCN6855 WLAN.HSP.1.1-04402-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1. nit: should include the hw type tested on, see: <https://wireless.wiki.kernel.org/en/users/drivers/ath11k/submittingpatches#tested-on_tag> if you can reply with that, Kalle can update the patch in the pending branch > > Signed-off-by: Yu Zhang(Yuriy) <quic_yuzha@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
On 9/6/2024 2:59 AM, Jeff Johnson wrote: > On 8/28/2024 11:44 PM, 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: WCN6855 WLAN.HSP.1.1-04402-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1. > > nit: should include the hw type tested on, see: > <https://wireless.wiki.kernel.org/en/users/drivers/ath11k/submittingpatches#tested-on_tag> > > if you can reply with that, Kalle can update the patch in the pending branch > 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 WLAN.HSP.1.1-04402-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index f8068d2e848c..a37c4c420ab0 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -9912,12 +9912,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; @@ -9932,7 +9937,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)) @@ -9942,25 +9949,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) { @@ -9971,7 +9977,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; }
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: WCN6855 WLAN.HSP.1.1-04402-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1. Signed-off-by: Yu Zhang(Yuriy) <quic_yuzha@quicinc.com> --- drivers/net/wireless/ath/ath11k/mac.c | 42 +++++++++++++++------------ 1 file changed, 24 insertions(+), 18 deletions(-)